mirror of
https://github.com/complexcaresolutions/cms.c2sgmbh.git
synced 2026-03-18 01:34:11 +00:00
Blocks for page builder: - HeroBlock: hero sections with CTA - TextBlock: rich text content - ImageTextBlock: image with text layout - CardGridBlock: grid of cards - CTABlock: call-to-action sections - QuoteBlock: testimonial quotes - VideoBlock: embedded videos - DividerBlock: visual separators - ContactFormBlock: contact forms - NewsletterBlock: newsletter signup - ProcessStepsBlock: step-by-step processes - TimelineBlock: timeline displays - TestimonialsBlock: testimonial carousels - PostsListBlock: blog post listings Globals: - Navigation: site navigation structure - SiteSettings: general site configuration - SEOSettings: default SEO settings per tenant 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
156 lines
4 KiB
TypeScript
156 lines
4 KiB
TypeScript
import type { Block } from 'payload'
|
|
|
|
/**
|
|
* Newsletter Block
|
|
* Anmeldeformular für Newsletter
|
|
*/
|
|
export const NewsletterBlock: Block = {
|
|
slug: 'newsletter-block',
|
|
labels: {
|
|
singular: 'Newsletter Anmeldung',
|
|
plural: 'Newsletter Anmeldungen',
|
|
},
|
|
fields: [
|
|
{
|
|
name: 'title',
|
|
type: 'text',
|
|
defaultValue: 'Newsletter abonnieren',
|
|
label: 'Überschrift',
|
|
localized: true,
|
|
},
|
|
{
|
|
name: 'subtitle',
|
|
type: 'textarea',
|
|
defaultValue: 'Erhalten Sie regelmäßig Updates und Neuigkeiten direkt in Ihr Postfach.',
|
|
label: 'Beschreibung',
|
|
localized: true,
|
|
},
|
|
{
|
|
name: 'layout',
|
|
type: 'select',
|
|
defaultValue: 'inline',
|
|
label: 'Layout',
|
|
options: [
|
|
{ label: 'Inline (Eingabe + Button nebeneinander)', value: 'inline' },
|
|
{ label: 'Gestapelt (untereinander)', value: 'stacked' },
|
|
{ label: 'Mit Bild (50/50)', value: 'with-image' },
|
|
{ label: 'Minimal (nur Input)', value: 'minimal' },
|
|
{ label: 'Card (Karte)', value: 'card' },
|
|
],
|
|
},
|
|
{
|
|
name: 'image',
|
|
type: 'upload',
|
|
relationTo: 'media',
|
|
label: 'Bild',
|
|
admin: {
|
|
condition: (data, siblingData) => siblingData?.layout === 'with-image',
|
|
},
|
|
},
|
|
{
|
|
name: 'imagePosition',
|
|
type: 'select',
|
|
defaultValue: 'left',
|
|
label: 'Bildposition',
|
|
options: [
|
|
{ label: 'Links', value: 'left' },
|
|
{ label: 'Rechts', value: 'right' },
|
|
],
|
|
admin: {
|
|
condition: (data, siblingData) => siblingData?.layout === 'with-image',
|
|
},
|
|
},
|
|
{
|
|
name: 'collectName',
|
|
type: 'checkbox',
|
|
defaultValue: false,
|
|
label: 'Name abfragen',
|
|
},
|
|
{
|
|
name: 'showInterests',
|
|
type: 'checkbox',
|
|
defaultValue: false,
|
|
label: 'Interessen zur Auswahl anbieten',
|
|
},
|
|
{
|
|
name: 'availableInterests',
|
|
type: 'select',
|
|
hasMany: true,
|
|
label: 'Verfügbare Interessen',
|
|
options: [
|
|
{ label: 'Allgemeine Updates', value: 'general' },
|
|
{ label: 'Blog-Artikel', value: 'blog' },
|
|
{ label: 'Produkt-News', value: 'products' },
|
|
{ label: 'Angebote & Aktionen', value: 'offers' },
|
|
{ label: 'Events', value: 'events' },
|
|
],
|
|
admin: {
|
|
condition: (data, siblingData) => siblingData?.showInterests,
|
|
},
|
|
},
|
|
{
|
|
name: 'buttonText',
|
|
type: 'text',
|
|
defaultValue: 'Anmelden',
|
|
label: 'Button-Text',
|
|
localized: true,
|
|
},
|
|
{
|
|
name: 'placeholderEmail',
|
|
type: 'text',
|
|
defaultValue: 'Ihre E-Mail-Adresse',
|
|
label: 'Placeholder E-Mail',
|
|
localized: true,
|
|
},
|
|
{
|
|
name: 'successMessage',
|
|
type: 'textarea',
|
|
defaultValue:
|
|
'Vielen Dank! Bitte bestätigen Sie Ihre E-Mail-Adresse über den Link in der Bestätigungsmail.',
|
|
label: 'Erfolgsmeldung',
|
|
localized: true,
|
|
},
|
|
{
|
|
name: 'errorMessage',
|
|
type: 'text',
|
|
defaultValue: 'Es ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.',
|
|
label: 'Fehlermeldung',
|
|
localized: true,
|
|
},
|
|
{
|
|
name: 'privacyText',
|
|
type: 'textarea',
|
|
defaultValue:
|
|
'Mit der Anmeldung akzeptieren Sie unsere Datenschutzerklärung. Sie können sich jederzeit abmelden.',
|
|
label: 'Datenschutz-Hinweis',
|
|
localized: true,
|
|
},
|
|
{
|
|
name: 'privacyLink',
|
|
type: 'text',
|
|
defaultValue: '/datenschutz',
|
|
label: 'Link zur Datenschutzerklärung',
|
|
},
|
|
{
|
|
name: 'source',
|
|
type: 'text',
|
|
defaultValue: 'website',
|
|
label: 'Tracking-Quelle',
|
|
admin: {
|
|
description: 'Wird gespeichert um zu tracken, wo die Anmeldung erfolgte',
|
|
},
|
|
},
|
|
{
|
|
name: 'backgroundColor',
|
|
type: 'select',
|
|
defaultValue: 'accent',
|
|
label: 'Hintergrund',
|
|
options: [
|
|
{ label: 'Weiß', value: 'white' },
|
|
{ label: 'Hell (Grau)', value: 'light' },
|
|
{ label: 'Dunkel', value: 'dark' },
|
|
{ label: 'Akzentfarbe', value: 'accent' },
|
|
],
|
|
},
|
|
],
|
|
}
|