feat(website): book-a-demo & status pages, expand roadmap/contact

- /demo: book-a-demo page with a what-to-expect column + a form that
  composes a prefilled email to info@dezky.eu (interim, no backend); built
  to swap for a self-hosted scheduler later. Wire every "Book a demo" CTA
  (nav, hero, pricing, the previously-dead final-CTA button, and the
  contact/partners/migration/coming-soon CTAs) to /demo.
- /status: manually-maintained system-status page (overall banner,
  per-service rows, incident history). Live modules operational; Video/Chat
  marked coming soon.
- Roadmap: expand the board (5 items/column) + a "the bigger picture"
  themes grid + a "suggest a feature" CTA + a directional-timelines note.
- Contact: purpose-specific channels (info@ / legal@ / privacy@), a
  response-time note, and a company + "see it live" demo block.
- Drop /status from the [slug].vue stub map; tidy now-unused imports.
This commit is contained in:
Ronni Baslund
2026-06-06 19:19:19 +02:00
parent 3347fa9265
commit d2096eb847
13 changed files with 427 additions and 48 deletions
+130 -8
View File
@@ -167,19 +167,61 @@ export const COPY = {
title: 'Lad os tale sammen.',
intro: 'Spørgsmål om migration, priser eller whitelabel? Skriv til os — vi svarer på dansk og engelsk.',
emailLabel: 'E-mail',
email: 'kontakt@dezky.eu',
email: 'info@dezky.eu',
addressLabel: 'Adresse',
cvrLabel: 'CVR',
responseNote: 'Vi svarer typisk inden for én arbejdsdag — på dansk eller engelsk.',
channels: [
['Generelt & salg', 'info@dezky.eu', 'Spørgsmål, demoer, priser og migration.'],
['Juridisk', 'legal@dezky.eu', 'Servicevilkår, SLA og Enterprise-aftaler.'],
['Databeskyttelse', 'privacy@dezky.eu', 'Privatliv, databehandleraftale og dataanmodninger.'],
] as [string, string, string][],
demoHeading: 'Se dezky live.',
demoBody: 'Book en kort gennemgang, så viser vi suiten og svarer på dine spørgsmål — helt uforpligtende.',
},
demo: {
label: 'book en demo',
title: 'Se dezky i aktion.',
intro: 'En kort, konkret gennemgang af suiten — på dansk eller engelsk. Udfyld formularen, så vender vi tilbage med et par tider.',
expectHeading: 'Hvad du kan forvente',
expect: [
'30 minutter — ingen slides, intet salgspres.',
'Vi viser modulerne live på rigtige data.',
'Et reelt pristilbud til jeres størrelse.',
'Svar på migration, sikkerhed og whitelabel.',
] as string[],
formHeading: 'Book din demo',
nameLabel: 'Navn', namePh: 'Dit navn',
emailLabel: 'Arbejds-e-mail', emailPh: 'dig@virksomhed.dk',
companyLabel: 'Virksomhed', companyPh: 'Virksomhedens navn',
teamLabel: 'Antal brugere', teamPh: 'Vælg…',
teamSizes: ['110', '1150', '51200', '200+'] as string[],
messageLabel: 'Besked (valgfrit)', messagePh: 'Hvad vil I gerne se?',
submit: 'Book en demo',
note: 'Vi vender tilbage inden for én arbejdsdag for at aftale et tidspunkt. Din henvendelse sendes til info@dezky.eu.',
},
roadmap: {
label: 'roadmap',
title: 'Hvor vi er på vej hen.',
intro: 'Vi udvikler i det åbne. Her er, hvad der er live, hvad der er på vej, og hvad vi planlægger.',
columns: [
['Live nu', ['Mail, kalender & kontakter', 'Filer & drev', 'Single sign-on & brugerstyring']],
['Næste', ['Videomøder i browseren', 'Team chat med tråde', 'Mobil-apps til iOS & Android']],
['Senere', ['Kundekontrollerede nøgler (BYOK)', 'Avanceret compliance-rapportering', 'Flere EU-regioner']],
['Live nu', ['Mail, kalender & kontakter', 'Filer & drev', 'Single sign-on & brugerstyring', 'Office-redigering i browseren', 'Admin-konsol & domæneopsætning']],
['Næste', ['Videomøder i browseren', 'Team chat med tråde', 'Mobil-apps til iOS & Android', 'Delte teamdrev & rettigheder', 'Migrationsværktøj fra Microsoft 365']],
['Senere', ['Kundekontrollerede nøgler (BYOK)', 'Avanceret compliance-rapportering', 'Flere EU-regioner', 'Whitelabel-portal til partnere', 'Offentlige status- & hændelses-API\'er']],
],
note: 'Tidslinjer er retningsgivende — ikke løfter. Vi prioriterer ud fra sikkerhed, kundebehov og hvad der gør suiten mere sammenhængende.',
themesLabel: 'temaer',
themesHeading: 'De store linjer.',
themesLede: 'Uanset rækkefølgen i kolonnerne er det her, vi satser på.',
themes: [
['Suverænitet som standard', 'Alt hostet i EU, ingen amerikansk afhængighed. Vi udvider med flere EU-regioner og endnu skarpere datakontrol.'],
['Ét login, alle værktøjer', 'Vi syr modulerne tættere sammen, så det føles som én arbejdsplads — ikke fem apps med samme farve.'],
['Åben og portabel', 'Åbne standarder, fuld eksport og flere migrationsværktøjer. Det skal være lige så let at forlade os som at komme til.'],
['Bygget til partnere', 'Dybere whitelabel og selvbetjente værktøjer til forhandlere, så partnere kan drive deres eget brand på dezky.'],
] as [string, string][],
ctaHeading: 'Mangler du noget på listen?',
ctaBody: 'Vores roadmap formes af de virksomheder, der bruger dezky. Fortæl os, hvad der ville gøre størst forskel for jer.',
ctaButton: 'Foreslå en funktion',
},
changelog: {
label: 'changelog',
@@ -407,6 +449,25 @@ export const COPY = {
contactHeading: 'Kontakt',
contactBody: 'Spørgsmål om cookies eller databeskyttelse: privacy@dezky.eu.',
},
status: {
label: 'status',
title: 'Systemstatus',
intro: 'Aktuel status for dezkys tjenester. Vi opdaterer siden ved planlagt vedligehold og under hændelser.',
overallOk: 'Alle systemer kører',
servicesHeading: 'Tjenester',
statusLabels: { operational: 'Operationel', planned: 'På vej', degraded: 'Forringet ydelse', down: 'Nede' } as Record<string, string>,
services: [
['E-mail', 'operational'],
['Drev', 'operational'],
['Kalender', 'operational'],
['Login / SSO', 'operational'],
['Platform & API', 'operational'],
['Videomøder', 'planned'],
['Chat', 'planned'],
] as [string, string][],
incidentsHeading: 'Hændelseshistorik',
noIncidents: 'Ingen hændelser registreret de seneste 90 dage.',
},
stubs: {
customers: 'Kunder',
careers: 'Karriere',
@@ -594,19 +655,61 @@ export const COPY = {
title: 'Let\'s talk.',
intro: 'Questions about migration, pricing or whitelabel? Drop us a line — we reply in Danish and English.',
emailLabel: 'Email',
email: 'kontakt@dezky.eu',
email: 'info@dezky.eu',
addressLabel: 'Address',
cvrLabel: 'Company reg.',
responseNote: 'We usually reply within one business day — in Danish or English.',
channels: [
['General & sales', 'info@dezky.eu', 'Questions, demos, pricing and migration.'],
['Legal', 'legal@dezky.eu', 'Terms of service, SLA and Enterprise agreements.'],
['Data protection', 'privacy@dezky.eu', 'Privacy, the DPA and data requests.'],
] as [string, string, string][],
demoHeading: 'See dezky live.',
demoBody: 'Book a short walkthrough — we\'ll show you the suite and answer your questions, no commitment.',
},
demo: {
label: 'book a demo',
title: 'See dezky in action.',
intro: 'A short, concrete walkthrough of the suite — in Danish or English. Fill in the form and we\'ll come back with a few times.',
expectHeading: 'What to expect',
expect: [
'30 minutes — no slides, no sales pressure.',
'We show the modules live on real data.',
'A real price quote for your size.',
'Answers on migration, security and whitelabel.',
] as string[],
formHeading: 'Book your demo',
nameLabel: 'Name', namePh: 'Your name',
emailLabel: 'Work email', emailPh: 'you@company.com',
companyLabel: 'Company', companyPh: 'Company name',
teamLabel: 'Number of users', teamPh: 'Select…',
teamSizes: ['110', '1150', '51200', '200+'] as string[],
messageLabel: 'Message (optional)', messagePh: 'What would you like to see?',
submit: 'Book a demo',
note: 'We\'ll get back within one business day to arrange a time. Your request is sent to info@dezky.eu.',
},
roadmap: {
label: 'roadmap',
title: 'Where we\'re headed.',
intro: 'We build in the open. Here\'s what\'s live, what\'s next, and what we\'re planning.',
columns: [
['Live now', ['Mail, calendar & contacts', 'Files & drive', 'Single sign-on & user management']],
['Next', ['Video meetings in the browser', 'Team chat with threads', 'Mobile apps for iOS & Android']],
['Later', ['Customer-held keys (BYOK)', 'Advanced compliance reporting', 'More EU regions']],
['Live now', ['Mail, calendar & contacts', 'Files & drive', 'Single sign-on & user management', 'Office editing in the browser', 'Admin console & domain setup']],
['Next', ['Video meetings in the browser', 'Team chat with threads', 'Mobile apps for iOS & Android', 'Shared team drives & permissions', 'Microsoft 365 migration tooling']],
['Later', ['Customer-held keys (BYOK)', 'Advanced compliance reporting', 'More EU regions', 'White-label partner portal', 'Public status & incident APIs']],
],
note: 'Timelines are directional — not promises. We prioritise by security, customer needs, and what makes the suite more cohesive.',
themesLabel: 'themes',
themesHeading: 'The bigger picture.',
themesLede: 'Whatever the column order, these are the bets we\'re making.',
themes: [
['Sovereignty by default', 'Everything EU-hosted, no American dependency. We\'re expanding to more EU regions and even tighter data control.'],
['One login, every tool', 'We\'re stitching the modules closer together so it feels like one workplace — not five apps in the same colour.'],
['Open and portable', 'Open standards, full export and more migration tooling. Leaving us should be as easy as joining.'],
['Built for partners', 'Deeper white-label and self-serve reseller tooling, so partners can run their own brand on dezky.'],
] as [string, string][],
ctaHeading: 'Missing something from the list?',
ctaBody: 'Our roadmap is shaped by the businesses using dezky. Tell us what would make the biggest difference for you.',
ctaButton: 'Suggest a feature',
},
changelog: {
label: 'changelog',
@@ -834,6 +937,25 @@ export const COPY = {
contactHeading: 'Contact',
contactBody: 'Questions about cookies or data protection: privacy@dezky.eu.',
},
status: {
label: 'status',
title: 'System status',
intro: 'Current status of dezky\'s services. We update this page during planned maintenance and incidents.',
overallOk: 'All systems operational',
servicesHeading: 'Services',
statusLabels: { operational: 'Operational', planned: 'Coming soon', degraded: 'Degraded', down: 'Down' } as Record<string, string>,
services: [
['Email', 'operational'],
['Drive', 'operational'],
['Calendar', 'operational'],
['Login / SSO', 'operational'],
['Platform & API', 'operational'],
['Video meetings', 'planned'],
['Chat', 'planned'],
] as [string, string][],
incidentsHeading: 'Incident history',
noIncidents: 'No incidents reported in the last 90 days.',
},
stubs: {
customers: 'Customers',
careers: 'Careers',