'use client' import { useState, useEffect, useCallback } from 'react' import { motion, AnimatePresence } from 'framer-motion' import Image from 'next/image' import { Language } from '@/lib/types' import GradientText from '../ui/GradientText' import FadeInView from '../ui/FadeInView' import { ChevronLeft, ChevronRight, Maximize2 } from 'lucide-react' interface SDKDemoSlideProps { lang: Language } const SCREENSHOTS = [ { file: '01-dashboard.png', de: 'SDK Dashboard', en: 'SDK Dashboard', category: 'overview' }, { file: '21-sdk-flow.png', de: 'SDK Flow — 36 Steps', en: 'SDK Flow — 36 Steps', category: 'overview' }, { file: '02-company-profile.png', de: 'Unternehmensprofil', en: 'Company Profile', category: 'setup' }, { file: '03-compliance-scope.png', de: 'Compliance-Scope', en: 'Compliance Scope', category: 'setup' }, { file: '04-vvt.png', de: 'Verarbeitungsverzeichnis (Art. 30)', en: 'Processing Register (Art. 30)', category: 'docs' }, { file: '05-tom.png', de: 'TOM — Maßnahmen (Art. 32)', en: 'TOM — Measures (Art. 32)', category: 'docs' }, { file: '06-dsfa.png', de: 'Datenschutz-Folgenabschätzung', en: 'Data Protection Impact Assessment', category: 'docs' }, { file: '07-risks.png', de: 'Risikomatrix', en: 'Risk Matrix', category: 'analysis' }, { file: '08-obligations.png', de: 'Pflichtenübersicht', en: 'Obligations Overview', category: 'docs' }, { file: '09-loeschfristen.png', de: 'Löschfristen', en: 'Retention Policies', category: 'docs' }, { file: '10-controls.png', de: 'Controls', en: 'Controls', category: 'analysis' }, { file: '11-ai-act.png', de: 'AI Act Compliance', en: 'AI Act Compliance', category: 'analysis' }, { file: '12-requirements.png', de: 'Anforderungen', en: 'Requirements', category: 'analysis' }, { file: '13-evidence.png', de: 'Nachweise', en: 'Evidence', category: 'analysis' }, { file: '14-audit-report.png', de: 'Audit-Report', en: 'Audit Report', category: 'analysis' }, { file: '15-document-generator.png', de: 'Dokumenten-Generator', en: 'Document Generator', category: 'docs' }, { file: '16-einwilligungen.png', de: 'Einwilligungsmanagement', en: 'Consent Management', category: 'legal' }, { file: '22-iace.png', de: 'CE-Compliance (IACE)', en: 'CE Compliance (IACE)', category: 'analysis' }, { file: '20-rag.png', de: 'Legal RAG — 25.000+ Sicherheitskontrollen', en: 'Legal RAG — 25,000+ Security Controls', category: 'ai' }, { file: '19-training.png', de: 'Compliance-Schulungen', en: 'Compliance Training', category: 'ops' }, { file: '23-incidents.png', de: 'Incident Response', en: 'Incident Response', category: 'ops' }, { file: '24-reporting.png', de: 'Reporting', en: 'Reporting', category: 'ops' }, ] export default function SDKDemoSlide({ lang }: SDKDemoSlideProps) { const de = lang === 'de' const [current, setCurrent] = useState(0) const [fullscreen, setFullscreen] = useState(false) const [autoPlay, setAutoPlay] = useState(true) const next = useCallback(() => { setCurrent(i => (i + 1) % SCREENSHOTS.length) }, []) const prev = useCallback(() => { setCurrent(i => (i - 1 + SCREENSHOTS.length) % SCREENSHOTS.length) }, []) // Auto-advance every 3s when not in fullscreen useEffect(() => { if (!autoPlay || fullscreen) return const timer = setInterval(next, 3000) return () => clearInterval(timer) }, [autoPlay, fullscreen, next]) const shot = SCREENSHOTS[current] return (
{de ? 'Anhang' : 'Appendix'}
{de ? 'Echte Screenshots aus dem Compliance SDK — Kundenprojekt: Müller Maschinenbau GmbH' : 'Real screenshots from the Compliance SDK — Customer project: Müller Maschinenbau GmbH'}
{de ? shot.de : shot.en}
{current + 1} / {SCREENSHOTS.length}
{de ? shot.de : shot.en} — {de ? 'Klicken zum Schließen' : 'Click to close'}