Files
redefined-designs/frontend/src/customer/PrivacyPolicy.tsx
T
bermudalambandClaude Opus 5 a700597440
SonarQube Analysis / sonarqube (pull_request) Canceled after 0s
Tests / lint (pull_request) Canceled after 0s
Tests / backend-unit (pull_request) Canceled after 0s
Tests / frontend-e2e (pull_request) Canceled after 0s
refactor: standardise antd imports and remove the avoidable any (#65)
Stage 1 of #65: this issue's original two lists. The type-checked gate it also owns follows in later stages.

Nine files imported antd from the barrel while the rest of the codebase used deep imports from antd/es. Both resolve to the same modules under antd v5 and Vite, so this is not the tree-shaking problem it would have been under v4 — the cost was that a documented convention had two spellings, and nobody reading a file could tell whether its style was deliberate or just old. Eighty-two imports converted, and every antd/es path was checked to exist before generating any of them rather than trusting a name-mangling rule.

The three `client: any` parameters in cartCheckout are now PoolClient. These functions run inside a transaction, and `any` removed exactly the check that would catch a pool-versus-client mix-up — which in this codebase means a query silently running outside the transaction it was meant to be part of, on the path that takes money.

publicCustomer took `any` and now takes a CustomerRow describing what it actually reads. Typed as its own shape rather than the whole table so that adding a column later — a password hash, a token, an internal note — cannot quietly start being echoed back to a customer.

The three `(window as any).paypal` casts are replaced by a declared interface for the injected SDK. It is deliberately narrow: it describes the three things this app calls, not the whole SDK, because a wider guess would be fiction and a wrong shape typed confidently is worse than an honest cast. The property is optional, since the SDK is absent until its script has loaded — which is the check both call sites already make.

Verified: 141 unit, 169 integration and 94 end-to-end passing. The end-to-end run is the one that matters here — an antd import migration can build cleanly and still break at runtime through styles or context, so a green tsc proves less than it appears to.

Lint drops from 8 warnings to 4 in the backend and 30 to 27 in the frontend, all of them the no-explicit-any this change removed. As a side effect the no-unsafe count that later stages exist to clear falls from 259 to 216 in the backend and 73 to 67 in the frontend, measured rather than estimated.

Refs #65
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 15:48:12 -05:00

52 lines
2.2 KiB
TypeScript
Executable File

import Typography from 'antd/es/typography';
import Card from 'antd/es/card';
const { Title, Paragraph } = Typography;
export default function PrivacyPolicy() {
return (
<div style={{ maxWidth: 720, margin: '48px auto', padding: '0 16px' }}>
<Card>
<Title level={2}>Privacy Policy</Title>
<Paragraph type="secondary">
This is a general-purpose starter policy. Have it reviewed by a lawyer before relying on it
it is not legal advice and may not reflect your specific obligations.
</Paragraph>
<Title level={4}>What we collect</Title>
<Paragraph>
If you create an account, we collect your email address, name (optional), and a securely
hashed password. If you make a purchase, we record the item, amount, and payment processor
transaction reference. We do not store your card or PayPal login details payment is handled
entirely by our payment processor.
</Paragraph>
<Title level={4}>Marketing emails</Title>
<Paragraph>
We only send you marketing emails if you explicitly opt in during signup or in your account
settings. You can withdraw consent at any time from your account page, or via the unsubscribe
link included in every marketing email no login required.
</Paragraph>
<Title level={4}>Your rights</Title>
<Paragraph>
You may request a copy of your data ("Download my data" in your account page), or delete your
account entirely at any time. Deleting your account removes your personal information; past
order records are retained in anonymized form for accounting purposes.
</Paragraph>
<Title level={4}>Data retention</Title>
<Paragraph>
Account data is retained until you delete your account. Order records are retained as required
for financial recordkeeping, disconnected from your identity upon account deletion.
</Paragraph>
<Title level={4}>Contact</Title>
<Paragraph>
For privacy questions or data requests, contact us at the email address listed on this site.
</Paragraph>
</Card>
</div>
);
}