import { Outlet, Link } from 'react-router-dom'; import { useQuery } from '@tanstack/react-query'; import { useAuth } from '../../context/AuthContext'; import { gdprApi } from '../../services/api'; import Sidebar from './Sidebar'; import ScrollToTopButton from '../ScrollToTopButton'; import BirthdayModal from '../BirthdayModal'; import { AlertTriangle, ArrowRight, Building, Shield } from 'lucide-react'; function ConsentBanner() { const { user, isCustomerPortal } = useAuth(); const { data } = useQuery({ queryKey: ['my-consent-status'], queryFn: () => gdprApi.getMyConsentStatus(), enabled: isCustomerPortal && !!user?.customerId, staleTime: 30_000, }); if (!isCustomerPortal || !data?.data) return null; if (data.data.hasConsent) return null; return (

Bitte stimmen Sie unserer Datenschutzerklärung zu, damit wir Sie beraten können.

Jetzt zustimmen
); } function PortalFooter() { const { isCustomerPortal } = useAuth(); if (!isCustomerPortal) return null; return ( ); } export default function Layout() { return ( // `overflow-auto` auf dem Content-Wrapper wurde entfernt: dadurch // wurde jeder Sticky-Header (ContractDetail/ContractForm) unwirksam, // weil sein Scroll-Ancestor der Wrapper war – der aber wegen der // Flexbox-`min-h-auto`-Regel nicht selbst scrollte. Jetzt scrollt // wieder das Window, und Sticky sitzt an der Viewport-Kante. // // `min-w-0` auf dem Content-Wrapper: Flex-Items haben default // `min-width: auto`, wodurch der Wrapper von einem sehr breiten // Kind (lange E-Mail-Adressen, breite Tabellen, PDF-URL-Anhänge) // horizontal aufgebläht wird. Ohne overflow-auto fehlte der // stille Cap; jetzt cappt min-w-0 die Flex-Basis auf die // Viewport-Breite.
); }