"use client"; import { useCallback, useEffect, useState } from "react"; import Image from "next/image"; import { AnimatePresence, motion, useReducedMotion } from "framer-motion"; import { BARTENDER_PROFILE } from "@/data/portfolio-data"; import { HubButton } from "@/components/HubButton"; import { WhatsAppFloatingButton } from "@/components/WhatsAppFloatingButton"; const EASE = [0.22, 1, 0.36, 1] as const; type Night = { name: string; place: string; year: string; guests: string; hours: string; bar: string[]; note: string; image: string; }; const NIGHTS: Night[] = [ { name: "Tribeca", place: "Loft privado, Manhattan", year: "2025", guests: "24", hours: "4 h", bar: ["Dry Martini", "Manhattan"], note: "Cena en casa. Barra montada en la cocina, sin camareros de paso: sólo yo y veinticuatro copas.", image: "/images/c3_01.jpg", }, { name: "West Village", place: "Townhouse, Manhattan", year: "2025", guests: "70", hours: "5 h", bar: ["Negroni", "Daiquiri", "Vermut de la casa"], note: "Pedida de mano. Tres plantas y una sola barra en el jardín trasero, con carta corta para que nadie subiera a esperar.", image: "/images/c3_02.jpg", }, { name: "Dumbo", place: "Azotea privada, Brooklyn", year: "2024", guests: "140", hours: "6 h", bar: ["Americano", "Gimlet", "Whisky Sour"], note: "Fiesta de verano con el puente enfrente. Tragos largos y hielo de sobra: en julio, en una azotea, es la mitad del trabajo.", image: "/images/c3_03.jpg", }, { name: "Hudson Valley", place: "Granero privado, Nueva York", year: "2024", guests: "180", hours: "7 h", bar: ["Old Fashioned", "Whisky Sour", "Ponche de la casa"], note: "Boda de fin de semana a dos horas de la ciudad. Todo subido en furgoneta, incluida el agua para el hielo.", image: "/images/c3_04.jpg", }, { name: "Upper East Side", place: "Penthouse, Manhattan", year: "2024", guests: "12", hours: "2 h", bar: ["Boulevardier", "Sidecar"], note: "Cata privada en mesa. Doce personas, dos clásicos y cada receta escrita a mano para llevarse.", image: "/images/c3_05.jpg", }, ]; /* A form written as a sentence. The other concepts use a grid of labelled fields and a row of pills; this one has neither. */ function Blank({ id, label, value, onChange, placeholder, type = "text", min, }: { id: string; label: string; value: string; onChange: (v: string) => void; placeholder: string; type?: string; min?: string; }) { // A native date field renders dd/mm/aaaa plus a picker icon, and a number // field a spinner: neither fits the width of its placeholder text. const w = type === "date" ? 14 : type === "number" ? 5 : Math.max(placeholder.length, value.length) + 1; return ( <> onChange(e.target.value)} style={{ width: `${w}ch` }} className="max-w-full border-b border-[var(--ink)] bg-transparent px-0.5 pb-0.5 text-[var(--ink)] outline-none placeholder:text-[var(--dim)] focus:border-b-2" /> > ); } function SentenceForm() { const [f, setF] = useState({ name: "", date: "", place: "", guests: "", phone: "" }); const set = (k: keyof typeof f) => (v: string) => setF((p) => ({ ...p, [k]: v })); const send = () => { const msg = `Hola John, me llamo ${f.name || "—"}. ` + `El ${f.date || "—"} doy una fiesta en ${f.place || "—"} para ${f.guests || "—"} personas. ` + `Mi teléfono es ${f.phone || "—"}.`; window.open( `https://wa.me/${BARTENDER_PROFILE.whatsapp.replace(/[^0-9]/g, "")}?text=${encodeURIComponent(msg)}`, "_blank" ); }; return (
); } export default function ConceptThreePage() { const reduce = useReducedMotion(); const [i, setI] = useState(0); const n = NIGHTS.length; const night = NIGHTS[i]; const go = useCallback((d: number) => setI((p) => (p + d + n) % n), [n]); useEffect(() => { const onKey = (e: KeyboardEvent) => { if (e.key === "ArrowRight") go(1); if (e.key === "ArrowLeft") go(-1); }; window.addEventListener("keydown", onKey); return () => window.removeEventListener("keydown", onKey); }, [go]); return ({night.place} · {night.year}
{night.guests} invitados · {night.hours} · {night.bar.join(", ")}
El atelier
Una barra, las botellas justas y nadie esperando. Todo lo que no ayuda a eso sobra, y sale de la mesa.
Sólo hago eventos privados: casas, lofts, azoteas y fincas de Nueva York. Coctelería clásica, proporciones conocidas, cítrico exprimido en el momento y hielo cuidado. Monto, sirvo y recojo. A la mañana siguiente no queda rastro de que hubo una barra.
Reservar
Dime la fecha, la dirección y cuántos sois. Trabajo en los cinco condados y subo al valle del Hudson y a los Hamptons. Respondo el mismo día.
También en{" "} {BARTENDER_PROFILE.instagram}