@opensite/ui 0.5.3 → 0.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/about-company-profile.cjs +11 -11
- package/dist/about-company-profile.js +12 -11
- package/dist/about-developer-profile.cjs +11 -11
- package/dist/about-developer-profile.js +12 -11
- package/dist/about-developer-story.cjs +11 -11
- package/dist/about-developer-story.js +12 -11
- package/dist/about-interactive-tabs.cjs +10 -5
- package/dist/about-interactive-tabs.js +12 -6
- package/dist/about-location-info-hero.cjs +14 -14
- package/dist/about-location-info-hero.js +15 -15
- package/dist/about-minimal-story.cjs +5 -4
- package/dist/about-minimal-story.js +6 -5
- package/dist/about-mission-dual-image.cjs +5 -5
- package/dist/about-mission-dual-image.js +6 -5
- package/dist/about-mission-features.cjs +5 -4
- package/dist/about-mission-features.js +6 -5
- package/dist/about-network-spotlight.cjs +12 -134
- package/dist/about-network-spotlight.js +13 -135
- package/dist/about-startup-team.cjs +10 -12
- package/dist/about-startup-team.js +11 -12
- package/dist/about-stats-showcase.cjs +17 -16
- package/dist/about-stats-showcase.js +17 -16
- package/dist/about-stats-sidebar.cjs +8 -7
- package/dist/about-stats-sidebar.js +8 -7
- package/dist/about-story-expertise.cjs +17 -139
- package/dist/about-story-expertise.js +18 -140
- package/dist/about-story-gallery.cjs +6 -9
- package/dist/about-story-gallery.js +6 -9
- package/dist/about-story-hero.cjs +6 -9
- package/dist/about-story-hero.js +7 -10
- package/dist/about-streamline-team.cjs +10 -10
- package/dist/about-streamline-team.js +11 -10
- package/dist/about-vision-gallery.cjs +33 -40
- package/dist/about-vision-gallery.d.cts +44 -24
- package/dist/about-vision-gallery.d.ts +44 -24
- package/dist/about-vision-gallery.js +34 -40
- package/dist/alternating-blocks.cjs +5 -5
- package/dist/alternating-blocks.js +5 -5
- package/dist/article-breadcrumb-social.cjs +35 -41
- package/dist/article-breadcrumb-social.d.cts +0 -2
- package/dist/article-breadcrumb-social.d.ts +0 -2
- package/dist/article-breadcrumb-social.js +35 -41
- package/dist/article-chapters-author.cjs +80 -80
- package/dist/article-chapters-author.js +79 -79
- package/dist/article-compact-toc.cjs +31 -30
- package/dist/article-compact-toc.js +30 -29
- package/dist/article-hero-prose.cjs +9 -9
- package/dist/article-hero-prose.d.cts +5 -5
- package/dist/article-hero-prose.d.ts +5 -5
- package/dist/article-hero-prose.js +9 -9
- package/dist/article-sidebar-sticky.cjs +12 -11
- package/dist/article-sidebar-sticky.js +12 -11
- package/dist/article-split-animated.cjs +23 -142
- package/dist/article-split-animated.js +23 -142
- package/dist/article-toc-sidebar.cjs +31 -31
- package/dist/article-toc-sidebar.js +30 -30
- package/dist/banner-announcement-dismissible.cjs +37 -17
- package/dist/banner-announcement-dismissible.d.cts +0 -2
- package/dist/banner-announcement-dismissible.d.ts +0 -2
- package/dist/banner-announcement-dismissible.js +38 -18
- package/dist/banner-countdown-sale.cjs +19 -11
- package/dist/banner-countdown-sale.d.cts +0 -1
- package/dist/banner-countdown-sale.d.ts +0 -1
- package/dist/banner-countdown-sale.js +21 -13
- package/dist/banner-delivery-countdown.cjs +29 -24
- package/dist/banner-delivery-countdown.d.cts +0 -2
- package/dist/banner-delivery-countdown.d.ts +0 -2
- package/dist/banner-delivery-countdown.js +30 -25
- package/dist/banner-event-promo.cjs +28 -13
- package/dist/banner-event-promo.js +29 -13
- package/dist/banner-floating-offer.cjs +42 -24
- package/dist/banner-floating-offer.d.cts +0 -3
- package/dist/banner-floating-offer.d.ts +0 -3
- package/dist/banner-floating-offer.js +43 -25
- package/dist/banner-gdpr-rights.cjs +36 -19
- package/dist/banner-gdpr-rights.d.cts +3 -5
- package/dist/banner-gdpr-rights.d.ts +3 -5
- package/dist/banner-gdpr-rights.js +37 -20
- package/dist/banner-privacy-notice.cjs +34 -17
- package/dist/banner-privacy-notice.d.cts +0 -2
- package/dist/banner-privacy-notice.d.ts +0 -2
- package/dist/banner-privacy-notice.js +35 -18
- package/dist/banner-promo-cta.cjs +27 -12
- package/dist/banner-promo-cta.js +28 -12
- package/dist/banner-social-follow.cjs +37 -17
- package/dist/banner-social-follow.d.cts +0 -2
- package/dist/banner-social-follow.d.ts +0 -2
- package/dist/banner-social-follow.js +38 -18
- package/dist/banner-survey-incentive.cjs +34 -17
- package/dist/banner-survey-incentive.d.cts +0 -2
- package/dist/banner-survey-incentive.d.ts +0 -2
- package/dist/banner-survey-incentive.js +35 -18
- package/dist/blog-cards-read-time.cjs +408 -24
- package/dist/blog-cards-read-time.d.cts +20 -1
- package/dist/blog-cards-read-time.d.ts +20 -1
- package/dist/blog-cards-read-time.js +409 -24
- package/dist/blog-cards-tagline-cta.cjs +406 -19
- package/dist/blog-cards-tagline-cta.d.cts +20 -1
- package/dist/blog-cards-tagline-cta.d.ts +20 -1
- package/dist/blog-cards-tagline-cta.js +407 -19
- package/dist/blog-category-overlay.cjs +407 -20
- package/dist/blog-category-overlay.d.cts +27 -8
- package/dist/blog-category-overlay.d.ts +27 -8
- package/dist/blog-category-overlay.js +408 -20
- package/dist/blog-featured-popular.cjs +406 -19
- package/dist/blog-featured-popular.d.cts +20 -1
- package/dist/blog-featured-popular.d.ts +20 -1
- package/dist/blog-featured-popular.js +407 -19
- package/dist/blog-filtered-results.cjs +457 -71
- package/dist/blog-filtered-results.d.cts +38 -19
- package/dist/blog-filtered-results.d.ts +38 -19
- package/dist/blog-filtered-results.js +455 -69
- package/dist/blog-grid-author-cards.cjs +408 -20
- package/dist/blog-grid-author-cards.d.cts +28 -9
- package/dist/blog-grid-author-cards.d.ts +28 -9
- package/dist/blog-grid-author-cards.js +409 -20
- package/dist/blog-grid-nine-posts.cjs +403 -16
- package/dist/blog-grid-nine-posts.d.cts +24 -5
- package/dist/blog-grid-nine-posts.d.ts +24 -5
- package/dist/blog-grid-nine-posts.js +404 -16
- package/dist/blog-horizontal-cards.cjs +407 -20
- package/dist/blog-horizontal-cards.d.cts +21 -2
- package/dist/blog-horizontal-cards.d.ts +21 -2
- package/dist/blog-horizontal-cards.js +408 -20
- package/dist/blog-horizontal-timeline.cjs +401 -14
- package/dist/blog-horizontal-timeline.d.cts +28 -9
- package/dist/blog-horizontal-timeline.d.ts +28 -9
- package/dist/blog-horizontal-timeline.js +402 -14
- package/dist/blog-masonry-featured.cjs +405 -18
- package/dist/blog-masonry-featured.d.cts +28 -9
- package/dist/blog-masonry-featured.d.ts +28 -9
- package/dist/blog-masonry-featured.js +406 -18
- package/dist/blog-related-articles.cjs +401 -14
- package/dist/blog-related-articles.d.cts +20 -1
- package/dist/blog-related-articles.d.ts +20 -1
- package/dist/blog-related-articles.js +402 -14
- package/dist/blog-tech-insights.cjs +410 -23
- package/dist/blog-tech-insights.d.cts +31 -12
- package/dist/blog-tech-insights.d.ts +31 -12
- package/dist/blog-tech-insights.js +411 -23
- package/dist/case-studies-featured-border.cjs +423 -14
- package/dist/case-studies-featured-border.d.cts +20 -1
- package/dist/case-studies-featured-border.d.ts +20 -1
- package/dist/case-studies-featured-border.js +424 -14
- package/dist/case-studies-image-grid.cjs +404 -7
- package/dist/case-studies-image-grid.d.cts +20 -1
- package/dist/case-studies-image-grid.d.ts +20 -1
- package/dist/case-studies-image-grid.js +405 -7
- package/dist/case-studies-stats-card.cjs +416 -29
- package/dist/case-studies-stats-card.d.cts +20 -1
- package/dist/case-studies-stats-card.d.ts +20 -1
- package/dist/case-studies-stats-card.js +417 -29
- package/dist/case-studies-testimonial-stats.cjs +409 -10
- package/dist/case-studies-testimonial-stats.d.cts +20 -1
- package/dist/case-studies-testimonial-stats.d.ts +20 -1
- package/dist/case-studies-testimonial-stats.js +409 -10
- package/dist/case-study-prose-sidebar.cjs +414 -23
- package/dist/case-study-prose-sidebar.d.cts +34 -15
- package/dist/case-study-prose-sidebar.d.ts +34 -15
- package/dist/case-study-prose-sidebar.js +415 -23
- package/dist/case-study-stats-metrics.cjs +443 -43
- package/dist/case-study-stats-metrics.d.cts +39 -20
- package/dist/case-study-stats-metrics.d.ts +39 -20
- package/dist/case-study-stats-metrics.js +444 -43
- package/dist/case-study-toc-social-sidebar.cjs +436 -46
- package/dist/case-study-toc-social-sidebar.d.cts +36 -17
- package/dist/case-study-toc-social-sidebar.d.ts +36 -17
- package/dist/case-study-toc-social-sidebar.js +437 -47
- package/dist/comparison-ai-models.cjs +498 -77
- package/dist/comparison-ai-models.d.cts +25 -7
- package/dist/comparison-ai-models.d.ts +25 -7
- package/dist/comparison-ai-models.js +497 -76
- package/dist/comparison-feature-cards.cjs +492 -80
- package/dist/comparison-feature-cards.d.cts +25 -6
- package/dist/comparison-feature-cards.d.ts +25 -6
- package/dist/comparison-feature-cards.js +492 -79
- package/dist/comparison-feature-grid.cjs +475 -47
- package/dist/comparison-feature-grid.d.cts +24 -1
- package/dist/comparison-feature-grid.d.ts +24 -1
- package/dist/comparison-feature-grid.js +476 -47
- package/dist/comparison-grid-badges.cjs +422 -25
- package/dist/comparison-grid-badges.d.cts +26 -3
- package/dist/comparison-grid-badges.d.ts +26 -3
- package/dist/comparison-grid-badges.js +423 -25
- package/dist/comparison-image-cards.cjs +450 -36
- package/dist/comparison-image-cards.d.cts +23 -4
- package/dist/comparison-image-cards.d.ts +23 -4
- package/dist/comparison-image-cards.js +451 -36
- package/dist/comparison-legacy-modern.cjs +442 -41
- package/dist/comparison-legacy-modern.d.cts +29 -6
- package/dist/comparison-legacy-modern.d.ts +29 -6
- package/dist/comparison-legacy-modern.js +443 -41
- package/dist/comparison-metrics-rows.cjs +478 -47
- package/dist/comparison-metrics-rows.d.cts +20 -1
- package/dist/comparison-metrics-rows.d.ts +20 -1
- package/dist/comparison-metrics-rows.js +479 -47
- package/dist/comparison-table-tabs.cjs +423 -13
- package/dist/comparison-table-tabs.d.cts +25 -2
- package/dist/comparison-table-tabs.d.ts +25 -2
- package/dist/comparison-table-tabs.js +424 -14
- package/dist/comparison-table-tooltips.cjs +443 -37
- package/dist/comparison-table-tooltips.d.cts +24 -1
- package/dist/comparison-table-tooltips.d.ts +24 -1
- package/dist/comparison-table-tooltips.js +443 -37
- package/dist/comparison-table-two-column.cjs +463 -53
- package/dist/comparison-table-two-column.d.cts +24 -6
- package/dist/comparison-table-two-column.d.ts +24 -6
- package/dist/comparison-table-two-column.js +464 -53
- package/dist/components.cjs +8 -8
- package/dist/components.js +9 -9
- package/dist/contact-callback.cjs +577 -190
- package/dist/contact-callback.d.cts +35 -1
- package/dist/contact-callback.d.ts +35 -1
- package/dist/contact-callback.js +578 -190
- package/dist/contact-card.cjs +502 -115
- package/dist/contact-card.d.cts +20 -1
- package/dist/contact-card.d.ts +20 -1
- package/dist/contact-card.js +503 -115
- package/dist/contact-careers.cjs +628 -241
- package/dist/contact-careers.d.cts +20 -2
- package/dist/contact-careers.d.ts +20 -2
- package/dist/contact-careers.js +629 -242
- package/dist/contact-catering.cjs +664 -277
- package/dist/contact-catering.d.cts +20 -1
- package/dist/contact-catering.d.ts +20 -1
- package/dist/contact-catering.js +665 -277
- package/dist/contact-consultation.cjs +567 -180
- package/dist/contact-consultation.d.cts +20 -2
- package/dist/contact-consultation.d.ts +20 -2
- package/dist/contact-consultation.js +568 -180
- package/dist/contact-dark.cjs +486 -99
- package/dist/contact-dark.d.cts +20 -2
- package/dist/contact-dark.d.ts +20 -2
- package/dist/contact-dark.js +487 -99
- package/dist/contact-demo.cjs +558 -171
- package/dist/contact-demo.d.cts +20 -2
- package/dist/contact-demo.d.ts +20 -2
- package/dist/contact-demo.js +559 -171
- package/dist/contact-emergency.cjs +571 -184
- package/dist/contact-emergency.d.cts +20 -2
- package/dist/contact-emergency.d.ts +20 -2
- package/dist/contact-emergency.js +572 -184
- package/dist/contact-event.cjs +489 -102
- package/dist/contact-event.d.cts +20 -2
- package/dist/contact-event.d.ts +20 -2
- package/dist/contact-event.js +490 -102
- package/dist/contact-faq.cjs +478 -91
- package/dist/contact-faq.d.cts +20 -2
- package/dist/contact-faq.d.ts +20 -2
- package/dist/contact-faq.js +479 -91
- package/dist/contact-feedback.cjs +450 -63
- package/dist/contact-feedback.d.cts +20 -2
- package/dist/contact-feedback.d.ts +20 -2
- package/dist/contact-feedback.js +451 -63
- package/dist/contact-fitness.cjs +489 -102
- package/dist/contact-fitness.d.cts +20 -2
- package/dist/contact-fitness.d.ts +20 -2
- package/dist/contact-fitness.js +490 -102
- package/dist/contact-floating-banner.cjs +5 -5
- package/dist/contact-floating-banner.js +5 -5
- package/dist/contact-guest.cjs +489 -102
- package/dist/contact-guest.d.cts +20 -2
- package/dist/contact-guest.d.ts +20 -2
- package/dist/contact-guest.js +490 -102
- package/dist/contact-image.cjs +489 -102
- package/dist/contact-image.d.cts +20 -2
- package/dist/contact-image.d.ts +20 -2
- package/dist/contact-image.js +490 -102
- package/dist/contact-insurance.cjs +489 -102
- package/dist/contact-insurance.d.cts +20 -2
- package/dist/contact-insurance.d.ts +20 -2
- package/dist/contact-insurance.js +490 -102
- package/dist/contact-interview.cjs +489 -102
- package/dist/contact-interview.d.cts +20 -2
- package/dist/contact-interview.d.ts +20 -2
- package/dist/contact-interview.js +490 -102
- package/dist/contact-locations.cjs +489 -102
- package/dist/contact-locations.d.cts +20 -2
- package/dist/contact-locations.d.ts +20 -2
- package/dist/contact-locations.js +490 -102
- package/dist/contact-maintenance.cjs +489 -102
- package/dist/contact-maintenance.d.cts +20 -2
- package/dist/contact-maintenance.d.ts +20 -2
- package/dist/contact-maintenance.js +490 -102
- package/dist/contact-map.cjs +489 -102
- package/dist/contact-map.d.cts +20 -2
- package/dist/contact-map.d.ts +20 -2
- package/dist/contact-map.js +490 -102
- package/dist/contact-minimal.cjs +466 -79
- package/dist/contact-minimal.d.cts +32 -1
- package/dist/contact-minimal.d.ts +32 -1
- package/dist/contact-minimal.js +467 -79
- package/dist/contact-moving.cjs +489 -102
- package/dist/contact-moving.d.cts +20 -2
- package/dist/contact-moving.d.ts +20 -2
- package/dist/contact-moving.js +490 -102
- package/dist/contact-multistep.cjs +489 -102
- package/dist/contact-multistep.d.cts +20 -2
- package/dist/contact-multistep.d.ts +20 -2
- package/dist/contact-multistep.js +490 -102
- package/dist/contact-partnership.cjs +489 -102
- package/dist/contact-partnership.d.cts +20 -2
- package/dist/contact-partnership.d.ts +20 -2
- package/dist/contact-partnership.js +490 -102
- package/dist/contact-photography.cjs +489 -102
- package/dist/contact-photography.d.cts +20 -2
- package/dist/contact-photography.d.ts +20 -2
- package/dist/contact-photography.js +490 -102
- package/dist/contact-press.cjs +489 -102
- package/dist/contact-press.d.cts +20 -2
- package/dist/contact-press.d.ts +20 -2
- package/dist/contact-press.js +490 -102
- package/dist/contact-quote.cjs +489 -102
- package/dist/contact-quote.d.cts +20 -2
- package/dist/contact-quote.d.ts +20 -2
- package/dist/contact-quote.js +490 -102
- package/dist/contact-referral.cjs +489 -102
- package/dist/contact-referral.d.cts +20 -2
- package/dist/contact-referral.d.ts +20 -2
- package/dist/contact-referral.js +490 -102
- package/dist/contact-report.cjs +489 -102
- package/dist/contact-report.d.cts +20 -2
- package/dist/contact-report.d.ts +20 -2
- package/dist/contact-report.js +490 -102
- package/dist/contact-reservation.cjs +489 -102
- package/dist/contact-reservation.d.cts +20 -2
- package/dist/contact-reservation.d.ts +20 -2
- package/dist/contact-reservation.js +490 -102
- package/dist/contact-retreat.cjs +489 -102
- package/dist/contact-retreat.d.cts +20 -2
- package/dist/contact-retreat.d.ts +20 -2
- package/dist/contact-retreat.js +490 -102
- package/dist/contact-rsvp.cjs +489 -102
- package/dist/contact-rsvp.d.cts +20 -2
- package/dist/contact-rsvp.d.ts +20 -2
- package/dist/contact-rsvp.js +490 -102
- package/dist/contact-sales.cjs +489 -102
- package/dist/contact-sales.d.cts +20 -1
- package/dist/contact-sales.d.ts +20 -1
- package/dist/contact-sales.js +490 -102
- package/dist/contact-schedule.cjs +489 -102
- package/dist/contact-schedule.d.cts +20 -2
- package/dist/contact-schedule.d.ts +20 -2
- package/dist/contact-schedule.js +490 -102
- package/dist/contact-sponsorship.cjs +489 -102
- package/dist/contact-sponsorship.d.cts +20 -2
- package/dist/contact-sponsorship.d.ts +20 -2
- package/dist/contact-sponsorship.js +490 -102
- package/dist/contact-support.cjs +463 -76
- package/dist/contact-support.d.cts +20 -2
- package/dist/contact-support.d.ts +20 -2
- package/dist/contact-support.js +464 -76
- package/dist/contact-tenant.cjs +489 -102
- package/dist/contact-tenant.d.cts +20 -2
- package/dist/contact-tenant.d.ts +20 -2
- package/dist/contact-tenant.js +490 -102
- package/dist/contact-vendor.cjs +489 -102
- package/dist/contact-vendor.d.cts +20 -2
- package/dist/contact-vendor.d.ts +20 -2
- package/dist/contact-vendor.js +490 -102
- package/dist/contact-volunteer.cjs +489 -102
- package/dist/contact-volunteer.d.cts +20 -2
- package/dist/contact-volunteer.d.ts +20 -2
- package/dist/contact-volunteer.js +490 -102
- package/dist/contact-warranty.cjs +489 -102
- package/dist/contact-warranty.d.cts +20 -2
- package/dist/contact-warranty.d.ts +20 -2
- package/dist/contact-warranty.js +490 -102
- package/dist/contact-wedding.cjs +489 -102
- package/dist/contact-wedding.d.cts +20 -2
- package/dist/contact-wedding.d.ts +20 -2
- package/dist/contact-wedding.js +490 -102
- package/dist/cta-accent-background.cjs +11 -11
- package/dist/cta-accent-background.js +12 -12
- package/dist/cta-app-download-newsletter.cjs +16 -135
- package/dist/cta-app-download-newsletter.js +17 -136
- package/dist/cta-background-icon-badge.cjs +12 -131
- package/dist/cta-background-icon-badge.js +13 -132
- package/dist/cta-case-study-testimonial.cjs +31 -154
- package/dist/cta-case-study-testimonial.js +32 -155
- package/dist/cta-documentation-links.cjs +15 -15
- package/dist/cta-documentation-links.js +16 -16
- package/dist/cta-enterprise-dark-features.cjs +21 -21
- package/dist/cta-enterprise-dark-features.js +22 -22
- package/dist/cta-enterprise-split.cjs +14 -14
- package/dist/cta-enterprise-split.js +15 -15
- package/dist/cta-feature-cards-grid.cjs +16 -16
- package/dist/cta-feature-cards-grid.js +17 -17
- package/dist/cta-feature-checklist.cjs +14 -14
- package/dist/cta-feature-checklist.js +15 -15
- package/dist/cta-feature-list.cjs +16 -135
- package/dist/cta-feature-list.js +17 -136
- package/dist/cta-fullwidth-background.cjs +14 -133
- package/dist/cta-fullwidth-background.js +15 -134
- package/dist/cta-gradient-logos-floating.cjs +17 -17
- package/dist/cta-gradient-logos-floating.js +18 -18
- package/dist/cta-gradient-stats-hero.cjs +16 -16
- package/dist/cta-gradient-stats-hero.js +17 -17
- package/dist/cta-hero-feature-cards.cjs +36 -136
- package/dist/cta-hero-feature-cards.js +37 -137
- package/dist/cta-image-overlay-arrow.cjs +12 -131
- package/dist/cta-image-overlay-arrow.js +13 -132
- package/dist/cta-image-overlay-centered.cjs +12 -131
- package/dist/cta-image-overlay-centered.js +13 -132
- package/dist/cta-minimal-separator.cjs +8 -8
- package/dist/cta-minimal-separator.js +9 -9
- package/dist/cta-newsletter-features.cjs +14 -14
- package/dist/cta-newsletter-features.js +15 -15
- package/dist/cta-pattern-background.cjs +11 -11
- package/dist/cta-pattern-background.js +12 -12
- package/dist/cta-platform-demo.cjs +16 -139
- package/dist/cta-platform-demo.js +17 -140
- package/dist/cta-simple-centered.cjs +11 -11
- package/dist/cta-simple-centered.js +12 -12
- package/dist/cta-split-gradient-image.cjs +14 -133
- package/dist/cta-split-gradient-image.js +15 -134
- package/dist/cta-split-image-logos.cjs +17 -136
- package/dist/cta-split-image-logos.js +18 -137
- package/dist/cta-split-image.cjs +60 -174
- package/dist/cta-split-image.js +61 -175
- package/dist/cta-stacked-cards.cjs +11 -11
- package/dist/cta-stacked-cards.js +12 -12
- package/dist/cta-video-background-hero.cjs +16 -100
- package/dist/cta-video-background-hero.js +17 -101
- package/dist/cta-workflow-tabs.cjs +18 -137
- package/dist/cta-workflow-tabs.js +19 -138
- package/dist/hero-ad-campaign-expert.cjs +2 -2
- package/dist/hero-ad-campaign-expert.js +2 -2
- package/dist/hero-adaptable-product-grid.cjs +2 -2
- package/dist/hero-adaptable-product-grid.js +2 -2
- package/dist/hero-agency-animated-images.cjs +2 -2
- package/dist/hero-agency-animated-images.js +2 -2
- package/dist/hero-ai-powered-carousel.cjs +2 -2
- package/dist/hero-ai-powered-carousel.js +2 -2
- package/dist/hero-announcement-badge.cjs +2 -2
- package/dist/hero-announcement-badge.js +2 -2
- package/dist/hero-architecture-fullscreen.cjs +2 -2
- package/dist/hero-architecture-fullscreen.js +2 -2
- package/dist/hero-badge-image-split.cjs +2 -2
- package/dist/hero-badge-image-split.js +2 -2
- package/dist/hero-badge-shadow-overlay.cjs +2 -2
- package/dist/hero-badge-shadow-overlay.js +2 -2
- package/dist/hero-billing-platform-logos.cjs +2 -2
- package/dist/hero-billing-platform-logos.js +2 -2
- package/dist/hero-business-carousel-dots.cjs +2 -2
- package/dist/hero-business-carousel-dots.js +2 -2
- package/dist/hero-business-operations-mosaic.cjs +2 -2
- package/dist/hero-business-operations-mosaic.js +2 -2
- package/dist/hero-centered-gradient-cta.cjs +2 -2
- package/dist/hero-centered-gradient-cta.js +2 -2
- package/dist/hero-centered-image-grid.cjs +2 -2
- package/dist/hero-centered-image-grid.js +2 -2
- package/dist/hero-centered-screenshot.cjs +2 -2
- package/dist/hero-centered-screenshot.js +2 -2
- package/dist/hero-coming-soon-countdown.cjs +2 -2
- package/dist/hero-coming-soon-countdown.js +2 -2
- package/dist/hero-community-survey-cta.cjs +2 -2
- package/dist/hero-community-survey-cta.js +2 -2
- package/dist/hero-conversation-intelligence.cjs +2 -2
- package/dist/hero-conversation-intelligence.js +2 -2
- package/dist/hero-conversion-video-play.cjs +2 -2
- package/dist/hero-conversion-video-play.js +2 -2
- package/dist/hero-creative-studio-stacked.cjs +2 -2
- package/dist/hero-creative-studio-stacked.js +2 -2
- package/dist/hero-crm-streamlined.cjs +2 -2
- package/dist/hero-crm-streamlined.js +2 -2
- package/dist/hero-customer-support-layered.cjs +2 -2
- package/dist/hero-customer-support-layered.js +2 -2
- package/dist/hero-dashed-border-features.cjs +2 -2
- package/dist/hero-dashed-border-features.js +2 -2
- package/dist/hero-design-carousel-portfolio.cjs +2 -2
- package/dist/hero-design-carousel-portfolio.js +2 -2
- package/dist/hero-design-showcase-logos.cjs +2 -2
- package/dist/hero-design-showcase-logos.js +2 -2
- package/dist/hero-design-system-3d.cjs +2 -2
- package/dist/hero-design-system-3d.js +2 -2
- package/dist/hero-developer-tools-code.cjs +2 -2
- package/dist/hero-developer-tools-code.js +2 -2
- package/dist/hero-digital-agency-fullscreen.cjs +2 -2
- package/dist/hero-digital-agency-fullscreen.js +2 -2
- package/dist/hero-ecommerce-product-showcase.cjs +2 -2
- package/dist/hero-ecommerce-product-showcase.js +2 -2
- package/dist/hero-enterprise-security.cjs +2 -2
- package/dist/hero-enterprise-security.js +2 -2
- package/dist/hero-event-registration.cjs +2 -2
- package/dist/hero-event-registration.js +2 -2
- package/dist/hero-feature-cards-grid.cjs +2 -2
- package/dist/hero-feature-cards-grid.js +2 -2
- package/dist/hero-fullscreen-background-image.cjs +2 -2
- package/dist/hero-fullscreen-background-image.js +2 -2
- package/dist/hero-fullscreen-logo-cta.cjs +2 -2
- package/dist/hero-fullscreen-logo-cta.js +2 -2
- package/dist/hero-gradient-avatars-rating.cjs +2 -2
- package/dist/hero-gradient-avatars-rating.js +2 -2
- package/dist/hero-gradient-client-focused.cjs +2 -2
- package/dist/hero-gradient-client-focused.js +2 -2
- package/dist/hero-grid-pattern-efficiency.cjs +2 -2
- package/dist/hero-grid-pattern-efficiency.js +2 -2
- package/dist/hero-grid-pattern-solutions.cjs +2 -2
- package/dist/hero-grid-pattern-solutions.js +2 -2
- package/dist/hero-hiring-animated-text.cjs +2 -2
- package/dist/hero-hiring-animated-text.js +2 -2
- package/dist/hero-image-left-content.cjs +2 -2
- package/dist/hero-image-left-content.js +2 -2
- package/dist/hero-image-slider.cjs +2 -2
- package/dist/hero-image-slider.js +2 -2
- package/dist/hero-innovation-image-grid.cjs +2 -2
- package/dist/hero-innovation-image-grid.js +2 -2
- package/dist/hero-logo-centered-screenshot.cjs +2 -2
- package/dist/hero-logo-centered-screenshot.js +2 -2
- package/dist/hero-marketplace-scattered-images.cjs +2 -2
- package/dist/hero-marketplace-scattered-images.js +2 -2
- package/dist/hero-mental-health-team.cjs +2 -2
- package/dist/hero-mental-health-team.js +2 -2
- package/dist/hero-mentorship-video-split.cjs +2 -2
- package/dist/hero-mentorship-video-split.js +2 -2
- package/dist/hero-minimal-centered-dark.cjs +2 -2
- package/dist/hero-minimal-centered-dark.js +2 -2
- package/dist/hero-mobile-app-download.cjs +2 -2
- package/dist/hero-mobile-app-download.js +2 -2
- package/dist/hero-newsletter-minimal.cjs +2 -2
- package/dist/hero-newsletter-minimal.js +2 -2
- package/dist/hero-pattern-badge-logos.cjs +2 -2
- package/dist/hero-pattern-badge-logos.js +2 -2
- package/dist/hero-pattern-logo-tech-stack.cjs +2 -2
- package/dist/hero-pattern-logo-tech-stack.js +2 -2
- package/dist/hero-platform-features-grid.cjs +2 -2
- package/dist/hero-platform-features-grid.js +2 -2
- package/dist/hero-portfolio-creative.cjs +2 -2
- package/dist/hero-portfolio-creative.js +2 -2
- package/dist/hero-premium-split-avatars.cjs +2 -2
- package/dist/hero-premium-split-avatars.js +2 -2
- package/dist/hero-presentation-platform-video.cjs +2 -2
- package/dist/hero-presentation-platform-video.js +2 -2
- package/dist/hero-pricing-comparison.cjs +2 -2
- package/dist/hero-pricing-comparison.js +2 -2
- package/dist/hero-product-showcase-floating.cjs +2 -2
- package/dist/hero-product-showcase-floating.js +2 -2
- package/dist/hero-productivity-launcher-video.cjs +2 -2
- package/dist/hero-productivity-launcher-video.js +2 -2
- package/dist/hero-saas-dashboard-preview.cjs +2 -2
- package/dist/hero-saas-dashboard-preview.js +2 -2
- package/dist/hero-shared-inbox-layered.cjs +2 -2
- package/dist/hero-shared-inbox-layered.js +2 -2
- package/dist/hero-simple-centered-image.cjs +2 -2
- package/dist/hero-simple-centered-image.js +2 -2
- package/dist/hero-software-growth-video-dialog.cjs +2 -2
- package/dist/hero-software-growth-video-dialog.js +2 -2
- package/dist/hero-spiral-pattern-cards.cjs +2 -2
- package/dist/hero-spiral-pattern-cards.js +2 -2
- package/dist/hero-split-geometric-shapes.cjs +2 -2
- package/dist/hero-split-geometric-shapes.js +2 -2
- package/dist/hero-split-icon-cards.cjs +1 -1
- package/dist/hero-split-icon-cards.js +1 -1
- package/dist/hero-split-image-newsletter.cjs +2 -2
- package/dist/hero-split-image-newsletter.js +2 -2
- package/dist/hero-split-spiral-shapes.cjs +2 -2
- package/dist/hero-split-spiral-shapes.js +2 -2
- package/dist/hero-startup-launch-cta.cjs +2 -2
- package/dist/hero-startup-launch-cta.js +2 -2
- package/dist/hero-stats-social-proof.cjs +2 -2
- package/dist/hero-stats-social-proof.js +2 -2
- package/dist/hero-task-timer-animated.cjs +2 -2
- package/dist/hero-task-timer-animated.js +2 -2
- package/dist/hero-tech-carousel.cjs +2 -2
- package/dist/hero-tech-carousel.js +2 -2
- package/dist/hero-therapy-testimonial-grid.cjs +2 -2
- package/dist/hero-therapy-testimonial-grid.js +2 -2
- package/dist/hero-ui-library-showcase.cjs +2 -2
- package/dist/hero-ui-library-showcase.js +2 -2
- package/dist/hero-video-background-dark.cjs +2 -2
- package/dist/hero-video-background-dark.js +2 -2
- package/dist/hero-video-dialog-gradient.cjs +2 -2
- package/dist/hero-video-dialog-gradient.js +2 -2
- package/dist/hero-video-overlay-stars.cjs +2 -2
- package/dist/hero-video-overlay-stars.js +2 -2
- package/dist/hero-welcome-asymmetric-images.cjs +2 -2
- package/dist/hero-welcome-asymmetric-images.js +2 -2
- package/dist/index.cjs +8 -8
- package/dist/index.js +9 -9
- package/dist/media-hover-ctas.cjs +7 -7
- package/dist/media-hover-ctas.js +7 -7
- package/dist/registry.cjs +10071 -8111
- package/dist/registry.js +10033 -8073
- package/package.json +2 -2
|
@@ -556,13 +556,13 @@ function processSvgForCurrentColor(svg) {
|
|
|
556
556
|
}
|
|
557
557
|
function BannerAnnouncementDismissible({
|
|
558
558
|
icon,
|
|
559
|
-
iconName
|
|
559
|
+
iconName,
|
|
560
560
|
message,
|
|
561
561
|
actions,
|
|
562
562
|
actionsSlot,
|
|
563
563
|
onDismiss,
|
|
564
564
|
dismissIcon,
|
|
565
|
-
dismissAriaLabel
|
|
565
|
+
dismissAriaLabel,
|
|
566
566
|
className,
|
|
567
567
|
containerClassName,
|
|
568
568
|
contentClassName,
|
|
@@ -572,15 +572,23 @@ function BannerAnnouncementDismissible({
|
|
|
572
572
|
dismissButtonClassName
|
|
573
573
|
}) {
|
|
574
574
|
const [isVisible, setIsVisible] = React.useState(true);
|
|
575
|
-
const
|
|
575
|
+
const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
|
|
576
|
+
const handleDismiss = React.useCallback(() => {
|
|
576
577
|
setIsVisible(false);
|
|
577
578
|
onDismiss?.();
|
|
578
|
-
};
|
|
579
|
-
const
|
|
579
|
+
}, [onDismiss]);
|
|
580
|
+
const actionsContent = React.useMemo(() => {
|
|
580
581
|
if (actionsSlot) return actionsSlot;
|
|
581
582
|
if (!actions || actions.length === 0) return null;
|
|
582
583
|
return actions.map((action, index) => {
|
|
583
|
-
const {
|
|
584
|
+
const {
|
|
585
|
+
label,
|
|
586
|
+
icon: actionIcon,
|
|
587
|
+
iconAfter,
|
|
588
|
+
children,
|
|
589
|
+
className: actionClassName,
|
|
590
|
+
...pressableProps
|
|
591
|
+
} = action;
|
|
584
592
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
585
593
|
Pressable,
|
|
586
594
|
{
|
|
@@ -596,23 +604,35 @@ function BannerAnnouncementDismissible({
|
|
|
596
604
|
index
|
|
597
605
|
);
|
|
598
606
|
});
|
|
599
|
-
};
|
|
600
|
-
const
|
|
607
|
+
}, [actions, actionsSlot]);
|
|
608
|
+
const iconContent = React.useMemo(() => {
|
|
601
609
|
if (icon) return icon;
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
610
|
+
if (!iconName) return null;
|
|
611
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
612
|
+
DynamicIcon,
|
|
613
|
+
{
|
|
614
|
+
name: iconName,
|
|
615
|
+
size: 20,
|
|
616
|
+
className: cn("shrink-0", iconClassName)
|
|
617
|
+
}
|
|
618
|
+
);
|
|
619
|
+
}, [icon, iconName, iconClassName]);
|
|
620
|
+
const dismissIconContent = React.useMemo(() => {
|
|
605
621
|
if (dismissIcon) return dismissIcon;
|
|
606
622
|
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
|
|
607
|
-
};
|
|
623
|
+
}, [dismissIcon]);
|
|
624
|
+
const messageContent = React.useMemo(() => {
|
|
625
|
+
if (!message) return null;
|
|
626
|
+
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 });
|
|
627
|
+
}, [message, messageClassName]);
|
|
608
628
|
if (!isVisible) {
|
|
609
629
|
return null;
|
|
610
630
|
}
|
|
611
631
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("bg-background border-b", className), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("max-w-7xl mx-auto px-4 py-3 flex items-center justify-between gap-2", containerClassName), children: [
|
|
612
632
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-4", contentClassName), children: [
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children:
|
|
633
|
+
iconContent,
|
|
634
|
+
messageContent,
|
|
635
|
+
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent })
|
|
616
636
|
] }),
|
|
617
637
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
618
638
|
Pressable,
|
|
@@ -623,8 +643,8 @@ function BannerAnnouncementDismissible({
|
|
|
623
643
|
asButton: true,
|
|
624
644
|
className: cn("size-8", dismissButtonClassName),
|
|
625
645
|
children: [
|
|
626
|
-
|
|
627
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children:
|
|
646
|
+
dismissIconContent,
|
|
647
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: dismissLabel })
|
|
628
648
|
]
|
|
629
649
|
}
|
|
630
650
|
)
|
|
@@ -15,7 +15,6 @@ interface BannerAnnouncementDismissibleProps {
|
|
|
15
15
|
icon?: React.ReactNode;
|
|
16
16
|
/**
|
|
17
17
|
* Icon name for DynamicIcon (used if icon prop is not provided)
|
|
18
|
-
* @default "mynaui/boat"
|
|
19
18
|
*/
|
|
20
19
|
iconName?: string;
|
|
21
20
|
/**
|
|
@@ -40,7 +39,6 @@ interface BannerAnnouncementDismissibleProps {
|
|
|
40
39
|
dismissIcon?: React.ReactNode;
|
|
41
40
|
/**
|
|
42
41
|
* ARIA label for dismiss button
|
|
43
|
-
* @default "Dismiss banner"
|
|
44
42
|
*/
|
|
45
43
|
dismissAriaLabel?: string;
|
|
46
44
|
/**
|
|
@@ -15,7 +15,6 @@ interface BannerAnnouncementDismissibleProps {
|
|
|
15
15
|
icon?: React.ReactNode;
|
|
16
16
|
/**
|
|
17
17
|
* Icon name for DynamicIcon (used if icon prop is not provided)
|
|
18
|
-
* @default "mynaui/boat"
|
|
19
18
|
*/
|
|
20
19
|
iconName?: string;
|
|
21
20
|
/**
|
|
@@ -40,7 +39,6 @@ interface BannerAnnouncementDismissibleProps {
|
|
|
40
39
|
dismissIcon?: React.ReactNode;
|
|
41
40
|
/**
|
|
42
41
|
* ARIA label for dismiss button
|
|
43
|
-
* @default "Dismiss banner"
|
|
44
42
|
*/
|
|
45
43
|
dismissAriaLabel?: string;
|
|
46
44
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { useState } from 'react';
|
|
3
|
+
import { useState, useCallback, useMemo } from 'react';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { cva } from 'class-variance-authority';
|
|
@@ -535,13 +535,13 @@ function processSvgForCurrentColor(svg) {
|
|
|
535
535
|
}
|
|
536
536
|
function BannerAnnouncementDismissible({
|
|
537
537
|
icon,
|
|
538
|
-
iconName
|
|
538
|
+
iconName,
|
|
539
539
|
message,
|
|
540
540
|
actions,
|
|
541
541
|
actionsSlot,
|
|
542
542
|
onDismiss,
|
|
543
543
|
dismissIcon,
|
|
544
|
-
dismissAriaLabel
|
|
544
|
+
dismissAriaLabel,
|
|
545
545
|
className,
|
|
546
546
|
containerClassName,
|
|
547
547
|
contentClassName,
|
|
@@ -551,15 +551,23 @@ function BannerAnnouncementDismissible({
|
|
|
551
551
|
dismissButtonClassName
|
|
552
552
|
}) {
|
|
553
553
|
const [isVisible, setIsVisible] = useState(true);
|
|
554
|
-
const
|
|
554
|
+
const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
|
|
555
|
+
const handleDismiss = useCallback(() => {
|
|
555
556
|
setIsVisible(false);
|
|
556
557
|
onDismiss?.();
|
|
557
|
-
};
|
|
558
|
-
const
|
|
558
|
+
}, [onDismiss]);
|
|
559
|
+
const actionsContent = useMemo(() => {
|
|
559
560
|
if (actionsSlot) return actionsSlot;
|
|
560
561
|
if (!actions || actions.length === 0) return null;
|
|
561
562
|
return actions.map((action, index) => {
|
|
562
|
-
const {
|
|
563
|
+
const {
|
|
564
|
+
label,
|
|
565
|
+
icon: actionIcon,
|
|
566
|
+
iconAfter,
|
|
567
|
+
children,
|
|
568
|
+
className: actionClassName,
|
|
569
|
+
...pressableProps
|
|
570
|
+
} = action;
|
|
563
571
|
return /* @__PURE__ */ jsx(
|
|
564
572
|
Pressable,
|
|
565
573
|
{
|
|
@@ -575,23 +583,35 @@ function BannerAnnouncementDismissible({
|
|
|
575
583
|
index
|
|
576
584
|
);
|
|
577
585
|
});
|
|
578
|
-
};
|
|
579
|
-
const
|
|
586
|
+
}, [actions, actionsSlot]);
|
|
587
|
+
const iconContent = useMemo(() => {
|
|
580
588
|
if (icon) return icon;
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
589
|
+
if (!iconName) return null;
|
|
590
|
+
return /* @__PURE__ */ jsx(
|
|
591
|
+
DynamicIcon,
|
|
592
|
+
{
|
|
593
|
+
name: iconName,
|
|
594
|
+
size: 20,
|
|
595
|
+
className: cn("shrink-0", iconClassName)
|
|
596
|
+
}
|
|
597
|
+
);
|
|
598
|
+
}, [icon, iconName, iconClassName]);
|
|
599
|
+
const dismissIconContent = useMemo(() => {
|
|
584
600
|
if (dismissIcon) return dismissIcon;
|
|
585
601
|
return /* @__PURE__ */ jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
|
|
586
|
-
};
|
|
602
|
+
}, [dismissIcon]);
|
|
603
|
+
const messageContent = useMemo(() => {
|
|
604
|
+
if (!message) return null;
|
|
605
|
+
return typeof message === "string" ? /* @__PURE__ */ jsx("span", { className: cn("font-medium text-sm", messageClassName), children: message }) : /* @__PURE__ */ jsx("div", { className: messageClassName, children: message });
|
|
606
|
+
}, [message, messageClassName]);
|
|
587
607
|
if (!isVisible) {
|
|
588
608
|
return null;
|
|
589
609
|
}
|
|
590
610
|
return /* @__PURE__ */ jsx("div", { className: cn("bg-background border-b", className), children: /* @__PURE__ */ jsxs("div", { className: cn("max-w-7xl mx-auto px-4 py-3 flex items-center justify-between gap-2", containerClassName), children: [
|
|
591
611
|
/* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-4", contentClassName), children: [
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: actionsClassName, children:
|
|
612
|
+
iconContent,
|
|
613
|
+
messageContent,
|
|
614
|
+
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent })
|
|
595
615
|
] }),
|
|
596
616
|
/* @__PURE__ */ jsxs(
|
|
597
617
|
Pressable,
|
|
@@ -602,8 +622,8 @@ function BannerAnnouncementDismissible({
|
|
|
602
622
|
asButton: true,
|
|
603
623
|
className: cn("size-8", dismissButtonClassName),
|
|
604
624
|
children: [
|
|
605
|
-
|
|
606
|
-
/* @__PURE__ */ jsx("span", { className: "sr-only", children:
|
|
625
|
+
dismissIconContent,
|
|
626
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: dismissLabel })
|
|
607
627
|
]
|
|
608
628
|
}
|
|
609
629
|
)
|
|
@@ -25,17 +25,16 @@ function BannerCountdownSale({
|
|
|
25
25
|
timeUnitClassName,
|
|
26
26
|
separatorClassName
|
|
27
27
|
}) {
|
|
28
|
-
const
|
|
29
|
-
() => new Date(Date.now() + 24 * 60 * 60 * 1e3),
|
|
30
|
-
[]
|
|
31
|
-
);
|
|
32
|
-
const targetTime = endTime ?? defaultEndTime;
|
|
28
|
+
const targetTime = endTime;
|
|
33
29
|
const [timeLeft, setTimeLeft] = react.useState({
|
|
34
30
|
hours: 0,
|
|
35
31
|
minutes: 0,
|
|
36
32
|
seconds: 0
|
|
37
33
|
});
|
|
38
34
|
react.useEffect(() => {
|
|
35
|
+
if (!targetTime) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
39
38
|
const calculateTimeLeft = () => {
|
|
40
39
|
const now = (/* @__PURE__ */ new Date()).getTime();
|
|
41
40
|
const target = targetTime.getTime();
|
|
@@ -55,10 +54,11 @@ function BannerCountdownSale({
|
|
|
55
54
|
}, 1e3);
|
|
56
55
|
return () => clearInterval(timer);
|
|
57
56
|
}, [targetTime]);
|
|
58
|
-
const pad = (n) => n.toString().padStart(2, "0");
|
|
59
|
-
const
|
|
57
|
+
const pad = react.useCallback((n) => n.toString().padStart(2, "0"), []);
|
|
58
|
+
const timerContent = react.useMemo(() => {
|
|
60
59
|
if (timerSlot) return timerSlot;
|
|
61
60
|
if (renderTimer) return renderTimer(timeLeft);
|
|
61
|
+
if (!targetTime) return null;
|
|
62
62
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-1 font-mono text-lg font-bold", timerClassName), children: [
|
|
63
63
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("rounded bg-destructive px-2 py-0.5", timeUnitClassName), children: pad(timeLeft.hours) }),
|
|
64
64
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: separatorClassName, children: ":" }),
|
|
@@ -66,11 +66,19 @@ function BannerCountdownSale({
|
|
|
66
66
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: separatorClassName, children: ":" }),
|
|
67
67
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("rounded bg-destructive px-2 py-0.5", timeUnitClassName), children: pad(timeLeft.seconds) })
|
|
68
68
|
] });
|
|
69
|
-
};
|
|
69
|
+
}, [timerSlot, renderTimer, timeLeft, timerClassName, timeUnitClassName, separatorClassName, pad, targetTime]);
|
|
70
|
+
const messageContent = react.useMemo(() => {
|
|
71
|
+
if (!message) return null;
|
|
72
|
+
return typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-medium", messageClassName), children: message }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: messageClassName, children: message });
|
|
73
|
+
}, [message, messageClassName]);
|
|
74
|
+
const descriptionContent = react.useMemo(() => {
|
|
75
|
+
if (!description) return null;
|
|
76
|
+
return typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-destructive-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description });
|
|
77
|
+
}, [description, descriptionClassName]);
|
|
70
78
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("w-full bg-destructive text-white", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container py-2.5", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-wrap items-center justify-center gap-x-4 gap-y-1 text-sm", contentClassName), children: [
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
79
|
+
messageContent,
|
|
80
|
+
timerContent,
|
|
81
|
+
descriptionContent
|
|
74
82
|
] }) }) });
|
|
75
83
|
}
|
|
76
84
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
2
|
+
import { useState, useEffect, useCallback, useMemo } from 'react';
|
|
3
3
|
import { clsx } from 'clsx';
|
|
4
4
|
import { twMerge } from 'tailwind-merge';
|
|
5
|
-
import {
|
|
5
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
7
7
|
// components/blocks/banner/banner-countdown-sale.tsx
|
|
8
8
|
function cn(...inputs) {
|
|
@@ -23,17 +23,16 @@ function BannerCountdownSale({
|
|
|
23
23
|
timeUnitClassName,
|
|
24
24
|
separatorClassName
|
|
25
25
|
}) {
|
|
26
|
-
const
|
|
27
|
-
() => new Date(Date.now() + 24 * 60 * 60 * 1e3),
|
|
28
|
-
[]
|
|
29
|
-
);
|
|
30
|
-
const targetTime = endTime ?? defaultEndTime;
|
|
26
|
+
const targetTime = endTime;
|
|
31
27
|
const [timeLeft, setTimeLeft] = useState({
|
|
32
28
|
hours: 0,
|
|
33
29
|
minutes: 0,
|
|
34
30
|
seconds: 0
|
|
35
31
|
});
|
|
36
32
|
useEffect(() => {
|
|
33
|
+
if (!targetTime) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
37
36
|
const calculateTimeLeft = () => {
|
|
38
37
|
const now = (/* @__PURE__ */ new Date()).getTime();
|
|
39
38
|
const target = targetTime.getTime();
|
|
@@ -53,10 +52,11 @@ function BannerCountdownSale({
|
|
|
53
52
|
}, 1e3);
|
|
54
53
|
return () => clearInterval(timer);
|
|
55
54
|
}, [targetTime]);
|
|
56
|
-
const pad = (n) => n.toString().padStart(2, "0");
|
|
57
|
-
const
|
|
55
|
+
const pad = useCallback((n) => n.toString().padStart(2, "0"), []);
|
|
56
|
+
const timerContent = useMemo(() => {
|
|
58
57
|
if (timerSlot) return timerSlot;
|
|
59
58
|
if (renderTimer) return renderTimer(timeLeft);
|
|
59
|
+
if (!targetTime) return null;
|
|
60
60
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-1 font-mono text-lg font-bold", timerClassName), children: [
|
|
61
61
|
/* @__PURE__ */ jsx("span", { className: cn("rounded bg-destructive px-2 py-0.5", timeUnitClassName), children: pad(timeLeft.hours) }),
|
|
62
62
|
/* @__PURE__ */ jsx("span", { className: separatorClassName, children: ":" }),
|
|
@@ -64,11 +64,19 @@ function BannerCountdownSale({
|
|
|
64
64
|
/* @__PURE__ */ jsx("span", { className: separatorClassName, children: ":" }),
|
|
65
65
|
/* @__PURE__ */ jsx("span", { className: cn("rounded bg-destructive px-2 py-0.5", timeUnitClassName), children: pad(timeLeft.seconds) })
|
|
66
66
|
] });
|
|
67
|
-
};
|
|
67
|
+
}, [timerSlot, renderTimer, timeLeft, timerClassName, timeUnitClassName, separatorClassName, pad, targetTime]);
|
|
68
|
+
const messageContent = useMemo(() => {
|
|
69
|
+
if (!message) return null;
|
|
70
|
+
return typeof message === "string" ? /* @__PURE__ */ jsx("span", { className: cn("font-medium", messageClassName), children: message }) : /* @__PURE__ */ jsx("div", { className: messageClassName, children: message });
|
|
71
|
+
}, [message, messageClassName]);
|
|
72
|
+
const descriptionContent = useMemo(() => {
|
|
73
|
+
if (!description) return null;
|
|
74
|
+
return typeof description === "string" ? /* @__PURE__ */ jsx("span", { className: cn("text-destructive-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description });
|
|
75
|
+
}, [description, descriptionClassName]);
|
|
68
76
|
return /* @__PURE__ */ jsx("div", { className: cn("w-full bg-destructive text-white", className), children: /* @__PURE__ */ jsx("div", { className: cn("container py-2.5", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: cn("flex flex-wrap items-center justify-center gap-x-4 gap-y-1 text-sm", contentClassName), children: [
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
77
|
+
messageContent,
|
|
78
|
+
timerContent,
|
|
79
|
+
descriptionContent
|
|
72
80
|
] }) }) });
|
|
73
81
|
}
|
|
74
82
|
|
|
@@ -137,11 +137,11 @@ function processSvgForCurrentColor(svg) {
|
|
|
137
137
|
}
|
|
138
138
|
function BannerDeliveryCountdown({
|
|
139
139
|
icon,
|
|
140
|
-
iconName
|
|
141
|
-
deliveryDate
|
|
140
|
+
iconName,
|
|
141
|
+
deliveryDate,
|
|
142
142
|
cutoffTime,
|
|
143
|
-
prefixText
|
|
144
|
-
middleText
|
|
143
|
+
prefixText,
|
|
144
|
+
middleText,
|
|
145
145
|
timerSlot,
|
|
146
146
|
renderTimer,
|
|
147
147
|
className,
|
|
@@ -152,17 +152,16 @@ function BannerDeliveryCountdown({
|
|
|
152
152
|
timerClassName,
|
|
153
153
|
deliveryDateClassName
|
|
154
154
|
}) {
|
|
155
|
-
const
|
|
156
|
-
() => new Date(Date.now() + 4 * 60 * 60 * 1e3),
|
|
157
|
-
[]
|
|
158
|
-
);
|
|
159
|
-
const targetTime = cutoffTime ?? defaultCutoffTime;
|
|
155
|
+
const targetTime = cutoffTime;
|
|
160
156
|
const [timeLeft, setTimeLeft] = React.useState({
|
|
161
157
|
hours: 0,
|
|
162
158
|
minutes: 0,
|
|
163
159
|
seconds: 0
|
|
164
160
|
});
|
|
165
161
|
React.useEffect(() => {
|
|
162
|
+
if (!targetTime) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
166
165
|
const calculateTimeLeft = () => {
|
|
167
166
|
const now = (/* @__PURE__ */ new Date()).getTime();
|
|
168
167
|
const target = targetTime.getTime();
|
|
@@ -182,14 +181,16 @@ function BannerDeliveryCountdown({
|
|
|
182
181
|
}, 1e3);
|
|
183
182
|
return () => clearInterval(timer);
|
|
184
183
|
}, [targetTime]);
|
|
185
|
-
const pad = (n) => n.toString().padStart(2, "0");
|
|
186
|
-
const
|
|
184
|
+
const pad = React.useCallback((n) => n.toString().padStart(2, "0"), []);
|
|
185
|
+
const iconContent = React.useMemo(() => {
|
|
187
186
|
if (icon) return icon;
|
|
187
|
+
if (!iconName) return null;
|
|
188
188
|
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: iconName, size: 16, className: iconClassName });
|
|
189
|
-
};
|
|
190
|
-
const
|
|
189
|
+
}, [icon, iconName, iconClassName]);
|
|
190
|
+
const timerContent = React.useMemo(() => {
|
|
191
191
|
if (timerSlot) return timerSlot;
|
|
192
192
|
if (renderTimer) return renderTimer(timeLeft);
|
|
193
|
+
if (!targetTime) return null;
|
|
193
194
|
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("font-mono font-bold", timerClassName), children: [
|
|
194
195
|
pad(timeLeft.hours),
|
|
195
196
|
":",
|
|
@@ -197,18 +198,22 @@ function BannerDeliveryCountdown({
|
|
|
197
198
|
":",
|
|
198
199
|
pad(timeLeft.seconds)
|
|
199
200
|
] });
|
|
200
|
-
};
|
|
201
|
+
}, [timerSlot, renderTimer, timeLeft, timerClassName, pad, targetTime]);
|
|
202
|
+
const deliveryDateContent = React.useMemo(() => {
|
|
203
|
+
if (!deliveryDate) return null;
|
|
204
|
+
return typeof deliveryDate === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-semibold", deliveryDateClassName), children: deliveryDate }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: deliveryDateClassName, children: deliveryDate });
|
|
205
|
+
}, [deliveryDate, deliveryDateClassName]);
|
|
206
|
+
const messageParts = React.useMemo(() => {
|
|
207
|
+
return [prefixText, timerContent, middleText, deliveryDateContent].filter(
|
|
208
|
+
(part) => part !== null && part !== void 0
|
|
209
|
+
);
|
|
210
|
+
}, [prefixText, timerContent, middleText, deliveryDateContent]);
|
|
201
211
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("w-full 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: [
|
|
202
|
-
|
|
203
|
-
/* @__PURE__ */ jsxRuntime.
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
" ",
|
|
208
|
-
middleText,
|
|
209
|
-
" ",
|
|
210
|
-
deliveryDate && (typeof deliveryDate === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-semibold", deliveryDateClassName), children: deliveryDate }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: deliveryDateClassName, children: deliveryDate }))
|
|
211
|
-
] })
|
|
212
|
+
iconContent,
|
|
213
|
+
messageParts.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { children: messageParts.map((part, index) => /* @__PURE__ */ jsxRuntime.jsxs(React__namespace.Fragment, { children: [
|
|
214
|
+
index > 0 ? " " : null,
|
|
215
|
+
part
|
|
216
|
+
] }, index)) })
|
|
212
217
|
] }) }) }) });
|
|
213
218
|
}
|
|
214
219
|
|
|
@@ -19,7 +19,6 @@ interface BannerDeliveryCountdownProps {
|
|
|
19
19
|
icon?: React.ReactNode;
|
|
20
20
|
/**
|
|
21
21
|
* Icon name for DynamicIcon (used if icon prop is not provided)
|
|
22
|
-
* @default "lucide/gift"
|
|
23
22
|
*/
|
|
24
23
|
iconName?: string;
|
|
25
24
|
/**
|
|
@@ -28,7 +27,6 @@ interface BannerDeliveryCountdownProps {
|
|
|
28
27
|
deliveryDate?: React.ReactNode;
|
|
29
28
|
/**
|
|
30
29
|
* Cutoff time for orders
|
|
31
|
-
* @default 4 hours from now
|
|
32
30
|
*/
|
|
33
31
|
cutoffTime?: Date;
|
|
34
32
|
/**
|
|
@@ -19,7 +19,6 @@ interface BannerDeliveryCountdownProps {
|
|
|
19
19
|
icon?: React.ReactNode;
|
|
20
20
|
/**
|
|
21
21
|
* Icon name for DynamicIcon (used if icon prop is not provided)
|
|
22
|
-
* @default "lucide/gift"
|
|
23
22
|
*/
|
|
24
23
|
iconName?: string;
|
|
25
24
|
/**
|
|
@@ -28,7 +27,6 @@ interface BannerDeliveryCountdownProps {
|
|
|
28
27
|
deliveryDate?: React.ReactNode;
|
|
29
28
|
/**
|
|
30
29
|
* Cutoff time for orders
|
|
31
|
-
* @default 4 hours from now
|
|
32
30
|
*/
|
|
33
31
|
cutoffTime?: Date;
|
|
34
32
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { useState, useEffect, useCallback, useMemo } from 'react';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -116,11 +116,11 @@ function processSvgForCurrentColor(svg) {
|
|
|
116
116
|
}
|
|
117
117
|
function BannerDeliveryCountdown({
|
|
118
118
|
icon,
|
|
119
|
-
iconName
|
|
120
|
-
deliveryDate
|
|
119
|
+
iconName,
|
|
120
|
+
deliveryDate,
|
|
121
121
|
cutoffTime,
|
|
122
|
-
prefixText
|
|
123
|
-
middleText
|
|
122
|
+
prefixText,
|
|
123
|
+
middleText,
|
|
124
124
|
timerSlot,
|
|
125
125
|
renderTimer,
|
|
126
126
|
className,
|
|
@@ -131,17 +131,16 @@ function BannerDeliveryCountdown({
|
|
|
131
131
|
timerClassName,
|
|
132
132
|
deliveryDateClassName
|
|
133
133
|
}) {
|
|
134
|
-
const
|
|
135
|
-
() => new Date(Date.now() + 4 * 60 * 60 * 1e3),
|
|
136
|
-
[]
|
|
137
|
-
);
|
|
138
|
-
const targetTime = cutoffTime ?? defaultCutoffTime;
|
|
134
|
+
const targetTime = cutoffTime;
|
|
139
135
|
const [timeLeft, setTimeLeft] = useState({
|
|
140
136
|
hours: 0,
|
|
141
137
|
minutes: 0,
|
|
142
138
|
seconds: 0
|
|
143
139
|
});
|
|
144
140
|
useEffect(() => {
|
|
141
|
+
if (!targetTime) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
145
144
|
const calculateTimeLeft = () => {
|
|
146
145
|
const now = (/* @__PURE__ */ new Date()).getTime();
|
|
147
146
|
const target = targetTime.getTime();
|
|
@@ -161,14 +160,16 @@ function BannerDeliveryCountdown({
|
|
|
161
160
|
}, 1e3);
|
|
162
161
|
return () => clearInterval(timer);
|
|
163
162
|
}, [targetTime]);
|
|
164
|
-
const pad = (n) => n.toString().padStart(2, "0");
|
|
165
|
-
const
|
|
163
|
+
const pad = useCallback((n) => n.toString().padStart(2, "0"), []);
|
|
164
|
+
const iconContent = useMemo(() => {
|
|
166
165
|
if (icon) return icon;
|
|
166
|
+
if (!iconName) return null;
|
|
167
167
|
return /* @__PURE__ */ jsx(DynamicIcon, { name: iconName, size: 16, className: iconClassName });
|
|
168
|
-
};
|
|
169
|
-
const
|
|
168
|
+
}, [icon, iconName, iconClassName]);
|
|
169
|
+
const timerContent = useMemo(() => {
|
|
170
170
|
if (timerSlot) return timerSlot;
|
|
171
171
|
if (renderTimer) return renderTimer(timeLeft);
|
|
172
|
+
if (!targetTime) return null;
|
|
172
173
|
return /* @__PURE__ */ jsxs("span", { className: cn("font-mono font-bold", timerClassName), children: [
|
|
173
174
|
pad(timeLeft.hours),
|
|
174
175
|
":",
|
|
@@ -176,18 +177,22 @@ function BannerDeliveryCountdown({
|
|
|
176
177
|
":",
|
|
177
178
|
pad(timeLeft.seconds)
|
|
178
179
|
] });
|
|
179
|
-
};
|
|
180
|
+
}, [timerSlot, renderTimer, timeLeft, timerClassName, pad, targetTime]);
|
|
181
|
+
const deliveryDateContent = useMemo(() => {
|
|
182
|
+
if (!deliveryDate) return null;
|
|
183
|
+
return typeof deliveryDate === "string" ? /* @__PURE__ */ jsx("span", { className: cn("font-semibold", deliveryDateClassName), children: deliveryDate }) : /* @__PURE__ */ jsx("span", { className: deliveryDateClassName, children: deliveryDate });
|
|
184
|
+
}, [deliveryDate, deliveryDateClassName]);
|
|
185
|
+
const messageParts = useMemo(() => {
|
|
186
|
+
return [prefixText, timerContent, middleText, deliveryDateContent].filter(
|
|
187
|
+
(part) => part !== null && part !== void 0
|
|
188
|
+
);
|
|
189
|
+
}, [prefixText, timerContent, middleText, deliveryDateContent]);
|
|
180
190
|
return /* @__PURE__ */ jsx("div", { className: cn("w-full bg-accent text-accent-foreground", className), children: /* @__PURE__ */ jsx("div", { className: cn("container py-2.5", containerClassName), children: /* @__PURE__ */ jsx("div", { className: cn("flex flex-wrap items-center justify-center gap-3 text-sm", contentClassName), children: /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2", messageClassName), children: [
|
|
181
|
-
|
|
182
|
-
/* @__PURE__ */
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
" ",
|
|
187
|
-
middleText,
|
|
188
|
-
" ",
|
|
189
|
-
deliveryDate && (typeof deliveryDate === "string" ? /* @__PURE__ */ jsx("span", { className: cn("font-semibold", deliveryDateClassName), children: deliveryDate }) : /* @__PURE__ */ jsx("span", { className: deliveryDateClassName, children: deliveryDate }))
|
|
190
|
-
] })
|
|
191
|
+
iconContent,
|
|
192
|
+
messageParts.length > 0 && /* @__PURE__ */ jsx("span", { children: messageParts.map((part, index) => /* @__PURE__ */ jsxs(React.Fragment, { children: [
|
|
193
|
+
index > 0 ? " " : null,
|
|
194
|
+
part
|
|
195
|
+
] }, index)) })
|
|
191
196
|
] }) }) }) });
|
|
192
197
|
}
|
|
193
198
|
|