Downloads.jsx
1.0 kB · jsx · 30 lines
1import { useState } from "react";2import { tileUrl } from "../lib/shop.ts";3import { Carousel } from "./Gallery.jsx";4import { Icon } from "./Icon.jsx";56export function Downloads({ design, primary, tiles }) {7 const [index, setIndex] = useState(0);8 const url = (n) => tileUrl(design, primary, n);9 const slides = tiles.map((n) => ({ style: `tile-${n}`, thumb: url(n), full: url(n), link: url(n), alt: `${design} ${n}x${n}`, name: `${n}x${n}` }));10 const one = slides[index] ?? slides[0];11 return (12 <details className="drop files">13 <summary>14 <span>Downloads</span>15 <Icon name="expand_more" extra="small" />16 </summary>17 <div className="inside">18 <Carousel slides={slides} index={index} onIndex={setIndex} pixel label="Tile" />19 <p className="get">20 <a className="pill go wide" href={one.link} download>21 <Icon name="download" />22 <span>23 Download <span>{one.name}</span>24 </span>25 </a>26 </p>27 </div>28 </details>29 );30}