import type { CollectionConfig } from 'payload' import { anyone } from '../../access/anyone' import { authenticated } from '../../access/authenticated' import { auditChange } from '../../collections/Audit/hooks/auditHooks' import { slugField } from '@/fields/slug' export const Portfolio: CollectionConfig = { slug: 'portfolio', access: { create: authenticated, read: anyone, update: authenticated, delete: authenticated, }, admin: { useAsTitle: 'title', defaultColumns: ['title', 'websiteType', 'updatedAt'], }, fields: [ { name: 'title', type: 'text', required: true, }, { name: 'url', type: 'text', admin: { description: 'Website URL (e.g., https://example.com)', }, }, { name: 'image', type: 'upload', relationTo: 'media', required: true, admin: { description: 'Preview image stored in R2', }, }, { name: 'description', type: 'textarea', }, { name: 'websiteType', type: 'select', options: [ { label: '企業官網', value: 'corporate' }, { label: '電商網站', value: 'ecommerce' }, { label: '活動頁面', value: 'landing' }, { label: '品牌網站', value: 'brand' }, { label: '其他', value: 'other' }, ], required: true, }, { name: 'tags', type: 'array', fields: [ { name: 'tag', type: 'text', }, ], }, ...slugField(), ], hooks: { afterChange: [auditChange('portfolio')], afterDelete: [auditChange('portfolio')], }, versions: { drafts: { autosave: true, }, maxPerDoc: 10, }, }