Skip to content

[FEAT]: Add the Order Detail & "Start Trade" screen #320

Description

@grantfox-oss

📘 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.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.
  • Mock order data; light + dark correct.
  • Do not modify 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

  • Wrap the content in <Reveal> for entrance motion.
  • Keep the amount math client-side; no API calls.

Guidelines

  • Use semantic brand tokens onlybg-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.
  • Accessibility: semantic elements, aria-labels, keyboard-focusable controls.
  • 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.

Metadata

Metadata

Assignees

Labels

GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardOfficial Campaign | FWC26Campaign: Official Campaign | FWC26

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions