Files
web/package.json
T
Flea Flicker 2e5e35dcea
CI / Test (pull_request) Successful in 24s
CI / Lint & Typecheck (pull_request) Successful in 31s
CI / Build & Push Docker Image (pull_request) Successful in 50s
feat(GRO-2159): drag-to-reorder + re-optimize on route planner
Add @dnd-kit drag-and-drop reorder to the /admin/routes stop list.

- Install @dnd-kit/core, @dnd-kit/sortable, @dnd-kit/utilities
- Sortable stop cards with a grab handle; pointer + touch (press-and-hold)
  + keyboard sensors so mobile groomers and a11y users can reorder
- On drop, PATCH /api/routes/:routeId/reorder { stopOrder } (full order)
- Optimistic UI update with rollback + error message on failure
- Server recomputes legs/buffers/conflicts; response adopted authoritatively
- Tight-schedule conflict warnings retained (server-flagged, gap < travel+buffer)
- "Re-optimize" hint+button after a manual reorder (re-runs POST /optimize)
- Tests: drag handles, conflict flag, no pre-reorder hint, reorder mock
- Updated UAT_PLAYBOOK.md §5.29 — drag-to-reorder & re-optimize cases

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-09 02:55:39 +00:00

54 lines
1.5 KiB
JSON

{
"name": "@groombook/web",
"version": "0.0.1",
"private": true,
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"preview": "vite preview",
"lint": "eslint src --ext .ts,.tsx",
"typecheck": "tsc --noEmit",
"test": "vitest run",
"test:e2e": "playwright test -c e2e/playwright.config.ts"
},
"dependencies": {
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
"@groombook/types": "workspace:*",
"@stripe/react-stripe-js": "^6.1.0",
"@stripe/stripe-js": "^9.1.0",
"@tailwindcss/vite": "^4.2.2",
"better-auth": "^1.5.6",
"leaflet": "^1.9.4",
"lucide-react": "^0.577.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-leaflet": "^5.0.0",
"react-router-dom": "^7.1.2",
"recharts": "^3.8.0",
"tailwindcss": "^4.2.2"
},
"devDependencies": {
"@playwright/test": "^1.50.1",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.1",
"@types/leaflet": "^1.9.12",
"@types/node": "^25.6.0",
"@types/react": "^19.0.6",
"@types/react-dom": "^19.0.3",
"@vitejs/plugin-react": "^4.3.4",
"@vitest/coverage-v8": "^3.2.4",
"eslint": "^9.18.0",
"jsdom": "^26.1.0",
"typescript": "^5.7.3",
"typescript-eslint": "^8.20.0",
"vite": "^6.0.7",
"vite-plugin-pwa": "^0.21.1",
"vitest": "^3.0.4"
},
"license": "AGPL-3.0-only"
}