Skip to content

Create Reusable Wallet Display and Copy Components #84

Description

@Lakes41

Difficulty: Advanced

Type: Refactor

Summary

Create reusable wallet address display components so wallet values are shown consistently, safely, and copyably across the dashboard.

Current Behaviour

The members page manually truncates wallet addresses using slice(0, 6) and slice(-4). Other current or future dashboard surfaces may display wallets differently, leading to inconsistent formatting and weaker usability.

Expected Behaviour

Wallet addresses should be displayed through a shared component that shortens long addresses, preserves access to the full value, supports copying, and handles invalid or missing wallet values gracefully.

Suggested Implementation

Add a utility such as formatWalletAddress() and a component such as WalletAddressText or WalletAddressCell. Use it in members tables, activity actor/entity displays, member details, verification surfaces, and any future integration lookup UI. Include accessible labels, optional copy-to-clipboard, and full-address tooltips or titles.

Files or Areas Likely Affected

  • apps/dashboard/components/
  • apps/dashboard/lib/formatters/
  • apps/dashboard/app/members/page.tsx
  • apps/dashboard/app/activity/page.tsx
  • apps/dashboard/lib/mock-data.ts
  • apps/dashboard/test/

Acceptance Criteria

  • Wallet addresses are formatted through a shared utility or component.
  • Full wallet addresses remain available through copy, title, or accessible label.
  • Missing or invalid wallet values render safely.
  • Members table uses the shared wallet display component.
  • Activity views use the shared wallet display component where wallet values appear.
  • Tests cover valid, invalid, missing, short, and mixed-case wallet values.

Additional Notes

This should only affect presentation. API payloads and repository records should continue storing full wallet addresses.

Metadata

Metadata

Assignees

Labels

GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardOfficial CampaignCampaign: Official Campaign

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