Vue edition
Vite, Vue 3 and TypeScript — installs, builds and runs on its own: no
workspace, no path reaching outside the folder. The router uses history mode,
so any static host serving the built files needs the usual single-page
fallback to index.html.
Install and build
vuepnpm install --frozen-lockfile
pnpm run buildDeveloping
vuepnpm dev # syncs shared/, then Vite on :5174
pnpm preview # serves dist/
pnpm run typecheckWhere the shared code lives
src/shared/ is generated — a mirror of the repository's shared/,
written by tools/sync-shared.mjs, which dev and build run first. Editing
a file there appears to work and then vanishes at the next sync. Edit
shared/ at the repository root instead.
What comes from there: the design tokens and the component CSS, the ICU
catalogues, the icon sprite, the brand marks, the demo dataset and the mock
API, and four modules this edition would otherwise have written for itself —
shared/api/client.mjs (the endpoints, the error shape and the cache keys,
identical to the React edition's), shared/i18n/format.mjs (numbers, money,
relative dates), shared/charts/base.mjs (the ApexCharts defaults this design
language turns off) and shared/ui/preferences.mjs (the option lists and the
storage key).
Each has a hand-written .d.mts beside it. The implementations cannot be
TypeScript — one of the five editions has no build step at all — but nothing
here is any because of that.