feat(shell): home menu + navigation drawer (mockups 02/03)

The app now opens on a main menu instead of straight into the list:
- HomeScreen (mockup 02): sprout logo over a faint seed-glyph watermark, with
  big "Your inventory" (→ /inventory) and "Open market" (Block 2, "coming soon")
  destinations.
- AppDrawer (mockup 03): Inventory is live; the social items (market, profile,
  chat, wishlist, following, settings) are shown disabled with a "coming soon"
  tag so the roadmap is visible. Drawer is available on home and inventory.
- Routing: / → home, /inventory → list, /variety/:id → detail.

Tests: home shows the menu + navigates; drawer opens + navigates. quick-add flow
updated to go home → inventory. 50 green; Linux runs.
This commit is contained in:
vjrj 2026-07-08 12:22:42 +02:00
parent 17073dd560
commit 02a9d5bf39
11 changed files with 472 additions and 8 deletions

View file

@ -42,6 +42,8 @@ class Translations with BaseTranslations<AppLocale, Translations> {
// Translations
late final Translations$app$en app = Translations$app$en.internal(_root);
late final Translations$common$en common = Translations$common$en.internal(_root);
late final Translations$home$en home = Translations$home$en.internal(_root);
late final Translations$menu$en menu = Translations$menu$en.internal(_root);
late final Translations$inventory$en inventory = Translations$inventory$en.internal(_root);
late final Translations$quickAdd$en quickAdd = Translations$quickAdd$en.internal(_root);
late final Translations$detail$en detail = Translations$detail$en.internal(_root);
@ -87,6 +89,54 @@ class Translations$common$en {
/// en: 'Type'
String get type => 'Type';
/// en: 'Coming soon'
String get comingSoon => 'Coming soon';
}
// Path: home
class Translations$home$en {
Translations$home$en.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Open market'
String get openMarket => 'Open market';
/// en: 'Your inventory'
String get yourInventory => 'Your inventory';
}
// Path: menu
class Translations$menu$en {
Translations$menu$en.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Inventory'
String get inventory => 'Inventory';
/// en: 'Market'
String get market => 'Market';
/// en: 'Your profile'
String get profile => 'Your profile';
/// en: 'Chat'
String get chat => 'Chat';
/// en: 'Wishlist'
String get wishlist => 'Wishlist';
/// en: 'Following'
String get following => 'Following';
/// en: 'Settings'
String get settings => 'Settings';
}
// Path: inventory
@ -680,6 +730,16 @@ extension on Translations {
'common.delete' => 'Delete',
'common.edit' => 'Edit',
'common.type' => 'Type',
'common.comingSoon' => 'Coming soon',
'home.openMarket' => 'Open market',
'home.yourInventory' => 'Your inventory',
'menu.inventory' => 'Inventory',
'menu.market' => 'Market',
'menu.profile' => 'Your profile',
'menu.chat' => 'Chat',
'menu.wishlist' => 'Wishlist',
'menu.following' => 'Following',
'menu.settings' => 'Settings',
'inventory.title' => 'Inventory',
'inventory.searchHint' => 'Search seeds',
'inventory.empty' => 'No seeds yet. Tap + to add your first.',