import React, { useState, useMemo } from 'react';
import {
Watch,
Gem,
PenTool,
MapPin,
Phone,
Instagram,
Facebook,
ShieldCheck,
Clock,
Search,
SlidersHorizontal,
Plus,
Sparkles,
CheckCircle2,
Eye,
Trash2,
Edit3,
X,
ExternalLink,
MessageCircle,
Award,
Lock,
Unlock,
ChevronRight,
Upload,
Calendar,
Package,
Tag,
RefreshCw,
ArrowUpRight,
Star,
HelpCircle,
TrendingUp,
BadgeCheck,
Navigation
} from 'lucide-react';
// --- COMPONENTE LOGO UFFICIALE AUREA ORO E PREZIOSI (FEDELE ALLE IMMAGINI FORNITE) ---
const AureaOfficialLogo = ({ theme = 'dark', size = 'normal', className = '' }) => {
const isDark = theme === 'dark';
const textGray = isDark ? '#7A7A7A' : '#4A4A4A';
const watchStroke = isDark ? '#D9A343' : '#4A4A4A';
const goldColor = '#D9A343';
const isCompact = size === 'compact';
const isLarge = size === 'large';
return (
{/* Scritta Calligrafica "Aurea" */}
Aurea
{/* Sottotitolo "ORO E PREZIOSI" con la E dorata */}
ORO
E
PREZIOSI
{/* Le 3 Icone Line-Art Ufficiali: Diamanti, Orologio, Collana con Pendente */}
{!isCompact && (
{/* Icona 1: Doppio Diamante con brillillii */}
{/* Stellina top-left */}
{/* Diamante Grande */}
{/* Diamante Piccolo sovrapposto a destra */}
{/* Stellina bottom-right */}
{/* Icona 2: Orologio da Polso */}
{/* Cinturino superiore */}
{/* Cinturino inferiore */}
{/* Cassa Orologio */}
{/* Corona */}
{/* Lancette */}
{/* Icona 3: Collana con Pendente Prezioso */}
{/* Catena curva */}
{/* Perline laterali sulla catena */}
{/* Pendente rotondo sfaccettato */}
{/* Stelline */}
)}
);
};
// --- DATI INIZIALI REALISTICI DIVISI NELLE 3 SEZIONI: OROLOGI, GIOIELLI, PENNE STILOGRAFICHE ---
const INITIAL_PRODUCTS = [
{
id: 'ap-15000st',
title: 'Audemars Piguet Royal Oak',
brand: 'Audemars Piguet',
reference: 'Ref. 15000ST',
category: 'orologi',
year: '1998',
condition: 'Neo-Vintage Eccezionale',
kit: 'Full Set (Scatola e Garanzia Originale)',
price: 'Trattativa Riservata',
status: 'disponibile',
featured: true,
instagramUrl: 'https://www.instagram.com/aurea_oro_e_preziosi/',
image: 'https://images.unsplash.com/photo-1523170335258-f5ed11844a49?auto=format&fit=crop&w=1000&q=85',
description: 'Splendido esemplare neo-vintage da 33mm con iconico quadrante Petite Tapisserie blu/grigio. Cassa e bracciale in acciaio con bisellature intatte. Completo di corredo originale.'
},
{
id: 'rolex-dj-126234',
title: 'Rolex Datejust 36 Wimbledon',
brand: 'Rolex',
reference: 'Ref. 126234',
category: 'orologi',
year: '2022',
condition: 'Pari al Nuovo',
kit: 'Full Set (Scatola, Garanzia Ufficiale e Tag)',
price: '10.800 €',
status: 'disponibile',
featured: true,
instagramUrl: 'https://www.instagram.com/aurea_oro_e_preziosi/',
image: 'https://images.unsplash.com/photo-1547996160-81dfa63595aa?auto=format&fit=crop&w=1000&q=85',
description: 'Cassa Oyster in acciaio e oro bianco 18kt con lunetta zigrinata, bracciale Jubilee e ricercato quadrante ardesia "Wimbledon" con numeri romani verdi.'
},
{
id: 'omega-speedmaster-moon',
title: 'Omega Speedmaster Professional Moonwatch',
brand: 'Omega',
reference: 'Ref. 310.30.42.50.01.001',
category: 'orologi',
year: '2023',
condition: 'Condizioni Perfette',
kit: 'Full Set (Master Chronometer)',
price: '6.200 €',
status: 'disponibile',
featured: false,
instagramUrl: 'https://www.instagram.com/aurea_oro_e_preziosi/',
image: 'https://images.unsplash.com/photo-1614164185128-e4ec99c436d7?auto=format&fit=crop&w=1000&q=85',
description: 'L\'iconico cronografo spaziale equipaggiato con il calibro Co-Axial Master Chronometer 3861. Vetro esalite, cassa simmetrica da 42mm e corredo completo.'
},
{
id: 'tudor-black-bay-58',
title: 'Tudor Black Bay Fifty-Eight',
brand: 'Tudor',
reference: 'Ref. 79030N',
category: 'orologi',
year: '2021',
condition: 'Ottime Condizioni',
kit: 'Full Set (Scatola e Garanzia Ufficiale)',
price: '2.950 €',
status: 'disponibile',
featured: false,
instagramUrl: 'https://www.instagram.com/aurea_oro_e_preziosi/',
image: 'https://images.unsplash.com/photo-1522335789203-aabd1fc54bc9?auto=format&fit=crop&w=1000&q=85',
description: 'Cassa da 39mm fedele alle proporzioni storiche degli anni \'50, quadrante nero bombato con indici dorati gilt e calibro di manifattura MT5402.'
},
{
id: 'rolex-submariner-16610-sold',
title: 'Rolex Submariner Date 40mm',
brand: 'Rolex',
reference: 'Ref. 16610',
category: 'orologi',
year: '2006',
condition: 'Cassa Mai Lucidata - Spigoli Vivi',
kit: 'Full Set (Scatola e Garanzia Traforata)',
price: '9.400 €',
status: 'venduto',
featured: false,
instagramUrl: 'https://www.instagram.com/aurea_oro_e_preziosi/',
image: 'https://images.unsplash.com/photo-1548171915-e79a380a2a4b?auto=format&fit=crop&w=1000&q=85',
description: 'Referenza iconica con ghiera in alluminio nera. Consegnato in sede a un nostro cliente collezionista. Contattaci se cerchi una referenza gemella.'
},
{
id: 'anello-solitario-gia',
title: 'Anello Solitario Oro Bianco 18kt e Diamante',
brand: 'Creazioni Aurea',
reference: '0.85 ct - Colore F - Purezza VS1',
category: 'gioielli',
year: '2026',
condition: 'Nuovo di Nostra Produzione Orafa',
kit: 'Certificato Gemmologico + Astuccio Aurea',
price: '3.450 €',
status: 'disponibile',
featured: true,
instagramUrl: 'https://www.instagram.com/aurea_oro_e_preziosi/',
image: 'https://images.unsplash.com/photo-1605100804763-247f67b3557e?auto=format&fit=crop&w=1000&q=85',
description: 'Realizzato nel nostro laboratorio orafo. Montatura classica a 4 griffe in oro bianco 750‰ che esalta la purezza e la brillantezza del diamante naturale selezionato dal nostro gemmologo in sede.'
},
{
id: 'bulgari-bzero1-ring',
title: 'Anello Bulgari B.zero1 a 4 Bande',
brand: 'Bulgari',
reference: 'Oro Giallo 18kt - Misura 54',
category: 'gioielli',
year: '2020',
condition: 'Secondo Polso Rimesso a Nuovo',
kit: 'Scatola Originale Bulgari + Garanzia Aurea',
price: '1.950 €',
status: 'riservato',
featured: false,
instagramUrl: 'https://www.instagram.com/aurea_oro_e_preziosi/',
image: 'https://images.unsplash.com/photo-1515562141207-7a88fb7ce338?auto=format&fit=crop&w=1000&q=85',
description: 'Design iconico ispirato al Colosseo di Roma in oro giallo 18 carati. Sottoposto a controllo di autenticità e lucidatura professionale nel nostro laboratorio.'
},
{
id: 'tennis-oro-bianco-diamanti',
title: 'Bracciale Tennis in Oro Bianco 18kt e Diamanti',
brand: 'Creazioni Aurea',
reference: 'Caratura Totale 3.20 ct (Colore G / VS)',
category: 'gioielli',
year: '2026',
condition: 'Nuovo Certificato',
kit: 'Perizia Gemmologica in Sede + Scatola Lusso',
price: '4.600 €',
status: 'disponibile',
featured: false,
instagramUrl: 'https://www.instagram.com/aurea_oro_e_preziosi/',
image: 'https://images.unsplash.com/photo-1599643478518-a784e5dc4c8f?auto=format&fit=crop&w=1000&q=85',
description: 'Bracciale Tennis dal movimento fluido e sicuro con chiusura a scomparsa e doppia otto di sicurezza. Diamanti naturali taglio brillante selezionati uno ad uno.'
},
{
id: 'cartier-love-bracelet',
title: 'Bracciale Cartier Love Oro Giallo 18kt',
brand: 'Cartier',
reference: 'Misura 17 - Con Cacciavite Originale',
category: 'gioielli',
year: '2021',
condition: 'Condizioni Eccellenti',
kit: 'Full Set (Scatola Rossa e Certificato Cartier)',
price: '5.800 €',
status: 'disponibile',
featured: true,
instagramUrl: 'https://www.instagram.com/aurea_oro_e_preziosi/',
image: 'https://images.unsplash.com/photo-1611591437281-460bfbe1220a?auto=format&fit=crop&w=1000&q=85',
description: 'L\'intramontabile bracciale rigido firmato Cartier in oro giallo 750‰, completo di cacciavite in oro, astuccio originale e certificato di autenticità.'
},
{
id: 'montblanc-meisterstuck-149',
title: 'Montblanc Meisterstück 149 Stilografica',
brand: 'Montblanc',
reference: 'Pennino Oro 18K Bicolore - Misura M',
category: 'penne',
year: '2019',
condition: 'Da Collezione (Mai Inchiostrata)',
kit: 'Full Set (Scatola, Controscatola e Libretto)',
price: '680 €',
status: 'disponibile',
featured: true,
instagramUrl: 'https://www.instagram.com/aurea_oro_e_preziosi/',
image: 'https://images.unsplash.com/photo-1583485088034-697b5bc54ccd?auto=format&fit=crop&w=1000&q=85',
description: 'Pregiata resina nera con dettagli finitura oro e pennino lavorato a mano in oro 18 carati con inserto in rodio. L\'ammiraglia della scrittura di lusso.'
},
{
id: 'montblanc-hemingway-le',
title: 'Montblanc Writers Edition Ernest Hemingway',
brand: 'Montblanc',
reference: 'Edizione Limitata - Pennino Oro 18K',
category: 'penne',
year: '1992',
condition: 'Pezzo Raro da Collezione',
kit: 'Scatola Originale Libro Writers Edition',
price: '2.450 €',
status: 'disponibile',
featured: true,
instagramUrl: 'https://www.instagram.com/aurea_oro_e_preziosi/',
image: 'https://images.unsplash.com/photo-1455390582262-044cdead277a?auto=format&fit=crop&w=1000&q=85',
description: 'La prima e più ricercata Writers Edition di Montblanc in rosso corallo e marrone scuro con clip placcata oro e pennino in oro 18kt inciso.'
},
{
id: 'aurora-88-oro',
title: 'Aurora 88 Grande Stilografica Cappuccio Laminato Oro',
brand: 'Aurora',
reference: 'Ref. 803 - Pennino Oro Massiccio 14K',
category: 'penne',
year: '2022',
condition: 'Pari al Nuovo',
kit: 'Astuccio in Pelle Aurora e Garanzia',
price: '490 €',
status: 'disponibile',
featured: false,
instagramUrl: 'https://www.instagram.com/aurea_oro_e_preziosi/',
image: 'https://images.unsplash.com/photo-1585336261022-680e295ce3fe?auto=format&fit=crop&w=1000&q=85',
description: 'Capolavoro della manifattura italiana progettato da Marcello Nizzoli. Caricamento a stantuffo con riserva magica nascosta e pennino in oro 14kt.'
}
];
// --- LE 3 SEZIONI PRINCIPALI RICHIESTE ---
const CATEGORIES = [
{ id: 'tutti', label: 'Tutta la Vetrina', subtitle: 'Collezione Completa', icon: Sparkles },
{ id: 'orologi', label: 'Orologi', subtitle: 'Rolex, AP, Omega, Tudor', icon: Watch },
{ id: 'gioielli', label: 'Gioielli', subtitle: 'Bulgari, Cartier, Diamanti', icon: Gem },
{ id: 'penne', label: 'Penne Stilografiche', subtitle: 'Montblanc, Aurora, Ed. Limitate', icon: PenTool },
];
// --- MARCHE / MAISON SUGGERITE PER CATEGORIA ---
const BRANDS_BY_CATEGORY = {
orologi: ['Rolex', 'Audemars Piguet', 'Omega', 'Tudor', 'Cartier', 'Panerai', 'Longines', 'Patek Philippe', 'Zenith'],
gioielli: ['Creazioni Aurea', 'Bulgari', 'Cartier', 'Damiani', 'Chopard', 'Tiffany & Co.'],
penne: ['Montblanc', 'Aurora', 'S.T. Dupont', 'Dunhill', 'Cartier', 'Omas', 'Pelikan']
};
const SAMPLE_IG_POSTS = [
{
label: "Post Rolex Submariner",
text: "Rolex Submariner Date, Referenza 16610. Anno 2004, condizioni spettacolari, mai lucidato! Completo di scatola e garanzia originale italiana (Full Set). Prezzo: 9.400 €. Disponibile per visione presso la nostra boutique in Viale Giovanni Bovio 269 a Pescara. #rolex #submariner #pescara #aureaoroepreziosi",
image: "https://images.unsplash.com/photo-1548171915-e79a380a2a4b?auto=format&fit=crop&w=1000&q=85"
},
{
label: "Post Penna Montblanc",
text: "Stilografica Montblanc Meisterstück LeGrand 146, pennino in oro 14K bicolore lavorato a mano. Anno 2021, condizioni pari al nuovo con scatola e libretto di garanzia originale Montblanc. Prezzo 460 €. Visionabile in sede a Pescara!",
image: "https://images.unsplash.com/photo-1583485088034-697b5bc54ccd?auto=format&fit=crop&w=1000&q=85"
},
{
label: "Post Gioiello Bulgari",
text: "Collana Bulgari B.zero1 in Oro Rosa 18kt e Ceramica Nera. Completa di scatola originale Bulgari e certificato di autenticità della nostra sede. Condizioni pari al nuovo. Prezzo 2.350 €.",
image: "https://images.unsplash.com/photo-1535632066927-ab7c9ab60908?auto=format&fit=crop&w=1000&q=85"
}
];
const REAL_REVIEWS = [
{
author: "Alain Leone",
text: "Punto vendita molto accogliente, che ti mette subito a tuo agio. Professionalità, serietà e gentilezza da parte del titolare Enrico e della sua assistente molto solare. Consigliatissimo!",
tag: "Cliente Verificato Google"
},
{
author: "Geraldine Ferri",
text: "Enrico è un venditore molto serio e professionale oltre ad essere una persona gentile e disponibile. Ho acquistato gioielli meravigliosi di ottima qualità. Consiglio vivamente di passare in negozio!",
tag: "Acquisto Gioielleria in Sede"
},
{
author: "Roberta Mazzetta",
text: "Sono entrata per un semplice consulto, ne sono diventata poi cliente. Essere accolta con molta gentilezza, cortesia e preparazione professionale non è scontato; qui invece l'ho trovata.",
tag: "Valutazione e Consulenza"
}
];
export default function App() {
const [products, setProducts] = useState(INITIAL_PRODUCTS);
const [activeCategory, setActiveCategory] = useState('tutti');
const [selectedBrand, setSelectedBrand] = useState('Tutte');
const [searchQuery, setSearchQuery] = useState('');
const [onlyAvailable, setOnlyAvailable] = useState(false);
const [selectedProduct, setSelectedProduct] = useState(null);
const [showHostingGuide, setShowHostingGuide] = useState(false);
// Modalità Gestione Semplificata per il Titolare (Enrico)
const [isAdminMode, setIsAdminMode] = useState(false);
const [showAddModal, setShowAddModal] = useState(false);
const [editingProduct, setEditingProduct] = useState(null);
const [notification, setNotification] = useState(null);
// Stato per Importazione Rapida da Instagram / AI
const [igCaptionInput, setIgCaptionInput] = useState('');
const [isAnalyzingIg, setIsAnalyzingIg] = useState(false);
// Stato Form Nuovo/Modifica Prodotto
const [formData, setFormData] = useState({
title: '',
brand: '',
reference: '',
category: 'orologi',
year: new Date().getFullYear().toString(),
condition: 'Condizioni Eccezionali',
kit: 'Full Set (Scatola e Garanzia)',
price: '',
status: 'disponibile',
featured: false,
instagramUrl: 'https://www.instagram.com/aurea_oro_e_preziosi/',
image: 'https://images.unsplash.com/photo-1523170335258-f5ed11844a49?auto=format&fit=crop&w=1000&q=85',
description: ''
});
// Mostra notifica elegante
const showToast = (msg) => {
setNotification(msg);
setTimeout(() => setNotification(null), 4000);
};
// Quando si cambia categoria principale, azzera il filtro marca se non appartiene alla nuova categoria
const handleCategoryChange = (catId) => {
setActiveCategory(catId);
setSelectedBrand('Tutte');
};
// Calcola l'elenco dinamico delle marche disponibili per la sezione attiva (con contatore pezzi)
const availableBrands = useMemo(() => {
const baseProducts = activeCategory === 'tutti'
? products
: products.filter(p => p.category === activeCategory);
const counts = {};
baseProducts.forEach(p => {
const b = p.brand || 'Altro';
counts[b] = (counts[b] || 0) + 1;
});
// Aggiunge anche i brand prestigiosi predefiniti della categoria scelta così l'utente vede subito le Maison trattate
if (activeCategory !== 'tutti' && BRANDS_BY_CATEGORY[activeCategory]) {
BRANDS_BY_CATEGORY[activeCategory].forEach(b => {
if (counts[b] === undefined) counts[b] = 0;
});
}
return Object.entries(counts)
.sort((a, b) => b[1] - a[1])
.map(([name, count]) => ({ name, count }));
}, [products, activeCategory]);
// Filtra i prodotti in vetrina per Categoria + Marca + Disponibilità + Ricerca
const filteredProducts = useMemo(() => {
return products.filter((item) => {
const matchesCategory = activeCategory === 'tutti' || item.category === activeCategory;
const matchesBrand = selectedBrand === 'Tutte' || item.brand.toLowerCase() === selectedBrand.toLowerCase();
const matchesAvailability = !onlyAvailable || item.status === 'disponibile';
const matchesSearch =
item.title.toLowerCase().includes(searchQuery.toLowerCase()) ||
item.brand.toLowerCase().includes(searchQuery.toLowerCase()) ||
item.reference.toLowerCase().includes(searchQuery.toLowerCase()) ||
item.description.toLowerCase().includes(searchQuery.toLowerCase());
return matchesCategory && matchesBrand && matchesAvailability && matchesSearch;
});
}, [products, activeCategory, selectedBrand, onlyAvailable, searchQuery]);
// Contatori per ciascuna delle 3 sezioni
const categoryCounts = useMemo(() => ({
tutti: products.length,
orologi: products.filter(p => p.category === 'orologi').length,
gioielli: products.filter(p => p.category === 'gioielli').length,
penne: products.filter(p => p.category === 'penne').length,
}), [products]);
// Genera il link WhatsApp precompilato per prenotare il ritiro/visione in sede
const getWhatsAppReservationLink = (product, type = 'visione') => {
const phone = '393339047176';
if (type === 'permuta') {
const msg = `Salve Enrico (Aurea Oro & Preziosi), sono interessato all'articolo in vetrina:\n\n✨ *${product.title}* (${product.brand} - ${product.reference})\n\nVorrei passare in sede a Pescara (Viale Bovio 269) per visionarlo e farvi valutare una *permuta / usato* in mio possesso. Quando vi trovo?`;
return `https://wa.me/${phone}?text=${encodeURIComponent(msg)}`;
}
if (type === 'simile') {
const msg = `Salve Aurea Oro & Preziosi, ho visto nella vostra vetrina che l'articolo *${product.title} (${product.reference})* è stato venduto. Mi avvisate se vi rientra in negozio un pezzo simile? Grazie!`;
return `https://wa.me/${phone}?text=${encodeURIComponent(msg)}`;
}
const message = `Salve Aurea Oro & Preziosi, ho visto nella vostra Vetrina Online l'articolo:\n\n✨ *${product.title}*\n🏛️ Marca: ${product.brand}\n📌 Dettaglio/Ref: ${product.reference}\n💶 Prezzo indicato: ${product.price}\n\nVorrei sapere se è ancora disponibile e fissare un appuntamento per visionarlo e ritirarlo in sede a Pescara (Viale Giovanni Bovio 269). Grazie!`;
return `https://wa.me/${phone}?text=${encodeURIComponent(message)}`;
};
// Cambia lo stato del prodotto con 1 solo clic
const handleQuickStatusChange = (productId, newStatus) => {
setProducts(prev => prev.map(p => p.id === productId ? { ...p, status: newStatus } : p));
showToast(`Stato aggiornato in "${newStatus.toUpperCase()}" con 1 clic!`);
};
// Elimina prodotto
const handleDeleteProduct = (productId) => {
setProducts(prev => prev.filter(p => p.id !== productId));
if (selectedProduct?.id === productId) setSelectedProduct(null);
showToast('Articolo rimosso dalla vetrina.');
};
// Apri modale per aggiungere un nuovo prodotto
const openNewProductModal = () => {
setEditingProduct(null);
setIgCaptionInput('');
setFormData({
title: '',
brand: 'Rolex',
reference: '',
category: activeCategory === 'tutti' ? 'orologi' : activeCategory,
year: '2024',
condition: 'Condizioni Eccezionali',
kit: 'Full Set (Scatola e Garanzia)',
price: '',
status: 'disponibile',
featured: false,
instagramUrl: 'https://www.instagram.com/aurea_oro_e_preziosi/',
image: 'https://images.unsplash.com/photo-1523170335258-f5ed11844a49?auto=format&fit=crop&w=1000&q=85',
description: ''
});
setShowAddModal(true);
};
// Apri modale per modificare un prodotto esistente
const openEditProductModal = (product) => {
setEditingProduct(product);
setIgCaptionInput('');
setFormData({ ...product });
setShowAddModal(true);
};
// Gestione upload foto locale
const handleImageUpload = (e) => {
const file = e.target.files?.[0];
if (!file) return;
const reader = new FileReader();
reader.onloadend = () => {
setFormData(prev => ({ ...prev, image: reader.result }));
showToast('Foto caricata con successo!');
};
reader.readAsDataURL(file);
};
// FUNZIONE INTELLIGENTE: Compila automaticamente la scheda partendo dalla didascalia di Instagram
const analyzeInstagramCaption = async (captionToAnalyze = igCaptionInput, presetImage = null) => {
const text = captionToAnalyze.trim();
if (!text) {
showToast('Incolla prima la descrizione del tuo post Instagram!');
return;
}
setIsAnalyzingIg(true);
const apiKey = "";
const apiUrl = `https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent?key=${apiKey}`;
const systemPrompt = `Sei l'assistente digitale della boutique "Aurea Oro & Preziosi" di Pescara.
Estrai i dati strutturati da una didascalia di Instagram o testo libero per creare una scheda prodotto divisa in una di queste 3 categorie: "orologi", "gioielli", "penne".
Rispondi SOLO in JSON valido secondo lo schema richiesto.`;
const payload = {
contents: [{ parts: [{ text: `Estrai i dati da questo post Instagram:\n"${text}"` }] }],
systemInstruction: { parts: [{ text: systemPrompt }] },
generationConfig: {
responseMimeType: "application/json",
responseSchema: {
type: "OBJECT",
properties: {
title: { type: "STRING", description: "Nome completo dell'orologio, gioiello o penna stilografica" },
brand: { type: "STRING", description: "Marca esatta (es. Rolex, Audemars Piguet, Omega, Tudor, Cartier, Bulgari, Creazioni Aurea, Montblanc, Aurora, S.T. Dupont)" },
reference: { type: "STRING", description: "Referenza, caratura o tipo pennino (es. Ref. 16610, 0.85 ct F VS1, Pennino Oro 18K)" },
category: { type: "STRING", enum: ["orologi", "gioielli", "penne"] },
year: { type: "STRING", description: "Anno (es. 2004, 2026 o N/D)" },
condition: { type: "STRING", description: "Condizioni (es. Pari al nuovo, Mai inchiostrata, Mai lucidato, Nuovo)" },
kit: { type: "STRING", description: "Corredo (es. Full Set, Scatola e Garanzia, Certificato Aurea)" },
price: { type: "STRING", description: "Prezzo formattato con € oppure Trattativa Riservata" },
description: { type: "STRING", description: "Descrizione elegante e pulita senza hashtag superflui" }
},
required: ["title", "brand", "reference", "category", "year", "condition", "kit", "price", "description"]
}
}
};
try {
const response = await fetch(apiUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
});
if (!response.ok) throw new Error('Fallback to local parser');
const result = await response.json();
const jsonText = result.candidates?.[0]?.content?.parts?.[0]?.text;
if (jsonText) {
const parsed = JSON.parse(jsonText);
setFormData(prev => ({
...prev,
...parsed,
image: presetImage || prev.image
}));
showToast('Scheda compilata automaticamente dall\'AI in 1 secondo!');
setIsAnalyzingIg(false);
return;
}
} catch (err) {
// Fallback locale immediato
const lower = text.toLowerCase();
let category = 'orologi';
if (lower.includes('penna') || lower.includes('montblanc') || lower.includes('stilografica') || lower.includes('pennino') || lower.includes('meisterstuck') || lower.includes('meisterstück') || lower.includes('aurora')) {
category = 'penne';
} else if (lower.includes('anello') || lower.includes('bracciale') || lower.includes('collana') || lower.includes('girocollo') || lower.includes('diamant') || lower.includes('carati') || lower.includes('oro bianco') || lower.includes('oro giallo') || lower.includes('oro rosa') || lower.includes('bulgari')) {
category = 'gioielli';
}
const refMatch = text.match(/(?:Ref\.?|Referenza)\s*([A-Za-z0-9.\-]+)/i);
const yearMatch = text.match(/\b(19\d\d|20\d\d)\b/);
const priceMatch = text.match(/(\d[\d.]*\s*€)/);
const allBrands = ['Rolex', 'Audemars Piguet', 'Omega', 'Cartier', 'Tudor', 'Patek Philippe', 'Panerai', 'Longines', 'Zenith', 'Bulgari', 'Damiani', 'Montblanc', 'Aurora', 'S.T. Dupont', 'Dunhill'];
const foundBrand = allBrands.find(b => lower.includes(b.toLowerCase())) || (category === 'gioielli' ? 'Creazioni Aurea' : category === 'penne' ? 'Montblanc' : 'Rolex');
const firstSentence = text.split(/[.,!\n]/)[0].trim();
setFormData(prev => ({
...prev,
title: firstSentence.slice(0, 60) || 'Nuovo Articolo Aurea',
brand: foundBrand,
reference: refMatch ? `Ref. ${refMatch[1]}` : (category === 'penne' ? 'Pennino in Oro 18K' : category === 'gioielli' ? 'Oro 18kt Certificato' : 'Referenza in sede'),
category,
year: yearMatch ? yearMatch[1] : '2026',
condition: lower.includes('nuovo') ? 'Pari al Nuovo' : 'Condizioni Eccezionali',
kit: lower.includes('full set') || lower.includes('scatola') ? 'Full Set (Scatola e Garanzia)' : 'Certificato di Autenticità Aurea',
price: priceMatch ? priceMatch[1] : 'Trattativa Riservata',
image: presetImage || prev.image,
description: text.replace(/#\S+/g, '').trim()
}));
showToast('Dati estratti automaticamente dal testo del post!');
} finally {
setIsAnalyzingIg(false);
}
};
// Salva prodotto
const handleSaveProduct = (e) => {
e.preventDefault();
if (!formData.title) {
showToast('Inserisci almeno il titolo dell\'articolo.');
return;
}
if (editingProduct) {
setProducts(prev => prev.map(p => p.id === editingProduct.id ? { ...formData, id: editingProduct.id } : p));
showToast('Articolo aggiornato con successo nella vetrina!');
} else {
const newProduct = {
...formData,
id: 'aurea-' + Date.now(),
brand: formData.brand.trim() || 'Aurea Selezione',
price: formData.price.trim() || 'Trattativa Riservata'
};
setProducts(prev => [newProduct, ...prev]);
showToast('Articolo pubblicato in cima alla vetrina!');
}
setShowAddModal(false);
};
// Badge colore stato
const renderStatusBadge = (status) => {
switch (status) {
case 'disponibile':
return (
Disponibile in Sede
);
case 'riservato':
return (
Riservato / In Visione
);
case 'venduto':
return (
Venduto di Recente
);
default:
return null;
}
};
return (
{/* Font Ufficiali per riprodurre fedelmente il corsivo "Aurea" e il serif di lusso */}
{/* NOTIFICA TOAST FLOTTANTE */}
{notification && (
{notification}
)}
{/* BARRA SUPERIORE INFORMATIVA + PULSANTE GESTIONE TITOLARE E GUIDA HOSTING */}
setShowHostingGuide(true)}
className="flex items-center gap-1.5 px-3 py-1 rounded-full bg-neutral-800 hover:bg-neutral-700 text-[#E5B968] border border-[#D9A343]/40 font-medium transition-all cursor-pointer"
>
Guida: Dove caricare il sito & Marketing
{
setIsAdminMode(!isAdminMode);
showToast(!isAdminMode ? 'Modalità Gestione Titolare ATTIVATA' : 'Vista Cliente Attivata');
}}
className={`flex items-center gap-1.5 px-3 py-1 rounded-full font-semibold transition-all cursor-pointer ${
isAdminMode
? 'bg-[#D9A343] text-[#181818] shadow-md shadow-[#D9A343]/20'
: 'bg-neutral-800 text-neutral-300 hover:bg-neutral-700 border border-neutral-700'
}`}
>
{isAdminMode ? : }
{isAdminMode ? 'Gestione Attiva (Enrico)' : 'Area Titolare'}
{/* BANNER DI GESTIONE RAPIDA (VISIBILE QUANDO ATTIVATO DAL TITOLARE) */}
{isAdminMode && (
Pannello Veloce Titolare
Aggiungi Orologi, Gioielli o Penne Stilografiche in 10 secondi
Cambia stato con 1 clic (Disponibile / Riservato / Venduto) o incolla il testo del tuo post Instagram per creare automaticamente la scheda con la giusta Marca e Sezione.
Aggiungi Articolo / Importa da Instagram
)}
{/* HEADER PRINCIPALE CON LOGO UFFICIALE AUREA SU SFONDO ANTRACITE SCURO (#262626) COME NELLE IMMAGINI */}
{/* HERO SECTION CON LE 3 GRANDI SEZIONI E FILOSOFIA "SOLO RITIRO IN SEDE" */}
Boutique Storica a Pescara • Viale Giovanni Bovio 269
Collezione Esclusiva con Visione e Ritiro in Sede
Esplora i nostri Orologi di Secondo Polso , l'Alta Gioielleria e le Penne Stilografiche da Collezione . Nessun acquisto al buio online: prenoti la visione su WhatsApp e valuti il pezzo dal vivo in negozio, anche con permuta del tuo usato o del tuo oro .
{/* LE 3 CARD DELLE SEZIONI PRINCIPALI (OROLOGI, GIOIELLI, PENNE STILOGRAFICHE) */}
{/* Sezione 1: Orologi */}
handleCategoryChange('orologi')}
className={`group text-left p-5 rounded-2xl border transition-all cursor-pointer flex items-center justify-between ${
activeCategory === 'orologi'
? 'bg-[#D9A343] text-[#181818] border-[#D9A343] shadow-xl shadow-[#D9A343]/15'
: 'bg-[#262626]/90 hover:bg-[#2E2E2E] text-white border-white/15 hover:border-[#D9A343]/60'
}`}
>
1. Orologi
{categoryCounts.orologi}
Rolex, Audemars Piguet, Omega, Tudor, Cartier
{/* Sezione 2: Gioielli */}
handleCategoryChange('gioielli')}
className={`group text-left p-5 rounded-2xl border transition-all cursor-pointer flex items-center justify-between ${
activeCategory === 'gioielli'
? 'bg-[#D9A343] text-[#181818] border-[#D9A343] shadow-xl shadow-[#D9A343]/15'
: 'bg-[#262626]/90 hover:bg-[#2E2E2E] text-white border-white/15 hover:border-[#D9A343]/60'
}`}
>
2. Gioielli
{categoryCounts.gioielli}
Bulgari, Cartier, Solitari e Diamanti Certificati
{/* Sezione 3: Penne Stilografiche */}
handleCategoryChange('penne')}
className={`group text-left p-5 rounded-2xl border transition-all cursor-pointer flex items-center justify-between ${
activeCategory === 'penne'
? 'bg-[#D9A343] text-[#181818] border-[#D9A343] shadow-xl shadow-[#D9A343]/15'
: 'bg-[#262626]/90 hover:bg-[#2E2E2E] text-white border-white/15 hover:border-[#D9A343]/60'
}`}
>
3. Penne Stilografiche
{categoryCounts.penne}
Montblanc Meisterstück, Limited Edition, Aurora
{/* BARRA DI NAVIGAZIONE PER MARCHE / MAISON + RICERCA E FILTRI */}
{/* RIGA 1: Selettore Sezione + Barra di Ricerca + Checkbox Disponibili */}
{CATEGORIES.map((cat) => {
const Icon = cat.icon;
const active = activeCategory === cat.id;
return (
handleCategoryChange(cat.id)}
className={`flex items-center gap-2 px-4 py-2 rounded-xl text-xs sm:text-sm font-semibold whitespace-nowrap transition-all cursor-pointer ${
active
? 'bg-[#242424] text-[#D9A343] shadow-sm'
: 'bg-neutral-100 text-neutral-600 hover:bg-neutral-200/70'
}`}
>
{cat.label}
{categoryCounts[cat.id]}
);
})}
{/* RIGA 2: NAVIGAZIONE INTERATTIVA FRA LE MARCHE / MAISON */}
Filtra per Marca / Maison {activeCategory !== 'tutti' ? `(${CATEGORIES.find(c => c.id === activeCategory)?.label})` : ''}:
{selectedBrand !== 'Tutte' && (
setSelectedBrand('Tutte')}
className="text-xs text-[#B37E22] hover:underline font-semibold cursor-pointer"
>
Mostra tutte le marche
)}
setSelectedBrand('Tutte')}
className={`px-3.5 py-1.5 rounded-full text-xs font-semibold whitespace-nowrap transition-all cursor-pointer border ${
selectedBrand === 'Tutte'
? 'bg-[#D9A343] text-[#181818] border-[#D9A343] shadow-xs'
: 'bg-[#FAF8F5] text-neutral-700 border-neutral-200 hover:border-[#D9A343]'
}`}
>
Tutte le Marche
{availableBrands.map((brandObj) => {
const isSelected = selectedBrand.toLowerCase() === brandObj.name.toLowerCase();
return (
setSelectedBrand(brandObj.name)}
className={`flex items-center gap-1.5 px-3.5 py-1.5 rounded-full text-xs font-semibold whitespace-nowrap transition-all cursor-pointer border ${
isSelected
? 'bg-[#242424] text-[#D9A343] border-[#242424] shadow-xs'
: 'bg-white text-neutral-700 border-neutral-200 hover:border-[#D9A343]'
}`}
>
{brandObj.name}
{brandObj.count > 0 && (
{brandObj.count}
)}
);
})}
{/* GRIGLIA VETRINA PRODOTTI */}
{activeCategory === 'tutti'
? 'Tutti i Preziosi in Vetrina'
: CATEGORIES.find(c => c.id === activeCategory)?.label}
{selectedBrand !== 'Tutte' && • {selectedBrand} }
{filteredProducts.length} pezzi trovati • Visione su appuntamento gratuito in Viale Giovanni Bovio 269, Pescara
{isAdminMode && (
Aggiungi Pezzo in questa Sezione
)}
{filteredProducts.length === 0 ? (
Al momento non ci sono pezzi "{selectedBrand !== 'Tutte' ? selectedBrand : ''}" caricati online
Molti orologi, gioielli e penne da collezione vengono venduti in negozio a Pescara prima ancora di essere pubblicati. Scrivici su WhatsApp per sapere se abbiamo disponibilità in caveau!
{
setActiveCategory('tutti');
setSelectedBrand('Tutte');
setSearchQuery('');
setOnlyAvailable(false);
}}
className="px-5 py-2.5 rounded-xl bg-neutral-100 hover:bg-neutral-200 text-neutral-800 text-xs sm:text-sm font-semibold transition-all cursor-pointer"
>
Azzera Filtri
Chiedi Disponibilità in Caveau
) : (
{filteredProducts.map((product) => (
{/* Immagine e Badge */}
{/* Corpo della Scheda */}
setSelectedProduct(product)}
className="font-serif-luxury text-2xl font-bold text-[#1C1C1C] group-hover:text-[#B37E22] transition-colors cursor-pointer line-clamp-1"
>
{product.title}
{product.description}
{/* Specifiche Tecniche Rapide */}
Corredo
{product.kit}
Condizioni
{product.condition}
{/* Prezzo + Azione Ritiro in Sede o Richiesta Pezzo Simile */}
Valore in Boutique
{product.price}
Ritiro a Pescara
{product.status !== 'venduto' ? (
Prenota Visione in Sede
setSelectedProduct(product)}
className="col-span-1 flex items-center justify-center bg-neutral-100 hover:bg-neutral-200 text-neutral-700 rounded-xl transition-colors cursor-pointer"
title="Apri scheda e certificato"
>
) : (
/* Strategia Marketing Lusso: sui pezzi venduti permettiamo di chiedere un modello gemello */
Venduto • Cerchi un modello simile? Scrivici
)}
{/* CONTROLLI RAPIDI 1-CLIC PER IL TITOLARE (SOLO SE ADMIN ATTIVO) */}
{isAdminMode && (
Stato Vetrina 1-Clic:
openEditProductModal(product)}
className="p-1.5 rounded bg-white hover:bg-neutral-100 text-neutral-700 border border-neutral-300 cursor-pointer"
title="Modifica articolo"
>
handleDeleteProduct(product.id)}
className="p-1.5 rounded bg-white hover:bg-red-50 text-red-600 border border-red-200 cursor-pointer"
title="Elimina articolo"
>
{['disponibile', 'riservato', 'venduto'].map((st) => (
handleQuickStatusChange(product.id, st)}
className={`py-1.5 px-2 rounded-lg text-[11px] font-bold capitalize transition-all cursor-pointer ${
product.status === st
? 'bg-[#242424] text-[#D9A343] shadow-xs'
: 'bg-white text-neutral-600 border border-neutral-200 hover:bg-neutral-100'
}`}
>
{st}
))}
)}
))}
)}
{/* SEZIONE STRATEGICA CRO: PERMUTA IL TUO USATO / VALUTAZIONE ORO E OROLOGI IN SEDE */}
Servizio Esclusivo in Sede a Pescara
Vuoi permutare il tuo Orologio o dare in permuta Oro usato?
Da oltre 15 anni valutiamo gratuitamente e a vista Orologi di prestigio (anche senza scatola e garanzia), Oro, Argento, Monete e Diamanti con gemmologo in sede. Puoi usare il valore del tuo usato per acquistare qualsiasi pezzo presente in questa vetrina o ricevere il pagamento immediato.
{/* RECENSIONI REALI VERIFICATE (RIPROVA SOCIALE STORICA DI ENRICO E DELLO STAFF) */}
Oltre 15 Anni di Fiducia a Pescara, Montesilvano e Chieti
Cosa Dicono i Nostri Clienti in Negozio
{REAL_REVIEWS.map((rev, idx) => (
{[...Array(5)].map((_, i) => (
))}
"{rev.text}"
{rev.author}
{rev.tag}
))}
{/* FOOTER COMPLETO CON LOGO UFFICIALE AUREA SU SFONDO ANTRACITE */}
Boutique specializzata nella compravendita di Orologi di Prestigio, Alta Gioielleria, Diamanti certificati, Penne Stilografiche da collezione e Metalli Preziosi.
Aurea di Belisario Enrico • P.IVA: 02007870674
Sede Espositiva & Ritiro
Viale Giovanni Bovio 269, 65124 – Pescara (PE) Parcheggio in zona e ingresso accessibile
Telefono fisso: 085 290 319
WhatsApp Diretto: 333 904 7176
Orari di Apertura
Dal Lunedì al Sabato:
Mattina: 09:00 – 13:00
Pomeriggio: 16:00 – 19:30
Domenica: Chiuso
{/* BARRA FISSA MOBILE (POICHÉ IL 98% DEI CLIENTI DI AUREA NAVIGA DA SMARTPHONE) */}
{/* MODALE DETTAGLIO ARTICOLO CON LOGO SU SFONDO BIANCO E DOPPIA OPZIONE (VISIONE O PERMUTA) */}
{selectedProduct && (
{/* Colonna Immagine */}
{renderStatusBadge(selectedProduct.status)}
setSelectedProduct(null)}
className="md:hidden absolute top-4 right-4 w-10 h-10 rounded-full bg-black/70 text-white flex items-center justify-center"
>
{/* Colonna Scheda Certificata con Logo Chiaro */}
setSelectedProduct(null)}
className="hidden md:flex w-9 h-9 rounded-full bg-neutral-100 hover:bg-neutral-200 text-neutral-700 items-center justify-center cursor-pointer"
>
{selectedProduct.brand}
{selectedProduct.title}
Prezzo in Sede (Pescara)
{selectedProduct.price}
{selectedProduct.description}
{/* Tabella Dati Certificati */}
Maison / Marca:
{selectedProduct.brand}
Referenza / Dettaglio:
{selectedProduct.reference}
Anno:
{selectedProduct.year}
Condizioni:
{selectedProduct.condition}
Corredo:
{selectedProduct.kit}
{/* Pulsanti di Prenotazione Visione o Proposta di Permuta */}
)}
{/* MODALE GUIDA COMPLETA: DOVE CARICARE IL SITO, HOSTING E CONSIGLI MARKETING */}
{showHostingGuide && (
Guida Pratica per Enrico: Hosting, Dominio & Strategia Marketing
setShowHostingGuide(false)}
className="w-8 h-8 rounded-full bg-white/10 hover:bg-white/20 flex items-center justify-center text-white cursor-pointer"
>
1. Devo pagare un costoso Hosting E-Commerce? NO!
Poiché questa è una Vetrina Digitale senza pagamenti online (tutto porta il cliente in sede o su WhatsApp), non devi pagare abbonamenti mensili da 30-50€/mese come Shopify .
Opzione A (Sottodominio Gratuito sul tuo dominio attuale): Visto che hai già aureaoroepreziosi.it , puoi caricarlo su vetrina.aureaoroepreziosi.it usando servizi cloud moderni (come Vercel o Netlify ) che hanno un piano 100% GRATUITO (0 € al mese) con certificato di sicurezza HTTPS incluso.
Opzione B (Sull'hosting attuale): Se paghi già un hosting annuale (es. Aruba, Register, SiteGround o tramite la web agency che ti segue il sito), puoi caricare questa vetrina nella cartella /vetrina senza spendere 1 euro in più.
2. Perché ho disposto gli elementi così (Strategia Marketing & Social):
98% Traffico da Smartphone: Dai dati delle tue campagne a Pescara e Montesilvano, quasi tutti i tuoi clienti ti cercano da cellulare. Per questo ho inserito i pulsanti scorrevoli per le Marche e la barra fissa in basso su telefono.
I 3 Pilastri (Orologi, Gioielli, Penne Stilografiche): Chi cerca una Montblanc Meisterstück o un Rolex vuole filtrare subito per Maison senza confondersi. Ora cliccando una sezione i filtri delle marche si adattano da soli.
Bollino "Venduto di Recente": Non cancellare subito i pezzi venduti! Lasciare in vetrina un Rolex o una Montblanc con scritto "Venduto di Recente" dimostra che il negozio lavora tantissimo e spinge gli altri clienti a contattarti subito per non farsi soffiare il prossimo affare.
Leva della Permuta: Molti clienti vorrebbero comprare un orologio o un gioiello importante ma non sanno che possono pagarlo anche portando indietro vecchi gioielli d'oro o un orologio che non usano più. Ora su ogni scheda c'è il tasto "Proponi una Permuta" .
setShowHostingGuide(false)}
className="px-6 py-2.5 rounded-xl bg-[#242424] text-[#D9A343] font-bold cursor-pointer"
>
Perfetto, Torna alla Vetrina
)}
{/* MODALE AGGIUNTA / IMPORTAZIONE RAPIDA DA INSTAGRAM PER IL TITOLARE */}
{showAddModal && (
{editingProduct ? 'Modifica Articolo in Vetrina' : 'Aggiungi Orologio, Gioiello o Penna Stilografica'}
setShowAddModal(false)}
className="w-8 h-8 rounded-full bg-white/10 hover:bg-white/20 flex items-center justify-center text-white cursor-pointer"
>
{/* BOX MAGICO: INCOLLA DA INSTAGRAM E COMPILA DA SOLO */}
{!editingProduct && (
Metodo Veloce: Incolla la descrizione del tuo Post Instagram
Riconosce Sezione e Marca da solo
Incolla il testo del post Instagram (oppure clicca uno dei 3 esempi qui sotto: Orologio, Penna Montblanc o Gioiello) per compilare tutta la scheda in 1 secondo:
{SAMPLE_IG_POSTS.map((sample, idx) => (
{
setIgCaptionInput(sample.text);
analyzeInstagramCaption(sample.text, sample.image);
}}
className="text-[11px] bg-white hover:bg-[#242424] text-neutral-800 hover:text-[#D9A343] border border-[#D9A343]/50 px-2.5 py-1 rounded-lg font-medium transition-colors cursor-pointer"
>
⚡ Prova: {sample.label}
))}
)}
{/* FORM CAMPI PRODOTTO */}
)}
);
}