'use client' import { useState, useMemo } from 'react' import { useSDK } from '@/lib/sdk' import { useEinwilligungen } from '@/lib/sdk/einwilligungen/context' import { generateCookieBannerConfig, DEFAULT_COOKIE_BANNER_TEXTS, DEFAULT_COOKIE_BANNER_STYLING, } from '@/lib/sdk/einwilligungen/generator/cookie-banner' import { CookieBannerStyling, CookieBannerTexts, SupportedLanguage, } from '@/lib/sdk/einwilligungen/types' import { Cookie, Settings, Palette, Code, Monitor, Smartphone, Tablet } from 'lucide-react' import Link from 'next/link' import { ArrowLeft } from 'lucide-react' import { StylingForm } from './StylingForm' import { TextsForm } from './TextsForm' import { BannerPreview } from './BannerPreview' import { EmbedCodeViewer } from './EmbedCodeViewer' import { CategoryList } from './CategoryList' export function CookieBannerContent() { const { state } = useSDK() const { allDataPoints } = useEinwilligungen() const [styling, setStyling] = useState(DEFAULT_COOKIE_BANNER_STYLING) const [texts, setTexts] = useState(DEFAULT_COOKIE_BANNER_TEXTS) const [language, setLanguage] = useState('de') const [activeTab, setActiveTab] = useState<'styling' | 'texts' | 'embed' | 'categories'>('styling') const [device, setDevice] = useState<'desktop' | 'tablet' | 'mobile'>('desktop') const config = useMemo(() => { return generateCookieBannerConfig(state.tenantId || 'demo', allDataPoints, texts, styling) }, [state.tenantId, allDataPoints, texts, styling]) const cookieDataPoints = useMemo( () => allDataPoints.filter((dp) => dp.cookieCategory !== null), [allDataPoints] ) return (
Zurueck zum Katalog

Cookie-Banner Konfiguration

Konfigurieren Sie Ihren DSGVO-konformen Cookie-Banner.

Kategorien
{config?.categories.length || 0}
Cookie-Datenpunkte
{cookieDataPoints.length}
Erforderlich
{config?.categories.filter((c) => c.isRequired).length || 0}
Optional
{config?.categories.filter((c) => !c.isRequired).length || 0}
{[ { id: 'styling', label: 'Design', icon: Palette }, { id: 'texts', label: 'Texte', icon: Settings }, { id: 'categories', label: 'Kategorien', icon: Cookie }, { id: 'embed', label: 'Embed-Code', icon: Code }, ].map(({ id, label, icon: Icon }) => ( ))}
{activeTab === 'styling' && } {activeTab === 'texts' && } {activeTab === 'categories' && } {activeTab === 'embed' && }

Vorschau

{[ { id: 'desktop', icon: Monitor }, { id: 'tablet', icon: Tablet }, { id: 'mobile', icon: Smartphone }, ].map(({ id, icon: Icon }) => ( ))}
) }