diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl new file mode 100644 index 0000000..61754aa --- /dev/null +++ b/.beads/issues.jsonl @@ -0,0 +1,3 @@ +{"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-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/Sidebar.tsx b/frontend/src/components/layout/Sidebar.tsx index cd3fa35..3c6c975 100644 --- a/frontend/src/components/layout/Sidebar.tsx +++ b/frontend/src/components/layout/Sidebar.tsx @@ -9,6 +9,14 @@ import { SettingOutlined, FileTextOutlined, ThunderboltOutlined, + UserOutlined, + BuildOutlined, + ShopOutlined, + ShoppingOutlined, + ShoppingCartOutlined, + FileDoneOutlined, + FileExclamationOutlined, + ExportOutlined, } from '@ant-design/icons'; import { useNavigate, useLocation } from 'react-router-dom'; import { useUIStore } from '@/stores/uiStore'; @@ -41,6 +49,14 @@ const menuItems: MenuItem[] = [ getItem('Kontooversigt', '/kontooversigt', ), ]), + getItem('Fakturering', 'invoicing', , [ + getItem('Kunder', '/kunder', ), + getItem('Produkter', '/produkter', ), + getItem('Ordrer', '/ordrer', ), + getItem('Fakturaer', '/fakturaer', ), + getItem('Kreditnotaer', '/kreditnotaer', ), + ]), + getItem('Bank', 'bank', , [ getItem('Bankafstemning', '/bankafstemning', ), ]), @@ -48,39 +64,68 @@ const menuItems: MenuItem[] = [ getItem('Rapportering', 'reporting', , [ getItem('Momsindberetning', '/momsindberetning', ), getItem('Loenforstaelse', '/loenforstaelse', ), + getItem('Eksport', '/eksport', ), ]), - getItem('Indstillinger', '/indstillinger', ), + getItem('Indstillinger', 'settings', , [ + getItem('Virksomhed', '/indstillinger', ), + getItem('Min profil', '/profil', ), + ]), ]; -export default function Sidebar() { +// Determine open keys for submenus based on current path +function getOpenKeys(pathname: string): string[] { + if (pathname === '/kassekladde' || pathname === '/kontooversigt' || pathname === '/hurtig-bogforing') { + return ['accounting']; + } + if (pathname === '/kunder' || pathname === '/produkter' || pathname === '/ordrer' || pathname === '/fakturaer' || pathname === '/kreditnotaer') { + return ['invoicing']; + } + if (pathname === '/bankafstemning') { + return ['bank']; + } + if (pathname === '/momsindberetning' || pathname === '/loenforstaelse' || pathname === '/eksport') { + return ['reporting']; + } + if (pathname === '/indstillinger' || pathname === '/profil') { + return ['settings']; + } + return []; +} + +// Exported menu component for reuse in mobile Drawer +interface SidebarMenuProps { + onNavigate?: () => void; +} + +export function SidebarMenu({ onNavigate }: SidebarMenuProps) { const navigate = useNavigate(); const location = useLocation(); - const { sidebarCollapsed, toggleSidebar } = useUIStore(); const handleMenuClick: MenuProps['onClick'] = ({ key }) => { if (key.startsWith('/')) { navigate(key); + onNavigate?.(); } }; - // Determine selected keys based on current path const selectedKeys = [location.pathname]; - // Determine open keys for submenus - const getOpenKeys = () => { - const path = location.pathname; - if (path === '/kassekladde' || path === '/kontooversigt' || path === '/hurtig-bogforing') { - return ['accounting']; - } - if (path === '/bankafstemning') { - return ['bank']; - } - if (path === '/momsindberetning' || path === '/loenforstaelse') { - return ['reporting']; - } - return []; - }; + return ( + + ); +} + +export default function Sidebar() { + const { sidebarCollapsed, toggleSidebar } = useUIStore(); return ( - {sidebarCollapsed ? 'B' : 'Bogfoering'} + {sidebarCollapsed ? 'B' : 'Books'} {/* Navigation Menu */} - + ); }