mirror of
https://github.com/complexcaresolutions/cms.c2sgmbh.git
synced 2026-03-17 20:54:11 +00:00
Add new collections and blocks for BlogWoman affiliate and video content: Collections: - Favorites: Affiliate products with categories, badges, and price ranges - Series: YouTube series with custom branding (logo, colors) Blocks: - FavoritesBlock: Grid/list/carousel display for affiliate products - SeriesBlock: Series overview with filtering - SeriesDetailBlock: Single series page with hero - VideoEmbedBlock: YouTube/Vimeo embed with privacy mode - FeaturedContentBlock: Curated mixed-content collections Also includes documentation updates for deployment and API guides. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
182 lines
4 KiB
TypeScript
182 lines
4 KiB
TypeScript
import type { Block } from 'payload'
|
|
|
|
/**
|
|
* Background color options (shared with other blocks)
|
|
*/
|
|
const backgroundColorOptions = [
|
|
{ label: 'Weiß', value: 'white' },
|
|
{ label: 'Ivory', value: 'ivory' },
|
|
{ label: 'Sand', value: 'sand' },
|
|
{ label: 'Hell (Grau)', value: 'light' },
|
|
{ label: 'Dunkel', value: 'dark' },
|
|
]
|
|
|
|
/**
|
|
* Category options matching the Favorites collection
|
|
*/
|
|
const categoryFilterOptions = [
|
|
{ label: 'Alle Kategorien', value: 'all' },
|
|
{ label: 'Fashion', value: 'fashion' },
|
|
{ label: 'Beauty', value: 'beauty' },
|
|
{ label: 'Travel', value: 'travel' },
|
|
{ label: 'Tech', value: 'tech' },
|
|
{ label: 'Home', value: 'home' },
|
|
]
|
|
|
|
/**
|
|
* FavoritesBlock
|
|
*
|
|
* Zeigt Favoriten/Affiliate-Produkte aus der Favorites Collection.
|
|
* Unterstützt verschiedene Layouts und Filteroptionen.
|
|
*/
|
|
export const FavoritesBlock: Block = {
|
|
slug: 'favorites-block',
|
|
labels: {
|
|
singular: 'Favoriten',
|
|
plural: 'Favoriten',
|
|
},
|
|
imageURL: '/assets/blocks/favorites.png',
|
|
fields: [
|
|
// Header
|
|
{
|
|
name: 'title',
|
|
type: 'text',
|
|
label: 'Überschrift',
|
|
localized: true,
|
|
},
|
|
{
|
|
name: 'subtitle',
|
|
type: 'text',
|
|
label: 'Untertitel',
|
|
localized: true,
|
|
},
|
|
|
|
// Filtering
|
|
{
|
|
name: 'category',
|
|
type: 'select',
|
|
defaultValue: 'all',
|
|
options: categoryFilterOptions,
|
|
label: 'Kategorie-Filter',
|
|
admin: {
|
|
description: 'Nur Favoriten dieser Kategorie anzeigen',
|
|
},
|
|
},
|
|
{
|
|
name: 'showFeaturedOnly',
|
|
type: 'checkbox',
|
|
defaultValue: false,
|
|
label: 'Nur Featured anzeigen',
|
|
admin: {
|
|
description: 'Nur als "Featured" markierte Favoriten anzeigen',
|
|
},
|
|
},
|
|
{
|
|
name: 'limit',
|
|
type: 'number',
|
|
defaultValue: 8,
|
|
min: 1,
|
|
max: 50,
|
|
label: 'Anzahl',
|
|
admin: {
|
|
description: 'Maximale Anzahl der angezeigten Favoriten',
|
|
},
|
|
},
|
|
|
|
// Layout
|
|
{
|
|
name: 'layout',
|
|
type: 'select',
|
|
defaultValue: 'grid',
|
|
label: 'Layout',
|
|
options: [
|
|
{ label: 'Grid', value: 'grid' },
|
|
{ label: 'Liste', value: 'list' },
|
|
{ label: 'Karussell', value: 'carousel' },
|
|
],
|
|
},
|
|
{
|
|
name: 'columns',
|
|
type: 'select',
|
|
defaultValue: '4',
|
|
label: 'Spalten',
|
|
options: [
|
|
{ label: '2 Spalten', value: '2' },
|
|
{ label: '3 Spalten', value: '3' },
|
|
{ label: '4 Spalten', value: '4' },
|
|
],
|
|
admin: {
|
|
condition: (_, siblingData) =>
|
|
siblingData?.layout === 'grid' || siblingData?.layout === 'carousel',
|
|
},
|
|
},
|
|
|
|
// Display Options
|
|
{
|
|
name: 'showPrice',
|
|
type: 'checkbox',
|
|
defaultValue: true,
|
|
label: 'Preis anzeigen',
|
|
},
|
|
{
|
|
name: 'showBadge',
|
|
type: 'checkbox',
|
|
defaultValue: true,
|
|
label: 'Badge anzeigen',
|
|
},
|
|
{
|
|
name: 'showDescription',
|
|
type: 'checkbox',
|
|
defaultValue: false,
|
|
label: 'Beschreibung anzeigen',
|
|
},
|
|
{
|
|
name: 'showCategory',
|
|
type: 'checkbox',
|
|
defaultValue: false,
|
|
label: 'Kategorie anzeigen',
|
|
},
|
|
|
|
// Styling
|
|
{
|
|
name: 'backgroundColor',
|
|
type: 'select',
|
|
defaultValue: 'white',
|
|
options: backgroundColorOptions,
|
|
label: 'Hintergrundfarbe',
|
|
},
|
|
|
|
// CTA
|
|
{
|
|
name: 'cta',
|
|
type: 'group',
|
|
label: 'Call-to-Action',
|
|
fields: [
|
|
{
|
|
name: 'showCta',
|
|
type: 'checkbox',
|
|
defaultValue: false,
|
|
label: 'CTA-Button anzeigen',
|
|
},
|
|
{
|
|
name: 'ctaText',
|
|
type: 'text',
|
|
label: 'Button-Text',
|
|
defaultValue: 'Alle Favoriten ansehen',
|
|
localized: true,
|
|
admin: {
|
|
condition: (_, siblingData) => siblingData?.showCta,
|
|
},
|
|
},
|
|
{
|
|
name: 'ctaUrl',
|
|
type: 'text',
|
|
label: 'Button-Link',
|
|
admin: {
|
|
condition: (_, siblingData) => siblingData?.showCta,
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
}
|