diff --git a/admin-compliance/app/(admin)/dashboard/catalog-manager/page.tsx b/admin-compliance/app/(admin)/dashboard/catalog-manager/page.tsx deleted file mode 100644 index 9948c94..0000000 --- a/admin-compliance/app/(admin)/dashboard/catalog-manager/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -'use client' - -import { SDKProvider } from '@/lib/sdk/context' -import { CatalogManagerContent } from '@/components/catalog-manager/CatalogManagerContent' - -export default function AdminCatalogManagerPage() { - return ( - - - - ) -} diff --git a/admin-compliance/app/(admin)/dashboard/page.tsx b/admin-compliance/app/(admin)/dashboard/page.tsx deleted file mode 100644 index b6965b7..0000000 --- a/admin-compliance/app/(admin)/dashboard/page.tsx +++ /dev/null @@ -1,155 +0,0 @@ -'use client' - -import { useEffect, useState } from 'react' -import { navigation, metaModules } from '@/lib/navigation' -import { getStoredRole, isCategoryVisibleForRole, RoleId } from '@/lib/roles' -import { CategoryCard } from '@/components/common/ModuleCard' -import { InfoNote } from '@/components/common/InfoBox' -import { ServiceStatus } from '@/components/common/ServiceStatus' -import { NightModeWidget } from '@/components/dashboard/NightModeWidget' -import Link from 'next/link' - -interface Stats { - activeDocuments: number - openDSR: number - registeredUsers: number - totalConsents: number - gpuInstances: number -} - -export default function DashboardPage() { - const [stats, setStats] = useState({ - activeDocuments: 0, - openDSR: 0, - registeredUsers: 0, - totalConsents: 0, - gpuInstances: 0, - }) - const [loading, setLoading] = useState(true) - const [currentRole, setCurrentRole] = useState(null) - - useEffect(() => { - const role = getStoredRole() - setCurrentRole(role) - - // Load stats - const loadStats = async () => { - try { - const response = await fetch('http://localhost:8081/api/v1/admin/stats') - if (response.ok) { - const data = await response.json() - setStats({ - activeDocuments: data.documents_count || 0, - openDSR: data.open_dsr_count || 0, - registeredUsers: data.users_count || 0, - totalConsents: data.consents_count || 0, - gpuInstances: 0, - }) - } - } catch (error) { - console.log('Stats not available') - } finally { - setLoading(false) - } - } - - loadStats() - }, []) - - const statCards = [ - { label: 'Aktive Dokumente', value: stats.activeDocuments, color: 'text-green-600' }, - { label: 'Offene DSR', value: stats.openDSR, color: stats.openDSR > 0 ? 'text-orange-600' : 'text-slate-600' }, - { label: 'Registrierte Nutzer', value: stats.registeredUsers, color: 'text-blue-600' }, - { label: 'Zustimmungen', value: stats.totalConsents, color: 'text-purple-600' }, - { label: 'GPU Instanzen', value: stats.gpuInstances, color: 'text-pink-600' }, - ] - - const visibleCategories = currentRole - ? navigation.filter(cat => isCategoryVisibleForRole(cat.id, currentRole)) - : navigation - - return ( -
- {/* Stats Grid */} -
- {statCards.map((stat) => ( -
-
- {loading ? '-' : stat.value} -
-
{stat.label}
-
- ))} -
- - {/* Categories */} -

Bereiche

-
- {visibleCategories.map((category) => ( - - ))} -
- - {/* Quick Links */} -

Schnellzugriff

-
- {metaModules.filter(m => m.id !== 'dashboard').map((module) => ( - -
- {module.id === 'onboarding' && '📖'} - {module.id === 'backlog' && '📋'} - {module.id === 'rbac' && '👥'} -
-
-

{module.name}

-

{module.description}

-
- - ))} -
- - {/* Infrastructure & System Status */} -

Infrastruktur

-
- {/* Night Mode Widget */} - - - {/* System Status */} - -
- - {/* Recent Activity */} -

Aktivitaet

-
- {/* Recent DSR */} -
-
-

Neueste Datenschutzanfragen

- - Alle anzeigen - -
-
-

- Keine offenen Anfragen -

-
-
-
- - {/* Info Box */} -
- -

- Dieses neue Admin-Frontend bietet eine verbesserte Navigation mit Kategorien und Rollen-basiertem Zugriff. - Das alte Admin-Frontend ist weiterhin unter Port 3000 verfuegbar. -

-
-
-
- ) -} diff --git a/admin-compliance/app/(admin)/development/brandbook/page.tsx b/admin-compliance/app/(admin)/development/brandbook/page.tsx deleted file mode 100644 index b456395..0000000 --- a/admin-compliance/app/(admin)/development/brandbook/page.tsx +++ /dev/null @@ -1,1132 +0,0 @@ -'use client' - -/** - * Brandbook - Corporate Design & Styleguide - * - * Compliance SDK Brandbook mit: - * - Violet/Purple Farbschema - * - Compliance-spezifischen Komponenten - * - Inter Font Family - */ - -import { useState } from 'react' - -// Primary brand color (Violet) -const PRIMARY_COLORS = { - name: 'Primary (Violet)', - description: 'Haupt-Markenfarbe fuer Buttons, Links und Akzente im Compliance SDK', - shades: [ - { name: '50', value: '#f5f3ff', text: 'dark' }, - { name: '100', value: '#ede9fe', text: 'dark' }, - { name: '200', value: '#ddd6fe', text: 'dark' }, - { name: '300', value: '#c4b5fd', text: 'dark' }, - { name: '400', value: '#a78bfa', text: 'dark' }, - { name: '500', value: '#8b5cf6', text: 'light' }, - { name: '600', value: '#7c3aed', text: 'light' }, - { name: '700', value: '#6d28d9', text: 'light' }, - { name: '800', value: '#5b21b6', text: 'light' }, - { name: '900', value: '#4c1d95', text: 'light' }, - ], -} - -// Accent brand color (Purple) - for highlights and compliance accents -const ACCENT_COLORS = { - name: 'Accent (Purple)', - description: 'Akzentfarbe fuer Logo-Gradient und Compliance-Highlights', - shades: [ - { name: '50', value: '#faf5ff', text: 'dark' }, - { name: '100', value: '#f3e8ff', text: 'dark' }, - { name: '200', value: '#e9d5ff', text: 'dark' }, - { name: '300', value: '#d8b4fe', text: 'dark' }, - { name: '400', value: '#c084fc', text: 'dark' }, - { name: '500', value: '#a855f7', text: 'light' }, - { name: '600', value: '#9333ea', text: 'light' }, - { name: '700', value: '#7e22ce', text: 'light' }, - { name: '800', value: '#6b21a8', text: 'light' }, - { name: '900', value: '#581c87', text: 'light' }, - ], -} - -// Category colors for navigation and modules -const CATEGORY_COLORS = [ - { - id: 'dsgvo', - name: 'DSGVO-Grundlagen (Violet)', - description: 'Datenschutz, VVT, DSFA, TOM, Einwilligungen', - main: '#7c3aed', - shades: [ - { name: '100', value: '#ede9fe', text: 'dark' }, - { name: '500', value: '#8b5cf6', text: 'light' }, - { name: '600', value: '#7c3aed', text: 'light' }, - { name: '700', value: '#6d28d9', text: 'light' }, - ], - }, - { - id: 'compliance', - name: 'Compliance-Management (Purple)', - description: 'Audit, Controls, Requirements, Risks', - main: '#9333ea', - shades: [ - { name: '100', value: '#f3e8ff', text: 'dark' }, - { name: '500', value: '#a855f7', text: 'light' }, - { name: '600', value: '#9333ea', text: 'light' }, - { name: '700', value: '#7e22ce', text: 'light' }, - ], - }, - { - id: 'ai', - name: 'KI & Automatisierung (Teal)', - description: 'AI Act, Screening, RAG, Advisory Board', - main: '#14b8a6', - shades: [ - { name: '100', value: '#ccfbf1', text: 'dark' }, - { name: '500', value: '#14b8a6', text: 'light' }, - { name: '600', value: '#0d9488', text: 'light' }, - { name: '700', value: '#0f766e', text: 'light' }, - ], - }, - { - id: 'documents', - name: 'Dokumente & Legal (Orange)', - description: 'Document Generator, Notfallplan, Cookie-Banner', - main: '#f97316', - shades: [ - { name: '100', value: '#ffedd5', text: 'dark' }, - { name: '500', value: '#f97316', text: 'light' }, - { name: '600', value: '#ea580c', text: 'light' }, - { name: '700', value: '#c2410c', text: 'light' }, - ], - }, - { - id: 'vendor', - name: 'Vendor & Extern (Green)', - description: 'Lieferanten-Compliance, DSMS, Import', - main: '#22c55e', - shades: [ - { name: '100', value: '#dcfce7', text: 'dark' }, - { name: '500', value: '#22c55e', text: 'light' }, - { name: '600', value: '#16a34a', text: 'light' }, - { name: '700', value: '#15803d', text: 'light' }, - ], - }, - { - id: 'development', - name: 'Entwicklung (Slate)', - description: 'Docs, Screen Flow, Brandbook', - main: '#64748b', - shades: [ - { name: '100', value: '#f1f5f9', text: 'dark' }, - { name: '500', value: '#64748b', text: 'light' }, - { name: '600', value: '#475569', text: 'light' }, - { name: '700', value: '#334155', text: 'light' }, - ], - }, -] - -// Semantic colors -const SEMANTIC_COLORS = { - success: { - name: 'Success (Emerald)', - shades: [ - { name: '100', value: '#d1fae5', text: 'dark' }, - { name: '500', value: '#10b981', text: 'light' }, - { name: '600', value: '#059669', text: 'light' }, - ], - }, - warning: { - name: 'Warning (Amber)', - shades: [ - { name: '100', value: '#fef3c7', text: 'dark' }, - { name: '500', value: '#f59e0b', text: 'dark' }, - { name: '600', value: '#d97706', text: 'light' }, - ], - }, - danger: { - name: 'Danger (Red)', - shades: [ - { name: '100', value: '#fee2e2', text: 'dark' }, - { name: '500', value: '#ef4444', text: 'light' }, - { name: '600', value: '#dc2626', text: 'light' }, - ], - }, - neutral: { - name: 'Neutral (Slate)', - shades: [ - { name: '50', value: '#f8fafc', text: 'dark' }, - { name: '100', value: '#f1f5f9', text: 'dark' }, - { name: '200', value: '#e2e8f0', text: 'dark' }, - { name: '300', value: '#cbd5e1', text: 'dark' }, - { name: '400', value: '#94a3b8', text: 'dark' }, - { name: '500', value: '#64748b', text: 'light' }, - { name: '600', value: '#475569', text: 'light' }, - { name: '700', value: '#334155', text: 'light' }, - { name: '800', value: '#1e293b', text: 'light' }, - { name: '900', value: '#0f172a', text: 'light' }, - ], - }, -} - -const TYPOGRAPHY = { - fontFamily: "'Inter', system-ui, -apple-system, sans-serif", - weights: [ - { weight: 400, name: 'Regular', usage: 'Fliesstext, Beschreibungen' }, - { weight: 500, name: 'Medium', usage: 'Labels, Buttons, Navigation' }, - { weight: 600, name: 'Semi-Bold', usage: 'Ueberschriften H3-H6, Card-Titel' }, - { weight: 700, name: 'Bold', usage: 'Ueberschriften H1-H2, CTAs' }, - ], - sizes: [ - { name: 'xs', size: '0.75rem (12px)', usage: 'Footnotes, Badges' }, - { name: 'sm', size: '0.875rem (14px)', usage: 'Nebentext, Labels' }, - { name: 'base', size: '1rem (16px)', usage: 'Fliesstext, Body' }, - { name: 'lg', size: '1.125rem (18px)', usage: 'Lead Text' }, - { name: 'xl', size: '1.25rem (20px)', usage: 'H4, Card Titles' }, - { name: '2xl', size: '1.5rem (24px)', usage: 'H3' }, - { name: '3xl', size: '1.875rem (30px)', usage: 'H2' }, - { name: '4xl', size: '2.25rem (36px)', usage: 'H1, Hero' }, - ], -} - -const SPACING = [ - { name: '1', value: '0.25rem (4px)', usage: 'Minimaler Abstand' }, - { name: '2', value: '0.5rem (8px)', usage: 'Kompakter Abstand' }, - { name: '3', value: '0.75rem (12px)', usage: 'Standard klein' }, - { name: '4', value: '1rem (16px)', usage: 'Standard' }, - { name: '6', value: '1.5rem (24px)', usage: 'Card Padding' }, - { name: '8', value: '2rem (32px)', usage: 'Section Spacing' }, -] - -const VOICE_TONE = { - attributes: [ - 'Fachlich-praezise & Vertrauenswuerdig', - 'DSGVO-konform & Rechtssicher', - 'Klar & Strukturiert', - 'Audit-tauglich & Nachvollziehbar', - 'Modern & Professionell', - ], - doList: [ - 'Fachbegriffe korrekt verwenden (Art. 30 DSGVO, TOM, DSFA)', - 'Klare, strukturierte Formulierungen nutzen', - 'Rechtsgrundlagen immer referenzieren', - 'Handlungsanweisungen priorisiert darstellen', - 'Vertraulichkeit und Datenschutz betonen', - ], - dontList: [ - 'Rechtsbegriffe ungenau verwenden', - 'Technisches Marketing-Speak', - 'Compliance-Garantien ohne Einschraenkung', - 'Informelle oder saloppe Sprache', - 'Fehlende Quellenangaben bei Verordnungen', - ], -} - -function ColorSwatch({ color }: { color: { name: string; value: string; text: string } }) { - const [copied, setCopied] = useState(false) - - const copyToClipboard = () => { - navigator.clipboard.writeText(color.value) - setCopied(true) - setTimeout(() => setCopied(false), 2000) - } - - return ( - - ) -} - -export default function BrandbookPage() { - const [activeTab, setActiveTab] = useState<'colors' | 'typography' | 'components' | 'logo' | 'voice'>('colors') - - return ( -
- {/* Header */} -
-

Brandbook

-

Corporate Design & Styleguide fuer BreakPilot Compliance SDK

-
- - {/* Tabs */} -
-
- {[ - { id: 'colors', label: 'Farben' }, - { id: 'typography', label: 'Typografie' }, - { id: 'components', label: 'Komponenten' }, - { id: 'logo', label: 'Logo' }, - { id: 'voice', label: 'Tonalitaet' }, - ].map((tab) => ( - - ))} -
-
- - {/* Colors Tab */} - {activeTab === 'colors' && ( -
- {/* Primary Color */} -
-

{PRIMARY_COLORS.name}

-

{PRIMARY_COLORS.description}

-
- {PRIMARY_COLORS.shades.map((shade) => ( - - ))} -
-
- - {/* Accent Color */} -
-

{ACCENT_COLORS.name}

-

{ACCENT_COLORS.description}

-
- {ACCENT_COLORS.shades.map((shade) => ( - - ))} -
- {/* Logo Gradient Preview */} -
-

Logo-Gradient

-
-
- B -
-
- - bg-gradient-to-br from-violet-500 to-purple-600 - -

Violet (#8b5cf6) → Purple (#9333ea)

-
-
-
-
- - {/* Category Colors */} -
-

Kategorie-Farben

-

- Jede Kategorie hat eine eigene Farbe fuer Navigation, Module und Akzente. -

-
- {CATEGORY_COLORS.map((cat) => ( -
-
-
-
-

{cat.name}

-

{cat.description}

-
-
-
- {cat.shades.map((shade) => ( - - ))} -
-
- ))} -
-
- - {/* Semantic Colors */} -
-

Semantische Farben

-
- {Object.entries(SEMANTIC_COLORS).map(([key, palette]) => ( -
-

{palette.name}

-
- {palette.shades.map((shade) => ( - - ))} -
-
- ))} -
-
- - {/* Usage Guidelines */} -
-

Verwendungsrichtlinien

-
-
-

Primary (Violet)

-
    -
  • - Primaere Buttons und CTAs
  • -
  • - Links und interaktive Elemente
  • -
  • - Fokuszustaende
  • -
  • - Ausgewaehlte Navigation
  • -
  • - SDK Pipeline Sidebar Akzente
  • -
-
-
-

Kategorie-Farben

-
    -
  • - Sidebar-Navigation Icons
  • -
  • - Modul-Cards und Badges
  • -
  • - Compliance-Status Indikatoren
  • -
  • - Breadcrumbs und Headers
  • -
-
-
-
-
- )} - - {/* Typography Tab */} - {activeTab === 'typography' && ( -
- {/* Font Family */} -
-

Schriftart: Inter

-
- font-family: {TYPOGRAPHY.fontFamily}; -
-

- Inter ist eine moderne, variable Sans-Serif Schrift, optimiert fuer Bildschirme. - Sie ist unter der SIL Open Font License verfuegbar und frei fuer kommerzielle Nutzung. -

-
- - {/* Font Licenses */} -
-

Lizenzen

-
-
-
-
-

Inter Font

-

Designer: Rasmus Andersson

-
- - OFL-1.1 - -
-
-
- Lizenz: - SIL Open Font License 1.1 -
-
- Kommerzielle Nutzung: - Ja, uneingeschraenkt -
-
-
- -
-
-
-

Lucide Icons

-

Community-driven Icon Library

-
- - ISC - -
-
-
- Lizenz: - ISC License -
-
- Kommerzielle Nutzung: - Ja, uneingeschraenkt -
-
-
- -
-
- - - -

Lizenz-Compliance

-
-

- Alle verwendeten Schriftarten und Icons sind Open Source und fuer kommerzielle Nutzung freigegeben. - Vollstaendige Dokumentation in der SBOM verfuegbar. -

-
-
-
- - {/* Font Weights */} -
-

Schriftschnitte

-
- {TYPOGRAPHY.weights.map((w) => ( -
- - Compliance SDK - -
- {w.name} ({w.weight}) - {w.usage} -
-
- ))} -
-
- - {/* Font Sizes */} -
-

Schriftgroessen

-
- {TYPOGRAPHY.sizes.map((s) => ( -
- {s.name} - {s.size} - {s.usage} -
- ))} -
-
- - {/* Headings Preview */} -
-

Ueberschriften-Hierarchie

-
-
H1: Compliance Dashboard
-
H2: DSGVO-Grundlagen
-
H3: Verarbeitungsverzeichnis
-
H4: TOM-Massnahmen
-
H5: Risikobewertung
-
H6: Control-ID
-
-
- - {/* Spacing */} -
-

Spacing Scale

-
- {SPACING.map((s) => ( -
- {s.name} -
- {s.value} - {s.usage} -
- ))} -
-
-
- )} - - {/* Components Tab */} - {activeTab === 'components' && ( -
- {/* Buttons */} -
-

Buttons

-
- - - - - -
-
- - - -
-
- - {/* Checkpoint Status Badges */} -
-

Checkpoint-Status Badges

-

Fuer Pipeline-Checkpoints im SDK.

-
- - - Passed - - - - Failed - - - - Warning - - - - Pending - -
-
- - {/* Risk Level Badges */} -
-

Risk-Level Badges

-

Fuer Risikobewertung in der Compliance-Pipeline.

-
- - Low - - - Medium - - - High - - - Critical - -
-
- - {/* Compliance Status Cards */} -
-

Compliance-Status Cards

-
-
-
-
- Konform -
-
342
-
Controls erfuellt
-
-
-
-
- In Bearbeitung -
-
89
-
Controls offen
-
-
-
-
- Nicht konform -
-
43
-
Controls fehlend
-
-
-
- - {/* Module Cards with Progress */} -
-

Modul-Cards mit Fortschritt

-
- {CATEGORY_COLORS.slice(0, 3).map((cat) => ( -
-
- - - -
-

{cat.name.split(' (')[0]}

-

{cat.description}

- {/* Progress Bar */} -
-
-
-
Fortschritt
-
- ))} -
-
- - {/* Command Bar */} -
-

Command Bar (Cmd+K)

-
-
-
- - - - Suche Module, Dokumente, Aktionen... - ESC -
-
-
- 📋 - VVT - Verarbeitungsverzeichnis - DSGVO -
-
- ⚖️ - DSFA - Folgenabschaetzung - DSGVO -
-
- - Compliance Hub - GRC -
-
-
-
-
- - {/* Standard Inputs */} -
-

Eingabefelder

-
-
- - -
-
- -
- - - - -
-
-
-
- - {/* Compliance Advisor Widget */} -
-

Compliance Advisor Widget

-
-
-
-
- - - -
- Compliance Advisor -
-
-
- Basierend auf Ihrer aktuellen Konfiguration empfehle ich die Durchfuehrung einer DSFA fuer die KI-gestuetzte Dokumentenanalyse (Art. 35 DSGVO). -
-
- - -
-
-
-
-
- - {/* Badges */} -
-

Kategorie-Badges

-
- {CATEGORY_COLORS.map((cat) => ( - - {cat.name.split(' (')[0]} - - ))} -
-
- - {/* Border Radius */} -
-

Border Radius

-
-
-
- rounded (4px) -
-
-
- rounded-lg (8px) -
-
-
- rounded-xl (12px) -
-
-
- rounded-2xl (16px) -
-
-
- rounded-full -
-
-
-
- )} - - {/* Logo Tab */} - {activeTab === 'logo' && ( -
- {/* Logo Display */} -
-

Logo

-
-
-
-
- B -
-
- BreakPilot - Compliance SDK -
-
-
-
-
-
- B -
-
- BreakPilot - Compliance SDK -
-
-
-
- {/* Gradient Info */} -
-
- - background: linear-gradient(to bottom right, #8b5cf6, #9333ea) - - Primary → Accent (Violet → Purple) -
-
-
- - {/* Logo Variations */} -
-

Logo-Varianten

-
-
-
- B -
- Icon Only -
-
- BreakPilot - Text Only -
-
-
-
- B -
- BreakPilot -
- Horizontal -
-
-
-
- B -
- BreakPilot -
- Stacked -
-
-
- - {/* SDK Badge */} -
-

SDK Badge / Shield

-
-
- - - - Compliance SDK -
-
- - - - DSGVO konform -
-
- v1.0 - BreakPilot SDK -
-
-
- - {/* Favicon */} -
-

Favicon & App Icon

-
-
-
- B -
- 16x16 -
-
-
- B -
- 32x32 -
-
-
- B -
- 180x180 -
-
-
- B -
- 512x512 -
-
-
- - {/* Donts */} -
-

Nicht erlaubt

-
-
-
-
- B -
- BreakPilot -
- Falsche Farben -
-
-
-
- B -
- BreakPilot -
- Verzerrt -
-
-
-
- B -
- Break Pilot -
- Falsche Schreibweise -
-
-
-
- )} - - {/* Voice & Tone Tab */} - {activeTab === 'voice' && ( -
- {/* Brand Attributes */} -
-

Markenpersoenlichkeit

-
- {VOICE_TONE.attributes.map((attr) => ( - - {attr} - - ))} -
-
- - {/* Do & Dont */} -
-
-

- - - - So schreiben wir -

-
    - {VOICE_TONE.doList.map((item) => ( -
  • - - {item} -
  • - ))} -
-
-
-

- - - - Das vermeiden wir -

-
    - {VOICE_TONE.dontList.map((item) => ( -
  • - - {item} -
  • - ))} -
-
-
- - {/* Example Texts */} -
-

Beispieltexte

-
-
- GUT -

- "Gemaess Art. 30 DSGVO ist ein Verarbeitungsverzeichnis verpflichtend. Erfassen Sie hier alle Verarbeitungstaetigkeiten mit Rechtsgrundlage, Zweck und Empfaengerkategorien." -

-
-
- GUT -

- "Ihre DSFA fuer die KI-gestuetzte Dokumentenanalyse zeigt ein mittleres Risiko. Empfohlene Massnahme: Implementierung einer Pseudonymisierung vor der Verarbeitung." -

-
-
- SCHLECHT -

- "Unsere revolutionaere KI garantiert 100% DSGVO-Compliance und macht Datenschutzbeauftragte ueberfluessig." -

-
-
- SCHLECHT -

- "Hey, check mal die coolen neuen Compliance-Features! Einfach draufklicken und schon bist du DSGVO-konform!" -

-
-
-
- - {/* Target Audience */} -
-

Zielgruppe

-
-
-
- - - -
-

DSB

-

DSGVO-Compliance, Art. 37-39 Pflichten

-
-
-
- - - -
-

Compliance Officer

-

GRC, Audit, Controls & Evidence

-
-
-
- - - -
-

Auditoren

-

Pruefberichte, Nachweise, Checklisten

-
-
-
- - - -
-

Entwickler

-

SDK-Integration, APIs, DevOps

-
-
-
-
- )} -
- ) -} diff --git a/admin-compliance/app/(admin)/development/docs/page.tsx b/admin-compliance/app/(admin)/development/docs/page.tsx deleted file mode 100644 index 6081778..0000000 --- a/admin-compliance/app/(admin)/development/docs/page.tsx +++ /dev/null @@ -1,188 +0,0 @@ -'use client' - -import { useState } from 'react' -import { ExternalLink, Maximize2, Minimize2, RefreshCw, Search, BookOpen, ArrowRight } from 'lucide-react' - -// Quick links to compliance documentation sections -const quickLinks = [ - { name: 'AI Compliance SDK', path: 'services/ai-compliance-sdk/', icon: '🔒' }, - { name: 'Architektur', path: 'services/ai-compliance-sdk/ARCHITECTURE/', icon: '🏗️' }, - { name: 'Developer Guide', path: 'services/ai-compliance-sdk/DEVELOPER/', icon: '👩‍💻' }, - { name: 'Auditor Doku', path: 'services/ai-compliance-sdk/AUDITOR_DOCUMENTATION/', icon: '📋' }, - { name: 'SBOM', path: 'services/ai-compliance-sdk/SBOM/', icon: '📦' }, - { name: 'CI/CD Pipeline', path: 'development/ci-cd-pipeline/', icon: '🚀' }, -] - -export default function DocsPage() { - const [isFullscreen, setIsFullscreen] = useState(false) - const [isLoading, setIsLoading] = useState(true) - const [currentPath, setCurrentPath] = useState('') - - const getDocsUrl = () => { - if (typeof window !== 'undefined') { - const protocol = window.location.protocol - const hostname = window.location.hostname - const port = window.location.port - return `${protocol}//${hostname}${port ? ':' + port : ''}/docs` - } - return '/docs' - } - - const docsUrl = getDocsUrl() - - const handleIframeLoad = () => { - setIsLoading(false) - } - - const navigateTo = (path: string) => { - setCurrentPath(path) - setIsLoading(true) - } - - const toggleFullscreen = () => { - setIsFullscreen(!isFullscreen) - } - - const openInNewTab = () => { - window.open(`${docsUrl}/${currentPath}`, '_blank') - } - - const refreshDocs = () => { - setIsLoading(true) - setCurrentPath(currentPath + '?refresh=' + Date.now()) - setTimeout(() => setCurrentPath(currentPath), 100) - } - - if (isFullscreen) { - return ( -
-
-
- - BreakPilot Compliance Dokumentation -
-
- - -
-
-