package.json 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. {
  2. "name": "frontend",
  3. "private": true,
  4. "version": "0.0.0",
  5. "type": "module",
  6. "scripts": {
  7. "dev": "vite",
  8. "build": "tsc -b && vite build && npm run check:baseline",
  9. "lint": "eslint .",
  10. "preview": "vite preview",
  11. "test": "vitest",
  12. "test:run": "vitest run && npm run check:i18n",
  13. "test:coverage": "vitest run --coverage",
  14. "test:ui": "vitest --ui",
  15. "check:i18n": "node scripts/check-i18n-parity.mjs",
  16. "check:baseline": "node scripts/check-browser-baseline.mjs"
  17. },
  18. "dependencies": {
  19. "@dnd-kit/core": "^6.3.1",
  20. "@dnd-kit/sortable": "^10.0.0",
  21. "@dnd-kit/utilities": "^3.2.2",
  22. "@floating-ui/dom": "^1.7.5",
  23. "@tanstack/react-query": "^5.90.11",
  24. "@tiptap/extension-color": "^3.11.1",
  25. "@tiptap/extension-image": "^3.11.1",
  26. "@tiptap/extension-link": "^3.11.1",
  27. "@tiptap/extension-text-align": "^3.11.1",
  28. "@tiptap/extension-text-style": "^3.11.1",
  29. "@tiptap/extension-underline": "^3.11.1",
  30. "@tiptap/react": "^3.11.1",
  31. "@tiptap/starter-kit": "^3.11.1",
  32. "@types/three": "^0.181.0",
  33. "dompurify": "^3.4.10",
  34. "i18next": "25.6.3",
  35. "i18next-browser-languagedetector": "^8.2.0",
  36. "jszip": "^3.10.1",
  37. "lucide-react": "^0.555.0",
  38. "mdast-util-gfm-footnote": "^2.1.0",
  39. "mdast-util-gfm-strikethrough": "^2.0.0",
  40. "mdast-util-gfm-table": "^2.0.0",
  41. "mdast-util-gfm-task-list-item": "^2.0.0",
  42. "micromark-extension-gfm-footnote": "^2.1.0",
  43. "micromark-extension-gfm-strikethrough": "^2.1.0",
  44. "micromark-extension-gfm-table": "^2.1.1",
  45. "micromark-extension-gfm-task-list-item": "^2.1.0",
  46. "occt-import-js": "^0.0.23",
  47. "papaparse": "^5.7.0",
  48. "pdfjs-dist": "^6.2.108",
  49. "qrcode.react": "^4.2.0",
  50. "react": "^19.2.0",
  51. "react-dom": "^19.2.0",
  52. "react-i18next": "^16.3.5",
  53. "react-markdown": "^9.1.0",
  54. "react-router-dom": "7.18.2",
  55. "react-simple-keyboard": "^3.8.164",
  56. "recharts": "^3.5.1",
  57. "three": "^0.181.2",
  58. "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"
  59. },
  60. "overrides": {
  61. "minimatch": "^10.2.1",
  62. "brace-expansion": "^5.0.9",
  63. "js-yaml": "^5.2.3",
  64. "nanoid": "^3.3.18",
  65. "react-router": "7.18.2"
  66. },
  67. "devDependencies": {
  68. "@eslint/js": "^9.39.1",
  69. "@tailwindcss/postcss": "^4.1.17",
  70. "@testing-library/jest-dom": "^6.6.0",
  71. "@testing-library/react": "^16.0.0",
  72. "@testing-library/user-event": "^14.5.0",
  73. "@types/node": "^24.10.1",
  74. "@types/papaparse": "^5.5.2",
  75. "@types/react": "^19.2.5",
  76. "@types/react-dom": "^19.2.3",
  77. "@vitejs/plugin-react": "^5.2.0",
  78. "@vitest/coverage-v8": "^4.1.11",
  79. "autoprefixer": "^10.4.22",
  80. "baseline-browser-mapping": "^2.9.19",
  81. "eslint": "^9.39.1",
  82. "eslint-plugin-react-hooks": "^7.0.1",
  83. "eslint-plugin-react-refresh": "^0.4.24",
  84. "globals": "^16.5.0",
  85. "jsdom": "^25.0.0",
  86. "msw": "^2.6.0",
  87. "postcss": "^8.5.6",
  88. "remark-parse": "^11.0.0",
  89. "tailwindcss": "^4.1.17",
  90. "typescript": "~5.9.3",
  91. "typescript-eslint": "^8.46.4",
  92. "unified": "^11.0.5",
  93. "vite": "^8.0.16",
  94. "vitest": "^4.1.11"
  95. }
  96. }