import { useState, useEffect } from "react";
import { Link } from "wouter";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Card } from "@/components/ui/card";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { ArrowLeft, ShoppingCart, Star, Plus, Loader2 } from "lucide-react";
import { supabase } from "@/lib/supabase";
import { useAuth } from "@/lib/auth";
interface Listing {
id: string;
title: string;
category: "achievement" | "code" | "service" | "credential";
price: number;
seller: string;
rating: number;
purchases: number;
image?: string;
}
export default function Marketplace() {
const { user } = useAuth();
const [listings, setListings] = useState
([]);
const [balance] = useState(2500);
const [selectedCategory, setSelectedCategory] = useState("all");
const [loading, setLoading] = useState(true);
useEffect(() => {
fetchListings();
}, [selectedCategory]);
const fetchListings = async () => {
try {
let query = supabase.from('marketplace_listings').select('*');
if (selectedCategory !== 'all') {
query = query.eq('category', selectedCategory);
}
const { data, error } = await query.order('created_at', { ascending: false });
if (!error && data) {
setListings(data.map(l => ({
id: l.id,
title: l.title,
category: l.category as any,
price: l.price,
seller: l.seller_id,
rating: 4.5,
purchases: l.purchase_count || 0
})));
}
} catch (err) {
console.error('Error fetching listings:', err);
} finally {
setLoading(false);
}
};
const filteredListings =
selectedCategory === "all"
? listings
: listings.filter((l) => l.category === selectedCategory);
const getCategoryColor = (category: string) => {
switch (category) {
case "achievement":
return "bg-yellow-500";
case "code":
return "bg-blue-500";
case "service":
return "bg-purple-500";
case "credential":
return "bg-green-500";
default:
return "bg-gray-500";
}
};
return (
{/* Header */}
{/* Category Tabs */}
All Items
Code
Achievements
Services
Credentials
{loading ? (
) : filteredListings.length === 0 ? (
No items found in this category
) : (
{filteredListings.map((listing) => (
{/* Category Badge */}
{listing.category}
{/* Title */}
{listing.title}
{/* Seller Info */}
{/* Rating & Purchases */}
{listing.rating}
{listing.purchases} purchased
{/* Price & Button */}
))}
)}
{/* Featured Section */}
Featured Sellers
{["CodeMaster", "TechGuru", "AchievmentHunter"].map((seller) => (
{seller}
★★★★★
))}
);
}