Remove reviews section from product pages
- Delete Reviews.tsx component - Remove Reviews from standard product page - Remove Reviews from made-to-order product page - Simplify page layout by removing review section Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Haiku 4.5
parent
74f9db6501
commit
10af792261
@@ -46,7 +46,9 @@
|
||||
"Bash(rm -rf .next node_modules/.cache)",
|
||||
"Bash(git commit -m 'Fix JSX syntax errors in DesignCanvas - close bracket issues *)",
|
||||
"Bash(rm -rf craft2prints)",
|
||||
"Bash(git commit -m 'Add design approval workflow and per-image dimension tracking *)"
|
||||
"Bash(git commit -m 'Add design approval workflow and per-image dimension tracking *)",
|
||||
"Bash(git commit -m 'Remove feedback messages to simplify design canvas layout *)",
|
||||
"Bash(git commit -m 'Remove reviews section from product pages *)"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ import { prisma } from '@/lib/prisma';
|
||||
import { toProductDTO } from '@/lib/product';
|
||||
import { fetchActivePromotions } from '@/lib/promotions';
|
||||
import ProductCard from '@/components/ProductCard';
|
||||
import Reviews from '@/components/Reviews';
|
||||
|
||||
const DesignCanvas = dynamic(() => import('@/components/DesignCanvas'), { ssr: false });
|
||||
|
||||
@@ -26,10 +25,6 @@ export default async function ProductDetailPage({ params }: { params: { slug: st
|
||||
<div className="mx-auto max-w-6xl px-6 py-12">
|
||||
<DesignCanvas product={product} />
|
||||
|
||||
<section className="mt-20 border-t border-line pt-12">
|
||||
<Reviews />
|
||||
</section>
|
||||
|
||||
{related.length > 0 && (
|
||||
<section className="mt-20 border-t border-line pt-12">
|
||||
<h2 className="mb-8 font-display text-3xl">You might also like</h2>
|
||||
|
||||
@@ -4,7 +4,6 @@ import { toProductDTO } from '@/lib/product';
|
||||
import { fetchActivePromotions } from '@/lib/promotions';
|
||||
import StandardProductView from '@/components/StandardProductView';
|
||||
import ProductCard from '@/components/ProductCard';
|
||||
import Reviews from '@/components/Reviews';
|
||||
|
||||
export default async function StandardProductPage({ params }: { params: { slug: string } }) {
|
||||
const activePromotions = await fetchActivePromotions();
|
||||
@@ -24,10 +23,6 @@ export default async function StandardProductPage({ params }: { params: { slug:
|
||||
<div className="mx-auto max-w-6xl px-6 py-12">
|
||||
<StandardProductView product={product} />
|
||||
|
||||
<section className="mt-20 border-t border-line pt-12">
|
||||
<Reviews />
|
||||
</section>
|
||||
|
||||
{related.length > 0 && (
|
||||
<section className="mt-20 border-t border-line pt-12">
|
||||
<h2 className="mb-8 font-display text-3xl">You might also like</h2>
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
// Placeholder reviews so the product page doesn't look empty. Swap this out for
|
||||
// real review data (its own Prisma model, or a reviews API) once you're ready.
|
||||
const SAMPLE_REVIEWS = [
|
||||
{
|
||||
name: 'Priya S.',
|
||||
rating: 5,
|
||||
body: 'The print came out exactly how I designed it. Fabric feels heavier than I expected in a good way.',
|
||||
},
|
||||
{
|
||||
name: 'Marcus T.',
|
||||
rating: 5,
|
||||
body: "Uploaded my own logo and it lined up perfectly. Shipping was faster than the estimate too.",
|
||||
},
|
||||
{
|
||||
name: 'Aisha K.',
|
||||
rating: 4,
|
||||
body: 'Great quality overall. Wish there were a couple more color options for this one.',
|
||||
},
|
||||
];
|
||||
|
||||
function Stars({ rating }: { rating: number }) {
|
||||
return (
|
||||
<span aria-label={`${rating} out of 5 stars`} className="text-splash-orange">
|
||||
{'★'.repeat(rating)}
|
||||
<span className="text-line">{'★'.repeat(5 - rating)}</span>
|
||||
</span>
|
||||
);
|
||||
}
|
||||
|
||||
export default function Reviews() {
|
||||
const average =
|
||||
Math.round((SAMPLE_REVIEWS.reduce((s, r) => s + r.rating, 0) / SAMPLE_REVIEWS.length) * 10) / 10;
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div className="flex items-baseline gap-4">
|
||||
<h2 className="font-display text-3xl">Reviews</h2>
|
||||
<div className="flex items-center gap-2">
|
||||
<Stars rating={Math.round(average)} />
|
||||
<span className="text-sm text-muted">
|
||||
{average} · {SAMPLE_REVIEWS.length} reviews
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="mt-8 grid gap-6 sm:grid-cols-3">
|
||||
{SAMPLE_REVIEWS.map((r) => (
|
||||
<div key={r.name} className="border border-line bg-surface p-5">
|
||||
<Stars rating={r.rating} />
|
||||
<p className="mt-3 text-sm text-ink">{r.body}</p>
|
||||
<p className="tag-label mt-4">{r.name}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user