Skip to content

feat(customer-portal): redesign plans page cards - #9

Merged
rrader26 merged 1 commit into
mainfrom
feat/portal-plans-card-redesign
Jul 14, 2026
Merged

feat(customer-portal): redesign plans page cards#9
rrader26 merged 1 commit into
mainfrom
feat/portal-plans-card-redesign

Conversation

@rrader26

Copy link
Copy Markdown

What

Visual redesign of the customer-portal plans page (/customer-portal/:token/plans), which was rendering as a long wall of uneven boxes.

  • Interval toggle instead of duplicate cards. Monthly and annual variants of the same tier no longer each get a card. Each product section has a Monthly / Yearly segmented toggle and the grid shows only the selected interval, defaulting to the interval of the customer's active subscription. This cuts the Memory section from 6+ cards to 3. The toggle only renders when the product actually has more than one interval.
  • Cards look like standard SaaS pricing tiles. White elevated tiles with hover lift, a hero-sized price, a hairline divider, and a checkmark feature list. The per-product bordered container was dropped so the cards are the only bordered objects on the page.
  • Equal-height cards, full-width CTAs pinned to the bottom, so buttons align across a row instead of floating at whatever height the description ended.
  • Current plan is marked with a blue ring + "Current plan" chip rather than a filled blue card.
  • Prices drop trailing cents on whole amounts ($19 not $19.00), and plan names drop the now-redundant (Annual) suffix.

Notes

  • No new translation keys — interval labels reuse the existing getIntervalTranslationKey map from ~/core/constants/form.
  • The feature bullets are parsed from plan.description (lead-in, em-dash, comma-separated list). Descriptions that don't fit that shape fall back to a plain paragraph. If we want this durable, the follow-up is a features key in plan metadata.
  • No behavior/API changes: same queries, same mutations.

Test plan

  • tsc --noEmit and pnpm lint clean
  • Visual check on the portal (needs a valid portal token — not verified locally)

🤖 Generated with Claude Code

- Collapse duplicate monthly/annual plan cards into a per-product billing
  interval toggle, defaulting to the interval of the active subscription
- Restyle plan cards as standard SaaS pricing tiles: elevation, hover lift,
  hero price, divider, checkmark feature list parsed from the description
- Equal-height cards with full-width CTAs pinned to the bottom so buttons
  align across a row
- Mark the current plan with a blue ring and chip instead of a filled card

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@rrader26
rrader26 merged commit 8660c68 into main Jul 14, 2026
3 of 7 checks passed
@rrader26
rrader26 deleted the feat/portal-plans-card-redesign branch July 14, 2026 01:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants