[Page: Review] Apply Sage & Blush skin to /review page
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 65/100
Research direction
Start with review.html and the /review structure from #337, then inspect the Sage & Blush tokens from #341 and components from #342. Apply the specified card, chip, transaction, reasoning, action-button, badge, and empty-state styles. Done means every acceptance criterion is met on the review page, including the Lucide check-circle empty state.
Written by the indexing model from the issue text.
Description
Part of Epic #340 — Sage & Blush UI Redesign
Depends on: #337 (review flow structural redesign), #341 (tokens), #342 (components)
Layer 4 — Review page skin pass. The review flow redesign comes from #337; this ticket applies Sage & Blush.
Current State
The /review page (after #337 lands) shows transactions needing manual classification. Currently uses old blue accent, system font, rounded cards.
Desired State
Clean, action-oriented review experience. Uncertain transactions flagged with amber chips, unrouted with blush chips. Quick-action buttons in Sage & Blush style. Each transaction card is compact and scannable.
Changes Required
Transaction review cards
Each pending transaction gets a card:
.review-card {
border: 1px solid var(--border);
border-radius: var(--radius); /* 4px */
box-shadow: none;
padding: var(--space-4);
margin-bottom: var(--space-2);
}
/* Uncertain = amber left accent */
.review-card.uncertain { border-left: 3px solid var(--warning); }
/* Unrouted = blush left accent */
.review-card.unrouted { border-left: 3px solid var(--danger); }
Status chips
/* From #342 component layer */
.chip-uncertain {
background: var(--warning-bg);
color: var(--warning-fg);
border: 1px solid var(--warning-border);
border-radius: 2px;
font-size: var(--text-xs); /* 9px */
text-transform: uppercase;
letter-spacing: 0.06em;
padding: 2px 6px;
font-weight: 600;
}
.chip-unrouted {
background: var(--danger-bg);
color: var(--danger-fg);
border: 1px solid var(--danger-border);
/* same other properties */
}
In review.html (from #337), apply these chips:
<!-- Uncertain transaction -->
<span class="chip-uncertain">Uncertain</span>
<!-- Unrouted transaction -->
<span class="chip-unrouted">Unrouted</span>
Merchant + amount display
.review-merchant {
font-size: var(--text-sm); /* 11px */
font-weight: 600;
color: var(--text-strong);
}
.review-amount {
font-size: var(--text-xl); /* 16px */
font-variant-numeric: tabular-nums;
color: var(--danger); /* blush — most are expenses */
}
.review-amount.income { color: var(--income); } /* sage for income */
.review-date {
font-size: var(--text-xs); /* 9px */
color: var(--muted);
}
Classifier reasoning display
The reasoning block (from #337) should be styled as a subtle info callout:
.review-reasoning {
font-size: var(--text-xs); /* 9px */
color: var(--muted);
background: var(--bg-subtle);
border-left: 2px solid var(--border);
padding: var(--space-1) var(--space-2);
margin: var(--space-1) 0;
font-style: italic;
}
Action buttons
Route/classify buttons: rectangular (inherits from #342), use .btn-sm sizing.
- "Route" action →
.btn-primary(cobalt) - "Skip" →
.btn-secondary
Empty state
When all transactions are reviewed:
.review-empty {
text-align: center;
padding: var(--space-10);
color: var(--muted);
font-size: var(--text-sm);
}
Add Lucide icon: <i data-lucide="check-circle" style="color: var(--income);"></i>
Acceptance Criteria
- Review cards: 4px radius, 1px border, no shadow
- Uncertain cards: amber (
#C49A3C) left-border accent + amber chip - Unrouted cards: blush (
#B5624E) left-border accent + blush chip - Status chips: 9px uppercase, 2px radius, semantic colours
- Merchant text: 11px, bold
- Amounts: 16px tabular-nums, blush for expenses, sage for income
- Date: 9px, muted
- Reasoning callout: 9px, italic, bg-subtle, left-border separator
- Action buttons: rectangular, cobalt primary
- Empty state: centered Lucide check-circle in sage colour
- Page count badge ("3 items to review"): uses
.label-sm+ amber chip if count > 0
- Dominant language
- Python
- Stars
- 1
- Forks
- 1
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Riddy21/Friday_Budgeting_Pro
-
Contact Hong Opentask
Difficulty 5/5 Over a week Newbie friendliness 1/100
Riddy21/Friday_Budgeting_Pro#353 ·
-
enhancement frontend mobile ui
Difficulty 4/5 3-5 days Newbie friendliness 48/100
Riddy21/Friday_Budgeting_Pro#348 ·
-
enhancement frontend ui
Difficulty 4/5 3-5 days Newbie friendliness 52/100
Riddy21/Friday_Budgeting_Pro#346 ·
-
enhancement frontend ui
Difficulty 3/5 1-2 days Newbie friendliness 52/100
Riddy21/Friday_Budgeting_Pro#345 ·
-
enhancement frontend ui ux
Difficulty 4/5 3-5 days Newbie friendliness 55/100
Riddy21/Friday_Budgeting_Pro#344 ·
All issues in Riddy21/Friday_Budgeting_Pro
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
bancolombia/sentinel#23 ·
-
test md OpenCI
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100