"use client" import { useState } from "react" import Link from "next/link" import { ArrowRight, ArrowUpDown, Download, FileText, Filter, Search, SortAsc, SortDesc } from "lucide-react" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" import { Badge } from "@/components/ui/badge" import { Separator } from "@/components/ui/separator" import { Input } from "@/components/ui/input" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" // Mock data for resolutions const mockResolutions = [ { id: 12, title: "Education and Community Health Improvements", description: "A comprehensive set of recommendations for improving education access and community health services", date: "2024-02-15", contributions: 8, categories: ["Education", "Healthcare"], status: "active", }, { id: 11, title: "Environmental Protection and Green Spaces", description: "Recommendations for preserving and expanding green spaces and environmental protections", date: "2024-01-10", contributions: 6, categories: ["Environmental Policy"], status: "active", }, { id: 10, title: "Public Transportation and Infrastructure", description: "Proposals for improving public transportation access and infrastructure maintenance", date: "2023-12-05", contributions: 7, categories: ["Infrastructure"], status: "archived", }, ] // Add state for search, filter, and sort export default function ResolutionsPage() { const [searchQuery, setSearchQuery] = useState("") const [categoryFilter, setCategoryFilter] = useState("all") const [statusFilter, setStatusFilter] = useState("all") const [sortOrder, setSortOrder] = useState<"asc" | "desc">("desc") const [sortBy, setSortBy] = useState<"contributions" | "date">("date") // Filter and sort the resolutions const filteredResolutions = mockResolutions.filter((resolution) => { // Filter by search query if ( searchQuery && !resolution.title.toLowerCase().includes(searchQuery.toLowerCase()) && !resolution.description.toLowerCase().includes(searchQuery.toLowerCase()) ) return false // Filter by category if (categoryFilter !== "all" && !resolution.categories.includes(categoryFilter)) return false // Filter by status if (statusFilter !== "all" && resolution.status !== statusFilter) return false return true }) // Sort the filtered resolutions const sortedResolutions = [...filteredResolutions].sort((a, b) => { if (sortBy === "contributions") { return sortOrder === "desc" ? b.contributions - a.contributions : a.contributions - b.contributions } else { const dateA = new Date(a.date).getTime() const dateB = new Date(b.date).getTime() return sortOrder === "desc" ? dateB - dateA : dateA - dateB } }) // Group resolutions by status const activeResolutions = sortedResolutions.filter((r) => r.status === "active") const archivedResolutions = sortedResolutions.filter((r) => r.status === "archived") // Add the search, filter, and sort UI return (

Resolutions

Final policy recommendations compiled from validated community contributions.

{/* Filters and Search */}
setSearchQuery(e.target.value)} />
Sort by setSortBy("contributions")}> Contributions {sortBy === "contributions" && "✓"} setSortBy("date")}>Date {sortBy === "date" && "✓"} setSortOrder(sortOrder === "desc" ? "asc" : "desc")}> {sortOrder === "desc" ? "Ascending" : "Descending"}
{filteredResolutions.length === 0 ? (

No resolutions match your filters

Try adjusting your search or filters

) : ( <> {statusFilter !== "archived" && activeResolutions.length > 0 && ( <>

Active Resolutions

Current resolutions available for policymakers and the public

{activeResolutions.map((resolution) => (
Resolution #{resolution.id} {resolution.title}
Active

{resolution.description}

Published

{new Date(resolution.date).toLocaleDateString()}

Contributions

{resolution.contributions} included

Categories

{resolution.categories.map((category) => ( {category} ))}
))}
)} {statusFilter !== "active" && archivedResolutions.length > 0 && ( <>

Archive

Past resolutions that have been delivered to policymakers

{archivedResolutions.map((resolution) => (
Resolution #{resolution.id} {resolution.title}
Archived

{resolution.description}

Published

{new Date(resolution.date).toLocaleDateString()}

Contributions

{resolution.contributions} included

))}
)} )}
) }