- types/trade-in.ts: TradeInEstimateInput, AggregatedEstimate, AnalogLot - lib/trade-in-api.ts: useEstimateMutation (POST) + useEstimate (GET) - EstimateForm: controlled form with validation, required fields, optional fields - EstimateResult: hero price card, PriceRangeBar, 4 sections (cover/listings/deals/trade-in placeholder) - AnalogsTable: sortable table with photo fallback, safeUrl XSS guard - PriceRangeBar: horizontal scale with median marker - EstimateProgress: inline spinner - page.tsx: 2-col sticky layout, mobile-responsive, URL persistence via ?id= Backend uses mock data (realistic EKB prices). PDF button disabled (coming TI-2). Depends on TI-1 (PR #316). Closes #314 (TI-3 sub-task). |
||
|---|---|---|
| .. | ||
| public | ||
| src | ||
| .dockerignore | ||
| .env.example | ||
| .eslintrc.json | ||
| Dockerfile | ||
| next-env.d.ts | ||
| next.config.ts | ||
| package-lock.json | ||
| package.json | ||
| sentry.client.config.ts | ||
| sentry.edge.config.ts | ||
| sentry.server.config.ts | ||
| tsconfig.json | ||