feat(webapp): register wardrobe in workbench app-registry

The Kleiderschrank module shipped end-to-end (M1–M5 + M4.1) but was
never surfaced on the workbench homepage — it was reachable only via
direct /wardrobe URLs. This adds the tile so users can add it to a
scene and open it from the launcher like every other module.

- apps.ts: registerApp({ id: 'wardrobe', name: 'Kleiderschrank',
  color: #e11d48, icon: CoatHanger }) — list view loads
  $lib/modules/wardrobe/ListView.svelte (tab switcher Kleidung /
  Outfits). Detail routes stay SvelteKit-based
  (/wardrobe/garment/[id], /wardrobe/outfit/[id],
  /wardrobe/compose/[[outfitId]]) so the workbench only needs the
  root list slot.
- categories.ts: wardrobe → 'creative' (next to picture, library,
  playground, quiz).

Color matches the shared-branding entry in mana-apps.ts. Icon is the
phosphor CoatHanger (there is no bare "Hanger" in phosphor-svelte).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-04-23 21:32:13 +02:00
parent 36c427d17e
commit 645993db01
2 changed files with 15 additions and 0 deletions

View file

@ -78,6 +78,7 @@ import {
Flask,
Exam,
Globe,
CoatHanger,
} from '@mana/shared-icons';
// ── Apps with entity capabilities ───────────────────────────
@ -1292,6 +1293,19 @@ registerApp({
},
});
registerApp({
id: 'wardrobe',
name: 'Kleiderschrank',
color: '#e11d48',
icon: CoatHanger,
views: {
// Detail routes (/wardrobe/garment/[id], /wardrobe/outfit/[id],
// /wardrobe/compose/[[outfitId]]) live as SvelteKit routes; the
// workbench only needs the list view for the tab-switcher root.
list: { load: () => import('$lib/modules/wardrobe/ListView.svelte') },
},
});
registerApp({
id: 'library',
name: 'Bibliothek',

View file

@ -110,6 +110,7 @@ export const APP_CATEGORY_MAP: Record<string, AppCategory> = {
library: 'creative',
playground: 'creative',
quiz: 'creative',
wardrobe: 'creative',
// System — settings, admin, meta
settings: 'system',