import type { Block } from 'payload'

/**
 * AuthorBioBlock
 *
 * Zeigt Autoren-Informationen am Ende eines Blog-Posts an.
 * Kann automatisch den Artikel-Autor oder manuell ausgewählte Autoren anzeigen.
 */
export const AuthorBioBlock: Block = {
  slug: 'author-bio-block',
  labels: {
    singular: 'Autoren-Bio',
    plural: 'Autoren-Bios',
  },
  imageURL: '/assets/blocks/author-bio.png',
  fields: [
    {
      name: 'source',
      type: 'select',
      defaultValue: 'post',
      label: 'Autoren-Quelle',
      options: [
        { label: 'Autor des Artikels', value: 'post' },
        { label: 'Manuell auswählen', value: 'manual' },
      ],
      admin: {
        description: 'Woher sollen die Autoren-Daten kommen?',
      },
    },
    {
      name: 'authors',
      type: 'relationship',
      relationTo: 'authors',
      hasMany: true,
      label: 'Autoren',
      admin: {
        condition: (_, siblingData) => siblingData?.source === 'manual',
        description: 'Wählen Sie die anzuzeigenden Autoren',
      },
    },
    {
      name: 'showCoAuthors',
      type: 'checkbox',
      defaultValue: true,
      label: 'Co-Autoren anzeigen',
      admin: {
        condition: (_, siblingData) => siblingData?.source === 'post',
        description: 'Auch Co-Autoren des Artikels anzeigen',
      },
    },
    // Layout
    {
      name: 'layout',
      type: 'select',
      defaultValue: 'card',
      label: 'Layout',
      options: [
        { label: 'Karte', value: 'card' },
        { label: 'Inline', value: 'inline' },
        { label: 'Kompakt', value: 'compact' },
        { label: 'Feature (Groß)', value: 'feature' },
      ],
    },
    // Anzuzeigende Elemente
    {
      name: 'show',
      type: 'group',
      label: 'Anzeigen',
      fields: [
        {
          name: 'avatar',
          type: 'checkbox',
          defaultValue: true,
          label: 'Profilbild',
        },
        {
          name: 'name',
          type: 'checkbox',
          defaultValue: true,
          label: 'Name',
        },
        {
          name: 'title',
          type: 'checkbox',
          defaultValue: true,
          label: 'Titel/Position',
        },
        {
          name: 'bio',
          type: 'select',
          defaultValue: 'short',
          label: 'Biografie',
          options: [
            { label: 'Keine', value: 'none' },
            { label: 'Kurz', value: 'short' },
            { label: 'Vollständig', value: 'full' },
          ],
        },
        {
          name: 'social',
          type: 'checkbox',
          defaultValue: true,
          label: 'Social Media Links',
        },
        {
          name: 'email',
          type: 'checkbox',
          defaultValue: false,
          label: 'E-Mail',
        },
        {
          name: 'website',
          type: 'checkbox',
          defaultValue: false,
          label: 'Website',
        },
        {
          name: 'postCount',
          type: 'checkbox',
          defaultValue: false,
          label: 'Anzahl Artikel',
        },
      ],
    },
    // Styling
    {
      name: 'style',
      type: 'group',
      label: 'Darstellung',
      fields: [
        {
          name: 'avatarSize',
          type: 'select',
          defaultValue: 'md',
          label: 'Avatar-Größe',
          options: [
            { label: 'Klein (48px)', value: 'sm' },
            { label: 'Mittel (80px)', value: 'md' },
            { label: 'Groß (120px)', value: 'lg' },
          ],
        },
        {
          name: 'avatarShape',
          type: 'select',
          defaultValue: 'circle',
          label: 'Avatar-Form',
          options: [
            { label: 'Rund', value: 'circle' },
            { label: 'Quadratisch', value: 'square' },
            { label: 'Abgerundet', value: 'rounded' },
          ],
        },
        {
          name: 'bg',
          type: 'select',
          defaultValue: 'light',
          label: 'Hintergrund',
          options: [
            { label: 'Keiner', value: 'none' },
            { label: 'Hell', value: 'light' },
            { label: 'Dunkel', value: 'dark' },
            { label: 'Akzent', value: 'accent' },
          ],
        },
        {
          name: 'border',
          type: 'checkbox',
          defaultValue: false,
          label: 'Rahmen',
        },
        {
          name: 'shadow',
          type: 'checkbox',
          defaultValue: false,
          label: 'Schatten',
        },
        {
          name: 'divider',
          type: 'checkbox',
          defaultValue: true,
          label: 'Trennlinie oben',
          admin: {
            description: 'Linie zur Trennung vom Artikel-Inhalt',
          },
        },
      ],
    },
    // Label
    {
      name: 'label',
      type: 'text',
      label: 'Überschrift',
      localized: true,
      admin: {
        description: 'z.B. "Über den Autor", "Geschrieben von" (optional)',
      },
    },
    // Link zur Autorenseite
    {
      name: 'linkToProfile',
      type: 'checkbox',
      defaultValue: true,
      label: 'Zur Autorenseite verlinken',
    },
  ],
}
