import { useRef, useState } from "react"; import { SHOP } from "../config/shop.ts"; import { Breadcrumbs } from "../components/Breadcrumbs.jsx"; import { Carousel, FullGrid, Mockups, mockupSlides } from "../components/Gallery.jsx"; import { MoreVariations } from "../components/MoreVariations.jsx"; import { ProductDetails } from "../components/ProductDetails.jsx"; import { ProductGrid } from "../components/ProductGrid.jsx"; import { Strip } from "../components/Strip.jsx"; import { pickPrimary, useNow, usePrimary } from "../lib/hooks.ts"; import { left } from "../lib/life.ts"; export function Product({ trail, product, family, matching = [], alike = [], printful, shop, tiles, buyPrefix, review, preview = false, now: built }) { const primary = usePrimary("light"); const one = product[primary] ?? product.light; const now = useNow(built); const [index, setIndex] = useState(0); const [size, setSize] = useState(""); const box = useRef(null); const hold = useRef(null); const slides = mockupSlides(one.images, product.title); const at = index < slides.length ? index : 0; const variant = one.variants.find((each) => each.size === size) ?? one.variants[0]; const dead = Boolean(one.released) && left(one.released, now) <= 0; const jump = (i) => { setIndex(i); if (box.current?.open) box.current.close(); else hold.current?.scrollIntoView({ block: "start", behavior: "smooth" }); }; return (