import type { CollectionConfig } from 'payload'
import { adminOrEditor, anyRole } from '@/access/roles'
import { headerFields } from '@/Header/fields'
import { footerFields } from '@/Footer/fields'

export const SharedLayouts: CollectionConfig = {
  slug: 'shared-layouts',
  admin: {
    useAsTitle: 'title',
    defaultColumns: ['title', 'type', 'updatedAt'],
  },
  access: {
    read: anyRole,
    create: adminOrEditor,
    update: adminOrEditor,
    delete: adminOrEditor,
  },
  fields: [
    {
      name: 'title',
      type: 'text',
      required: true,
      admin: {
        placeholder: 'e.g. Campaign Alpha Footer',
      },
    },
    {
      name: 'type',
      type: 'select',
      required: true,
      defaultValue: 'footer',
      options: [
        { label: 'Header', value: 'header' },
        { label: 'Footer', value: 'footer' },
      ],
    },
    {
      name: 'headerConfig',
      type: 'group',
      admin: {
        condition: (_, siblingData) => siblingData?.type === 'header',
        hideGutter: true,
      },
      fields: headerFields,
    },
    {
      name: 'footerConfig',
      type: 'group',
      admin: {
        condition: (_, siblingData) => siblingData?.type === 'footer',
        hideGutter: true,
      },
      fields: footerFields,
    },
  ],
}
