import type { GlobalConfig } from 'payload' import { authenticated } from '../access/authenticated' import { revalidatePostSettings } from './hooks/revalidatePostSettings' export const PostSettings: GlobalConfig = { slug: 'post-settings', label: 'Inläggsinställningar', admin: { group: 'Globala inställningar', description: 'Styr utseende och innehåll för nyhetssidan och enskilda inlägg.', }, access: { update: authenticated, read: () => true, }, hooks: { afterChange: [revalidatePostSettings], }, fields: [ /* ── Listing page ───────────────────────────────────────────────────── */ { type: 'collapsible', label: 'Listningssida (/posts)', admin: { initCollapsed: false, }, fields: [ { name: 'listingHeading', type: 'text', label: 'Rubrik', localized: true, defaultValue: 'Nyheter', admin: { description: 'H1-rubrik som visas överst på sidan.', }, }, { name: 'listingDescription', type: 'textarea', label: 'Beskrivning', localized: true, admin: { description: 'Valfri kort text under rubriken. Används även som meta description om inget annat anges.', }, }, { name: 'listingBackground', type: 'select', label: 'Bakgrundsfärg', defaultValue: 'white', options: [ { label: 'Vit', value: 'white' }, { label: 'Grå', value: 'gray' }, { label: 'Navy', value: 'navy' }, ], }, { name: 'postsPerPage', type: 'number', label: 'Antal inlägg per sida', defaultValue: 12, min: 3, max: 48, admin: { step: 3, description: 'Bör vara delbart med 3 för jämnt rutnät.', }, }, { name: 'showCategoriesOnCards', type: 'checkbox', label: 'Visa kategorier på kort', defaultValue: true, admin: { description: 'Visar kategori-taggar på varje inläggskort i listan.', }, }, ], }, /* ── Single post page ───────────────────────────────────────────────── */ { type: 'collapsible', label: 'Enskilt inlägg (/posts/[slug])', admin: { initCollapsed: false, }, fields: [ { name: 'backLinkText', type: 'text', label: 'Tillbaka-länk', localized: true, defaultValue: '← Tillbaka till nyheter', admin: { description: 'Text på länken som leder tillbaka till listningssidan.', }, }, { name: 'showCategoriesOnPost', type: 'checkbox', label: 'Visa kategorier på inlägg', defaultValue: true, admin: { description: 'Visar kategori-taggar under meta-info på enskilda inlägg.', }, }, { name: 'showRelatedPosts', type: 'checkbox', label: 'Visa relaterade inlägg', defaultValue: true, admin: { description: 'Visar relaterade inlägg längst ner på sidan (om de finns).', }, }, { name: 'relatedPostsHeading', type: 'text', label: 'Rubrik för relaterade inlägg', localized: true, defaultValue: 'Relaterade inlägg', admin: { condition: (data) => Boolean(data?.showRelatedPosts), }, }, { type: 'group', name: 'cta', label: 'Call to Action', fields: [ { name: 'enabled', type: 'checkbox', label: 'Visa CTA-knapp', defaultValue: true, }, { name: 'text', type: 'text', label: 'Knapptext', localized: true, defaultValue: 'Kontakta oss', admin: { condition: (_, siblingData) => Boolean(siblingData?.enabled), }, }, { name: 'link', type: 'text', label: 'Länk', defaultValue: '/kontakt', admin: { condition: (_, siblingData) => Boolean(siblingData?.enabled), }, }, { name: 'variant', type: 'select', label: 'Stil', defaultValue: 'primary', options: [ { label: 'Primär (gul)', value: 'primary' }, { label: 'Kontur', value: 'outline' }, ], admin: { condition: (_, siblingData) => Boolean(siblingData?.enabled), }, }, ], }, ], }, /* ── SEO overrides ──────────────────────────────────────────────────── */ { type: 'collapsible', label: 'SEO', admin: { initCollapsed: true, }, fields: [ { name: 'metaTitle', type: 'text', label: 'Meta-titel', localized: true, admin: { description: 'Titel för -taggen. Lämna tomt för att använda listningsrubriken + "| Fiber Direkt".', }, }, { name: 'metaDescription', type: 'textarea', label: 'Meta-beskrivning', localized: true, admin: { description: 'Lämna tomt för att använda listningsbeskrivningen ovan.', }, }, ], }, ], }