diff --git a/app/admin/(dashboard)/products/CategoryAccordion.tsx b/app/admin/(dashboard)/products/CategoryAccordion.tsx new file mode 100644 index 0000000..2674b02 --- /dev/null +++ b/app/admin/(dashboard)/products/CategoryAccordion.tsx @@ -0,0 +1,108 @@ +'use client' + +import { useState } from 'react' +import { Pencil, Image as ImageIcon, ChevronDown } from 'lucide-react' +import Image from 'next/image' +import Link from 'next/link' +import DeleteButton from './DeleteButton' + +type Product = { + id: number + name_tr: string + price: any + status: number | null + image_url: string | null +} + +type Category = { + id: number + name_tr: string + products: Product[] +} + +export default function CategoryAccordion({ category, defaultOpen = false }: { category: Category, defaultOpen?: boolean }) { + const [isOpen, setIsOpen] = useState(defaultOpen) + + return ( +
+ + +
+
+ {category.products.length > 0 ? ( +
+ + + + + + + + + + + + {category.products.map((product) => ( + + + + + + + + ))} + +
ResimİsimFiyatDurumİşlemler
+ {product.image_url ? ( +
+ {product.name_tr} +
+ ) : ( +
+ +
+ )} +
{product.name_tr}₺{product.price.toString()} + + {product.status === 1 ? 'Aktif' : 'Pasif'} + + +
+ + + + +
+
+
+ ) : ( +
+ Bu kategoride henüz ürün bulunmuyor. +
+ )} +
+
+
+ ) +} diff --git a/app/admin/(dashboard)/products/page.tsx b/app/admin/(dashboard)/products/page.tsx index 1c0b7be..1271718 100644 --- a/app/admin/(dashboard)/products/page.tsx +++ b/app/admin/(dashboard)/products/page.tsx @@ -1,8 +1,7 @@ import prisma from '@/lib/prisma' -import { Pencil, Plus, Image as ImageIcon } from 'lucide-react' -import Image from 'next/image' +import { Plus } from 'lucide-react' import Link from 'next/link' -import DeleteButton from './DeleteButton' +import CategoryAccordion from './CategoryAccordion' export const metadata = { title: 'Ürün Yönetimi - Admin', @@ -30,73 +29,9 @@ export default async function ProductsPage() { -
+
{categories.map((category) => ( -
-
-

{category.name_tr}

- - {category.products.length} ürün - -
- - {category.products.length > 0 ? ( -
- - - - - - - - - - - - {category.products.map((product) => ( - - - - - - - - ))} - -
ResimİsimFiyatDurumİşlemler
- {product.image_url ? ( -
- {product.name_tr} -
- ) : ( -
- -
- )} -
{product.name_tr}₺{product.price.toString()} - - {product.status === 1 ? 'Aktif' : 'Pasif'} - - -
- - - - -
-
-
- ) : ( -
- Bu kategoride henüz ürün bulunmuyor. -
- )} -
+ ))}