From 621d711839cfabbbee43e5bcd036a0abc503d22b Mon Sep 17 00:00:00 2001 From: Saad ELBASSITI Date: Wed, 1 Jul 2026 11:44:38 +0200 Subject: [PATCH 1/2] Redesign client into SaaS-style UI with left sidebar navigation Replace the top nav bar with a left vertical navigation sidebar and apply a consistent design-token system across the shell and shared components: - App.vue: sidebar layout ("Catalyst Components" brand), design tokens, consistent spacing and polished professional styling - FilterBar, LanguageSwitcher, ProfileMenu: restyled to match the new sidebar shell - Add docs/architecture.html documenting the app architecture - Add saas-ui-redesign skill used to drive the redesign Note: App.vue now calls api.getTasks() on mount but the backend has no /tasks route yet (returns 404 on every page). Tracked as a follow-up. Co-Authored-By: Claude Opus 4.8 (1M context) --- .claude/skills/saas-ui-redesign/SKILL.md | 104 ++++ .../references/design-tokens.md | 100 ++++ .../references/sidebar-layout.md | 217 +++++++ client/src/App.vue | 543 +++++++++++++----- client/src/components/FilterBar.vue | 58 +- client/src/components/LanguageSwitcher.vue | 105 ++-- client/src/components/ProfileMenu.vue | 130 +++-- docs/architecture.html | 486 ++++++++++++++++ 8 files changed, 1486 insertions(+), 257 deletions(-) create mode 100644 .claude/skills/saas-ui-redesign/SKILL.md create mode 100644 .claude/skills/saas-ui-redesign/references/design-tokens.md create mode 100644 .claude/skills/saas-ui-redesign/references/sidebar-layout.md create mode 100644 docs/architecture.html diff --git a/.claude/skills/saas-ui-redesign/SKILL.md b/.claude/skills/saas-ui-redesign/SKILL.md new file mode 100644 index 00000000..ef9d72ba --- /dev/null +++ b/.claude/skills/saas-ui-redesign/SKILL.md @@ -0,0 +1,104 @@ +--- +name: saas-ui-redesign +description: Redesign the Vue 3 client in client/ into a modern SaaS-style interface with a left vertical navigation sidebar (replacing the top nav bar), a design-token system, consistent spacing, and a polished professional look. Use this skill when the user asks to redesign, modernize, or polish the frontend UI; move navigation to a sidebar / vertical nav / left nav; give the app a "SaaS look"; improve spacing, layout, or visual consistency; or restyle App.vue and the shell. +--- + +# SaaS UI Redesign + +This skill converts the Factory Inventory Management client (`client/`, Vue 3 + Vite) from its +current sticky **top nav bar** into a modern SaaS layout: a **left vertical sidebar** for +navigation, a **CSS custom-property design-token system**, a **consistent spacing scale**, and +a clean, professional finish. The existing slate/blue palette and Inter typeface are kept — this +is about layout structure, consistency, and polish, not a new color scheme. + +## Operating rules (non-negotiable) + +- **Delegate every `.vue` edit to the `vue-expert` subagent.** Per this repo's CLAUDE.md, any + time you create or significantly modify a `.vue` file you MUST use the `vue-expert` subagent. + Give it the relevant reference file content and the preservation checklist below. +- **Verify in a real browser with Playwright MCP** (`mcp__playwright__*`) against + `http://localhost:3000`. Start the servers with the `start` skill first. +- **Preserve behavior.** This is a visual/layout redesign. Routing, data loading, i18n, filters, + and modals must work exactly as before (see the checklist in Phase 6). +- **Document non-obvious changes with a brief comment** explaining the "why", matching the + surrounding style. + +## Target design language + +- **Left sidebar** (~248px): brand at top, vertical nav in the middle, `LanguageSwitcher` + + `ProfileMenu` in the footer. Collapses on narrow viewports. +- **Token-driven** color, spacing, radius, shadow, and z-index — one source of truth on `:root`. +- **8px spacing rhythm** so gaps, padding, and margins are consistent across cards, tables, and grids. +- **Card-based surfaces** on a soft `--color-bg`, restrained shadows, clear active-nav state. + +## Reference files + +- `references/design-tokens.md` — the `:root` custom-property block to add to `App.vue`, plus a + literal→token refactor map. **Read this before Phase 1.** +- `references/sidebar-layout.md` — the target `App.vue` template + shell CSS, FilterBar + repositioning, and dropdown notes. **Read this before Phase 2.** + +## Procedure + +Work in phases. After each phase that touches a `.vue` file, hand the change to `vue-expert`. + +### Phase 1 — Establish design tokens +1. Read `references/design-tokens.md`. +2. Have `vue-expert` add the `:root` token block to the top of the global ` diff --git a/client/src/components/FilterBar.vue b/client/src/components/FilterBar.vue index 9e12b694..17819492 100644 --- a/client/src/components/FilterBar.vue +++ b/client/src/components/FilterBar.vue @@ -102,50 +102,51 @@ export default { diff --git a/client/src/components/ProfileMenu.vue b/client/src/components/ProfileMenu.vue index 5706d24c..ecfdb005 100644 --- a/client/src/components/ProfileMenu.vue +++ b/client/src/components/ProfileMenu.vue @@ -2,23 +2,29 @@