feat(inventory): filter by category and lot form + a11y polish
Add filter chips above the inventory list, one per category in use and one per lot form actually held; results apply search ∧ category ∧ form. An active filter that empties the list shows a distinct 'no matches' state and a clear-filters button. VarietyListItem now carries the set of lot forms it holds (one aggregate query), and the stream re-emits on lot changes. Accessibility: category headers use the text theme so they honour the system font scale; the list avatar is excluded from semantics (the tile title already announces the name); the edit action uses the green action colour (≥3:1 on the canvas, up from 2.62:1). Add category/form/clear filter tests and a tap-target-size guideline test.
This commit is contained in:
parent
42c16c0e3f
commit
9558115c1e
9 changed files with 337 additions and 24 deletions
|
|
@ -268,6 +268,12 @@ class Translations$inventory$en {
|
|||
/// en: 'No seeds yet. Tap + to add your first.'
|
||||
String get empty => 'No seeds yet. Tap + to add your first.';
|
||||
|
||||
/// en: 'No seeds match your filters.'
|
||||
String get noMatches => 'No seeds match your filters.';
|
||||
|
||||
/// en: 'Clear filters'
|
||||
String get clearFilters => 'Clear filters';
|
||||
|
||||
/// en: 'Uncategorized'
|
||||
String get uncategorized => 'Uncategorized';
|
||||
}
|
||||
|
|
@ -984,6 +990,8 @@ extension on Translations {
|
|||
'inventory.title' => 'Inventory',
|
||||
'inventory.searchHint' => 'Search seeds',
|
||||
'inventory.empty' => 'No seeds yet. Tap + to add your first.',
|
||||
'inventory.noMatches' => 'No seeds match your filters.',
|
||||
'inventory.clearFilters' => 'Clear filters',
|
||||
'inventory.uncategorized' => 'Uncategorized',
|
||||
'quickAdd.title' => 'Add a seed',
|
||||
'quickAdd.labelField' => 'Name',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue