Problem
The workspace list page shows all workspaces with no search or filtering. At scale, users cannot discover relevant spaces without scrolling through an unfiltered list.
Proposed Solution
Create frontend/cntr/WorkspaceFilter/WorkspaceFilterPanel.tsx. Props: onFilterChange: (filters: WorkspaceFilters) => void. WorkspaceFilters = { search: string, minCapacity?: number, maxPriceKobo?: number, amenities: string[] }. Renders: a debounced (300ms) text search input, a capacity number input, a max price input (displayed in ₦), and amenity checkboxes for at least 6 options. "Clear all" button resets all filters. All implementation must live inside frontend/cntr/.
Acceptance Criteria
Problem
The workspace list page shows all workspaces with no search or filtering. At scale, users cannot discover relevant spaces without scrolling through an unfiltered list.
Proposed Solution
Create
frontend/cntr/WorkspaceFilter/WorkspaceFilterPanel.tsx. Props:onFilterChange: (filters: WorkspaceFilters) => void.WorkspaceFilters = { search: string, minCapacity?: number, maxPriceKobo?: number, amenities: string[] }. Renders: a debounced (300ms) text search input, a capacity number input, a max price input (displayed in ₦), and amenity checkboxes for at least 6 options. "Clear all" button resets all filters. All implementation must live insidefrontend/cntr/.Acceptance Criteria
frontend/cntr/WorkspaceFilter/WorkspaceFilterPanel.tsxonFilterChangefrontend/cntr/WorkspaceFilter/WorkspaceFilterPanel.test.tsx