import type { CollectionConfig } from 'payload/types'

import { CustomTabComponent } from '../components/CustomTabComponent/index.js'
import { CustomTabComponentView } from '../components/views/CustomTabComponent/index.js'
import { CustomTabLabelView } from '../components/views/CustomTabLabel/index.js'
import { CustomNestedTabView } from '../components/views/CustomTabNested/index.js'
import { CustomTabWithParamView } from '../components/views/CustomTabWithParam/index.js'
import { CustomVersionsView } from '../components/views/CustomVersions/index.js'
import {
  customCollectionParamViewPath,
  customCollectionParamViewPathBase,
  customEditLabel,
  customNestedTabViewPath,
  customTabLabel,
  customTabViewPath,
} from '../shared.js'
import { customViews2CollectionSlug } from '../slugs.js'

export const CustomViews2: CollectionConfig = {
  slug: customViews2CollectionSlug,
  admin: {
    components: {
      views: {
        Edit: {
          // This will override one specific nested view within the `/edit/:id` route, i.e. `/edit/:id/versions`
          Default: {
            Tab: {
              label: customEditLabel,
            },
          },
          MyCustomView: {
            Component: CustomTabLabelView,
            Tab: {
              href: '/custom-tab-view',
              label: customTabLabel,
            },
            path: '/custom-tab-view',
          },
          MyCustomViewWithCustomTab: {
            Component: CustomTabComponentView,
            Tab: CustomTabComponent,
            path: customTabViewPath,
          },
          MyCustomViewWithNestedPath: {
            Component: CustomNestedTabView,
            path: customNestedTabViewPath,
            Tab: {
              label: 'Custom Nested Tab View',
              href: customNestedTabViewPath,
            },
          },
          Versions: CustomVersionsView,
          CustomViewWithParam: {
            Component: CustomTabWithParamView,
            path: customCollectionParamViewPath,
            Tab: {
              label: 'Custom Param View',
              href: `${customCollectionParamViewPathBase}/123`,
            },
          },
        },
      },
    },
  },
  fields: [
    {
      name: 'title',
      type: 'text',
    },
  ],
  versions: true,
}
