diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index acd5453..2974ff2 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -1,4 +1,6 @@ +{"id":"books-8ea","title":"fjern brugers navn fra højre hjørne ved profile ikonet","status":"in_progress","priority":2,"issue_type":"task","owner":"nhh@softwarehuset.com","created_at":"2026-01-30T14:20:16.406033+01:00","created_by":"Nicolaj Hartmann","updated_at":"2026-01-30T14:20:47.977337+01:00"} {"id":"books-bj6","title":"Test automatisk pickup","status":"closed","priority":2,"issue_type":"task","owner":"nhh@softwarehuset.com","created_at":"2026-01-30T14:04:40.572496+01:00","created_by":"Nicolaj Hartmann","updated_at":"2026-01-30T14:05:44.401903+01:00","closed_at":"2026-01-30T14:05:44.401903+01:00","close_reason":"completed"} -{"id":"books-h6e","title":"fjern hurtig bogføring og den visning der høre dertil","status":"in_progress","priority":2,"issue_type":"task","owner":"nhh@softwarehuset.com","created_at":"2026-01-30T14:14:50.436314+01:00","created_by":"Nicolaj Hartmann","updated_at":"2026-01-30T14:15:06.776032+01:00"} +{"id":"books-h6e","title":"fjern hurtig bogføring og den visning der høre dertil","status":"closed","priority":2,"issue_type":"task","owner":"nhh@softwarehuset.com","created_at":"2026-01-30T14:14:50.436314+01:00","created_by":"Nicolaj Hartmann","updated_at":"2026-01-30T14:18:09.911294+01:00","closed_at":"2026-01-30T14:18:09.911294+01:00","close_reason":"Closed"} +{"id":"books-hzt","title":"fix bug med tilføj brugere står forkert med encoded tegn","status":"open","priority":2,"issue_type":"task","owner":"nhh@softwarehuset.com","created_at":"2026-01-30T14:21:34.556319+01:00","created_by":"Nicolaj Hartmann","updated_at":"2026-01-30T14:21:34.556319+01:00"} {"id":"books-sbm","title":"ændre navnet i venstre side til Books","status":"closed","priority":2,"issue_type":"task","owner":"nhh@softwarehuset.com","created_at":"2026-01-30T14:11:13.017202+01:00","created_by":"Nicolaj Hartmann","updated_at":"2026-01-30T14:12:14.16594+01:00","closed_at":"2026-01-30T14:12:14.16594+01:00","close_reason":"Closed"} {"id":"books-wqf","title":"Opret en logud knap i topbaren","status":"closed","priority":2,"issue_type":"task","owner":"nhh@softwarehuset.com","created_at":"2026-01-30T14:06:06.999508+01:00","created_by":"Nicolaj Hartmann","updated_at":"2026-01-30T14:10:52.860045+01:00","closed_at":"2026-01-30T14:10:52.860045+01:00","close_reason":"Closed"} diff --git a/frontend/src/components/layout/Header.tsx b/frontend/src/components/layout/Header.tsx index 9890f81..a5ba233 100644 --- a/frontend/src/components/layout/Header.tsx +++ b/frontend/src/components/layout/Header.tsx @@ -1,21 +1,38 @@ -import { Layout, Space, Button, Dropdown, Avatar, Typography, Divider } from 'antd'; +import { useState } from 'react'; +import { Layout, Space, Button, Dropdown, Avatar, Divider, Tooltip, Badge } from 'antd'; import { UserOutlined, LogoutOutlined, SettingOutlined, BellOutlined, QuestionCircleOutlined, + TeamOutlined, + CrownOutlined, + MenuOutlined, } from '@ant-design/icons'; import type { MenuProps } from 'antd'; +import { useNavigate } from 'react-router-dom'; import CompanySwitcher from './CompanySwitcher'; import FiscalYearSelector from './FiscalYearSelector'; +import UserAccessManager from '@/components/company/UserAccessManager'; import { useAuthStore } from '@/stores/authStore'; +import { useCanAdmin, useActiveCompanyRole } from '@/stores/companyStore'; +import { useUIStore } from '@/stores/uiStore'; +import { semanticColors, spacing } from '@/styles/designTokens'; const { Header: AntHeader } = Layout; -const { Text } = Typography; -export default function Header() { - const { user, logout } = useAuthStore(); +interface HeaderProps { + isMobile?: boolean; +} + +export default function Header({ isMobile = false }: HeaderProps) { + const navigate = useNavigate(); + const { logout } = useAuthStore(); + const canAdmin = useCanAdmin(); + const activeRole = useActiveCompanyRole(); + const toggleMobileDrawer = useUIStore((state) => state.toggleMobileDrawer); + const [userAccessOpen, setUserAccessOpen] = useState(false); const userMenuItems: MenuProps['items'] = [ { @@ -28,8 +45,13 @@ export default function Header() { icon: , label: 'Indstillinger', }, + ...(canAdmin ? [{ + key: 'manage-users', + icon: , + label: 'Administrer brugere', + }] : []), { - type: 'divider', + type: 'divider' as const, }, { key: 'logout', @@ -45,10 +67,13 @@ export default function Header() { logout(); break; case 'settings': - // Navigate to settings + navigate('/indstillinger'); break; case 'profile': - // Navigate to profile + navigate('/profil'); + break; + case 'manage-users': + setUserAccessOpen(true); break; } }; @@ -56,39 +81,75 @@ export default function Header() { return ( - {/* Left side - Company Switcher and Fiscal Year Selector */} - }> - - + {/* Left side - Mobile menu + Company Switcher and Fiscal Year Selector */} + + {/* Hamburger menu for mobile */} + {isMobile && ( +