Components
Icon picker
A searchable catalog gives bookmarks and boards an optional recognizable symbol.
On this page
Purpose and placement
A searchable catalog gives bookmarks and boards an optional recognizable symbol.
Anatomy
- Search input
- Absolutely positioned results list
- Result icon and name
- Selected row with removal
Contract
| Input or boundary | Behavior |
|---|---|
| query | Trimmed lowercase substring |
| Results | First 40 catalog matches |
| Selection | label and className pair |
| Catalog | Lazy import in dashboard; direct import in board settings |
States and feedback
- No query: no list
- Query matches: scrollable suggestions
- Selected icon
- Cleared selection
Interaction and composition
Preserve the relationship between search field and results. Choosing an item stores its class and hides suggestions. A loaded existing record uses Selected icon as the display label instead of resolving the catalog name.
Responsive behavior
The list uses max-height 192px and scrolls. Its absolute placement can cover save actions or extend past the viewport.
Accessibility contract
Results are buttons, so tab/click work, but there are no combobox/listbox roles, active-descendant handling or arrow-key selection.
Known implementation gaps
No explicit no-icon-results feedback exists. The dashboard memo depends on query rather than the lazy-loaded catalog, so the first search may stay empty until the query changes after loading. Captures reproduce that next-keystroke interaction. Lazy loading has no loading announcement. Saved arbitrary classes may not have valid local glyphs.
Source references
| Repository file | Responsibility |
|---|---|
| app/(home)/AppHome.tsx | Dashboard search and selection |
| app/settings/boards/BoardsList.tsx | Settings icon picker |
| lib/icon-library.ts | Catalog |
Examples from the app
Actual Startboard source UI with isolated fictional records; both native themes at 2× resolution or higher. No live integrations or account writes. Captured at 2× resolution or higher. Select an image to inspect it full size.
Related topics
Source audit: 2026-10-08 · Revision 08fa2595a668 · Documentation v1.0.0