"use client" import { useEffect, useState, useCallback } from "react" import { DataTable } from "./_components/data-table" import { getColumns } from "./_components/columns" import { Hero } from "@/types/hero" import { heroService } from "@/services/heroService" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Plus } from "lucide-react" import { HeroDialog } from "./_components/hero-dialog" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" export default function HeroesPage() { const [data, setData] = useState([]) const [loading, setLoading] = useState(true) const [page, setPage] = useState(1) const [total, setTotal] = useState(0) const [perPage] = useState(20) const [search, setSearch] = useState("") const [statusFilter, setStatusFilter] = useState("with") // "with" shows active + deleted const [showCreateDialog, setShowCreateDialog] = useState(false) const fetchData = useCallback(async () => { setLoading(true) try { // API expects "active" logic differently perhaps? // checking task.md/heroService docs: // heroService.getHeroes(page, perPage, search, soft) // soft: 'only' | 'with' | empty (defaults to active in some apis, but checking service impl) // From service: soft param defaults to "with". const apiSoftFilter = statusFilter === "active" ? "" : statusFilter const res = await heroService.getHeroes(page, perPage, search, apiSoftFilter) setData(res.items || []) setTotal(res.total || 0) } catch (error) { console.error("Heroes fetch error:", error) setData([]) } finally { setLoading(false) } }, [page, perPage, search, statusFilter]) useEffect(() => { fetchData() }, [fetchData]) const totalPages = Math.ceil(total / perPage) return (

Hero Banner Yönetimi

Ana sayfa banner alanlarını yönetin.

setSearch(e.target.value)} className="max-w-sm" />
Sayfa {page} / {totalPages || 1}
) }