@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
|
@@ -13,6 +13,54 @@ import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
|
13
13
|
function cn(...inputs) {
|
|
14
14
|
return twMerge(clsx(inputs));
|
|
15
15
|
}
|
|
16
|
+
function getTextColor(parentBg, variant = "default", options) {
|
|
17
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
18
|
+
if (isDark) {
|
|
19
|
+
switch (variant) {
|
|
20
|
+
case "default":
|
|
21
|
+
return "text-foreground";
|
|
22
|
+
case "muted":
|
|
23
|
+
return "text-foreground/80";
|
|
24
|
+
case "subtle":
|
|
25
|
+
return "text-foreground/60";
|
|
26
|
+
case "accent":
|
|
27
|
+
return "text-accent-foreground";
|
|
28
|
+
}
|
|
29
|
+
} else {
|
|
30
|
+
switch (variant) {
|
|
31
|
+
case "default":
|
|
32
|
+
return "text-foreground";
|
|
33
|
+
case "muted":
|
|
34
|
+
return "text-muted-foreground";
|
|
35
|
+
case "subtle":
|
|
36
|
+
return "text-muted-foreground/70";
|
|
37
|
+
case "accent":
|
|
38
|
+
return "text-primary";
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function getBorderColor(parentBg, variant = "default", options) {
|
|
43
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
44
|
+
if (isDark) {
|
|
45
|
+
switch (variant) {
|
|
46
|
+
case "default":
|
|
47
|
+
return "border-foreground/20";
|
|
48
|
+
case "muted":
|
|
49
|
+
return "border-foreground/10";
|
|
50
|
+
case "accent":
|
|
51
|
+
return "border-accent-foreground";
|
|
52
|
+
}
|
|
53
|
+
} else {
|
|
54
|
+
switch (variant) {
|
|
55
|
+
case "default":
|
|
56
|
+
return "border-border";
|
|
57
|
+
case "muted":
|
|
58
|
+
return "border-muted";
|
|
59
|
+
case "accent":
|
|
60
|
+
return "border-primary";
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
16
64
|
function normalizePhoneNumber(input) {
|
|
17
65
|
const trimmed = input.trim();
|
|
18
66
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -1083,7 +1131,7 @@ function HeroSoftwareGrowthVideoDialog({
|
|
|
1083
1131
|
{ index: 2, className: "absolute -bottom-[14%] left-[51%] w-[38.19%] max-w-137.5", ratio: 1.686153846 / 1 },
|
|
1084
1132
|
{ index: 3, className: "absolute -bottom-[30%] left-[10.7%] w-[38.19%] max-w-137.5", ratio: 1.415041783 / 1 }
|
|
1085
1133
|
];
|
|
1086
|
-
return /* @__PURE__ */ jsx("div", { className: cn("w-full py-[16%]", showcaseClassName), children: /* @__PURE__ */ jsx("div", { className: "
|
|
1134
|
+
return /* @__PURE__ */ jsx("div", { className: cn("w-full py-[16%]", showcaseClassName), children: /* @__PURE__ */ jsx("div", { className: cn("relative aspect-[2.716981132/1] w-full border", getBorderColor(background, "muted")), children: imageConfigs.map(({ index, className: posClassName, ratio }) => /* @__PURE__ */ jsx("div", { className: posClassName, children: /* @__PURE__ */ jsx(AspectRatio, { ratio, children: /* @__PURE__ */ jsx(
|
|
1087
1135
|
Img,
|
|
1088
1136
|
{
|
|
1089
1137
|
src: showcaseImages[index].src,
|
|
@@ -1101,7 +1149,7 @@ function HeroSoftwareGrowthVideoDialog({
|
|
|
1101
1149
|
children: /* @__PURE__ */ jsx("div", { className: cn("container max-w-[1440px]", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
|
|
1102
1150
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center gap-8", children: [
|
|
1103
1151
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("max-w-[1000px] text-center text-[3.125rem] leading-none md:text-[4.25rem] lg:text-[5.5rem]", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("max-w-[1000px] text-center text-[3.125rem] leading-none md:text-[4.25rem] lg:text-[5.5rem]", headingClassName), children: heading })),
|
|
1104
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-212.5 text-center text-lg leading-snug
|
|
1152
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-212.5 text-center text-lg leading-snug md:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
1105
1153
|
renderActions
|
|
1106
1154
|
] }),
|
|
1107
1155
|
renderShowcaseImages
|
|
@@ -57,6 +57,32 @@ function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
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
|
+
}
|
|
60
86
|
function normalizePhoneNumber(input) {
|
|
61
87
|
const trimmed = input.trim();
|
|
62
88
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -898,7 +924,7 @@ function HeroSpiralPatternCards({
|
|
|
898
924
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container flex flex-col items-center text-center", containerClassName), children: [
|
|
899
925
|
badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs uppercase", children: badgeText }) : badgeText),
|
|
900
926
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("my-3 text-2xl font-bold text-pretty sm:text-4xl md:my-6 lg:text-5xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("my-3 text-2xl font-bold text-pretty sm:text-4xl md:my-6 lg:text-5xl", headingClassName), children: heading })),
|
|
901
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-6 max-w-xl
|
|
927
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-6 max-w-xl md:mb-12 lg:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
|
|
902
928
|
renderActions
|
|
903
929
|
] }),
|
|
904
930
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-16 flex flex-col items-center justify-center lg:mt-32", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "b relative mx-auto aspect-square w-[95%] max-w-125 sm:w-full", children: [
|
|
@@ -908,7 +934,7 @@ function HeroSpiralPatternCards({
|
|
|
908
934
|
xmlns: "http://www.w3.org/2000/svg",
|
|
909
935
|
version: "1.1",
|
|
910
936
|
viewBox: "0 0 800 800",
|
|
911
|
-
className: "h-full w-full
|
|
937
|
+
className: cn("h-full w-full opacity-20", getTextColor(background, "muted")),
|
|
912
938
|
children: Array.from(Array(4e3).keys()).map((dot, index, array) => {
|
|
913
939
|
const angle = 0.2 * index;
|
|
914
940
|
const scalar = 300 + index * (100 / array.length);
|
|
@@ -36,6 +36,32 @@ function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
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
|
+
}
|
|
39
65
|
function normalizePhoneNumber(input) {
|
|
40
66
|
const trimmed = input.trim();
|
|
41
67
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -877,7 +903,7 @@ function HeroSpiralPatternCards({
|
|
|
877
903
|
/* @__PURE__ */ jsxs("div", { className: cn("container flex flex-col items-center text-center", containerClassName), children: [
|
|
878
904
|
badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs uppercase", children: badgeText }) : badgeText),
|
|
879
905
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("my-3 text-2xl font-bold text-pretty sm:text-4xl md:my-6 lg:text-5xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("my-3 text-2xl font-bold text-pretty sm:text-4xl md:my-6 lg:text-5xl", headingClassName), children: heading })),
|
|
880
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-6 max-w-xl
|
|
906
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-6 max-w-xl md:mb-12 lg:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
881
907
|
renderActions
|
|
882
908
|
] }),
|
|
883
909
|
/* @__PURE__ */ jsx("div", { className: "mt-16 flex flex-col items-center justify-center lg:mt-32", children: /* @__PURE__ */ jsxs("div", { className: "b relative mx-auto aspect-square w-[95%] max-w-125 sm:w-full", children: [
|
|
@@ -887,7 +913,7 @@ function HeroSpiralPatternCards({
|
|
|
887
913
|
xmlns: "http://www.w3.org/2000/svg",
|
|
888
914
|
version: "1.1",
|
|
889
915
|
viewBox: "0 0 800 800",
|
|
890
|
-
className: "h-full w-full
|
|
916
|
+
className: cn("h-full w-full opacity-20", getTextColor(background, "muted")),
|
|
891
917
|
children: Array.from(Array(4e3).keys()).map((dot, index, array) => {
|
|
892
918
|
const angle = 0.2 * index;
|
|
893
919
|
const scalar = 300 + index * (100 / array.length);
|
|
@@ -31,6 +31,36 @@ 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
|
+
}
|
|
60
|
+
function getAccentColor(parentBg, options) {
|
|
61
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
62
|
+
return isDark ? "text-accent-foreground" : "text-primary";
|
|
63
|
+
}
|
|
34
64
|
var svgCache = /* @__PURE__ */ new Map();
|
|
35
65
|
function DynamicIcon({
|
|
36
66
|
name,
|
|
@@ -982,10 +1012,10 @@ function HeroSplitIconCards({
|
|
|
982
1012
|
if (!cardItems || cardItems.length === 0) return null;
|
|
983
1013
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4", children: cardItems.map((item, idx) => {
|
|
984
1014
|
const card = /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "h-full border-border/60 px-0 py-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-4 p-6", children: [
|
|
985
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-14 w-14 items-center justify-center rounded-xl
|
|
1015
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex h-14 w-14 items-center justify-center rounded-xl", `${getAccentColor(background)}/10`, getAccentColor(background)), children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.icon, size: 24 }) }),
|
|
986
1016
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
987
1017
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-bold ", children: item.title }),
|
|
988
|
-
item.subtitle ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm
|
|
1018
|
+
item.subtitle ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-2 text-sm", getTextColor(background, "muted")), children: item.subtitle }) : null
|
|
989
1019
|
] })
|
|
990
1020
|
] }) });
|
|
991
1021
|
return item.href ? /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: item.href, className: "block", children: card }, idx) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: card }, idx);
|
|
@@ -1001,9 +1031,9 @@ function HeroSplitIconCards({
|
|
|
1001
1031
|
className: cn("overflow-hidden", className),
|
|
1002
1032
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-10 lg:grid-cols-2 lg:items-center", children: [
|
|
1003
1033
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("space-y-6", contentClassName), children: children ? children : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1004
|
-
eyebrow && (typeof eyebrow === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold uppercase tracking-[0.25em]
|
|
1034
|
+
eyebrow && (typeof eyebrow === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-xs font-semibold uppercase tracking-[0.25em]", getAccentColor(background)), children: eyebrow }) : eyebrow),
|
|
1005
1035
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-bold md:text-4xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-bold md:text-4xl", headingClassName), children: heading })),
|
|
1006
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg
|
|
1036
|
+
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 })),
|
|
1007
1037
|
renderActions
|
|
1008
1038
|
] }) }),
|
|
1009
1039
|
renderCards
|
|
@@ -10,6 +10,36 @@ import { cva } from 'class-variance-authority';
|
|
|
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
|
+
}
|
|
39
|
+
function getAccentColor(parentBg, options) {
|
|
40
|
+
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
41
|
+
return isDark ? "text-accent-foreground" : "text-primary";
|
|
42
|
+
}
|
|
13
43
|
var svgCache = /* @__PURE__ */ new Map();
|
|
14
44
|
function DynamicIcon({
|
|
15
45
|
name,
|
|
@@ -961,10 +991,10 @@ function HeroSplitIconCards({
|
|
|
961
991
|
if (!cardItems || cardItems.length === 0) return null;
|
|
962
992
|
return /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4", children: cardItems.map((item, idx) => {
|
|
963
993
|
const card = /* @__PURE__ */ jsx(Card, { className: "h-full border-border/60 px-0 py-0", children: /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-4 p-6", children: [
|
|
964
|
-
/* @__PURE__ */ jsx("div", { className: "flex h-14 w-14 items-center justify-center rounded-xl
|
|
994
|
+
/* @__PURE__ */ jsx("div", { className: cn("flex h-14 w-14 items-center justify-center rounded-xl", `${getAccentColor(background)}/10`, getAccentColor(background)), children: /* @__PURE__ */ jsx(DynamicIcon, { name: item.icon, size: 24 }) }),
|
|
965
995
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
966
996
|
/* @__PURE__ */ jsx("h3", { className: "text-lg font-bold ", children: item.title }),
|
|
967
|
-
item.subtitle ? /* @__PURE__ */ jsx("p", { className: "mt-2 text-sm
|
|
997
|
+
item.subtitle ? /* @__PURE__ */ jsx("p", { className: cn("mt-2 text-sm", getTextColor(background, "muted")), children: item.subtitle }) : null
|
|
968
998
|
] })
|
|
969
999
|
] }) });
|
|
970
1000
|
return item.href ? /* @__PURE__ */ jsx(Pressable, { href: item.href, className: "block", children: card }, idx) : /* @__PURE__ */ jsx("div", { children: card }, idx);
|
|
@@ -980,9 +1010,9 @@ function HeroSplitIconCards({
|
|
|
980
1010
|
className: cn("overflow-hidden", className),
|
|
981
1011
|
children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-10 lg:grid-cols-2 lg:items-center", children: [
|
|
982
1012
|
/* @__PURE__ */ jsx("div", { className: cn("space-y-6", contentClassName), children: children ? children : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
983
|
-
eyebrow && (typeof eyebrow === "string" ? /* @__PURE__ */ jsx("p", { className: "text-xs font-semibold uppercase tracking-[0.25em]
|
|
1013
|
+
eyebrow && (typeof eyebrow === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-xs font-semibold uppercase tracking-[0.25em]", getAccentColor(background)), children: eyebrow }) : eyebrow),
|
|
984
1014
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-bold md:text-4xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-bold md:text-4xl", headingClassName), children: heading })),
|
|
985
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg
|
|
1015
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
986
1016
|
renderActions
|
|
987
1017
|
] }) }),
|
|
988
1018
|
renderCards
|
|
@@ -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 HeroSplitImageNewsletter({
|
|
|
887
913
|
}
|
|
888
914
|
)
|
|
889
915
|
] }),
|
|
890
|
-
newsletterForm.helperText && (typeof newsletterForm.helperText === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm
|
|
916
|
+
newsletterForm.helperText && (typeof newsletterForm.helperText === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm", getTextColor(background, "muted")), children: newsletterForm.helperText }) : newsletterForm.helperText)
|
|
891
917
|
] });
|
|
892
918
|
}, [newsletterFormSlot, newsletterForm]);
|
|
893
919
|
const renderImage = React.useMemo(() => {
|
|
@@ -913,7 +939,7 @@ function HeroSplitImageNewsletter({
|
|
|
913
939
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container flex flex-col items-center gap-10 lg:flex-row lg:gap-20", containerClassName), children: [
|
|
914
940
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-8 lg:w-1/2", contentClassName), children: [
|
|
915
941
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-5xl font-bold md:text-6xl lg:text-7xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-5xl font-bold md:text-6xl lg:text-7xl", headingClassName), children: heading })),
|
|
916
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg
|
|
942
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg md:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
|
|
917
943
|
renderNewsletterForm
|
|
918
944
|
] }),
|
|
919
945
|
renderImage
|
|
@@ -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 HeroSplitImageNewsletter({
|
|
|
866
892
|
}
|
|
867
893
|
)
|
|
868
894
|
] }),
|
|
869
|
-
newsletterForm.helperText && (typeof newsletterForm.helperText === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm
|
|
895
|
+
newsletterForm.helperText && (typeof newsletterForm.helperText === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm", getTextColor(background, "muted")), children: newsletterForm.helperText }) : newsletterForm.helperText)
|
|
870
896
|
] });
|
|
871
897
|
}, [newsletterFormSlot, newsletterForm]);
|
|
872
898
|
const renderImage = useMemo(() => {
|
|
@@ -892,7 +918,7 @@ function HeroSplitImageNewsletter({
|
|
|
892
918
|
children: /* @__PURE__ */ jsxs("div", { className: cn("container flex flex-col items-center gap-10 lg:flex-row lg:gap-20", containerClassName), children: [
|
|
893
919
|
/* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-8 lg:w-1/2", contentClassName), children: [
|
|
894
920
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-5xl font-bold md:text-6xl lg:text-7xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("text-5xl font-bold md:text-6xl lg:text-7xl", headingClassName), children: heading })),
|
|
895
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg
|
|
921
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg md:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
896
922
|
renderNewsletterForm
|
|
897
923
|
] }),
|
|
898
924
|
renderImage
|
|
@@ -57,6 +57,32 @@ function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
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
|
+
}
|
|
60
86
|
function normalizePhoneNumber(input) {
|
|
61
87
|
const trimmed = input.trim();
|
|
62
88
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -897,7 +923,7 @@ function HeroSplitSpiralShapes({
|
|
|
897
923
|
xmlns: "http://www.w3.org/2000/svg",
|
|
898
924
|
version: "1.1",
|
|
899
925
|
viewBox: "0 0 800 800",
|
|
900
|
-
className: "h-full w-full
|
|
926
|
+
className: cn("h-full w-full opacity-20", getTextColor(background, "muted")),
|
|
901
927
|
children: Array.from(Array(720).keys()).map((dot, index, array) => {
|
|
902
928
|
const angle = 0.2 * index;
|
|
903
929
|
const scalar = 40 + index * (360 / array.length);
|
|
@@ -933,7 +959,7 @@ function HeroSplitSpiralShapes({
|
|
|
933
959
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center py-32 text-center lg:mx-auto lg:items-start lg:px-0 lg:text-left", contentClassName), children: [
|
|
934
960
|
badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: badgeText }) : badgeText),
|
|
935
961
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("my-6 text-4xl font-bold text-pretty lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("my-6 text-4xl font-bold text-pretty lg:text-6xl", headingClassName), children: heading })),
|
|
936
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-8 max-w-xl
|
|
962
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-8 max-w-xl lg:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
|
|
937
963
|
renderActions
|
|
938
964
|
] }),
|
|
939
965
|
renderShapes
|
|
@@ -36,6 +36,32 @@ function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
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
|
+
}
|
|
39
65
|
function normalizePhoneNumber(input) {
|
|
40
66
|
const trimmed = input.trim();
|
|
41
67
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -876,7 +902,7 @@ function HeroSplitSpiralShapes({
|
|
|
876
902
|
xmlns: "http://www.w3.org/2000/svg",
|
|
877
903
|
version: "1.1",
|
|
878
904
|
viewBox: "0 0 800 800",
|
|
879
|
-
className: "h-full w-full
|
|
905
|
+
className: cn("h-full w-full opacity-20", getTextColor(background, "muted")),
|
|
880
906
|
children: Array.from(Array(720).keys()).map((dot, index, array) => {
|
|
881
907
|
const angle = 0.2 * index;
|
|
882
908
|
const scalar = 40 + index * (360 / array.length);
|
|
@@ -912,7 +938,7 @@ function HeroSplitSpiralShapes({
|
|
|
912
938
|
/* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center py-32 text-center lg:mx-auto lg:items-start lg:px-0 lg:text-left", contentClassName), children: [
|
|
913
939
|
badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsx("p", { children: badgeText }) : badgeText),
|
|
914
940
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("my-6 text-4xl font-bold text-pretty lg:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("h1", { className: cn("my-6 text-4xl font-bold text-pretty lg:text-6xl", headingClassName), children: heading })),
|
|
915
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-8 max-w-xl
|
|
941
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-8 max-w-xl lg:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
916
942
|
renderActions
|
|
917
943
|
] }),
|
|
918
944
|
renderShapes
|
|
@@ -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:")) {
|
|
@@ -904,7 +930,7 @@ function HeroStartupLaunchCta({
|
|
|
904
930
|
),
|
|
905
931
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
906
932
|
badgeCard.title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold ", children: badgeCard.title }),
|
|
907
|
-
badgeCard.subtitle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm
|
|
933
|
+
badgeCard.subtitle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm", getTextColor(background, "muted")), children: badgeCard.subtitle })
|
|
908
934
|
] })
|
|
909
935
|
] });
|
|
910
936
|
}, [badgeCardSlot, badgeCard, optixFlowConfig]);
|
|
@@ -923,7 +949,7 @@ function HeroStartupLaunchCta({
|
|
|
923
949
|
typeof badge === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { children: badge }) : badge
|
|
924
950
|
] }),
|
|
925
951
|
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("div", { className: headingClassName, children: heading })),
|
|
926
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg
|
|
952
|
+
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 })),
|
|
927
953
|
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-col gap-4 sm:flex-row", actionsClassName), children: renderActions }),
|
|
928
954
|
(avatarsSlot || avatars || socialProofText) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-4 pt-4", socialProofClassName), children: [
|
|
929
955
|
renderAvatars,
|
|
@@ -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:")) {
|
|
@@ -883,7 +909,7 @@ function HeroStartupLaunchCta({
|
|
|
883
909
|
),
|
|
884
910
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
885
911
|
badgeCard.title && /* @__PURE__ */ jsx("div", { className: "font-semibold ", children: badgeCard.title }),
|
|
886
|
-
badgeCard.subtitle && /* @__PURE__ */ jsx("div", { className: "text-sm
|
|
912
|
+
badgeCard.subtitle && /* @__PURE__ */ jsx("div", { className: cn("text-sm", getTextColor(background, "muted")), children: badgeCard.subtitle })
|
|
887
913
|
] })
|
|
888
914
|
] });
|
|
889
915
|
}, [badgeCardSlot, badgeCard, optixFlowConfig]);
|
|
@@ -902,7 +928,7 @@ function HeroStartupLaunchCta({
|
|
|
902
928
|
typeof badge === "string" ? /* @__PURE__ */ jsx("span", { children: badge }) : badge
|
|
903
929
|
] }),
|
|
904
930
|
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("div", { className: headingClassName, children: heading })),
|
|
905
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg
|
|
931
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
906
932
|
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-4 sm:flex-row", actionsClassName), children: renderActions }),
|
|
907
933
|
(avatarsSlot || avatars || socialProofText) && /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-4 pt-4", socialProofClassName), children: [
|
|
908
934
|
renderAvatars,
|