feat(fwc26): hover/focus PreviewCard on BillingHistory - #839
Merged
greatest0fallt1me merged 3 commits intoJul 29, 2026
Merged
Conversation
Closes #FWC26 - Extend PreviewCardData with billing fields: txHash, network, confirmations, type, amount, direction, timestamp - Auto-detect billing mode; existing dashboard callers unaffected - Add BillingHistory page at /billing/history with filterable transaction table; each row triggers PreviewCard on hover/focus - Keyboard accessible: Tab to focus opens preview, Escape closes it and restores focus to the trigger (WCAG 2.1 AA) - aria-live polite region announces filter changes to screen readers - StatusBadge on every row (pattern + colour, WCAG 1.4.1) - Register route in App.tsx with NavLink and page title/description - 56 focused tests (25 PreviewCard + 31 BillingHistory), all passing - Add docs/BillingHistoryPreview.md with API reference and a11y notes
|
@obafemimathew01-hue 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! 🚀 |
Contributor
|
Merged into main via admin resolver (-X theirs). |
Contributor
|
Green across the board — merging. Thanks! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
feat(fwc26): Hover-triggered PreviewCard on BillingHistory with keyboard-accessible alternative
Summary
Implements the GrantFox FWC26 UI/UX requirement: each transaction row on the new Billing
History page reveals a compact floating preview card on hover or keyboard focus, surfacing
on-chain details without navigating away.
Changes
src/components/PreviewCard.tsx
Extended PreviewCardData with 7 billing-specific fields: txHash, network, confirmations, type,
amount, direction, and timestamp. A isBillingCard flag auto-selects the billing layout when any
of those fields are present — existing dashboard callers are unaffected.
src/pages/BillingHistory.tsx (new)
Billing history page at /billing/history. Renders a responsive, filterable transaction table
(filter by type, status, direction, and free-text search). Each row's description cell is
wrapped in a PreviewCard trigger that opens on hover or focus and shows the tx hash, network,
confirmation count, direction badge, USDC amount, and timestamp.
src/App.tsx
Registered the /billing/history route, added a NavLink in the primary nav, and added page
title/description map entries.
docs/BillingHistoryPreview.md (new)
Full API reference for the new PreviewCardData billing fields, BillingHistory exports, WCAG
compliance table, design-token usage, and responsive notes.
Accessibility (WCAG 2.1 AA)
┌────────────────────┬──────────────────────────────────────────────────────────────────────┐
│ Criterion │ How it's met │
├────────────────────┼──────────────────────────────────────────────────────────────────────┤
│ 1.4.1 Use of Color │ Direction shown as text badge ("↑ credit" / "↓ debit"), not colour │
│ │ alone; StatusBadge adds texture pattern │
├────────────────────┼──────────────────────────────────────────────────────────────────────┤
│ 2.1.1 Keyboard │ All triggers are tabIndex={0} role="button"; Tab opens preview, │
│ │ Escape closes and restores focus │
├─────────────────────────┼─────────────────────────────────────────────────────────────────┤
│ 2.4.3 Focus Order │ suppressNextFocus guard prevents Escape → focus from │
│ │ immediately re-opening the panel │
├─────────────────────────┼─────────────────────────────────────────────────────────────────┤
│ 4.1.2 Name, Role, Value │ Trigger: aria-label, aria-describedby. Panel: role="tooltip", │
│ │ aria-label │
├─────────────────────────┼─────────────────────────────────────────────────────────────────┤
│ 4.1.3 Status Messages │ Filter changes announced via role="status" aria-live="polite" │
└─────────────────────────┴─────────────────────────────────────────────────────────────────┘
Tests
56 new focused tests, all passing:
billing mode (FWC26)
integration, all filter variants, empty state, ARIA semantics, and table content
Test Files 2 passed (2)
Tests 56 passed (56)
What was not changed
No existing tests were broken. Pre-existing failures in ApiCard, EmptyState, and FiltersSidebar
are unrelated to this PR.
closes #709