diff --git a/echo/frontend/src/components/workspace/TierPricingCards.tsx b/echo/frontend/src/components/workspace/TierPricingCards.tsx index 17d57253..2150a3a3 100644 --- a/echo/frontend/src/components/workspace/TierPricingCards.tsx +++ b/echo/frontend/src/components/workspace/TierPricingCards.tsx @@ -144,7 +144,8 @@ function TierCard({ const wrapClasses = [ isWide ? classes.wideWrap : classes.wrap, selected ? classes.selected : "", - highlighted ? classes.highlighted : "", + highlighted && !comingSoon ? classes.highlighted : "", + comingSoon ? classes.comingSoonCard : "", ] .filter(Boolean) .join(" "); @@ -165,12 +166,19 @@ function TierCard({ popularLabel={highlightLabel} /> ); + // Coming-soon cards mute content per element instead of fading the card, + // so the "Coming soon" badge keeps full contrast. + const mutedText = comingSoon ? "gray.6" : undefined; const specRows = card.specs.map((spec) => ( {spec} @@ -189,11 +197,10 @@ function TierCard({ aria-checked={selected} aria-disabled={comingSoon} tabIndex={comingSoon ? -1 : 0} - style={comingSoon ? { opacity: 0.6 } : undefined} > - + {card.tier} {badge} @@ -216,7 +223,7 @@ function TierCard({ {card.priceAmount} @@ -247,7 +254,6 @@ function TierCard({ aria-checked={selected} aria-disabled={comingSoon} tabIndex={comingSoon ? -1 : 0} - style={comingSoon ? { opacity: 0.6 } : undefined} > - + {card.tier} {badge} @@ -267,7 +273,7 @@ function TierCard({ {card.priceAmount} @@ -352,23 +358,38 @@ export const TierPricingCards = ({ const badgePopularTier = PURCHASABLE_TIERS.length >= 2 ? highlightTier : null; return ( -
- {cards.map((card) => ( - onChange(card.tier)} - /> - ))} -
+ +
+ {cards.map((card) => ( + onChange(card.tier)} + /> + ))} +
+ + + Interested in innovator or guardian? Let us know via{" "} + + forms.dembrane.com/contact + + + +
); }; diff --git a/echo/frontend/src/components/workspace/TierStatusBadge.tsx b/echo/frontend/src/components/workspace/TierStatusBadge.tsx index 2a8719c7..7ae4f7d9 100644 --- a/echo/frontend/src/components/workspace/TierStatusBadge.tsx +++ b/echo/frontend/src/components/workspace/TierStatusBadge.tsx @@ -25,7 +25,7 @@ export const TierStatusBadge = ({ if (kind === "coming-soon") { return ( - + Coming soon ); diff --git a/echo/frontend/src/components/workspace/tier-pricing-cards.module.css b/echo/frontend/src/components/workspace/tier-pricing-cards.module.css index 92c513a7..d24ab916 100644 --- a/echo/frontend/src/components/workspace/tier-pricing-cards.module.css +++ b/echo/frontend/src/components/workspace/tier-pricing-cards.module.css @@ -9,7 +9,15 @@ transform 0.15s ease; } -.wrap:not(.selected):hover { +/* Content is muted via per-element colors (not opacity) so the coming-soon + badge can stay at full contrast — child opacity can't exceed the parent's. */ +.comingSoonCard { + border-style: dashed; + background: var(--mantine-color-gray-0); + cursor: default; +} + +.wrap:not(.selected):not(.comingSoonCard):hover { border-color: var(--mantine-color-primary-4); background: rgba(65, 105, 225, 0.02); } @@ -19,6 +27,11 @@ box-shadow: 0 0 0 1px var(--mantine-color-primary-6); } +.comingSoonCard.selected { + border-color: var(--mantine-color-gray-4); + box-shadow: 0 0 0 1px var(--mantine-color-gray-4); +} + .highlighted { border-color: rgba(65, 105, 225, 0.22); box-shadow: