Files

224 lines
18 KiB
TypeScript

export type CopySlot = {
id: string;
label: string;
value: string;
section: string;
hint?: string;
kind: 'inline' | 'multiline';
};
export type ImageSlot = {
id: string;
label: string;
src: string;
alt: string;
};
export type Testimonial = {
id: string;
text: string;
name: string;
role: string;
avatarSrc: string;
avatarAlt: string;
};
export type SiteContent = {
copy: Record<string, string>;
images: Record<string, ImageSlot>;
testimonials: Testimonial[];
seo: {
title: string;
description: string;
keywords: string;
ogImage: string;
primaryKeywords: string[];
geoRegion: string;
geoPlacename: string;
};
};
export const DEFAULT_SLOTS: CopySlot[] = [
{ id: 'nav.brand', section: 'Navbar', label: 'Brand name', kind: 'inline', value: 'Giampy Dog Service' },
{ id: 'nav.link.servizi', section: 'Navbar', label: 'Link — Servizi', kind: 'inline', value: 'Servizi' },
{ id: 'nav.link.chi_sono', section: 'Navbar', label: 'Link — Chi Sono', kind: 'inline', value: 'Chi Sono' },
{ id: 'nav.link.testimonianze', section: 'Navbar', label: 'Link — Testimonianze', kind: 'inline', value: 'Testimonianze' },
{ id: 'nav.link.dogwash', section: 'Navbar', label: 'Link — DogWash', kind: 'inline', value: 'DogWash' },
{ id: 'nav.cta', section: 'Navbar', label: 'CTA', kind: 'inline', value: 'Scrivimi' },
{ id: 'hero.kicker', section: 'Hero', label: 'Kicker', kind: 'inline', value: 'Con te dal 2018' },
{ id: 'hero.title_prefix', section: 'Hero', label: 'Title — first line', kind: 'inline', value: 'Tratto il tuo cane' },
{ id: 'hero.title_suffix', section: 'Hero', label: 'Title — second line (before emphasis)', kind: 'inline', value: 'come se fosse' },
{ id: 'hero.title_em', section: 'Hero', label: 'Title — emphasis', kind: 'inline', value: 'il mio.' },
{ id: 'hero.desc', section: 'Hero', label: 'Description', kind: 'multiline', value: 'Sono Giampiero, dogsitter certificato dal CONI. Mi occupo personalmente di ogni cane che mi affidi — niente gabbie, niente solitudine, solo tanto amore vero.' },
{ id: 'hero.cta_primary', section: 'Hero', label: 'Primary CTA', kind: 'inline', value: 'Scopri i Servizi' },
{ id: 'hero.cta_outline', section: 'Hero', label: 'Outline CTA', kind: 'inline', value: 'Scrivimi ora' },
{ id: 'hero.badge_label', section: 'Hero', label: 'Badge label', kind: 'inline', value: '5.0 Recensioni' },
{ id: 'hero.badge_text', section: 'Hero', label: 'Badge text', kind: 'inline', value: 'Il punto di riferimento per i proprietari di cani a Sassari.' },
{ id: 'hero.stat1_num', section: 'Hero', label: 'Stat 1 — value', kind: 'inline', value: '130+' },
{ id: 'hero.stat1_label', section: 'Hero', label: 'Stat 1 — label', kind: 'inline', value: 'Clienti Felici' },
{ id: 'hero.stat2_num', section: 'Hero', label: 'Stat 2 — value', kind: 'inline', value: '2018' },
{ id: 'hero.stat2_label', section: 'Hero', label: 'Stat 2 — label', kind: 'inline', value: 'Anno di inizio' },
{ id: 'hero.stat3_num', section: 'Hero', label: 'Stat 3 — value', kind: 'inline', value: '5.0★' },
{ id: 'hero.stat3_label', section: 'Hero', label: 'Stat 3 — label', kind: 'inline', value: 'Recensioni' },
{ id: 'why.kicker', section: 'Why', label: 'Kicker', kind: 'inline', value: 'Perché scegliere me' },
{ id: 'why.title_1', section: 'Why', label: 'Title — line 1', kind: 'inline', value: 'Qualcosa di diverso,' },
{ id: 'why.title_2', section: 'Why', label: 'Title — line 2', kind: 'inline', value: 'lo senti anche tu.' },
{ id: 'why.sub', section: 'Why', label: 'Subtitle', kind: 'inline', value: 'Non ho una squadra — ho me stesso, presente ogni giorno.' },
{ id: 'why.card1_title', section: 'Why', label: 'Card 1 — title', kind: 'inline', value: 'Dal 2018, ogni giorno' },
{ id: 'why.card1_text', section: 'Why', label: 'Card 1 — text', kind: 'multiline', value: 'Ho iniziato per passione e non mi sono più fermato. Anni di esperienza vera, sul campo, costruita cane dopo cane.' },
{ id: 'why.card2_title', section: 'Why', label: 'Card 2 — title', kind: 'inline', value: 'Un rapporto vero' },
{ id: 'why.card2_text', section: 'Why', label: 'Card 2 — text', kind: 'multiline', value: 'Con te e con il tuo cane costruisco un legame di fiducia. Non sei un cliente, sei parte della mia famiglia pelosa.' },
{ id: 'why.card3_title', section: 'Why', label: 'Card 3 — title', kind: 'inline', value: 'Preparato, non improvvisato' },
{ id: 'why.card3_text', section: 'Why', label: 'Card 3 — text', kind: 'multiline', value: 'Certificazione CONI e formazione continua. Porto metodo e competenza, con la leggerezza di chi ama davvero quello che fa.' },
{ id: 'why.card4_title', section: 'Why', label: 'Card 4 — title', kind: 'inline', value: 'Zero gabbie, promesso' },
{ id: 'why.card4_text', section: 'Why', label: 'Card 4 — text', kind: 'multiline', value: 'Non le uso, non le tollero. Libertà e comfort sono la base di tutto quello che faccio — sempre.' },
{ id: 'services.kicker', section: 'Services', label: 'Kicker', kind: 'inline', value: 'Cosa faccio per te' },
{ id: 'services.title', section: 'Services', label: 'Title', kind: 'inline', value: 'I miei servizi' },
{ id: 'services.sub', section: 'Services', label: 'Subtitle', kind: 'inline', value: 'Ho pensato a tutto io — tu pensa solo a coccolarlo.' },
{ id: 'services.card1_tag', section: 'Services', label: 'Card 1 — tag', kind: 'inline', value: 'Movimento & Gioia' },
{ id: 'services.card1_title', section: 'Services', label: 'Card 1 — title', kind: 'inline', value: 'Dogwalking' },
{ id: 'services.card1_text', section: 'Services', label: 'Card 1 — text', kind: 'multiline', value: "Passeggiate esplorative nei sentieri più belli di Sassari. Ogni uscita è un'avventura pensata per stimolare mente e corpo del tuo cane." },
{ id: 'services.card1_cta', section: 'Services', label: 'Card 1 — CTA', kind: 'inline', value: 'Prenota una passeggiata' },
{ id: 'services.card2_tag', section: 'Services', label: 'Card 2 — tag', kind: 'inline', value: 'Come a casa' },
{ id: 'services.card2_title', section: 'Services', label: 'Card 2 — title', kind: 'inline', value: 'Home Boarding' },
{ id: 'services.card2_text', section: 'Services', label: 'Card 2 — text', kind: 'multiline', value: 'Quando sei via, il tuo cane sta con me — in appartamento, libero, coccolato. Ogni giorno ti mando foto e aggiornamenti.' },
{ id: 'services.card2_cta', section: 'Services', label: 'Card 2 — CTA', kind: 'inline', value: 'Chiedi disponibilità' },
{ id: 'services.card3_tag', section: 'Services', label: 'Card 3 — tag', kind: 'inline', value: 'Giorni speciali' },
{ id: 'services.card3_title', section: 'Services', label: 'Card 3 — title', kind: 'inline', value: 'Wedding Dogsitter' },
{ id: 'services.card3_text', section: 'Services', label: 'Card 3 — text', kind: 'multiline', value: 'Il tuo migliore amico nel tuo giorno più bello. Me ne occupo io, così tu puoi goderti ogni momento senza pensieri.' },
{ id: 'services.card3_cta', section: 'Services', label: 'Card 3 — CTA', kind: 'inline', value: 'Parliamo del tuo evento' },
{ id: 'about.quote', section: 'About', label: 'Quote', kind: 'multiline', value: '"Rusty non è solo un cane, è il maestro che mi indica la strada."' },
{ id: 'about.cite', section: 'About', label: 'Cite', kind: 'inline', value: '— Giampiero Scaglione' },
{ id: 'about.kicker', section: 'About', label: 'Kicker', kind: 'inline', value: 'Chi sono' },
{ id: 'about.title_1', section: 'About', label: 'Title — line 1', kind: 'inline', value: 'Da una necessità' },
{ id: 'about.title_2', section: 'About', label: 'Title — line 2', kind: 'inline', value: 'del cuore, a una' },
{ id: 'about.title_3', section: 'About', label: 'Title — line 3', kind: 'inline', value: 'missione di vita.' },
{ id: 'about.body_1', section: 'About', label: 'Body — paragraph 1', kind: 'multiline', value: 'Tutto è partito da Rusty — il mitico Rustone. Quello che era iniziato come un lavoretto si è trasformato in una vocazione. Ho capito che non volevo fare altro nella vita.' },
{ id: 'about.body_2', section: 'About', label: 'Body — paragraph 2', kind: 'multiline', value: "Ho preso la certificazione CONI, ho camminato il Cammino di Santiago con il mio cane, e ogni giorno continuo a imparare — dai cani, dai loro umani, dalla vita all'aperto." },
{ id: 'about.mile1_title', section: 'About', label: 'Milestone 1 — title', kind: 'inline', value: 'Cammino di Santiago' },
{ id: 'about.mile1_text', section: 'About', label: 'Milestone 1 — text', kind: 'inline', value: 'Percorso a piedi con il mio cane. La prova più bella di tutto.' },
{ id: 'about.mile2_title', section: 'About', label: 'Milestone 2 — title', kind: 'inline', value: 'Certificazione CONI' },
{ id: 'about.mile2_text', section: 'About', label: 'Milestone 2 — text', kind: 'inline', value: "Formazione d'eccellenza in ambito cinofilo. Studio ancora." },
{ id: 'media.label', section: 'Media', label: 'Label', kind: 'inline', value: 'Riconoscimenti & Media' },
{ id: 'media.logo_1', section: 'Media', label: 'Logo 1', kind: 'inline', value: "L'Unione Sarda" },
{ id: 'media.logo_2', section: 'Media', label: 'Logo 2', kind: 'inline', value: 'Sardegna Reporter' },
{ id: 'media.logo_3', section: 'Media', label: 'Logo 3', kind: 'inline', value: 'Radio Super Sound' },
{ id: 'media.logo_4', section: 'Media', label: 'Logo 4', kind: 'inline', value: 'Qualifica CONI' },
{ id: 'media.logo_5', section: 'Media', label: 'Logo 5', kind: 'inline', value: 'Corsa in Rosa' },
{ id: 'media.logo_6', section: 'Media', label: 'Logo 6', kind: 'inline', value: 'Giornata del Super Cane' },
{ id: 'dogwash.tag', section: 'DogWash', label: 'Tag', kind: 'inline', value: 'Novità in Sardegna' },
{ id: 'dogwash.title', section: 'DogWash', label: 'Title', kind: 'inline', value: 'DogWash Sardegna' },
{ id: 'dogwash.desc', section: 'DogWash', label: 'Description', kind: 'multiline', value: 'Ho avuto un sogno: portare le colonnine di lavaggio automatico in tutta la Sardegna. Grazie alla fiducia della community, quel sogno sta diventando realtà, una colonnina alla volta.' },
{ id: 'dogwash.cta', section: 'DogWash', label: 'CTA', kind: 'inline', value: 'Trova la postazione più vicina' },
{ id: 'dogwash.community', section: 'DogWash', label: 'Community note', kind: 'inline', value: 'Un progetto nato dal cuore di Sassari.' },
{ id: 'testi.stats1_num', section: 'Testimonials', label: 'Stat 1 — value', kind: 'inline', value: '130+' },
{ id: 'testi.stats1_label', section: 'Testimonials', label: 'Stat 1 — label', kind: 'inline', value: 'Clienti Felici' },
{ id: 'testi.stats2_num', section: 'Testimonials', label: 'Stat 2 — value', kind: 'inline', value: '2018' },
{ id: 'testi.stats2_label', section: 'Testimonials', label: 'Stat 2 — label', kind: 'inline', value: 'Anno di inizio' },
{ id: 'testi.kicker', section: 'Testimonials', label: 'Kicker', kind: 'inline', value: 'Cosa dicono di me' },
{ id: 'testi.title', section: 'Testimonials', label: 'Title', kind: 'inline', value: 'I miei ospiti parlano.' },
{ id: 'testi.sub', section: 'Testimonials', label: 'Subtitle', kind: 'inline', value: 'Non solo clienti — una vera famiglia pelosa.' },
{ id: 'testo.btn', section: 'Testimonials', label: 'Button', kind: 'inline', value: 'TEST RECENSIONI' },
{ id: 'contact.headline', section: 'Contact', label: 'Headline', kind: 'inline', value: 'Affida il tuo cane a chi lo vive davvero.' },
{ id: 'contact.form_title', section: 'Contact', label: 'Form — title', kind: 'inline', value: 'Scrivimi ora' },
{ id: 'contact.form_sub', section: 'Contact', label: 'Form — subtitle', kind: 'inline', value: 'Hai domande o vuoi prenotare? Ti rispondo di persona entro 24 ore.' },
{ id: 'contact.label_name', section: 'Contact', label: 'Label — Name', kind: 'inline', value: 'Il tuo Nome' },
{ id: 'contact.placeholder_name', section: 'Contact', label: 'Placeholder — Name', kind: 'inline', value: 'Nome e Cognome' },
{ id: 'contact.label_dog', section: 'Contact', label: 'Label — Dog', kind: 'inline', value: 'Come si chiama il tuo cane?' },
{ id: 'contact.placeholder_dog', section: 'Contact', label: 'Placeholder — Dog', kind: 'inline', value: 'Il nome del peloso...' },
{ id: 'contact.label_phone', section: 'Contact', label: 'Label — Phone', kind: 'inline', value: 'Numero di telefono' },
{ id: 'contact.placeholder_phone', section: 'Contact', label: 'Placeholder — Phone', kind: 'inline', value: '+39 ...' },
{ id: 'contact.label_msg', section: 'Contact', label: 'Label — Message', kind: 'inline', value: 'Il tuo messaggio' },
{ id: 'contact.placeholder_msg', section: 'Contact', label: 'Placeholder — Message', kind: 'inline', value: 'Raccontami di te e del tuo cane...' },
{ id: 'contact.submit', section: 'Contact', label: 'Submit button', kind: 'inline', value: 'Invia il messaggio' },
{ id: 'contact.success', section: 'Contact', label: 'Success message', kind: 'inline', value: 'Perfetto! Ti scrivo presto.' },
{ id: 'contact.info_title', section: 'Contact', label: 'Info title', kind: 'inline', value: 'Contatti rapidi' },
{ id: 'contact.phone_label', section: 'Contact', label: 'Phone label', kind: 'inline', value: 'Chiamami' },
{ id: 'contact.phone_value', section: 'Contact', label: 'Phone value', kind: 'inline', value: '+39 377 283 1385' },
{ id: 'contact.email_label', section: 'Contact', label: 'Email label', kind: 'inline', value: 'Email' },
{ id: 'contact.email_value', section: 'Contact', label: 'Email value', kind: 'inline', value: 'giampy.dogsitter.sassari@gmail.com' },
{ id: 'contact.wa_label', section: 'Contact', label: 'WhatsApp label', kind: 'inline', value: 'WhatsApp' },
{ id: 'contact.wa_value', section: 'Contact', label: 'WhatsApp value', kind: 'inline', value: 'Chatta direttamente con me' },
{ id: 'footer.tagline', section: 'Footer', label: 'Tagline', kind: 'multiline', value: 'Mi prendo cura dei tuoi amici come fossero i miei. Dal 2018, ogni giorno, con passione.' },
{ id: 'footer.col1_title', section: 'Footer', label: 'Column 1 — title', kind: 'inline', value: 'Servizi' },
{ id: 'footer.col1_l1', section: 'Footer', label: 'Column 1 — link 1', kind: 'inline', value: 'Dogwalking' },
{ id: 'footer.col1_l2', section: 'Footer', label: 'Column 1 — link 2', kind: 'inline', value: 'Home Boarding' },
{ id: 'footer.col1_l3', section: 'Footer', label: 'Column 1 — link 3', kind: 'inline', value: 'Wedding Dogsitter' },
{ id: 'footer.col1_l4', section: 'Footer', label: 'Column 1 — link 4', kind: 'inline', value: 'DogWash' },
{ id: 'footer.col2_title', section: 'Footer', label: 'Column 2 — title', kind: 'inline', value: 'Link Utili' },
{ id: 'footer.col2_l1', section: 'Footer', label: 'Column 2 — link 1', kind: 'inline', value: 'Chi Sono' },
{ id: 'footer.col2_l2', section: 'Footer', label: 'Column 2 — link 2', kind: 'inline', value: 'Testimonianze' },
{ id: 'footer.col2_l3', section: 'Footer', label: 'Column 2 — link 3', kind: 'inline', value: 'Privacy Policy' },
{ id: 'footer.col2_l4', section: 'Footer', label: 'Column 2 — link 3', kind: 'inline', value: 'Cookie Policy' },
{ id: 'footer.copyright', section: 'Footer', label: 'Copyright', kind: 'inline', value: '© 2026 Giampy Dog Service — Sassari, Sardegna' },
{ id: 'footer.powered', section: 'Footer', label: 'Powered by', kind: 'inline', value: 'Powered by' }
];
export const DEFAULT_IMAGES: Record<string, ImageSlot> = {
favicon: { id: 'favicon', label: 'Favicon (icona browser)', src: '/img/logo.png', alt: 'Giampy Dog Service' },
logo: { id: 'logo', label: 'Brand logo', src: '/img/logo.png', alt: 'Giampy Dog Service Logo' },
hero: { id: 'hero', label: 'Hero photo', src: '/img/hero-image.jpg', alt: 'Giampy con un cane' },
chi_sono: { id: 'chi_sono', label: 'About photo', src: '/img/chi-sono.jpg', alt: 'Giampy passeggia con un cane' },
dogwash: { id: 'dogwash', label: 'DogWash visual', src: '/img/colonnina.png', alt: 'DogWash Machine' },
cima_logo: { id: 'cima_logo', label: 'Cima Progetti logo', src: '/img/cima-logo.svg', alt: 'Cima Progetti' }
};
export const DEFAULT_TESTIMONIALS: Testimonial[] = [
{
id: 't_marta',
text: "Giampy è stato un bravissimo compagno di passeggiate per il nostro Baki, era la prima volta che usciva di casa con qualcuno che non fosse di famiglia: una prova superata con successo! Giampy è stato super disponibile e professionale, lo consigliamo certamente e usufruiremo dei suoi servizi anche in futuro!!! 🥰",
name: 'Marta S.',
role: 'Mamma di Baki',
avatarSrc: '/img/logo.png',
avatarAlt: 'Marta S.'
},
{
id: 't_luca',
text: 'Gentilissimo e disponibilissimo, professionale, paziente e attento alle richieste del cliente. Consigliatissimo',
name: 'Luca & Elena',
role: 'Genitori di Luna',
avatarSrc: '/img/avatar-2.png',
avatarAlt: 'Luca & Elena'
},
{
id: 't_sara',
text: 'Ho trovato il suo contatto tramite google, mi serviva un dog sitter per delle ore, ho contattato Giampy che da subito si è reso cordiale e disponibile. Brando si è trovato benissimo con lui ed anche noi. lo straconsiglio. Grazie mille ed un saluto da Brando. 🐾',
name: 'Sara P.',
role: 'Mamma di Brando',
avatarSrc: '/img/avatar-3.png',
avatarAlt: 'Sara P.'
}
];
export const DEFAULT_SEO = {
title: 'Giampy Dog Service — Il tuo cane in buone mani',
description:
'Educatore cinofilo certificato CONI a Sassari. Dogwalking, home boarding e wedding dogsitter. Zero gabbie, solo amore vero dal 2018.',
keywords:
'dogsitter sassari, dogwalker sardegna, educatore cinofilo, home boarding cani, wedding dogsitter, dog wash sardegna',
ogImage: '/img/hero-image.jpg',
primaryKeywords: ['dogsitter sassari', 'dogwalker sardegna', 'educatore cinofilo coni'],
geoRegion: 'IT-SS',
geoPlacename: 'Sassari, Sardegna'
};
export function buildDefaultContent(): SiteContent {
const copy: Record<string, string> = {};
for (const s of DEFAULT_SLOTS) copy[s.id] = s.value;
return {
copy,
images: { ...DEFAULT_IMAGES },
testimonials: DEFAULT_TESTIMONIALS.map((t) => ({ ...t })),
seo: { ...DEFAULT_SEO }
};
}