wwwfiberdirekt/src/blocks/FDQuizBlock/config.ts

200 lines
5.2 KiB
TypeScript

import type { Block } from 'payload'
import { anchorField } from '@/fields/anchorField'
export const FDQuizBlock: Block = {
slug: 'fdQuiz',
imageURL: '/block-thumbnails/fd-quiz.png',
imageAltText: 'FD Quiz / Behovsanalys',
interfaceName: 'FDQuizBlock',
labels: {
singular: 'FD Quiz / Behovsanalys',
plural: 'FD Quiz / Behovsanalyser',
},
fields: [
{
name: 'heading',
type: 'text',
localized: true,
label: 'Rubrik',
required: true,
defaultValue: 'Vilken tjänst passar dig?',
},
{
name: 'description',
type: 'textarea',
localized: true,
label: 'Beskrivning (valfri)',
},
{
name: 'triggerLabel',
type: 'text',
localized: true,
label: 'Startknapp-text',
defaultValue: 'Starta quiz',
},
/* ── Outcomes — define these FIRST so editors know the keys ── */
{
type: 'collapsible',
label: 'Resultat / rekommendationer',
admin: { initCollapsed: false },
fields: [
{
name: 'outcomes',
type: 'array',
label: 'Möjliga resultat',
minRows: 2,
maxRows: 6,
labels: { singular: 'Resultat', plural: 'Resultat' },
fields: [
{
name: 'key',
type: 'text',
label: 'Nyckel (kort, unik, t.ex. "vdc", "colo", "fiber")',
required: true,
admin: {
description: 'Används i frågornas alternativ. Bara små bokstäver, inga mellanslag.',
},
},
{
name: 'title',
type: 'text',
localized: true,
label: 'Resultatrubrik (t.ex. "Virtuellt Datacenter")',
required: true,
},
{
name: 'description',
type: 'textarea',
localized: true,
label: 'Resultatbeskrivning',
},
{
name: 'ctaText',
type: 'text',
localized: true,
label: 'CTA-knapp text',
defaultValue: 'Läs mer',
},
{
name: 'ctaLink',
type: 'text',
label: 'CTA-knapp länk',
defaultValue: '/kontakt',
},
],
},
],
},
/* ── Questions ── */
{
type: 'collapsible',
label: 'Frågor',
admin: { initCollapsed: false },
fields: [
{
name: 'questions',
type: 'array',
label: 'Frågor',
minRows: 2,
maxRows: 10,
labels: { singular: 'Fråga', plural: 'Frågor' },
fields: [
{
name: 'question',
type: 'text',
localized: true,
label: 'Frågetext',
required: true,
},
{
name: 'options',
type: 'array',
label: 'Svarsalternativ',
minRows: 2,
maxRows: 5,
labels: { singular: 'Alternativ', plural: 'Alternativ' },
fields: [
{
name: 'label',
type: 'text',
localized: true,
label: 'Alternativtext',
required: true,
},
{
name: 'sublabel',
type: 'text',
localized: true,
label: 'Undertext (valfri, visas under alternativet)',
},
{
name: 'outcomeKeys',
type: 'text',
label: 'Resultatnycklar (kommaseparerade, t.ex. "vdc,fiber")',
required: true,
admin: {
description: 'Varje valt alternativ ger +1 poäng till angivna resultatnycklar.',
},
},
],
},
],
},
],
},
/* ── UI labels ── */
{
type: 'collapsible',
label: 'Knappar & etiketter',
admin: { initCollapsed: true },
fields: [
{
name: 'nextLabel',
type: 'text',
localized: true,
label: '"Nästa"-knapptext',
defaultValue: 'Nästa',
},
{
name: 'backLabel',
type: 'text',
localized: true,
label: '"Tillbaka"-knapptext',
defaultValue: 'Tillbaka',
},
{
name: 'resultHeading',
type: 'text',
localized: true,
label: 'Resultatrubrik',
defaultValue: 'Rekommenderat:',
},
{
name: 'restartLabel',
type: 'text',
localized: true,
label: '"Börja om"-knapptext',
defaultValue: 'Börja om',
},
],
},
/* ── Styling ── */
{
name: 'sectionBackground',
type: 'select',
label: 'Sektionsbakgrund',
defaultValue: 'navy',
options: [
{ label: 'Vit', value: 'white' },
{ label: 'Grå', value: 'gray' },
{ label: 'Navy', value: 'navy' },
],
},
anchorField,
],
}