Severity
P1 — i18n coverage
Context
PR-7 in the audit plan covered `marketing/pricing/sections/*` and `marketing/expert-modal.tsx` as i18n gaps. Investigation showed:
- `pricing/sections/{hero-landing,testimonials,features,pricing-faq}.tsx` are dead code — no caller references them. They're SaaS-Starter clone artifacts. The live pricing page renders `pricing-header.tsx`, `pricing-cards.tsx`, `compare-plans.tsx`, `pricing-faqs.tsx`, `enterprise-section.tsx` — all of which are already fully i18n'd.
- `pricing-faq.tsx` is imported but commented out in `content.tsx` line 32.
- `pricing/billing-info.tsx` and `pricing/forms/user-role-form.tsx` have Class 1 dead imports (separate issue).
- `pricing/forms/newsletter-form.tsx` is unused.
So the realistic scope shrinks to two live components:
- `marketing/expert-modal.tsx` — Select items hardcoded (project types, budgets, timelines)
- `marketing/pricing/billing-toggle.tsx` — aria-labels hardcoded
Changes
- Add to `expert.*`: `projectTypes.{website,ecommerce,mobile,custom,consulting}`, `budgets.{lt1000,1000to5000,5000to10000,gt10000}`, `timelines.{asap,oneMonth,oneToThreeMonths,threeToSixMonths}`, `toggleMonthlyAria`, `toggleYearlyAria` — Arabic translations for all
- `expert-modal.tsx` — wire SelectItem children to dict keys
- `billing-toggle.tsx` — wire aria-labels to dict keys
Acceptance criteria
Out of scope (separate PRs)
- Pricing dead-code cleanup — needs decision: delete `sections/*` and `pricing-faq.tsx` and `newsletter-form.tsx`?
- Class 1 dead imports in `billing-info.tsx` and `user-role-form.tsx`
Reference
Plan: PR-7 (scope revised to live components only).
Severity
P1 — i18n coverage
Context
PR-7 in the audit plan covered `marketing/pricing/sections/*` and `marketing/expert-modal.tsx` as i18n gaps. Investigation showed:
So the realistic scope shrinks to two live components:
Changes
Acceptance criteria
Out of scope (separate PRs)
Reference
Plan: PR-7 (scope revised to live components only).