feat(block2): market screen — discover seeds near you (offers UI)

Wires the 'coming soon' market card to a real discovery screen (mockups 04/05):
- MarketScreen: opens an OfferTransport lazily; local-first, so it degrades to a
  human 'set up sharing' prompt when no relay/area is set or the net is down.
- Discovers offers by the saved coarse area, lists them with human reciprocity
  labels (gift/swap/for sale), 'near you' (never exact location), price only for
  sales. Config sheet to set area + community servers (no bundled public relays).
- Threaded via TaneApp(social, socialSettings) — null keeps the card 'coming
  soon' (so Block 1 tests pass unchanged); main wires it live.
- i18n en/es/pt (market.*), reuses share.* for type labels.

3 market widget tests + home tests green; app_seeds analyzes clean.
This commit is contained in:
vjrj 2026-07-10 03:05:12 +02:00
parent 528b499209
commit c696956ee2
8 changed files with 637 additions and 16 deletions

View file

@ -323,5 +323,23 @@
"cutting": { "singular": "estaca", "plural": "estacas" },
"grams": { "singular": "grama", "plural": "gramas" },
"count": { "singular": "semente", "plural": "sementes" }
},
"market": {
"title": "Sementes perto de ti",
"subtitle": "O que outras pessoas partilham por perto",
"notSetUp": "Ainda não configuraste a partilha",
"notSetUpBody": "Adiciona um servidor comunitário e a tua zona para ver e partilhar sementes por perto. Tudo fica aproximado — nunca a tua morada exata.",
"setUp": "Configurar a partilha",
"searching": "A procurar pela tua zona…",
"empty": "Ainda não há sementes partilhadas perto de ti",
"near": "Perto de ti",
"configTitle": "Configuração de partilha",
"areaLabel": "Código de zona",
"areaHelp": "Mantém-se aproximado de propósito — a tua zona em geral, nunca um ponto exato.",
"serversLabel": "Servidores comunitários",
"serversHelp": "Um endereço por linha — de redes de sementes ou coletivos, não de uma empresa.",
"save": "Guardar",
"saved": "Guardado",
"wanted": "Procuro"
}
}