@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
|
@@ -41,6 +41,32 @@ 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
|
+
}
|
|
44
70
|
function normalizePhoneNumber(input) {
|
|
45
71
|
const trimmed = input.trim();
|
|
46
72
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -973,16 +999,14 @@ function LinkPageGridCards({
|
|
|
973
999
|
cardLabelClassName,
|
|
974
1000
|
cardDescriptionClassName,
|
|
975
1001
|
footerClassName,
|
|
976
|
-
|
|
977
|
-
background,
|
|
1002
|
+
background = "gray",
|
|
978
1003
|
spacing,
|
|
979
1004
|
pattern,
|
|
980
1005
|
patternOpacity,
|
|
981
1006
|
patternClassName,
|
|
982
1007
|
optixFlowConfig
|
|
983
1008
|
}) {
|
|
984
|
-
const
|
|
985
|
-
const resolvedBackground = background ?? (isDark ? "dark" : "gray");
|
|
1009
|
+
const resolvedBackground = background;
|
|
986
1010
|
const resolvedAvatar = avatar || (avatarUrl ? {
|
|
987
1011
|
src: avatarUrl,
|
|
988
1012
|
alt: typeof name === "string" ? name : "Profile avatar"
|
|
@@ -1001,8 +1025,7 @@ function LinkPageGridCards({
|
|
|
1001
1025
|
"div",
|
|
1002
1026
|
{
|
|
1003
1027
|
className: cn(
|
|
1004
|
-
"h-20 w-20 overflow-hidden rounded-2xl shadow-lg",
|
|
1005
|
-
isDark ? "ring-2 ring-white/10" : "ring-2 ring-neutral-200",
|
|
1028
|
+
"h-20 w-20 overflow-hidden rounded-2xl shadow-lg ring-2 ring-neutral-200",
|
|
1006
1029
|
avatarClassName
|
|
1007
1030
|
),
|
|
1008
1031
|
children: /* @__PURE__ */ jsx(
|
|
@@ -1031,7 +1054,8 @@ function LinkPageGridCards({
|
|
|
1031
1054
|
"p",
|
|
1032
1055
|
{
|
|
1033
1056
|
className: cn(
|
|
1034
|
-
"text-sm
|
|
1057
|
+
"text-sm",
|
|
1058
|
+
getTextColor(resolvedBackground, "muted"),
|
|
1035
1059
|
bioClassName
|
|
1036
1060
|
),
|
|
1037
1061
|
children: bio
|
|
@@ -1041,7 +1065,7 @@ function LinkPageGridCards({
|
|
|
1041
1065
|
]
|
|
1042
1066
|
}
|
|
1043
1067
|
);
|
|
1044
|
-
}, [profileSlot, resolvedAvatar,
|
|
1068
|
+
}, [profileSlot, resolvedAvatar, resolvedBackground, avatarClassName, optixFlowConfig, name, nameClassName, bio, bioClassName, headerClassName]);
|
|
1045
1069
|
const renderSocialLinks = useMemo(() => {
|
|
1046
1070
|
if (socialLinksSlot) return socialLinksSlot;
|
|
1047
1071
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
@@ -1053,10 +1077,11 @@ function LinkPageGridCards({
|
|
|
1053
1077
|
socialLinksClassName
|
|
1054
1078
|
),
|
|
1055
1079
|
children: socialLinks.map((social, index) => {
|
|
1056
|
-
const
|
|
1080
|
+
const { iconName, ...socialPressableProps } = social;
|
|
1081
|
+
const icon = social.icon || (iconName ? /* @__PURE__ */ jsx(
|
|
1057
1082
|
DynamicIcon,
|
|
1058
1083
|
{
|
|
1059
|
-
name:
|
|
1084
|
+
name: iconName,
|
|
1060
1085
|
size: 18,
|
|
1061
1086
|
className: socialIconClassName
|
|
1062
1087
|
}
|
|
@@ -1065,12 +1090,13 @@ function LinkPageGridCards({
|
|
|
1065
1090
|
return /* @__PURE__ */ jsx(
|
|
1066
1091
|
Pressable,
|
|
1067
1092
|
{
|
|
1068
|
-
|
|
1093
|
+
...socialPressableProps,
|
|
1069
1094
|
"aria-label": ariaLabel,
|
|
1070
1095
|
className: cn(
|
|
1071
1096
|
"rounded-lg p-2 transition-all duration-200",
|
|
1072
1097
|
"hover:scale-110 active:scale-95",
|
|
1073
|
-
|
|
1098
|
+
"bg-card hover:opacity-80",
|
|
1099
|
+
getTextColor(resolvedBackground, "muted"),
|
|
1074
1100
|
socialLinkClassName,
|
|
1075
1101
|
social.className
|
|
1076
1102
|
),
|
|
@@ -1081,7 +1107,7 @@ function LinkPageGridCards({
|
|
|
1081
1107
|
})
|
|
1082
1108
|
}
|
|
1083
1109
|
);
|
|
1084
|
-
}, [socialLinksSlot, socialLinks, socialLinksClassName, socialIconClassName,
|
|
1110
|
+
}, [socialLinksSlot, socialLinks, socialLinksClassName, socialIconClassName, resolvedBackground, socialLinkClassName]);
|
|
1085
1111
|
const renderLinks = useMemo(() => {
|
|
1086
1112
|
if (linksSlot) return linksSlot;
|
|
1087
1113
|
if (!links || links.length === 0) return null;
|
|
@@ -1100,12 +1126,13 @@ function LinkPageGridCards({
|
|
|
1100
1126
|
icon,
|
|
1101
1127
|
children,
|
|
1102
1128
|
className: linkClassName,
|
|
1129
|
+
iconName,
|
|
1103
1130
|
...pressableProps
|
|
1104
1131
|
} = link;
|
|
1105
|
-
const iconElement = icon || (
|
|
1132
|
+
const iconElement = icon || (iconName ? /* @__PURE__ */ jsx(
|
|
1106
1133
|
DynamicIcon,
|
|
1107
1134
|
{
|
|
1108
|
-
name:
|
|
1135
|
+
name: iconName,
|
|
1109
1136
|
size: 24,
|
|
1110
1137
|
className: cardIconClassName
|
|
1111
1138
|
}
|
|
@@ -1117,7 +1144,7 @@ function LinkPageGridCards({
|
|
|
1117
1144
|
className: cn(
|
|
1118
1145
|
"group flex flex-col items-center gap-2 rounded-xl p-4 transition-all duration-200",
|
|
1119
1146
|
"hover:scale-[1.03] active:scale-[0.97]",
|
|
1120
|
-
|
|
1147
|
+
"border border-border bg-card shadow-sm hover:shadow-md",
|
|
1121
1148
|
cardClassName,
|
|
1122
1149
|
linkClassName
|
|
1123
1150
|
),
|
|
@@ -1133,7 +1160,7 @@ function LinkPageGridCards({
|
|
|
1133
1160
|
className: cn(
|
|
1134
1161
|
"group flex flex-col items-center gap-2 rounded-xl p-4 transition-all duration-200",
|
|
1135
1162
|
"hover:scale-[1.03] active:scale-[0.97]",
|
|
1136
|
-
|
|
1163
|
+
"border border-border bg-card shadow-sm hover:shadow-md",
|
|
1137
1164
|
cardClassName,
|
|
1138
1165
|
linkClassName
|
|
1139
1166
|
),
|
|
@@ -1146,7 +1173,7 @@ function LinkPageGridCards({
|
|
|
1146
1173
|
"flex h-12 w-12 items-center justify-center rounded-xl transition-colors",
|
|
1147
1174
|
getNestedCardBg(resolvedBackground),
|
|
1148
1175
|
getNestedCardTextColor(resolvedBackground),
|
|
1149
|
-
|
|
1176
|
+
"group-hover:opacity-80",
|
|
1150
1177
|
cardIconWrapperClassName
|
|
1151
1178
|
),
|
|
1152
1179
|
children: iconElement
|
|
@@ -1167,7 +1194,8 @@ function LinkPageGridCards({
|
|
|
1167
1194
|
"span",
|
|
1168
1195
|
{
|
|
1169
1196
|
className: cn(
|
|
1170
|
-
"block text-xs
|
|
1197
|
+
"block text-xs",
|
|
1198
|
+
getTextColor(resolvedBackground, "muted"),
|
|
1171
1199
|
cardDescriptionClassName
|
|
1172
1200
|
),
|
|
1173
1201
|
children: description
|
|
@@ -1181,7 +1209,7 @@ function LinkPageGridCards({
|
|
|
1181
1209
|
})
|
|
1182
1210
|
}
|
|
1183
1211
|
);
|
|
1184
|
-
}, [linksSlot, links, columns, gridClassName, cardIconClassName,
|
|
1212
|
+
}, [linksSlot, links, columns, gridClassName, cardIconClassName, resolvedBackground, cardClassName, cardIconWrapperClassName, cardLabelClassName, cardDescriptionClassName]);
|
|
1185
1213
|
const renderFooter = useMemo(() => {
|
|
1186
1214
|
if (footerSlot) return footerSlot;
|
|
1187
1215
|
if (!footerAction) return null;
|
|
@@ -1200,7 +1228,8 @@ function LinkPageGridCards({
|
|
|
1200
1228
|
{
|
|
1201
1229
|
className: cn(
|
|
1202
1230
|
"flex items-center justify-center gap-1.5 text-xs transition-opacity hover:opacity-80",
|
|
1203
|
-
"
|
|
1231
|
+
getTextColor(resolvedBackground, "muted"),
|
|
1232
|
+
"opacity-50",
|
|
1204
1233
|
footerClassName,
|
|
1205
1234
|
actionClassName
|
|
1206
1235
|
),
|
|
@@ -1212,13 +1241,13 @@ function LinkPageGridCards({
|
|
|
1212
1241
|
] })
|
|
1213
1242
|
}
|
|
1214
1243
|
);
|
|
1215
|
-
}, [footerSlot, footerAction,
|
|
1244
|
+
}, [footerSlot, footerAction, resolvedBackground, footerClassName]);
|
|
1216
1245
|
return /* @__PURE__ */ jsx(
|
|
1217
1246
|
Section,
|
|
1218
1247
|
{
|
|
1219
1248
|
background: resolvedBackground,
|
|
1220
1249
|
spacing,
|
|
1221
|
-
className
|
|
1250
|
+
className,
|
|
1222
1251
|
pattern,
|
|
1223
1252
|
patternOpacity,
|
|
1224
1253
|
patternClassName,
|
|
@@ -62,6 +62,32 @@ 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
|
+
}
|
|
65
91
|
function normalizePhoneNumber(input) {
|
|
66
92
|
const trimmed = input.trim();
|
|
67
93
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -991,16 +1017,14 @@ function LinkPageMinimalProfile({
|
|
|
991
1017
|
socialLinkClassName,
|
|
992
1018
|
socialIconClassName,
|
|
993
1019
|
footerClassName,
|
|
994
|
-
|
|
995
|
-
background,
|
|
1020
|
+
background = "default",
|
|
996
1021
|
spacing,
|
|
997
1022
|
pattern,
|
|
998
1023
|
patternOpacity,
|
|
999
1024
|
patternClassName,
|
|
1000
1025
|
optixFlowConfig
|
|
1001
1026
|
}) {
|
|
1002
|
-
const
|
|
1003
|
-
const resolvedBackground = background ?? (isDark ? "dark" : "white");
|
|
1027
|
+
const resolvedBackground = background;
|
|
1004
1028
|
const resolvedAvatar = avatar || (avatarUrl ? {
|
|
1005
1029
|
src: avatarUrl,
|
|
1006
1030
|
alt: typeof name === "string" ? name : "Profile avatar"
|
|
@@ -1049,7 +1073,8 @@ function LinkPageMinimalProfile({
|
|
|
1049
1073
|
"p",
|
|
1050
1074
|
{
|
|
1051
1075
|
className: cn(
|
|
1052
|
-
"text-sm
|
|
1076
|
+
"text-sm",
|
|
1077
|
+
getTextColor(resolvedBackground, "muted"),
|
|
1053
1078
|
bioClassName
|
|
1054
1079
|
),
|
|
1055
1080
|
children: bio
|
|
@@ -1059,7 +1084,7 @@ function LinkPageMinimalProfile({
|
|
|
1059
1084
|
]
|
|
1060
1085
|
}
|
|
1061
1086
|
);
|
|
1062
|
-
}, [profileSlot, resolvedAvatar, avatarClassName, optixFlowConfig, name,
|
|
1087
|
+
}, [profileSlot, resolvedAvatar, avatarClassName, optixFlowConfig, name, resolvedBackground, nameClassName, bio, bioClassName, headerClassName]);
|
|
1063
1088
|
const renderLinks = React.useMemo(() => {
|
|
1064
1089
|
if (linksSlot) return linksSlot;
|
|
1065
1090
|
if (!links || links.length === 0) return null;
|
|
@@ -1069,12 +1094,13 @@ function LinkPageMinimalProfile({
|
|
|
1069
1094
|
icon,
|
|
1070
1095
|
children,
|
|
1071
1096
|
className: linkItemClassName,
|
|
1097
|
+
iconName,
|
|
1072
1098
|
...pressableProps
|
|
1073
1099
|
} = link;
|
|
1074
|
-
const iconElement = icon || (
|
|
1100
|
+
const iconElement = icon || (iconName ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1075
1101
|
DynamicIcon,
|
|
1076
1102
|
{
|
|
1077
|
-
name:
|
|
1103
|
+
name: iconName,
|
|
1078
1104
|
size: 18,
|
|
1079
1105
|
className: linkIconClassName
|
|
1080
1106
|
}
|
|
@@ -1087,7 +1113,7 @@ function LinkPageMinimalProfile({
|
|
|
1087
1113
|
"flex w-full items-center gap-3 rounded-lg px-4 py-3 transition-colors",
|
|
1088
1114
|
getNestedCardBg(resolvedBackground),
|
|
1089
1115
|
getNestedCardTextColor(resolvedBackground),
|
|
1090
|
-
|
|
1116
|
+
"hover:opacity-80",
|
|
1091
1117
|
linkClassName,
|
|
1092
1118
|
linkItemClassName
|
|
1093
1119
|
),
|
|
@@ -1104,7 +1130,7 @@ function LinkPageMinimalProfile({
|
|
|
1104
1130
|
"flex w-full items-center gap-3 rounded-lg px-4 py-3 transition-colors",
|
|
1105
1131
|
getNestedCardBg(resolvedBackground),
|
|
1106
1132
|
getNestedCardTextColor(resolvedBackground),
|
|
1107
|
-
|
|
1133
|
+
"hover:opacity-80",
|
|
1108
1134
|
linkClassName,
|
|
1109
1135
|
linkItemClassName
|
|
1110
1136
|
),
|
|
@@ -1123,7 +1149,7 @@ function LinkPageMinimalProfile({
|
|
|
1123
1149
|
link.id ?? index
|
|
1124
1150
|
);
|
|
1125
1151
|
}) });
|
|
1126
|
-
}, [linksSlot, links, linksClassName, linkIconClassName,
|
|
1152
|
+
}, [linksSlot, links, linksClassName, linkIconClassName, resolvedBackground, linkClassName, linkLabelClassName]);
|
|
1127
1153
|
const renderSocialLinks = React.useMemo(() => {
|
|
1128
1154
|
if (socialLinksSlot) return socialLinksSlot;
|
|
1129
1155
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
@@ -1135,10 +1161,11 @@ function LinkPageMinimalProfile({
|
|
|
1135
1161
|
socialLinksClassName
|
|
1136
1162
|
),
|
|
1137
1163
|
children: socialLinks.map((social, index) => {
|
|
1138
|
-
const
|
|
1164
|
+
const { iconName: socialIconName, ...socialRest } = social;
|
|
1165
|
+
const icon = social.icon || (socialIconName ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1139
1166
|
DynamicIcon,
|
|
1140
1167
|
{
|
|
1141
|
-
name:
|
|
1168
|
+
name: socialIconName,
|
|
1142
1169
|
size: 20,
|
|
1143
1170
|
className: socialIconClassName
|
|
1144
1171
|
}
|
|
@@ -1151,7 +1178,8 @@ function LinkPageMinimalProfile({
|
|
|
1151
1178
|
"aria-label": ariaLabel,
|
|
1152
1179
|
className: cn(
|
|
1153
1180
|
"rounded-full p-2 transition-colors",
|
|
1154
|
-
|
|
1181
|
+
getTextColor(resolvedBackground, "muted"),
|
|
1182
|
+
"hover:opacity-80",
|
|
1155
1183
|
socialLinkClassName,
|
|
1156
1184
|
social.className
|
|
1157
1185
|
),
|
|
@@ -1162,7 +1190,7 @@ function LinkPageMinimalProfile({
|
|
|
1162
1190
|
})
|
|
1163
1191
|
}
|
|
1164
1192
|
);
|
|
1165
|
-
}, [socialLinksSlot, socialLinks, socialLinksClassName, socialIconClassName,
|
|
1193
|
+
}, [socialLinksSlot, socialLinks, socialLinksClassName, socialIconClassName, resolvedBackground, socialLinkClassName]);
|
|
1166
1194
|
const renderFooter = React.useMemo(() => {
|
|
1167
1195
|
if (footerSlot) return footerSlot;
|
|
1168
1196
|
if (!footerAction) return null;
|
|
@@ -1181,7 +1209,7 @@ function LinkPageMinimalProfile({
|
|
|
1181
1209
|
{
|
|
1182
1210
|
className: cn(
|
|
1183
1211
|
"flex items-center justify-center gap-1.5 text-xs transition-opacity hover:opacity-80",
|
|
1184
|
-
"
|
|
1212
|
+
getTextColor(resolvedBackground, "subtle"),
|
|
1185
1213
|
footerClassName,
|
|
1186
1214
|
actionClassName
|
|
1187
1215
|
),
|
|
@@ -1193,13 +1221,13 @@ function LinkPageMinimalProfile({
|
|
|
1193
1221
|
] })
|
|
1194
1222
|
}
|
|
1195
1223
|
);
|
|
1196
|
-
}, [footerSlot, footerAction,
|
|
1224
|
+
}, [footerSlot, footerAction, resolvedBackground, footerClassName]);
|
|
1197
1225
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1198
1226
|
Section,
|
|
1199
1227
|
{
|
|
1200
1228
|
background: resolvedBackground,
|
|
1201
1229
|
spacing,
|
|
1202
|
-
className
|
|
1230
|
+
className,
|
|
1203
1231
|
pattern,
|
|
1204
1232
|
patternOpacity,
|
|
1205
1233
|
patternClassName,
|
|
@@ -128,10 +128,6 @@ interface LinkPageMinimalProfileProps {
|
|
|
128
128
|
* Additional CSS classes for the footer
|
|
129
129
|
*/
|
|
130
130
|
footerClassName?: string;
|
|
131
|
-
/**
|
|
132
|
-
* Theme variation: "light" or "dark"
|
|
133
|
-
*/
|
|
134
|
-
theme?: "light" | "dark";
|
|
135
131
|
/**
|
|
136
132
|
* Background style for the section
|
|
137
133
|
*/
|
|
@@ -181,6 +177,6 @@ interface LinkPageMinimalProfileProps {
|
|
|
181
177
|
* />
|
|
182
178
|
* ```
|
|
183
179
|
*/
|
|
184
|
-
declare function LinkPageMinimalProfile({ name, bio, avatar, avatarUrl, profileSlot, links, linksSlot, socialLinks, socialLinksSlot, footerAction, footerSlot, className, containerClassName, contentClassName, headerClassName, avatarClassName, nameClassName, bioClassName, linksClassName, linkClassName, linkIconClassName, linkLabelClassName, socialLinksClassName, socialLinkClassName, socialIconClassName, footerClassName,
|
|
180
|
+
declare function LinkPageMinimalProfile({ name, bio, avatar, avatarUrl, profileSlot, links, linksSlot, socialLinks, socialLinksSlot, footerAction, footerSlot, className, containerClassName, contentClassName, headerClassName, avatarClassName, nameClassName, bioClassName, linksClassName, linkClassName, linkIconClassName, linkLabelClassName, socialLinksClassName, socialLinkClassName, socialIconClassName, footerClassName, background, spacing, pattern, patternOpacity, patternClassName, optixFlowConfig, }: LinkPageMinimalProfileProps): React.JSX.Element;
|
|
185
181
|
|
|
186
182
|
export { LinkPageMinimalProfile, type LinkPageMinimalProfileProps, type MinimalProfileLink, type MinimalProfileSocialLink };
|
|
@@ -128,10 +128,6 @@ interface LinkPageMinimalProfileProps {
|
|
|
128
128
|
* Additional CSS classes for the footer
|
|
129
129
|
*/
|
|
130
130
|
footerClassName?: string;
|
|
131
|
-
/**
|
|
132
|
-
* Theme variation: "light" or "dark"
|
|
133
|
-
*/
|
|
134
|
-
theme?: "light" | "dark";
|
|
135
131
|
/**
|
|
136
132
|
* Background style for the section
|
|
137
133
|
*/
|
|
@@ -181,6 +177,6 @@ interface LinkPageMinimalProfileProps {
|
|
|
181
177
|
* />
|
|
182
178
|
* ```
|
|
183
179
|
*/
|
|
184
|
-
declare function LinkPageMinimalProfile({ name, bio, avatar, avatarUrl, profileSlot, links, linksSlot, socialLinks, socialLinksSlot, footerAction, footerSlot, className, containerClassName, contentClassName, headerClassName, avatarClassName, nameClassName, bioClassName, linksClassName, linkClassName, linkIconClassName, linkLabelClassName, socialLinksClassName, socialLinkClassName, socialIconClassName, footerClassName,
|
|
180
|
+
declare function LinkPageMinimalProfile({ name, bio, avatar, avatarUrl, profileSlot, links, linksSlot, socialLinks, socialLinksSlot, footerAction, footerSlot, className, containerClassName, contentClassName, headerClassName, avatarClassName, nameClassName, bioClassName, linksClassName, linkClassName, linkIconClassName, linkLabelClassName, socialLinksClassName, socialLinkClassName, socialIconClassName, footerClassName, background, spacing, pattern, patternOpacity, patternClassName, optixFlowConfig, }: LinkPageMinimalProfileProps): React.JSX.Element;
|
|
185
181
|
|
|
186
182
|
export { LinkPageMinimalProfile, type LinkPageMinimalProfileProps, type MinimalProfileLink, type MinimalProfileSocialLink };
|
|
@@ -41,6 +41,32 @@ 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
|
+
}
|
|
44
70
|
function normalizePhoneNumber(input) {
|
|
45
71
|
const trimmed = input.trim();
|
|
46
72
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -970,16 +996,14 @@ function LinkPageMinimalProfile({
|
|
|
970
996
|
socialLinkClassName,
|
|
971
997
|
socialIconClassName,
|
|
972
998
|
footerClassName,
|
|
973
|
-
|
|
974
|
-
background,
|
|
999
|
+
background = "default",
|
|
975
1000
|
spacing,
|
|
976
1001
|
pattern,
|
|
977
1002
|
patternOpacity,
|
|
978
1003
|
patternClassName,
|
|
979
1004
|
optixFlowConfig
|
|
980
1005
|
}) {
|
|
981
|
-
const
|
|
982
|
-
const resolvedBackground = background ?? (isDark ? "dark" : "white");
|
|
1006
|
+
const resolvedBackground = background;
|
|
983
1007
|
const resolvedAvatar = avatar || (avatarUrl ? {
|
|
984
1008
|
src: avatarUrl,
|
|
985
1009
|
alt: typeof name === "string" ? name : "Profile avatar"
|
|
@@ -1028,7 +1052,8 @@ function LinkPageMinimalProfile({
|
|
|
1028
1052
|
"p",
|
|
1029
1053
|
{
|
|
1030
1054
|
className: cn(
|
|
1031
|
-
"text-sm
|
|
1055
|
+
"text-sm",
|
|
1056
|
+
getTextColor(resolvedBackground, "muted"),
|
|
1032
1057
|
bioClassName
|
|
1033
1058
|
),
|
|
1034
1059
|
children: bio
|
|
@@ -1038,7 +1063,7 @@ function LinkPageMinimalProfile({
|
|
|
1038
1063
|
]
|
|
1039
1064
|
}
|
|
1040
1065
|
);
|
|
1041
|
-
}, [profileSlot, resolvedAvatar, avatarClassName, optixFlowConfig, name,
|
|
1066
|
+
}, [profileSlot, resolvedAvatar, avatarClassName, optixFlowConfig, name, resolvedBackground, nameClassName, bio, bioClassName, headerClassName]);
|
|
1042
1067
|
const renderLinks = useMemo(() => {
|
|
1043
1068
|
if (linksSlot) return linksSlot;
|
|
1044
1069
|
if (!links || links.length === 0) return null;
|
|
@@ -1048,12 +1073,13 @@ function LinkPageMinimalProfile({
|
|
|
1048
1073
|
icon,
|
|
1049
1074
|
children,
|
|
1050
1075
|
className: linkItemClassName,
|
|
1076
|
+
iconName,
|
|
1051
1077
|
...pressableProps
|
|
1052
1078
|
} = link;
|
|
1053
|
-
const iconElement = icon || (
|
|
1079
|
+
const iconElement = icon || (iconName ? /* @__PURE__ */ jsx(
|
|
1054
1080
|
DynamicIcon,
|
|
1055
1081
|
{
|
|
1056
|
-
name:
|
|
1082
|
+
name: iconName,
|
|
1057
1083
|
size: 18,
|
|
1058
1084
|
className: linkIconClassName
|
|
1059
1085
|
}
|
|
@@ -1066,7 +1092,7 @@ function LinkPageMinimalProfile({
|
|
|
1066
1092
|
"flex w-full items-center gap-3 rounded-lg px-4 py-3 transition-colors",
|
|
1067
1093
|
getNestedCardBg(resolvedBackground),
|
|
1068
1094
|
getNestedCardTextColor(resolvedBackground),
|
|
1069
|
-
|
|
1095
|
+
"hover:opacity-80",
|
|
1070
1096
|
linkClassName,
|
|
1071
1097
|
linkItemClassName
|
|
1072
1098
|
),
|
|
@@ -1083,7 +1109,7 @@ function LinkPageMinimalProfile({
|
|
|
1083
1109
|
"flex w-full items-center gap-3 rounded-lg px-4 py-3 transition-colors",
|
|
1084
1110
|
getNestedCardBg(resolvedBackground),
|
|
1085
1111
|
getNestedCardTextColor(resolvedBackground),
|
|
1086
|
-
|
|
1112
|
+
"hover:opacity-80",
|
|
1087
1113
|
linkClassName,
|
|
1088
1114
|
linkItemClassName
|
|
1089
1115
|
),
|
|
@@ -1102,7 +1128,7 @@ function LinkPageMinimalProfile({
|
|
|
1102
1128
|
link.id ?? index
|
|
1103
1129
|
);
|
|
1104
1130
|
}) });
|
|
1105
|
-
}, [linksSlot, links, linksClassName, linkIconClassName,
|
|
1131
|
+
}, [linksSlot, links, linksClassName, linkIconClassName, resolvedBackground, linkClassName, linkLabelClassName]);
|
|
1106
1132
|
const renderSocialLinks = useMemo(() => {
|
|
1107
1133
|
if (socialLinksSlot) return socialLinksSlot;
|
|
1108
1134
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
@@ -1114,10 +1140,11 @@ function LinkPageMinimalProfile({
|
|
|
1114
1140
|
socialLinksClassName
|
|
1115
1141
|
),
|
|
1116
1142
|
children: socialLinks.map((social, index) => {
|
|
1117
|
-
const
|
|
1143
|
+
const { iconName: socialIconName, ...socialRest } = social;
|
|
1144
|
+
const icon = social.icon || (socialIconName ? /* @__PURE__ */ jsx(
|
|
1118
1145
|
DynamicIcon,
|
|
1119
1146
|
{
|
|
1120
|
-
name:
|
|
1147
|
+
name: socialIconName,
|
|
1121
1148
|
size: 20,
|
|
1122
1149
|
className: socialIconClassName
|
|
1123
1150
|
}
|
|
@@ -1130,7 +1157,8 @@ function LinkPageMinimalProfile({
|
|
|
1130
1157
|
"aria-label": ariaLabel,
|
|
1131
1158
|
className: cn(
|
|
1132
1159
|
"rounded-full p-2 transition-colors",
|
|
1133
|
-
|
|
1160
|
+
getTextColor(resolvedBackground, "muted"),
|
|
1161
|
+
"hover:opacity-80",
|
|
1134
1162
|
socialLinkClassName,
|
|
1135
1163
|
social.className
|
|
1136
1164
|
),
|
|
@@ -1141,7 +1169,7 @@ function LinkPageMinimalProfile({
|
|
|
1141
1169
|
})
|
|
1142
1170
|
}
|
|
1143
1171
|
);
|
|
1144
|
-
}, [socialLinksSlot, socialLinks, socialLinksClassName, socialIconClassName,
|
|
1172
|
+
}, [socialLinksSlot, socialLinks, socialLinksClassName, socialIconClassName, resolvedBackground, socialLinkClassName]);
|
|
1145
1173
|
const renderFooter = useMemo(() => {
|
|
1146
1174
|
if (footerSlot) return footerSlot;
|
|
1147
1175
|
if (!footerAction) return null;
|
|
@@ -1160,7 +1188,7 @@ function LinkPageMinimalProfile({
|
|
|
1160
1188
|
{
|
|
1161
1189
|
className: cn(
|
|
1162
1190
|
"flex items-center justify-center gap-1.5 text-xs transition-opacity hover:opacity-80",
|
|
1163
|
-
"
|
|
1191
|
+
getTextColor(resolvedBackground, "subtle"),
|
|
1164
1192
|
footerClassName,
|
|
1165
1193
|
actionClassName
|
|
1166
1194
|
),
|
|
@@ -1172,13 +1200,13 @@ function LinkPageMinimalProfile({
|
|
|
1172
1200
|
] })
|
|
1173
1201
|
}
|
|
1174
1202
|
);
|
|
1175
|
-
}, [footerSlot, footerAction,
|
|
1203
|
+
}, [footerSlot, footerAction, resolvedBackground, footerClassName]);
|
|
1176
1204
|
return /* @__PURE__ */ jsx(
|
|
1177
1205
|
Section,
|
|
1178
1206
|
{
|
|
1179
1207
|
background: resolvedBackground,
|
|
1180
1208
|
spacing,
|
|
1181
|
-
className
|
|
1209
|
+
className,
|
|
1182
1210
|
pattern,
|
|
1183
1211
|
patternOpacity,
|
|
1184
1212
|
patternClassName,
|