@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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import * as
|
|
2
|
+
import * as React4 from 'react';
|
|
3
3
|
import { clsx } from 'clsx';
|
|
4
4
|
import { twMerge } from 'tailwind-merge';
|
|
5
5
|
import { Img } from '@page-speed/img';
|
|
@@ -87,7 +87,7 @@ function useNavigation({
|
|
|
87
87
|
href,
|
|
88
88
|
onClick
|
|
89
89
|
} = {}) {
|
|
90
|
-
const linkType =
|
|
90
|
+
const linkType = React4.useMemo(() => {
|
|
91
91
|
if (!href || href.trim() === "") {
|
|
92
92
|
return onClick ? "none" : "none";
|
|
93
93
|
}
|
|
@@ -108,7 +108,7 @@ function useNavigation({
|
|
|
108
108
|
return "internal";
|
|
109
109
|
}
|
|
110
110
|
}, [href, onClick]);
|
|
111
|
-
const normalizedHref =
|
|
111
|
+
const normalizedHref = React4.useMemo(() => {
|
|
112
112
|
if (!href || href.trim() === "") {
|
|
113
113
|
return void 0;
|
|
114
114
|
}
|
|
@@ -126,7 +126,7 @@ function useNavigation({
|
|
|
126
126
|
return trimmed;
|
|
127
127
|
}
|
|
128
128
|
}, [href, linkType]);
|
|
129
|
-
const target =
|
|
129
|
+
const target = React4.useMemo(() => {
|
|
130
130
|
switch (linkType) {
|
|
131
131
|
case "external":
|
|
132
132
|
return "_blank";
|
|
@@ -139,7 +139,7 @@ function useNavigation({
|
|
|
139
139
|
return void 0;
|
|
140
140
|
}
|
|
141
141
|
}, [linkType]);
|
|
142
|
-
const rel =
|
|
142
|
+
const rel = React4.useMemo(() => {
|
|
143
143
|
if (linkType === "external") {
|
|
144
144
|
return "noopener noreferrer";
|
|
145
145
|
}
|
|
@@ -148,7 +148,7 @@ function useNavigation({
|
|
|
148
148
|
const isExternal = linkType === "external";
|
|
149
149
|
const isInternal = linkType === "internal";
|
|
150
150
|
const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
|
|
151
|
-
const handleClick =
|
|
151
|
+
const handleClick = React4.useCallback(
|
|
152
152
|
(event) => {
|
|
153
153
|
if (onClick) {
|
|
154
154
|
try {
|
|
@@ -332,7 +332,7 @@ var buttonVariants = cva(baseStyles, {
|
|
|
332
332
|
size: "default"
|
|
333
333
|
}
|
|
334
334
|
});
|
|
335
|
-
var Pressable =
|
|
335
|
+
var Pressable = React4.forwardRef(
|
|
336
336
|
({
|
|
337
337
|
children,
|
|
338
338
|
className,
|
|
@@ -438,10 +438,10 @@ function DynamicIcon({
|
|
|
438
438
|
className,
|
|
439
439
|
alt
|
|
440
440
|
}) {
|
|
441
|
-
const [svgContent, setSvgContent] =
|
|
442
|
-
const [isLoading, setIsLoading] =
|
|
443
|
-
const [error, setError] =
|
|
444
|
-
const { url, iconName } =
|
|
441
|
+
const [svgContent, setSvgContent] = React4.useState(null);
|
|
442
|
+
const [isLoading, setIsLoading] = React4.useState(true);
|
|
443
|
+
const [error, setError] = React4.useState(null);
|
|
444
|
+
const { url, iconName } = React4.useMemo(() => {
|
|
445
445
|
const separator = name.includes("/") ? "/" : ":";
|
|
446
446
|
const [prefix, iconName2] = name.split(separator);
|
|
447
447
|
const baseUrl = `https://icons.opensite.ai/api/icon/${prefix}/${iconName2}?format=svg&width=${size}&height=${size}`;
|
|
@@ -450,7 +450,7 @@ function DynamicIcon({
|
|
|
450
450
|
iconName: iconName2
|
|
451
451
|
};
|
|
452
452
|
}, [name, size]);
|
|
453
|
-
|
|
453
|
+
React4.useEffect(() => {
|
|
454
454
|
let isMounted = true;
|
|
455
455
|
const fetchSvg = async () => {
|
|
456
456
|
const cached = svgCache.get(url);
|
|
@@ -857,10 +857,10 @@ function ArticleChaptersAuthorComponent({
|
|
|
857
857
|
optixFlowConfig
|
|
858
858
|
}) {
|
|
859
859
|
const conclusionActions = conclusionActionsProp ?? (conclusionButtonText ? [{ label: conclusionButtonText, href: conclusionButtonHref || "#", variant: "default" }] : []);
|
|
860
|
-
const [activeChapter, setActiveChapter] =
|
|
860
|
+
const [activeChapter, setActiveChapter] = React4.useState(
|
|
861
861
|
chapters?.[0]?.id || ""
|
|
862
862
|
);
|
|
863
|
-
|
|
863
|
+
React4.useEffect(() => {
|
|
864
864
|
if (!enableChapterTracking || !chapters || chapters.length === 0) return;
|
|
865
865
|
const observer = new IntersectionObserver(
|
|
866
866
|
(entries) => {
|
|
@@ -878,20 +878,20 @@ function ArticleChaptersAuthorComponent({
|
|
|
878
878
|
});
|
|
879
879
|
return () => observer.disconnect();
|
|
880
880
|
}, [chapters, enableChapterTracking]);
|
|
881
|
-
const
|
|
881
|
+
const breadcrumbsContent = React4.useMemo(() => {
|
|
882
882
|
if (breadcrumbsSlot) return breadcrumbsSlot;
|
|
883
883
|
if (!breadcrumbs || breadcrumbs.length === 0) return null;
|
|
884
884
|
return /* @__PURE__ */ jsx(Breadcrumb, { className: cn("mb-8", breadcrumbClassName), children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
|
|
885
885
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: "#", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/home", size: 16 }) }) }) }),
|
|
886
|
-
breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(
|
|
886
|
+
breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(React4.Fragment, { children: [
|
|
887
887
|
/* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
|
|
888
888
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: crumb.href, children: crumb.label }) }) })
|
|
889
889
|
] }, index)),
|
|
890
890
|
/* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
|
|
891
891
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: typeof currentPage === "string" ? currentPage : currentPage }) })
|
|
892
892
|
] }) });
|
|
893
|
-
};
|
|
894
|
-
const
|
|
893
|
+
}, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
|
|
894
|
+
const chaptersNavContent = React4.useMemo(() => {
|
|
895
895
|
if (chaptersSlot) return chaptersSlot;
|
|
896
896
|
if (!chapters || chapters.length === 0) return null;
|
|
897
897
|
return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border p-4", chaptersClassName), children: [
|
|
@@ -899,7 +899,7 @@ function ArticleChaptersAuthorComponent({
|
|
|
899
899
|
/* @__PURE__ */ jsx("nav", { className: "space-y-2", children: chapters.map((chapter) => {
|
|
900
900
|
const isActive = activeChapter === chapter.id;
|
|
901
901
|
if (renderChapterLink) {
|
|
902
|
-
return /* @__PURE__ */ jsx(
|
|
902
|
+
return /* @__PURE__ */ jsx(React4.Fragment, { children: renderChapterLink(chapter, isActive) }, chapter.id);
|
|
903
903
|
}
|
|
904
904
|
return /* @__PURE__ */ jsxs(
|
|
905
905
|
Pressable,
|
|
@@ -918,50 +918,52 @@ function ArticleChaptersAuthorComponent({
|
|
|
918
918
|
);
|
|
919
919
|
}) })
|
|
920
920
|
] });
|
|
921
|
-
};
|
|
922
|
-
const
|
|
921
|
+
}, [chaptersSlot, chapters, activeChapter, renderChapterLink, chaptersClassName]);
|
|
922
|
+
const authorCardContent = React4.useMemo(() => {
|
|
923
923
|
if (authorSlot) return authorSlot;
|
|
924
924
|
if (!author) return null;
|
|
925
|
-
|
|
926
|
-
|
|
925
|
+
let socialLinksContent = null;
|
|
926
|
+
if (author.socialLinks) {
|
|
927
927
|
if (Array.isArray(author.socialLinks)) {
|
|
928
|
-
if (author.socialLinks.length
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
928
|
+
if (author.socialLinks.length > 0) {
|
|
929
|
+
socialLinksContent = /* @__PURE__ */ jsx("div", { className: "mt-4 flex gap-2", children: author.socialLinks.map((link, index) => /* @__PURE__ */ jsx(
|
|
930
|
+
Pressable,
|
|
931
|
+
{
|
|
932
|
+
href: link.href,
|
|
933
|
+
className: cn(
|
|
934
|
+
"flex h-8 w-8 items-center justify-center rounded-md border hover:bg-muted",
|
|
935
|
+
link.className
|
|
936
|
+
),
|
|
937
|
+
"aria-label": link["aria-label"],
|
|
938
|
+
children: link.icon ?? /* @__PURE__ */ jsx(DynamicIcon, { name: `lucide/${link.platform}`, size: 14 })
|
|
939
|
+
},
|
|
940
|
+
index
|
|
941
|
+
)) });
|
|
942
|
+
}
|
|
942
943
|
} else {
|
|
943
944
|
const links = author.socialLinks;
|
|
944
945
|
const socialEntries = Object.entries(links).filter(([, href]) => href);
|
|
945
|
-
if (socialEntries.length
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
946
|
+
if (socialEntries.length > 0) {
|
|
947
|
+
const platformLabels = {
|
|
948
|
+
twitter: "Twitter",
|
|
949
|
+
linkedin: "LinkedIn",
|
|
950
|
+
github: "GitHub",
|
|
951
|
+
facebook: "Facebook",
|
|
952
|
+
instagram: "Instagram"
|
|
953
|
+
};
|
|
954
|
+
socialLinksContent = /* @__PURE__ */ jsx("div", { className: "mt-4 flex gap-2", children: socialEntries.map(([platform, href]) => /* @__PURE__ */ jsx(
|
|
955
|
+
Pressable,
|
|
956
|
+
{
|
|
957
|
+
href,
|
|
958
|
+
className: "flex h-8 w-8 items-center justify-center rounded-md border hover:bg-muted",
|
|
959
|
+
"aria-label": platformLabels[platform] || platform.charAt(0).toUpperCase() + platform.slice(1),
|
|
960
|
+
children: /* @__PURE__ */ jsx(DynamicIcon, { name: `lucide/${platform}`, size: 14 })
|
|
961
|
+
},
|
|
962
|
+
platform
|
|
963
|
+
)) });
|
|
964
|
+
}
|
|
963
965
|
}
|
|
964
|
-
}
|
|
966
|
+
}
|
|
965
967
|
return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border p-4", authorClassName), children: [
|
|
966
968
|
/* @__PURE__ */ jsx("h3", { className: "mb-4 text-sm font-semibold", children: "About the Author" }),
|
|
967
969
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
@@ -975,25 +977,23 @@ function ArticleChaptersAuthorComponent({
|
|
|
975
977
|
] })
|
|
976
978
|
] }),
|
|
977
979
|
author.bio && /* @__PURE__ */ jsx("p", { className: "mt-3 text-sm text-muted-foreground", children: author.bio }),
|
|
978
|
-
|
|
980
|
+
socialLinksContent
|
|
979
981
|
] });
|
|
980
|
-
};
|
|
981
|
-
const
|
|
982
|
+
}, [authorSlot, author, authorClassName]);
|
|
983
|
+
const heroMediaContent = React4.useMemo(() => {
|
|
982
984
|
if (heroMediaSlot) return heroMediaSlot;
|
|
983
|
-
if (heroImageSrc)
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
};
|
|
996
|
-
const renderConclusion = () => {
|
|
985
|
+
if (!heroImageSrc) return null;
|
|
986
|
+
return /* @__PURE__ */ jsx(
|
|
987
|
+
Img,
|
|
988
|
+
{
|
|
989
|
+
src: heroImageSrc,
|
|
990
|
+
alt: heroImageAlt,
|
|
991
|
+
className: cn("my-8 aspect-video w-full rounded-lg object-cover", heroImageClassName),
|
|
992
|
+
optixFlowConfig
|
|
993
|
+
}
|
|
994
|
+
);
|
|
995
|
+
}, [heroMediaSlot, heroImageSrc, heroImageAlt, heroImageClassName, optixFlowConfig]);
|
|
996
|
+
const conclusionContent = React4.useMemo(() => {
|
|
997
997
|
if (conclusionSlot) return conclusionSlot;
|
|
998
998
|
if (!conclusionTitle && !conclusionDescription && (!conclusionActions || conclusionActions.length === 0)) return null;
|
|
999
999
|
return /* @__PURE__ */ jsxs("div", { className: cn("mt-12 rounded-lg border bg-muted/50 p-6 not-prose", conclusionClassName), children: [
|
|
@@ -1017,22 +1017,22 @@ function ArticleChaptersAuthorComponent({
|
|
|
1017
1017
|
);
|
|
1018
1018
|
}) })
|
|
1019
1019
|
] });
|
|
1020
|
-
};
|
|
1020
|
+
}, [conclusionSlot, conclusionTitle, conclusionDescription, conclusionActions, conclusionClassName]);
|
|
1021
1021
|
return /* @__PURE__ */ jsx("section", { className: cn("py-32", className), children: /* @__PURE__ */ jsxs("div", { className: cn("container", containerClassName), children: [
|
|
1022
|
-
|
|
1022
|
+
breadcrumbsContent,
|
|
1023
1023
|
/* @__PURE__ */ jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
|
|
1024
1024
|
title && (typeof title === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: title })),
|
|
1025
1025
|
subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-lg text-muted-foreground md:text-xl", subtitleClassName), children: subtitle }) : /* @__PURE__ */ jsx("div", { className: cn("mt-4", subtitleClassName), children: subtitle }))
|
|
1026
1026
|
] }),
|
|
1027
1027
|
/* @__PURE__ */ jsxs("div", { className: "grid gap-10 lg:grid-cols-[280px_minmax(0,1fr)]", children: [
|
|
1028
1028
|
/* @__PURE__ */ jsx("aside", { className: cn("hidden lg:block", sidebarClassName), children: /* @__PURE__ */ jsxs("div", { className: "sticky top-8 space-y-6", children: [
|
|
1029
|
-
|
|
1030
|
-
|
|
1029
|
+
chaptersNavContent,
|
|
1030
|
+
authorCardContent
|
|
1031
1031
|
] }) }),
|
|
1032
1032
|
/* @__PURE__ */ jsxs("article", { className: cn("prose max-w-none dark:prose-invert", articleClassName), children: [
|
|
1033
|
-
|
|
1033
|
+
heroMediaContent,
|
|
1034
1034
|
children || defaultArticleContent(optixFlowConfig),
|
|
1035
|
-
|
|
1035
|
+
conclusionContent
|
|
1036
1036
|
] })
|
|
1037
1037
|
] })
|
|
1038
1038
|
] }) });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var React4 = require('react');
|
|
5
5
|
var clsx = require('clsx');
|
|
6
6
|
var tailwindMerge = require('tailwind-merge');
|
|
7
7
|
var img = require('@page-speed/img');
|
|
@@ -28,7 +28,7 @@ function _interopNamespace(e) {
|
|
|
28
28
|
return Object.freeze(n);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
var
|
|
31
|
+
var React4__namespace = /*#__PURE__*/_interopNamespace(React4);
|
|
32
32
|
var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrimitive);
|
|
33
33
|
|
|
34
34
|
// components/blocks/article/article-compact-toc.tsx
|
|
@@ -110,7 +110,7 @@ function useNavigation({
|
|
|
110
110
|
href,
|
|
111
111
|
onClick
|
|
112
112
|
} = {}) {
|
|
113
|
-
const linkType =
|
|
113
|
+
const linkType = React4__namespace.useMemo(() => {
|
|
114
114
|
if (!href || href.trim() === "") {
|
|
115
115
|
return onClick ? "none" : "none";
|
|
116
116
|
}
|
|
@@ -131,7 +131,7 @@ function useNavigation({
|
|
|
131
131
|
return "internal";
|
|
132
132
|
}
|
|
133
133
|
}, [href, onClick]);
|
|
134
|
-
const normalizedHref =
|
|
134
|
+
const normalizedHref = React4__namespace.useMemo(() => {
|
|
135
135
|
if (!href || href.trim() === "") {
|
|
136
136
|
return void 0;
|
|
137
137
|
}
|
|
@@ -149,7 +149,7 @@ function useNavigation({
|
|
|
149
149
|
return trimmed;
|
|
150
150
|
}
|
|
151
151
|
}, [href, linkType]);
|
|
152
|
-
const target =
|
|
152
|
+
const target = React4__namespace.useMemo(() => {
|
|
153
153
|
switch (linkType) {
|
|
154
154
|
case "external":
|
|
155
155
|
return "_blank";
|
|
@@ -162,7 +162,7 @@ function useNavigation({
|
|
|
162
162
|
return void 0;
|
|
163
163
|
}
|
|
164
164
|
}, [linkType]);
|
|
165
|
-
const rel =
|
|
165
|
+
const rel = React4__namespace.useMemo(() => {
|
|
166
166
|
if (linkType === "external") {
|
|
167
167
|
return "noopener noreferrer";
|
|
168
168
|
}
|
|
@@ -171,7 +171,7 @@ function useNavigation({
|
|
|
171
171
|
const isExternal = linkType === "external";
|
|
172
172
|
const isInternal = linkType === "internal";
|
|
173
173
|
const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
|
|
174
|
-
const handleClick =
|
|
174
|
+
const handleClick = React4__namespace.useCallback(
|
|
175
175
|
(event) => {
|
|
176
176
|
if (onClick) {
|
|
177
177
|
try {
|
|
@@ -355,7 +355,7 @@ var buttonVariants = classVarianceAuthority.cva(baseStyles, {
|
|
|
355
355
|
size: "default"
|
|
356
356
|
}
|
|
357
357
|
});
|
|
358
|
-
var Pressable =
|
|
358
|
+
var Pressable = React4__namespace.forwardRef(
|
|
359
359
|
({
|
|
360
360
|
children,
|
|
361
361
|
className,
|
|
@@ -461,10 +461,10 @@ function DynamicIcon({
|
|
|
461
461
|
className,
|
|
462
462
|
alt
|
|
463
463
|
}) {
|
|
464
|
-
const [svgContent, setSvgContent] =
|
|
465
|
-
const [isLoading, setIsLoading] =
|
|
466
|
-
const [error, setError] =
|
|
467
|
-
const { url, iconName } =
|
|
464
|
+
const [svgContent, setSvgContent] = React4__namespace.useState(null);
|
|
465
|
+
const [isLoading, setIsLoading] = React4__namespace.useState(true);
|
|
466
|
+
const [error, setError] = React4__namespace.useState(null);
|
|
467
|
+
const { url, iconName } = React4__namespace.useMemo(() => {
|
|
468
468
|
const separator = name.includes("/") ? "/" : ":";
|
|
469
469
|
const [prefix, iconName2] = name.split(separator);
|
|
470
470
|
const baseUrl = `https://icons.opensite.ai/api/icon/${prefix}/${iconName2}?format=svg&width=${size}&height=${size}`;
|
|
@@ -473,7 +473,7 @@ function DynamicIcon({
|
|
|
473
473
|
iconName: iconName2
|
|
474
474
|
};
|
|
475
475
|
}, [name, size]);
|
|
476
|
-
|
|
476
|
+
React4__namespace.useEffect(() => {
|
|
477
477
|
let isMounted = true;
|
|
478
478
|
const fetchSvg = async () => {
|
|
479
479
|
const cached = svgCache.get(url);
|
|
@@ -711,11 +711,11 @@ function ArticleCompactTocComponent({
|
|
|
711
711
|
enableTocTracking = true,
|
|
712
712
|
optixFlowConfig
|
|
713
713
|
}) {
|
|
714
|
-
const [activeSection, setActiveSection] =
|
|
714
|
+
const [activeSection, setActiveSection] = React4__namespace.useState(
|
|
715
715
|
sections?.[0]?.id || ""
|
|
716
716
|
);
|
|
717
|
-
const [isTocOpen, setIsTocOpen] =
|
|
718
|
-
|
|
717
|
+
const [isTocOpen, setIsTocOpen] = React4__namespace.useState(false);
|
|
718
|
+
React4__namespace.useEffect(() => {
|
|
719
719
|
if (!enableTocTracking) return;
|
|
720
720
|
const observer = new IntersectionObserver(
|
|
721
721
|
(entries) => {
|
|
@@ -733,19 +733,20 @@ function ArticleCompactTocComponent({
|
|
|
733
733
|
});
|
|
734
734
|
return () => observer.disconnect();
|
|
735
735
|
}, [sections, enableTocTracking]);
|
|
736
|
-
const
|
|
736
|
+
const breadcrumbsContent = React4__namespace.useMemo(() => {
|
|
737
737
|
if (breadcrumbsSlot) return breadcrumbsSlot;
|
|
738
|
+
if (!breadcrumbs && !currentPage) return null;
|
|
738
739
|
return /* @__PURE__ */ jsxRuntime.jsx(Breadcrumb, { className: cn("mb-6", breadcrumbClassName), children: /* @__PURE__ */ jsxRuntime.jsxs(BreadcrumbList, { children: [
|
|
739
740
|
/* @__PURE__ */ jsxRuntime.jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: "#", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/home", size: 16 }) }) }) }),
|
|
740
|
-
breadcrumbs?.map((crumb, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
741
|
+
breadcrumbs?.map((crumb, index) => /* @__PURE__ */ jsxRuntime.jsxs(React4__namespace.Fragment, { children: [
|
|
741
742
|
/* @__PURE__ */ jsxRuntime.jsx(BreadcrumbSeparator, {}),
|
|
742
743
|
/* @__PURE__ */ jsxRuntime.jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: crumb.href, children: crumb.label }) }) })
|
|
743
744
|
] }, index)),
|
|
744
745
|
/* @__PURE__ */ jsxRuntime.jsx(BreadcrumbSeparator, {}),
|
|
745
746
|
/* @__PURE__ */ jsxRuntime.jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbPage, { children: currentPage }) })
|
|
746
747
|
] }) });
|
|
747
|
-
};
|
|
748
|
-
const
|
|
748
|
+
}, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
|
|
749
|
+
const shareContent = React4__namespace.useMemo(() => {
|
|
749
750
|
if (shareSlot) return shareSlot;
|
|
750
751
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
751
752
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-6 flex items-center gap-2", shareClassName), children: [
|
|
@@ -761,8 +762,8 @@ function ArticleCompactTocComponent({
|
|
|
761
762
|
index
|
|
762
763
|
))
|
|
763
764
|
] });
|
|
764
|
-
};
|
|
765
|
-
const
|
|
765
|
+
}, [shareSlot, socialLinks, shareClassName]);
|
|
766
|
+
const tocContent = React4__namespace.useMemo(() => {
|
|
766
767
|
if (tocSlot) return tocSlot;
|
|
767
768
|
if (!sections || sections.length === 0) return null;
|
|
768
769
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-8 lg:hidden", children: [
|
|
@@ -789,7 +790,7 @@ function ArticleCompactTocComponent({
|
|
|
789
790
|
isTocOpen && /* @__PURE__ */ jsxRuntime.jsx("nav", { className: "mt-2 space-y-2 rounded-lg border p-4", children: sections.map((section) => {
|
|
790
791
|
const isActive = activeSection === section.id;
|
|
791
792
|
if (renderSectionLink) {
|
|
792
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
793
|
+
return /* @__PURE__ */ jsxRuntime.jsx(React4__namespace.Fragment, { children: renderSectionLink(section, isActive) }, section.id);
|
|
793
794
|
}
|
|
794
795
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
795
796
|
Pressable,
|
|
@@ -806,8 +807,8 @@ function ArticleCompactTocComponent({
|
|
|
806
807
|
);
|
|
807
808
|
}) })
|
|
808
809
|
] });
|
|
809
|
-
};
|
|
810
|
-
const
|
|
810
|
+
}, [tocSlot, sections, isTocOpen, activeSection, renderSectionLink, tocClassName]);
|
|
811
|
+
const heroMediaContent = React4__namespace.useMemo(() => {
|
|
811
812
|
if (heroMediaSlot) return heroMediaSlot;
|
|
812
813
|
if (!heroImageSrc) return null;
|
|
813
814
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -819,9 +820,9 @@ function ArticleCompactTocComponent({
|
|
|
819
820
|
optixFlowConfig
|
|
820
821
|
}
|
|
821
822
|
);
|
|
822
|
-
};
|
|
823
|
+
}, [heroMediaSlot, heroImageSrc, heroImageAlt, heroImageClassName, optixFlowConfig]);
|
|
823
824
|
return /* @__PURE__ */ jsxRuntime.jsx("section", { className: cn("py-32", className), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container", containerClassName), children: [
|
|
824
|
-
|
|
825
|
+
breadcrumbsContent,
|
|
825
826
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto max-w-3xl", contentClassName), children: [
|
|
826
827
|
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
|
|
827
828
|
(authorName || publishDate || readTime) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-4 flex flex-wrap items-center gap-4 text-sm text-muted-foreground", metaClassName), children: [
|
|
@@ -831,11 +832,11 @@ function ArticleCompactTocComponent({
|
|
|
831
832
|
publishDate && readTime && /* @__PURE__ */ jsxRuntime.jsx(Separator, { orientation: "vertical", className: "h-4" }),
|
|
832
833
|
readTime && /* @__PURE__ */ jsxRuntime.jsx("span", { children: readTime })
|
|
833
834
|
] }),
|
|
834
|
-
|
|
835
|
+
shareContent,
|
|
835
836
|
/* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "my-8" }),
|
|
836
|
-
|
|
837
|
+
tocContent,
|
|
837
838
|
/* @__PURE__ */ jsxRuntime.jsxs("article", { className: cn("prose max-w-none dark:prose-invert", articleClassName), children: [
|
|
838
|
-
|
|
839
|
+
heroMediaContent,
|
|
839
840
|
children ?? defaultArticleContent()
|
|
840
841
|
] })
|
|
841
842
|
] })
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import * as
|
|
2
|
+
import * as React4 from 'react';
|
|
3
3
|
import { clsx } from 'clsx';
|
|
4
4
|
import { twMerge } from 'tailwind-merge';
|
|
5
5
|
import { Img } from '@page-speed/img';
|
|
@@ -87,7 +87,7 @@ function useNavigation({
|
|
|
87
87
|
href,
|
|
88
88
|
onClick
|
|
89
89
|
} = {}) {
|
|
90
|
-
const linkType =
|
|
90
|
+
const linkType = React4.useMemo(() => {
|
|
91
91
|
if (!href || href.trim() === "") {
|
|
92
92
|
return onClick ? "none" : "none";
|
|
93
93
|
}
|
|
@@ -108,7 +108,7 @@ function useNavigation({
|
|
|
108
108
|
return "internal";
|
|
109
109
|
}
|
|
110
110
|
}, [href, onClick]);
|
|
111
|
-
const normalizedHref =
|
|
111
|
+
const normalizedHref = React4.useMemo(() => {
|
|
112
112
|
if (!href || href.trim() === "") {
|
|
113
113
|
return void 0;
|
|
114
114
|
}
|
|
@@ -126,7 +126,7 @@ function useNavigation({
|
|
|
126
126
|
return trimmed;
|
|
127
127
|
}
|
|
128
128
|
}, [href, linkType]);
|
|
129
|
-
const target =
|
|
129
|
+
const target = React4.useMemo(() => {
|
|
130
130
|
switch (linkType) {
|
|
131
131
|
case "external":
|
|
132
132
|
return "_blank";
|
|
@@ -139,7 +139,7 @@ function useNavigation({
|
|
|
139
139
|
return void 0;
|
|
140
140
|
}
|
|
141
141
|
}, [linkType]);
|
|
142
|
-
const rel =
|
|
142
|
+
const rel = React4.useMemo(() => {
|
|
143
143
|
if (linkType === "external") {
|
|
144
144
|
return "noopener noreferrer";
|
|
145
145
|
}
|
|
@@ -148,7 +148,7 @@ function useNavigation({
|
|
|
148
148
|
const isExternal = linkType === "external";
|
|
149
149
|
const isInternal = linkType === "internal";
|
|
150
150
|
const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
|
|
151
|
-
const handleClick =
|
|
151
|
+
const handleClick = React4.useCallback(
|
|
152
152
|
(event) => {
|
|
153
153
|
if (onClick) {
|
|
154
154
|
try {
|
|
@@ -332,7 +332,7 @@ var buttonVariants = cva(baseStyles, {
|
|
|
332
332
|
size: "default"
|
|
333
333
|
}
|
|
334
334
|
});
|
|
335
|
-
var Pressable =
|
|
335
|
+
var Pressable = React4.forwardRef(
|
|
336
336
|
({
|
|
337
337
|
children,
|
|
338
338
|
className,
|
|
@@ -438,10 +438,10 @@ function DynamicIcon({
|
|
|
438
438
|
className,
|
|
439
439
|
alt
|
|
440
440
|
}) {
|
|
441
|
-
const [svgContent, setSvgContent] =
|
|
442
|
-
const [isLoading, setIsLoading] =
|
|
443
|
-
const [error, setError] =
|
|
444
|
-
const { url, iconName } =
|
|
441
|
+
const [svgContent, setSvgContent] = React4.useState(null);
|
|
442
|
+
const [isLoading, setIsLoading] = React4.useState(true);
|
|
443
|
+
const [error, setError] = React4.useState(null);
|
|
444
|
+
const { url, iconName } = React4.useMemo(() => {
|
|
445
445
|
const separator = name.includes("/") ? "/" : ":";
|
|
446
446
|
const [prefix, iconName2] = name.split(separator);
|
|
447
447
|
const baseUrl = `https://icons.opensite.ai/api/icon/${prefix}/${iconName2}?format=svg&width=${size}&height=${size}`;
|
|
@@ -450,7 +450,7 @@ function DynamicIcon({
|
|
|
450
450
|
iconName: iconName2
|
|
451
451
|
};
|
|
452
452
|
}, [name, size]);
|
|
453
|
-
|
|
453
|
+
React4.useEffect(() => {
|
|
454
454
|
let isMounted = true;
|
|
455
455
|
const fetchSvg = async () => {
|
|
456
456
|
const cached = svgCache.get(url);
|
|
@@ -688,11 +688,11 @@ function ArticleCompactTocComponent({
|
|
|
688
688
|
enableTocTracking = true,
|
|
689
689
|
optixFlowConfig
|
|
690
690
|
}) {
|
|
691
|
-
const [activeSection, setActiveSection] =
|
|
691
|
+
const [activeSection, setActiveSection] = React4.useState(
|
|
692
692
|
sections?.[0]?.id || ""
|
|
693
693
|
);
|
|
694
|
-
const [isTocOpen, setIsTocOpen] =
|
|
695
|
-
|
|
694
|
+
const [isTocOpen, setIsTocOpen] = React4.useState(false);
|
|
695
|
+
React4.useEffect(() => {
|
|
696
696
|
if (!enableTocTracking) return;
|
|
697
697
|
const observer = new IntersectionObserver(
|
|
698
698
|
(entries) => {
|
|
@@ -710,19 +710,20 @@ function ArticleCompactTocComponent({
|
|
|
710
710
|
});
|
|
711
711
|
return () => observer.disconnect();
|
|
712
712
|
}, [sections, enableTocTracking]);
|
|
713
|
-
const
|
|
713
|
+
const breadcrumbsContent = React4.useMemo(() => {
|
|
714
714
|
if (breadcrumbsSlot) return breadcrumbsSlot;
|
|
715
|
+
if (!breadcrumbs && !currentPage) return null;
|
|
715
716
|
return /* @__PURE__ */ jsx(Breadcrumb, { className: cn("mb-6", breadcrumbClassName), children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
|
|
716
717
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: "#", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/home", size: 16 }) }) }) }),
|
|
717
|
-
breadcrumbs?.map((crumb, index) => /* @__PURE__ */ jsxs(
|
|
718
|
+
breadcrumbs?.map((crumb, index) => /* @__PURE__ */ jsxs(React4.Fragment, { children: [
|
|
718
719
|
/* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
|
|
719
720
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: crumb.href, children: crumb.label }) }) })
|
|
720
721
|
] }, index)),
|
|
721
722
|
/* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
|
|
722
723
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: currentPage }) })
|
|
723
724
|
] }) });
|
|
724
|
-
};
|
|
725
|
-
const
|
|
725
|
+
}, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
|
|
726
|
+
const shareContent = React4.useMemo(() => {
|
|
726
727
|
if (shareSlot) return shareSlot;
|
|
727
728
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
728
729
|
return /* @__PURE__ */ jsxs("div", { className: cn("mt-6 flex items-center gap-2", shareClassName), children: [
|
|
@@ -738,8 +739,8 @@ function ArticleCompactTocComponent({
|
|
|
738
739
|
index
|
|
739
740
|
))
|
|
740
741
|
] });
|
|
741
|
-
};
|
|
742
|
-
const
|
|
742
|
+
}, [shareSlot, socialLinks, shareClassName]);
|
|
743
|
+
const tocContent = React4.useMemo(() => {
|
|
743
744
|
if (tocSlot) return tocSlot;
|
|
744
745
|
if (!sections || sections.length === 0) return null;
|
|
745
746
|
return /* @__PURE__ */ jsxs("div", { className: "mb-8 lg:hidden", children: [
|
|
@@ -766,7 +767,7 @@ function ArticleCompactTocComponent({
|
|
|
766
767
|
isTocOpen && /* @__PURE__ */ jsx("nav", { className: "mt-2 space-y-2 rounded-lg border p-4", children: sections.map((section) => {
|
|
767
768
|
const isActive = activeSection === section.id;
|
|
768
769
|
if (renderSectionLink) {
|
|
769
|
-
return /* @__PURE__ */ jsx(
|
|
770
|
+
return /* @__PURE__ */ jsx(React4.Fragment, { children: renderSectionLink(section, isActive) }, section.id);
|
|
770
771
|
}
|
|
771
772
|
return /* @__PURE__ */ jsx(
|
|
772
773
|
Pressable,
|
|
@@ -783,8 +784,8 @@ function ArticleCompactTocComponent({
|
|
|
783
784
|
);
|
|
784
785
|
}) })
|
|
785
786
|
] });
|
|
786
|
-
};
|
|
787
|
-
const
|
|
787
|
+
}, [tocSlot, sections, isTocOpen, activeSection, renderSectionLink, tocClassName]);
|
|
788
|
+
const heroMediaContent = React4.useMemo(() => {
|
|
788
789
|
if (heroMediaSlot) return heroMediaSlot;
|
|
789
790
|
if (!heroImageSrc) return null;
|
|
790
791
|
return /* @__PURE__ */ jsx(
|
|
@@ -796,9 +797,9 @@ function ArticleCompactTocComponent({
|
|
|
796
797
|
optixFlowConfig
|
|
797
798
|
}
|
|
798
799
|
);
|
|
799
|
-
};
|
|
800
|
+
}, [heroMediaSlot, heroImageSrc, heroImageAlt, heroImageClassName, optixFlowConfig]);
|
|
800
801
|
return /* @__PURE__ */ jsx("section", { className: cn("py-32", className), children: /* @__PURE__ */ jsxs("div", { className: cn("container", containerClassName), children: [
|
|
801
|
-
|
|
802
|
+
breadcrumbsContent,
|
|
802
803
|
/* @__PURE__ */ jsxs("div", { className: cn("mx-auto max-w-3xl", contentClassName), children: [
|
|
803
804
|
title && (typeof title === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: title })),
|
|
804
805
|
(authorName || publishDate || readTime) && /* @__PURE__ */ jsxs("div", { className: cn("mt-4 flex flex-wrap items-center gap-4 text-sm text-muted-foreground", metaClassName), children: [
|
|
@@ -808,11 +809,11 @@ function ArticleCompactTocComponent({
|
|
|
808
809
|
publishDate && readTime && /* @__PURE__ */ jsx(Separator, { orientation: "vertical", className: "h-4" }),
|
|
809
810
|
readTime && /* @__PURE__ */ jsx("span", { children: readTime })
|
|
810
811
|
] }),
|
|
811
|
-
|
|
812
|
+
shareContent,
|
|
812
813
|
/* @__PURE__ */ jsx(Separator, { className: "my-8" }),
|
|
813
|
-
|
|
814
|
+
tocContent,
|
|
814
815
|
/* @__PURE__ */ jsxs("article", { className: cn("prose max-w-none dark:prose-invert", articleClassName), children: [
|
|
815
|
-
|
|
816
|
+
heroMediaContent,
|
|
816
817
|
children ?? defaultArticleContent()
|
|
817
818
|
] })
|
|
818
819
|
] })
|