@opensite/ui 0.8.9 → 0.9.1
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 +32 -4
- package/dist/about-company-profile.js +32 -4
- package/dist/about-culture-tabs.cjs +38 -8
- package/dist/about-culture-tabs.js +38 -8
- package/dist/about-developer-profile.cjs +37 -5
- package/dist/about-developer-profile.js +37 -5
- package/dist/about-developer-story.cjs +31 -3
- package/dist/about-developer-story.js +31 -3
- package/dist/about-expandable-values.cjs +43 -9
- package/dist/about-expandable-values.js +43 -9
- package/dist/about-interactive-tabs.cjs +63 -4
- package/dist/about-interactive-tabs.js +63 -4
- package/dist/about-location-info-hero.cjs +28 -2
- package/dist/about-location-info-hero.js +28 -2
- package/dist/about-minimal-story.cjs +35 -4
- package/dist/about-minimal-story.js +35 -4
- package/dist/about-mission-dual-image.cjs +30 -2
- package/dist/about-mission-dual-image.js +30 -2
- package/dist/about-mission-features.cjs +36 -4
- package/dist/about-mission-features.js +36 -4
- package/dist/about-mission-principles.cjs +39 -6
- package/dist/about-mission-principles.js +39 -6
- package/dist/about-network-spotlight.cjs +33 -5
- package/dist/about-network-spotlight.js +33 -5
- package/dist/about-startup-team.cjs +47 -6
- package/dist/about-startup-team.js +47 -6
- package/dist/about-stats-showcase.cjs +31 -4
- package/dist/about-stats-showcase.js +31 -4
- package/dist/about-stats-sidebar.cjs +29 -3
- package/dist/about-stats-sidebar.js +29 -3
- package/dist/about-story-expertise.cjs +44 -8
- package/dist/about-story-expertise.js +44 -8
- package/dist/about-story-gallery.cjs +28 -1
- package/dist/about-story-gallery.js +28 -1
- package/dist/about-story-hero.cjs +36 -4
- package/dist/about-story-hero.js +36 -4
- package/dist/about-streamline-team.cjs +32 -4
- package/dist/about-streamline-team.js +32 -4
- package/dist/about-vision-gallery.cjs +32 -3
- package/dist/about-vision-gallery.js +32 -3
- package/dist/alternating-blocks.cjs +5 -1
- package/dist/alternating-blocks.js +5 -1
- package/dist/banner-announcement-dismissible.cjs +377 -1
- package/dist/banner-announcement-dismissible.d.cts +7 -1
- package/dist/banner-announcement-dismissible.d.ts +7 -1
- package/dist/banner-announcement-dismissible.js +378 -2
- package/dist/banner-countdown-sale.cjs +388 -8
- package/dist/banner-countdown-sale.d.cts +11 -1
- package/dist/banner-countdown-sale.d.ts +11 -1
- package/dist/banner-countdown-sale.js +379 -3
- package/dist/banner-delivery-countdown.cjs +377 -1
- package/dist/banner-delivery-countdown.d.cts +11 -1
- package/dist/banner-delivery-countdown.d.ts +11 -1
- package/dist/banner-delivery-countdown.js +378 -2
- package/dist/banner-event-promo.cjs +377 -1
- package/dist/banner-event-promo.d.cts +7 -1
- package/dist/banner-event-promo.d.ts +7 -1
- package/dist/banner-event-promo.js +378 -2
- package/dist/banner-floating-offer.cjs +379 -3
- package/dist/banner-floating-offer.d.cts +7 -1
- package/dist/banner-floating-offer.d.ts +7 -1
- package/dist/banner-floating-offer.js +380 -4
- package/dist/banner-gdpr-rights.cjs +398 -31
- package/dist/banner-gdpr-rights.d.cts +7 -1
- package/dist/banner-gdpr-rights.d.ts +7 -1
- package/dist/banner-gdpr-rights.js +399 -32
- package/dist/banner-privacy-notice.cjs +399 -32
- package/dist/banner-privacy-notice.d.cts +7 -1
- package/dist/banner-privacy-notice.d.ts +7 -1
- package/dist/banner-privacy-notice.js +400 -33
- package/dist/banner-promo-cta.cjs +382 -12
- package/dist/banner-promo-cta.d.cts +7 -1
- package/dist/banner-promo-cta.d.ts +7 -1
- package/dist/banner-promo-cta.js +383 -13
- package/dist/banner-social-follow.cjs +395 -28
- package/dist/banner-social-follow.d.cts +7 -1
- package/dist/banner-social-follow.d.ts +7 -1
- package/dist/banner-social-follow.js +396 -29
- package/dist/banner-survey-incentive.cjs +377 -1
- package/dist/banner-survey-incentive.d.cts +7 -1
- package/dist/banner-survey-incentive.d.ts +7 -1
- package/dist/banner-survey-incentive.js +378 -2
- package/dist/community-initiatives.cjs +43 -10
- package/dist/community-initiatives.js +43 -10
- package/dist/components.cjs +76 -36
- package/dist/components.js +76 -36
- package/dist/contact-floating-banner.cjs +378 -2
- package/dist/contact-floating-banner.d.cts +7 -1
- package/dist/contact-floating-banner.d.ts +7 -1
- package/dist/contact-floating-banner.js +379 -2
- package/dist/cta-accent-background.cjs +28 -1
- package/dist/cta-accent-background.js +28 -1
- package/dist/cta-app-download-newsletter.cjs +30 -2
- package/dist/cta-app-download-newsletter.js +30 -2
- package/dist/cta-documentation-links.cjs +28 -2
- package/dist/cta-documentation-links.js +28 -2
- package/dist/cta-feature-cards-grid.cjs +34 -3
- package/dist/cta-feature-cards-grid.js +34 -3
- package/dist/cta-feature-checklist.cjs +27 -1
- package/dist/cta-feature-checklist.js +27 -1
- package/dist/cta-feature-list.cjs +33 -2
- package/dist/cta-feature-list.js +33 -2
- package/dist/cta-gradient-logos-floating.cjs +28 -1
- package/dist/cta-gradient-logos-floating.js +28 -1
- package/dist/cta-minimal-separator.cjs +27 -1
- package/dist/cta-minimal-separator.js +27 -1
- package/dist/cta-platform-demo.cjs +28 -1
- package/dist/cta-platform-demo.js +28 -1
- package/dist/cta-simple-centered.cjs +28 -1
- package/dist/cta-simple-centered.js +28 -1
- package/dist/cta-split-gradient-image.cjs +28 -1
- package/dist/cta-split-gradient-image.js +28 -1
- package/dist/cta-split-image-logos.cjs +29 -2
- package/dist/cta-split-image-logos.js +29 -2
- package/dist/cta-split-image.cjs +29 -2
- package/dist/cta-split-image.js +29 -2
- package/dist/cta-stacked-cards.cjs +28 -1
- package/dist/cta-stacked-cards.js +28 -1
- package/dist/faq-badge-support.cjs +33 -5
- package/dist/faq-badge-support.js +33 -5
- package/dist/faq-bordered-badge.cjs +31 -3
- package/dist/faq-bordered-badge.js +31 -3
- package/dist/faq-card-categories.cjs +60 -4
- package/dist/faq-card-categories.js +60 -4
- package/dist/faq-categorized-sections.cjs +31 -3
- package/dist/faq-categorized-sections.js +31 -3
- package/dist/faq-centered-accordion.cjs +31 -3
- package/dist/faq-centered-accordion.js +31 -3
- package/dist/faq-gradient-categories.cjs +31 -3
- package/dist/faq-gradient-categories.js +31 -3
- package/dist/faq-icon-benefits.cjs +40 -5
- package/dist/faq-icon-benefits.js +40 -5
- package/dist/faq-muted-cards.cjs +29 -2
- package/dist/faq-muted-cards.js +29 -2
- package/dist/faq-numbered-grid.cjs +32 -3
- package/dist/faq-numbered-grid.js +32 -3
- package/dist/faq-numbered-list.cjs +32 -3
- package/dist/faq-numbered-list.js +32 -3
- package/dist/faq-profile-sidebar.cjs +36 -6
- package/dist/faq-profile-sidebar.js +36 -6
- package/dist/faq-sidebar-navigation.cjs +30 -3
- package/dist/faq-sidebar-navigation.js +30 -3
- package/dist/faq-simple-accordion.cjs +29 -2
- package/dist/faq-simple-accordion.js +29 -2
- package/dist/feature-accordion-image.cjs +28 -2
- package/dist/feature-accordion-image.js +28 -2
- package/dist/feature-badge-grid-six.cjs +27 -1
- package/dist/feature-badge-grid-six.js +27 -1
- package/dist/feature-bento-image-grid.cjs +27 -1
- package/dist/feature-bento-image-grid.js +27 -1
- package/dist/feature-bento-utilities.cjs +56 -4
- package/dist/feature-bento-utilities.js +56 -4
- package/dist/feature-capabilities-grid.cjs +29 -3
- package/dist/feature-capabilities-grid.js +29 -3
- package/dist/feature-card-grid-linked.cjs +29 -2
- package/dist/feature-card-grid-linked.js +29 -2
- package/dist/feature-carousel-progress.cjs +28 -2
- package/dist/feature-carousel-progress.js +28 -2
- package/dist/feature-category-image-cards.cjs +28 -2
- package/dist/feature-category-image-cards.js +28 -2
- package/dist/feature-checklist-image.cjs +30 -2
- package/dist/feature-checklist-image.js +30 -2
- package/dist/feature-checklist-three-column.cjs +35 -5
- package/dist/feature-checklist-three-column.js +35 -5
- package/dist/feature-icon-grid-accent.cjs +28 -2
- package/dist/feature-icon-grid-accent.js +28 -2
- package/dist/feature-icon-grid-bordered.cjs +9 -4
- package/dist/feature-icon-grid-bordered.js +9 -4
- package/dist/feature-icon-grid-muted.cjs +28 -2
- package/dist/feature-icon-grid-muted.js +28 -2
- package/dist/feature-icon-tabs-content.cjs +56 -5
- package/dist/feature-icon-tabs-content.js +56 -5
- package/dist/feature-image-cards-three-column.cjs +27 -1
- package/dist/feature-image-cards-three-column.js +27 -1
- package/dist/feature-integration-cards.cjs +28 -2
- package/dist/feature-integration-cards.js +28 -2
- package/dist/feature-pattern-grid-links.cjs +28 -2
- package/dist/feature-pattern-grid-links.js +28 -2
- package/dist/feature-utility-cards-grid.cjs +9 -4
- package/dist/feature-utility-cards-grid.js +9 -4
- package/dist/footer-comprehensive-links.cjs +231 -151
- package/dist/footer-comprehensive-links.js +231 -151
- package/dist/hero-ad-campaign-expert.cjs +24 -2
- package/dist/hero-ad-campaign-expert.js +24 -2
- package/dist/hero-adaptable-product-grid.cjs +27 -1
- package/dist/hero-adaptable-product-grid.js +27 -1
- package/dist/hero-ai-powered-carousel.cjs +27 -1
- package/dist/hero-ai-powered-carousel.js +27 -1
- package/dist/hero-announcement-badge.cjs +27 -1
- package/dist/hero-announcement-badge.js +27 -1
- package/dist/hero-architecture-fullscreen.cjs +50 -2
- package/dist/hero-architecture-fullscreen.js +50 -2
- package/dist/hero-badge-image-split.cjs +27 -1
- package/dist/hero-badge-image-split.js +27 -1
- package/dist/hero-business-carousel-dots.cjs +27 -1
- package/dist/hero-business-carousel-dots.js +27 -1
- package/dist/hero-centered-gradient-cta.cjs +28 -2
- package/dist/hero-centered-gradient-cta.js +28 -2
- package/dist/hero-centered-image-grid.cjs +27 -1
- package/dist/hero-centered-image-grid.js +27 -1
- package/dist/hero-centered-screenshot.cjs +50 -2
- package/dist/hero-centered-screenshot.js +50 -2
- package/dist/hero-coming-soon-countdown.cjs +37 -7
- package/dist/hero-coming-soon-countdown.js +37 -7
- package/dist/hero-community-survey-cta.cjs +27 -1
- package/dist/hero-community-survey-cta.js +27 -1
- package/dist/hero-conversation-intelligence.cjs +50 -2
- package/dist/hero-conversation-intelligence.js +50 -2
- package/dist/hero-conversion-video-play.cjs +55 -3
- package/dist/hero-conversion-video-play.js +55 -3
- package/dist/hero-creative-studio-stacked.cjs +28 -2
- package/dist/hero-creative-studio-stacked.js +28 -2
- package/dist/hero-crm-streamlined.cjs +27 -1
- package/dist/hero-crm-streamlined.js +27 -1
- package/dist/hero-customer-support-layered.cjs +51 -3
- package/dist/hero-customer-support-layered.js +51 -3
- package/dist/hero-dashed-border-features.cjs +27 -1
- package/dist/hero-dashed-border-features.js +27 -1
- package/dist/hero-design-showcase-logos.cjs +27 -1
- package/dist/hero-design-showcase-logos.js +27 -1
- package/dist/hero-design-system-3d.cjs +32 -2
- package/dist/hero-design-system-3d.js +32 -2
- package/dist/hero-developer-tools-code.cjs +27 -1
- package/dist/hero-developer-tools-code.js +27 -1
- package/dist/hero-digital-agency-fullscreen.cjs +33 -3
- package/dist/hero-digital-agency-fullscreen.js +33 -3
- package/dist/hero-ecommerce-product-showcase.cjs +32 -6
- package/dist/hero-ecommerce-product-showcase.js +32 -6
- package/dist/hero-enterprise-security.cjs +34 -4
- package/dist/hero-enterprise-security.js +34 -4
- package/dist/hero-event-registration.cjs +35 -5
- package/dist/hero-event-registration.js +35 -5
- package/dist/hero-feature-cards-grid.cjs +82 -4
- package/dist/hero-feature-cards-grid.js +82 -4
- package/dist/hero-gradient-avatars-rating.cjs +30 -4
- package/dist/hero-gradient-avatars-rating.js +30 -4
- package/dist/hero-gradient-client-focused.cjs +27 -1
- package/dist/hero-gradient-client-focused.js +27 -1
- package/dist/hero-grid-pattern-efficiency.cjs +28 -2
- package/dist/hero-grid-pattern-efficiency.js +28 -2
- package/dist/hero-grid-pattern-solutions.cjs +27 -1
- package/dist/hero-grid-pattern-solutions.js +27 -1
- package/dist/hero-image-left-content.cjs +27 -1
- package/dist/hero-image-left-content.js +27 -1
- package/dist/hero-innovation-image-grid.cjs +27 -1
- package/dist/hero-innovation-image-grid.js +27 -1
- package/dist/hero-logo-centered-screenshot.cjs +27 -1
- package/dist/hero-logo-centered-screenshot.js +27 -1
- package/dist/hero-marketplace-scattered-images.cjs +27 -1
- package/dist/hero-marketplace-scattered-images.js +27 -1
- package/dist/hero-mentorship-video-split.cjs +7 -3
- package/dist/hero-mentorship-video-split.js +7 -3
- package/dist/hero-minimal-centered-dark.cjs +55 -3
- package/dist/hero-minimal-centered-dark.js +55 -3
- package/dist/hero-mobile-app-download.cjs +34 -4
- package/dist/hero-mobile-app-download.js +34 -4
- package/dist/hero-newsletter-minimal.cjs +29 -3
- package/dist/hero-newsletter-minimal.js +29 -3
- package/dist/hero-overlay-cta-grid.cjs +33 -3
- package/dist/hero-overlay-cta-grid.js +33 -3
- package/dist/hero-pattern-badge-logos.cjs +28 -2
- package/dist/hero-pattern-badge-logos.js +28 -2
- package/dist/hero-pattern-logo-tech-stack.cjs +33 -3
- package/dist/hero-pattern-logo-tech-stack.js +33 -3
- package/dist/hero-platform-features-grid.cjs +28 -2
- package/dist/hero-platform-features-grid.js +28 -2
- package/dist/hero-portfolio-creative.cjs +29 -3
- package/dist/hero-portfolio-creative.js +29 -3
- package/dist/hero-pricing-comparison.cjs +52 -4
- package/dist/hero-pricing-comparison.js +52 -4
- package/dist/hero-product-showcase-floating.cjs +34 -4
- package/dist/hero-product-showcase-floating.js +34 -4
- package/dist/hero-productivity-launcher-video.cjs +29 -3
- package/dist/hero-productivity-launcher-video.js +29 -3
- package/dist/hero-saas-dashboard-preview.cjs +34 -4
- package/dist/hero-saas-dashboard-preview.js +34 -4
- package/dist/hero-shared-inbox-layered.cjs +51 -3
- package/dist/hero-shared-inbox-layered.js +51 -3
- package/dist/hero-simple-centered-image.cjs +27 -1
- package/dist/hero-simple-centered-image.js +27 -1
- package/dist/hero-software-growth-video-dialog.cjs +50 -2
- package/dist/hero-software-growth-video-dialog.js +50 -2
- package/dist/hero-spiral-pattern-cards.cjs +28 -2
- package/dist/hero-spiral-pattern-cards.js +28 -2
- package/dist/hero-split-icon-cards.cjs +34 -4
- package/dist/hero-split-icon-cards.js +34 -4
- package/dist/hero-split-image-newsletter.cjs +28 -2
- package/dist/hero-split-image-newsletter.js +28 -2
- package/dist/hero-split-spiral-shapes.cjs +28 -2
- package/dist/hero-split-spiral-shapes.js +28 -2
- package/dist/hero-startup-launch-cta.cjs +28 -2
- package/dist/hero-startup-launch-cta.js +28 -2
- package/dist/hero-stats-social-proof.cjs +34 -4
- package/dist/hero-stats-social-proof.js +34 -4
- package/dist/hero-tech-carousel.cjs +27 -1
- package/dist/hero-tech-carousel.js +27 -1
- package/dist/hero-ui-library-showcase.cjs +27 -1
- package/dist/hero-ui-library-showcase.js +27 -1
- package/dist/hero-video-background-dark.cjs +28 -2
- package/dist/hero-video-background-dark.js +28 -2
- package/dist/hero-video-dialog-gradient.cjs +27 -1
- package/dist/hero-video-dialog-gradient.js +27 -1
- package/dist/hero-welcome-asymmetric-images.cjs +30 -2
- package/dist/hero-welcome-asymmetric-images.js +30 -2
- package/dist/index.cjs +104 -36
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +102 -37
- package/dist/link-page-bento-layout.cjs +57 -28
- package/dist/link-page-bento-layout.d.cts +1 -5
- package/dist/link-page-bento-layout.d.ts +1 -5
- package/dist/link-page-bento-layout.js +57 -28
- package/dist/link-page-grid-cards.cjs +52 -23
- package/dist/link-page-grid-cards.d.cts +1 -5
- package/dist/link-page-grid-cards.d.ts +1 -5
- package/dist/link-page-grid-cards.js +52 -23
- package/dist/link-page-minimal-profile.cjs +46 -18
- package/dist/link-page-minimal-profile.d.cts +1 -5
- package/dist/link-page-minimal-profile.d.ts +1 -5
- package/dist/link-page-minimal-profile.js +46 -18
- package/dist/link-page-newsletter-social.cjs +53 -28
- package/dist/link-page-newsletter-social.d.cts +1 -5
- package/dist/link-page-newsletter-social.d.ts +1 -5
- package/dist/link-page-newsletter-social.js +53 -28
- package/dist/link-tree-block.cjs +122 -34
- package/dist/link-tree-block.d.cts +1 -8
- package/dist/link-tree-block.d.ts +1 -8
- package/dist/link-tree-block.js +122 -34
- package/dist/media-hover-ctas.cjs +28 -2
- package/dist/media-hover-ctas.js +28 -2
- package/dist/process-expandable-timeline.cjs +66 -10
- package/dist/process-expandable-timeline.js +66 -10
- package/dist/process-hover-cards.cjs +39 -6
- package/dist/process-hover-cards.js +39 -6
- package/dist/process-icon-timeline.cjs +53 -3
- package/dist/process-icon-timeline.js +53 -3
- package/dist/process-mission-principles.cjs +44 -6
- package/dist/process-mission-principles.js +44 -6
- package/dist/process-numbered-services.cjs +76 -22
- package/dist/process-numbered-services.js +76 -22
- package/dist/process-roadmap-timeline.cjs +63 -9
- package/dist/process-roadmap-timeline.js +63 -9
- package/dist/process-scroll-image.cjs +71 -32
- package/dist/process-scroll-image.js +71 -32
- package/dist/process-steps-grid.cjs +61 -5
- package/dist/process-steps-grid.js +61 -5
- package/dist/process-sticky-steps.cjs +49 -69
- package/dist/process-sticky-steps.d.cts +1 -13
- package/dist/process-sticky-steps.d.ts +1 -13
- package/dist/process-sticky-steps.js +49 -69
- package/dist/project-zigzag-layout.cjs +379 -3
- package/dist/project-zigzag-layout.d.cts +8 -1
- package/dist/project-zigzag-layout.d.ts +8 -1
- package/dist/project-zigzag-layout.js +380 -3
- package/dist/registry.cjs +2759 -2476
- package/dist/registry.js +2759 -2476
- package/dist/team-media-showcase.cjs +59 -4
- package/dist/team-media-showcase.d.cts +4 -0
- package/dist/team-media-showcase.d.ts +4 -0
- package/dist/team-media-showcase.js +59 -4
- package/dist/testimonials-carousel-image.d.cts +6 -0
- package/dist/testimonials-carousel-image.d.ts +6 -0
- package/dist/utils.cjs +58 -0
- package/dist/utils.d.cts +113 -1
- package/dist/utils.d.ts +113 -1
- package/dist/utils.js +56 -1
- package/package.json +1 -1
|
@@ -33,6 +33,36 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
|
33
33
|
function cn(...inputs) {
|
|
34
34
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
35
35
|
}
|
|
36
|
+
function getTextColor(parentBg, variant = "default", options) {
|
|
37
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
38
|
+
if (isDark) {
|
|
39
|
+
switch (variant) {
|
|
40
|
+
case "default":
|
|
41
|
+
return "text-foreground";
|
|
42
|
+
case "muted":
|
|
43
|
+
return "text-foreground/80";
|
|
44
|
+
case "subtle":
|
|
45
|
+
return "text-foreground/60";
|
|
46
|
+
case "accent":
|
|
47
|
+
return "text-accent-foreground";
|
|
48
|
+
}
|
|
49
|
+
} else {
|
|
50
|
+
switch (variant) {
|
|
51
|
+
case "default":
|
|
52
|
+
return "text-foreground";
|
|
53
|
+
case "muted":
|
|
54
|
+
return "text-muted-foreground";
|
|
55
|
+
case "subtle":
|
|
56
|
+
return "text-muted-foreground/70";
|
|
57
|
+
case "accent":
|
|
58
|
+
return "text-primary";
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function getAccentColor(parentBg, options) {
|
|
63
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
64
|
+
return isDark ? "text-accent-foreground" : "text-primary";
|
|
65
|
+
}
|
|
36
66
|
function normalizePhoneNumber(input) {
|
|
37
67
|
const trimmed = input.trim();
|
|
38
68
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -1025,24 +1055,24 @@ function HeroEventRegistration({
|
|
|
1025
1055
|
if (!stats || stats.length === 0) return null;
|
|
1026
1056
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid grid-cols-3 gap-4 pt-4", statsClassName), children: stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
|
|
1027
1057
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-2xl font-bold ", children: stat.value }),
|
|
1028
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm
|
|
1058
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm", getTextColor(background, "muted")), children: stat.label })
|
|
1029
1059
|
] }, index)) });
|
|
1030
1060
|
}, [statsSlot, stats, statsClassName]);
|
|
1031
1061
|
const renderLocation = React.useMemo(() => {
|
|
1032
1062
|
if (locationSlot) return locationSlot;
|
|
1033
1063
|
if (!locationLabel && !locationSublabel) return null;
|
|
1034
1064
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -bottom-4 -left-4 rounded-xl bg-background p-4 shadow-lg", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
1035
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-12 w-12 items-center justify-center rounded-full
|
|
1065
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex h-12 w-12 items-center justify-center rounded-full", `${getAccentColor(background)}/10`), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1036
1066
|
DynamicIcon,
|
|
1037
1067
|
{
|
|
1038
1068
|
name: "lucide/map-pin",
|
|
1039
1069
|
size: 24,
|
|
1040
|
-
className:
|
|
1070
|
+
className: getAccentColor(background)
|
|
1041
1071
|
}
|
|
1042
1072
|
) }),
|
|
1043
1073
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1044
1074
|
locationLabel && (typeof locationLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold ", children: locationLabel }) : locationLabel),
|
|
1045
|
-
locationSublabel && (typeof locationSublabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm
|
|
1075
|
+
locationSublabel && (typeof locationSublabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm", getTextColor(background, "muted")), children: locationSublabel }) : locationSublabel)
|
|
1046
1076
|
] })
|
|
1047
1077
|
] }) });
|
|
1048
1078
|
}, [locationSlot, locationLabel, locationSublabel]);
|
|
@@ -1074,7 +1104,7 @@ function HeroEventRegistration({
|
|
|
1074
1104
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
|
|
1075
1105
|
renderBadge,
|
|
1076
1106
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading })),
|
|
1077
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg
|
|
1107
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
|
|
1078
1108
|
renderActions,
|
|
1079
1109
|
renderStats
|
|
1080
1110
|
] }),
|
|
@@ -12,6 +12,36 @@ import { Img } from '@page-speed/img';
|
|
|
12
12
|
function cn(...inputs) {
|
|
13
13
|
return twMerge(clsx(inputs));
|
|
14
14
|
}
|
|
15
|
+
function getTextColor(parentBg, variant = "default", options) {
|
|
16
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
17
|
+
if (isDark) {
|
|
18
|
+
switch (variant) {
|
|
19
|
+
case "default":
|
|
20
|
+
return "text-foreground";
|
|
21
|
+
case "muted":
|
|
22
|
+
return "text-foreground/80";
|
|
23
|
+
case "subtle":
|
|
24
|
+
return "text-foreground/60";
|
|
25
|
+
case "accent":
|
|
26
|
+
return "text-accent-foreground";
|
|
27
|
+
}
|
|
28
|
+
} else {
|
|
29
|
+
switch (variant) {
|
|
30
|
+
case "default":
|
|
31
|
+
return "text-foreground";
|
|
32
|
+
case "muted":
|
|
33
|
+
return "text-muted-foreground";
|
|
34
|
+
case "subtle":
|
|
35
|
+
return "text-muted-foreground/70";
|
|
36
|
+
case "accent":
|
|
37
|
+
return "text-primary";
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function getAccentColor(parentBg, options) {
|
|
42
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
43
|
+
return isDark ? "text-accent-foreground" : "text-primary";
|
|
44
|
+
}
|
|
15
45
|
function normalizePhoneNumber(input) {
|
|
16
46
|
const trimmed = input.trim();
|
|
17
47
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -1004,24 +1034,24 @@ function HeroEventRegistration({
|
|
|
1004
1034
|
if (!stats || stats.length === 0) return null;
|
|
1005
1035
|
return /* @__PURE__ */ jsx("div", { className: cn("grid grid-cols-3 gap-4 pt-4", statsClassName), children: stats.map((stat, index) => /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
|
|
1006
1036
|
/* @__PURE__ */ jsx("div", { className: "text-2xl font-bold ", children: stat.value }),
|
|
1007
|
-
/* @__PURE__ */ jsx("div", { className: "text-sm
|
|
1037
|
+
/* @__PURE__ */ jsx("div", { className: cn("text-sm", getTextColor(background, "muted")), children: stat.label })
|
|
1008
1038
|
] }, index)) });
|
|
1009
1039
|
}, [statsSlot, stats, statsClassName]);
|
|
1010
1040
|
const renderLocation = useMemo(() => {
|
|
1011
1041
|
if (locationSlot) return locationSlot;
|
|
1012
1042
|
if (!locationLabel && !locationSublabel) return null;
|
|
1013
1043
|
return /* @__PURE__ */ jsx("div", { className: "absolute -bottom-4 -left-4 rounded-xl bg-background p-4 shadow-lg", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
1014
|
-
/* @__PURE__ */ jsx("div", { className: "flex h-12 w-12 items-center justify-center rounded-full
|
|
1044
|
+
/* @__PURE__ */ jsx("div", { className: cn("flex h-12 w-12 items-center justify-center rounded-full", `${getAccentColor(background)}/10`), children: /* @__PURE__ */ jsx(
|
|
1015
1045
|
DynamicIcon,
|
|
1016
1046
|
{
|
|
1017
1047
|
name: "lucide/map-pin",
|
|
1018
1048
|
size: 24,
|
|
1019
|
-
className:
|
|
1049
|
+
className: getAccentColor(background)
|
|
1020
1050
|
}
|
|
1021
1051
|
) }),
|
|
1022
1052
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
1023
1053
|
locationLabel && (typeof locationLabel === "string" ? /* @__PURE__ */ jsx("div", { className: "font-semibold ", children: locationLabel }) : locationLabel),
|
|
1024
|
-
locationSublabel && (typeof locationSublabel === "string" ? /* @__PURE__ */ jsx("div", { className: "text-sm
|
|
1054
|
+
locationSublabel && (typeof locationSublabel === "string" ? /* @__PURE__ */ jsx("div", { className: cn("text-sm", getTextColor(background, "muted")), children: locationSublabel }) : locationSublabel)
|
|
1025
1055
|
] })
|
|
1026
1056
|
] }) });
|
|
1027
1057
|
}, [locationSlot, locationLabel, locationSublabel]);
|
|
@@ -1053,7 +1083,7 @@ function HeroEventRegistration({
|
|
|
1053
1083
|
/* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
|
|
1054
1084
|
renderBadge,
|
|
1055
1085
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading })),
|
|
1056
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg
|
|
1086
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
1057
1087
|
renderActions,
|
|
1058
1088
|
renderStats
|
|
1059
1089
|
] }),
|
|
@@ -31,6 +31,84 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
|
31
31
|
function cn(...inputs) {
|
|
32
32
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
33
33
|
}
|
|
34
|
+
function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
35
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
36
|
+
if (isDark) {
|
|
37
|
+
switch (variant) {
|
|
38
|
+
case "muted":
|
|
39
|
+
return "bg-background";
|
|
40
|
+
case "card":
|
|
41
|
+
return "bg-card";
|
|
42
|
+
case "accent":
|
|
43
|
+
return "bg-accent";
|
|
44
|
+
case "subtle":
|
|
45
|
+
return "bg-background/50";
|
|
46
|
+
}
|
|
47
|
+
} else {
|
|
48
|
+
switch (variant) {
|
|
49
|
+
case "muted":
|
|
50
|
+
return "bg-muted";
|
|
51
|
+
case "card":
|
|
52
|
+
return "bg-card";
|
|
53
|
+
case "accent":
|
|
54
|
+
return "bg-accent";
|
|
55
|
+
case "subtle":
|
|
56
|
+
return "bg-muted/50";
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function getTextColor(parentBg, variant = "default", options) {
|
|
61
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
62
|
+
if (isDark) {
|
|
63
|
+
switch (variant) {
|
|
64
|
+
case "default":
|
|
65
|
+
return "text-foreground";
|
|
66
|
+
case "muted":
|
|
67
|
+
return "text-foreground/80";
|
|
68
|
+
case "subtle":
|
|
69
|
+
return "text-foreground/60";
|
|
70
|
+
case "accent":
|
|
71
|
+
return "text-accent-foreground";
|
|
72
|
+
}
|
|
73
|
+
} else {
|
|
74
|
+
switch (variant) {
|
|
75
|
+
case "default":
|
|
76
|
+
return "text-foreground";
|
|
77
|
+
case "muted":
|
|
78
|
+
return "text-muted-foreground";
|
|
79
|
+
case "subtle":
|
|
80
|
+
return "text-muted-foreground/70";
|
|
81
|
+
case "accent":
|
|
82
|
+
return "text-primary";
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function getAccentColor(parentBg, options) {
|
|
87
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
88
|
+
return isDark ? "text-accent-foreground" : "text-primary";
|
|
89
|
+
}
|
|
90
|
+
function getBorderColor(parentBg, variant = "default", options) {
|
|
91
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
92
|
+
if (isDark) {
|
|
93
|
+
switch (variant) {
|
|
94
|
+
case "default":
|
|
95
|
+
return "border-foreground/20";
|
|
96
|
+
case "muted":
|
|
97
|
+
return "border-foreground/10";
|
|
98
|
+
case "accent":
|
|
99
|
+
return "border-accent-foreground";
|
|
100
|
+
}
|
|
101
|
+
} else {
|
|
102
|
+
switch (variant) {
|
|
103
|
+
case "default":
|
|
104
|
+
return "border-border";
|
|
105
|
+
case "muted":
|
|
106
|
+
return "border-muted";
|
|
107
|
+
case "accent":
|
|
108
|
+
return "border-primary";
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
34
112
|
function normalizePhoneNumber(input) {
|
|
35
113
|
const trimmed = input.trim();
|
|
36
114
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -975,11 +1053,11 @@ function HeroFeatureCardsGrid({
|
|
|
975
1053
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-20 grid gap-8 md:grid-cols-2 lg:grid-cols-4", featuresClassName), children: features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
976
1054
|
"div",
|
|
977
1055
|
{
|
|
978
|
-
className: "group rounded-2xl border border-border
|
|
1056
|
+
className: cn("group rounded-2xl border border-border p-6 transition-all hover:shadow-lg", getNestedCardBg(background, "card"), `hover:${getBorderColor(background, "accent")}/50`),
|
|
979
1057
|
children: [
|
|
980
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4 flex h-12 w-12 items-center justify-center rounded-lg
|
|
1058
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4 flex h-12 w-12 items-center justify-center rounded-lg transition-colors", `${getAccentColor(background)}/10 ${getAccentColor(background)}`, `group-hover:${getAccentColor(background)} group-hover:text-primary-foreground`), children: feature.icon ?? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.iconName || "lucide/check", size: 24 }) }),
|
|
981
1059
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-lg font-semibold ", children: feature.title }),
|
|
982
|
-
feature.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm
|
|
1060
|
+
feature.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm", getTextColor(background, "muted")), children: feature.description })
|
|
983
1061
|
]
|
|
984
1062
|
},
|
|
985
1063
|
index
|
|
@@ -996,7 +1074,7 @@ function HeroFeatureCardsGrid({
|
|
|
996
1074
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container", containerClassName), children: [
|
|
997
1075
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto max-w-3xl text-center", contentClassName), children: [
|
|
998
1076
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading })),
|
|
999
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-6 text-lg
|
|
1077
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-6 text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
|
|
1000
1078
|
renderActions
|
|
1001
1079
|
] }),
|
|
1002
1080
|
renderFeatures
|
|
@@ -10,6 +10,84 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
10
10
|
function cn(...inputs) {
|
|
11
11
|
return twMerge(clsx(inputs));
|
|
12
12
|
}
|
|
13
|
+
function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
14
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
15
|
+
if (isDark) {
|
|
16
|
+
switch (variant) {
|
|
17
|
+
case "muted":
|
|
18
|
+
return "bg-background";
|
|
19
|
+
case "card":
|
|
20
|
+
return "bg-card";
|
|
21
|
+
case "accent":
|
|
22
|
+
return "bg-accent";
|
|
23
|
+
case "subtle":
|
|
24
|
+
return "bg-background/50";
|
|
25
|
+
}
|
|
26
|
+
} else {
|
|
27
|
+
switch (variant) {
|
|
28
|
+
case "muted":
|
|
29
|
+
return "bg-muted";
|
|
30
|
+
case "card":
|
|
31
|
+
return "bg-card";
|
|
32
|
+
case "accent":
|
|
33
|
+
return "bg-accent";
|
|
34
|
+
case "subtle":
|
|
35
|
+
return "bg-muted/50";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function getTextColor(parentBg, variant = "default", options) {
|
|
40
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
41
|
+
if (isDark) {
|
|
42
|
+
switch (variant) {
|
|
43
|
+
case "default":
|
|
44
|
+
return "text-foreground";
|
|
45
|
+
case "muted":
|
|
46
|
+
return "text-foreground/80";
|
|
47
|
+
case "subtle":
|
|
48
|
+
return "text-foreground/60";
|
|
49
|
+
case "accent":
|
|
50
|
+
return "text-accent-foreground";
|
|
51
|
+
}
|
|
52
|
+
} else {
|
|
53
|
+
switch (variant) {
|
|
54
|
+
case "default":
|
|
55
|
+
return "text-foreground";
|
|
56
|
+
case "muted":
|
|
57
|
+
return "text-muted-foreground";
|
|
58
|
+
case "subtle":
|
|
59
|
+
return "text-muted-foreground/70";
|
|
60
|
+
case "accent":
|
|
61
|
+
return "text-primary";
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function getAccentColor(parentBg, options) {
|
|
66
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
67
|
+
return isDark ? "text-accent-foreground" : "text-primary";
|
|
68
|
+
}
|
|
69
|
+
function getBorderColor(parentBg, variant = "default", options) {
|
|
70
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
71
|
+
if (isDark) {
|
|
72
|
+
switch (variant) {
|
|
73
|
+
case "default":
|
|
74
|
+
return "border-foreground/20";
|
|
75
|
+
case "muted":
|
|
76
|
+
return "border-foreground/10";
|
|
77
|
+
case "accent":
|
|
78
|
+
return "border-accent-foreground";
|
|
79
|
+
}
|
|
80
|
+
} else {
|
|
81
|
+
switch (variant) {
|
|
82
|
+
case "default":
|
|
83
|
+
return "border-border";
|
|
84
|
+
case "muted":
|
|
85
|
+
return "border-muted";
|
|
86
|
+
case "accent":
|
|
87
|
+
return "border-primary";
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
13
91
|
function normalizePhoneNumber(input) {
|
|
14
92
|
const trimmed = input.trim();
|
|
15
93
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -954,11 +1032,11 @@ function HeroFeatureCardsGrid({
|
|
|
954
1032
|
return /* @__PURE__ */ jsx("div", { className: cn("mt-20 grid gap-8 md:grid-cols-2 lg:grid-cols-4", featuresClassName), children: features.map((feature, index) => /* @__PURE__ */ jsxs(
|
|
955
1033
|
"div",
|
|
956
1034
|
{
|
|
957
|
-
className: "group rounded-2xl border border-border
|
|
1035
|
+
className: cn("group rounded-2xl border border-border p-6 transition-all hover:shadow-lg", getNestedCardBg(background, "card"), `hover:${getBorderColor(background, "accent")}/50`),
|
|
958
1036
|
children: [
|
|
959
|
-
/* @__PURE__ */ jsx("div", { className: "mb-4 flex h-12 w-12 items-center justify-center rounded-lg
|
|
1037
|
+
/* @__PURE__ */ jsx("div", { className: cn("mb-4 flex h-12 w-12 items-center justify-center rounded-lg transition-colors", `${getAccentColor(background)}/10 ${getAccentColor(background)}`, `group-hover:${getAccentColor(background)} group-hover:text-primary-foreground`), children: feature.icon ?? /* @__PURE__ */ jsx(DynamicIcon, { name: feature.iconName || "lucide/check", size: 24 }) }),
|
|
960
1038
|
/* @__PURE__ */ jsx("h3", { className: "mb-2 text-lg font-semibold ", children: feature.title }),
|
|
961
|
-
feature.description && /* @__PURE__ */ jsx("p", { className: "text-sm
|
|
1039
|
+
feature.description && /* @__PURE__ */ jsx("p", { className: cn("text-sm", getTextColor(background, "muted")), children: feature.description })
|
|
962
1040
|
]
|
|
963
1041
|
},
|
|
964
1042
|
index
|
|
@@ -975,7 +1053,7 @@ function HeroFeatureCardsGrid({
|
|
|
975
1053
|
children: /* @__PURE__ */ jsxs("div", { className: cn("container", containerClassName), children: [
|
|
976
1054
|
/* @__PURE__ */ jsxs("div", { className: cn("mx-auto max-w-3xl text-center", contentClassName), children: [
|
|
977
1055
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", headingClassName), children: heading })),
|
|
978
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-6 text-lg
|
|
1056
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-6 text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
979
1057
|
renderActions
|
|
980
1058
|
] }),
|
|
981
1059
|
renderFeatures
|
|
@@ -60,6 +60,32 @@ function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
+
function getTextColor(parentBg, variant = "default", options) {
|
|
64
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
65
|
+
if (isDark) {
|
|
66
|
+
switch (variant) {
|
|
67
|
+
case "default":
|
|
68
|
+
return "text-foreground";
|
|
69
|
+
case "muted":
|
|
70
|
+
return "text-foreground/80";
|
|
71
|
+
case "subtle":
|
|
72
|
+
return "text-foreground/60";
|
|
73
|
+
case "accent":
|
|
74
|
+
return "text-accent-foreground";
|
|
75
|
+
}
|
|
76
|
+
} else {
|
|
77
|
+
switch (variant) {
|
|
78
|
+
case "default":
|
|
79
|
+
return "text-foreground";
|
|
80
|
+
case "muted":
|
|
81
|
+
return "text-muted-foreground";
|
|
82
|
+
case "subtle":
|
|
83
|
+
return "text-muted-foreground/70";
|
|
84
|
+
case "accent":
|
|
85
|
+
return "text-primary";
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
63
89
|
function normalizePhoneNumber(input) {
|
|
64
90
|
const trimmed = input.trim();
|
|
65
91
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -1023,7 +1049,7 @@ function HeroGradientAvatarsRating({
|
|
|
1023
1049
|
Pressable,
|
|
1024
1050
|
{
|
|
1025
1051
|
href: topLinkHref,
|
|
1026
|
-
className: "my-6 text-xs font-bold tracking-[0.3em]
|
|
1052
|
+
className: cn("my-6 text-xs font-bold tracking-[0.3em] uppercase hover:underline", getTextColor(background, "muted")),
|
|
1027
1053
|
children: topLinkText
|
|
1028
1054
|
}
|
|
1029
1055
|
);
|
|
@@ -1076,7 +1102,7 @@ function HeroGradientAvatarsRating({
|
|
|
1076
1102
|
)),
|
|
1077
1103
|
ratingValue && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold", children: ratingValue })
|
|
1078
1104
|
] }),
|
|
1079
|
-
ratingLabel && (typeof ratingLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium
|
|
1105
|
+
ratingLabel && (typeof ratingLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm font-medium", getTextColor(background, "muted")), children: ratingLabel }) : ratingLabel)
|
|
1080
1106
|
] });
|
|
1081
1107
|
}, [ratingValue, ratingLabel, starCount]);
|
|
1082
1108
|
const renderImages = React.useMemo(() => {
|
|
@@ -1122,10 +1148,10 @@ function HeroGradientAvatarsRating({
|
|
|
1122
1148
|
typeof heading === "string" ? heading : heading,
|
|
1123
1149
|
headingSubtitle && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1124
1150
|
/* @__PURE__ */ jsxRuntime.jsx("br", {}),
|
|
1125
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "
|
|
1151
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: getTextColor(background, "muted"), children: headingSubtitle })
|
|
1126
1152
|
] })
|
|
1127
1153
|
] }),
|
|
1128
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("my-8 max-w-xl
|
|
1154
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("my-8 max-w-xl lg:text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
|
|
1129
1155
|
renderActions,
|
|
1130
1156
|
(avatars || avatarsSlot || ratingValue || ratingLabel) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 flex flex-col items-center gap-4 sm:flex-row sm:items-center", children: [
|
|
1131
1157
|
renderAvatars,
|
|
@@ -38,6 +38,32 @@ function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
+
function getTextColor(parentBg, variant = "default", options) {
|
|
42
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
43
|
+
if (isDark) {
|
|
44
|
+
switch (variant) {
|
|
45
|
+
case "default":
|
|
46
|
+
return "text-foreground";
|
|
47
|
+
case "muted":
|
|
48
|
+
return "text-foreground/80";
|
|
49
|
+
case "subtle":
|
|
50
|
+
return "text-foreground/60";
|
|
51
|
+
case "accent":
|
|
52
|
+
return "text-accent-foreground";
|
|
53
|
+
}
|
|
54
|
+
} else {
|
|
55
|
+
switch (variant) {
|
|
56
|
+
case "default":
|
|
57
|
+
return "text-foreground";
|
|
58
|
+
case "muted":
|
|
59
|
+
return "text-muted-foreground";
|
|
60
|
+
case "subtle":
|
|
61
|
+
return "text-muted-foreground/70";
|
|
62
|
+
case "accent":
|
|
63
|
+
return "text-primary";
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
41
67
|
function normalizePhoneNumber(input) {
|
|
42
68
|
const trimmed = input.trim();
|
|
43
69
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -1001,7 +1027,7 @@ function HeroGradientAvatarsRating({
|
|
|
1001
1027
|
Pressable,
|
|
1002
1028
|
{
|
|
1003
1029
|
href: topLinkHref,
|
|
1004
|
-
className: "my-6 text-xs font-bold tracking-[0.3em]
|
|
1030
|
+
className: cn("my-6 text-xs font-bold tracking-[0.3em] uppercase hover:underline", getTextColor(background, "muted")),
|
|
1005
1031
|
children: topLinkText
|
|
1006
1032
|
}
|
|
1007
1033
|
);
|
|
@@ -1054,7 +1080,7 @@ function HeroGradientAvatarsRating({
|
|
|
1054
1080
|
)),
|
|
1055
1081
|
ratingValue && /* @__PURE__ */ jsx("span", { className: "font-semibold", children: ratingValue })
|
|
1056
1082
|
] }),
|
|
1057
|
-
ratingLabel && (typeof ratingLabel === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm font-medium
|
|
1083
|
+
ratingLabel && (typeof ratingLabel === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm font-medium", getTextColor(background, "muted")), children: ratingLabel }) : ratingLabel)
|
|
1058
1084
|
] });
|
|
1059
1085
|
}, [ratingValue, ratingLabel, starCount]);
|
|
1060
1086
|
const renderImages = useMemo(() => {
|
|
@@ -1100,10 +1126,10 @@ function HeroGradientAvatarsRating({
|
|
|
1100
1126
|
typeof heading === "string" ? heading : heading,
|
|
1101
1127
|
headingSubtitle && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1102
1128
|
/* @__PURE__ */ jsx("br", {}),
|
|
1103
|
-
/* @__PURE__ */ jsx("span", { className: "
|
|
1129
|
+
/* @__PURE__ */ jsx("span", { className: getTextColor(background, "muted"), children: headingSubtitle })
|
|
1104
1130
|
] })
|
|
1105
1131
|
] }),
|
|
1106
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("my-8 max-w-xl
|
|
1132
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("my-8 max-w-xl lg:text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
1107
1133
|
renderActions,
|
|
1108
1134
|
(avatars || avatarsSlot || ratingValue || ratingLabel) && /* @__PURE__ */ jsxs("div", { className: "mt-8 flex flex-col items-center gap-4 sm:flex-row sm:items-center", children: [
|
|
1109
1135
|
renderAvatars,
|
|
@@ -32,6 +32,32 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
|
32
32
|
function cn(...inputs) {
|
|
33
33
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
34
34
|
}
|
|
35
|
+
function getTextColor(parentBg, variant = "default", options) {
|
|
36
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
37
|
+
if (isDark) {
|
|
38
|
+
switch (variant) {
|
|
39
|
+
case "default":
|
|
40
|
+
return "text-foreground";
|
|
41
|
+
case "muted":
|
|
42
|
+
return "text-foreground/80";
|
|
43
|
+
case "subtle":
|
|
44
|
+
return "text-foreground/60";
|
|
45
|
+
case "accent":
|
|
46
|
+
return "text-accent-foreground";
|
|
47
|
+
}
|
|
48
|
+
} else {
|
|
49
|
+
switch (variant) {
|
|
50
|
+
case "default":
|
|
51
|
+
return "text-foreground";
|
|
52
|
+
case "muted":
|
|
53
|
+
return "text-muted-foreground";
|
|
54
|
+
case "subtle":
|
|
55
|
+
return "text-muted-foreground/70";
|
|
56
|
+
case "accent":
|
|
57
|
+
return "text-primary";
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
35
61
|
function normalizePhoneNumber(input) {
|
|
36
62
|
const trimmed = input.trim();
|
|
37
63
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -887,7 +913,7 @@ function HeroGradientClientFocused({
|
|
|
887
913
|
),
|
|
888
914
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container flex flex-col items-center gap-5", containerClassName), children: [
|
|
889
915
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("max-w-2xl text-7xl font-medium max-lg:text-5xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("max-w-2xl text-7xl font-medium max-lg:text-5xl", headingClassName), children: heading })),
|
|
890
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-2xl
|
|
916
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-2xl max-lg:text-sm", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
|
|
891
917
|
renderActions,
|
|
892
918
|
renderImage
|
|
893
919
|
] })
|
|
@@ -11,6 +11,32 @@ import { Img } from '@page-speed/img';
|
|
|
11
11
|
function cn(...inputs) {
|
|
12
12
|
return twMerge(clsx(inputs));
|
|
13
13
|
}
|
|
14
|
+
function getTextColor(parentBg, variant = "default", options) {
|
|
15
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
16
|
+
if (isDark) {
|
|
17
|
+
switch (variant) {
|
|
18
|
+
case "default":
|
|
19
|
+
return "text-foreground";
|
|
20
|
+
case "muted":
|
|
21
|
+
return "text-foreground/80";
|
|
22
|
+
case "subtle":
|
|
23
|
+
return "text-foreground/60";
|
|
24
|
+
case "accent":
|
|
25
|
+
return "text-accent-foreground";
|
|
26
|
+
}
|
|
27
|
+
} else {
|
|
28
|
+
switch (variant) {
|
|
29
|
+
case "default":
|
|
30
|
+
return "text-foreground";
|
|
31
|
+
case "muted":
|
|
32
|
+
return "text-muted-foreground";
|
|
33
|
+
case "subtle":
|
|
34
|
+
return "text-muted-foreground/70";
|
|
35
|
+
case "accent":
|
|
36
|
+
return "text-primary";
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
14
40
|
function normalizePhoneNumber(input) {
|
|
15
41
|
const trimmed = input.trim();
|
|
16
42
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -866,7 +892,7 @@ function HeroGradientClientFocused({
|
|
|
866
892
|
),
|
|
867
893
|
children: /* @__PURE__ */ jsxs("div", { className: cn("container flex flex-col items-center gap-5", containerClassName), children: [
|
|
868
894
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("max-w-2xl text-7xl font-medium max-lg:text-5xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("max-w-2xl text-7xl font-medium max-lg:text-5xl", headingClassName), children: heading })),
|
|
869
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-2xl
|
|
895
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-2xl max-lg:text-sm", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
870
896
|
renderActions,
|
|
871
897
|
renderImage
|
|
872
898
|
] })
|
|
@@ -31,6 +31,32 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
|
31
31
|
function cn(...inputs) {
|
|
32
32
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
33
33
|
}
|
|
34
|
+
function getTextColor(parentBg, variant = "default", options) {
|
|
35
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
36
|
+
if (isDark) {
|
|
37
|
+
switch (variant) {
|
|
38
|
+
case "default":
|
|
39
|
+
return "text-foreground";
|
|
40
|
+
case "muted":
|
|
41
|
+
return "text-foreground/80";
|
|
42
|
+
case "subtle":
|
|
43
|
+
return "text-foreground/60";
|
|
44
|
+
case "accent":
|
|
45
|
+
return "text-accent-foreground";
|
|
46
|
+
}
|
|
47
|
+
} else {
|
|
48
|
+
switch (variant) {
|
|
49
|
+
case "default":
|
|
50
|
+
return "text-foreground";
|
|
51
|
+
case "muted":
|
|
52
|
+
return "text-muted-foreground";
|
|
53
|
+
case "subtle":
|
|
54
|
+
return "text-muted-foreground/70";
|
|
55
|
+
case "accent":
|
|
56
|
+
return "text-primary";
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
34
60
|
function normalizePhoneNumber(input) {
|
|
35
61
|
const trimmed = input.trim();
|
|
36
62
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -860,7 +886,7 @@ function HeroGridPatternEfficiency({
|
|
|
860
886
|
return /* @__PURE__ */ jsxRuntime.jsxs("h1", { className: cn("text-5xl leading-tight font-extrabold lg:text-8xl lg:leading-snug", headingClassName), children: [
|
|
861
887
|
"Less complexity. ",
|
|
862
888
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mr-6", children: "More" }),
|
|
863
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "relative inline-block before:absolute before:top-0 before:-right-2 before:-bottom-2 before:-left-4 before:-z-10 before:rounded-lg before
|
|
889
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("relative inline-block before:absolute before:top-0 before:-right-2 before:-bottom-2 before:-left-4 before:-z-10 before:rounded-lg", `before:${getTextColor(background, "muted")}/15`), children: highlightedWord })
|
|
864
890
|
] });
|
|
865
891
|
}, [heading, highlightedWord, headingClassName]);
|
|
866
892
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -877,7 +903,7 @@ function HeroGridPatternEfficiency({
|
|
|
877
903
|
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-7 text-xl font-light lg:text-3xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
|
|
878
904
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-12 flex w-fit flex-col gap-2.5 text-center", actionClassName), children: [
|
|
879
905
|
renderAction,
|
|
880
|
-
actionSubtext && (typeof actionSubtext === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm
|
|
906
|
+
actionSubtext && (typeof actionSubtext === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm", getTextColor(background, "muted")), children: actionSubtext }) : actionSubtext)
|
|
881
907
|
] })
|
|
882
908
|
] }) })
|
|
883
909
|
}
|