Skip to content

Implement merchant payment invoice UI and components#78

Merged
codebestia merged 1 commit into
ShadeProtocol:mainfrom
rexx010:payment-profile-components
Jun 1, 2026
Merged

Implement merchant payment invoice UI and components#78
codebestia merged 1 commit into
ShadeProtocol:mainfrom
rexx010:payment-profile-components

Conversation

@rexx010
Copy link
Copy Markdown
Contributor

@rexx010 rexx010 commented May 31, 2026

Summary

This PR introduces four new core MVP frontend components for the shade-frontend project. The components are built with a focus on reusability, accessibility (via Radix UI primitives), and maintainability. All components currently utilize mock data and controlled states, making them fully future-ready for backend and smart contract integrations.

Changes

  • InvoiceRowActions Dropdown: Created a reusable kebab menu dropdown for invoice table rows using @radix-ui/react-dropdown-menu, featuring "View Details" and "Copy Payment Link" actions.
  • Invoice Cancellation Confirmation Modal: Implemented a destructive confirmation modal using @radix-ui/react-dialog with explicit user confirmation, accessible focus trapping, and warning styling.
  • PaymentMethodTabs Component: Added a responsive, accessible tab toggle interface using @radix-ui/react-tabs to seamlessly switch between "Connect Wallet" and "Manual Transfer" payment views.
  • ProfileDetailsForm Component: Built a strongly-typed, controlled form for editing merchant business profiles, fully decoupled with external mock data and interfaces (src/mocks/merchantProfile.ts, src/types/profile.ts).
  • Testing Setup & Coverage: Configured vitest and @testing-library/react, and wrote comprehensive unit tests verifying the rendering, interactions, and callbacks for all four components.

Verification

  • npm run typecheck
  • npm run format:check
  • npx vitest run (All 14 tests passing)

Notes

  • UI components are built using Tailwind CSS and Radix UI for out-of-the-box keyboard accessibility and focus management.
  • Strict TypeScript support is maintained across all files with clear props and interfaces.
  • Mock data has been purposefully extracted into dedicated files to ensure clean and seamless backend integration in subsequent phases.

Related Issues

Closes #28
Closes #32
Closes #39
Closes #49

@drips-wave
Copy link
Copy Markdown

drips-wave Bot commented May 31, 2026

@rexx010 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

Copy link
Copy Markdown
Contributor

@codebestia codebestia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!
Thanks

@codebestia codebestia merged commit 1abde39 into ShadeProtocol:main Jun 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants