@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/index.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
|
|
|
@@ -142,7 +143,7 @@ var maxWidthStyles = {
|
|
|
142
143
|
"4xl": "max-w-[1536px]",
|
|
143
144
|
full: "max-w-full"
|
|
144
145
|
};
|
|
145
|
-
var Container =
|
|
146
|
+
var Container = React5__namespace.default.forwardRef(
|
|
146
147
|
({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
|
|
147
148
|
const Component = as;
|
|
148
149
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -448,7 +449,7 @@ var spacingStyles = {
|
|
|
448
449
|
};
|
|
449
450
|
var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
|
|
450
451
|
var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
|
|
451
|
-
var Section =
|
|
452
|
+
var Section = React5__namespace.default.forwardRef(
|
|
452
453
|
({
|
|
453
454
|
id,
|
|
454
455
|
title,
|
|
@@ -509,129 +510,1120 @@ var Section = React4__namespace.default.forwardRef(
|
|
|
509
510
|
}
|
|
510
511
|
);
|
|
511
512
|
Section.displayName = "Section";
|
|
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
|
-
const
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
513
|
+
function normalizePhoneNumber(input) {
|
|
514
|
+
const trimmed = input.trim();
|
|
515
|
+
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
516
|
+
return trimmed;
|
|
517
|
+
}
|
|
518
|
+
const match = trimmed.match(/^[\s\+\-\(\)]*(\d[\d\s\-\(\)\.]*\d)[\s\-]*(x|ext\.?|extension)?[\s\-]*(\d+)?$/i);
|
|
519
|
+
if (match) {
|
|
520
|
+
const mainNumber = match[1].replace(/[\s\-\(\)\.]/g, "");
|
|
521
|
+
const extension = match[3];
|
|
522
|
+
const normalized = mainNumber.length >= 10 && !trimmed.startsWith("+") ? `+${mainNumber}` : mainNumber;
|
|
523
|
+
const withExtension = extension ? `${normalized};ext=${extension}` : normalized;
|
|
524
|
+
return `tel:${withExtension}`;
|
|
525
|
+
}
|
|
526
|
+
const cleaned = trimmed.replace(/[\s\-\(\)\.]/g, "");
|
|
527
|
+
return `tel:${cleaned}`;
|
|
528
|
+
}
|
|
529
|
+
function normalizeEmail(input) {
|
|
530
|
+
const trimmed = input.trim();
|
|
531
|
+
if (trimmed.toLowerCase().startsWith("mailto:")) {
|
|
532
|
+
return trimmed;
|
|
533
|
+
}
|
|
534
|
+
return `mailto:${trimmed}`;
|
|
535
|
+
}
|
|
536
|
+
function isEmail(input) {
|
|
537
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
538
|
+
return emailRegex.test(input.trim());
|
|
539
|
+
}
|
|
540
|
+
function isPhoneNumber(input) {
|
|
541
|
+
const trimmed = input.trim();
|
|
542
|
+
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
543
|
+
return true;
|
|
544
|
+
}
|
|
545
|
+
const phoneRegex = /^[\s\+\-\(\)]*\d[\d\s\-\(\)\.]*\d[\s\-]*(x|ext\.?|extension)?[\s\-]*\d*$/i;
|
|
546
|
+
return phoneRegex.test(trimmed);
|
|
547
|
+
}
|
|
548
|
+
function isInternalUrl(href) {
|
|
549
|
+
if (typeof window === "undefined") {
|
|
550
|
+
return href.startsWith("/") && !href.startsWith("//");
|
|
551
|
+
}
|
|
552
|
+
const trimmed = href.trim();
|
|
553
|
+
if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
|
|
554
|
+
return true;
|
|
555
|
+
}
|
|
556
|
+
try {
|
|
557
|
+
const url = new URL(trimmed, window.location.href);
|
|
558
|
+
const currentOrigin = window.location.origin;
|
|
559
|
+
const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
|
|
560
|
+
return normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin);
|
|
561
|
+
} catch {
|
|
562
|
+
return false;
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
function toRelativePath(href) {
|
|
566
|
+
if (typeof window === "undefined") {
|
|
567
|
+
return href;
|
|
568
|
+
}
|
|
569
|
+
const trimmed = href.trim();
|
|
570
|
+
if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
|
|
571
|
+
return trimmed;
|
|
572
|
+
}
|
|
573
|
+
try {
|
|
574
|
+
const url = new URL(trimmed, window.location.href);
|
|
575
|
+
const currentOrigin = window.location.origin;
|
|
576
|
+
const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
|
|
577
|
+
if (normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin)) {
|
|
578
|
+
return url.pathname + url.search + url.hash;
|
|
544
579
|
}
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
580
|
+
} catch {
|
|
581
|
+
}
|
|
582
|
+
return trimmed;
|
|
583
|
+
}
|
|
584
|
+
function useNavigation({
|
|
585
|
+
href,
|
|
586
|
+
onClick
|
|
587
|
+
} = {}) {
|
|
588
|
+
const linkType = React5__namespace.useMemo(() => {
|
|
589
|
+
if (!href || href.trim() === "") {
|
|
590
|
+
return onClick ? "none" : "none";
|
|
549
591
|
}
|
|
550
|
-
const
|
|
551
|
-
|
|
552
|
-
|
|
592
|
+
const trimmed = href.trim();
|
|
593
|
+
if (trimmed.toLowerCase().startsWith("mailto:") || isEmail(trimmed)) {
|
|
594
|
+
return "mailto";
|
|
595
|
+
}
|
|
596
|
+
if (trimmed.toLowerCase().startsWith("tel:") || isPhoneNumber(trimmed)) {
|
|
597
|
+
return "tel";
|
|
598
|
+
}
|
|
599
|
+
if (isInternalUrl(trimmed)) {
|
|
600
|
+
return "internal";
|
|
601
|
+
}
|
|
602
|
+
try {
|
|
603
|
+
new URL(trimmed, typeof window !== "undefined" ? window.location.href : "http://localhost");
|
|
604
|
+
return "external";
|
|
605
|
+
} catch {
|
|
606
|
+
return "internal";
|
|
607
|
+
}
|
|
608
|
+
}, [href, onClick]);
|
|
609
|
+
const normalizedHref = React5__namespace.useMemo(() => {
|
|
610
|
+
if (!href || href.trim() === "") {
|
|
611
|
+
return void 0;
|
|
612
|
+
}
|
|
613
|
+
const trimmed = href.trim();
|
|
614
|
+
switch (linkType) {
|
|
615
|
+
case "tel":
|
|
616
|
+
return normalizePhoneNumber(trimmed);
|
|
617
|
+
case "mailto":
|
|
618
|
+
return normalizeEmail(trimmed);
|
|
619
|
+
case "internal":
|
|
620
|
+
return toRelativePath(trimmed);
|
|
621
|
+
case "external":
|
|
622
|
+
return trimmed;
|
|
623
|
+
default:
|
|
624
|
+
return trimmed;
|
|
625
|
+
}
|
|
626
|
+
}, [href, linkType]);
|
|
627
|
+
const target = React5__namespace.useMemo(() => {
|
|
628
|
+
switch (linkType) {
|
|
629
|
+
case "external":
|
|
630
|
+
return "_blank";
|
|
631
|
+
case "internal":
|
|
632
|
+
return "_self";
|
|
633
|
+
case "mailto":
|
|
634
|
+
case "tel":
|
|
635
|
+
return void 0;
|
|
636
|
+
default:
|
|
637
|
+
return void 0;
|
|
638
|
+
}
|
|
639
|
+
}, [linkType]);
|
|
640
|
+
const rel = React5__namespace.useMemo(() => {
|
|
641
|
+
if (linkType === "external") {
|
|
642
|
+
return "noopener noreferrer";
|
|
643
|
+
}
|
|
644
|
+
return void 0;
|
|
645
|
+
}, [linkType]);
|
|
646
|
+
const isExternal = linkType === "external";
|
|
647
|
+
const isInternal = linkType === "internal";
|
|
648
|
+
const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
|
|
649
|
+
const handleClick = React5__namespace.useCallback(
|
|
650
|
+
(event) => {
|
|
651
|
+
if (onClick) {
|
|
652
|
+
try {
|
|
653
|
+
onClick(event);
|
|
654
|
+
} catch (error) {
|
|
655
|
+
console.error("Error in user onClick handler:", error);
|
|
656
|
+
}
|
|
553
657
|
}
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
document.body.style.overflow = "hidden";
|
|
557
|
-
window.addEventListener("keydown", onKeyDown);
|
|
558
|
-
return () => {
|
|
559
|
-
document.body.style.overflow = previousOverflow;
|
|
560
|
-
window.removeEventListener("keydown", onKeyDown);
|
|
561
|
-
};
|
|
562
|
-
}, [open, onOpenChange]);
|
|
563
|
-
return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: open ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fixed inset-0 z-50 h-screen overflow-y-auto", children: [
|
|
564
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
565
|
-
framerMotion.motion.div,
|
|
566
|
-
{
|
|
567
|
-
initial: { opacity: 0 },
|
|
568
|
-
animate: { opacity: 1, transition: dialogTransition },
|
|
569
|
-
exit: { opacity: 0, transition: dialogTransition },
|
|
570
|
-
className: "fixed inset-0 h-full w-full bg-foreground/80 backdrop-blur-lg"
|
|
658
|
+
if (event.defaultPrevented) {
|
|
659
|
+
return;
|
|
571
660
|
}
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
661
|
+
if (shouldUseRouter && normalizedHref && event.button === 0 && // left-click only
|
|
662
|
+
!event.metaKey && !event.altKey && !event.ctrlKey && !event.shiftKey) {
|
|
663
|
+
if (typeof window !== "undefined") {
|
|
664
|
+
const handler = window.__opensiteNavigationHandler;
|
|
665
|
+
if (typeof handler === "function") {
|
|
666
|
+
try {
|
|
667
|
+
const handled = handler(normalizedHref, event.nativeEvent || event);
|
|
668
|
+
if (handled !== false) {
|
|
669
|
+
event.preventDefault();
|
|
670
|
+
}
|
|
671
|
+
} catch (error) {
|
|
672
|
+
console.error("Error in navigation handler:", error);
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
},
|
|
678
|
+
[onClick, shouldUseRouter, normalizedHref]
|
|
679
|
+
);
|
|
680
|
+
return {
|
|
681
|
+
linkType,
|
|
682
|
+
normalizedHref,
|
|
683
|
+
target,
|
|
684
|
+
rel,
|
|
685
|
+
isExternal,
|
|
686
|
+
isInternal,
|
|
687
|
+
shouldUseRouter,
|
|
688
|
+
handleClick
|
|
689
|
+
};
|
|
690
|
+
}
|
|
691
|
+
var baseStyles = [
|
|
692
|
+
// Layout
|
|
693
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
|
|
694
|
+
// Typography - using CSS variables with sensible defaults
|
|
695
|
+
"font-[var(--button-font-family,inherit)]",
|
|
696
|
+
"font-[var(--button-font-weight,500)]",
|
|
697
|
+
"tracking-[var(--button-letter-spacing,0)]",
|
|
698
|
+
"leading-[var(--button-line-height,1.25)]",
|
|
699
|
+
"[text-transform:var(--button-text-transform,none)]",
|
|
700
|
+
"text-sm",
|
|
701
|
+
// Border radius
|
|
702
|
+
"rounded-[var(--button-radius,var(--radius,0.375rem))]",
|
|
703
|
+
// Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
|
|
704
|
+
"[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
|
|
705
|
+
// Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
|
|
706
|
+
"[box-shadow:var(--button-shadow,none)]",
|
|
707
|
+
"hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
|
|
708
|
+
// Disabled state
|
|
709
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
710
|
+
// SVG handling
|
|
711
|
+
"[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
|
|
712
|
+
// Focus styles
|
|
713
|
+
"outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
714
|
+
// Invalid state
|
|
715
|
+
"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
|
|
716
|
+
].join(" ");
|
|
717
|
+
var buttonVariants = classVarianceAuthority.cva(baseStyles, {
|
|
718
|
+
variants: {
|
|
719
|
+
variant: {
|
|
720
|
+
// Default (Primary) variant - full customization
|
|
721
|
+
default: [
|
|
722
|
+
"bg-[var(--button-default-bg,hsl(var(--primary)))]",
|
|
723
|
+
"text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
|
|
724
|
+
"border-[length:var(--button-default-border-width,0px)]",
|
|
725
|
+
"border-[color:var(--button-default-border,transparent)]",
|
|
726
|
+
"[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
|
|
727
|
+
"hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
|
|
728
|
+
"hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
|
|
729
|
+
"hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
|
|
730
|
+
"hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
|
|
731
|
+
].join(" "),
|
|
732
|
+
// Destructive variant - full customization
|
|
733
|
+
destructive: [
|
|
734
|
+
"bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
|
|
735
|
+
"text-[var(--button-destructive-fg,white)]",
|
|
736
|
+
"border-[length:var(--button-destructive-border-width,0px)]",
|
|
737
|
+
"border-[color:var(--button-destructive-border,transparent)]",
|
|
738
|
+
"[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
|
|
739
|
+
"hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
|
|
740
|
+
"hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
|
|
741
|
+
"hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
|
|
742
|
+
"hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
|
|
743
|
+
"focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
|
|
744
|
+
"dark:bg-destructive/60"
|
|
745
|
+
].join(" "),
|
|
746
|
+
// Outline variant - full customization with proper border handling
|
|
747
|
+
outline: [
|
|
748
|
+
"bg-[var(--button-outline-bg,hsl(var(--background)))]",
|
|
749
|
+
"text-[var(--button-outline-fg,inherit)]",
|
|
750
|
+
"border-[length:var(--button-outline-border-width,1px)]",
|
|
751
|
+
"border-[color:var(--button-outline-border,hsl(var(--border)))]",
|
|
752
|
+
"[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
|
|
753
|
+
"hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
|
|
754
|
+
"hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
|
|
755
|
+
"hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
|
|
756
|
+
"hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
|
|
757
|
+
"dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
|
|
758
|
+
].join(" "),
|
|
759
|
+
// Secondary variant - full customization
|
|
760
|
+
secondary: [
|
|
761
|
+
"bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
|
|
762
|
+
"text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
|
|
763
|
+
"border-[length:var(--button-secondary-border-width,0px)]",
|
|
764
|
+
"border-[color:var(--button-secondary-border,transparent)]",
|
|
765
|
+
"[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
|
|
766
|
+
"hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
|
|
767
|
+
"hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
|
|
768
|
+
"hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
|
|
769
|
+
"hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
|
|
770
|
+
].join(" "),
|
|
771
|
+
// Ghost variant - full customization
|
|
772
|
+
ghost: [
|
|
773
|
+
"bg-[var(--button-ghost-bg,transparent)]",
|
|
774
|
+
"text-[var(--button-ghost-fg,inherit)]",
|
|
775
|
+
"border-[length:var(--button-ghost-border-width,0px)]",
|
|
776
|
+
"border-[color:var(--button-ghost-border,transparent)]",
|
|
777
|
+
"[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
|
|
778
|
+
"hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
|
|
779
|
+
"hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
|
|
780
|
+
"hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
|
|
781
|
+
"hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
|
|
782
|
+
"dark:hover:bg-accent/50"
|
|
783
|
+
].join(" "),
|
|
784
|
+
// Link variant - full customization
|
|
785
|
+
link: [
|
|
786
|
+
"bg-[var(--button-link-bg,transparent)]",
|
|
787
|
+
"text-[var(--button-link-fg,hsl(var(--primary)))]",
|
|
788
|
+
"border-[length:var(--button-link-border-width,0px)]",
|
|
789
|
+
"border-[color:var(--button-link-border,transparent)]",
|
|
790
|
+
"[box-shadow:var(--button-link-shadow,none)]",
|
|
791
|
+
"hover:bg-[var(--button-link-hover-bg,transparent)]",
|
|
792
|
+
"hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
|
|
793
|
+
"hover:[box-shadow:var(--button-link-shadow-hover,none)]",
|
|
794
|
+
"underline-offset-4 hover:underline"
|
|
795
|
+
].join(" ")
|
|
796
|
+
},
|
|
797
|
+
size: {
|
|
798
|
+
default: [
|
|
799
|
+
"h-[var(--button-height-md,2.25rem)]",
|
|
800
|
+
"px-[var(--button-padding-x-md,1rem)]",
|
|
801
|
+
"py-[var(--button-padding-y-md,0.5rem)]",
|
|
802
|
+
"has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
|
|
803
|
+
].join(" "),
|
|
804
|
+
sm: [
|
|
805
|
+
"h-[var(--button-height-sm,2rem)]",
|
|
806
|
+
"px-[var(--button-padding-x-sm,0.75rem)]",
|
|
807
|
+
"py-[var(--button-padding-y-sm,0.25rem)]",
|
|
808
|
+
"gap-1.5",
|
|
809
|
+
"has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
|
|
810
|
+
].join(" "),
|
|
811
|
+
md: [
|
|
812
|
+
"h-[var(--button-height-md,2.25rem)]",
|
|
813
|
+
"px-[var(--button-padding-x-md,1rem)]",
|
|
814
|
+
"py-[var(--button-padding-y-md,0.5rem)]",
|
|
815
|
+
"has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
|
|
816
|
+
].join(" "),
|
|
817
|
+
lg: [
|
|
818
|
+
"h-[var(--button-height-lg,2.5rem)]",
|
|
819
|
+
"px-[var(--button-padding-x-lg,1.5rem)]",
|
|
820
|
+
"py-[var(--button-padding-y-lg,0.5rem)]",
|
|
821
|
+
"has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
|
|
822
|
+
].join(" "),
|
|
823
|
+
icon: "size-[var(--button-height-md,2.25rem)]",
|
|
824
|
+
"icon-sm": "size-[var(--button-height-sm,2rem)]",
|
|
825
|
+
"icon-lg": "size-[var(--button-height-lg,2.5rem)]"
|
|
826
|
+
}
|
|
827
|
+
},
|
|
828
|
+
defaultVariants: {
|
|
829
|
+
variant: "default",
|
|
830
|
+
size: "default"
|
|
831
|
+
}
|
|
832
|
+
});
|
|
833
|
+
var Pressable = React5__namespace.forwardRef(
|
|
834
|
+
({
|
|
835
|
+
children,
|
|
836
|
+
className,
|
|
837
|
+
href,
|
|
838
|
+
onClick,
|
|
839
|
+
variant,
|
|
840
|
+
size,
|
|
841
|
+
asButton = false,
|
|
842
|
+
fallbackComponentType = "span",
|
|
843
|
+
componentType,
|
|
844
|
+
"aria-label": ariaLabel,
|
|
845
|
+
"aria-describedby": ariaDescribedby,
|
|
846
|
+
id,
|
|
847
|
+
...props
|
|
848
|
+
}, ref) => {
|
|
849
|
+
const navigation = useNavigation({ href, onClick });
|
|
850
|
+
const {
|
|
851
|
+
normalizedHref,
|
|
852
|
+
target,
|
|
853
|
+
rel,
|
|
854
|
+
linkType,
|
|
855
|
+
isInternal,
|
|
856
|
+
isExternal,
|
|
857
|
+
handleClick
|
|
858
|
+
} = navigation;
|
|
859
|
+
const shouldRenderLink = normalizedHref && linkType !== "none";
|
|
860
|
+
const shouldRenderButton = !shouldRenderLink && onClick;
|
|
861
|
+
const effectiveComponentType = componentType || (shouldRenderLink ? "a" : shouldRenderButton ? "button" : fallbackComponentType);
|
|
862
|
+
const finalComponentType = isInternal && shouldRenderLink ? "a" : effectiveComponentType;
|
|
863
|
+
const shouldApplyButtonStyles = asButton || variant || size;
|
|
864
|
+
const combinedClassName = cn(
|
|
865
|
+
shouldApplyButtonStyles && buttonVariants({ variant, size }),
|
|
866
|
+
className
|
|
867
|
+
);
|
|
868
|
+
const dataProps = Object.fromEntries(
|
|
869
|
+
Object.entries(props).filter(([key]) => key.startsWith("data-"))
|
|
870
|
+
);
|
|
871
|
+
const buttonDataAttributes = shouldApplyButtonStyles ? {
|
|
872
|
+
"data-slot": "button",
|
|
873
|
+
"data-variant": variant ?? "default",
|
|
874
|
+
"data-size": size ?? "default"
|
|
875
|
+
} : {};
|
|
876
|
+
const commonProps = {
|
|
877
|
+
className: combinedClassName,
|
|
878
|
+
onClick: handleClick,
|
|
879
|
+
"aria-label": ariaLabel,
|
|
880
|
+
"aria-describedby": ariaDescribedby,
|
|
881
|
+
id,
|
|
882
|
+
...dataProps,
|
|
883
|
+
...buttonDataAttributes
|
|
884
|
+
};
|
|
885
|
+
if (finalComponentType === "a" && shouldRenderLink) {
|
|
886
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
887
|
+
"a",
|
|
888
|
+
{
|
|
889
|
+
ref,
|
|
890
|
+
href: normalizedHref,
|
|
891
|
+
target,
|
|
892
|
+
rel,
|
|
893
|
+
...commonProps,
|
|
894
|
+
...props,
|
|
895
|
+
children
|
|
896
|
+
}
|
|
897
|
+
);
|
|
898
|
+
}
|
|
899
|
+
if (finalComponentType === "button") {
|
|
900
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
901
|
+
"button",
|
|
902
|
+
{
|
|
903
|
+
ref,
|
|
904
|
+
type: props.type || "button",
|
|
905
|
+
...commonProps,
|
|
906
|
+
...props,
|
|
907
|
+
children
|
|
908
|
+
}
|
|
909
|
+
);
|
|
910
|
+
}
|
|
911
|
+
if (finalComponentType === "div") {
|
|
912
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
913
|
+
"div",
|
|
914
|
+
{
|
|
915
|
+
ref,
|
|
916
|
+
...commonProps,
|
|
917
|
+
children
|
|
918
|
+
}
|
|
919
|
+
);
|
|
920
|
+
}
|
|
921
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
922
|
+
"span",
|
|
923
|
+
{
|
|
924
|
+
ref,
|
|
925
|
+
...commonProps,
|
|
926
|
+
children
|
|
927
|
+
}
|
|
928
|
+
);
|
|
929
|
+
}
|
|
930
|
+
);
|
|
931
|
+
Pressable.displayName = "Pressable";
|
|
932
|
+
var PANEL_POSITION_CLASS = {
|
|
933
|
+
"top-left": "left-4 top-4",
|
|
934
|
+
"top-right": "right-4 top-4",
|
|
935
|
+
"bottom-left": "bottom-4 left-4",
|
|
936
|
+
"bottom-right": "bottom-4 right-4"
|
|
937
|
+
};
|
|
938
|
+
var DEFAULT_VIEW_STATE = {
|
|
939
|
+
latitude: 39.5,
|
|
940
|
+
longitude: -98.35,
|
|
941
|
+
zoom: 3
|
|
942
|
+
};
|
|
943
|
+
var VIDEO_FILE_EXTENSION_REGEX = /\.(mp4|webm|ogg|mov|m4v|m3u8)(\?.*)?$/i;
|
|
944
|
+
function resolveMediaType(item) {
|
|
945
|
+
if (item.type) {
|
|
946
|
+
return item.type;
|
|
947
|
+
}
|
|
948
|
+
return VIDEO_FILE_EXTENSION_REGEX.test(item.src) ? "video" : "image";
|
|
949
|
+
}
|
|
950
|
+
function normalizeId(value, fallback) {
|
|
951
|
+
if (value === null || value === void 0 || value === "") {
|
|
952
|
+
return fallback;
|
|
953
|
+
}
|
|
954
|
+
return String(value);
|
|
955
|
+
}
|
|
956
|
+
function buildClusterCenter(markers) {
|
|
957
|
+
if (!markers.length) {
|
|
958
|
+
return null;
|
|
959
|
+
}
|
|
960
|
+
const total = markers.reduce(
|
|
961
|
+
(accumulator, marker) => ({
|
|
962
|
+
latitude: accumulator.latitude + marker.latitude,
|
|
963
|
+
longitude: accumulator.longitude + marker.longitude
|
|
964
|
+
}),
|
|
965
|
+
{ latitude: 0, longitude: 0 }
|
|
966
|
+
);
|
|
967
|
+
return {
|
|
968
|
+
latitude: total.latitude / markers.length,
|
|
969
|
+
longitude: total.longitude / markers.length
|
|
970
|
+
};
|
|
971
|
+
}
|
|
972
|
+
function resolveActionKey(action, index) {
|
|
973
|
+
if (typeof action.label === "string" && action.label.trim().length > 0) {
|
|
974
|
+
return `label:${action.label}:${index}`;
|
|
975
|
+
}
|
|
976
|
+
if (action.href) {
|
|
977
|
+
return `href:${action.href}:${index}`;
|
|
978
|
+
}
|
|
979
|
+
return `action:${index}`;
|
|
980
|
+
}
|
|
981
|
+
function MarkerActions({ actions }) {
|
|
982
|
+
if (!actions || actions.length === 0) {
|
|
983
|
+
return null;
|
|
984
|
+
}
|
|
985
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 flex flex-wrap gap-2", children: actions.map((action, index) => {
|
|
986
|
+
const {
|
|
987
|
+
label,
|
|
988
|
+
icon,
|
|
989
|
+
iconAfter,
|
|
990
|
+
children,
|
|
991
|
+
href,
|
|
992
|
+
onClick,
|
|
993
|
+
className: actionClassName,
|
|
994
|
+
variant,
|
|
995
|
+
size,
|
|
996
|
+
asButton,
|
|
997
|
+
...rest
|
|
998
|
+
} = action;
|
|
999
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1000
|
+
Pressable,
|
|
1001
|
+
{
|
|
1002
|
+
href,
|
|
1003
|
+
onClick,
|
|
1004
|
+
variant: variant ?? (index === 0 ? "default" : "outline"),
|
|
1005
|
+
size: size ?? "sm",
|
|
1006
|
+
asButton: asButton ?? true,
|
|
1007
|
+
className: cn("inline-flex items-center gap-2", actionClassName),
|
|
1008
|
+
...rest,
|
|
1009
|
+
children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1010
|
+
icon,
|
|
1011
|
+
label,
|
|
1012
|
+
iconAfter
|
|
1013
|
+
] })
|
|
1014
|
+
},
|
|
1015
|
+
resolveActionKey(action, index)
|
|
1016
|
+
);
|
|
1017
|
+
}) });
|
|
1018
|
+
}
|
|
1019
|
+
function MarkerMediaCarousel({ mediaItems }) {
|
|
1020
|
+
const [activeIndex, setActiveIndex] = React5__namespace.useState(0);
|
|
1021
|
+
const totalItems = mediaItems.length;
|
|
1022
|
+
React5__namespace.useEffect(() => {
|
|
1023
|
+
setActiveIndex(0);
|
|
1024
|
+
}, [mediaItems]);
|
|
1025
|
+
const activeMediaItem = mediaItems[activeIndex];
|
|
1026
|
+
const mediaType = resolveMediaType(activeMediaItem);
|
|
1027
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative border-b border-border/60 bg-muted/40", children: [
|
|
1028
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-44 w-full overflow-hidden", children: mediaType === "video" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1029
|
+
"video",
|
|
1030
|
+
{
|
|
1031
|
+
className: "h-full w-full object-cover",
|
|
1032
|
+
controls: true,
|
|
1033
|
+
preload: "metadata",
|
|
1034
|
+
poster: activeMediaItem.poster,
|
|
1035
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("source", { src: activeMediaItem.src })
|
|
1036
|
+
}
|
|
1037
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1038
|
+
"img",
|
|
1039
|
+
{
|
|
1040
|
+
src: activeMediaItem.src,
|
|
1041
|
+
alt: activeMediaItem.alt ?? "Map marker media",
|
|
1042
|
+
className: "h-full w-full object-cover",
|
|
1043
|
+
loading: "lazy"
|
|
1044
|
+
}
|
|
1045
|
+
) }),
|
|
1046
|
+
totalItems > 1 ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1047
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1048
|
+
"button",
|
|
1049
|
+
{
|
|
1050
|
+
type: "button",
|
|
1051
|
+
"aria-label": "Show previous media",
|
|
1052
|
+
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",
|
|
1053
|
+
onClick: () => {
|
|
1054
|
+
setActiveIndex((current) => (current - 1 + totalItems) % totalItems);
|
|
1055
|
+
},
|
|
1056
|
+
children: "<"
|
|
1057
|
+
}
|
|
1058
|
+
),
|
|
1059
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1060
|
+
"button",
|
|
1061
|
+
{
|
|
1062
|
+
type: "button",
|
|
1063
|
+
"aria-label": "Show next media",
|
|
1064
|
+
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",
|
|
1065
|
+
onClick: () => {
|
|
1066
|
+
setActiveIndex((current) => (current + 1) % totalItems);
|
|
1067
|
+
},
|
|
1068
|
+
children: ">"
|
|
1069
|
+
}
|
|
1070
|
+
),
|
|
1071
|
+
/* @__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(
|
|
1072
|
+
"button",
|
|
1073
|
+
{
|
|
1074
|
+
type: "button",
|
|
1075
|
+
"aria-label": `Show media item ${index + 1}`,
|
|
1076
|
+
className: cn(
|
|
1077
|
+
"h-2 rounded-full transition-all",
|
|
1078
|
+
index === activeIndex ? "w-6 bg-white" : "w-2 bg-white/70 hover:bg-white/90"
|
|
1079
|
+
),
|
|
1080
|
+
onClick: () => setActiveIndex(index)
|
|
1081
|
+
},
|
|
1082
|
+
normalizeId(item.id, `media-dot-${index}`)
|
|
1083
|
+
)) })
|
|
1084
|
+
] }) : null
|
|
1085
|
+
] });
|
|
1086
|
+
}
|
|
1087
|
+
function getMarkerTitle(marker, markerIndex) {
|
|
1088
|
+
if (marker.title !== void 0 && marker.title !== null) {
|
|
1089
|
+
return marker.title;
|
|
1090
|
+
}
|
|
1091
|
+
if (marker.label !== void 0 && marker.label !== null) {
|
|
1092
|
+
return marker.label;
|
|
1093
|
+
}
|
|
1094
|
+
return `Location ${markerIndex + 1}`;
|
|
1095
|
+
}
|
|
1096
|
+
function GeoMap({
|
|
1097
|
+
className,
|
|
1098
|
+
mapWrapperClassName,
|
|
1099
|
+
mapClassName,
|
|
1100
|
+
panelClassName,
|
|
1101
|
+
panelPosition = "top-left",
|
|
1102
|
+
stadiaApiKey = "",
|
|
1103
|
+
mapStyle = "osm-bright",
|
|
1104
|
+
styleUrl,
|
|
1105
|
+
mapLibreCssHref,
|
|
1106
|
+
markers = [],
|
|
1107
|
+
clusters = [],
|
|
1108
|
+
viewState,
|
|
1109
|
+
defaultViewState,
|
|
1110
|
+
onViewStateChange,
|
|
1111
|
+
onMapClick,
|
|
1112
|
+
onMarkerDrag,
|
|
1113
|
+
showNavigationControl = true,
|
|
1114
|
+
showGeolocateControl = false,
|
|
1115
|
+
navigationControlPosition = "top-right",
|
|
1116
|
+
geolocateControlPosition = "top-left",
|
|
1117
|
+
flyToOptions,
|
|
1118
|
+
markerFocusZoom = 14,
|
|
1119
|
+
clusterFocusZoom = 5,
|
|
1120
|
+
selectedMarkerId,
|
|
1121
|
+
initialSelectedMarkerId,
|
|
1122
|
+
onSelectionChange,
|
|
1123
|
+
clearSelectionOnMapClick = true,
|
|
1124
|
+
mapChildren
|
|
1125
|
+
}) {
|
|
1126
|
+
const normalizedStandaloneMarkers = React5__namespace.useMemo(
|
|
1127
|
+
() => markers.map((marker, index) => ({
|
|
1128
|
+
...marker,
|
|
1129
|
+
id: normalizeId(marker.id, `marker-${index}`)
|
|
1130
|
+
})),
|
|
1131
|
+
[markers]
|
|
1132
|
+
);
|
|
1133
|
+
const normalizedClusters = React5__namespace.useMemo(() => {
|
|
1134
|
+
const results = [];
|
|
1135
|
+
clusters.forEach((cluster, clusterIndex) => {
|
|
1136
|
+
const clusterId = normalizeId(cluster.id, `cluster-${clusterIndex}`);
|
|
1137
|
+
const normalizedClusterMarkers = cluster.markers.map(
|
|
1138
|
+
(marker, markerIndex) => ({
|
|
1139
|
+
...marker,
|
|
1140
|
+
id: normalizeId(marker.id, `${clusterId}-marker-${markerIndex}`),
|
|
1141
|
+
clusterId
|
|
1142
|
+
})
|
|
1143
|
+
);
|
|
1144
|
+
const clusterCenter = cluster.latitude !== void 0 && cluster.longitude !== void 0 ? { latitude: cluster.latitude, longitude: cluster.longitude } : buildClusterCenter(normalizedClusterMarkers);
|
|
1145
|
+
if (!clusterCenter) {
|
|
1146
|
+
return;
|
|
1147
|
+
}
|
|
1148
|
+
results.push({
|
|
1149
|
+
...cluster,
|
|
1150
|
+
id: clusterId,
|
|
1151
|
+
latitude: clusterCenter.latitude,
|
|
1152
|
+
longitude: clusterCenter.longitude,
|
|
1153
|
+
markers: normalizedClusterMarkers
|
|
1154
|
+
});
|
|
1155
|
+
});
|
|
1156
|
+
return results;
|
|
1157
|
+
}, [clusters]);
|
|
1158
|
+
const markerLookup = React5__namespace.useMemo(() => {
|
|
1159
|
+
const lookup = /* @__PURE__ */ new Map();
|
|
1160
|
+
normalizedStandaloneMarkers.forEach((marker) => {
|
|
1161
|
+
lookup.set(marker.id, marker);
|
|
1162
|
+
});
|
|
1163
|
+
normalizedClusters.forEach((cluster) => {
|
|
1164
|
+
cluster.markers.forEach((marker) => {
|
|
1165
|
+
lookup.set(marker.id, marker);
|
|
1166
|
+
});
|
|
1167
|
+
});
|
|
1168
|
+
return lookup;
|
|
1169
|
+
}, [normalizedClusters, normalizedStandaloneMarkers]);
|
|
1170
|
+
const clusterLookup = React5__namespace.useMemo(() => {
|
|
1171
|
+
const lookup = /* @__PURE__ */ new Map();
|
|
1172
|
+
normalizedClusters.forEach((cluster) => {
|
|
1173
|
+
lookup.set(cluster.id, cluster);
|
|
1174
|
+
});
|
|
1175
|
+
return lookup;
|
|
1176
|
+
}, [normalizedClusters]);
|
|
1177
|
+
const firstCoordinate = React5__namespace.useMemo(() => {
|
|
1178
|
+
if (normalizedStandaloneMarkers.length > 0) {
|
|
1179
|
+
const firstStandaloneMarker = normalizedStandaloneMarkers[0];
|
|
1180
|
+
return {
|
|
1181
|
+
latitude: firstStandaloneMarker.latitude,
|
|
1182
|
+
longitude: firstStandaloneMarker.longitude
|
|
1183
|
+
};
|
|
1184
|
+
}
|
|
1185
|
+
if (normalizedClusters.length > 0) {
|
|
1186
|
+
const firstCluster = normalizedClusters[0];
|
|
1187
|
+
return {
|
|
1188
|
+
latitude: firstCluster.latitude,
|
|
1189
|
+
longitude: firstCluster.longitude
|
|
1190
|
+
};
|
|
1191
|
+
}
|
|
1192
|
+
return {
|
|
1193
|
+
latitude: DEFAULT_VIEW_STATE.latitude,
|
|
1194
|
+
longitude: DEFAULT_VIEW_STATE.longitude
|
|
1195
|
+
};
|
|
1196
|
+
}, [normalizedClusters, normalizedStandaloneMarkers]);
|
|
1197
|
+
const [uncontrolledViewState, setUncontrolledViewState] = React5__namespace.useState({
|
|
1198
|
+
latitude: defaultViewState?.latitude ?? firstCoordinate.latitude,
|
|
1199
|
+
longitude: defaultViewState?.longitude ?? firstCoordinate.longitude,
|
|
1200
|
+
zoom: defaultViewState?.zoom ?? DEFAULT_VIEW_STATE.zoom
|
|
1201
|
+
});
|
|
1202
|
+
const isControlledViewState = viewState !== void 0;
|
|
1203
|
+
const resolvedViewState = isControlledViewState ? viewState : uncontrolledViewState;
|
|
1204
|
+
const applyViewState = React5__namespace.useCallback(
|
|
1205
|
+
(nextState) => {
|
|
1206
|
+
if (!isControlledViewState) {
|
|
1207
|
+
setUncontrolledViewState((current) => ({ ...current, ...nextState }));
|
|
1208
|
+
}
|
|
1209
|
+
onViewStateChange?.(nextState);
|
|
1210
|
+
},
|
|
1211
|
+
[isControlledViewState, onViewStateChange]
|
|
1212
|
+
);
|
|
1213
|
+
const [selection, setSelection] = React5__namespace.useState(() => {
|
|
1214
|
+
if (initialSelectedMarkerId !== void 0 && initialSelectedMarkerId !== null) {
|
|
1215
|
+
return {
|
|
1216
|
+
type: "marker",
|
|
1217
|
+
markerId: String(initialSelectedMarkerId)
|
|
1218
|
+
};
|
|
1219
|
+
}
|
|
1220
|
+
return { type: "none" };
|
|
1221
|
+
});
|
|
1222
|
+
React5__namespace.useEffect(() => {
|
|
1223
|
+
if (selectedMarkerId === void 0 || selectedMarkerId === null) {
|
|
1224
|
+
return;
|
|
1225
|
+
}
|
|
1226
|
+
setSelection({
|
|
1227
|
+
type: "marker",
|
|
1228
|
+
markerId: String(selectedMarkerId)
|
|
1229
|
+
});
|
|
1230
|
+
}, [selectedMarkerId]);
|
|
1231
|
+
const selectedMarker = selection.markerId ? markerLookup.get(selection.markerId) : void 0;
|
|
1232
|
+
const selectedCluster = selection.clusterId ? clusterLookup.get(selection.clusterId) : void 0;
|
|
1233
|
+
React5__namespace.useEffect(() => {
|
|
1234
|
+
if (selection.type === "marker" && selection.markerId && !selectedMarker) {
|
|
1235
|
+
setSelection({ type: "none" });
|
|
1236
|
+
onSelectionChange?.({ type: "none" });
|
|
1237
|
+
}
|
|
1238
|
+
}, [onSelectionChange, selectedMarker, selection]);
|
|
1239
|
+
const emitSelectionChange = React5__namespace.useCallback(
|
|
1240
|
+
(nextSelection) => {
|
|
1241
|
+
if (nextSelection.type === "none") {
|
|
1242
|
+
onSelectionChange?.({ type: "none" });
|
|
1243
|
+
return;
|
|
1244
|
+
}
|
|
1245
|
+
if (nextSelection.type === "marker") {
|
|
1246
|
+
const parentCluster = nextSelection.marker.clusterId ? clusterLookup.get(nextSelection.marker.clusterId) : void 0;
|
|
1247
|
+
onSelectionChange?.({
|
|
1248
|
+
type: "marker",
|
|
1249
|
+
marker: nextSelection.marker,
|
|
1250
|
+
cluster: parentCluster
|
|
1251
|
+
});
|
|
1252
|
+
return;
|
|
1253
|
+
}
|
|
1254
|
+
onSelectionChange?.({
|
|
1255
|
+
type: "cluster",
|
|
1256
|
+
cluster: nextSelection.cluster
|
|
1257
|
+
});
|
|
1258
|
+
},
|
|
1259
|
+
[clusterLookup, onSelectionChange]
|
|
1260
|
+
);
|
|
1261
|
+
const selectMarker = React5__namespace.useCallback(
|
|
1262
|
+
(marker) => {
|
|
1263
|
+
setSelection({
|
|
1264
|
+
type: "marker",
|
|
1265
|
+
markerId: marker.id,
|
|
1266
|
+
clusterId: marker.clusterId
|
|
1267
|
+
});
|
|
1268
|
+
applyViewState({
|
|
1269
|
+
latitude: marker.latitude,
|
|
1270
|
+
longitude: marker.longitude,
|
|
1271
|
+
zoom: markerFocusZoom
|
|
1272
|
+
});
|
|
1273
|
+
emitSelectionChange({ type: "marker", marker });
|
|
1274
|
+
},
|
|
1275
|
+
[applyViewState, emitSelectionChange, markerFocusZoom]
|
|
1276
|
+
);
|
|
1277
|
+
const selectCluster = React5__namespace.useCallback(
|
|
1278
|
+
(cluster) => {
|
|
1279
|
+
setSelection({
|
|
1280
|
+
type: "cluster",
|
|
1281
|
+
clusterId: cluster.id
|
|
1282
|
+
});
|
|
1283
|
+
applyViewState({
|
|
1284
|
+
latitude: cluster.latitude,
|
|
1285
|
+
longitude: cluster.longitude,
|
|
1286
|
+
zoom: clusterFocusZoom
|
|
1287
|
+
});
|
|
1288
|
+
emitSelectionChange({ type: "cluster", cluster });
|
|
1289
|
+
},
|
|
1290
|
+
[applyViewState, clusterFocusZoom, emitSelectionChange]
|
|
1291
|
+
);
|
|
1292
|
+
const clearSelection = React5__namespace.useCallback(() => {
|
|
1293
|
+
setSelection({ type: "none" });
|
|
1294
|
+
emitSelectionChange({ type: "none" });
|
|
1295
|
+
}, [emitSelectionChange]);
|
|
1296
|
+
const mapMarkers = React5__namespace.useMemo(() => {
|
|
1297
|
+
const resolvedMarkers = [];
|
|
1298
|
+
normalizedClusters.forEach((cluster) => {
|
|
1299
|
+
const isSelected = selection.type === "cluster" && selection.clusterId === cluster.id;
|
|
1300
|
+
resolvedMarkers.push({
|
|
1301
|
+
id: `cluster-pin:${cluster.id}`,
|
|
1302
|
+
latitude: cluster.latitude,
|
|
1303
|
+
longitude: cluster.longitude,
|
|
1304
|
+
element: () => {
|
|
1305
|
+
const customMarkerElement = cluster.markerElement;
|
|
1306
|
+
const markerBody = typeof customMarkerElement === "function" ? customMarkerElement({
|
|
1307
|
+
isSelected,
|
|
1308
|
+
count: cluster.markers.length
|
|
1309
|
+
}) : customMarkerElement;
|
|
1310
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1311
|
+
"button",
|
|
1312
|
+
{
|
|
1313
|
+
type: "button",
|
|
1314
|
+
className: "group cursor-pointer",
|
|
1315
|
+
onClick: (event) => {
|
|
1316
|
+
event.preventDefault();
|
|
1317
|
+
event.stopPropagation();
|
|
1318
|
+
selectCluster(cluster);
|
|
1319
|
+
},
|
|
1320
|
+
"aria-label": `View ${cluster.markers.length} clustered locations`,
|
|
1321
|
+
children: markerBody ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1322
|
+
"span",
|
|
1323
|
+
{
|
|
1324
|
+
className: cn(
|
|
1325
|
+
"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",
|
|
1326
|
+
isSelected && "ring-4 ring-primary/30",
|
|
1327
|
+
cluster.pinClassName
|
|
1328
|
+
),
|
|
1329
|
+
style: {
|
|
1330
|
+
backgroundColor: cluster.pinColor ?? "var(--foreground)"
|
|
1331
|
+
},
|
|
1332
|
+
children: cluster.markers.length
|
|
1333
|
+
}
|
|
1334
|
+
)
|
|
1335
|
+
}
|
|
1336
|
+
);
|
|
1337
|
+
}
|
|
1338
|
+
});
|
|
1339
|
+
});
|
|
1340
|
+
normalizedStandaloneMarkers.forEach((marker) => {
|
|
1341
|
+
const isSelected = selection.type === "marker" && selection.markerId === marker.id;
|
|
1342
|
+
const customMarkerElement = marker.markerElement;
|
|
1343
|
+
resolvedMarkers.push({
|
|
1344
|
+
id: marker.id,
|
|
1345
|
+
latitude: marker.latitude,
|
|
1346
|
+
longitude: marker.longitude,
|
|
1347
|
+
draggable: marker.draggable,
|
|
1348
|
+
element: () => {
|
|
1349
|
+
const markerBody = typeof customMarkerElement === "function" ? customMarkerElement({ isSelected }) : customMarkerElement;
|
|
1350
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1351
|
+
"button",
|
|
1352
|
+
{
|
|
1353
|
+
type: "button",
|
|
1354
|
+
className: "group cursor-pointer",
|
|
1355
|
+
onClick: (event) => {
|
|
1356
|
+
event.preventDefault();
|
|
1357
|
+
event.stopPropagation();
|
|
1358
|
+
selectMarker(marker);
|
|
1359
|
+
},
|
|
1360
|
+
"aria-label": typeof marker.title === "string" ? `View ${marker.title}` : "View location details",
|
|
1361
|
+
children: markerBody ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1362
|
+
"span",
|
|
1363
|
+
{
|
|
1364
|
+
className: cn(
|
|
1365
|
+
"inline-flex h-4 w-4 rounded-full border-2 border-white shadow-md transition-transform duration-200 group-hover:scale-110",
|
|
1366
|
+
isSelected && "h-5 w-5 ring-4 ring-primary/30",
|
|
1367
|
+
marker.pinClassName
|
|
1368
|
+
),
|
|
1369
|
+
style: {
|
|
1370
|
+
backgroundColor: marker.pinColor ?? "#f43f5e"
|
|
1371
|
+
}
|
|
1372
|
+
}
|
|
1373
|
+
)
|
|
1374
|
+
}
|
|
1375
|
+
);
|
|
1376
|
+
}
|
|
1377
|
+
});
|
|
1378
|
+
});
|
|
1379
|
+
return resolvedMarkers;
|
|
1380
|
+
}, [normalizedClusters, normalizedStandaloneMarkers, selectCluster, selectMarker, selection]);
|
|
1381
|
+
const renderMarkerPanel = () => {
|
|
1382
|
+
if (selectedMarker) {
|
|
1383
|
+
const markerMediaItems = selectedMarker.mediaItems ?? [];
|
|
1384
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1385
|
+
"div",
|
|
1386
|
+
{
|
|
1387
|
+
className: cn(
|
|
1388
|
+
"w-[min(24rem,calc(100vw-2rem))] overflow-hidden rounded-xl border border-border bg-background shadow-2xl",
|
|
1389
|
+
panelClassName
|
|
1390
|
+
),
|
|
1391
|
+
children: [
|
|
1392
|
+
markerMediaItems.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(MarkerMediaCarousel, { mediaItems: markerMediaItems }) : null,
|
|
1393
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 p-4", children: [
|
|
1394
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-3", children: [
|
|
1395
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 space-y-1", children: [
|
|
1396
|
+
selectedMarker.eyebrow ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: selectedMarker.eyebrow }) : null,
|
|
1397
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base font-semibold leading-tight text-foreground", children: selectedMarker.title ?? selectedMarker.label ?? "Location" })
|
|
1398
|
+
] }),
|
|
1399
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1400
|
+
"button",
|
|
1401
|
+
{
|
|
1402
|
+
type: "button",
|
|
1403
|
+
"aria-label": "Close marker details",
|
|
1404
|
+
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",
|
|
1405
|
+
onClick: clearSelection,
|
|
1406
|
+
children: "x"
|
|
1407
|
+
}
|
|
1408
|
+
)
|
|
1409
|
+
] }),
|
|
1410
|
+
selectedMarker.summary ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm leading-relaxed text-muted-foreground", children: selectedMarker.summary }) : null,
|
|
1411
|
+
selectedMarker.locationLine ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-medium text-foreground", children: selectedMarker.locationLine }) : null,
|
|
1412
|
+
selectedMarker.hoursLine ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", children: selectedMarker.hoursLine }) : null,
|
|
1413
|
+
selectedMarker.markerContentComponent ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm", children: selectedMarker.markerContentComponent }) : null,
|
|
1414
|
+
/* @__PURE__ */ jsxRuntime.jsx(MarkerActions, { actions: selectedMarker.actions })
|
|
1415
|
+
] })
|
|
1416
|
+
]
|
|
1417
|
+
}
|
|
1418
|
+
);
|
|
1419
|
+
}
|
|
1420
|
+
if (selectedCluster) {
|
|
1421
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1422
|
+
"div",
|
|
1423
|
+
{
|
|
1424
|
+
className: cn(
|
|
1425
|
+
"w-[min(24rem,calc(100vw-2rem))] overflow-hidden rounded-xl border border-border bg-background p-4 shadow-2xl",
|
|
1426
|
+
panelClassName
|
|
1427
|
+
),
|
|
1428
|
+
children: [
|
|
1429
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3 flex items-start justify-between gap-3", children: [
|
|
1430
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
|
|
1431
|
+
selectedCluster.label ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: selectedCluster.label }) : null,
|
|
1432
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base font-semibold leading-tight text-foreground", children: selectedCluster.title ?? "Clustered Locations" }),
|
|
1433
|
+
/* @__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.` })
|
|
1434
|
+
] }),
|
|
1435
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1436
|
+
"button",
|
|
1437
|
+
{
|
|
1438
|
+
type: "button",
|
|
1439
|
+
"aria-label": "Close cluster details",
|
|
1440
|
+
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",
|
|
1441
|
+
onClick: clearSelection,
|
|
1442
|
+
children: "x"
|
|
1443
|
+
}
|
|
1444
|
+
)
|
|
1445
|
+
] }),
|
|
1446
|
+
/* @__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(
|
|
1447
|
+
"button",
|
|
1448
|
+
{
|
|
1449
|
+
type: "button",
|
|
1450
|
+
className: "w-full rounded-lg border border-border/60 p-3 text-left transition hover:border-border hover:bg-muted/50",
|
|
1451
|
+
onClick: () => selectMarker(marker),
|
|
1452
|
+
children: [
|
|
1453
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "line-clamp-1 text-sm font-semibold text-foreground", children: getMarkerTitle(marker, markerIndex) }),
|
|
1454
|
+
marker.summary ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 line-clamp-2 text-xs text-muted-foreground", children: marker.summary }) : null
|
|
1455
|
+
]
|
|
1456
|
+
},
|
|
1457
|
+
marker.id
|
|
1458
|
+
)) })
|
|
1459
|
+
]
|
|
1460
|
+
}
|
|
1461
|
+
);
|
|
1462
|
+
}
|
|
1463
|
+
return null;
|
|
1464
|
+
};
|
|
1465
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1466
|
+
"div",
|
|
1467
|
+
{
|
|
1468
|
+
className: cn(
|
|
1469
|
+
"relative overflow-hidden rounded-2xl border border-border bg-background",
|
|
1470
|
+
className
|
|
1471
|
+
),
|
|
1472
|
+
children: [
|
|
1473
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("h-[520px] w-full", mapWrapperClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1474
|
+
maps.MapLibre,
|
|
1475
|
+
{
|
|
1476
|
+
stadiaApiKey,
|
|
1477
|
+
mapStyle,
|
|
1478
|
+
styleUrl,
|
|
1479
|
+
mapLibreCssHref,
|
|
1480
|
+
viewState: resolvedViewState,
|
|
1481
|
+
onViewStateChange: applyViewState,
|
|
1482
|
+
markers: mapMarkers,
|
|
1483
|
+
onClick: (coord) => {
|
|
1484
|
+
onMapClick?.(coord);
|
|
1485
|
+
if (clearSelectionOnMapClick) {
|
|
1486
|
+
clearSelection();
|
|
1487
|
+
}
|
|
1488
|
+
},
|
|
1489
|
+
onMarkerDrag,
|
|
1490
|
+
showNavigationControl,
|
|
1491
|
+
showGeolocateControl,
|
|
1492
|
+
navigationControlPosition,
|
|
1493
|
+
geolocateControlPosition,
|
|
1494
|
+
flyToOptions,
|
|
1495
|
+
className: cn("h-full w-full", mapClassName),
|
|
1496
|
+
children: mapChildren
|
|
1497
|
+
}
|
|
1498
|
+
) }),
|
|
1499
|
+
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
|
|
1500
|
+
]
|
|
1501
|
+
}
|
|
1502
|
+
);
|
|
1503
|
+
}
|
|
1504
|
+
var sizeStyles = {
|
|
1505
|
+
sm: "max-w-md",
|
|
1506
|
+
md: "max-w-2xl",
|
|
1507
|
+
lg: "max-w-4xl",
|
|
1508
|
+
xl: "max-w-5xl",
|
|
1509
|
+
full: "max-w-7xl",
|
|
1510
|
+
compact: "max-w-[700px]"
|
|
1511
|
+
};
|
|
1512
|
+
var dialogTransition = {
|
|
1513
|
+
duration: 0.35,
|
|
1514
|
+
ease: [0.16, 1, 0.3, 1]
|
|
1515
|
+
};
|
|
1516
|
+
function AnimatedDialog({
|
|
1517
|
+
open,
|
|
1518
|
+
onOpenChange,
|
|
1519
|
+
title,
|
|
1520
|
+
eyebrow,
|
|
1521
|
+
description,
|
|
1522
|
+
children,
|
|
1523
|
+
header,
|
|
1524
|
+
footer,
|
|
1525
|
+
size = "lg",
|
|
1526
|
+
className,
|
|
1527
|
+
contentClassName,
|
|
1528
|
+
featuredMediaHeader
|
|
1529
|
+
}) {
|
|
1530
|
+
const titleId = React5.useId();
|
|
1531
|
+
const descriptionId = React5.useId();
|
|
1532
|
+
const containerRef = React5.useRef(null);
|
|
1533
|
+
useOnClickOutside.useOnClickOutside(containerRef, () => {
|
|
1534
|
+
if (open) {
|
|
1535
|
+
onOpenChange(false);
|
|
1536
|
+
}
|
|
1537
|
+
});
|
|
1538
|
+
React5.useEffect(() => {
|
|
1539
|
+
if (!open) {
|
|
1540
|
+
return;
|
|
1541
|
+
}
|
|
1542
|
+
const onKeyDown = (event) => {
|
|
1543
|
+
if (event.key === "Escape") {
|
|
1544
|
+
onOpenChange(false);
|
|
1545
|
+
}
|
|
1546
|
+
};
|
|
1547
|
+
const previousOverflow = document.body.style.overflow;
|
|
1548
|
+
document.body.style.overflow = "hidden";
|
|
1549
|
+
window.addEventListener("keydown", onKeyDown);
|
|
1550
|
+
return () => {
|
|
1551
|
+
document.body.style.overflow = previousOverflow;
|
|
1552
|
+
window.removeEventListener("keydown", onKeyDown);
|
|
1553
|
+
};
|
|
1554
|
+
}, [open, onOpenChange]);
|
|
1555
|
+
return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: open ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fixed inset-0 z-50 h-screen overflow-y-auto", children: [
|
|
1556
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1557
|
+
framerMotion.motion.div,
|
|
1558
|
+
{
|
|
1559
|
+
initial: { opacity: 0 },
|
|
1560
|
+
animate: { opacity: 1, transition: dialogTransition },
|
|
1561
|
+
exit: { opacity: 0, transition: dialogTransition },
|
|
1562
|
+
className: "fixed inset-0 h-full w-full bg-foreground/80 backdrop-blur-lg"
|
|
1563
|
+
}
|
|
1564
|
+
),
|
|
1565
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1566
|
+
framerMotion.motion.div,
|
|
1567
|
+
{
|
|
1568
|
+
initial: { opacity: 0, y: 24, scale: 0.98 },
|
|
1569
|
+
animate: {
|
|
1570
|
+
opacity: 1,
|
|
1571
|
+
y: 0,
|
|
1572
|
+
scale: 1,
|
|
1573
|
+
transition: dialogTransition
|
|
1574
|
+
},
|
|
1575
|
+
exit: {
|
|
1576
|
+
opacity: 0,
|
|
1577
|
+
y: 12,
|
|
1578
|
+
scale: 0.98,
|
|
1579
|
+
transition: dialogTransition
|
|
1580
|
+
},
|
|
1581
|
+
ref: containerRef,
|
|
1582
|
+
role: "dialog",
|
|
1583
|
+
"aria-modal": "true",
|
|
1584
|
+
"aria-labelledby": title ? titleId : void 0,
|
|
1585
|
+
"aria-describedby": description ? descriptionId : void 0,
|
|
1586
|
+
className: cn(
|
|
1587
|
+
"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",
|
|
1588
|
+
size === "compact" ? "p-0 md:my-20" : "p-6 md:my-20 md:p-12",
|
|
1589
|
+
sizeStyles[size],
|
|
1590
|
+
className
|
|
1591
|
+
),
|
|
1592
|
+
children: [
|
|
1593
|
+
featuredMediaHeader ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative overflow-hidden", children: [
|
|
1594
|
+
featuredMediaHeader,
|
|
1595
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1596
|
+
"button",
|
|
1597
|
+
{
|
|
1598
|
+
type: "button",
|
|
1599
|
+
"aria-label": "Close dialog",
|
|
1600
|
+
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",
|
|
1601
|
+
onClick: () => onOpenChange(false),
|
|
1602
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1603
|
+
"svg",
|
|
1604
|
+
{
|
|
1605
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1606
|
+
width: "24",
|
|
1607
|
+
height: "24",
|
|
1608
|
+
viewBox: "0 0 24 24",
|
|
1609
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1610
|
+
"path",
|
|
1611
|
+
{
|
|
1612
|
+
fill: "none",
|
|
1613
|
+
stroke: "currentColor",
|
|
1614
|
+
strokeLinecap: "round",
|
|
1615
|
+
strokeLinejoin: "round",
|
|
1616
|
+
strokeWidth: "2",
|
|
1617
|
+
d: "M18 6L6 18M6 6l12 12"
|
|
1618
|
+
}
|
|
1619
|
+
)
|
|
1620
|
+
}
|
|
1621
|
+
)
|
|
1622
|
+
}
|
|
1623
|
+
)
|
|
1624
|
+
] }) : null,
|
|
1625
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1626
|
+
"div",
|
|
635
1627
|
{
|
|
636
1628
|
className: cn(
|
|
637
1629
|
"flex items-start justify-between gap-8",
|
|
@@ -866,10 +1858,10 @@ var ImageSlider = ({
|
|
|
866
1858
|
optixFlowConfig
|
|
867
1859
|
}) => {
|
|
868
1860
|
const hasImages = images.length > 0;
|
|
869
|
-
const [currentIndex, setCurrentIndex] =
|
|
1861
|
+
const [currentIndex, setCurrentIndex] = React5__namespace.useState(
|
|
870
1862
|
() => normalizeIndex(startIndex, images.length)
|
|
871
1863
|
);
|
|
872
|
-
const handleNext =
|
|
1864
|
+
const handleNext = React5__namespace.useCallback(() => {
|
|
873
1865
|
if (!hasImages) return;
|
|
874
1866
|
setCurrentIndex((prevIndex) => {
|
|
875
1867
|
const nextIndex = prevIndex + 1 >= images.length ? 0 : prevIndex + 1;
|
|
@@ -877,7 +1869,7 @@ var ImageSlider = ({
|
|
|
877
1869
|
return nextIndex;
|
|
878
1870
|
});
|
|
879
1871
|
}, [hasImages, images.length, onSlideChange]);
|
|
880
|
-
const handlePrevious =
|
|
1872
|
+
const handlePrevious = React5__namespace.useCallback(() => {
|
|
881
1873
|
if (!hasImages) return;
|
|
882
1874
|
setCurrentIndex((prevIndex) => {
|
|
883
1875
|
const nextIndex = prevIndex - 1 < 0 ? images.length - 1 : prevIndex - 1;
|
|
@@ -885,11 +1877,11 @@ var ImageSlider = ({
|
|
|
885
1877
|
return nextIndex;
|
|
886
1878
|
});
|
|
887
1879
|
}, [hasImages, images.length, onSlideChange]);
|
|
888
|
-
|
|
1880
|
+
React5__namespace.useEffect(() => {
|
|
889
1881
|
if (!hasImages) return;
|
|
890
1882
|
setCurrentIndex(normalizeIndex(startIndex, images.length));
|
|
891
1883
|
}, [startIndex, images.length, hasImages]);
|
|
892
|
-
|
|
1884
|
+
React5__namespace.useEffect(() => {
|
|
893
1885
|
if (!enableKeyboard || !hasImages) return;
|
|
894
1886
|
const handleKeyDown = (event) => {
|
|
895
1887
|
if (event.key === "ArrowRight") {
|
|
@@ -903,7 +1895,7 @@ var ImageSlider = ({
|
|
|
903
1895
|
window.removeEventListener("keydown", handleKeyDown);
|
|
904
1896
|
};
|
|
905
1897
|
}, [enableKeyboard, handleNext, handlePrevious, hasImages]);
|
|
906
|
-
|
|
1898
|
+
React5__namespace.useEffect(() => {
|
|
907
1899
|
if (!autoplay || images.length < 2) return;
|
|
908
1900
|
const interval = window.setInterval(handleNext, autoplayIntervalMs);
|
|
909
1901
|
return () => window.clearInterval(interval);
|
|
@@ -971,153 +1963,11 @@ var ImageSlider = ({
|
|
|
971
1963
|
),
|
|
972
1964
|
children
|
|
973
1965
|
}
|
|
974
|
-
) : null
|
|
975
|
-
]
|
|
976
|
-
}
|
|
977
|
-
);
|
|
978
|
-
};
|
|
979
|
-
var baseStyles = [
|
|
980
|
-
// Layout
|
|
981
|
-
"inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
|
|
982
|
-
// Typography - using CSS variables with sensible defaults
|
|
983
|
-
"font-[var(--button-font-family,inherit)]",
|
|
984
|
-
"font-[var(--button-font-weight,500)]",
|
|
985
|
-
"tracking-[var(--button-letter-spacing,0)]",
|
|
986
|
-
"leading-[var(--button-line-height,1.25)]",
|
|
987
|
-
"[text-transform:var(--button-text-transform,none)]",
|
|
988
|
-
"text-sm",
|
|
989
|
-
// Border radius
|
|
990
|
-
"rounded-[var(--button-radius,var(--radius,0.375rem))]",
|
|
991
|
-
// Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
|
|
992
|
-
"[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
|
|
993
|
-
// Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
|
|
994
|
-
"[box-shadow:var(--button-shadow,none)]",
|
|
995
|
-
"hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
|
|
996
|
-
// Disabled state
|
|
997
|
-
"disabled:pointer-events-none disabled:opacity-50",
|
|
998
|
-
// SVG handling
|
|
999
|
-
"[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
|
|
1000
|
-
// Focus styles
|
|
1001
|
-
"outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
1002
|
-
// Invalid state
|
|
1003
|
-
"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
|
|
1004
|
-
].join(" ");
|
|
1005
|
-
var buttonVariants = classVarianceAuthority.cva(baseStyles, {
|
|
1006
|
-
variants: {
|
|
1007
|
-
variant: {
|
|
1008
|
-
// Default (Primary) variant - full customization
|
|
1009
|
-
default: [
|
|
1010
|
-
"bg-[var(--button-default-bg,hsl(var(--primary)))]",
|
|
1011
|
-
"text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
|
|
1012
|
-
"border-[length:var(--button-default-border-width,0px)]",
|
|
1013
|
-
"border-[color:var(--button-default-border,transparent)]",
|
|
1014
|
-
"[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
|
|
1015
|
-
"hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
|
|
1016
|
-
"hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
|
|
1017
|
-
"hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
|
|
1018
|
-
"hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
|
|
1019
|
-
].join(" "),
|
|
1020
|
-
// Destructive variant - full customization
|
|
1021
|
-
destructive: [
|
|
1022
|
-
"bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
|
|
1023
|
-
"text-[var(--button-destructive-fg,white)]",
|
|
1024
|
-
"border-[length:var(--button-destructive-border-width,0px)]",
|
|
1025
|
-
"border-[color:var(--button-destructive-border,transparent)]",
|
|
1026
|
-
"[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
|
|
1027
|
-
"hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
|
|
1028
|
-
"hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
|
|
1029
|
-
"hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
|
|
1030
|
-
"hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
|
|
1031
|
-
"focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
|
|
1032
|
-
"dark:bg-destructive/60"
|
|
1033
|
-
].join(" "),
|
|
1034
|
-
// Outline variant - full customization with proper border handling
|
|
1035
|
-
outline: [
|
|
1036
|
-
"bg-[var(--button-outline-bg,hsl(var(--background)))]",
|
|
1037
|
-
"text-[var(--button-outline-fg,inherit)]",
|
|
1038
|
-
"border-[length:var(--button-outline-border-width,1px)]",
|
|
1039
|
-
"border-[color:var(--button-outline-border,hsl(var(--border)))]",
|
|
1040
|
-
"[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
|
|
1041
|
-
"hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
|
|
1042
|
-
"hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
|
|
1043
|
-
"hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
|
|
1044
|
-
"hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
|
|
1045
|
-
"dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
|
|
1046
|
-
].join(" "),
|
|
1047
|
-
// Secondary variant - full customization
|
|
1048
|
-
secondary: [
|
|
1049
|
-
"bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
|
|
1050
|
-
"text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
|
|
1051
|
-
"border-[length:var(--button-secondary-border-width,0px)]",
|
|
1052
|
-
"border-[color:var(--button-secondary-border,transparent)]",
|
|
1053
|
-
"[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
|
|
1054
|
-
"hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
|
|
1055
|
-
"hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
|
|
1056
|
-
"hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
|
|
1057
|
-
"hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
|
|
1058
|
-
].join(" "),
|
|
1059
|
-
// Ghost variant - full customization
|
|
1060
|
-
ghost: [
|
|
1061
|
-
"bg-[var(--button-ghost-bg,transparent)]",
|
|
1062
|
-
"text-[var(--button-ghost-fg,inherit)]",
|
|
1063
|
-
"border-[length:var(--button-ghost-border-width,0px)]",
|
|
1064
|
-
"border-[color:var(--button-ghost-border,transparent)]",
|
|
1065
|
-
"[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
|
|
1066
|
-
"hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
|
|
1067
|
-
"hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
|
|
1068
|
-
"hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
|
|
1069
|
-
"hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
|
|
1070
|
-
"dark:hover:bg-accent/50"
|
|
1071
|
-
].join(" "),
|
|
1072
|
-
// Link variant - full customization
|
|
1073
|
-
link: [
|
|
1074
|
-
"bg-[var(--button-link-bg,transparent)]",
|
|
1075
|
-
"text-[var(--button-link-fg,hsl(var(--primary)))]",
|
|
1076
|
-
"border-[length:var(--button-link-border-width,0px)]",
|
|
1077
|
-
"border-[color:var(--button-link-border,transparent)]",
|
|
1078
|
-
"[box-shadow:var(--button-link-shadow,none)]",
|
|
1079
|
-
"hover:bg-[var(--button-link-hover-bg,transparent)]",
|
|
1080
|
-
"hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
|
|
1081
|
-
"hover:[box-shadow:var(--button-link-shadow-hover,none)]",
|
|
1082
|
-
"underline-offset-4 hover:underline"
|
|
1083
|
-
].join(" ")
|
|
1084
|
-
},
|
|
1085
|
-
size: {
|
|
1086
|
-
default: [
|
|
1087
|
-
"h-[var(--button-height-md,2.25rem)]",
|
|
1088
|
-
"px-[var(--button-padding-x-md,1rem)]",
|
|
1089
|
-
"py-[var(--button-padding-y-md,0.5rem)]",
|
|
1090
|
-
"has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
|
|
1091
|
-
].join(" "),
|
|
1092
|
-
sm: [
|
|
1093
|
-
"h-[var(--button-height-sm,2rem)]",
|
|
1094
|
-
"px-[var(--button-padding-x-sm,0.75rem)]",
|
|
1095
|
-
"py-[var(--button-padding-y-sm,0.25rem)]",
|
|
1096
|
-
"gap-1.5",
|
|
1097
|
-
"has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
|
|
1098
|
-
].join(" "),
|
|
1099
|
-
md: [
|
|
1100
|
-
"h-[var(--button-height-md,2.25rem)]",
|
|
1101
|
-
"px-[var(--button-padding-x-md,1rem)]",
|
|
1102
|
-
"py-[var(--button-padding-y-md,0.5rem)]",
|
|
1103
|
-
"has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
|
|
1104
|
-
].join(" "),
|
|
1105
|
-
lg: [
|
|
1106
|
-
"h-[var(--button-height-lg,2.5rem)]",
|
|
1107
|
-
"px-[var(--button-padding-x-lg,1.5rem)]",
|
|
1108
|
-
"py-[var(--button-padding-y-lg,0.5rem)]",
|
|
1109
|
-
"has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
|
|
1110
|
-
].join(" "),
|
|
1111
|
-
icon: "size-[var(--button-height-md,2.25rem)]",
|
|
1112
|
-
"icon-sm": "size-[var(--button-height-sm,2rem)]",
|
|
1113
|
-
"icon-lg": "size-[var(--button-height-lg,2.5rem)]"
|
|
1966
|
+
) : null
|
|
1967
|
+
]
|
|
1114
1968
|
}
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
variant: "default",
|
|
1118
|
-
size: "default"
|
|
1119
|
-
}
|
|
1120
|
-
});
|
|
1969
|
+
);
|
|
1970
|
+
};
|
|
1121
1971
|
function Button({
|
|
1122
1972
|
className,
|
|
1123
1973
|
variant = "default",
|
|
@@ -1145,407 +1995,130 @@ function Card({ className, ...props }) {
|
|
|
1145
1995
|
className: cn(
|
|
1146
1996
|
"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
|
|
1147
1997
|
className
|
|
1148
|
-
),
|
|
1149
|
-
...props
|
|
1150
|
-
}
|
|
1151
|
-
);
|
|
1152
|
-
}
|
|
1153
|
-
function CardHeader({ className, ...props }) {
|
|
1154
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1155
|
-
"div",
|
|
1156
|
-
{
|
|
1157
|
-
"data-slot": "card-header",
|
|
1158
|
-
className: cn(
|
|
1159
|
-
"@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",
|
|
1160
|
-
className
|
|
1161
|
-
),
|
|
1162
|
-
...props
|
|
1163
|
-
}
|
|
1164
|
-
);
|
|
1165
|
-
}
|
|
1166
|
-
function CardTitle({ className, ...props }) {
|
|
1167
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1168
|
-
"div",
|
|
1169
|
-
{
|
|
1170
|
-
"data-slot": "card-title",
|
|
1171
|
-
className: cn("leading-none font-semibold", className),
|
|
1172
|
-
...props
|
|
1173
|
-
}
|
|
1174
|
-
);
|
|
1175
|
-
}
|
|
1176
|
-
function CardDescription({ className, ...props }) {
|
|
1177
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1178
|
-
"div",
|
|
1179
|
-
{
|
|
1180
|
-
"data-slot": "card-description",
|
|
1181
|
-
className: cn("text-muted-foreground text-sm", className),
|
|
1182
|
-
...props
|
|
1183
|
-
}
|
|
1184
|
-
);
|
|
1185
|
-
}
|
|
1186
|
-
function CardContent({ className, ...props }) {
|
|
1187
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1188
|
-
"div",
|
|
1189
|
-
{
|
|
1190
|
-
"data-slot": "card-content",
|
|
1191
|
-
className: cn("px-6", className),
|
|
1192
|
-
...props
|
|
1193
|
-
}
|
|
1194
|
-
);
|
|
1195
|
-
}
|
|
1196
|
-
function CardFooter({ className, ...props }) {
|
|
1197
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1198
|
-
"div",
|
|
1199
|
-
{
|
|
1200
|
-
"data-slot": "card-footer",
|
|
1201
|
-
className: cn("flex items-center px-6 [.border-t]:pt-6", className),
|
|
1202
|
-
...props
|
|
1203
|
-
}
|
|
1204
|
-
);
|
|
1205
|
-
}
|
|
1206
|
-
var badgeVariants = classVarianceAuthority.cva(
|
|
1207
|
-
"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",
|
|
1208
|
-
{
|
|
1209
|
-
variants: {
|
|
1210
|
-
variant: {
|
|
1211
|
-
default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
|
1212
|
-
secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
|
1213
|
-
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",
|
|
1214
|
-
outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
|
|
1215
|
-
}
|
|
1216
|
-
},
|
|
1217
|
-
defaultVariants: {
|
|
1218
|
-
variant: "default"
|
|
1219
|
-
}
|
|
1220
|
-
}
|
|
1221
|
-
);
|
|
1222
|
-
function Badge({
|
|
1223
|
-
className,
|
|
1224
|
-
variant,
|
|
1225
|
-
asChild = false,
|
|
1226
|
-
...props
|
|
1227
|
-
}) {
|
|
1228
|
-
const Comp = asChild ? reactSlot.Slot : "span";
|
|
1229
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1230
|
-
Comp,
|
|
1231
|
-
{
|
|
1232
|
-
"data-slot": "badge",
|
|
1233
|
-
className: cn(badgeVariants({ variant }), className),
|
|
1234
|
-
...props
|
|
1235
|
-
}
|
|
1236
|
-
);
|
|
1237
|
-
}
|
|
1238
|
-
function Popover({
|
|
1239
|
-
...props
|
|
1240
|
-
}) {
|
|
1241
|
-
return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Root, { "data-slot": "popover", ...props });
|
|
1242
|
-
}
|
|
1243
|
-
function PopoverTrigger({
|
|
1244
|
-
...props
|
|
1245
|
-
}) {
|
|
1246
|
-
return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Trigger, { "data-slot": "popover-trigger", ...props });
|
|
1247
|
-
}
|
|
1248
|
-
function PopoverContent({
|
|
1249
|
-
className,
|
|
1250
|
-
align = "center",
|
|
1251
|
-
sideOffset = 4,
|
|
1252
|
-
...props
|
|
1253
|
-
}) {
|
|
1254
|
-
return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1255
|
-
PopoverPrimitive__namespace.Content,
|
|
1256
|
-
{
|
|
1257
|
-
"data-slot": "popover-content",
|
|
1258
|
-
align,
|
|
1259
|
-
sideOffset,
|
|
1260
|
-
className: cn(
|
|
1261
|
-
"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",
|
|
1262
|
-
className
|
|
1263
|
-
),
|
|
1264
|
-
...props
|
|
1265
|
-
}
|
|
1266
|
-
) });
|
|
1267
|
-
}
|
|
1268
|
-
var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
|
|
1269
|
-
function DynamicIcon({ apiKey, ...props }) {
|
|
1270
|
-
return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
1271
|
-
}
|
|
1272
|
-
function normalizePhoneNumber(input) {
|
|
1273
|
-
const trimmed = input.trim();
|
|
1274
|
-
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
1275
|
-
return trimmed;
|
|
1276
|
-
}
|
|
1277
|
-
const match = trimmed.match(/^[\s\+\-\(\)]*(\d[\d\s\-\(\)\.]*\d)[\s\-]*(x|ext\.?|extension)?[\s\-]*(\d+)?$/i);
|
|
1278
|
-
if (match) {
|
|
1279
|
-
const mainNumber = match[1].replace(/[\s\-\(\)\.]/g, "");
|
|
1280
|
-
const extension = match[3];
|
|
1281
|
-
const normalized = mainNumber.length >= 10 && !trimmed.startsWith("+") ? `+${mainNumber}` : mainNumber;
|
|
1282
|
-
const withExtension = extension ? `${normalized};ext=${extension}` : normalized;
|
|
1283
|
-
return `tel:${withExtension}`;
|
|
1284
|
-
}
|
|
1285
|
-
const cleaned = trimmed.replace(/[\s\-\(\)\.]/g, "");
|
|
1286
|
-
return `tel:${cleaned}`;
|
|
1287
|
-
}
|
|
1288
|
-
function normalizeEmail(input) {
|
|
1289
|
-
const trimmed = input.trim();
|
|
1290
|
-
if (trimmed.toLowerCase().startsWith("mailto:")) {
|
|
1291
|
-
return trimmed;
|
|
1292
|
-
}
|
|
1293
|
-
return `mailto:${trimmed}`;
|
|
1294
|
-
}
|
|
1295
|
-
function isEmail(input) {
|
|
1296
|
-
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
1297
|
-
return emailRegex.test(input.trim());
|
|
1298
|
-
}
|
|
1299
|
-
function isPhoneNumber(input) {
|
|
1300
|
-
const trimmed = input.trim();
|
|
1301
|
-
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
1302
|
-
return true;
|
|
1303
|
-
}
|
|
1304
|
-
const phoneRegex = /^[\s\+\-\(\)]*\d[\d\s\-\(\)\.]*\d[\s\-]*(x|ext\.?|extension)?[\s\-]*\d*$/i;
|
|
1305
|
-
return phoneRegex.test(trimmed);
|
|
1306
|
-
}
|
|
1307
|
-
function isInternalUrl(href) {
|
|
1308
|
-
if (typeof window === "undefined") {
|
|
1309
|
-
return href.startsWith("/") && !href.startsWith("//");
|
|
1310
|
-
}
|
|
1311
|
-
const trimmed = href.trim();
|
|
1312
|
-
if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
|
|
1313
|
-
return true;
|
|
1314
|
-
}
|
|
1315
|
-
try {
|
|
1316
|
-
const url = new URL(trimmed, window.location.href);
|
|
1317
|
-
const currentOrigin = window.location.origin;
|
|
1318
|
-
const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
|
|
1319
|
-
return normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin);
|
|
1320
|
-
} catch {
|
|
1321
|
-
return false;
|
|
1322
|
-
}
|
|
1323
|
-
}
|
|
1324
|
-
function toRelativePath(href) {
|
|
1325
|
-
if (typeof window === "undefined") {
|
|
1326
|
-
return href;
|
|
1327
|
-
}
|
|
1328
|
-
const trimmed = href.trim();
|
|
1329
|
-
if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
|
|
1330
|
-
return trimmed;
|
|
1331
|
-
}
|
|
1332
|
-
try {
|
|
1333
|
-
const url = new URL(trimmed, window.location.href);
|
|
1334
|
-
const currentOrigin = window.location.origin;
|
|
1335
|
-
const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
|
|
1336
|
-
if (normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin)) {
|
|
1337
|
-
return url.pathname + url.search + url.hash;
|
|
1338
|
-
}
|
|
1339
|
-
} catch {
|
|
1340
|
-
}
|
|
1341
|
-
return trimmed;
|
|
1342
|
-
}
|
|
1343
|
-
function useNavigation({
|
|
1344
|
-
href,
|
|
1345
|
-
onClick
|
|
1346
|
-
} = {}) {
|
|
1347
|
-
const linkType = React4__namespace.useMemo(() => {
|
|
1348
|
-
if (!href || href.trim() === "") {
|
|
1349
|
-
return onClick ? "none" : "none";
|
|
1350
|
-
}
|
|
1351
|
-
const trimmed = href.trim();
|
|
1352
|
-
if (trimmed.toLowerCase().startsWith("mailto:") || isEmail(trimmed)) {
|
|
1353
|
-
return "mailto";
|
|
1354
|
-
}
|
|
1355
|
-
if (trimmed.toLowerCase().startsWith("tel:") || isPhoneNumber(trimmed)) {
|
|
1356
|
-
return "tel";
|
|
1357
|
-
}
|
|
1358
|
-
if (isInternalUrl(trimmed)) {
|
|
1359
|
-
return "internal";
|
|
1360
|
-
}
|
|
1361
|
-
try {
|
|
1362
|
-
new URL(trimmed, typeof window !== "undefined" ? window.location.href : "http://localhost");
|
|
1363
|
-
return "external";
|
|
1364
|
-
} catch {
|
|
1365
|
-
return "internal";
|
|
1366
|
-
}
|
|
1367
|
-
}, [href, onClick]);
|
|
1368
|
-
const normalizedHref = React4__namespace.useMemo(() => {
|
|
1369
|
-
if (!href || href.trim() === "") {
|
|
1370
|
-
return void 0;
|
|
1371
|
-
}
|
|
1372
|
-
const trimmed = href.trim();
|
|
1373
|
-
switch (linkType) {
|
|
1374
|
-
case "tel":
|
|
1375
|
-
return normalizePhoneNumber(trimmed);
|
|
1376
|
-
case "mailto":
|
|
1377
|
-
return normalizeEmail(trimmed);
|
|
1378
|
-
case "internal":
|
|
1379
|
-
return toRelativePath(trimmed);
|
|
1380
|
-
case "external":
|
|
1381
|
-
return trimmed;
|
|
1382
|
-
default:
|
|
1383
|
-
return trimmed;
|
|
1384
|
-
}
|
|
1385
|
-
}, [href, linkType]);
|
|
1386
|
-
const target = React4__namespace.useMemo(() => {
|
|
1387
|
-
switch (linkType) {
|
|
1388
|
-
case "external":
|
|
1389
|
-
return "_blank";
|
|
1390
|
-
case "internal":
|
|
1391
|
-
return "_self";
|
|
1392
|
-
case "mailto":
|
|
1393
|
-
case "tel":
|
|
1394
|
-
return void 0;
|
|
1395
|
-
default:
|
|
1396
|
-
return void 0;
|
|
1998
|
+
),
|
|
1999
|
+
...props
|
|
1397
2000
|
}
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
2001
|
+
);
|
|
2002
|
+
}
|
|
2003
|
+
function CardHeader({ className, ...props }) {
|
|
2004
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2005
|
+
"div",
|
|
2006
|
+
{
|
|
2007
|
+
"data-slot": "card-header",
|
|
2008
|
+
className: cn(
|
|
2009
|
+
"@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",
|
|
2010
|
+
className
|
|
2011
|
+
),
|
|
2012
|
+
...props
|
|
1402
2013
|
}
|
|
1403
|
-
return void 0;
|
|
1404
|
-
}, [linkType]);
|
|
1405
|
-
const isExternal = linkType === "external";
|
|
1406
|
-
const isInternal = linkType === "internal";
|
|
1407
|
-
const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
|
|
1408
|
-
const handleClick = React4__namespace.useCallback(
|
|
1409
|
-
(event) => {
|
|
1410
|
-
if (onClick) {
|
|
1411
|
-
try {
|
|
1412
|
-
onClick(event);
|
|
1413
|
-
} catch (error) {
|
|
1414
|
-
console.error("Error in user onClick handler:", error);
|
|
1415
|
-
}
|
|
1416
|
-
}
|
|
1417
|
-
if (event.defaultPrevented) {
|
|
1418
|
-
return;
|
|
1419
|
-
}
|
|
1420
|
-
if (shouldUseRouter && normalizedHref && event.button === 0 && // left-click only
|
|
1421
|
-
!event.metaKey && !event.altKey && !event.ctrlKey && !event.shiftKey) {
|
|
1422
|
-
if (typeof window !== "undefined") {
|
|
1423
|
-
const handler = window.__opensiteNavigationHandler;
|
|
1424
|
-
if (typeof handler === "function") {
|
|
1425
|
-
try {
|
|
1426
|
-
const handled = handler(normalizedHref, event.nativeEvent || event);
|
|
1427
|
-
if (handled !== false) {
|
|
1428
|
-
event.preventDefault();
|
|
1429
|
-
}
|
|
1430
|
-
} catch (error) {
|
|
1431
|
-
console.error("Error in navigation handler:", error);
|
|
1432
|
-
}
|
|
1433
|
-
}
|
|
1434
|
-
}
|
|
1435
|
-
}
|
|
1436
|
-
},
|
|
1437
|
-
[onClick, shouldUseRouter, normalizedHref]
|
|
1438
2014
|
);
|
|
1439
|
-
return {
|
|
1440
|
-
linkType,
|
|
1441
|
-
normalizedHref,
|
|
1442
|
-
target,
|
|
1443
|
-
rel,
|
|
1444
|
-
isExternal,
|
|
1445
|
-
isInternal,
|
|
1446
|
-
shouldUseRouter,
|
|
1447
|
-
handleClick
|
|
1448
|
-
};
|
|
1449
2015
|
}
|
|
1450
|
-
|
|
1451
|
-
(
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
size,
|
|
1458
|
-
asButton = false,
|
|
1459
|
-
fallbackComponentType = "span",
|
|
1460
|
-
componentType,
|
|
1461
|
-
"aria-label": ariaLabel,
|
|
1462
|
-
"aria-describedby": ariaDescribedby,
|
|
1463
|
-
id,
|
|
1464
|
-
...props
|
|
1465
|
-
}, ref) => {
|
|
1466
|
-
const navigation = useNavigation({ href, onClick });
|
|
1467
|
-
const {
|
|
1468
|
-
normalizedHref,
|
|
1469
|
-
target,
|
|
1470
|
-
rel,
|
|
1471
|
-
linkType,
|
|
1472
|
-
isInternal,
|
|
1473
|
-
isExternal,
|
|
1474
|
-
handleClick
|
|
1475
|
-
} = navigation;
|
|
1476
|
-
const shouldRenderLink = normalizedHref && linkType !== "none";
|
|
1477
|
-
const shouldRenderButton = !shouldRenderLink && onClick;
|
|
1478
|
-
const effectiveComponentType = componentType || (shouldRenderLink ? "a" : shouldRenderButton ? "button" : fallbackComponentType);
|
|
1479
|
-
const finalComponentType = isInternal && shouldRenderLink ? "a" : effectiveComponentType;
|
|
1480
|
-
const shouldApplyButtonStyles = asButton || variant || size;
|
|
1481
|
-
const combinedClassName = cn(
|
|
1482
|
-
shouldApplyButtonStyles && buttonVariants({ variant, size }),
|
|
1483
|
-
className
|
|
1484
|
-
);
|
|
1485
|
-
const dataProps = Object.fromEntries(
|
|
1486
|
-
Object.entries(props).filter(([key]) => key.startsWith("data-"))
|
|
1487
|
-
);
|
|
1488
|
-
const buttonDataAttributes = shouldApplyButtonStyles ? {
|
|
1489
|
-
"data-slot": "button",
|
|
1490
|
-
"data-variant": variant ?? "default",
|
|
1491
|
-
"data-size": size ?? "default"
|
|
1492
|
-
} : {};
|
|
1493
|
-
const commonProps = {
|
|
1494
|
-
className: combinedClassName,
|
|
1495
|
-
onClick: handleClick,
|
|
1496
|
-
"aria-label": ariaLabel,
|
|
1497
|
-
"aria-describedby": ariaDescribedby,
|
|
1498
|
-
id,
|
|
1499
|
-
...dataProps,
|
|
1500
|
-
...buttonDataAttributes
|
|
1501
|
-
};
|
|
1502
|
-
if (finalComponentType === "a" && shouldRenderLink) {
|
|
1503
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1504
|
-
"a",
|
|
1505
|
-
{
|
|
1506
|
-
ref,
|
|
1507
|
-
href: normalizedHref,
|
|
1508
|
-
target,
|
|
1509
|
-
rel,
|
|
1510
|
-
...commonProps,
|
|
1511
|
-
...props,
|
|
1512
|
-
children
|
|
1513
|
-
}
|
|
1514
|
-
);
|
|
2016
|
+
function CardTitle({ className, ...props }) {
|
|
2017
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2018
|
+
"div",
|
|
2019
|
+
{
|
|
2020
|
+
"data-slot": "card-title",
|
|
2021
|
+
className: cn("leading-none font-semibold", className),
|
|
2022
|
+
...props
|
|
1515
2023
|
}
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
}
|
|
1526
|
-
);
|
|
2024
|
+
);
|
|
2025
|
+
}
|
|
2026
|
+
function CardDescription({ className, ...props }) {
|
|
2027
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2028
|
+
"div",
|
|
2029
|
+
{
|
|
2030
|
+
"data-slot": "card-description",
|
|
2031
|
+
className: cn("text-muted-foreground text-sm", className),
|
|
2032
|
+
...props
|
|
1527
2033
|
}
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
2034
|
+
);
|
|
2035
|
+
}
|
|
2036
|
+
function CardContent({ className, ...props }) {
|
|
2037
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2038
|
+
"div",
|
|
2039
|
+
{
|
|
2040
|
+
"data-slot": "card-content",
|
|
2041
|
+
className: cn("px-6", className),
|
|
2042
|
+
...props
|
|
1537
2043
|
}
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
2044
|
+
);
|
|
2045
|
+
}
|
|
2046
|
+
function CardFooter({ className, ...props }) {
|
|
2047
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2048
|
+
"div",
|
|
2049
|
+
{
|
|
2050
|
+
"data-slot": "card-footer",
|
|
2051
|
+
className: cn("flex items-center px-6 [.border-t]:pt-6", className),
|
|
2052
|
+
...props
|
|
2053
|
+
}
|
|
2054
|
+
);
|
|
2055
|
+
}
|
|
2056
|
+
var badgeVariants = classVarianceAuthority.cva(
|
|
2057
|
+
"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",
|
|
2058
|
+
{
|
|
2059
|
+
variants: {
|
|
2060
|
+
variant: {
|
|
2061
|
+
default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
|
2062
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
|
2063
|
+
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",
|
|
2064
|
+
outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
|
|
1544
2065
|
}
|
|
1545
|
-
|
|
2066
|
+
},
|
|
2067
|
+
defaultVariants: {
|
|
2068
|
+
variant: "default"
|
|
2069
|
+
}
|
|
1546
2070
|
}
|
|
1547
2071
|
);
|
|
1548
|
-
|
|
2072
|
+
function Badge({
|
|
2073
|
+
className,
|
|
2074
|
+
variant,
|
|
2075
|
+
asChild = false,
|
|
2076
|
+
...props
|
|
2077
|
+
}) {
|
|
2078
|
+
const Comp = asChild ? reactSlot.Slot : "span";
|
|
2079
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2080
|
+
Comp,
|
|
2081
|
+
{
|
|
2082
|
+
"data-slot": "badge",
|
|
2083
|
+
className: cn(badgeVariants({ variant }), className),
|
|
2084
|
+
...props
|
|
2085
|
+
}
|
|
2086
|
+
);
|
|
2087
|
+
}
|
|
2088
|
+
function Popover({
|
|
2089
|
+
...props
|
|
2090
|
+
}) {
|
|
2091
|
+
return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Root, { "data-slot": "popover", ...props });
|
|
2092
|
+
}
|
|
2093
|
+
function PopoverTrigger({
|
|
2094
|
+
...props
|
|
2095
|
+
}) {
|
|
2096
|
+
return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Trigger, { "data-slot": "popover-trigger", ...props });
|
|
2097
|
+
}
|
|
2098
|
+
function PopoverContent({
|
|
2099
|
+
className,
|
|
2100
|
+
align = "center",
|
|
2101
|
+
sideOffset = 4,
|
|
2102
|
+
...props
|
|
2103
|
+
}) {
|
|
2104
|
+
return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2105
|
+
PopoverPrimitive__namespace.Content,
|
|
2106
|
+
{
|
|
2107
|
+
"data-slot": "popover-content",
|
|
2108
|
+
align,
|
|
2109
|
+
sideOffset,
|
|
2110
|
+
className: cn(
|
|
2111
|
+
"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",
|
|
2112
|
+
className
|
|
2113
|
+
),
|
|
2114
|
+
...props
|
|
2115
|
+
}
|
|
2116
|
+
) });
|
|
2117
|
+
}
|
|
2118
|
+
var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
|
|
2119
|
+
function DynamicIcon({ apiKey, ...props }) {
|
|
2120
|
+
return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
2121
|
+
}
|
|
1549
2122
|
var BUTTON_SIZES = {
|
|
1550
2123
|
sm: { buttonSize: "size-8", iconSize: 16 },
|
|
1551
2124
|
md: { buttonSize: "size-10", iconSize: 20 },
|
|
@@ -1637,7 +2210,7 @@ var platformIconMap = {
|
|
|
1637
2210
|
dribbble: "cib/dribbble",
|
|
1638
2211
|
unknown: "icon-park-solid/circular-connection"
|
|
1639
2212
|
};
|
|
1640
|
-
var SocialLinkIcon =
|
|
2213
|
+
var SocialLinkIcon = React5__namespace.forwardRef(
|
|
1641
2214
|
({
|
|
1642
2215
|
platformName,
|
|
1643
2216
|
label,
|
|
@@ -1650,13 +2223,13 @@ var SocialLinkIcon = React4__namespace.forwardRef(
|
|
|
1650
2223
|
...pressableProps
|
|
1651
2224
|
}, ref) => {
|
|
1652
2225
|
const platform = usePlatformFromUrl.usePlatformFromUrl(href);
|
|
1653
|
-
const smartPlatformName =
|
|
2226
|
+
const smartPlatformName = React5__namespace.useMemo(() => {
|
|
1654
2227
|
return platform || platformName;
|
|
1655
2228
|
}, [platform, platformName]);
|
|
1656
|
-
const iconName =
|
|
2229
|
+
const iconName = React5__namespace.useMemo(() => {
|
|
1657
2230
|
return iconNameOverride || platformIconMap[smartPlatformName];
|
|
1658
2231
|
}, [iconNameOverride, smartPlatformName]);
|
|
1659
|
-
const accessibleLabel =
|
|
2232
|
+
const accessibleLabel = React5__namespace.useMemo(() => {
|
|
1660
2233
|
return label || platformName;
|
|
1661
2234
|
}, [label, platformName]);
|
|
1662
2235
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1733,12 +2306,12 @@ function TextInner({ as, className, children, ...props }, ref) {
|
|
|
1733
2306
|
const Component = as || "span";
|
|
1734
2307
|
return /* @__PURE__ */ jsxRuntime.jsx(Component, { ref, className: cn(className), ...props, children });
|
|
1735
2308
|
}
|
|
1736
|
-
var Text =
|
|
2309
|
+
var Text = React5__namespace.forwardRef(TextInner);
|
|
1737
2310
|
Text.displayName = "Text";
|
|
1738
2311
|
function isContentTextItem(item) {
|
|
1739
|
-
return item !== null && typeof item === "object" && !
|
|
2312
|
+
return item !== null && typeof item === "object" && !React5__namespace.isValidElement(item) && "_type" in item && item._type === "text";
|
|
1740
2313
|
}
|
|
1741
|
-
var ContentGroup =
|
|
2314
|
+
var ContentGroup = React5__namespace.forwardRef(
|
|
1742
2315
|
({ items, className, children, ...props }, ref) => {
|
|
1743
2316
|
const hasContent = items && items.length > 0;
|
|
1744
2317
|
if (!hasContent) {
|
|
@@ -1751,10 +2324,10 @@ var ContentGroup = React4__namespace.forwardRef(
|
|
|
1751
2324
|
return /* @__PURE__ */ jsxRuntime.jsx(Text, { ...textProps }, idx);
|
|
1752
2325
|
}
|
|
1753
2326
|
const reactNode = item;
|
|
1754
|
-
if (
|
|
1755
|
-
return
|
|
2327
|
+
if (React5__namespace.isValidElement(reactNode)) {
|
|
2328
|
+
return React5__namespace.cloneElement(reactNode, { key: reactNode.key ?? idx });
|
|
1756
2329
|
}
|
|
1757
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2330
|
+
return /* @__PURE__ */ jsxRuntime.jsx(React5__namespace.Fragment, { children: reactNode }, idx);
|
|
1758
2331
|
}),
|
|
1759
2332
|
children
|
|
1760
2333
|
] });
|
|
@@ -1778,7 +2351,7 @@ function AlternatingBlocks({
|
|
|
1778
2351
|
pattern,
|
|
1779
2352
|
patternOpacity
|
|
1780
2353
|
}) {
|
|
1781
|
-
const sectionsContent =
|
|
2354
|
+
const sectionsContent = React5.useMemo(() => {
|
|
1782
2355
|
if (sectionsSlot) return sectionsSlot;
|
|
1783
2356
|
if (!sections || sections.length === 0) return null;
|
|
1784
2357
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("space-y-12", sectionsClassName), children: sections.map((section, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -1822,7 +2395,7 @@ function AlternatingBlocks({
|
|
|
1822
2395
|
sectionContentClassName,
|
|
1823
2396
|
sectionMediaClassName
|
|
1824
2397
|
]);
|
|
1825
|
-
const headerItems =
|
|
2398
|
+
const headerItems = React5.useMemo(() => {
|
|
1826
2399
|
const items = [];
|
|
1827
2400
|
if (subtitle) {
|
|
1828
2401
|
items.push(
|
|
@@ -1891,7 +2464,7 @@ function AboutSplitHero({
|
|
|
1891
2464
|
patternOpacity,
|
|
1892
2465
|
directionConfig = { desktop: "mediaRight", mobile: "mediaTop" }
|
|
1893
2466
|
}) {
|
|
1894
|
-
const ctaContent =
|
|
2467
|
+
const ctaContent = React5.useMemo(() => {
|
|
1895
2468
|
if (ctaSlot) return ctaSlot;
|
|
1896
2469
|
if (!ctaAction) return null;
|
|
1897
2470
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -1913,7 +2486,7 @@ function AboutSplitHero({
|
|
|
1913
2486
|
}
|
|
1914
2487
|
);
|
|
1915
2488
|
}, [ctaSlot, ctaAction, ctaClassName]);
|
|
1916
|
-
const bgColorClass =
|
|
2489
|
+
const bgColorClass = React5.useMemo(() => {
|
|
1917
2490
|
switch (background) {
|
|
1918
2491
|
case "dark":
|
|
1919
2492
|
return "bg-foreground text-background";
|
|
@@ -2041,7 +2614,7 @@ function AboutMissionPrinciples({
|
|
|
2041
2614
|
pattern,
|
|
2042
2615
|
patternOpacity
|
|
2043
2616
|
}) {
|
|
2044
|
-
const missionActionContent =
|
|
2617
|
+
const missionActionContent = React5.useMemo(() => {
|
|
2045
2618
|
if (missionActionSlot) return missionActionSlot;
|
|
2046
2619
|
if (!missionAction) return null;
|
|
2047
2620
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("pt-2", missionActionClassName), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2066,7 +2639,7 @@ function AboutMissionPrinciples({
|
|
|
2066
2639
|
}
|
|
2067
2640
|
) });
|
|
2068
2641
|
}, [missionActionSlot, missionAction, missionActionClassName]);
|
|
2069
|
-
const principlesContent =
|
|
2642
|
+
const principlesContent = React5.useMemo(() => {
|
|
2070
2643
|
if (principlesSlot) return principlesSlot;
|
|
2071
2644
|
if (!principles || principles.length === 0) return null;
|
|
2072
2645
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2104,7 +2677,7 @@ function AboutMissionPrinciples({
|
|
|
2104
2677
|
}
|
|
2105
2678
|
);
|
|
2106
2679
|
}, [principlesSlot, principles, principlesClassName]);
|
|
2107
|
-
const visionActionContent =
|
|
2680
|
+
const visionActionContent = React5.useMemo(() => {
|
|
2108
2681
|
if (visionActionSlot) return visionActionSlot;
|
|
2109
2682
|
if (!visionAction) return null;
|
|
2110
2683
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2279,11 +2852,11 @@ function AboutExpandableValues({
|
|
|
2279
2852
|
pattern,
|
|
2280
2853
|
patternOpacity
|
|
2281
2854
|
}) {
|
|
2282
|
-
const [expandedValue, setExpandedValue] =
|
|
2283
|
-
const toggleExpand =
|
|
2855
|
+
const [expandedValue, setExpandedValue] = React5__namespace.useState(null);
|
|
2856
|
+
const toggleExpand = React5.useCallback((id) => {
|
|
2284
2857
|
setExpandedValue((prev) => prev === id ? null : id);
|
|
2285
2858
|
}, []);
|
|
2286
|
-
|
|
2859
|
+
React5.useMemo(() => {
|
|
2287
2860
|
if (actionsSlot) return actionsSlot;
|
|
2288
2861
|
if (!actions || actions.length === 0) return null;
|
|
2289
2862
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actions.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2299,7 +2872,7 @@ function AboutExpandableValues({
|
|
|
2299
2872
|
idx
|
|
2300
2873
|
)) });
|
|
2301
2874
|
}, [actionsSlot, actions, actionsClassName]);
|
|
2302
|
-
const valuesContent =
|
|
2875
|
+
const valuesContent = React5.useMemo(() => {
|
|
2303
2876
|
if (valuesSlot) return valuesSlot;
|
|
2304
2877
|
if (!values || values.length === 0) return null;
|
|
2305
2878
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid grid-cols-1 gap-6 mt-8", valuesClassName), children: values.map((value) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2515,17 +3088,17 @@ function CommunityInitiatives({
|
|
|
2515
3088
|
pattern,
|
|
2516
3089
|
patternOpacity
|
|
2517
3090
|
}) {
|
|
2518
|
-
const [activeCategory, setActiveCategory] =
|
|
3091
|
+
const [activeCategory, setActiveCategory] = React5__namespace.useState(
|
|
2519
3092
|
categories?.[0]?.id || ""
|
|
2520
3093
|
);
|
|
2521
3094
|
const currentCategory = categories?.find((category) => category.id === activeCategory) || categories?.[0];
|
|
2522
|
-
const handleCategoryChange =
|
|
3095
|
+
const handleCategoryChange = React5.useCallback(
|
|
2523
3096
|
(e) => {
|
|
2524
3097
|
setActiveCategory(e.target.value);
|
|
2525
3098
|
},
|
|
2526
3099
|
[]
|
|
2527
3100
|
);
|
|
2528
|
-
const categoriesContent =
|
|
3101
|
+
const categoriesContent = React5.useMemo(() => {
|
|
2529
3102
|
if (categoriesSlot) return categoriesSlot;
|
|
2530
3103
|
if (!categories || categories.length === 0) return null;
|
|
2531
3104
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2779,10 +3352,10 @@ function AboutCultureTabs({
|
|
|
2779
3352
|
patternOpacity
|
|
2780
3353
|
}) {
|
|
2781
3354
|
const resolvedAspects = aspects ?? [];
|
|
2782
|
-
const [activeTab, setActiveTab] =
|
|
3355
|
+
const [activeTab, setActiveTab] = React5__namespace.useState(
|
|
2783
3356
|
resolvedAspects[0]?.id || ""
|
|
2784
3357
|
);
|
|
2785
|
-
const headerItems =
|
|
3358
|
+
const headerItems = React5.useMemo(() => {
|
|
2786
3359
|
const items = [];
|
|
2787
3360
|
if (badgeText) {
|
|
2788
3361
|
if (typeof badgeText === "string") {
|
|
@@ -2829,7 +3402,7 @@ function AboutCultureTabs({
|
|
|
2829
3402
|
description,
|
|
2830
3403
|
descriptionClassName
|
|
2831
3404
|
]);
|
|
2832
|
-
const ctaImagesContent =
|
|
3405
|
+
const ctaImagesContent = React5.useMemo(() => {
|
|
2833
3406
|
if (ctaImagesSlot) return ctaImagesSlot;
|
|
2834
3407
|
if (!ctaImages || ctaImages.length === 0) return null;
|
|
2835
3408
|
return ctaImages.map((src, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2995,7 +3568,7 @@ function MediaHoverCtas({
|
|
|
2995
3568
|
optixFlowConfig
|
|
2996
3569
|
}) {
|
|
2997
3570
|
const resolvedItems = items ?? [];
|
|
2998
|
-
const itemsContent =
|
|
3571
|
+
const itemsContent = React5.useMemo(() => {
|
|
2999
3572
|
if (itemsSlot) return itemsSlot;
|
|
3000
3573
|
return resolvedItems.map((item, index) => {
|
|
3001
3574
|
const CardComponent = item.cardHref ? "a" : "div";
|
|
@@ -3085,13 +3658,13 @@ function BannerAnnouncementDismissible({
|
|
|
3085
3658
|
actionsClassName,
|
|
3086
3659
|
dismissButtonClassName
|
|
3087
3660
|
}) {
|
|
3088
|
-
const [isVisible, setIsVisible] =
|
|
3661
|
+
const [isVisible, setIsVisible] = React5.useState(true);
|
|
3089
3662
|
const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
|
|
3090
|
-
const handleDismiss =
|
|
3663
|
+
const handleDismiss = React5.useCallback(() => {
|
|
3091
3664
|
setIsVisible(false);
|
|
3092
3665
|
onDismiss?.();
|
|
3093
3666
|
}, [onDismiss]);
|
|
3094
|
-
const actionsContent =
|
|
3667
|
+
const actionsContent = React5.useMemo(() => {
|
|
3095
3668
|
if (actionsSlot) return actionsSlot;
|
|
3096
3669
|
if (!actions || actions.length === 0) return null;
|
|
3097
3670
|
return actions.map((action, index) => {
|
|
@@ -3119,7 +3692,7 @@ function BannerAnnouncementDismissible({
|
|
|
3119
3692
|
);
|
|
3120
3693
|
});
|
|
3121
3694
|
}, [actions, actionsSlot]);
|
|
3122
|
-
const iconContent =
|
|
3695
|
+
const iconContent = React5.useMemo(() => {
|
|
3123
3696
|
if (icon) return icon;
|
|
3124
3697
|
if (!iconName) return null;
|
|
3125
3698
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3131,11 +3704,11 @@ function BannerAnnouncementDismissible({
|
|
|
3131
3704
|
}
|
|
3132
3705
|
);
|
|
3133
3706
|
}, [icon, iconName, iconClassName]);
|
|
3134
|
-
const dismissIconContent =
|
|
3707
|
+
const dismissIconContent = React5.useMemo(() => {
|
|
3135
3708
|
if (dismissIcon) return dismissIcon;
|
|
3136
3709
|
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
|
|
3137
3710
|
}, [dismissIcon]);
|
|
3138
|
-
const messageContent =
|
|
3711
|
+
const messageContent = React5.useMemo(() => {
|
|
3139
3712
|
if (!message) return null;
|
|
3140
3713
|
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 });
|
|
3141
3714
|
}, [message, messageClassName]);
|
|
@@ -3181,12 +3754,12 @@ function BannerCountdownSale({
|
|
|
3181
3754
|
separatorClassName
|
|
3182
3755
|
}) {
|
|
3183
3756
|
const targetTime = endTime;
|
|
3184
|
-
const [timeLeft, setTimeLeft] =
|
|
3757
|
+
const [timeLeft, setTimeLeft] = React5.useState({
|
|
3185
3758
|
hours: 0,
|
|
3186
3759
|
minutes: 0,
|
|
3187
3760
|
seconds: 0
|
|
3188
3761
|
});
|
|
3189
|
-
|
|
3762
|
+
React5.useEffect(() => {
|
|
3190
3763
|
if (!targetTime) {
|
|
3191
3764
|
return;
|
|
3192
3765
|
}
|
|
@@ -3209,8 +3782,8 @@ function BannerCountdownSale({
|
|
|
3209
3782
|
}, 1e3);
|
|
3210
3783
|
return () => clearInterval(timer);
|
|
3211
3784
|
}, [targetTime]);
|
|
3212
|
-
const pad =
|
|
3213
|
-
const timerContent =
|
|
3785
|
+
const pad = React5.useCallback((n) => n.toString().padStart(2, "0"), []);
|
|
3786
|
+
const timerContent = React5.useMemo(() => {
|
|
3214
3787
|
if (timerSlot) return timerSlot;
|
|
3215
3788
|
if (renderTimer) return renderTimer(timeLeft);
|
|
3216
3789
|
if (!targetTime) return null;
|
|
@@ -3222,11 +3795,11 @@ function BannerCountdownSale({
|
|
|
3222
3795
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("rounded bg-destructive px-2 py-0.5", timeUnitClassName), children: pad(timeLeft.seconds) })
|
|
3223
3796
|
] });
|
|
3224
3797
|
}, [timerSlot, renderTimer, timeLeft, timerClassName, timeUnitClassName, separatorClassName, pad, targetTime]);
|
|
3225
|
-
const messageContent =
|
|
3798
|
+
const messageContent = React5.useMemo(() => {
|
|
3226
3799
|
if (!message) return null;
|
|
3227
3800
|
return typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-medium", messageClassName), children: message }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: messageClassName, children: message });
|
|
3228
3801
|
}, [message, messageClassName]);
|
|
3229
|
-
const descriptionContent =
|
|
3802
|
+
const descriptionContent = React5.useMemo(() => {
|
|
3230
3803
|
if (!description) return null;
|
|
3231
3804
|
return typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-destructive-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description });
|
|
3232
3805
|
}, [description, descriptionClassName]);
|
|
@@ -3255,12 +3828,12 @@ function BannerDeliveryCountdown({
|
|
|
3255
3828
|
deliveryDateClassName
|
|
3256
3829
|
}) {
|
|
3257
3830
|
const targetTime = cutoffTime;
|
|
3258
|
-
const [timeLeft, setTimeLeft] =
|
|
3831
|
+
const [timeLeft, setTimeLeft] = React5.useState({
|
|
3259
3832
|
hours: 0,
|
|
3260
3833
|
minutes: 0,
|
|
3261
3834
|
seconds: 0
|
|
3262
3835
|
});
|
|
3263
|
-
|
|
3836
|
+
React5.useEffect(() => {
|
|
3264
3837
|
if (!targetTime) {
|
|
3265
3838
|
return;
|
|
3266
3839
|
}
|
|
@@ -3283,13 +3856,13 @@ function BannerDeliveryCountdown({
|
|
|
3283
3856
|
}, 1e3);
|
|
3284
3857
|
return () => clearInterval(timer);
|
|
3285
3858
|
}, [targetTime]);
|
|
3286
|
-
const pad =
|
|
3287
|
-
const iconContent =
|
|
3859
|
+
const pad = React5.useCallback((n) => n.toString().padStart(2, "0"), []);
|
|
3860
|
+
const iconContent = React5.useMemo(() => {
|
|
3288
3861
|
if (icon) return icon;
|
|
3289
3862
|
if (!iconName) return null;
|
|
3290
3863
|
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: iconName, size: 16, className: iconClassName });
|
|
3291
3864
|
}, [icon, iconName, iconClassName]);
|
|
3292
|
-
const timerContent =
|
|
3865
|
+
const timerContent = React5.useMemo(() => {
|
|
3293
3866
|
if (timerSlot) return timerSlot;
|
|
3294
3867
|
if (renderTimer) return renderTimer(timeLeft);
|
|
3295
3868
|
if (!targetTime) return null;
|
|
@@ -3301,18 +3874,18 @@ function BannerDeliveryCountdown({
|
|
|
3301
3874
|
pad(timeLeft.seconds)
|
|
3302
3875
|
] });
|
|
3303
3876
|
}, [timerSlot, renderTimer, timeLeft, timerClassName, pad, targetTime]);
|
|
3304
|
-
const deliveryDateContent =
|
|
3877
|
+
const deliveryDateContent = React5.useMemo(() => {
|
|
3305
3878
|
if (!deliveryDate) return null;
|
|
3306
3879
|
return typeof deliveryDate === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-semibold", deliveryDateClassName), children: deliveryDate }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: deliveryDateClassName, children: deliveryDate });
|
|
3307
3880
|
}, [deliveryDate, deliveryDateClassName]);
|
|
3308
|
-
const messageParts =
|
|
3881
|
+
const messageParts = React5.useMemo(() => {
|
|
3309
3882
|
return [prefixText, timerContent, middleText, deliveryDateContent].filter(
|
|
3310
3883
|
(part) => part !== null && part !== void 0
|
|
3311
3884
|
);
|
|
3312
3885
|
}, [prefixText, timerContent, middleText, deliveryDateContent]);
|
|
3313
3886
|
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: [
|
|
3314
3887
|
iconContent,
|
|
3315
|
-
messageParts.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { children: messageParts.map((part, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3888
|
+
messageParts.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { children: messageParts.map((part, index) => /* @__PURE__ */ jsxRuntime.jsxs(React5__namespace.Fragment, { children: [
|
|
3316
3889
|
index > 0 ? " " : null,
|
|
3317
3890
|
part
|
|
3318
3891
|
] }, index)) })
|
|
@@ -3334,7 +3907,7 @@ function BannerEventPromo({
|
|
|
3334
3907
|
eventDetailsClassName,
|
|
3335
3908
|
actionsClassName
|
|
3336
3909
|
}) {
|
|
3337
|
-
const actionsContent =
|
|
3910
|
+
const actionsContent = React5.useMemo(() => {
|
|
3338
3911
|
if (actionsSlot) return actionsSlot;
|
|
3339
3912
|
if (!actions || actions.length === 0) return null;
|
|
3340
3913
|
return actions.map((action, index) => {
|
|
@@ -3362,7 +3935,7 @@ function BannerEventPromo({
|
|
|
3362
3935
|
);
|
|
3363
3936
|
});
|
|
3364
3937
|
}, [actions, actionsSlot]);
|
|
3365
|
-
const separatorContent =
|
|
3938
|
+
const separatorContent = React5.useMemo(() => {
|
|
3366
3939
|
if (separator) return separator;
|
|
3367
3940
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3368
3941
|
"svg",
|
|
@@ -3374,11 +3947,11 @@ function BannerEventPromo({
|
|
|
3374
3947
|
}
|
|
3375
3948
|
);
|
|
3376
3949
|
}, [separator, separatorClassName]);
|
|
3377
|
-
const eventNameContent =
|
|
3950
|
+
const eventNameContent = React5.useMemo(() => {
|
|
3378
3951
|
if (!eventName) return null;
|
|
3379
3952
|
return typeof eventName === "string" ? /* @__PURE__ */ jsxRuntime.jsx("strong", { className: cn("font-semibold", eventNameClassName), children: eventName }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: eventNameClassName, children: eventName });
|
|
3380
3953
|
}, [eventName, eventNameClassName]);
|
|
3381
|
-
const eventDetailsContent =
|
|
3954
|
+
const eventDetailsContent = React5.useMemo(() => {
|
|
3382
3955
|
if (!eventDetails) return null;
|
|
3383
3956
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: eventDetailsClassName, children: eventDetails });
|
|
3384
3957
|
}, [eventDetails, eventDetailsClassName]);
|
|
@@ -3415,22 +3988,22 @@ function BannerFloatingOffer({
|
|
|
3415
3988
|
}) {
|
|
3416
3989
|
const isControlled = open !== void 0;
|
|
3417
3990
|
const initialOpen = defaultOpen ?? true;
|
|
3418
|
-
const [internalOpen, setInternalOpen] =
|
|
3991
|
+
const [internalOpen, setInternalOpen] = React5.useState(initialOpen);
|
|
3419
3992
|
const isVisible = isControlled ? open : internalOpen;
|
|
3420
3993
|
const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
|
|
3421
3994
|
const isDismissible = dismissible ?? false;
|
|
3422
|
-
|
|
3995
|
+
React5.useEffect(() => {
|
|
3423
3996
|
if (!isControlled && defaultOpen !== internalOpen) {
|
|
3424
3997
|
setInternalOpen(initialOpen);
|
|
3425
3998
|
}
|
|
3426
3999
|
}, [defaultOpen, initialOpen, isControlled, internalOpen]);
|
|
3427
|
-
const handleDismiss =
|
|
4000
|
+
const handleDismiss = React5.useCallback(() => {
|
|
3428
4001
|
if (!isControlled) {
|
|
3429
4002
|
setInternalOpen(false);
|
|
3430
4003
|
}
|
|
3431
4004
|
onOpenChange?.(false);
|
|
3432
4005
|
}, [isControlled, onOpenChange]);
|
|
3433
|
-
const actionsContent =
|
|
4006
|
+
const actionsContent = React5.useMemo(() => {
|
|
3434
4007
|
if (actionsSlot) return actionsSlot;
|
|
3435
4008
|
if (!actions || actions.length === 0) return null;
|
|
3436
4009
|
return actions.map((action, index) => {
|
|
@@ -3458,7 +4031,7 @@ function BannerFloatingOffer({
|
|
|
3458
4031
|
);
|
|
3459
4032
|
});
|
|
3460
4033
|
}, [actions, actionsSlot]);
|
|
3461
|
-
const separatorContent =
|
|
4034
|
+
const separatorContent = React5.useMemo(() => {
|
|
3462
4035
|
if (separator) return separator;
|
|
3463
4036
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3464
4037
|
"svg",
|
|
@@ -3470,15 +4043,15 @@ function BannerFloatingOffer({
|
|
|
3470
4043
|
}
|
|
3471
4044
|
);
|
|
3472
4045
|
}, [separator, separatorClassName]);
|
|
3473
|
-
const dismissIconContent =
|
|
4046
|
+
const dismissIconContent = React5.useMemo(() => {
|
|
3474
4047
|
if (dismissIcon) return dismissIcon;
|
|
3475
4048
|
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
|
|
3476
4049
|
}, [dismissIcon]);
|
|
3477
|
-
const offerTitleContent =
|
|
4050
|
+
const offerTitleContent = React5.useMemo(() => {
|
|
3478
4051
|
if (!offerTitle) return null;
|
|
3479
4052
|
return typeof offerTitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx("strong", { className: cn("font-semibold", offerTitleClassName), children: offerTitle }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: offerTitleClassName, children: offerTitle });
|
|
3480
4053
|
}, [offerTitle, offerTitleClassName]);
|
|
3481
|
-
const offerDescriptionContent =
|
|
4054
|
+
const offerDescriptionContent = React5.useMemo(() => {
|
|
3482
4055
|
if (!offerDescription) return null;
|
|
3483
4056
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: offerDescriptionClassName, children: offerDescription });
|
|
3484
4057
|
}, [offerDescription, offerDescriptionClassName]);
|
|
@@ -3539,13 +4112,13 @@ function BannerGdprRights({
|
|
|
3539
4112
|
actionsClassName,
|
|
3540
4113
|
dismissButtonClassName
|
|
3541
4114
|
}) {
|
|
3542
|
-
const [isVisible, setIsVisible] =
|
|
4115
|
+
const [isVisible, setIsVisible] = React5.useState(true);
|
|
3543
4116
|
const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
|
|
3544
|
-
const handleDismiss =
|
|
4117
|
+
const handleDismiss = React5.useCallback(() => {
|
|
3545
4118
|
setIsVisible(false);
|
|
3546
4119
|
onDismiss?.();
|
|
3547
4120
|
}, [onDismiss]);
|
|
3548
|
-
const iconContent =
|
|
4121
|
+
const iconContent = React5.useMemo(() => {
|
|
3549
4122
|
if (icon) return icon;
|
|
3550
4123
|
if (!iconName) return null;
|
|
3551
4124
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3557,7 +4130,7 @@ function BannerGdprRights({
|
|
|
3557
4130
|
}
|
|
3558
4131
|
);
|
|
3559
4132
|
}, [icon, iconName, iconClassName]);
|
|
3560
|
-
const actionsContent =
|
|
4133
|
+
const actionsContent = React5.useMemo(() => {
|
|
3561
4134
|
if (actionsSlot) return actionsSlot;
|
|
3562
4135
|
if (!actions || actions.length === 0) return null;
|
|
3563
4136
|
return actions.map((action, index) => {
|
|
@@ -3584,15 +4157,15 @@ function BannerGdprRights({
|
|
|
3584
4157
|
);
|
|
3585
4158
|
});
|
|
3586
4159
|
}, [actions, actionsSlot]);
|
|
3587
|
-
const dismissIconContent =
|
|
4160
|
+
const dismissIconContent = React5.useMemo(() => {
|
|
3588
4161
|
if (dismissIcon) return dismissIcon;
|
|
3589
4162
|
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
|
|
3590
4163
|
}, [dismissIcon]);
|
|
3591
|
-
const titleContent =
|
|
4164
|
+
const titleContent = React5.useMemo(() => {
|
|
3592
4165
|
if (!title) return null;
|
|
3593
4166
|
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 });
|
|
3594
4167
|
}, [title, titleClassName]);
|
|
3595
|
-
const descriptionContent =
|
|
4168
|
+
const descriptionContent = React5.useMemo(() => {
|
|
3596
4169
|
if (!description && !actionsContent) return null;
|
|
3597
4170
|
return /* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: [
|
|
3598
4171
|
description,
|
|
@@ -3646,13 +4219,13 @@ function BannerPrivacyNotice({
|
|
|
3646
4219
|
actionsClassName,
|
|
3647
4220
|
dismissButtonClassName
|
|
3648
4221
|
}) {
|
|
3649
|
-
const [isVisible, setIsVisible] =
|
|
4222
|
+
const [isVisible, setIsVisible] = React5.useState(true);
|
|
3650
4223
|
const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
|
|
3651
|
-
const handleDismiss =
|
|
4224
|
+
const handleDismiss = React5.useCallback(() => {
|
|
3652
4225
|
setIsVisible(false);
|
|
3653
4226
|
onDismiss?.();
|
|
3654
4227
|
}, [onDismiss]);
|
|
3655
|
-
const iconContent =
|
|
4228
|
+
const iconContent = React5.useMemo(() => {
|
|
3656
4229
|
if (icon) return icon;
|
|
3657
4230
|
if (!iconName) return null;
|
|
3658
4231
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3664,7 +4237,7 @@ function BannerPrivacyNotice({
|
|
|
3664
4237
|
}
|
|
3665
4238
|
);
|
|
3666
4239
|
}, [icon, iconName, iconClassName]);
|
|
3667
|
-
const actionsContent =
|
|
4240
|
+
const actionsContent = React5.useMemo(() => {
|
|
3668
4241
|
if (actionsSlot) return actionsSlot;
|
|
3669
4242
|
if (!actions || actions.length === 0) return null;
|
|
3670
4243
|
return actions.map((action, index) => {
|
|
@@ -3691,15 +4264,15 @@ function BannerPrivacyNotice({
|
|
|
3691
4264
|
);
|
|
3692
4265
|
});
|
|
3693
4266
|
}, [actions, actionsSlot]);
|
|
3694
|
-
const dismissIconContent =
|
|
4267
|
+
const dismissIconContent = React5.useMemo(() => {
|
|
3695
4268
|
if (dismissIcon) return dismissIcon;
|
|
3696
4269
|
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
|
|
3697
4270
|
}, [dismissIcon]);
|
|
3698
|
-
const titleContent =
|
|
4271
|
+
const titleContent = React5.useMemo(() => {
|
|
3699
4272
|
if (!title) return null;
|
|
3700
4273
|
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 });
|
|
3701
4274
|
}, [title, titleClassName]);
|
|
3702
|
-
const descriptionContent =
|
|
4275
|
+
const descriptionContent = React5.useMemo(() => {
|
|
3703
4276
|
if (!description) return null;
|
|
3704
4277
|
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 });
|
|
3705
4278
|
}, [description, descriptionClassName]);
|
|
@@ -3746,7 +4319,7 @@ function BannerPromoCta({
|
|
|
3746
4319
|
discountClassName,
|
|
3747
4320
|
actionsClassName
|
|
3748
4321
|
}) {
|
|
3749
|
-
const actionsContent =
|
|
4322
|
+
const actionsContent = React5.useMemo(() => {
|
|
3750
4323
|
if (actionsSlot) return actionsSlot;
|
|
3751
4324
|
if (!actions || actions.length === 0) return null;
|
|
3752
4325
|
return actions.map((action, index) => {
|
|
@@ -3773,15 +4346,15 @@ function BannerPromoCta({
|
|
|
3773
4346
|
);
|
|
3774
4347
|
});
|
|
3775
4348
|
}, [actions, actionsSlot]);
|
|
3776
|
-
const separatorContent =
|
|
4349
|
+
const separatorContent = React5.useMemo(() => {
|
|
3777
4350
|
if (separator) return separator;
|
|
3778
4351
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("hidden sm:inline", separatorClassName), children: "\xB7" });
|
|
3779
4352
|
}, [separator, separatorClassName]);
|
|
3780
|
-
const messageContent =
|
|
4353
|
+
const messageContent = React5.useMemo(() => {
|
|
3781
4354
|
if (!message) return null;
|
|
3782
4355
|
return typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-semibold", messageClassName), children: message }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: messageClassName, children: message });
|
|
3783
4356
|
}, [message, messageClassName]);
|
|
3784
|
-
const discountContent =
|
|
4357
|
+
const discountContent = React5.useMemo(() => {
|
|
3785
4358
|
if (!discount) return null;
|
|
3786
4359
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: discountClassName, children: discount });
|
|
3787
4360
|
}, [discount, discountClassName]);
|
|
@@ -3809,13 +4382,13 @@ function BannerSocialFollow({
|
|
|
3809
4382
|
actionsClassName,
|
|
3810
4383
|
dismissButtonClassName
|
|
3811
4384
|
}) {
|
|
3812
|
-
const [isVisible, setIsVisible] =
|
|
4385
|
+
const [isVisible, setIsVisible] = React5.useState(true);
|
|
3813
4386
|
const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
|
|
3814
|
-
const handleDismiss =
|
|
4387
|
+
const handleDismiss = React5.useCallback(() => {
|
|
3815
4388
|
setIsVisible(false);
|
|
3816
4389
|
onDismiss?.();
|
|
3817
4390
|
}, [onDismiss]);
|
|
3818
|
-
const iconContent =
|
|
4391
|
+
const iconContent = React5.useMemo(() => {
|
|
3819
4392
|
if (icon) return icon;
|
|
3820
4393
|
if (!iconName) return null;
|
|
3821
4394
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3827,7 +4400,7 @@ function BannerSocialFollow({
|
|
|
3827
4400
|
}
|
|
3828
4401
|
);
|
|
3829
4402
|
}, [icon, iconName, iconClassName]);
|
|
3830
|
-
const actionsContent =
|
|
4403
|
+
const actionsContent = React5.useMemo(() => {
|
|
3831
4404
|
if (actionsSlot) return actionsSlot;
|
|
3832
4405
|
if (!actions || actions.length === 0) return null;
|
|
3833
4406
|
return actions.map((action, index) => {
|
|
@@ -3855,11 +4428,11 @@ function BannerSocialFollow({
|
|
|
3855
4428
|
);
|
|
3856
4429
|
});
|
|
3857
4430
|
}, [actions, actionsSlot]);
|
|
3858
|
-
const dismissIconContent =
|
|
4431
|
+
const dismissIconContent = React5.useMemo(() => {
|
|
3859
4432
|
if (dismissIcon) return dismissIcon;
|
|
3860
4433
|
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
|
|
3861
4434
|
}, [dismissIcon]);
|
|
3862
|
-
const messageContent =
|
|
4435
|
+
const messageContent = React5.useMemo(() => {
|
|
3863
4436
|
if (!message) return null;
|
|
3864
4437
|
return typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-medium", messageClassName), children: message }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: messageClassName, children: message });
|
|
3865
4438
|
}, [message, messageClassName]);
|
|
@@ -3907,13 +4480,13 @@ function BannerSurveyIncentive({
|
|
|
3907
4480
|
actionsClassName,
|
|
3908
4481
|
dismissButtonClassName
|
|
3909
4482
|
}) {
|
|
3910
|
-
const [isVisible, setIsVisible] =
|
|
4483
|
+
const [isVisible, setIsVisible] = React5.useState(true);
|
|
3911
4484
|
const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
|
|
3912
|
-
const handleDismiss =
|
|
4485
|
+
const handleDismiss = React5.useCallback(() => {
|
|
3913
4486
|
setIsVisible(false);
|
|
3914
4487
|
onDismiss?.();
|
|
3915
4488
|
}, [onDismiss]);
|
|
3916
|
-
const iconContent =
|
|
4489
|
+
const iconContent = React5.useMemo(() => {
|
|
3917
4490
|
if (icon) return icon;
|
|
3918
4491
|
if (!iconName) return null;
|
|
3919
4492
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3925,7 +4498,7 @@ function BannerSurveyIncentive({
|
|
|
3925
4498
|
}
|
|
3926
4499
|
);
|
|
3927
4500
|
}, [icon, iconName, iconClassName]);
|
|
3928
|
-
const actionsContent =
|
|
4501
|
+
const actionsContent = React5.useMemo(() => {
|
|
3929
4502
|
if (actionsSlot) return actionsSlot;
|
|
3930
4503
|
if (!actions || actions.length === 0) return null;
|
|
3931
4504
|
return actions.map((action, index) => {
|
|
@@ -3953,15 +4526,15 @@ function BannerSurveyIncentive({
|
|
|
3953
4526
|
);
|
|
3954
4527
|
});
|
|
3955
4528
|
}, [actions, actionsSlot]);
|
|
3956
|
-
const dismissIconContent =
|
|
4529
|
+
const dismissIconContent = React5.useMemo(() => {
|
|
3957
4530
|
if (dismissIcon) return dismissIcon;
|
|
3958
4531
|
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
|
|
3959
4532
|
}, [dismissIcon]);
|
|
3960
|
-
const titleContent =
|
|
4533
|
+
const titleContent = React5.useMemo(() => {
|
|
3961
4534
|
if (!title) return null;
|
|
3962
4535
|
return typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-medium", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: titleClassName, children: title });
|
|
3963
4536
|
}, [title, titleClassName]);
|
|
3964
|
-
const descriptionContent =
|
|
4537
|
+
const descriptionContent = React5.useMemo(() => {
|
|
3965
4538
|
if (!description) return null;
|
|
3966
4539
|
return typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: descriptionClassName, children: description });
|
|
3967
4540
|
}, [description, descriptionClassName]);
|
|
@@ -4071,7 +4644,7 @@ function FooterCopyright({
|
|
|
4071
4644
|
copyright,
|
|
4072
4645
|
className
|
|
4073
4646
|
}) {
|
|
4074
|
-
const currentYear =
|
|
4647
|
+
const currentYear = React5.useMemo(() => (/* @__PURE__ */ new Date()).getFullYear(), []);
|
|
4075
4648
|
if (!copyright) {
|
|
4076
4649
|
return null;
|
|
4077
4650
|
}
|
|
@@ -4583,8 +5156,8 @@ var BrandAttribution = ({
|
|
|
4583
5156
|
}
|
|
4584
5157
|
const { prefix = "", anchorText, href, suffix = "" } = options[optionIndex];
|
|
4585
5158
|
const ContainerEl = variant;
|
|
4586
|
-
const [trackedHref, setTrackedHref] =
|
|
4587
|
-
|
|
5159
|
+
const [trackedHref, setTrackedHref] = React5__namespace.useState(href);
|
|
5160
|
+
React5__namespace.useEffect(() => {
|
|
4588
5161
|
setTrackedHref(buildTrackedHref(href));
|
|
4589
5162
|
}, [href]);
|
|
4590
5163
|
return /* @__PURE__ */ jsxRuntime.jsxs(ContainerEl, { className: containerClassName, children: [
|
|
@@ -4704,7 +5277,7 @@ function FooterSocialNewsletter({
|
|
|
4704
5277
|
patternOpacity,
|
|
4705
5278
|
optixFlowConfig
|
|
4706
5279
|
}) {
|
|
4707
|
-
const renderForm =
|
|
5280
|
+
const renderForm = React5__namespace.useMemo(() => {
|
|
4708
5281
|
if (!formEngineSetup) return null;
|
|
4709
5282
|
const action = {
|
|
4710
5283
|
variant: "default",
|
|
@@ -4857,14 +5430,14 @@ function FooterSocialApps({
|
|
|
4857
5430
|
patternOpacity,
|
|
4858
5431
|
optixFlowConfig
|
|
4859
5432
|
}) {
|
|
4860
|
-
const sectionsContent =
|
|
5433
|
+
const sectionsContent = React5.useMemo(() => {
|
|
4861
5434
|
if (!sections || sections.length === 0) return null;
|
|
4862
5435
|
return sections.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 md:mt-0", children: [
|
|
4863
5436
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 font-bold", children: section.title }),
|
|
4864
5437
|
/* @__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)) })
|
|
4865
5438
|
] }, sectionIdx));
|
|
4866
5439
|
}, [sections]);
|
|
4867
|
-
const socialLinksContent =
|
|
5440
|
+
const socialLinksContent = React5.useMemo(() => {
|
|
4868
5441
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
4869
5442
|
return socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "font-medium", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4870
5443
|
SocialLinkIcon,
|
|
@@ -4879,7 +5452,7 @@ function FooterSocialApps({
|
|
|
4879
5452
|
}
|
|
4880
5453
|
) }, idx));
|
|
4881
5454
|
}, [socialLinks, background]);
|
|
4882
|
-
const appLinksContent =
|
|
5455
|
+
const appLinksContent = React5.useMemo(() => {
|
|
4883
5456
|
if (!appLinks || appLinks.length === 0) return null;
|
|
4884
5457
|
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(
|
|
4885
5458
|
"span",
|
|
@@ -4968,7 +5541,7 @@ function FooterSimpleCentered({
|
|
|
4968
5541
|
patternOpacity,
|
|
4969
5542
|
optixFlowConfig
|
|
4970
5543
|
}) {
|
|
4971
|
-
const sitemapContent =
|
|
5544
|
+
const sitemapContent = React5.useMemo(() => {
|
|
4972
5545
|
if (!sitemap || sitemap.length === 0) return null;
|
|
4973
5546
|
return sitemap.map((section) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(sitemapSectionClassName), children: [
|
|
4974
5547
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("mb-4 text-sm font-semibold", sitemapTitleClassName), children: section.title }),
|
|
@@ -4991,9 +5564,9 @@ function FooterSimpleCentered({
|
|
|
4991
5564
|
sitemapLinksClassName,
|
|
4992
5565
|
sitemapLinkClassName
|
|
4993
5566
|
]);
|
|
4994
|
-
const bottomLinksContent =
|
|
5567
|
+
const bottomLinksContent = React5.useMemo(() => {
|
|
4995
5568
|
if (!bottomLinks || bottomLinks.length === 0) return null;
|
|
4996
|
-
return bottomLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5569
|
+
return bottomLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsx(React5__namespace.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4997
5570
|
Pressable,
|
|
4998
5571
|
{
|
|
4999
5572
|
href: link.href,
|
|
@@ -5318,7 +5891,7 @@ function FooterNewsletterGrid({
|
|
|
5318
5891
|
patternOpacity,
|
|
5319
5892
|
optixFlowConfig
|
|
5320
5893
|
}) {
|
|
5321
|
-
const sectionsContent =
|
|
5894
|
+
const sectionsContent = React5.useMemo(() => {
|
|
5322
5895
|
if (!sections || sections.length === 0) return null;
|
|
5323
5896
|
return sections.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "col-span-2 md:col-span-1", children: [
|
|
5324
5897
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-5 font-medium", children: section.title }),
|
|
@@ -5332,7 +5905,7 @@ function FooterNewsletterGrid({
|
|
|
5332
5905
|
)) })
|
|
5333
5906
|
] }, sectionIdx));
|
|
5334
5907
|
}, [sections]);
|
|
5335
|
-
const socialLinksContent =
|
|
5908
|
+
const socialLinksContent = React5.useMemo(() => {
|
|
5336
5909
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
5337
5910
|
return socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5338
5911
|
SocialLinkIcon,
|
|
@@ -5848,7 +6421,7 @@ function FooterBackgroundCard({
|
|
|
5848
6421
|
patternOpacity,
|
|
5849
6422
|
optixFlowConfig
|
|
5850
6423
|
}) {
|
|
5851
|
-
const sectionStyle =
|
|
6424
|
+
const sectionStyle = React5.useMemo(
|
|
5852
6425
|
() => backgroundImage ? { backgroundImage: `url('${backgroundImage}')` } : void 0,
|
|
5853
6426
|
[backgroundImage]
|
|
5854
6427
|
);
|
|
@@ -6122,7 +6695,7 @@ function FooterAnimatedSocial({
|
|
|
6122
6695
|
pattern,
|
|
6123
6696
|
patternOpacity
|
|
6124
6697
|
}) {
|
|
6125
|
-
const socialLinksContent =
|
|
6698
|
+
const socialLinksContent = React5.useMemo(() => {
|
|
6126
6699
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
6127
6700
|
return socialLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6128
6701
|
framerMotion.motion.div,
|
|
@@ -6340,7 +6913,7 @@ function FooterNewsletterMinimal({
|
|
|
6340
6913
|
buttonAction,
|
|
6341
6914
|
formSlot
|
|
6342
6915
|
}) {
|
|
6343
|
-
const navLinksContent =
|
|
6916
|
+
const navLinksContent = React5__namespace.useMemo(() => {
|
|
6344
6917
|
if (!navLinks || navLinks.length === 0) return null;
|
|
6345
6918
|
return navLinks.map((item, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6346
6919
|
Pressable,
|
|
@@ -6351,7 +6924,7 @@ function FooterNewsletterMinimal({
|
|
|
6351
6924
|
}
|
|
6352
6925
|
) }, idx));
|
|
6353
6926
|
}, [navLinks, navLinkClassName]);
|
|
6354
|
-
const socialLinksContent =
|
|
6927
|
+
const socialLinksContent = React5__namespace.useMemo(() => {
|
|
6355
6928
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
6356
6929
|
return socialLinks.map((item, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6357
6930
|
SocialLinkIcon,
|
|
@@ -6367,7 +6940,7 @@ function FooterNewsletterMinimal({
|
|
|
6367
6940
|
}
|
|
6368
6941
|
) }, idx));
|
|
6369
6942
|
}, [socialLinks, socialLinkClassName]);
|
|
6370
|
-
const footerLinksContent =
|
|
6943
|
+
const footerLinksContent = React5__namespace.useMemo(() => {
|
|
6371
6944
|
if (!footerLinks || footerLinks.length === 0) return null;
|
|
6372
6945
|
return footerLinks.map((item) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6373
6946
|
Pressable,
|
|
@@ -6381,7 +6954,7 @@ function FooterNewsletterMinimal({
|
|
|
6381
6954
|
}
|
|
6382
6955
|
) }, item.label));
|
|
6383
6956
|
}, [footerLinks, footerLinkClassName]);
|
|
6384
|
-
const renderForm =
|
|
6957
|
+
const renderForm = React5__namespace.useMemo(() => {
|
|
6385
6958
|
if (formSlot) return formSlot;
|
|
6386
6959
|
if (!formEngineSetup) return null;
|
|
6387
6960
|
const defaultButtonAction = {
|
|
@@ -6616,7 +7189,7 @@ function FooterCtaSocial({
|
|
|
6616
7189
|
pattern,
|
|
6617
7190
|
patternOpacity
|
|
6618
7191
|
}) {
|
|
6619
|
-
const socialLinksContent =
|
|
7192
|
+
const socialLinksContent = React5.useMemo(() => {
|
|
6620
7193
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
6621
7194
|
return socialLinks.map((link) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6622
7195
|
SocialLinkIcon,
|
|
@@ -6734,7 +7307,7 @@ function FooterNavSocial({
|
|
|
6734
7307
|
patternOpacity,
|
|
6735
7308
|
optixFlowConfig
|
|
6736
7309
|
}) {
|
|
6737
|
-
const sectionsContent =
|
|
7310
|
+
const sectionsContent = React5.useMemo(() => {
|
|
6738
7311
|
if (!sections || sections.length === 0) return null;
|
|
6739
7312
|
return sections.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(navSectionClassName), children: [
|
|
6740
7313
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("mb-4 font-semibold", navTitleClassName), children: section.title }),
|
|
@@ -6747,7 +7320,7 @@ function FooterNavSocial({
|
|
|
6747
7320
|
navLinksClassName,
|
|
6748
7321
|
navLinkClassName
|
|
6749
7322
|
]);
|
|
6750
|
-
const socialLinksContent =
|
|
7323
|
+
const socialLinksContent = React5.useMemo(() => {
|
|
6751
7324
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
6752
7325
|
return socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6753
7326
|
SocialLinkIcon,
|
|
@@ -6762,7 +7335,7 @@ function FooterNavSocial({
|
|
|
6762
7335
|
}
|
|
6763
7336
|
) }, idx));
|
|
6764
7337
|
}, [socialLinks, socialLinkClassName]);
|
|
6765
|
-
const legalLinksContent =
|
|
7338
|
+
const legalLinksContent = React5.useMemo(() => {
|
|
6766
7339
|
if (!legalLinks || legalLinks.length === 0) return null;
|
|
6767
7340
|
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));
|
|
6768
7341
|
}, [legalLinks, legalLinkClassName]);
|
|
@@ -6927,6 +7500,16 @@ function FooterNavSocial({
|
|
|
6927
7500
|
}
|
|
6928
7501
|
);
|
|
6929
7502
|
}
|
|
7503
|
+
var useResponsiveLayout = ({
|
|
7504
|
+
directionConfig = { desktop: "mediaRight", mobile: "mediaTop" }
|
|
7505
|
+
}) => {
|
|
7506
|
+
const responsiveClassName = React5.useMemo(() => {
|
|
7507
|
+
const desktopOrder = directionConfig.desktop === "mediaRight" ? "lg:flex-row" : "lg:flex-row-reverse";
|
|
7508
|
+
const mobileOrder = directionConfig.mobile === "mediaTop" ? "flex-col-reverse" : "flex-col";
|
|
7509
|
+
return `${mobileOrder} ${desktopOrder}`;
|
|
7510
|
+
}, [directionConfig.desktop, directionConfig.mobile]);
|
|
7511
|
+
return { responsiveClassName };
|
|
7512
|
+
};
|
|
6930
7513
|
|
|
6931
7514
|
Object.defineProperty(exports, "PageSpeedFormSubmissionError", {
|
|
6932
7515
|
enumerable: true,
|
|
@@ -7001,6 +7584,7 @@ exports.FooterNewsletterMinimal = FooterNewsletterMinimal;
|
|
|
7001
7584
|
exports.FooterSimpleCentered = FooterSimpleCentered;
|
|
7002
7585
|
exports.FooterSocialApps = FooterSocialApps;
|
|
7003
7586
|
exports.FooterSocialNewsletter = FooterSocialNewsletter;
|
|
7587
|
+
exports.GeoMap = GeoMap;
|
|
7004
7588
|
exports.ImageSlider = ImageSlider;
|
|
7005
7589
|
exports.MediaHoverCtas = MediaHoverCtas;
|
|
7006
7590
|
exports.PageHeroBanner = PageHeroBanner;
|
|
@@ -7018,3 +7602,4 @@ exports.getNestedCardBg = getNestedCardBg;
|
|
|
7018
7602
|
exports.getNestedCardTextColor = getNestedCardTextColor;
|
|
7019
7603
|
exports.getTextColor = getTextColor;
|
|
7020
7604
|
exports.useNavigation = useNavigation;
|
|
7605
|
+
exports.useResponsiveLayout = useResponsiveLayout;
|