diff --git a/packages/twenty-website/src/partners-marketplace/PartnerCard.tsx b/packages/twenty-website/src/partners-marketplace/PartnerCard.tsx index a18b75cca6..1fcf64991f 100644 --- a/packages/twenty-website/src/partners-marketplace/PartnerCard.tsx +++ b/packages/twenty-website/src/partners-marketplace/PartnerCard.tsx @@ -29,6 +29,7 @@ import { PartnerMoneyRow } from './PartnerMoneyRow'; import { PARTNER_SCOPE_LABELS } from './partner-scope-labels'; import { SERVED_GEO_LABELS } from './served-geo-labels'; import { SPOKEN_LANGUAGE_LABELS } from './spoken-language-labels'; +import { titleCaseFallback } from './title-case-fallback'; type PartnerCardStyle = CSSProperties & { '--partner-card-index': number; @@ -146,7 +147,7 @@ const LinkedinIconLink = styled(ExternalLink)` } `; -const CountryEyebrow = styled.span` +const LocationEyebrow = styled.span` color: ${semanticColor.inkMuted}; font-family: ${fontFamily('mono')}; font-size: ${fontSize(3)}; @@ -210,10 +211,12 @@ export function PartnerCard({ partner, index }: PartnerCardProps) { // Unprefixed; LocalizedLink (the name link) and the Button add the locale. const profileHref = `/partners/profile/${partner.slug}`; - const firstGeo = partner.region[0]; - const countryLine = firstGeo - ? i18n._(SERVED_GEO_LABELS[firstGeo]).toUpperCase() - : ''; + const locationLine = [ + partner.city, + partner.country ? titleCaseFallback(partner.country) : '', + ] + .filter(Boolean) + .join(', '); const linkedinSafe = isSafeHttpUrl(partner.linkedinUrl); @@ -239,7 +242,7 @@ export function PartnerCard({ partner, index }: PartnerCardProps) { )} - {countryLine} + {locationLine} diff --git a/packages/twenty-website/src/partners-marketplace/PartnerFactsList.tsx b/packages/twenty-website/src/partners-marketplace/PartnerFactsList.tsx index bee6490233..b4094f233e 100644 --- a/packages/twenty-website/src/partners-marketplace/PartnerFactsList.tsx +++ b/packages/twenty-website/src/partners-marketplace/PartnerFactsList.tsx @@ -9,6 +9,7 @@ import { color, fontFamily, fontSize, semanticColor, spacing } from '@/tokens'; import { type MarketplacePartner } from './marketplace-partner'; import { PARTNER_SCOPE_LABELS } from './partner-scope-labels'; +import { SERVED_GEO_LABELS } from './served-geo-labels'; import { SPOKEN_LANGUAGE_LABELS } from './spoken-language-labels'; import { titleCaseFallback } from './title-case-fallback'; @@ -57,23 +58,18 @@ function resolveLabels( } export function PartnerFactsList({ - city, - country, + region, languagesSpoken, partnerScope, }: { - city: MarketplacePartner['city']; - country: MarketplacePartner['country']; + region: MarketplacePartner['region']; languagesSpoken: MarketplacePartner['languagesSpoken']; partnerScope: MarketplacePartner['partnerScope']; }) { const { i18n } = useLingui(); const translate = (descriptor: MessageDescriptor) => i18n._(descriptor); - // Country is a CRM SELECT enum (e.g. "UNITED_STATES"); title-case it. - const locationText = [city, country ? titleCaseFallback(country) : ''] - .filter(Boolean) - .join(', '); + const regionText = resolveLabels(region, SERVED_GEO_LABELS, translate); const languageText = resolveLabels( languagesSpoken, SPOKEN_LANGUAGE_LABELS, @@ -87,10 +83,10 @@ export function PartnerFactsList({ return ( - {locationText && ( + {regionText && ( - {i18n._(msg`Based in`)} - {locationText} + {i18n._(msg`Regions`)} + {regionText} )} {languageText && ( diff --git a/packages/twenty-website/src/partners-marketplace/PartnerProfile.tsx b/packages/twenty-website/src/partners-marketplace/PartnerProfile.tsx index 8b33b0ab9e..2bc3abb0cb 100644 --- a/packages/twenty-website/src/partners-marketplace/PartnerProfile.tsx +++ b/packages/twenty-website/src/partners-marketplace/PartnerProfile.tsx @@ -173,8 +173,7 @@ export function PartnerProfile({ partner }: { partner: MarketplacePartner }) { {i18n._(msg`Where & how`)} diff --git a/packages/twenty-website/src/partners-marketplace/PartnerProfileHeader.tsx b/packages/twenty-website/src/partners-marketplace/PartnerProfileHeader.tsx index aa0c353f88..2a706bd3e4 100644 --- a/packages/twenty-website/src/partners-marketplace/PartnerProfileHeader.tsx +++ b/packages/twenty-website/src/partners-marketplace/PartnerProfileHeader.tsx @@ -1,6 +1,3 @@ -'use client'; - -import { useLingui } from '@lingui/react'; import { styled } from '@linaria/react'; import { @@ -15,7 +12,7 @@ import { import { type MarketplacePartner } from './marketplace-partner'; import { ProfileEyebrow } from './ProfileEyebrow'; -import { SERVED_GEO_LABELS } from './served-geo-labels'; +import { titleCaseFallback } from './title-case-fallback'; const Wrapper = styled.div` display: flex; @@ -56,13 +53,12 @@ export function PartnerProfileHeader({ }: { partner: MarketplacePartner; }) { - const { i18n } = useLingui(); - - // Served regions are the partner's market coverage, not their address. - const eyebrow = partner.region - .map((geo) => i18n._(SERVED_GEO_LABELS[geo])) + const eyebrow = [ + partner.city, + partner.country ? titleCaseFallback(partner.country) : '', + ] .filter(Boolean) - .join(' ยท '); + .join(', '); return (