fix: align partner media with production CMS data
This commit is contained in:
@@ -90,9 +90,6 @@ type HomeCms = {
|
||||
videoModal?: HomeVideoModalCms;
|
||||
winners?: HomeSectionCms;
|
||||
};
|
||||
type NetzwerkPartnersCms = {
|
||||
defaultLogoColor?: string | null;
|
||||
};
|
||||
type RenderedStatusPhase = Omit<SpaApplicationPhaseItem, 'accent' | 'bg' | 'cta' | 'membershipCta'> & {
|
||||
accent: string;
|
||||
bg: string;
|
||||
@@ -165,10 +162,7 @@ function Lines({ text }: { text: string }) {
|
||||
return <>{text.split('\n').map((line, i) => <React.Fragment key={`${line}-${i}`}>{i > 0 && <br />}{line}</React.Fragment>)}</>;
|
||||
}
|
||||
|
||||
const isNetzwerkPage = (page: CmsRecord) =>
|
||||
page.spaPath === '/netzwerk' || page.slug === 'netzwerk' || page.slug === 'network'
|
||||
|
||||
function partnerLogos(partners: PartnerLogoData[], defaultLogoColor: string) {
|
||||
function partnerLogos(partners: PartnerLogoData[]) {
|
||||
return partners.map((partner, index) => ({
|
||||
id: String(partner.stableId || partner.id || partner.name || index),
|
||||
label: (
|
||||
@@ -187,7 +181,7 @@ function partnerLogos(partners: PartnerLogoData[], defaultLogoColor: string) {
|
||||
justifyContent: 'center',
|
||||
}}
|
||||
>
|
||||
<PartnerLogoMark partner={partner} defaultLogoColor={defaultLogoColor} />
|
||||
<PartnerLogoMark partner={partner} />
|
||||
</span>
|
||||
),
|
||||
}));
|
||||
@@ -255,19 +249,12 @@ const Home: React.FC = () => {
|
||||
const isMobile = useIsMobile();
|
||||
const placeholderImage = usePreistraegerPlaceholderImage();
|
||||
const home = (useCmsRoute()?.doc?.home || {}) as HomeCms;
|
||||
const netzwerkPage = useCmsCollection('pages').find((page) => isNetzwerkPage(page as CmsRecord)) as
|
||||
| ({ netzwerk?: { partners?: NetzwerkPartnersCms } } & CmsRecord)
|
||||
| undefined;
|
||||
const partnerSection = netzwerkPage?.netzwerk?.partners;
|
||||
const defaultLogoColor = fallbackText(partnerSection?.defaultLogoColor, netzwerkContent.partners.defaultLogoColor);
|
||||
const cmsPartners = useCmsCollection('partners') as PartnerLogoData[];
|
||||
const partnerSource = cmsPartners.length ? cmsPartners : (netzwerkContent.partners.items as PartnerLogoData[]);
|
||||
const networkPartners = sortedPartners(partnerSource)
|
||||
const networkPartners = sortedPartners(cmsPartners)
|
||||
.filter((partner) => partner.active !== false && partner.showOnHomepage !== false)
|
||||
.map((partner) => ({
|
||||
...partner,
|
||||
id: partner.stableId || partner.id,
|
||||
logoColor: fallbackText(partner.logoColor, defaultLogoColor),
|
||||
}));
|
||||
const hero = home.hero || {};
|
||||
const quickCheck = home.quickCheck || {};
|
||||
@@ -391,7 +378,7 @@ const Home: React.FC = () => {
|
||||
<div style={{ display: 'flex', alignItems: 'center', gap: 16, flexShrink: 0 }}>
|
||||
<div style={{ width: 1, height: 20, background: 'rgba(255,255,255,0.2)' }} />
|
||||
<div style={{ width: 'min(820px, calc(100vw - 260px))', overflow: 'hidden', flexShrink: 0 }}>
|
||||
<PartnerTicker logos={partnerLogos(networkPartners, defaultLogoColor)} />
|
||||
<PartnerTicker logos={partnerLogos(networkPartners)} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -48,7 +48,6 @@ type Partner = (typeof netzwerkContent.partners.items)[number] &
|
||||
active?: boolean | null
|
||||
heroImg?: string
|
||||
linkedin?: string
|
||||
logoSubtext?: string
|
||||
showOnHomepage?: boolean | null
|
||||
sortOrder?: number | null
|
||||
stableId?: string | null
|
||||
@@ -241,7 +240,6 @@ const SponsorCell: React.FC<{ partner: Partner; variant: 'lg' | 'md' | 'sm'; idx
|
||||
const sm = variant === 'sm';
|
||||
const lastCol = (idx % cols) === cols - 1;
|
||||
const logoHeight = isMobileCell ? (lg ? 76 : sm ? 54 : 62) : lg ? 92 : sm ? 62 : 76;
|
||||
const logoScale = lg ? 1.55 : sm ? 1.22 : 1.38;
|
||||
return (
|
||||
<div
|
||||
onClick={onClick}
|
||||
@@ -259,7 +257,7 @@ const SponsorCell: React.FC<{ partner: Partner; variant: 'lg' | 'md' | 'sm'; idx
|
||||
}}
|
||||
>
|
||||
<div style={{ height: logoHeight, display: 'flex', alignItems: 'center', justifyContent: 'center', width: '100%', minWidth: 0 }}>
|
||||
<PartnerLogoMark partner={partner} scale={logoScale} />
|
||||
<PartnerLogoMark partner={partner} />
|
||||
</div>
|
||||
<div style={{ width: hovered ? 56 : 24, height: 1, background: GOLD, transition: 'width 0.3s ease' }} />
|
||||
<div style={{ fontFamily: FF, fontSize: lg ? 22 : 18, fontWeight: 700, color: '#101828', letterSpacing: '-0.01em', lineHeight: 1.15 }}>{partner.name}</div>
|
||||
@@ -488,14 +486,11 @@ const Netzwerk: React.FC = () => {
|
||||
? juryCollectionMembers
|
||||
: fallbackArray<JuryMember>(jury.members, netzwerkContent.jury.members);
|
||||
const expertiseRows = fallbackArray<ExpertiseRow>(expertise.rows, netzwerkContent.expertise.rows);
|
||||
const defaultLogoColor = fallbackText(partnerSection.defaultLogoColor, netzwerkContent.partners.defaultLogoColor);
|
||||
const partnerSource = cmsPartners.length ? cmsPartners : (netzwerkContent.partners.items as Partner[]);
|
||||
const partners = sortedPartners(partnerSource)
|
||||
const partners = sortedPartners(cmsPartners)
|
||||
.filter((partner) => partner.active !== false)
|
||||
.map((partner) => ({
|
||||
...partner,
|
||||
id: partner.stableId || partner.id,
|
||||
logoColor: fallbackText(partner.logoColor, defaultLogoColor),
|
||||
}));
|
||||
const partnerTiers = fallbackArray<PartnerTier>(partnerSection.tiers, netzwerkContent.partners.tiers);
|
||||
const mobileStats = fallbackArray<StatItem>(juryIntro.stats, netzwerkContent.juryIntro.stats);
|
||||
|
||||
Reference in New Issue
Block a user