gendesign/tradein-mvp/frontend
lekss361 c5506aab37 fix(tradein-frontend): MapPicker focus trap + Leaflet SRI, PhotoUpload size check
Two isolated UX/security fixes from 2026-05-24 audit:

* MapPicker.tsx (#12): add role=dialog, aria-modal, aria-labelledby; trap
  Tab/Shift+Tab focus inside modal; Escape closes; restore focus on close.
  Pin Leaflet 1.9.4 CSS+JS with sha256 SRI hashes + crossOrigin=anonymous
  (defends against unpkg CDN hijack).
* PhotoUpload.tsx (#13): client-side file.size check (10 MB mirror of
  backend _MAX_PHOTO_BYTES) prevents wasted bandwidth on oversized uploads.
  Replace single error state with per-file errors[] list. Clear stale
  errors on every new file pick.
2026-05-24 14:52:31 +03:00
..
public fix(tradein): commit empty frontend/public via .gitkeep 2026-05-21 00:59:13 +03:00
src fix(tradein-frontend): MapPicker focus trap + Leaflet SRI, PhotoUpload size check 2026-05-24 14:52:31 +03:00
.dockerignore feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
Dockerfile fix(tradein): HOSTNAME=0.0.0.0 + NEXT_PUBLIC_API_BASE_URL build-arg 2026-05-21 10:21:32 +03:00
next.config.ts fix(tradein): убрать basePath redirect-loop 2026-05-21 01:05:49 +03:00
package.json feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
tsconfig.json feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00