bazar/app/(root)/[category]/page.tsx

93 lines
2.8 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import React from 'react';
import { notFound } from 'next/navigation';
import { BreadcrumbsCategory } from '@/components/shared/breadcrumbs-category';
import { BlockAdts } from '@/components/shared/block-adts';
import { prisma } from '@/prisma/prisma-client';
type Params = Promise<{ category: string }>
export default async function CategoryPage(props: { params: Params }) {
const params = await props.params;
const categorySlug = params.category;
const category = await prisma.category.findFirst({
where: {
slug: categorySlug
},
include: {
adts: true,
children: {
include: {
adts: true
}
},
parent: true
}
});
if (!category) {
return notFound();
}
// Объединяем объявления текущей категории и всех подкатегорий
const allAdts = [
...category.adts,
...category.children.flatMap(child => child.adts)
];
// const aadts = await fetch(`/api/adt?category=${categorySlug}`).then(res => res.json());
return (
<main className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
<div className="mb-8">
<h1 className="text-3xl font-bold">{category.nameEn}</h1>
{category.parentId && (
<BreadcrumbsCategory category={category} />
)}
</div>
{category.children.length > 0 && (
<div className="mb-8">
<h2 className="text-xl font-semibold mb-4">Подкатегории</h2>
<div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4">
{category.children.map((subcat) => (
<a
key={subcat.id}
href={`/${subcat.slug}`}
className="p-4 border rounded-lg hover:border-indigo-500 transition-colors"
>
{subcat.nameEn}
</a>
))}
</div>
</div>
)}
<div>
<h2 className="text-xl font-semibold mb-4">Объявления</h2>
<BlockAdts category={categorySlug} />
{/* {allAdts.map((adt) => (
<div key={adt.id} className="border rounded-lg overflow-hidden hover:shadow-lg transition-shadow">
{adt.image && (
<img
src={adt.image}
alt={adt.title}
className="w-full h-48 object-cover"
/>
)}
<div className="p-4">
<h3 className="font-semibold text-lg mb-2">{adt.title}</h3>
<p className="text-gray-600 mb-2 line-clamp-2">{adt.description}</p>
<p className="text-lg font-bold text-indigo-600">
{adt.price ? `${adt.price} ₽` : 'Цена не указана'}
</p>
</div>
</div>
))} */}
</div>
</main>
);
}