wwwlayermeshusa/seeds/seed-block-kitchen-sink.mjs
2026-03-10 09:54:58 +01:00

718 lines
29 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// seed-block-kitchen-sink.mjs
// Fiber Direkt — Block Kitchen Sink
// One instance of every block that works without images/file uploads.
//
// Skipped (require mandatory file uploads or form relationships):
// fdHeaderTextImage — image required
// fdVideoHero — videoMp4 required
// fdLocationsGrid — card images required
// fdIconBar — icon items required
// fdPartnersLogos — logo items required
// fdContactForm — form relationship required
//
// Run: PAYLOAD_API_URL=http://localhost:3000 PAYLOAD_API_KEY=xxx node seed-block-kitchen-sink.mjs
const PAYLOAD_API_URL = process.env.PAYLOAD_API_URL || 'http://localhost:3000'
const PAYLOAD_API_KEY = process.env.PAYLOAD_API_KEY
// Required for fdFaq answers, fdUspTable descriptions, fdText body
function richText(text) {
return {
root: {
type: 'root',
children: [
{
type: 'paragraph',
children: [
{ type: 'text', text, format: 0, detail: 0, mode: 'normal', style: '', version: 1 },
],
direction: 'ltr',
format: '',
indent: 0,
version: 1,
textFormat: 0,
},
],
direction: 'ltr',
format: '',
indent: 0,
version: 1,
},
}
}
async function createPage(slug, title, blocks) {
const res = await fetch(`${PAYLOAD_API_URL}/api/pages`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `users API-Key ${PAYLOAD_API_KEY}`,
},
body: JSON.stringify({ title, slug, layout: blocks, _status: 'draft' }),
})
const data = await res.json()
console.log(`${res.ok ? '✓' : '✗'} ${title} (/${slug}): ${res.status}`)
if (!res.ok) console.error(JSON.stringify(data.errors || data, null, 2))
return data
}
async function seed() {
if (!PAYLOAD_API_KEY) {
console.error('Error: PAYLOAD_API_KEY environment variable is required.')
process.exit(1)
}
console.log(`Seeding to: ${PAYLOAD_API_URL}`)
console.log('─'.repeat(60))
await createPage('block-kitchen-sink', 'Block Kitchen Sink', [
// ─── 1. fdHero ────────────────────────────────────────────────
{
blockType: 'fdHero',
heading: 'Sveriges bästa IT-infrastruktur för företag',
subheading: 'Fiber, Backup, Colocation och Cloud',
body: 'Dedikerat fiber, backup, colocation och virtuella servrar — allt från en leverantör med svenskt huvudmannaskap.',
ctaText: 'Kom igång',
ctaLink: '/kontakt',
secondaryCtaText: 'Läs mer',
secondaryCtaLink: '#tjanster',
theme: 'dark',
anchorId: 'block-fdhero',
},
// ─── 2. fdAlternateHero ────────────────────────────────────────
{
blockType: 'fdAlternateHero',
heading: 'Er data under svensk lag. Punkt.',
description: 'Vi erbjuder dedikerat fiber, backup, colocation och cloud — allt från svenska datacenter, under svensk lag, med svensk support.',
primaryCtaText: 'Kontakta oss',
primaryCtaLink: '/kontakt',
secondaryCtaText: 'Se tjänster',
secondaryCtaLink: '#tjanster',
sectionBackground: 'white',
anchorId: 'block-fdalternatehero',
},
// ─── 3. fdStatistics ──────────────────────────────────────────
{
blockType: 'fdStatistics',
heading: 'Fiber Direkt i siffror',
sectionBackground: 'navy',
numberColor: 'yellow',
anchorId: 'block-fdstatistics',
stats: [
{ number: '99,99 %', label: 'garanterad drifttid' },
{ number: '400 Gbit/s', label: 'maxkapacitet dedikerat fiber' },
{ number: '24/7', label: 'svensk support' },
{ number: '100 %', label: 'svensk infrastruktur' },
],
},
// ─── 4. fdUspChecklist ─────────────────────────────────────────
{
blockType: 'fdUspChecklist',
heading: 'Varför välja Fiber Direkt?',
sectionBackground: 'white',
imagePosition: 'right',
checkColor: 'navy',
textColor: 'navy',
anchorId: 'block-fduspchecklist',
items: [
{ text: 'Dedikerat fiber — symmetrisk kapacitet, inte delad' },
{ text: 'Skyddsklass 3 — högsta civila säkerhetsklassning' },
{ text: 'ISO 27001 — certifierad informationssäkerhet' },
{ text: 'Ingen CLOUD Act-exponering — all data stannar i Sverige' },
{ text: 'En leverantör, en faktura — fiber, backup, cloud och colocation' },
{ text: 'Svensk support dygnet runt — inga chatbotar, inga callcenters' },
],
},
// ─── 5. fdUspTable ────────────────────────────────────────────
{
blockType: 'fdUspTable',
heading: 'Tekniska fördelar',
sectionBackground: 'gray',
checkColor: 'navy',
textColor: 'navy',
anchorId: 'block-fdusptable',
rows: [
{
title: 'Skyddsklass 3',
description: richText('Högsta civila säkerhetsklassning i Sverige. Biometrisk åtkomstkontroll och kameraövervakning dygnet runt.'),
},
{
title: 'N+1 redundans',
description: richText('Redundant kyla och kraft i varje rack. Driftsäkert även vid komponentfel.'),
},
{
title: 'Symmetrisk fiber',
description: richText('Samma hastighet upp som ned — dedikerad kapacitet, inte delad med andra kunder.'),
},
{
title: 'ISO 27001 & ISO 14001',
description: richText('Certifierade för informationssäkerhet och miljöledning. NIS2-redo.'),
},
],
},
// ─── 6. fdCardGrid ────────────────────────────────────────────
{
blockType: 'fdCardGrid',
sectionBackground: 'white',
layout: '1-1-1',
cardStyle: 'outlined',
anchorId: 'block-fdcardgrid',
cards: [
{
displayMode: 'content',
heading: 'Fiber Direkt',
contentLines: [
{ text: 'Dedikerat fiber med symmetrisk kapacitet — 10 Gbit/s till 400 Gbit/s.', style: 'normal' },
{ text: 'Direkt anslutning till svenskt nät utan Big Tech-mellanhänder.', style: 'normal' },
],
},
{
displayMode: 'content',
heading: 'Server Direkt',
contentLines: [
{ text: 'Virtuella servrar på svensk infrastruktur. Proxmox-baserad plattform.', style: 'normal' },
{ text: 'Ny server på under 5 minuter. Betala för det ni använder.', style: 'normal' },
],
},
{
displayMode: 'content',
heading: 'Datacenter Direkt',
contentLines: [
{ text: 'Colocation i Skyddsklass 3 — Stockholm Nord, 1,6 MW kapacitet.', style: 'normal' },
{ text: 'Upp till 88 kW per rack. AI/HPC-redo.', style: 'normal' },
],
},
],
},
// ─── 7. fdPricingCard ─────────────────────────────────────────
{
blockType: 'fdPricingCard',
sectionTitle: 'Välj din tjänstenivå',
sectionBackground: 'gray',
cardStyle: 'navy',
buttonColor: 'yellow',
titleColor: 'navy',
anchorId: 'block-fdpricingcard',
cards: [
{
title: 'Fiber Basic',
subtitle: 'från 1 195 kr/mån',
description: 'Dedikerat fiber för mindre kontor och startups.',
ctaText: 'Få offert',
ctaLink: '/kontakt',
bulletPoints: [
{ text: '10 Gbit/s symmetrisk' },
{ text: 'SLA med ekonomisk garanti' },
{ text: 'Svensk support 24/7' },
],
},
{
title: 'Fiber Platina',
subtitle: 'från 7 995 kr/mån',
description: 'Hög kapacitet för krävande verksamheter och datacenter.',
ctaText: 'Få offert',
ctaLink: '/kontakt',
bulletPoints: [
{ text: '100 Gbit/s symmetrisk' },
{ text: 'BGP-stöd och VLAN-taggning' },
{ text: 'Redundanta uplinks' },
{ text: 'Prioriterad support' },
],
},
],
},
// ─── 8. fdCtaBanner ───────────────────────────────────────────
{
blockType: 'fdCtaBanner',
heading: 'Redo att ta kontrollen över er IT?',
subheading: 'Boka ett samtal med vårt team. Vi hjälper er hitta rätt upplägg — utan förpliktelser.',
ctaText: 'Kontakta oss',
ctaLink: '/kontakt',
secondaryCtaText: 'Prata med en expert',
secondaryCtaLink: '/kontakt',
sectionBackground: 'yellow',
alignment: 'center',
size: 'large',
anchorId: 'block-fdctabanner',
},
// ─── 9. fdCtaSideImage ────────────────────────────────────────
{
blockType: 'fdCtaSideImage',
heading: 'Flytta in. Skala upp. Sov gott.',
body: 'Vårt team hanterar hela flytten — från planering till driftsättning. Ni behöver inte lyfta ett finger. Och när allt är igång finns vi kvar som er enda IT-kontakt.',
ctaText: 'Boka ett möte',
ctaLink: '/kontakt',
imagePosition: 'right',
theme: 'dark',
anchorId: 'block-fdctasideimage',
},
// ─── 10. fdFaq ────────────────────────────────────────────────
{
blockType: 'fdFaq',
heading: 'Vanliga frågor',
theme: 'light',
anchorId: 'block-fdfaq',
items: [
{
question: 'Lyder min data under CLOUD Act om ni har servrar i EU?',
answer: richText('Nej — inte med Fiber Direkt. Vi är ett svenskägt bolag och all infrastruktur finns i Sverige. Ingen data passerar utländsk juridisdiktion, och US Cloud Act gäller inte oss.'),
},
{
question: 'Vad ingår i er SLA?',
answer: richText('Vår SLA garanterar 99,99 % drifttid med ekonomisk kompensation vid avvikelse. Exakt villkor beror på tjänst — kontakta oss för aktuellt avtal.'),
},
{
question: 'Kan vi skala upp kapaciteten utan att byta leverantör?',
answer: richText('Ja. Fibern skalas upp utan att byta hårdvara. Virtuella servrar justeras på minuter. Colocation-kapacitet utökas i samma rack eller med nytt rack.'),
},
],
},
// ─── 11. fdTestimonial ────────────────────────────────────────
{
blockType: 'fdTestimonial',
heading: 'Vad våra kunder säger',
sectionBackground: 'gray',
layout: 'featured',
anchorId: 'block-fdtestimonial',
testimonials: [
{
quote: 'Vi hade all data i AWS Frankfurt utan egentlig kontroll. Flytten till Fiber Direkt tog tre veckor — och nu sover vi bättre.',
authorName: '[REPRESENTANT — kräver verklig kundgodkännande]',
authorRole: 'IT-chef',
authorCompany: '[Företagsnamn]',
},
],
},
// ─── 12. fdServicesGrid ───────────────────────────────────────
{
blockType: 'fdServicesGrid',
heading: 'Alla tjänster',
columns: '4',
anchorId: 'block-fdservicesgrid',
services: [
{ title: 'Fiber', description: 'Dedikerat fiber 10400 Gbit/s. Symmetrisk kapacitet.', link: '/fiber' },
{ title: 'Colocation', description: 'Rack i Skyddsklass 3. Upp till 88 kW per rack.', link: '/colocation' },
{ title: 'Virtuellt datacenter', description: 'VPS på Proxmox-plattform. Ny server på 5 minuter.', link: '/virtuellt-datacenter' },
{ title: 'Backup', description: 'Automatisk backup till svenska datacenter. 30 dagars retention.', link: '/backup' },
],
},
// ─── 13. fdWideCard ───────────────────────────────────────────
{
blockType: 'fdWideCard',
heading: 'Klimatsmart sedan dag ett',
body: 'Överskottsvärmen från våra datacenter matas in i Stockholms fjärrvärmenät. HVO100 förnybart diesel i reservkraftverken. ISO 14001-certifierade — 20+ år före EU Green Deal.',
ctaText: 'Läs om vårt hållbarhetsarbete',
ctaLink: '/hallbarhet',
cardBackground: 'navy',
buttonColor: 'yellow',
sectionBackground: 'white',
anchorId: 'block-fdwidecard',
},
// ─── 14. fdTechProperties ─────────────────────────────────────
{
blockType: 'fdTechProperties',
sectionBackground: 'navy',
categoryColor: 'white',
valueColor: 'yellow',
anchorId: 'block-fdtechproperties',
properties: [
{ category: 'Skyddsklass', value: '3' },
{ category: 'Effekt per rack', value: '88 kW' },
{ category: 'Total kapacitet', value: '1,6 MW' },
{ category: 'Certifieringar', value: 'ISO 27001 · ISO 14001 · SSF 200' },
],
},
// ─── 15. fdFeatureAnnouncement ────────────────────────────────
{
blockType: 'fdFeatureAnnouncement',
heading: 'Nyhet: Office Komplett — allt kontoret behöver på en faktura',
body: 'Dedikerat fiber, managed WiFi, nätverksswitch och 1 TB svensk molnlagring i ett paket för 2 995 kr/mån.',
ctaText: 'Läs mer',
ctaLink: '/office-komplett',
theme: 'gray',
anchorId: 'block-fdfeatureannouncement',
},
// ─── 16. fdText ───────────────────────────────────────────────
{
blockType: 'fdText',
heading: 'Om Fiber Direkt',
subheading: 'Svenskägt. Driftsäkert. Ansvarsfullt.',
body: richText('Fiber Direkt är ett stockholmsbaserat IT-infrastrukturbolag med eget nät, egna datacenter och egen support. Vi äger vår infrastruktur — vi återsäljer ingenting. Sedan starten har vi levererat dedikerad fiber, colocation och cloud till svenska företag som kräver kontroll, prestanda och datasuveränitet.'),
alignment: 'left',
textColor: 'navy',
sectionBackground: 'white',
maxWidth: 'medium',
anchorId: 'block-fdtext',
},
// ─── 17. fdDataTable ──────────────────────────────────────────
{
blockType: 'fdDataTable',
heading: 'Fibernivåer — översikt',
description: 'Alla priser exkl. moms. Exakt pris beror på adress och avtalstid.',
dataSource: 'manual',
sectionBackground: 'gray',
headerStyle: 'navy',
stripeRows: true,
bordered: false,
firstColumnBold: true,
anchorId: 'block-fddatatable',
headers: [
{ text: 'Nivå' },
{ text: 'Hastighet' },
{ text: 'Pris från' },
],
rows: [
{ cells: 'Basic, 10 Gbit/s, 1 195 kr/mån' },
{ cells: 'Standard, 40 Gbit/s, Offert' },
{ cells: 'Premium, 100 Gbit/s, Offert' },
{ cells: 'Platina, 400 Gbit/s, 7 995 kr/mån' },
],
},
// ─── 18. fdTeam ───────────────────────────────────────────────
{
blockType: 'fdTeam',
heading: 'Möt vårt team',
subheading: 'Svenska experter. Svenska svar.',
columns: '3',
cardStyle: 'navy',
sectionBackground: 'white',
anchorId: 'block-fdteam',
members: [
{
name: 'Anna Lindqvist',
role: 'Säljansvarig',
bio: 'Anna hjälper er hitta rätt lösning för ert kontor eller datacenter.',
email: 'anna@fiberdirekt.se',
},
{
name: 'Marcus Bergström',
role: 'Nätverksingenjör',
bio: 'Marcus ansvarar för fibernätet och teknisk driftsättning.',
},
{
name: 'Sara Holm',
role: 'Kundsupport',
bio: 'Sara är er kontakt för support och felanmälan — dygnet runt.',
email: 'support@fiberdirekt.se',
},
],
},
// ─── 19. fdNewsletter ────────────────────────────────────────
{
blockType: 'fdNewsletter',
heading: 'Håll er uppdaterade',
description: 'Prenumerera på nyheter om fiber, cloud och IT-infrastruktur i Sverige.',
submitEndpoint: '/api/newsletter',
buttonText: 'Prenumerera',
successMessage: 'Tack! Ni är nu prenumeranter.',
consentText: 'Jag godkänner att mina uppgifter används enligt integritetspolicyn.',
privacyPolicyLink: '/integritetspolicy',
collectName: false,
collectCompany: false,
layout: 'inline',
sectionBackground: 'navy',
textColor: 'auto',
},
// ─── 20. fdTags ──────────────────────────────────────────────
{
blockType: 'fdTags',
heading: 'Tjänster och teknologier',
tagStyle: 'navy',
tagSize: 'large',
alignment: 'left',
sectionBackground: 'white',
tags: [
{ text: 'Fiber' },
{ text: 'Colocation' },
{ text: 'Virtuellt datacenter' },
{ text: 'Backup' },
{ text: 'Layer 2' },
{ text: 'ISO 27001' },
{ text: 'Skyddsklass 3' },
{ text: 'NIS2' },
{ text: 'GDPR' },
],
},
// ─── 21. fdServiceChooser ─────────────────────────────────────
{
blockType: 'fdServiceChooser',
heading: 'Välj er bransch',
description: 'Vi har erfarenhet av IT-infrastruktur för ett brett spektrum av branscher.',
sectionBackground: 'gray',
anchorId: 'block-fdservicechooser',
categories: [
{
label: 'Kontor & Företag',
intro: 'Turnkey IT för kontor — fiber, WiFi, switch och molnlagring på en faktura.',
services: [
{ title: 'Office Komplett', description: 'Fiber + WiFi + switch + 1 TB cloud. 2 995 kr/mån.', ctaText: 'Läs mer', ctaLink: '/office-komplett' },
{ title: 'Dedikerat fiber', description: 'Symmetrisk kapacitet direkt till ert kontor.', ctaText: 'Se priser', ctaLink: '/fiber' },
],
},
{
label: 'Datacenter & Hosting',
intro: 'Hög densitet, hög säkerhet — colocation i Stockholm Nord.',
services: [
{ title: 'Colocation', description: 'Från halvskåp till full cage. Upp till 88 kW per rack.', ctaText: 'Se alternativ', ctaLink: '/colocation' },
{ title: 'Virtuellt datacenter', description: 'VPS på Proxmox. Ny server på 5 minuter.', ctaText: 'Beräkna kostnad', ctaLink: '/virtuellt-datacenter' },
],
},
],
},
// ─── 22. fdSpecCards ──────────────────────────────────────────
{
blockType: 'fdSpecCards',
heading: 'Colocation — specifikationer',
description: 'Stockholm Nord datacenter. Industrins starkaste civila säkerhetsklassning.',
ctaText: 'Beräkna din kostnad',
ctaLink: '/kontakt',
layout: 'sideBySide',
cardStyle: 'outlined',
sectionBackground: 'navy',
anchorId: 'block-fdspeccards',
cards: [
{ title: 'Halvskåp', description: '18U, 24/7-bevakat.', specLabel: 'Pris från', specValue: '3 495 kr/mån' },
{ title: 'Helskåp', description: '40U, N+1 redundans, KVM ingår.', specLabel: 'Pris från', specValue: '5 995 kr/mån' },
{ title: 'Bur', description: 'Dedikerat burutrymme för större installationer.', specLabel: 'Pris', specValue: 'Offert' },
],
},
// ─── 23. fdLinkCards ──────────────────────────────────────────
{
blockType: 'fdLinkCards',
heading: 'Utforska våra tjänster',
description: 'Allt ni behöver — från en leverantör.',
columns: '3',
cardStyle: 'outlined',
sectionBackground: 'navy',
anchorId: 'block-fdlinkcards',
cards: [
{ title: 'Dedikerat fiber\n10400 Gbit/s', linkLabel: 'Se fibertjänster', linkUrl: '/fiber' },
{ title: 'Virtuella servrar\nProxmox-plattform', linkLabel: 'Utforska VPS', linkUrl: '/virtuellt-datacenter' },
{ title: 'Colocation\nSkyddsklass 3', linkLabel: 'Mer om datacenter', linkUrl: '/colocation' },
],
},
// ─── 24. fdQuiz ───────────────────────────────────────────────
{
blockType: 'fdQuiz',
heading: 'Vilken tjänst passar er?',
description: 'Svara på tre frågor — vi rekommenderar rätt produkt.',
triggerLabel: 'Starta quiz',
sectionBackground: 'gray',
anchorId: 'block-fdquiz',
outcomes: [
{
key: 'fiber',
title: 'Dedikerat fiber',
description: 'Er verksamhet kräver pålitlig, symmetrisk uppkoppling. Fiber Direkt levererar från 10 Gbit/s.',
ctaText: 'Se fiberalternativ',
ctaLink: '/fiber',
},
{
key: 'vdc',
title: 'Virtuellt datacenter',
description: 'Ni vill ersätta fysiska servrar med flexibla virtuella maskiner på svensk mark.',
ctaText: 'Utforska VPS',
ctaLink: '/virtuellt-datacenter',
},
{
key: 'colo',
title: 'Colocation',
description: 'Ni har egen hårdvara och behöver säkert utrymme med hög driftsäkerhet.',
ctaText: 'Se colocation',
ctaLink: '/colocation',
},
],
questions: [
{
question: 'Vad är er viktigaste utmaning just nu?',
options: [
{ label: 'Dålig eller instabil uppkoppling', outcomeKeys: 'fiber' },
{ label: 'Kostsam och svårskalad serverhårdvara', outcomeKeys: 'vdc' },
{ label: 'Serverrummet räcker inte till', outcomeKeys: 'colo' },
],
},
{
question: 'Hur hanterar ni er infrastruktur idag?',
options: [
{ label: 'Delad bredbandsuppkoppling', outcomeKeys: 'fiber' },
{ label: 'Egna fysiska servrar på kontoret', outcomeKeys: 'vdc,colo' },
{ label: 'Blandat moln och egna servrar', outcomeKeys: 'vdc,colo' },
],
},
{
question: 'Hur viktig är datasuveränitet för er?',
options: [
{ label: 'Kritisk — all data måste vara i Sverige', outcomeKeys: 'fiber,vdc,colo' },
{ label: 'Viktig men inte absolut krav', outcomeKeys: 'vdc,fiber' },
{ label: 'Vi fokuserar mer på pris och prestanda', outcomeKeys: 'vdc' },
],
},
],
},
// ─── 25. fdVideo (YouTube — no upload needed) ─────────────────
{
blockType: 'fdVideo',
heading: 'Fiber Direkt — så fungerar det',
description: 'En kort genomgång av hur vi levererar fiber, colocation och cloud.',
videoSource: 'youtube',
youtubeUrl: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',
aspectRatio: '16/9',
maxWidth: 'default',
sectionBackground: 'white',
textColor: 'auto',
anchorId: 'block-fdvideo',
},
// ─── 26. fdVpsCalculator ──────────────────────────────────────
{
blockType: 'fdVpsCalculator',
heading: 'Beräkna kostnaden för din VPS',
description: 'Välj resurser och se priset direkt.',
orderCtaText: 'Beställ',
orderCtaLink: '/kontakt?subject=vps-bestallning',
contactCtaText: 'Frågor? Kontakta oss',
contactCtaLink: '/kontakt',
sectionBackground: 'gray',
pricingCpuPerCore: 120,
pricingRamPerGb: 100,
pricingSsdPerGb: 4,
pricingHddPerGb: 1,
pricingWindowsLicense: 250,
showAdminFee: false,
anchorId: 'block-fdvpscalculator',
},
// ─── 27. fdServiceCalc ────────────────────────────────────────
{
blockType: 'fdServiceCalc',
heading: 'Beräkna er colocation-kostnad',
description: 'Välj rack-storlek och tilläggstjänster.',
summaryHeading: 'Kostnadsöversikt',
totalLabel: 'Totalt per månad',
totalSuffix: 'exkl. moms',
orderCtaText: 'Beställ',
orderCtaLink: '/kontakt',
contactCtaText: 'Frågor? Kontakta oss',
contactCtaLink: '/kontakt',
sectionBackground: 'white',
anchorId: 'block-fdservicecalc',
optionGroups: [
{
groupLabel: 'Rackstorlek',
options: [
{ label: 'Halvskåp (18U)', price: 3495 },
{ label: 'Helskåp (40U)', price: 5995 },
],
},
],
resources: [
{
label: 'Extra bandbredd',
unit: 'Gbit/s',
pricePerUnit: 500,
defaultValue: 0,
min: 0,
max: 10,
step: 1,
summaryTemplate: 'Extra bandbredd ({value} {unit})',
},
],
addons: [
{ label: 'Remote hands (10 tim/mån)', price: 1500, description: 'Fysisk assistans i datacenter på begäran.' },
{ label: 'KVM-åtkomst', price: 0, description: 'Ingår kostnadsfritt i helskåp.' },
],
fixedFees: [],
},
// ─── 28. fdCodeEmbed ──────────────────────────────────────────
{
blockType: 'fdCodeEmbed',
heading: 'Inbäddat formulär',
description: 'Exempel på fdCodeEmbed med iframe.',
embedType: 'iframe',
iframeSrc: 'https://example.com/embed-placeholder',
iframeTitle: 'Inbäddat formulär',
iframeHeight: '500px',
maxWidth: 'narrow',
sectionBackground: 'gray',
textColor: 'navy',
embedBackground: 'card',
anchorId: 'block-fdcodeembed',
},
// ─── 29. fdContact ────────────────────────────────────────────
{
blockType: 'fdContact',
heading: 'Kontakta oss',
anchorId: 'block-fdcontact',
contactMethods: [
{ label: 'Telefon: 08-123 456 78', link: 'tel:+4681234567' },
{ label: 'E-post: info@fiberdirekt.se', link: 'mailto:info@fiberdirekt.se' },
{ label: 'Adress: Stockholm Nord, Sverige', link: 'https://maps.google.com' },
],
},
// ─── 30. fdSpacer ─────────────────────────────────────────────
{
blockType: 'fdSpacer',
height: 'lg',
sectionBackground: 'white',
},
// ─── 31. fdCtaBanner (closing) ────────────────────────────────
{
blockType: 'fdCtaBanner',
heading: 'Redo att komma igång?',
subheading: 'Kontakta oss idag och få en offert anpassad för er verksamhet.',
ctaText: 'Kontakta oss',
ctaLink: '/kontakt',
sectionBackground: 'navy',
alignment: 'center',
size: 'large',
anchorId: 'block-closing-cta',
},
])
console.log('─'.repeat(60))
console.log('Done. 30 blocks seeded (+ closing CTA = 31 block instances).')
console.log()
console.log('Skipped blocks (require mandatory file uploads):')
console.log(' fdHeaderTextImage — image required')
console.log(' fdVideoHero — videoMp4 required')
console.log(' fdLocationsGrid — card images required')
console.log(' fdIconBar — icon items required')
console.log(' fdPartnersLogos — logo items required')
console.log(' fdContactForm — form relationship required')
}
seed().catch((err) => {
console.error('Seed failed:', err)
process.exit(1)
})