Skip to content

No.194 · Data· New

Transaction Ledger

Account activity grouped by day with each day's net total: money in is marked, pending and missing-receipt items say so, and any row opens in place for details and a memo.

The prompt

Copy this text

Automatic copying is unavailable. Copy the selected text using your device’s copy command.

Written for the variant you picked above: Dark

Build an account activity ledger in a dark, precise fintech style: a #121214 panel with a 1px rgb(255 255 255 / 0.07) inner hairline and 16px corners, text #ededed, muted #8d8d93, Inter with tabular numbers, one periwinkle accent #8b93ff, credits in soft green #6ad8a0. Toolbar: a recessed segmented filter (All, Card, Transfers, Pending) as toggle buttons, and a search well with a 15px magnifier that matches merchant, category, memo and card digits. Below, entries sorted newest first and grouped by calendar day in a given time zone; each group has a sticky header with the day ('Today', 'Yesterday' via Intl.RelativeTimeFormat, otherwise 'Sun, Oct 4') and the day's net total on the right ('+$12,500.00'). Rows are full-width buttons with 10px corners that tint on hover: a 36px rounded monogram square tinted by the merchant name (⇄ for transfers, % for fees), the merchant and a muted sub-line ('Software · •1907' or 'Transfer · Incoming ACH'), a hairline 'Pending' pill, an amber '!' dot for a card purchase without a receipt, and the amount right-aligned (credits green with '+'). Opening a row reveals, indented under the name, a grid of Time, Card or Method, Status ('Pending, usually posts in 1–2 days') and Receipt (amber when missing), then a memo field with Save. Under 30rem, the pending and receipt marks hide and amounts sit beside the name. Selected variant — Dark (dark): Dark theme: panel #121214, raised rows #18181b, wells #0e0e10, text #ededed, muted #8d8d93, faint #5b5b61, hairlines rgb(255 255 255 / 0.07) and 0.14, accent #8b93ff, credit #6ad8a0, warning #f5a524, error #ff8a80; monograms at 30% lightness with pale text. This selection takes precedence over references to other themes or options in the general brief. Implement this selected appearance; do not add a variant picker or alternative appearances unless requested. Implementation requirements: Use React and TypeScript. Keep the component self-contained, with uniquely scoped CSS and no animation libraries. Include required imports, styles and font setup in the result. Interaction: Filters and search narrow the list (an empty state offers Clear filters). Rows toggle open with click or Enter; j/k or ↑/↓ move focus between rows. Memo saves on Enter or Save through onMemo; a rejection keeps the typed text and says so. Motion: Row tint fades over 120ms; details slide down 4px as they appear. Reduced motion removes both. Accessibility: Each day is a section labelled by its heading; rows are buttons with aria-expanded and aria-controls; the missing-receipt mark has a label; the result count is announced politely; memo results use role=status. Responsive behavior: The toolbar wraps; under 30rem the row grid collapses to monogram, name and amount, and details lose their indent. Touch: Rows are 56px tap targets; nothing depends on hover. Preserve keyboard access, visible focus and reduced-motion behavior. Keep fictional demo data and simulated service calls in a separate usage example; expose callbacks for real actions and recover from rejected requests. Keep usage-example links inside the demo: use local buttons or prevent navigation. Demonstration links must not navigate to Vitrine routes or open other pages; preserve real URL support in the reusable component itself. Verify the result at narrow and wide viewport sizes, with keyboard input and reduced motion enabled.

Notes

Interaction
Filters and search narrow the list (an empty state offers Clear filters). Rows toggle open with click or Enter; j/k or ↑/↓ move focus between rows. Memo saves on Enter or Save through onMemo; a rejection keeps the typed text and says so.
Motion
Row tint fades over 120ms; details slide down 4px as they appear. Reduced motion removes both.
Accessibility
Each day is a section labelled by its heading; rows are buttons with aria-expanded and aria-controls; the missing-receipt mark has a label; the result count is announced politely; memo results use role=status.
Responsive
The toolbar wraps; under 30rem the row grid collapses to monogram, name and amount, and details lose their indent.
On touch
Rows are 56px tap targets; nothing depends on hover.

Featured

333 components