"use client" import { useState } from "react" import Link from "next/link" import { Search, Filter, ArrowUpDown, Plus } from "lucide-react" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Badge } from "@/components/ui/badge" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs" // Mock data for issues const mockIssues = [ { id: "climate-action", title: "Climate Action Policies", description: "Discussion on policies to address climate change and reduce carbon emissions.", category: "Environmental Policy", status: "active", metrics: { perspectives: 324, insights: 18, contributions: 5 }, dateCreated: "2024-01-10" }, { id: "education-reform", title: "Education System Reform", description: "Ideas for improving educational outcomes and accessibility for all students.", category: "Education", status: "active", metrics: { perspectives: 187, insights: 12, contributions: 3 }, dateCreated: "2024-01-22" }, { id: "healthcare-access", title: "Healthcare Accessibility", description: "Solutions to make healthcare more affordable and accessible for everyone.", category: "Healthcare", status: "active", metrics: { perspectives: 256, insights: 15, contributions: 4 }, dateCreated: "2024-02-05" }, { id: "housing-affordability", title: "Housing Affordability Crisis", description: "Addressing the growing housing affordability crisis in urban areas.", category: "Infrastructure", status: "active", metrics: { perspectives: 210, insights: 8, contributions: 2 }, dateCreated: "2024-02-15" }, { id: "digital-privacy", title: "Digital Privacy Regulations", description: "Balancing innovation with personal privacy in the digital age.", category: "Technology", status: "active", metrics: { perspectives: 156, insights: 7, contributions: 1 }, dateCreated: "2024-02-28" } ] // Categories for filtering const categories = [ "All Categories", "Environmental Policy", "Education", "Healthcare", "Infrastructure", "Technology", "Economy", "Social Services" ] export default function IssuesPage() { const [selectedTab, setSelectedTab] = useState("all") const [searchQuery, setSearchQuery] = useState("") const [selectedCategory, setSelectedCategory] = useState("All Categories") const [sortBy, setSortBy] = useState("latest") // Filter issues based on search, category, and tab const filteredIssues = mockIssues.filter(issue => { // Search filter const matchesSearch = searchQuery ? issue.title.toLowerCase().includes(searchQuery.toLowerCase()) || issue.description.toLowerCase().includes(searchQuery.toLowerCase()) : true // Category filter const matchesCategory = selectedCategory === "All Categories" || issue.category === selectedCategory // Tab filter (all, trending, etc.) - simplified for demo const matchesTab = selectedTab === "all" || (selectedTab === "trending" && issue.metrics.perspectives > 200) return matchesSearch && matchesCategory && matchesTab }) // Sort issues const sortedIssues = [...filteredIssues].sort((a, b) => { if (sortBy === "latest") { return new Date(b.dateCreated).getTime() - new Date(a.dateCreated).getTime() } else if (sortBy === "popular") { return b.metrics.perspectives - a.metrics.perspectives } else if (sortBy === "insights") { return b.metrics.insights - a.metrics.insights } return 0 }) return (
Browse and contribute to active policy discussions
Try adjusting your filters or search terms
{issue.description}