buildmymcpserver/apps/web/components
Marco Sadjadi 1c58977596
All checks were successful
Deploy to Production / deploy (push) Successful in 52s
feat: user menu + profile page + in-app subscription management
User-facing identity:
- UserMenu component in dashboard header: avatar (deterministic colour from
  email hash), email + name, current plan badge, dropdown to Profile /
  Billing / Support / Your data / (Admin panel if isAdmin) / Sign out
- /settings/profile: editable display name; email + phone shown read-only
  (changing them requires support ticket — magic-link flow assumed)
- GET + PATCH /v1/account/profile

In-app subscription management (no more Stripe Portal redirect for the
common flows — cancellation, plan switch, invoice viewing all in-app):
- Billing status now combines DB state with a live Stripe lookup of the
  subscription details + last 5 invoices. Single roundtrip.
- POST /v1/billing/cancel       → schedules cancel_at_period_end
- POST /v1/billing/reactivate   → undo scheduled cancel
- POST /v1/billing/change-plan  → prorated swap between any tier+cycle
- /settings/billing rewritten: current plan card with renew/cancel date,
  big cancel button + reactivate flow, plan-switcher grid, invoice list with
  PDF + hosted-invoice links
- Stripe portal still linked at the bottom as the escape hatch for rare
  actions (payment-method update, address change). New-subscription Checkout
  still uses Stripe-hosted Checkout (industry standard for PCI).

Stripe SDK v22 / API 2024-09 fix: current_period_end moved to subscription
items; updated read paths accordingly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 17:46:36 +02:00
..
ui feat(web): Next.js 15 shell — design tokens, landing, auth pages 2026-05-19 00:30:20 +02:00
code-block.tsx feat(web): Next.js 15 shell — design tokens, landing, auth pages 2026-05-19 00:30:20 +02:00
cookie-banner.tsx feat: Swiss-compliant launch — Impressum/AGB/Contact, support panel, DSG exports, cookie banner 2026-05-25 17:12:06 +02:00
docs-page.tsx feat(web): real 3-step wizard, settings, audit, docs, marketing pages 2026-05-19 18:20:31 +02:00
input.tsx feat(web): Next.js 15 shell — design tokens, landing, auth pages 2026-05-19 00:30:20 +02:00
install-snippets.tsx feat(web): dashboard, wizard, server detail, WS build stream, install snippets 2026-05-19 00:32:53 +02:00
json-ld.tsx feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
logo.tsx feat(web): Next.js 15 shell — design tokens, landing, auth pages 2026-05-19 00:30:20 +02:00
marketing-auth-buttons.tsx feat(web): country-code picker, auth-aware header, dedupe new-server CTA 2026-05-21 23:41:19 +02:00
marketing-mobile-menu.tsx fix(web): mobile menu background via inline style (Tailwind v4 quirk) 2026-05-23 18:43:57 +02:00
mobile-action-bar.tsx feat(web): mobile bottom action bar for + New server 2026-05-23 00:19:31 +02:00
site-banner.tsx fix(web): banner contrast meets WCAG AA 2026-05-21 19:31:34 +02:00
status-pill.tsx feat(web): Next.js 15 shell — design tokens, landing, auth pages 2026-05-19 00:30:20 +02:00
streaming-logs.tsx feat(web): dashboard, wizard, server detail, WS build stream, install snippets 2026-05-19 00:32:53 +02:00
user-menu.tsx feat: user menu + profile page + in-app subscription management 2026-05-25 17:46:36 +02:00