@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
|
@@ -10,6 +10,58 @@ 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
|
+
}
|
|
13
65
|
function normalizePhoneNumber(input) {
|
|
14
66
|
const trimmed = input.trim();
|
|
15
67
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -862,7 +914,7 @@ function HeroMinimalCenteredDark({
|
|
|
862
914
|
className
|
|
863
915
|
),
|
|
864
916
|
children: /* @__PURE__ */ jsxs("div", { className: cn("container flex flex-col items-center justify-center text-center", containerClassName), children: [
|
|
865
|
-
badge && /* @__PURE__ */ jsxs("div", { className: cn("inline-flex items-center gap-2 rounded-full border border-border/50
|
|
917
|
+
badge && /* @__PURE__ */ jsxs("div", { className: cn("inline-flex items-center gap-2 rounded-full border border-border/50 px-4 py-2 text-sm", `${getNestedCardBg(background, "muted")}/30`, getTextColor(background, "muted"), badgeClassName), children: [
|
|
866
918
|
showStatusDot && /* @__PURE__ */ jsxs("span", { className: "relative flex h-2 w-2", children: [
|
|
867
919
|
/* @__PURE__ */ jsx("span", { className: "absolute inline-flex h-full w-full animate-ping rounded-full bg-success opacity-75" }),
|
|
868
920
|
/* @__PURE__ */ jsx("span", { className: "relative inline-flex h-2 w-2 rounded-full bg-success" })
|
|
@@ -876,9 +928,9 @@ function HeroMinimalCenteredDark({
|
|
|
876
928
|
" ",
|
|
877
929
|
"is here"
|
|
878
930
|
] }) : null),
|
|
879
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-6 max-w-2xl text-lg
|
|
931
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-6 max-w-2xl text-lg md:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
880
932
|
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-10 flex flex-col gap-4 sm:flex-row", actionsClassName), children: renderActions }),
|
|
881
|
-
(statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-16 flex items-center gap-8 text-sm
|
|
933
|
+
(statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-16 flex items-center gap-8 text-sm", getTextColor(background, "muted"), statsClassName), children: renderStats })
|
|
882
934
|
] })
|
|
883
935
|
}
|
|
884
936
|
);
|
|
@@ -62,6 +62,36 @@ function getNestedCardTextColor(parentBg, options) {
|
|
|
62
62
|
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
63
63
|
return isDark ? "text-foreground" : "";
|
|
64
64
|
}
|
|
65
|
+
function getTextColor(parentBg, variant = "default", options) {
|
|
66
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
67
|
+
if (isDark) {
|
|
68
|
+
switch (variant) {
|
|
69
|
+
case "default":
|
|
70
|
+
return "text-foreground";
|
|
71
|
+
case "muted":
|
|
72
|
+
return "text-foreground/80";
|
|
73
|
+
case "subtle":
|
|
74
|
+
return "text-foreground/60";
|
|
75
|
+
case "accent":
|
|
76
|
+
return "text-accent-foreground";
|
|
77
|
+
}
|
|
78
|
+
} else {
|
|
79
|
+
switch (variant) {
|
|
80
|
+
case "default":
|
|
81
|
+
return "text-foreground";
|
|
82
|
+
case "muted":
|
|
83
|
+
return "text-muted-foreground";
|
|
84
|
+
case "subtle":
|
|
85
|
+
return "text-muted-foreground/70";
|
|
86
|
+
case "accent":
|
|
87
|
+
return "text-primary";
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function getAccentColor(parentBg, options) {
|
|
92
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
93
|
+
return isDark ? "text-accent-foreground" : "text-primary";
|
|
94
|
+
}
|
|
65
95
|
function normalizePhoneNumber(input) {
|
|
66
96
|
const trimmed = input.trim();
|
|
67
97
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -1025,8 +1055,8 @@ function HeroMobileAppDownload({
|
|
|
1025
1055
|
const renderRating = React.useMemo(() => {
|
|
1026
1056
|
if (ratingSlot) return ratingSlot;
|
|
1027
1057
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-4 pt-4", children: [
|
|
1028
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1", children: [...Array(starCount)].map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/star", size: 16, className: "fill-
|
|
1029
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm
|
|
1058
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1", children: [...Array(starCount)].map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/star", size: 16, className: cn("fill-current", getAccentColor(background)) }, i)) }),
|
|
1059
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("text-sm", getTextColor(background, "muted")), children: [
|
|
1030
1060
|
ratingValue,
|
|
1031
1061
|
" ",
|
|
1032
1062
|
ratingLabel
|
|
@@ -1044,7 +1074,7 @@ function HeroMobileAppDownload({
|
|
|
1044
1074
|
notification.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex h-10 w-10 items-center justify-center rounded-full", notification.iconBgClass), children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: notification.icon, size: 20, className: notification.iconColorClass }) }),
|
|
1045
1075
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1046
1076
|
notification.title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold ", children: notification.title }),
|
|
1047
|
-
notification.subtitle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs
|
|
1077
|
+
notification.subtitle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-xs", getTextColor(background, "muted")), children: notification.subtitle })
|
|
1048
1078
|
] })
|
|
1049
1079
|
] }) });
|
|
1050
1080
|
}, [notificationSlot, notification]);
|
|
@@ -1076,7 +1106,7 @@ function HeroMobileAppDownload({
|
|
|
1076
1106
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
|
|
1077
1107
|
renderBadge,
|
|
1078
1108
|
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 })),
|
|
1079
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg
|
|
1109
|
+
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 })),
|
|
1080
1110
|
renderStoreActions,
|
|
1081
1111
|
renderRating
|
|
1082
1112
|
] }),
|
|
@@ -41,6 +41,36 @@ function getNestedCardTextColor(parentBg, options) {
|
|
|
41
41
|
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
42
42
|
return isDark ? "text-foreground" : "";
|
|
43
43
|
}
|
|
44
|
+
function getTextColor(parentBg, variant = "default", options) {
|
|
45
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
46
|
+
if (isDark) {
|
|
47
|
+
switch (variant) {
|
|
48
|
+
case "default":
|
|
49
|
+
return "text-foreground";
|
|
50
|
+
case "muted":
|
|
51
|
+
return "text-foreground/80";
|
|
52
|
+
case "subtle":
|
|
53
|
+
return "text-foreground/60";
|
|
54
|
+
case "accent":
|
|
55
|
+
return "text-accent-foreground";
|
|
56
|
+
}
|
|
57
|
+
} else {
|
|
58
|
+
switch (variant) {
|
|
59
|
+
case "default":
|
|
60
|
+
return "text-foreground";
|
|
61
|
+
case "muted":
|
|
62
|
+
return "text-muted-foreground";
|
|
63
|
+
case "subtle":
|
|
64
|
+
return "text-muted-foreground/70";
|
|
65
|
+
case "accent":
|
|
66
|
+
return "text-primary";
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function getAccentColor(parentBg, options) {
|
|
71
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
72
|
+
return isDark ? "text-accent-foreground" : "text-primary";
|
|
73
|
+
}
|
|
44
74
|
function normalizePhoneNumber(input) {
|
|
45
75
|
const trimmed = input.trim();
|
|
46
76
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -1004,8 +1034,8 @@ function HeroMobileAppDownload({
|
|
|
1004
1034
|
const renderRating = useMemo(() => {
|
|
1005
1035
|
if (ratingSlot) return ratingSlot;
|
|
1006
1036
|
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4 pt-4", children: [
|
|
1007
|
-
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-1", children: [...Array(starCount)].map((_, i) => /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/star", size: 16, className: "fill-
|
|
1008
|
-
/* @__PURE__ */ jsxs("span", { className: "text-sm
|
|
1037
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-1", children: [...Array(starCount)].map((_, i) => /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/star", size: 16, className: cn("fill-current", getAccentColor(background)) }, i)) }),
|
|
1038
|
+
/* @__PURE__ */ jsxs("span", { className: cn("text-sm", getTextColor(background, "muted")), children: [
|
|
1009
1039
|
ratingValue,
|
|
1010
1040
|
" ",
|
|
1011
1041
|
ratingLabel
|
|
@@ -1023,7 +1053,7 @@ function HeroMobileAppDownload({
|
|
|
1023
1053
|
notification.icon && /* @__PURE__ */ jsx("div", { className: cn("flex h-10 w-10 items-center justify-center rounded-full", notification.iconBgClass), children: /* @__PURE__ */ jsx(DynamicIcon, { name: notification.icon, size: 20, className: notification.iconColorClass }) }),
|
|
1024
1054
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
1025
1055
|
notification.title && /* @__PURE__ */ jsx("div", { className: "font-semibold ", children: notification.title }),
|
|
1026
|
-
notification.subtitle && /* @__PURE__ */ jsx("div", { className: "text-xs
|
|
1056
|
+
notification.subtitle && /* @__PURE__ */ jsx("div", { className: cn("text-xs", getTextColor(background, "muted")), children: notification.subtitle })
|
|
1027
1057
|
] })
|
|
1028
1058
|
] }) });
|
|
1029
1059
|
}, [notificationSlot, notification]);
|
|
@@ -1055,7 +1085,7 @@ function HeroMobileAppDownload({
|
|
|
1055
1085
|
/* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
|
|
1056
1086
|
renderBadge,
|
|
1057
1087
|
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 })),
|
|
1058
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg
|
|
1088
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
1059
1089
|
renderStoreActions,
|
|
1060
1090
|
renderRating
|
|
1061
1091
|
] }),
|
|
@@ -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:")) {
|
|
@@ -865,7 +891,7 @@ function HeroNewsletterMinimal({
|
|
|
865
891
|
const renderStats = React.useMemo(() => {
|
|
866
892
|
if (statsSlot) return statsSlot;
|
|
867
893
|
if (!stats || stats.length === 0) return null;
|
|
868
|
-
return stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2 text-sm
|
|
894
|
+
return stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2 text-sm", getTextColor(background, "muted"), stat.className), children: [
|
|
869
895
|
stat.icon,
|
|
870
896
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: stat.value })
|
|
871
897
|
] }, index));
|
|
@@ -907,9 +933,9 @@ function HeroNewsletterMinimal({
|
|
|
907
933
|
),
|
|
908
934
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container flex flex-col items-center justify-center text-center", containerClassName), children: [
|
|
909
935
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("max-w-3xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
|
|
910
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-6 max-w-xl text-lg
|
|
936
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-6 max-w-xl text-lg md:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
|
|
911
937
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-10 flex w-full max-w-md flex-col gap-4 sm:flex-row", formClassName), children: renderForm }),
|
|
912
|
-
disclaimer && (typeof disclaimer === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-4 text-sm
|
|
938
|
+
disclaimer && (typeof disclaimer === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-4 text-sm", getTextColor(background, "muted"), disclaimerClassName), children: disclaimer }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: disclaimerClassName, children: disclaimer })),
|
|
913
939
|
(statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-16 flex flex-wrap items-center justify-center gap-8", statsClassName), children: renderStats })
|
|
914
940
|
] })
|
|
915
941
|
}
|
|
@@ -10,6 +10,32 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
10
10
|
function cn(...inputs) {
|
|
11
11
|
return twMerge(clsx(inputs));
|
|
12
12
|
}
|
|
13
|
+
function getTextColor(parentBg, variant = "default", options) {
|
|
14
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
15
|
+
if (isDark) {
|
|
16
|
+
switch (variant) {
|
|
17
|
+
case "default":
|
|
18
|
+
return "text-foreground";
|
|
19
|
+
case "muted":
|
|
20
|
+
return "text-foreground/80";
|
|
21
|
+
case "subtle":
|
|
22
|
+
return "text-foreground/60";
|
|
23
|
+
case "accent":
|
|
24
|
+
return "text-accent-foreground";
|
|
25
|
+
}
|
|
26
|
+
} else {
|
|
27
|
+
switch (variant) {
|
|
28
|
+
case "default":
|
|
29
|
+
return "text-foreground";
|
|
30
|
+
case "muted":
|
|
31
|
+
return "text-muted-foreground";
|
|
32
|
+
case "subtle":
|
|
33
|
+
return "text-muted-foreground/70";
|
|
34
|
+
case "accent":
|
|
35
|
+
return "text-primary";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
13
39
|
function normalizePhoneNumber(input) {
|
|
14
40
|
const trimmed = input.trim();
|
|
15
41
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -844,7 +870,7 @@ function HeroNewsletterMinimal({
|
|
|
844
870
|
const renderStats = useMemo(() => {
|
|
845
871
|
if (statsSlot) return statsSlot;
|
|
846
872
|
if (!stats || stats.length === 0) return null;
|
|
847
|
-
return stats.map((stat, index) => /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2 text-sm
|
|
873
|
+
return stats.map((stat, index) => /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2 text-sm", getTextColor(background, "muted"), stat.className), children: [
|
|
848
874
|
stat.icon,
|
|
849
875
|
/* @__PURE__ */ jsx("span", { children: stat.value })
|
|
850
876
|
] }, index));
|
|
@@ -886,9 +912,9 @@ function HeroNewsletterMinimal({
|
|
|
886
912
|
),
|
|
887
913
|
children: /* @__PURE__ */ jsxs("div", { className: cn("container flex flex-col items-center justify-center text-center", containerClassName), children: [
|
|
888
914
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("max-w-3xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
|
|
889
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-6 max-w-xl text-lg
|
|
915
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-6 max-w-xl text-lg md:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
890
916
|
/* @__PURE__ */ jsx("div", { className: cn("mt-10 flex w-full max-w-md flex-col gap-4 sm:flex-row", formClassName), children: renderForm }),
|
|
891
|
-
disclaimer && (typeof disclaimer === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-sm
|
|
917
|
+
disclaimer && (typeof disclaimer === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-sm", getTextColor(background, "muted"), disclaimerClassName), children: disclaimer }) : /* @__PURE__ */ jsx("div", { className: disclaimerClassName, children: disclaimer })),
|
|
892
918
|
(statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-16 flex flex-wrap items-center justify-center gap-8", statsClassName), children: renderStats })
|
|
893
919
|
] })
|
|
894
920
|
}
|
|
@@ -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
|
var svgCache = /* @__PURE__ */ new Map();
|
|
37
67
|
function DynamicIcon({
|
|
38
68
|
name,
|
|
@@ -980,17 +1010,17 @@ function HeroOverlayCtaGrid({
|
|
|
980
1010
|
href: card.href,
|
|
981
1011
|
className: "group flex items-center gap-4 px-6 py-6 transition-colors hover:bg-primary/5",
|
|
982
1012
|
children: [
|
|
983
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative flex h-12 w-12 flex-none items-center justify-center rounded-full
|
|
1013
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("relative flex h-12 w-12 flex-none items-center justify-center rounded-full transition-colors group-hover:text-primary-foreground", `${getAccentColor(background)}/10`, getAccentColor(background), `group-hover:${getAccentColor(background)}`), children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: card.icon, size: 22 }) }),
|
|
984
1014
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
|
|
985
1015
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base font-semibold ", children: card.label }),
|
|
986
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm
|
|
1016
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm", getTextColor(background, "muted")), children: card.subtitle })
|
|
987
1017
|
] }),
|
|
988
1018
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
989
1019
|
DynamicIcon,
|
|
990
1020
|
{
|
|
991
1021
|
name: "lucide/arrow-right",
|
|
992
1022
|
size: 18,
|
|
993
|
-
className: "ml-auto flex-none
|
|
1023
|
+
className: cn("ml-auto flex-none", getAccentColor(background))
|
|
994
1024
|
}
|
|
995
1025
|
)
|
|
996
1026
|
]
|
|
@@ -12,6 +12,36 @@ import { cva } from 'class-variance-authority';
|
|
|
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
|
var svgCache = /* @__PURE__ */ new Map();
|
|
16
46
|
function DynamicIcon({
|
|
17
47
|
name,
|
|
@@ -959,17 +989,17 @@ function HeroOverlayCtaGrid({
|
|
|
959
989
|
href: card.href,
|
|
960
990
|
className: "group flex items-center gap-4 px-6 py-6 transition-colors hover:bg-primary/5",
|
|
961
991
|
children: [
|
|
962
|
-
/* @__PURE__ */ jsx("div", { className: "relative flex h-12 w-12 flex-none items-center justify-center rounded-full
|
|
992
|
+
/* @__PURE__ */ jsx("div", { className: cn("relative flex h-12 w-12 flex-none items-center justify-center rounded-full transition-colors group-hover:text-primary-foreground", `${getAccentColor(background)}/10`, getAccentColor(background), `group-hover:${getAccentColor(background)}`), children: /* @__PURE__ */ jsx(DynamicIcon, { name: card.icon, size: 22 }) }),
|
|
963
993
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
964
994
|
/* @__PURE__ */ jsx("p", { className: "text-base font-semibold ", children: card.label }),
|
|
965
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm
|
|
995
|
+
/* @__PURE__ */ jsx("p", { className: cn("text-sm", getTextColor(background, "muted")), children: card.subtitle })
|
|
966
996
|
] }),
|
|
967
997
|
/* @__PURE__ */ jsx(
|
|
968
998
|
DynamicIcon,
|
|
969
999
|
{
|
|
970
1000
|
name: "lucide/arrow-right",
|
|
971
1001
|
size: 18,
|
|
972
|
-
className: "ml-auto flex-none
|
|
1002
|
+
className: cn("ml-auto flex-none", getAccentColor(background))
|
|
973
1003
|
}
|
|
974
1004
|
)
|
|
975
1005
|
]
|
|
@@ -33,6 +33,32 @@ 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
|
+
}
|
|
36
62
|
var badgeVariants = classVarianceAuthority.cva(
|
|
37
63
|
"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
|
|
38
64
|
{
|
|
@@ -968,11 +994,11 @@ function HeroPatternBadgeLogos({
|
|
|
968
994
|
badge && /* @__PURE__ */ jsxRuntime.jsx("div", { className: badgeClassName, children: typeof badge === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: "transition-colors hover:bg-secondary/20", children: badge }) : badge }),
|
|
969
995
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
970
996
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("mb-6 text-4xl font-bold tracking-tight text-pretty md:text-5xl lg:text-7xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
|
|
971
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mx-auto max-w-2xl
|
|
997
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mx-auto max-w-2xl md:text-lg lg:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
|
|
972
998
|
] }),
|
|
973
999
|
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-6 flex items-center gap-4", actionsClassName), children: renderActions }),
|
|
974
1000
|
(logosSlot || logos && logos.length > 0 || logosTagline) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-12 flex flex-col items-center gap-4 lg:mt-16", logosClassName), children: [
|
|
975
|
-
logosTagline && (typeof logosTagline === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-center text-sm
|
|
1001
|
+
logosTagline && (typeof logosTagline === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-center text-sm", getTextColor(background, "muted")), children: logosTagline }) : logosTagline),
|
|
976
1002
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 place-items-center items-center justify-center gap-6 opacity-80 sm:grid-cols-4 sm:gap-4", children: renderLogos })
|
|
977
1003
|
] })
|
|
978
1004
|
] }) }) })
|
|
@@ -12,6 +12,32 @@ 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
|
+
}
|
|
15
41
|
var badgeVariants = cva(
|
|
16
42
|
"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
|
|
17
43
|
{
|
|
@@ -947,11 +973,11 @@ function HeroPatternBadgeLogos({
|
|
|
947
973
|
badge && /* @__PURE__ */ jsx("div", { className: badgeClassName, children: typeof badge === "string" ? /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "transition-colors hover:bg-secondary/20", children: badge }) : badge }),
|
|
948
974
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
949
975
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("mb-6 text-4xl font-bold tracking-tight text-pretty md:text-5xl lg:text-7xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
|
|
950
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mx-auto max-w-2xl
|
|
976
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mx-auto max-w-2xl md:text-lg lg:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
|
|
951
977
|
] }),
|
|
952
978
|
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-6 flex items-center gap-4", actionsClassName), children: renderActions }),
|
|
953
979
|
(logosSlot || logos && logos.length > 0 || logosTagline) && /* @__PURE__ */ jsxs("div", { className: cn("mt-12 flex flex-col items-center gap-4 lg:mt-16", logosClassName), children: [
|
|
954
|
-
logosTagline && (typeof logosTagline === "string" ? /* @__PURE__ */ jsx("p", { className: "text-center text-sm
|
|
980
|
+
logosTagline && (typeof logosTagline === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-center text-sm", getTextColor(background, "muted")), children: logosTagline }) : logosTagline),
|
|
955
981
|
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 place-items-center items-center justify-center gap-6 opacity-80 sm:grid-cols-4 sm:gap-4", children: renderLogos })
|
|
956
982
|
] })
|
|
957
983
|
] }) }) })
|
|
@@ -32,6 +32,36 @@ 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
|
+
}
|
|
61
|
+
function getAccentColor(parentBg, options) {
|
|
62
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
63
|
+
return isDark ? "text-accent-foreground" : "text-primary";
|
|
64
|
+
}
|
|
35
65
|
function normalizePhoneNumber(input) {
|
|
36
66
|
const trimmed = input.trim();
|
|
37
67
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -889,7 +919,7 @@ function HeroPatternLogoTechStack({
|
|
|
889
919
|
if (techLogosSlot) return techLogosSlot;
|
|
890
920
|
if (!techLogos || techLogos.length === 0) return null;
|
|
891
921
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-20 flex flex-col items-center gap-5", techLogosClassName), children: [
|
|
892
|
-
techStackLabel && (typeof techStackLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium
|
|
922
|
+
techStackLabel && (typeof techStackLabel === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("font-medium lg:text-left", getTextColor(background, "muted")), children: techStackLabel }) : techStackLabel),
|
|
893
923
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center justify-center gap-4", children: techLogos.map((techLogo, index) => {
|
|
894
924
|
const techLogoSrc = typeof techLogo.src === "string" ? techLogo.src : techLogo.src.light;
|
|
895
925
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -940,9 +970,9 @@ function HeroPatternLogoTechStack({
|
|
|
940
970
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsxs("h1", { className: cn("mb-6 text-2xl font-bold tracking-tight text-pretty lg:text-5xl", headingClassName), children: [
|
|
941
971
|
heading,
|
|
942
972
|
" ",
|
|
943
|
-
highlightedWord && /* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
973
|
+
highlightedWord && /* @__PURE__ */ jsxRuntime.jsx("span", { className: getAccentColor(background), children: highlightedWord })
|
|
944
974
|
] }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("mb-6 text-2xl font-bold tracking-tight text-pretty lg:text-5xl", headingClassName), children: heading })),
|
|
945
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mx-auto max-w-3xl
|
|
975
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mx-auto max-w-3xl lg:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
|
|
946
976
|
] }),
|
|
947
977
|
renderActions,
|
|
948
978
|
renderTechLogos
|