# 📐 Logic Spec: Dashboard Header Restructure ## 1. CĂ©l Ă©s Masterbook 2 illeszkedĂ©s **CĂ©l:** A privĂĄt garĂĄzs dashboard fejlĂ©cĂ©nek (`DashboardHeader.vue`) ĂĄtalakĂ­tĂĄsa a felhasznĂĄlĂł specifikĂĄciĂłja szerint: - **Bal:** 👋 ÜdvözlĂ©s + keresztnĂ©v - **KözĂ©p:** `{firstName}_garĂĄzsa` (i18n kulcsbĂłl) - **Jobb:** CĂ©gvĂĄltĂł dropdown → NyelvvĂĄltĂł → AvatĂĄr menĂŒ (sorrendben) - **Layout struktĂșra:** Marad a `PrivateLayout` + `DashboardHeader` felosztĂĄs **Masterbook 2.0 illeszkedĂ©s:** A feladat illeszkedik az Epic 11 (Public Frontend) Ă©s a B2C dashboard UX specifikĂĄciĂłjĂĄhoz. --- ## 2. Jelenlegi ProblĂ©mĂĄk (`DashboardHeader.vue` - 685 sor) | ProblĂ©ma | LeĂ­rĂĄs | |----------|--------| | P1 - TĂșl komplex | 7 funkciĂł egy komponensben (WelcomeCard, Logo, FunkciĂłk menu, Center label, Org dropdown, LanguageSwitcher, Avatar) | | P2 - Welcome Card | LebegƑ elem, nem a header rĂ©sze - megtarthatĂł, de auditĂĄlni kell | | P3 - FunkciĂłk menu | Nem illik a header-be, 100+ sor Bento dropdown - **ELTÁVOLÍTANDÓ** | | P4 - Logo + Brand | 2 sor + kĂ©p - **ELTÁVOLÍTANDÓ** a header-bƑl | | P5 - Center label | DuplikĂĄlt logika a jobb oldali org dropdown-nal | | P6 - Jobb oldal sorrend | Jelenleg: Org dropdown → LanguageSwitcher → Avatar. **MegtartandĂł sorrendben** | --- ## 3. Új 3-Oszlopos Header Layout ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ [BAL] [KÖZÉP] [JOBB] │ │ 👋 Üdv, JĂĄnos! JĂĄnos_garĂĄzsa [🏱 CĂ©gem â–Œ] [🌐] [đŸ‘€] │ │ ↓ ↓ ↓ │ │ Org Dropdown Lang Avatar│ │ (cĂ©g listĂĄval) Switcher│ └─────────────────────────────────────────────────────────────────────────┘ ``` ### 3.1 Bal oldal: Welcome + keresztnĂ©v ```vue
👋 {{ t('header.welcome') }}, {{ displayName }}!
``` **`displayName` computed** - mĂĄr lĂ©tezik, elsƑdlegesen `props.firstName`, fallback email prefix. ### 3.2 KözĂ©psƑ: `{firstName}_garĂĄzsa` ```vue
{{ centerLabel }}
``` **`centerLabel` computed logika:** - Ha `isOnCompanyGarage` (szervezeti nĂ©zetben): `t('header.companyGarageLabel', { name: activeCompanyName })` - Ha `isCorporateMode` (vĂĄllalati mĂłdban): `t('header.companyGarageLabel', { name: activeCompanyName })` - KĂŒlönben (szemĂ©lyes mĂłd): `t('header.personalGarageLabel', { name: firstName })` ### 3.3 Jobb oldal (sorrendben: CĂ©g → Nyelv → AvatĂĄr) **CĂ©g dropdown** - MeglĂ©vƑ funkciĂł tisztĂ­tva: - Megtartani: org-dropdown-container (dropdown cĂ©g listĂĄval) - EltĂĄvolĂ­tani: duplikĂĄlt "FunkciĂłk menĂŒben lĂ©vƑ Organization Menu Item" - Állapotok: nincs cĂ©g → "➕ Új cĂ©g" (navigĂĄciĂł `/company/onboard`); van cĂ©g → "🏱 CĂ©gem" (dropdown); corporate mĂłd → "đŸ‘€ SzemĂ©lyes GarĂĄzs" (visszavĂĄltĂĄs) **NyelvvĂĄltĂł** - VĂĄltozatlan, 6 nyelv tĂĄmogatĂĄsa. **AvatĂĄr menĂŒ** - VĂĄltozatlan (Profile, Logout). --- ## 4. EltĂĄvolĂ­tandĂł elemek | Elem | Sorok | Hova kerĂŒl? | |------|-------|-------------| | Logo + Brand | 30-43 | ELTÁVOLÍTVA | | FunkciĂłk menu (Bento) | 46-154 | ELTÁVOLÍTVA, kĂ©sƑbb `DashboardView.vue`-ba | | FunkciĂłk-belĂŒli Org Menu Item | 119-135 | ELTÁVOLÍTVA (duplikĂĄciĂł) | **Megtartva:** Floating Welcome Card (2-23. sorok) - vizuĂĄlisan elkĂŒlönĂŒl. --- ## 5. Érintett fĂĄjlok | FĂĄjl | MƱvelet | MĂ©rtĂ©k | |------|---------|--------| | `frontend/src/components/DashboardHeader.vue` | **ÁTÍRÁS** ~685 → ~300 sor | Nagy | | `frontend/src/i18n/hu.ts` | EllenƑrzĂ©s (vĂĄrhatĂłan nincs Ășj kulcs) | AprĂł | | `frontend/src/i18n/en.ts` | EllenƑrzĂ©s (vĂĄrhatĂłan nincs Ășj kulcs) | AprĂł | **Nem Ă©rintett:** `PrivateLayout.vue`, `OrganizationLayout.vue`, `LanguageSwitcher.vue`, `auth.ts` --- ## 6. AuthStore hasznĂĄlt Ă©rtĂ©kei | ÉrtĂ©k | TĂ­pus | |-------|-------| | `authStore.user?.first_name` | `string \| undefined` | | `authStore.user?.email` | `string \| undefined` | | `authStore.myOrganizations` | `OrganizationItem[]` | | `authStore.hasBusinessOrganization` | `boolean` (computed) | | `authStore.isCorporateMode` | `boolean` (computed) | | `authStore.businessOrganization` | `OrganizationItem \| undefined` (computed) | | `authStore.switchOrganization(id \| null)` | `function` (async) | --- ## 7. TesztelĂ©si terv 1. `vite build` hiba nĂ©lkĂŒl 2. VizuĂĄlis: Bal 👋 Welcome; KözĂ©p `{name}_garĂĄzsa`; Jobb: CĂ©g → 🌐 → AvatĂĄr 3. CĂ©g dropdown mƱködik (list, select, back) 4. LanguageSwitcher mƱködik (6 nyelv) 5. AvatĂĄr menĂŒ mƱködik (Profile, Logout) --- ## 8. MĂłdosĂ­tĂĄsi sorrend 1. `DashboardHeader.vue` - Teljes ĂĄtĂ­rĂĄs 2. `hu.ts` / `en.ts` - EllenƑrzĂ©s 3. `vite build` - VerifikĂĄciĂł --- ## ⏞ JĂłvĂĄhagyĂĄsi pont **KĂ©rem a felhasznĂĄlĂł jĂłvĂĄhagyĂĄsĂĄt a fenti specifikĂĄciĂłhoz!**