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' },
      ],
    },
  ],
}
