Files
kvitt/web/package.json
T
jacobh2 5305f37038
Build Kvitt images / build (push) Has been cancelled
W0b web shared follow-ups: one copy of shared pieces, per-locale amounts, chunks
- Shared once, features import them: components/AccountTile (+ lib/accountColors),
  components/PageStates (LoadingState, ErrorState), components/Timeline + lib/timeline,
  components/OverflowMenu, components/SwitchRow, app/useToday (useToday, useTodayIso),
  lib/categories (categoryName), api/errors (apiErrorKey/Text, isNetworkError,
  rejectionMessage/Text, allocationErrorKey), api/invites (useInvites),
  components/editor peopleOf, editorPeopleOf, accountBpOf. Local copies deleted.
- AmountField: separators follow the page language (en "3,250.00" editable),
  hideLabel and placeholder props; settle's ungrouped amountText and CSS label
  hiding removed.
- W5's recurring editor uses the shared editor fields (D-148); recurring/fields deleted.
- routes.ts: 'bucket' in DrillDownKind, QUERY, expensesNewPath, settlePath,
  settlementEditPath; accounts/links.ts and settle/links.ts deleted.
- vectors.test.ts runs resolve_range and spend_series (analytics port); the
  duplicate runner is gone.
- vite.config.ts: /analytics in the dev proxy, Recharts in a charts chunk (vendor
  516 kB -> 132 kB), version code from git rev-list --count HEAD (else
  KVITT_VERSION_CODE, else 1), Vitest fsModuleCache off.
- ids.ts: random typed (bytes: Uint8Array<ArrayBuffer>) => void.
- test/setup.ts: findBy and waitFor wait up to 5 s (first lazy renders time out at 1 s
  when parallel agents load the Mac).
- Strings: web_editor_paid_by_toggle (click wording), web_reject_clock_skew shared;
  catalog.test.ts fails when a feature uses another feature's web_ key.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQd3pEP9UeN2uifbHknQ7B
2026-10-24 11:26:17 +02:00

59 lines
1.8 KiB
JSON

{
"name": "kvitt-web",
"private": true,
"version": "0.1.0",
"description": "Kvitt web client: the SPA served by kvitt-server under /app/",
"type": "module",
"engines": {
"node": ">=22.18"
},
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"typecheck": "tsc --noEmit -p tsconfig.json",
"lint": "eslint --max-warnings 0 .",
"test": "vitest run",
"api:types": "openapi-typescript ../contracts/openapi.yaml -o src/api/schema.d.ts",
"i18n:import": "node scripts/gen-i18n.mjs",
"icons:import": "node scripts/gen-icons.mjs",
"generated:check": "node scripts/check-generated.mjs",
"format": "prettier --write .",
"format:check": "prettier --check .",
"check": "npm run generated:check && npm run typecheck && npm run lint && npm run format:check && npm run test && npm run build"
},
"dependencies": {
"@tanstack/react-query": "5.104.5",
"openapi-fetch": "0.17.0",
"react": "19.3.1",
"react-dom": "19.3.1",
"react-is": "19.3.1",
"react-router": "7.18.4",
"recharts": "3.10.1"
},
"devDependencies": {
"@eslint/js": "10.0.1",
"@material-symbols/svg-500": "0.48.1",
"@material-symbols/svg-600": "0.48.1",
"@testing-library/dom": "10.4.2",
"@testing-library/jest-dom": "7.0.1",
"@testing-library/react": "16.3.3",
"@testing-library/user-event": "14.6.8",
"@types/node": "26.6.5",
"@types/react": "19.3.0",
"@types/react-dom": "19.3.0",
"@vitejs/plugin-react": "6.1.2",
"eslint": "10.13.0",
"eslint-config-prettier": "10.1.8",
"eslint-plugin-react-hooks": "7.1.1",
"globals": "17.13.0",
"jsdom": "30.1.3",
"openapi-typescript": "7.13.0",
"prettier": "3.9.10",
"typescript": "5.9.3",
"typescript-eslint": "8.72.0",
"vite": "8.3.5",
"vitest": "5.0.5"
}
}