feat: tiered pricing selector + split payment toggle #17

Closed
forgejo_admin wants to merge 1 commit from 10-billing-tiered-pricing-split-payment into main

Summary

Adds tiered pricing display and split payment schedule toggle to the billing page. Parents can now see all three pricing tiers (Cyprus Girls $160/mo, LCA $180/mo, Standard $200/mo) and toggle between full and split payment schedules.

Changes

  • billing.html -- Added Pricing Tier card with radio-style tier selector for three tiers
  • billing.html -- Added Payment Schedule card with full/split toggle showing due dates and amounts
  • billing.html -- Updated Subscription card to show tier name dynamically (Plan field updates on tier select)
  • billing.html -- Status banner subtitle updates dynamically when tier changes
  • billing.html -- Added page-specific CSS for tier options, schedule toggle, and schedule detail rows
  • billing.html -- Minimal JS for tier selection, schedule toggle, and amount recalculation

All existing billing UI (card on file, update card form, manage subscription, payment history) is unchanged. No other files modified. Uses existing CSS variables and patterns from shared/app.css.

Test Plan

  • Open billing.html in browser
  • Verify Standard Plan selected by default with $200/mo
  • Click Cyprus Girls tier -- subscription shows "Cyprus Girls Plan" at $160/mo, schedule amounts update
  • Click LCA tier -- shows "LCA Plan" at $180/mo
  • Toggle to Split Payment -- shows two rows: $80/$80 for Cyprus, $90/$90 for LCA, $100/$100 for Standard
  • Toggle back to Full Payment -- single row with full amount
  • Verify status banner subtitle updates with correct amount
  • Verify Update Card toggle still works
  • Verify all existing sections (card, invoices, manage subscription) unchanged

Review Checklist

  • Only billing.html modified -- no unrelated changes
  • Uses existing CSS variables from shared/app.css
  • All existing billing UI preserved unchanged
  • Minimal JS -- no frameworks, no dependencies
  • Visual verification passed
  • Plan: plan-wkq (traceability)
  • Forgejo issue: #10

Closes #10

## Summary Adds tiered pricing display and split payment schedule toggle to the billing page. Parents can now see all three pricing tiers (Cyprus Girls $160/mo, LCA $180/mo, Standard $200/mo) and toggle between full and split payment schedules. ## Changes - `billing.html` -- Added Pricing Tier card with radio-style tier selector for three tiers - `billing.html` -- Added Payment Schedule card with full/split toggle showing due dates and amounts - `billing.html` -- Updated Subscription card to show tier name dynamically (Plan field updates on tier select) - `billing.html` -- Status banner subtitle updates dynamically when tier changes - `billing.html` -- Added page-specific CSS for tier options, schedule toggle, and schedule detail rows - `billing.html` -- Minimal JS for tier selection, schedule toggle, and amount recalculation All existing billing UI (card on file, update card form, manage subscription, payment history) is unchanged. No other files modified. Uses existing CSS variables and patterns from `shared/app.css`. ## Test Plan - Open `billing.html` in browser - Verify Standard Plan selected by default with $200/mo - Click Cyprus Girls tier -- subscription shows "Cyprus Girls Plan" at $160/mo, schedule amounts update - Click LCA tier -- shows "LCA Plan" at $180/mo - Toggle to Split Payment -- shows two rows: $80/$80 for Cyprus, $90/$90 for LCA, $100/$100 for Standard - Toggle back to Full Payment -- single row with full amount - Verify status banner subtitle updates with correct amount - Verify Update Card toggle still works - Verify all existing sections (card, invoices, manage subscription) unchanged ## Review Checklist - [x] Only `billing.html` modified -- no unrelated changes - [x] Uses existing CSS variables from `shared/app.css` - [x] All existing billing UI preserved unchanged - [x] Minimal JS -- no frameworks, no dependencies - [x] Visual verification passed ## Related - Plan: `plan-wkq` (traceability) - Forgejo issue: #10 Closes #10
Show three pricing tiers (Cyprus Girls $160, LCA $180, Standard $200) with
radio-style selector, and a full/split payment schedule toggle that updates
amounts dynamically across the subscription summary and status banner.

Closes #10

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Author
Owner

Self-Review -- PASS

Reviewed diff against all 6 acceptance criteria from #10. No issues found.

Checklist:

  • Subscription section shows tier name (Standard/Cyprus Girls/LCA) with amount
  • Payment schedule section visible with full vs split toggle
  • Visual distinction between three tiers ($160/$180/$200) via radio-style cards
  • Split payment toggle shows half-amount schedule (1st + 15th)
  • Existing billing UI unchanged (card on file, invoices, manage subscription)
  • Uses existing CSS variables from shared/app.css
  • Only billing.html modified -- no unrelated files
  • HTML + CSS + minimal JS only, no frameworks
## Self-Review -- PASS Reviewed diff against all 6 acceptance criteria from #10. No issues found. **Checklist:** - [x] Subscription section shows tier name (Standard/Cyprus Girls/LCA) with amount - [x] Payment schedule section visible with full vs split toggle - [x] Visual distinction between three tiers ($160/$180/$200) via radio-style cards - [x] Split payment toggle shows half-amount schedule (1st + 15th) - [x] Existing billing UI unchanged (card on file, invoices, manage subscription) - [x] Uses existing CSS variables from `shared/app.css` - [x] Only `billing.html` modified -- no unrelated files - [x] HTML + CSS + minimal JS only, no frameworks
Author
Owner

Closing — billing tier UX needs Lucas's design review. AI-designed without user input violates playground philosophy.

Closing — billing tier UX needs Lucas's design review. AI-designed without user input violates playground philosophy.
Author
Owner

Closing — dashboard prototypes will move to a separate westside-app-playground repo. This repo is now scoped to landing site work only.

Closing — dashboard prototypes will move to a separate westside-app-playground repo. This repo is now scoped to landing site work only.
Author
Owner

Closing — dashboard prototypes will move to a separate westside-app-playground repo. This repo is now scoped to landing site work only.

Closing — dashboard prototypes will move to a separate westside-app-playground repo. This repo is now scoped to landing site work only.
forgejo_admin closed this pull request 2026-03-27 10:46:52 +00:00

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
forgejo_admin/westside-playground!17
No description provided.