Files
NexStudio/src/data/home/footer.ts
Javaxman 7aff1abcfb Aggiunge newsletter custom con D1, double opt-in e invio campagne.
Attiva il form footer, API subscribe/confirm/unsubscribe e endpoint admin protetti, riusando Resend per le email.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 23:23:19 +02:00

179 lines
7.4 KiB
TypeScript
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.

import type { SupportedLocale } from './navigation';
/** Footer — griglia 4 colonne (link); newsletter in blocco unico sotto, allineata a sinistra */
const footerByLocale = {
it: {
brandName: 'NexStudio',
tagline: 'Ingegneria del software e IA per settori regolamentati.',
legalLine: 'P.IVA e note legali: da inserire.',
columnTitles: {
sections: 'Sezioni',
legal: 'Normative',
social: 'Reti sociali',
company: 'Azienda',
} as const,
homeNav: [
{ label: 'Prodotti', href: '/#prodotti' },
{ label: 'Servizi', href: '/#servizi' },
{ label: 'Stack', href: '/#stack' },
{ label: 'FAQ', href: '/#faq' },
] as const,
cookiePreferences: {
label: 'Impostazioni cookie',
hint: 'Preferenze di consenso sul tuo browser (non è un testo legale).',
} as const,
legalColumnNav: [
{ label: 'Condizioni duso', href: '/terms' },
{ label: 'Informativa cookie', href: '/cookies' },
{ label: 'Privacy', href: '/privacy' },
{ label: 'Diritti privacy (GDPR)', href: '/gdpr' },
] as const,
socialLinks: [
{ label: 'Facebook', href: '' },
{ label: 'LinkedIn', href: '' },
{ label: 'Twitter / X', href: '' },
{ label: 'GitHub', href: '' },
] as const,
companyNav: [
{ label: 'Chi siamo', href: '/about' },
{ label: 'Codice etico', href: '/codice-etico' },
{ label: 'Modello organizzativo', href: '/modello-organizzativo' },
{ label: 'Dove siamo', href: '/dove-siamo' },
] as const,
newsletter: {
title: 'Newsletter',
description: 'Aggiornamenti su prodotti e roadmap.',
placeholder: 'La tua email',
buttonLabel: 'Iscriviti',
actionUrl: '/api/newsletter/subscribe',
fieldName: 'email',
successRedirect: '/newsletter/grazie',
notifySubject: 'Nuova iscrizione newsletter — NexStudio',
},
labels: {
cookieTitle: 'Impostazioni cookie',
socialPlaceholderTitle: 'URL da configurare in footer.ts',
companyPlaceholderTitle: 'Collegamento in arrivo',
newsletterComingSoon:
'Iscrizione in arrivo: configura lendpoint nel progetto per attivare il modulo.',
},
},
en: {
brandName: 'NexStudio',
tagline: 'Software engineering and AI for regulated industries.',
legalLine: 'VAT number and legal notes: to be added.',
columnTitles: {
sections: 'Sections',
legal: 'Legal',
social: 'Social',
company: 'Company',
} as const,
homeNav: [
{ label: 'Products', href: '/#prodotti' },
{ label: 'Services', href: '/#servizi' },
{ label: 'Stack', href: '/#stack' },
{ label: 'FAQ', href: '/#faq' },
] as const,
cookiePreferences: {
label: 'Cookie settings',
hint: 'Consent preferences in your browser (this is not a legal document).',
} as const,
legalColumnNav: [
{ label: 'Terms of use', href: '/terms' },
{ label: 'Cookie policy', href: '/cookies' },
{ label: 'Privacy', href: '/privacy' },
{ label: 'Privacy rights (GDPR)', href: '/gdpr' },
] as const,
socialLinks: [
{ label: 'Facebook', href: '' },
{ label: 'LinkedIn', href: '' },
{ label: 'Twitter / X', href: '' },
{ label: 'GitHub', href: '' },
] as const,
companyNav: [
{ label: 'About us', href: '/about' },
{ label: 'Code of ethics', href: '/codice-etico' },
{ label: 'Organizational model', href: '/modello-organizzativo' },
{ label: 'Where we are', href: '/dove-siamo' },
] as const,
newsletter: {
title: 'Newsletter',
description: 'Updates on products and roadmap.',
placeholder: 'Your email',
buttonLabel: 'Subscribe',
actionUrl: '/api/newsletter/subscribe',
fieldName: 'email',
successRedirect: '/en/newsletter/grazie',
notifySubject: 'New newsletter signup — NexStudio',
},
labels: {
cookieTitle: 'Cookie settings',
socialPlaceholderTitle: 'URL to configure in footer.ts',
companyPlaceholderTitle: 'Coming soon',
newsletterComingSoon:
'Newsletter signups coming soon: configure the endpoint in the project to enable this form.',
},
},
th: {
brandName: 'NexStudio',
tagline: 'วิศวกรรมซอฟต์แวร์และ AI สำหรับอุตสาหกรรมที่มีข้อกำกับ',
legalLine: 'เลขประจำตัวผู้เสียภาษีและข้อมูลทางกฎหมาย: รอเพิ่มภายหลัง',
columnTitles: {
sections: 'ส่วนต่าง ๆ',
legal: 'กฎหมาย',
social: 'โซเชียล',
company: 'บริษัท',
} as const,
homeNav: [
{ label: 'ผลิตภัณฑ์', href: '/#prodotti' },
{ label: 'บริการ', href: '/#servizi' },
{ label: 'สแตก', href: '/#stack' },
{ label: 'คำถามที่พบบ่อย', href: '/#faq' },
] as const,
cookiePreferences: {
label: 'ตั้งค่าคุกกี้',
hint: 'การตั้งค่าความยินยอมในเบราว์เซอร์ของคุณ (ไม่ใช่เอกสารทางกฎหมาย)',
} as const,
legalColumnNav: [
{ label: 'เงื่อนไขการใช้งาน', href: '/terms' },
{ label: 'นโยบายคุกกี้', href: '/cookies' },
{ label: 'ความเป็นส่วนตัว', href: '/privacy' },
{ label: 'สิทธิความเป็นส่วนตัว (GDPR)', href: '/gdpr' },
] as const,
socialLinks: [
{ label: 'Facebook', href: '' },
{ label: 'LinkedIn', href: '' },
{ label: 'Twitter / X', href: '' },
{ label: 'GitHub', href: '' },
] as const,
companyNav: [
{ label: 'เกี่ยวกับเรา', href: '/about' },
{ label: 'จรรยาบรรณ', href: '/codice-etico' },
{ label: 'โมเดลองค์กร', href: '/modello-organizzativo' },
{ label: 'ที่ตั้ง', href: '/dove-siamo' },
] as const,
newsletter: {
title: 'จดหมายข่าว',
description: 'อัปเดตเกี่ยวกับผลิตภัณฑ์และโรดแมป',
placeholder: 'อีเมลของคุณ',
buttonLabel: 'สมัครรับข่าวสาร',
actionUrl: '/api/newsletter/subscribe',
fieldName: 'email',
successRedirect: '/th/newsletter/grazie',
notifySubject: 'มีผู้สมัครจดหมายข่าวใหม่ — NexStudio',
},
labels: {
cookieTitle: 'ตั้งค่าคุกกี้',
socialPlaceholderTitle: 'ต้องตั้งค่า URL ใน footer.ts',
companyPlaceholderTitle: 'กำลังจะเปิดใช้งาน',
newsletterComingSoon:
'ระบบสมัครจดหมายข่าวกำลังจะเปิดใช้งาน: ตั้งค่า endpoint ในโปรเจกต์เพื่อเปิดฟอร์มนี้',
},
},
} as const;
export const getFooter = (locale: SupportedLocale) => footerByLocale[locale];
/** Retro-compatibilità: fallback italiano. */
export const footer = footerByLocale.it;