Design system/Patterns
List with filter and search
Most pages in the app are a list. The pattern is fixed: a compact search box, a pill bar for filters, and a list of rows in a card, with two separate empty states for "nothing here yet" and "nothing found."
Live example
Type, or tap a filter. Search reads both the translated text and the Persian source, so it works in every language, and it understands Persian digits too.
Campaign briefMine
Contract review
Landing page designMine
Coordinate meeting with clientMine
Monthly expense report
Prepare product demo
Rules
- Search filters instantly; there's no "Search" button.
- The active filter is a charcoal pill, and "All" is always the first pill.
- The result count is announced when a filter is active.
- Long lists have "More" at the bottom, not numbered pages.
- The filtered empty state doesn't say "You haven't created anything yet"; it says "Nothing matches that search."
Sizes
Search box
TextField compact · 44px · 14pxTouch 48px · 16pxBox label
13px → 10.5pxTruncated with an ellipsisPill bar
gap 8pxPill
30px desktop · 34px phone · 42px touch inside mainActive pill
.pill-active · 12.94 : 1 · 14.62 : 1LoadMore
dashed-top · padding 10px 0 · .pill10 rows by defaultDo
The search box is type="search" with autoComplete="off".
Don't
A box that opens the browser's autofill history under it.
Do
Show the active filter in a pill, and let “All” be the way back.
Don't
A filter hidden away in a menu where nobody sees it.
Do
A “* left” count next to “Show * more”.
Don't
A “More” button that doesn't say how much is left.
Related pages