import React, { useState } from 'react'; import { Head, Link, usePage } from '@inertiajs/react'; import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "@/components/ui/carousel" import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { Badge } from "@/components/ui/badge" import { Progress } from "@/components/ui/progress" import { Button } from "@/components/ui/button" import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion" import MarketingLayout from '@/layouts/marketing/MarketingLayout'; import { ArrowRight, ShoppingCart, Check, X, Users, Image, Calendar, Shield, Star } from 'lucide-react'; interface Package { id: number; name: string; description: string; price: number; events: number; features: string[]; limits?: { max_photos?: number; max_guests?: number; max_tenants?: number; max_events?: number; gallery_days?: number; }; watermark_allowed?: boolean; branding_allowed?: boolean; } interface PackagesProps { endcustomerPackages: Package[]; resellerPackages: Package[]; } const Packages: React.FC = ({ endcustomerPackages, resellerPackages }) => { const [open, setOpen] = useState(false); const [selectedPackage, setSelectedPackage] = useState(null); const [currentStep, setCurrentStep] = useState('step1'); const { props } = usePage(); const { auth } = props as any; const testimonials = [ { name: 'Anna M.', text: 'Das Starter-Paket war perfekt für unsere Hochzeit – einfach und günstig!', rating: 5 }, { name: 'Max B.', text: 'Pro-Paket mit Analytics hat uns geholfen, die besten Momente zu finden.', rating: 5 }, { name: 'Lisa K.', text: 'Als Reseller spare ich Zeit mit dem M-Paket – super Support!', rating: 5 }, ]; const allPackages = [...endcustomerPackages, ...resellerPackages]; const handleCardClick = (pkg: Package) => { setSelectedPackage(pkg); setCurrentStep('step1'); setOpen(true); }; // nextStep entfernt, da Tabs nun parallel sind const getFeatureIcon = (feature: string) => { switch (feature) { case 'basic_uploads': return ; case 'unlimited_sharing': return ; case 'no_watermark': return ; case 'custom_tasks': return ; case 'advanced_analytics': return ; case 'priority_support': return ; case 'reseller_dashboard': return ; case 'custom_branding': return ; default: return ; } }; return ( {/* Hero Section */}

Unsere Packages

Wählen Sie das passende Paket für Ihr Event – von kostenlos bis premium.

Jetzt entdecken

Für Endkunden

{/* Mobile Carousel for Endcustomer Packages */}
{endcustomerPackages.map((pkg) => (

{pkg.name}

{pkg.description}

{pkg.price === 0 ? 'Kostenlos' : `${pkg.price} €`}

  • • {pkg.events} Events
  • {pkg.features.map((feature, index) => (
  • {getFeatureIcon(feature)} {feature}
  • ))} {pkg.limits?.max_photos &&
  • • Max. {pkg.limits.max_photos} Fotos
  • } {pkg.limits?.gallery_days &&
  • • Galerie {pkg.limits.gallery_days} Tage
  • } {pkg.limits?.max_guests &&
  • • Max. {pkg.limits.max_guests} Gäste
  • } {pkg.watermark_allowed === false &&
  • Kein Watermark
  • } {pkg.branding_allowed &&
  • Custom Branding
  • }
))}
{/* Desktop Grid for Endcustomer Packages */}
{endcustomerPackages.map((pkg) => (

{pkg.name}

{pkg.description}

{pkg.price === 0 ? 'Kostenlos' : `${pkg.price} €`}

  • • {pkg.events} Events
  • {pkg.features.map((feature, index) => (
  • {getFeatureIcon(feature)} {feature}
  • ))} {pkg.limits?.max_photos &&
  • • Max. {pkg.limits.max_photos} Fotos
  • } {pkg.limits?.gallery_days &&
  • • Galerie {pkg.limits.gallery_days} Tage
  • } {pkg.limits?.max_guests &&
  • • Max. {pkg.limits.max_guests} Gäste
  • } {pkg.watermark_allowed === false &&
  • Kein Watermark
  • } {pkg.branding_allowed &&
  • Custom Branding
  • }
))}
{/* Comparison Section for Endcustomer */}

Endkunden-Pakete vergleichen

Preis
{endcustomerPackages.map((pkg) => (

{pkg.name}

{pkg.price === 0 ? 'Kostenlos' : `${pkg.price} €`}

))}
Max. Fotos {getFeatureIcon('max_photos')}
{endcustomerPackages.map((pkg) => (

{pkg.name}

{pkg.limits?.max_photos || 'Unbegrenzt'}

))}
Max. Gäste {getFeatureIcon('max_guests')}
{endcustomerPackages.map((pkg) => (

{pkg.name}

{pkg.limits?.max_guests || 'Unbegrenzt'}

))}
Galerie Tage {getFeatureIcon('gallery_days')}
{endcustomerPackages.map((pkg) => (

{pkg.name}

{pkg.limits?.gallery_days || 'Unbegrenzt'}

))}
Watermark {getFeatureIcon('no_watermark')}
{endcustomerPackages.map((pkg) => (

{pkg.name}

{pkg.watermark_allowed === false ? : }
))}
Feature {endcustomerPackages.map((pkg) => ( {pkg.name} ))} Preis {endcustomerPackages.map((pkg) => ( {pkg.price === 0 ? 'Kostenlos' : `${pkg.price} €`} ))} Max. Fotos {getFeatureIcon('max_photos')} {endcustomerPackages.map((pkg) => ( {pkg.limits?.max_photos || 'Unbegrenzt'} ))} Max. Gäste {getFeatureIcon('max_guests')} {endcustomerPackages.map((pkg) => ( {pkg.limits?.max_guests || 'Unbegrenzt'} ))} Galerie Tage {getFeatureIcon('gallery_days')} {endcustomerPackages.map((pkg) => ( {pkg.limits?.gallery_days || 'Unbegrenzt'} ))} Watermark {getFeatureIcon('no_watermark')} {endcustomerPackages.map((pkg) => ( {pkg.watermark_allowed === false ? : } ))}

Für Reseller

{/* Mobile Carousel for Reseller Packages */}
{resellerPackages.map((pkg) => (

{pkg.name}

{pkg.description}

{pkg.price} € / Jahr

    {pkg.features.map((feature, index) => (
  • {getFeatureIcon(feature)} {feature}
  • ))} {pkg.limits?.max_tenants &&
  • • Max. {pkg.limits.max_tenants} Tenants
  • } {pkg.limits?.max_events &&
  • • Max. {pkg.limits.max_events} Events/Jahr
  • } {pkg.branding_allowed &&
  • Custom Branding
  • }
))}
{/* Desktop Grid for Reseller Packages */}
{resellerPackages.map((pkg) => (

{pkg.name}

{pkg.description}

{pkg.price} € / Jahr

    {pkg.features.map((feature, index) => (
  • {getFeatureIcon(feature)} {feature}
  • ))} {pkg.limits?.max_tenants &&
  • • Max. {pkg.limits.max_tenants} Tenants
  • } {pkg.limits?.max_events &&
  • • Max. {pkg.limits.max_events} Events/Jahr
  • } {pkg.branding_allowed &&
  • Custom Branding
  • }
))}
{/* FAQ Section */}

Häufige Fragen

Was ist das Free-Paket?

Ideal für Tests: 30 Fotos, 7 Tage Galerie, mit Watermark.

Kann ich upgraden?

Ja, jederzeit im Dashboard – Limits werden sofort erweitert.

Was für Reseller?

Jährliche Subscriptions mit Dashboard, Branding und Support.

Zahlungssicher?

Sichere Zahlung via Stripe/PayPal, 14 Tage Rückgaberecht.

{/* Modal */} {selectedPackage && ( {selectedPackage.name} - Details Details Kundenmeinungen

{selectedPackage.name}

{selectedPackage.price === 0 ? 'Kostenlos' : `${selectedPackage.price} €`}

{selectedPackage.description}

{selectedPackage.features.map((feature, index) => ( {getFeatureIcon(feature)} {feature} ))} {selectedPackage.limits?.max_photos && ( Max. {selectedPackage.limits.max_photos} Fotos )} {selectedPackage.limits?.max_guests && ( Max. {selectedPackage.limits.max_guests} Gäste )} {selectedPackage.limits?.gallery_days && ( {selectedPackage.limits.gallery_days} Tage Galerie )} {selectedPackage.watermark_allowed === false && ( Kein Watermark )} {selectedPackage.branding_allowed && ( Custom Branding )}
{auth.user ? ( Zur Bestellung ) : ( { localStorage.setItem('preferred_package', JSON.stringify(selectedPackage)); }} > Zur Bestellung )}

Was Kunden sagen

{testimonials.map((testimonial, index) => (

"{testimonial.text}"

{testimonial.name}

{[...Array(testimonial.rating)].map((_, i) => )}
))}
)} {/* Testimonials Section entfernt, da nun im Dialog */}
); }; export default Packages;