Initial commit: sito NexStudio (Astro) con Cloudflare, CMS cookie e contenuti legali

- Home: hero, prodotti, servizi, stack, FAQ, CTA con form contatti inline (glossy) e particelle
- Header nero, menu con scroll-spy e alone su voce attiva, CTA Chattiamo (pre-chat)
- Pagine: privacy, cookie, GDPR, terms, about, codice etico, modello organizzativo, dove siamo, news
- Cookie consent first-party, chat gate, stampe-friendly su SubpageLayout
- Footer: Sezioni con Contattaci, Azienda con Dove siamo senza link per ora
- .gitignore: aggiunto .wrangler/ per stato locale Cloudflare

Made-with: Cursor
This commit is contained in:
Javaxman
2026-04-22 13:07:40 +02:00
commit 16c380dfda
64 changed files with 25028 additions and 0 deletions

57
src/data/home/chat.ts Normal file
View File

@ -0,0 +1,57 @@
/**
* Chat live: prima identificazione (email → link/codice), poi sessione.
*
* `entryUrl`: dove aprire la chat dopo laccesso (es. `/#contatti`, widget https, wa.me).
* `prechat`: invio richiesta con Formspree (`actionUrl`) o `mailto:` se lURL è vuoto.
* `prechat.openChatAfterSubmit`: se `true`, dopo invio riuscito apre subito `entryUrl` (es. prova interna);
* con flusso token via email lasciare `false` e usare `successMessage`.
*/
/** Destinazione della chat dopo identificazione / click su «Entra» */
const entryUrl = '/#contatti';
// Esempio WhatsApp: `https://wa.me/TUO_NUMERO?text=` + encodeURIComponent('Ciao NexStudio...');
export const chat = {
entryUrl,
/** Nuova scheda solo per link esterni (wa.me, widget, ecc.) */
openInNewTab: entryUrl.startsWith('http'),
linkTitle:
'Accesso alla chat NexStudio: stato canale, email di verifica e assistenza in più lingue.',
/**
* Cosa vede lutente **prima** di inserire email: chi risponde (umano / bot / entrambi).
* Aggiorna i testi in base agli orari effettivi del team.
*/
availability: {
badge: 'Operatore umano in orario · chatbot sempre attivo',
body:
'In orario lavorativo un operatore NexStudio può intervenire in chat; allingresso il chatbot può raccogliere il contesto iniziale e smistare la richiesta. Fuori orario la conversazione può proseguire con il solo chatbot fino al rientro del team. Lo stato effettivo è indicato qui sopra prima di procedere.',
},
prechat: {
title: 'Prima della chat',
intro:
'Per evitare attese inutili chiediamo lindirizzo email a cui inviarti un link o un codice monouso per aprire la sessione in modo sicuro. Dopo la verifica potrai usare la chat dal canale che ti indicheremo.',
nameLabel: 'Nome (facoltativo)',
emailLabel: 'Email',
submitLabel: 'Richiedi accesso alla chat',
/** Visibile dopo linvio riuscito: utile se il link nella mail punta allo stesso `entryUrl` */
enterChatLabel: 'Ho ricevuto il messaggio — apri la chat',
closeLabel: 'Chiudi',
successMessage:
'Controlla la posta in arrivo: ti abbiamo inviato le istruzioni (link o codice) per entrare in chat. Se non vedi nulla, controlla anche lo spam.',
/** Formspree dedicato alla richiesta accesso chat — vuoto = prova `mailto` */
actionUrl: '',
/** Se `actionUrl` è vuoto */
mailto: '',
notifySubject: 'Richiesta accesso chat — sito NexStudio',
successRedirect: '',
fieldName: 'name',
fieldEmail: 'email',
/**
* Dopo POST Formspree riuscito: apri subito `entryUrl` (es. test con pagina contatti).
* Con invio token via email da backend: `false`.
*/
openChatAfterSubmit: false,
},
} as const;