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 */}
-
+
);
}