You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tapping an order should open a detail screen showing the full offer and letting the user start a
trade. Add app/p2p/orders/[id]/page.tsx that shows one order's details and an amount input with
a primary "Start trade" CTA (mock — logs the intent).
✅ Acceptance Criteria
New route app/p2p/orders/[id]/page.tsx.
New component(s) under frontend/components/p2p/order-detail/ (e.g. OrderDetail.tsx).
Display: counterparty (WalletBadge + name + rating/ops), price, available amount, min/max
limits, payment methods, settlement window — reuse the P2POrder shape from frontend/components/p2p/types.ts.
An amount input with validation against min/max limits and a computed "you receive" figure.
A primary "Start trade"Button (uses variant="primary"), plus a back affordance.
Use semantic brand tokens only — bg-card, text-foreground, text-muted-foreground, bg-primary, border-border, etc. No hardcoded hex. Reference: docs/guidelines/colors.md.
Typography is Satoshi (already global) — no font setup needed.
Light + dark: build both. Test with the theme toggle (bottom-right) — every screen must
look right in both themes.
Reuse existing components before building new ones: Button
(frontend/components/ui/Button), WalletBadge, TransactionList, TabBar, SearchBar, Reveal (frontend/components/motion/reveal.tsx).
Motion: wrap screen content / lists in <Reveal> for a subtle entrance; it already
honors prefers-reduced-motion.
Layout: mobile-first. Match existing screens — centered column, max-w-md, bg-background.
Data: mock data only (no backend). Keep mock arrays in the page file or a local mock.ts.
Copy: match the language of the surrounding screens (currently Spanish labels, e.g.
"Comprar", "Transacciones"). Don't introduce a new convention.
Definition of done:npm run lint + npx tsc --noEmit clean; screen renders at its route
in both themes; no changes to files outside the issue's declared scope.
📘 Description
Tapping an order should open a detail screen showing the full offer and letting the user start a
trade. Add
app/p2p/orders/[id]/page.tsxthat shows one order's details and an amount input witha primary "Start trade" CTA (mock — logs the intent).
✅ Acceptance Criteria
app/p2p/orders/[id]/page.tsx.frontend/components/p2p/order-detail/(e.g.OrderDetail.tsx).WalletBadge+ name + rating/ops), price, available amount, min/maxlimits, payment methods, settlement window — reuse the
P2POrdershape fromfrontend/components/p2p/types.ts.Button(usesvariant="primary"), plus a back affordance.app/p2p/orders/page.tsx(linking list→detail is handled in Issue Design a marketplace page for the project #5).🌎 References
frontend/components/p2p/types.ts(P2POrder,OrderUser,OrderLimits)frontend/components/TransactionCard/TransactionCard.tsx(styling reference)frontend/components/ui/Button/Button.tsx📜 Additional Notes
<Reveal>for entrance motion.Guidelines
bg-card,text-foreground,text-muted-foreground,bg-primary,border-border, etc. No hardcoded hex. Reference:docs/guidelines/colors.md.look right in both themes.
Button(
frontend/components/ui/Button),WalletBadge,TransactionList,TabBar,SearchBar,Reveal(frontend/components/motion/reveal.tsx).<Reveal>for a subtle entrance; it alreadyhonors
prefers-reduced-motion.max-w-md,bg-background.mock.ts."Comprar", "Transacciones"). Don't introduce a new convention.
aria-labels, keyboard-focusable controls.npm run lint+npx tsc --noEmitclean; screen renders at its routein both themes; no changes to files outside the issue's declared scope.