// Gallery — paneles diagonales paralelogramo const GALLERY_ITEMS = [ { id: 1, cat: 'black-grey', label: 'Serpiente Botánica', src: 'assets/tattoo-01.png' }, { id: 2, cat: 'black-grey', label: 'Arcángel', src: 'assets/tattoo-02.png' }, { id: 8, cat: 'black-grey', label: 'Paisaje Guatemalteco', src: 'assets/tattoo-08.png' }, { id: 3, cat: 'black-grey', label: 'Poseidón', src: 'assets/tattoo-05.png' }, { id: 9, cat: 'blackwork', label: 'Poseidón Skull', src: 'assets/tattoo-09.png' }, { id: 4, cat: 'blackwork', label: 'Kraken Oscuro', src: 'assets/tattoo-06.png' }, { id: 5, cat: 'blackwork', label: 'Medusa', src: 'assets/tattoo-07.png' }, { id: 6, cat: 'blackwork', label: 'Neo Japonés', src: 'assets/tattoo-04.png' }, { id: 7, cat: 'fineline', label: 'Tanjiro', src: 'assets/tattoo-03.png' }, ]; const CATS = [ { id: 'all', label: 'Todos' }, { id: 'black-grey', label: 'Black & Grey' }, { id: 'blackwork', label: 'Blackwork' }, { id: 'fineline', label: 'Fineline' }, ]; function Gallery() { const [filter, setFilter] = useState('all'); const [lightbox, setLightbox] = useState(null); const trackRef = useRef(null); const filtered = useMemo( () => filter === 'all' ? GALLERY_ITEMS : GALLERY_ITEMS.filter(g => g.cat === filter), [filter] ); const scroll = (dir) => { const el = trackRef.current; if (!el) return; el.scrollBy({ left: dir * 280, behavior: 'smooth' }); }; return (
Portafolio

Cada tatuaje cuenta
una historia.

{CATS.map(c => ( ))}
{/* Diagonal panels track + side buttons */}
{filtered.map((item, i) => ( setLightbox(item)} className="diag-panel" style={{ flex: '0 0 auto', width: 260, height: 480, transform: 'skewX(-12deg)', marginLeft: i === 0 ? 0 : -20, cursor: 'pointer', position: 'relative', overflow: 'hidden', scrollSnapAlign: 'start', boxShadow: '0 12px 40px rgba(0,0,0,0.5)', border: '1px solid rgba(139,0,0,0.3)', background: '#0a0a0a', }} whileHover={{ y: -8, zIndex: 10 }} >
{item.label}
{CATS.find(c => c.id === item.cat)?.label}
{item.label}
))}
← Desliza o usa las flechas →
{/* Lightbox */} {lightbox && ( setLightbox(null)} style={{ position: 'fixed', inset: 0, background: 'rgba(0,0,0,0.95)', zIndex: 9000, display: 'grid', placeItems: 'center', padding: '5vw', }} > e.stopPropagation()} style={{ position: 'relative', maxWidth: 800, width: '100%' }} > {lightbox.label}
{CATS.find(c => c.id === lightbox.cat)?.label}
{lightbox.label}
)}
); } window.Gallery = Gallery;