ZH
测试版翻译

@core / kit-store

1.0.1 ▾
已验证MIT
GitHub

Next.js 网店套件:商品目录、购物车、Stripe 结账、订单、配送、优惠券、真实评价和账户

代码27 个文件上下文约 1024 个 token扫描通过

应用 .genpmignore 后将被注入的确切目录树。固定于

src/app/(store)/_components/product-grid.tsx只读 · 6a45dae
import type { ReactNode } from 'react';
import type { ProductSummary } from '@/lib/catalog';
import { ProductCard } from './product-card';
import './store.css';

export function ProductGrid(p: { title: string; intro?: ReactNode; products: ProductSummary[]; page: number; pages: number; basePath: string; query?: Record<string, string>; filters?: ReactNode }) {
  const href = (n: number) => {
    const q = new URLSearchParams({ ...(p.query ?? {}), ...(n > 1 && { page: String(n) }) });
    const s = q.toString();
    return s ? `${p.basePath}?${s}` : p.basePath;
  };
  return (
    <main className="blk store">
      <h1>{p.title}</h1>
      {p.intro}
      {p.filters}
      {p.products.length ? (
        <ul className="blk-grid blk-grid--4 store-grid" role="list">
          {p.products.map((product) => (
            <li key={product.id}>
              <ProductCard product={product} />
            </li>
          ))}
        </ul>
      ) : (
        <p>No products found.</p>
      )}
      {p.pages > 1 && (
        <nav aria-label="Pagination" className="ui-pagination">
          {p.page > 1 && (
            <a className="ui-button ui-button--sm" href={href(p.page - 1)} rel="prev">
              Previous
            </a>
          )}
          <span aria-current="page">
            Page {p.page} of {p.pages}
          </span>
          {p.page < p.pages && (
            <a className="ui-button ui-button--sm" href={href(p.page + 1)} rel="next">
              Next
            </a>
          )}
        </nav>
      )}
    </main>
  );
}

举报 @core/kit-store

使用 GitHub 登录后才能举报包。