Reorganize into monorepo layout, move mitarbeiter-app to legacy reference
Consolidates the previously separate omsorgapp and omsorgCore repos (each had their own nested .git with GitHub history) plus the old root-level website/mitarbeiter-app into a single monorepo, matching the structure already documented in the root CLAUDE.md. Also moves the PHP employee app aside as omsorgWeb/mitarbeiter-app-legacy/ to serve as a template for a ground-up rewrite. Fixes .gitignore in the same pass: the config-secrets/uploads/data patterns were unanchored (relative to repo root, not depth-agnostic), so they silently stopped matching once the app moved under omsorgWeb/. Patterns are now **/-prefixed and cover both mitarbeiter-app and mitarbeiter-app-legacy, keeping DB/SMTP credentials and uploaded employee documents out of version control. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
8beb0fcf52
commit
b6c1389c55
@@ -0,0 +1,103 @@
|
||||
import logo from "../assets/omsorg_logo.png";
|
||||
import {
|
||||
Home,
|
||||
Users,
|
||||
Building2,
|
||||
CalendarDays,
|
||||
Calculator,
|
||||
Car,
|
||||
FileText,
|
||||
BarChart3,
|
||||
Settings,
|
||||
Bug
|
||||
} from "lucide-react";
|
||||
import { useAuth } from "../app/AuthContext";
|
||||
import { isNavItemVisible } from "../app/navPermissions";
|
||||
|
||||
const menu = [
|
||||
{ icon: Home, label: "Home" },
|
||||
{ icon: Users, label: "Mitarbeiter" },
|
||||
{ icon: Building2, label: "Kunden" },
|
||||
{ icon: CalendarDays, label: "Disposition" },
|
||||
{ icon: Calculator, label: "Kalkulation" },
|
||||
{ icon: Car, label: "Fahrzeuge" },
|
||||
{ icon: FileText, label: "Rechnungen" },
|
||||
{ icon: BarChart3, label: "Controlling" },
|
||||
{ icon: Settings, label: "Einstellungen" },
|
||||
{ icon: Bug, label: "Debug" }
|
||||
];
|
||||
|
||||
export default function Sidebar({
|
||||
activePage,
|
||||
onNavigate
|
||||
}) {
|
||||
const { hasPermission } = useAuth();
|
||||
const items = menu.filter((item) => isNavItemVisible(item.label, hasPermission));
|
||||
|
||||
return (
|
||||
|
||||
<aside className="sidebar">
|
||||
|
||||
<div className="sidebar-logo">
|
||||
|
||||
<img
|
||||
src={logo}
|
||||
alt="Omsorg"
|
||||
/>
|
||||
|
||||
<div>
|
||||
|
||||
<h2>OMSORG</h2>
|
||||
|
||||
<p>
|
||||
Business Controls Pro
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
|
||||
{items.map((item) => {
|
||||
|
||||
const Icon = item.icon;
|
||||
|
||||
const active =
|
||||
activePage === item.label;
|
||||
|
||||
return (
|
||||
|
||||
<button
|
||||
|
||||
key={item.label}
|
||||
|
||||
className={
|
||||
active
|
||||
? "menu-button active"
|
||||
: "menu-button"
|
||||
}
|
||||
|
||||
onClick={() =>
|
||||
onNavigate(item.label)
|
||||
}
|
||||
|
||||
>
|
||||
|
||||
<Icon size={20} />
|
||||
|
||||
<span>{item.label}</span>
|
||||
|
||||
</button>
|
||||
|
||||
);
|
||||
|
||||
})}
|
||||
|
||||
</nav>
|
||||
|
||||
</aside>
|
||||
|
||||
);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user