"use client"; import { useEffect, useState } from "react"; import Filter from "@/components/customui/Filter"; import Card from "@/components/customui/Card"; //Interfaces interface Feature { id: number; details: string; } interface Offer { id: number; details: string; } interface CreditCard { id: number; name: string; bankname: string; minSalary: number; annualFee: string; image: string; features: Feature[]; offers: Offer[]; } // Helper: Parse salary from "30K" or "20000 AED" const parseSalary = (salaryStr: string | undefined): number => { if (!salaryStr) return 0; const cleaned = salaryStr.replace(/\D/g, ""); const number = parseInt(cleaned, 10); return isNaN(number) ? 0 : salaryStr.toUpperCase().includes("K") ? number * 1000 : number; }; const Page = () => { const [cards, setCards] = useState([]); const [filteredCards, setFilteredCards] = useState([]); const [selectedFilters, setSelectedFilters] = useState<{ banks: string[]; features: string[]; salary: string }>({ banks: [], features: [], salary: "50000", }); useEffect(() => { fetch("/api/creditcards") .then((res) => res.json()) .then((data: CreditCard[]) => { setCards(data); setFilteredCards(data); }) .catch((err) => console.error("API Fetch Error:", err)); }, []); useEffect(() => { const filtered = cards.filter((card: CreditCard) => { return ( (selectedFilters.banks.length === 0 || selectedFilters.banks.includes(card.bankname)) && (selectedFilters.features.length === 0 || selectedFilters.features.some((feature) => card.features.includes(feature))) && (card.minSalary <= parseInt(selectedFilters.salary)) ); }); setFilteredCards(filtered); }, [selectedFilters, cards]); return (
{/* Breadcrumbs */} {/*
{getBreadcrumb()}
{/* Dynamic Heading */} {/*

{getHeading()}

*/} {/* Cards List */} {cards.length === 0 ? (

No cards available.

) : (
{cards.map((card, index) => ( ))}
)}
); }; export default Page;