feat(legal): add /policies, /contact, /promotions for Stripe verification
All checks were successful
Mirror to GitHub / mirror (push) Successful in 5s
CI / frontend (pull_request) Successful in 6m45s
CI / e2e (pull_request) Successful in 10m15s
CI / backend (pull_request) Successful in 11m10s

Adds the consolidated Customer Policies doc covering customer service contact,
return / refund / dispute policy, cancellation policy, U.S. legal and export
restrictions, and promotional terms. Companion /contact page surfaces the
business phone (470) 949-4131 alongside the support/sales/billing/security
inboxes and target response SLAs. /promotions page exists as a stub so the
cross-reference in Policies §6.2 is live; it states no promotions are
currently active and will be appended to when offers run.

Refresh Privacy and Terms footers to point at /contact + /policies and drop
the stale hello@ mailto. Landing footer now exposes Privacy / Terms /
Policies / Contact links so Stripe's site review can reach them in one hop
from the marketing surface.

Mailing address is deferred until a P.O. Box is set up — left as an
in-source TODO and displayed publicly as "available on request" so we
don't ship a placeholder address.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-11 01:57:58 -04:00
parent 3f04911070
commit 4bd34c009f
7 changed files with 341 additions and 3 deletions

View File

@@ -24,6 +24,9 @@ const PrivacyPage = lazyWithRetry(() => import('@/pages/PrivacyPage'))
const TermsPage = lazyWithRetry(() => import('@/pages/TermsPage'))
const PricingPage = lazyWithRetry(() => import('@/pages/PricingPage'))
const ContactSalesPage = lazyWithRetry(() => import('@/pages/ContactSalesPage'))
const ContactPage = lazyWithRetry(() => import('@/pages/ContactPage'))
const PoliciesPage = lazyWithRetry(() => import('@/pages/PoliciesPage'))
const PromotionsPage = lazyWithRetry(() => import('@/pages/PromotionsPage'))
// Standalone auth pages
const VerifyEmailPage = lazyWithRetry(() => import('@/pages/VerifyEmailPage'))
@@ -145,6 +148,21 @@ export const router = sentryCreateBrowserRouter([
element: page(ContactSalesPage),
errorElement: <RouteError />,
},
{
path: '/contact',
element: page(ContactPage),
errorElement: <RouteError />,
},
{
path: '/policies',
element: page(PoliciesPage),
errorElement: <RouteError />,
},
{
path: '/promotions',
element: page(PromotionsPage),
errorElement: <RouteError />,
},
{
path: '/login',
element: <LoginPage />,