This repository has been archived on 2026-02-15. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
breakpilot-pwa/pitch-deck/components/slides/AnnexUSPOverviewSlide.tsx
Benjamin Admin 70f2b0ae64 refactor: Consolidate standalone services into admin-v2, add new SDK modules
Remove standalone services (ai-compliance-sdk root, developer-portal,
dsms-gateway, dsms-node, night-scheduler) and legacy compliance/dsgvo pages.
Add new SDK pipeline modules (academy, document-crawler, dsb-portal,
incidents, whistleblower, reporting, sso, multi-tenant, industry-templates).
Add drafting engine, legal corpus files (AT/CH/DE), pitch-deck,
blog and Förderantrag pages.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-15 09:05:18 +01:00

130 lines
5.1 KiB
TypeScript

'use client'
import { motion } from 'framer-motion'
import { Server, Brain, Shield, Layers, Bot } from 'lucide-react'
import { Language } from '@/lib/types'
import GradientText from '../ui/GradientText'
import FadeInView from '../ui/FadeInView'
interface AnnexUSPOverviewSlideProps {
lang: Language
}
const usps = [
{
icon: Server,
gradient: 'from-blue-500 to-cyan-500',
titleDE: 'Self-Hosted',
titleEN: 'Self-Hosted',
descDE: 'Volle Datensouveraenitaet. Kein Byte verlaesst das Unternehmen. Hardware steht im eigenen Serverraum.',
descEN: 'Full data sovereignty. No byte leaves the company. Hardware sits in your own server room.'
},
{
icon: Brain,
gradient: 'from-purple-500 to-pink-500',
titleDE: 'AI-First',
titleEN: 'AI-First',
descDE: 'Alles was durch KI loesbar ist, wird durch KI geloest. Kein klassischer Support, minimales Personal.',
descEN: 'Everything solvable by AI is solved by AI. No traditional support, minimal personnel.'
},
{
icon: Shield,
gradient: 'from-green-500 to-emerald-500',
titleDE: 'Hardware-Moat',
titleEN: 'Hardware-Moat',
descDE: 'Apple Hardware als physische Markteintrittsbarriere. Wechselkosten machen Lock-in positiv.',
descEN: 'Apple hardware as physical market entry barrier. Switching costs create positive lock-in.'
},
{
icon: Layers,
gradient: 'from-amber-500 to-orange-500',
titleDE: 'All-in-One',
titleEN: 'All-in-One',
descDE: 'DSGVO + AI Act + NIS2 in einer Loesung. Kein Tool-Dschungel, eine Plattform fuer alles.',
descEN: 'GDPR + AI Act + NIS2 in one solution. No tool jungle, one platform for everything.'
},
{
icon: Bot,
gradient: 'from-pink-500 to-rose-500',
titleDE: 'Autonomous Support',
titleEN: 'Autonomous Support',
descDE: '24/7 KI-Support beantwortet Fragen, aendert Dokumente, bereitet Audits vor. Ohne menschliches Eingreifen.',
descEN: '24/7 AI support answers questions, modifies documents, prepares audits. Without human intervention.'
}
]
export default function AnnexUSPOverviewSlide({ lang }: AnnexUSPOverviewSlideProps) {
return (
<div className="max-w-6xl mx-auto px-4">
<FadeInView>
<div className="text-center mb-12">
<h2 className="text-4xl md:text-5xl font-bold mb-4">
<GradientText>
{lang === 'de' ? 'Unsere 5 USPs' : 'Our 5 USPs'}
</GradientText>
</h2>
<p className="text-xl text-white/60">
{lang === 'de' ? 'Was uns einzigartig macht' : 'What makes us unique'}
</p>
</div>
</FadeInView>
<div className="grid grid-cols-1 md:grid-cols-3 gap-6 mb-6">
{usps.slice(0, 3).map((usp, index) => {
const Icon = usp.icon
return (
<motion.div
key={index}
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ delay: index * 0.1, duration: 0.5 }}
className="bg-white/[0.04] border border-white/[0.06] rounded-xl p-4 relative overflow-hidden"
>
<div className={`absolute top-0 left-0 right-0 h-1 bg-gradient-to-r ${usp.gradient}`} />
<div className="flex flex-col items-center text-center pt-2">
<div className={`w-16 h-16 rounded-full bg-gradient-to-r ${usp.gradient} flex items-center justify-center mb-4`}>
<Icon className="w-8 h-8 text-white" />
</div>
<h3 className="text-xl font-bold text-white mb-3">
{lang === 'de' ? usp.titleDE : usp.titleEN}
</h3>
<p className="text-sm text-white/70 leading-relaxed">
{lang === 'de' ? usp.descDE : usp.descEN}
</p>
</div>
</motion.div>
)
})}
</div>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6 max-w-4xl mx-auto">
{usps.slice(3, 5).map((usp, index) => {
const Icon = usp.icon
return (
<motion.div
key={index + 3}
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ delay: (index + 3) * 0.1, duration: 0.5 }}
className="bg-white/[0.04] border border-white/[0.06] rounded-xl p-4 relative overflow-hidden"
>
<div className={`absolute top-0 left-0 right-0 h-1 bg-gradient-to-r ${usp.gradient}`} />
<div className="flex flex-col items-center text-center pt-2">
<div className={`w-16 h-16 rounded-full bg-gradient-to-r ${usp.gradient} flex items-center justify-center mb-4`}>
<Icon className="w-8 h-8 text-white" />
</div>
<h3 className="text-xl font-bold text-white mb-3">
{lang === 'de' ? usp.titleDE : usp.titleEN}
</h3>
<p className="text-sm text-white/70 leading-relaxed">
{lang === 'de' ? usp.descDE : usp.descEN}
</p>
</div>
</motion.div>
)
})}
</div>
</div>
)
}