feat(ui): align inventory + detail with mockups (seed icons, green theme)

Visual pass toward docs/mockups (06 inventory, 07 item):
- Bundle the seedks icon font (chars a–k → seed pictograms: jar, packet, spoon…)
  and a SeedGlyph/QuantityKindIcon helper.
- Green app bar + pale-green canvas theme (buildTaneTheme).
- Inventory list: rounded-square photo thumbnail or green initial avatar, bold
  title, scientific-name subtitle, trailing edit pencil, styled category
  headers, rounded search field, seed-glyph empty state.
- Quantity selectors (quick-add + add-lot) show the seed pictogram + word;
  detail lot lines use the kind's glyph.
- Detail header restyled to mockup 07: category link + scientific name on the
  left, photo on the right.

watchInventory now also returns the linked species' scientific name (subtitle).
37 app tests green; seedks font verified in the Linux asset bundle.
This commit is contained in:
vjrj 2026-07-08 00:14:43 +02:00
parent e41ec9872b
commit 48e9d15772
12 changed files with 329 additions and 49 deletions

View file

@ -37,11 +37,48 @@ JSON por locale, compatible Weblate). Ver [`../../apps/app_seeds`](../../apps/ap
- **Editar nombres vernáculos** ("también conocida como": hoy solo lectura;
falta añadir/quitar — colección OR-Set).
- **Editar/borrar lotes** (se pueden añadir pero no modificar/eliminar).
- **Editar/borrar lotes** (se pueden añadir pero no modificar/eliminar). Falta
`updateLot`/`softDeleteLot` en el repo (hoy solo `addLot` en
[`variety_repository.dart`](../../apps/app_seeds/lib/data/variety_repository.dart))
y la afordancia en las tiles de lote de
[`variety_detail_screen.dart`](../../apps/app_seeds/lib/ui/variety_detail_screen.dart).
El soft-delete ya tiene infraestructura (`isDeleted`/tombstone vía `SyncColumns`).
- **Editar cantidad del lote**: la UI de alta solo ofrece 6 `QuantityKind` como
chips; falta campo para cantidad numérica (`precise`) y etiqueta libre (`label`),
que el modelo (`Quantity`) ya soporta.
- (Opcional) QR de recuperación de la semilla raíz; almacenamiento cifrado de
fotos fuera de la BD (hoy van como BLOB cifrado dentro de la BD, que cumple la
regla).
### Feedback de prueba (vjrj, 2026-07-07)
Tras probar la app: no se pueden editar unidades/cantidad ni editar/borrar lotes
(solo añadir) — **esperado**, cubierto por los pendientes de arriba. Echa en falta
la iconografía de los mockups (ver nota siguiente).
## Iconografía de los mockups (diseño futuro) 🎨
La app usa hoy **Material Icons genéricos**. Los iconos de los mockups **existen** ya
como font custom: **[`seedks.ttf`](../../seedks.ttf)** (raíz del repo, trackeado en
git), familia interna **"Seedks"**, **11 glifos** en `a``k` (U+0061U+006B), de la
misma época que [`../icons.svg`](../icons.svg) (2018). Preview renderizado:
[`../mockups/seedks-glyphs.png`](../mockups/seedks-glyphs.png).
Mapeo de glifos:
| Glifo | Icono | Glifo | Icono | Glifo | Icono |
|---|---|---|---|---|---|
| `a` | tarro | `e` | saco/bolsa | `i` | sobre |
| `b` | tarros (varios) | `f` | cucharilla | `j` | sobre vertiendo |
| `c` | búsqueda (lupa) | `g` | cuchara | `k` | semillas sueltas |
| `d` | mano compartiendo | `h` | taza | | |
**No** está cableado: falta declarar `fonts:` en
[`../../apps/app_seeds/pubspec.yaml`](../../apps/app_seeds/pubspec.yaml) y crear un
mapa codepoint→`IconData` (`fontFamily: 'Seedks'`). Recuperar la iconografía **no**
requiere SVGs nuevos. Iconos por familia/categoría y por unidad de cantidad =
trabajo de diseño para después del pulido del Bloque 1.
## Fuera de alcance (Bloque 2, no empezar) 🚫
Ofertas, mensajería, relays, Nostr, red de confianza, Ğ1, sincronización entre