import { ConfluenceIcon } from '@/components/icons'
import type { ConnectorMeta } from '@/connectors/types'

export const confluenceConnectorMeta: ConnectorMeta = {
  id: 'confluence',
  name: 'Confluence',
  description: 'Sync pages from a Confluence space',
  version: '1.1.0',
  icon: ConfluenceIcon,

  auth: {
    mode: 'oauth',
    provider: 'confluence',
    requiredScopes: [
      'read:confluence-content.all',
      'read:page:confluence',
      'read:blogpost:confluence',
      'read:space:confluence',
      'read:label:confluence',
      'search:confluence',
      'offline_access',
    ],
  },

  configFields: [
    {
      id: 'domain',
      title: 'Confluence Domain',
      type: 'short-input',
      placeholder: 'yoursite.atlassian.net',
      required: true,
    },
    {
      id: 'spaceSelector',
      title: 'Spaces',
      type: 'selector',
      selectorKey: 'confluence.spaces',
      canonicalParamId: 'spaceKey',
      mode: 'basic',
      multi: true,
      dependsOn: ['domain'],
      placeholder: 'Select one or more spaces',
      required: true,
    },
    {
      id: 'spaceKey',
      title: 'Space Keys',
      type: 'short-input',
      canonicalParamId: 'spaceKey',
      mode: 'advanced',
      multi: true,
      placeholder: 'e.g. ENG, PRODUCT (comma-separated for multiple)',
      required: true,
    },
    {
      id: 'contentType',
      title: 'Content Type',
      type: 'dropdown',
      required: false,
      options: [
        { label: 'Pages only', id: 'page' },
        { label: 'Blog posts only', id: 'blogpost' },
        { label: 'All content', id: 'all' },
      ],
    },
    {
      id: 'labelFilter',
      title: 'Filter by Label',
      type: 'short-input',
      required: false,
      placeholder: 'e.g. published, engineering',
    },
    {
      id: 'maxPages',
      title: 'Max Pages',
      type: 'short-input',
      required: false,
      placeholder: 'e.g. 500 (default: unlimited)',
    },
  ],

  tagDefinitions: [
    { id: 'labels', displayName: 'Labels', fieldType: 'text' },
    { id: 'version', displayName: 'Version', fieldType: 'number' },
    { id: 'lastModified', displayName: 'Last Modified', fieldType: 'date' },
  ],
}
