import type { Block } from 'payload'

/**
 * SeriesDetailBlock
 *
 * Für Serien-Einzelseiten mit Hero und Content.
 * Zeigt die ausgewählte Serie mit Hero, Beschreibung und verwandten Posts.
 */
export const SeriesDetailBlock: Block = {
  slug: 'series-detail-block',
  labels: {
    singular: 'Serien-Detail',
    plural: 'Serien-Details',
  },
  imageURL: '/assets/blocks/series-detail.png',
  fields: [
    // Series Selection
    {
      name: 'series',
      type: 'relationship',
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      relationTo: 'series' as any,
      required: true,
      label: 'Serie auswählen',
      admin: {
        description: 'Die anzuzeigende Serie',
      },
    },

    // Display Options
    {
      name: 'showHero',
      type: 'checkbox',
      defaultValue: true,
      label: 'Hero-Bereich anzeigen',
      admin: {
        description: 'Cover-Bild mit Logo und Tagline',
      },
    },
    {
      name: 'showDescription',
      type: 'checkbox',
      defaultValue: true,
      label: 'Beschreibung anzeigen',
    },
    {
      name: 'showBrandColors',
      type: 'checkbox',
      defaultValue: true,
      label: 'Markenfarben verwenden',
      admin: {
        description: 'Serien-spezifische Farben für Akzente nutzen',
      },
    },

    // Related Posts
    {
      name: 'showRelatedPosts',
      type: 'checkbox',
      defaultValue: true,
      label: 'Verwandte Beiträge anzeigen',
      admin: {
        description: 'Posts die mit dieser Serie verknüpft sind',
      },
    },
    {
      name: 'relatedPostsLimit',
      type: 'number',
      defaultValue: 6,
      min: 1,
      max: 20,
      label: 'Anzahl verwandter Beiträge',
      admin: {
        condition: (_, siblingData) => siblingData?.showRelatedPosts,
      },
    },
    {
      name: 'relatedPostsTitle',
      type: 'text',
      label: 'Titel für verwandte Beiträge',
      defaultValue: 'Beiträge aus dieser Serie',
      localized: true,
      admin: {
        condition: (_, siblingData) => siblingData?.showRelatedPosts,
      },
    },

    // YouTube Integration
    {
      name: 'showYoutubePlaylist',
      type: 'checkbox',
      defaultValue: true,
      label: 'YouTube-Playlist anzeigen',
      admin: {
        description: 'Embed der YouTube-Playlist falls konfiguriert',
      },
    },

    // Layout
    {
      name: 'layout',
      type: 'select',
      defaultValue: 'full',
      label: 'Layout',
      options: [
        { label: 'Vollständig', value: 'full' },
        { label: 'Kompakt', value: 'compact' },
      ],
    },

    // Hero Options (only when showHero is true)
    {
      name: 'hero',
      type: 'group',
      label: 'Hero-Optionen',
      admin: {
        condition: (_, siblingData) => siblingData?.showHero,
      },
      fields: [
        {
          name: 'height',
          type: 'select',
          defaultValue: 'medium',
          label: 'Hero-Höhe',
          options: [
            { label: 'Klein (300px)', value: 'small' },
            { label: 'Mittel (400px)', value: 'medium' },
            { label: 'Groß (500px)', value: 'large' },
            { label: 'Vollbild', value: 'fullscreen' },
          ],
        },
        {
          name: 'overlay',
          type: 'checkbox',
          defaultValue: true,
          label: 'Overlay anzeigen',
          admin: {
            description: 'Dunkles Overlay für bessere Lesbarkeit',
          },
        },
        {
          name: 'textAlign',
          type: 'select',
          defaultValue: 'center',
          label: 'Text-Ausrichtung',
          options: [
            { label: 'Links', value: 'left' },
            { label: 'Mitte', value: 'center' },
            { label: 'Rechts', value: 'right' },
          ],
        },
      ],
    },
  ],
}
