feat(pitch-deck): tab pulse animation + BrandName in regulatory/competition

- Inactive tabs pulse gently (animate-[pulse_3s]) on:
  Competition, AIPipeline, Financials, Regulatory slides
- RegulatorySlide: "Wie ComplAI hilft" → BrandName component
- CompetitionSlide: "ComplAI" label → BrandName component

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-04-15 22:26:05 +02:00
parent 474f09ce88
commit d2c2fd92cc
4 changed files with 7 additions and 6 deletions

View File

@@ -228,7 +228,7 @@ export default function AIPipelineSlide({ lang }: AIPipelineSlideProps) {
className={`flex items-center gap-2 px-4 py-2 rounded-xl text-sm transition-all className={`flex items-center gap-2 px-4 py-2 rounded-xl text-sm transition-all
${activeTab === tab.id ${activeTab === tab.id
? 'bg-indigo-500/20 text-indigo-300 border border-indigo-500/30' ? 'bg-indigo-500/20 text-indigo-300 border border-indigo-500/30'
: 'bg-white/[0.04] text-white/40 border border-transparent hover:text-white/60 hover:bg-white/[0.06]' : 'bg-white/[0.04] text-white/40 border border-transparent hover:text-white/60 hover:bg-white/[0.06] animate-[pulse_3s_ease-in-out_infinite]'
}`} }`}
> >
<Icon className="w-4 h-4" /> <Icon className="w-4 h-4" />

View File

@@ -537,7 +537,7 @@ export default function CompetitionSlide({ lang, features, competitors }: Compet
className={`px-4 py-1.5 rounded-full text-xs font-medium transition-all ${ className={`px-4 py-1.5 rounded-full text-xs font-medium transition-all ${
activeTab === tab.key activeTab === tab.key
? 'bg-indigo-500/20 text-indigo-300 border border-indigo-500/30' ? 'bg-indigo-500/20 text-indigo-300 border border-indigo-500/30'
: 'bg-white/[0.04] text-white/40 border border-white/5 hover:bg-white/[0.08]' : 'bg-white/[0.04] text-white/40 border border-white/5 hover:bg-white/[0.08] animate-[pulse_3s_ease-in-out_infinite]'
}`} }`}
> >
{lang === 'de' ? tab.de : tab.en} {lang === 'de' ? tab.de : tab.en}
@@ -762,7 +762,7 @@ export default function CompetitionSlide({ lang, features, competitors }: Compet
<div className="text-white/30 text-[10px]">{lang === 'de' ? 'Vanta, Drata — SOC 2 Fokus, Setup-Gebuehr, kein Self-Hosted' : 'Vanta, Drata — SOC 2 focus, setup fee, no self-hosted'}</div> <div className="text-white/30 text-[10px]">{lang === 'de' ? 'Vanta, Drata — SOC 2 Fokus, Setup-Gebuehr, kein Self-Hosted' : 'Vanta, Drata — SOC 2 focus, setup fee, no self-hosted'}</div>
</div> </div>
<div className="bg-indigo-500/5 border border-indigo-500/10 rounded-lg p-2"> <div className="bg-indigo-500/5 border border-indigo-500/10 rounded-lg p-2">
<div className="text-indigo-400 mb-1 font-medium">ComplAI</div> <div className="text-indigo-400 mb-1 font-medium"><BrandName /></div>
<div className="text-white/80 font-medium">990 2.990/mo</div> <div className="text-white/80 font-medium">990 2.990/mo</div>
<div className="text-white/30 text-[10px]">{lang === 'de' ? 'Compliance + Code-Security + Self-Hosted KI, kein Setup' : 'Compliance + code security + self-hosted AI, no setup fee'}</div> <div className="text-white/30 text-[10px]">{lang === 'de' ? 'Compliance + Code-Security + Self-Hosted KI, kein Setup' : 'Compliance + code security + self-hosted AI, no setup fee'}</div>
</div> </div>

View File

@@ -117,7 +117,7 @@ export default function FinancialsSlide({ lang, investorId }: FinancialsSlidePro
className={`px-3 py-1.5 rounded-lg text-xs transition-all className={`px-3 py-1.5 rounded-lg text-xs transition-all
${activeTab === tab.id ${activeTab === tab.id
? 'bg-indigo-500/20 text-indigo-300 border border-indigo-500/30' ? 'bg-indigo-500/20 text-indigo-300 border border-indigo-500/30'
: 'bg-white/[0.04] text-white/40 border border-transparent hover:text-white/60 hover:bg-white/[0.06]' : 'bg-white/[0.04] text-white/40 border border-transparent hover:text-white/60 hover:bg-white/[0.06] animate-[pulse_3s_ease-in-out_infinite]'
}`} }`}
> >
{tab.label} {tab.label}

View File

@@ -4,6 +4,7 @@ import { useState } from 'react'
import { Language } from '@/lib/types' import { Language } from '@/lib/types'
import { t } from '@/lib/i18n' import { t } from '@/lib/i18n'
import GradientText from '../ui/GradientText' import GradientText from '../ui/GradientText'
import BrandName from '../ui/BrandName'
import FadeInView from '../ui/FadeInView' import FadeInView from '../ui/FadeInView'
import GlassCard from '../ui/GlassCard' import GlassCard from '../ui/GlassCard'
import { Shield, Scale, Wifi, Lock, Calendar, AlertTriangle, CheckCircle2, Clock } from 'lucide-react' import { Shield, Scale, Wifi, Lock, Calendar, AlertTriangle, CheckCircle2, Clock } from 'lucide-react'
@@ -237,7 +238,7 @@ export default function RegulatorySlide({ lang }: RegulatorySlideProps) {
className={`flex items-center gap-2 px-4 py-2 rounded-xl text-sm transition-all className={`flex items-center gap-2 px-4 py-2 rounded-xl text-sm transition-all
${activeTab === tab.id ${activeTab === tab.id
? 'bg-indigo-500/20 text-indigo-300 border border-indigo-500/30' ? 'bg-indigo-500/20 text-indigo-300 border border-indigo-500/30'
: 'bg-white/[0.04] text-white/40 border border-transparent hover:text-white/60 hover:bg-white/[0.06]' : 'bg-white/[0.04] text-white/40 border border-transparent hover:text-white/60 hover:bg-white/[0.06] animate-[pulse_3s_ease-in-out_infinite]'
}`} }`}
> >
<Icon className="w-4 h-4" /> <Icon className="w-4 h-4" />
@@ -273,7 +274,7 @@ export default function RegulatorySlide({ lang }: RegulatorySlideProps) {
<GlassCard hover={false} className="p-4"> <GlassCard hover={false} className="p-4">
<p className="text-xs font-semibold text-emerald-400 uppercase tracking-wider mb-2"> <p className="text-xs font-semibold text-emerald-400 uppercase tracking-wider mb-2">
{de ? 'Wie ComplAI hilft' : 'How ComplAI Helps'} {de ? <>Wie <BrandName /> hilft</> : <>How <BrandName /> Helps</>}
</p> </p>
<ul className="space-y-1.5"> <ul className="space-y-1.5">
{reg.howWeHelp.map((item, idx) => ( {reg.howWeHelp.map((item, idx) => (