Description
Database views support filtering by property values via the filter bar, but there's no quick way to search/filter rows by title text. In Notion, the filter bar includes a search input that instantly narrows visible rows by matching against the row title. For databases with many rows, this is the fastest way to find a specific entry without setting up a formal filter rule.
This adds a search input to the database toolbar that client-side filters rows by title substring match (case-insensitive). It complements the existing filter engine without replacing it.
Acceptance Criteria
Dependencies
None
Technical Notes
- The filter engine in
src/components/database/hooks/use-database-filters.ts already produces filteredRows. Add a second filtering step for the search text, or integrate into the existing useMemo chain in database-view-client.tsx.
- Row titles come from
row.title (the page title of the row page). This is already available in the row data passed to views.
- Keep this client-side only — no new API calls or database queries needed.
- Place the search input in the toolbar area defined in
database-view-client.tsx, near the existing filter/sort buttons.
- Use shadcn/ui
Input component with a search icon from lucide-react.
- Reference
.agents/design.md for input styling (sharp corners, muted placeholder text).
Approval Required
This is a HIGH risk enhancement because it adds new interactive UI to the database toolbar, which has been a high-churn area (20+ UI regression bugs in the last 7 days). The toolbar layout, filter interaction, and view-switching logic are tightly coupled. Comment "approved" to release to the automation queue.
Description
Database views support filtering by property values via the filter bar, but there's no quick way to search/filter rows by title text. In Notion, the filter bar includes a search input that instantly narrows visible rows by matching against the row title. For databases with many rows, this is the fastest way to find a specific entry without setting up a formal filter rule.
This adds a search input to the database toolbar that client-side filters rows by title substring match (case-insensitive). It complements the existing filter engine without replacing it.
Acceptance Criteria
pnpm lint && pnpm typecheck && pnpm testpassDependencies
None
Technical Notes
src/components/database/hooks/use-database-filters.tsalready producesfilteredRows. Add a second filtering step for the search text, or integrate into the existinguseMemochain indatabase-view-client.tsx.row.title(the page title of the row page). This is already available in the row data passed to views.database-view-client.tsx, near the existing filter/sort buttons.Inputcomponent with a search icon fromlucide-react..agents/design.mdfor input styling (sharp corners, muted placeholder text).Approval Required
This is a HIGH risk enhancement because it adds new interactive UI to the database toolbar, which has been a high-churn area (20+ UI regression bugs in the last 7 days). The toolbar layout, filter interaction, and view-switching logic are tightly coupled. Comment "approved" to release to the automation queue.