feat: add PartnerLogoMark component for dynamic partner logo rendering

This commit is contained in:
syntaxbullet
2026-07-01 11:39:45 +02:00
parent 1bc1f31940
commit 2fda7e8122
72 changed files with 99921 additions and 3421 deletions

View File

@@ -30,11 +30,52 @@ const itemsWithImageUploads = async <T extends { image?: string }>(payload: Payl
}),
)
const partnersForPayload = netzwerkContent.partners.items.map(({ id, ...partner }) => ({
const partnersForPayload = netzwerkContent.partners.items.map(({ id, ...partner }, index) => ({
...partner,
stableId: id,
active: true,
showOnHomepage: true,
sortOrder: index,
_status: 'published' as const,
}))
async function upsertPartners(payload: Payload) {
await Promise.all(
partnersForPayload.map(async (partner) => {
const existing = await payload.find({
collection: 'partners',
limit: 1,
pagination: false,
draft: true,
overrideAccess: true,
where: {
stableId: { equals: partner.stableId },
},
})
const doc = existing.docs[0]
if (doc) {
await payload.update({
collection: 'partners',
id: doc.id,
overrideAccess: true,
context: { disableRevalidate: true },
data: partner as never,
})
return
}
await payload.create({
collection: 'partners',
overrideAccess: true,
context: { disableRevalidate: true },
data: partner as never,
})
}),
)
}
async function main() {
const payload = await getPayload({ config })
@@ -56,6 +97,7 @@ async function main() {
const sponsoringImage = await mediaByFilename(payload, netzwerkContent.sponsoring.imageFilename)
const { imageFilename: _heroFilename, ...heroContent } = netzwerkContent.hero
const { imageFilename: _sponsoringFilename, ...sponsoringContent } = netzwerkContent.sponsoring
const { items: _partnerItems, ...partnerSectionContent } = netzwerkContent.partners
const [patronPeople, juryMembers] = await Promise.all([
itemsWithImageUploads(payload, netzwerkContent.patronage.people),
itemsWithImageUploads(payload, netzwerkContent.jury.members),
@@ -86,13 +128,14 @@ async function main() {
image: sponsoringImage,
},
partners: {
...netzwerkContent.partners,
items: partnersForPayload,
...partnerSectionContent,
},
},
} as never,
})
await upsertPartners(payload)
payload.logger.info(`Preloaded Netzwerk CMS fields for page ${page.id}`)
process.exit(0)
}