"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 (
Final policy recommendations compiled from validated community contributions.
No resolutions match your filters
Try adjusting your search or filters
Current resolutions available for policymakers and the public
{resolution.description}
Published
{new Date(resolution.date).toLocaleDateString()}
Contributions
{resolution.contributions} included
Categories
Past resolutions that have been delivered to policymakers
{resolution.description}
Published
{new Date(resolution.date).toLocaleDateString()}
Contributions
{resolution.contributions} included