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 @@