TheBird

Designs.jsx

1.4 kB · jsx · 44 lines

1import { Breadcrumbs } from "../components/Breadcrumbs.jsx";2import { Life } from "../components/Life.jsx";3import { MORE_TILE, SHOP } from "../config/shop.ts";4import { PRIMARIES, tileUrl } from "../lib/shop.ts";56export function DesignCard({ design, life = true, now }) {7  return (8    <a className="card" href={`${SHOP}?design=${design.design}`}>9      <span className="shot">10        {PRIMARIES.map((primary) => (11          <img key={primary} className={`pixel ${primary}`} src={tileUrl(design.design, primary, MORE_TILE)} alt={design.design} width="270" height="270" loading="lazy" decoding="async" />12        ))}13      </span>14      <h3 className="mono">{design.design}</h3>15      <span className="price">16        {design.count} {design.count === 1 ? "product" : "products"}17        {life ? <> · <Life born={design.released} now={now} /></> : null}18      </span>19    </a>20  );21}2223export function DesignGrid({ designs, now }) {24  return (25    <div className="grid designs">26      {designs.map((one) => (27        <DesignCard key={one.design} design={one} now={now} />28      ))}29    </div>30  );31}3233export function Designs({ trail, title, lead, designs, now }) {34  return (35    <div className="wrap">36      <Breadcrumbs trail={trail} />37      <div className="page-head">38        <h1>{title}</h1>39        {lead ? <p className="lead">{lead}</p> : null}40      </div>41      <DesignGrid designs={designs} now={now} />42    </div>43  );44}