diff --git a/docs/implementation-plan.md b/docs/implementation-plan.md index b7cee2d..8dc3b4b 100644 --- a/docs/implementation-plan.md +++ b/docs/implementation-plan.md @@ -80,7 +80,10 @@ tts-workshop/ │ ├── components/ │ │ ├── SearchResults.tsx │ │ ├── ObjectTree.tsx # containment-tree sidebar -│ │ └── viewers.tsx # viewer registry + default viewer +│ │ ├── viewers.tsx # viewer registry + default viewer +│ │ ├── objectIcons.tsx # class → icon mapping +│ │ ├── objectIconsData.ts # generated icon subset (do not edit) +│ │ └── objectIcons.test.ts │ └── stores/ │ ├── searchStore.ts # zustand │ └── modStore.ts # zustand @@ -204,10 +207,16 @@ proxy API and `packages/extract` directly for analysis. inspector pane for the selected object, and links to the raw save file. - `components/SearchResults.tsx` — result grid + pagination. - `components/ObjectTree.tsx` — recursive tree sidebar; each entry shows a - class tag + display label, indented by depth. Clicking selects an object. + class icon (hover for the class name) + display label, indented by depth. + Clicking selects an object. - `components/viewers.tsx` — viewer registry (`registerViewer` / `resolveViewer`) plus a `DefaultViewer` that renders an object's fields; custom per-class viewers can be registered later. +- `components/objectIcons.tsx` — maps TTS object classes to one or more MDI + icons (`iconsForObject`); unknown classes fall back to a help icon. +- `components/objectIconsData.ts` — generated by + `scripts/generate-object-icons.mjs`; registers only the used MDI icons with + Iconify's offline storage so the full set isn't bundled. - `stores/searchStore.ts` / `stores/modStore.ts` — Zustand stores for search and mod state. - `vite.config.ts` — dev proxy for `/search`, `/items`, `/health` → @@ -248,6 +257,8 @@ packages/extract → flatten objects / extract refs / download assets - `cheerio` — Workshop browse page scraping (backend only). - `zod` — validation. - `react`, `react-dom`, `react-router-dom`, `zustand` — frontend. +- `@iconify/react`, `@iconify-json/mdi`, `@iconify/utils` — iconify icons for + object class tags (subset bundled via `scripts/generate-object-icons.mjs`). - `vite`, `@vitejs/plugin-react`, `tailwindcss`, `@tailwindcss/vite` — frontend tooling. - `tsx`, `typescript`, `eslint`, `prettier` — tooling.