import React, { useState, useEffect } from 'react'; import { Head, Link, usePage } from '@inertiajs/react'; import { useTranslation } from 'react-i18next'; 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 { t } = useTranslation('marketing'); useEffect(() => { const urlParams = new URLSearchParams(window.location.search); const packageId = urlParams.get('package_id'); if (packageId) { const id = parseInt(packageId); const pkg = [...endcustomerPackages, ...resellerPackages].find(p => p.id === id); if (pkg) { setSelectedPackage(pkg); setOpen(true); setCurrentStep('step1'); } } }, [endcustomerPackages, resellerPackages]); const testimonials = [ { name: t('common.testimonials.anna.name'), text: t('packages.testimonials.anna'), rating: 5 }, { name: t('common.testimonials.max.name'), text: t('packages.testimonials.max'), rating: 5 }, { name: t('common.testimonials.lisa.name'), text: t('packages.testimonials.lisa'), 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 */}

{t('packages.hero_title')}

{t('packages.hero_description')}

{t('packages.cta_explore')}

{t('packages.section_endcustomer')}

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

{pkg.name}

{pkg.description}

{pkg.price === 0 ? t('packages.free') : `${pkg.price} ${t('packages.currency.euro')}`}

  • • {pkg.events} {t('packages.one_time')}
  • {pkg.features.map((feature, index) => (
  • {getFeatureIcon(feature)} {t(`packages.feature_${feature}`)}
  • ))} {pkg.limits?.max_photos &&
  • • {t('packages.max_photos')} {pkg.limits.max_photos}
  • } {pkg.limits?.gallery_days &&
  • • {t('packages.gallery_days')} {pkg.limits.gallery_days}
  • } {pkg.limits?.max_guests &&
  • • {t('packages.max_guests')} {pkg.limits.max_guests}
  • } {pkg.watermark_allowed === false &&
  • {t('packages.no_watermark')}
  • } {pkg.branding_allowed &&
  • {t('packages.custom_branding')}
  • }
))}
{/* Desktop Grid for Endcustomer Packages */}
{endcustomerPackages.map((pkg) => (

{pkg.name}

{pkg.description}

{pkg.price === 0 ? t('packages.free') : `${pkg.price} ${t('packages.currency.euro')}`}

  • • {pkg.events} {t('packages.one_time')}
  • {pkg.features.map((feature, index) => (
  • {getFeatureIcon(feature)} {t(`packages.feature_${feature}`)}
  • ))} {pkg.limits?.max_photos &&
  • • {t('packages.max_photos')} {pkg.limits.max_photos}
  • } {pkg.limits?.gallery_days &&
  • • {t('packages.gallery_days')} {pkg.limits.gallery_days}
  • } {pkg.limits?.max_guests &&
  • • {t('packages.max_guests')} {pkg.limits.max_guests}
  • } {pkg.watermark_allowed === false &&
  • {t('packages.no_watermark')}
  • } {pkg.branding_allowed &&
  • {t('packages.custom_branding')}
  • }
))}
{/* Comparison Section for Endcustomer */}

{t('packages.comparison_title')}

{t('packages.price')}
{endcustomerPackages.map((pkg) => (

{pkg.name}

{pkg.price === 0 ? t('packages.free') : `${pkg.price} ${t('common.currency.euro')}`}

))}
{t('packages.max_photos_label')} {getFeatureIcon('max_photos')}
{endcustomerPackages.map((pkg) => (

{pkg.name}

{pkg.limits?.max_photos || t('common.unlimited')}

))}
{t('packages.max_guests_label')} {getFeatureIcon('max_guests')}
{endcustomerPackages.map((pkg) => (

{pkg.name}

{pkg.limits?.max_guests || t('common.unlimited')}

))}
{t('packages.gallery_days_label')} {getFeatureIcon('gallery_days')}
{endcustomerPackages.map((pkg) => (

{pkg.name}

{pkg.limits?.gallery_days || t('common.unlimited')}

))}
{t('packages.watermark_label')} {getFeatureIcon('no_watermark')}
{endcustomerPackages.map((pkg) => (

{pkg.name}

{pkg.watermark_allowed === false ? : }
))}
{t('packages.feature')} {endcustomerPackages.map((pkg) => ( {pkg.name} ))} {t('packages.price')} {endcustomerPackages.map((pkg) => ( {pkg.price === 0 ? t('packages.free') : `${pkg.price} ${t('common.currency.euro')}`} ))} {t('packages.max_photos_label')} {getFeatureIcon('max_photos')} {endcustomerPackages.map((pkg) => ( {pkg.limits?.max_photos || t('common.unlimited')} ))} {t('packages.max_guests_label')} {getFeatureIcon('max_guests')} {endcustomerPackages.map((pkg) => ( {pkg.limits?.max_guests || t('common.unlimited')} ))} {t('packages.gallery_days_label')} {getFeatureIcon('gallery_days')} {endcustomerPackages.map((pkg) => ( {pkg.limits?.gallery_days || t('common.unlimited')} ))} {t('packages.watermark_label')} {getFeatureIcon('no_watermark')} {endcustomerPackages.map((pkg) => ( {pkg.watermark_allowed === false ? : } ))}

{t('packages.section_reseller')}

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

{pkg.name}

{pkg.description}

{pkg.price} {t('packages.currency.euro')} / {t('packages.year')}

    {pkg.features.map((feature, index) => (
  • {getFeatureIcon(feature)} {t(`packages.feature_${feature}`)}
  • ))} {pkg.limits?.max_tenants &&
  • • {t('packages.max_tenants')} {pkg.limits.max_tenants}
  • } {pkg.limits?.max_events &&
  • • {t('packages.max_events_year')} {pkg.limits.max_events}
  • } {pkg.branding_allowed &&
  • {t('packages.custom_branding')}
  • }
))}
{/* Desktop Grid for Reseller Packages */}
{resellerPackages.map((pkg) => (

{pkg.name}

{pkg.description}

{pkg.price} {t('packages.currency.euro')} / {t('packages.year')}

    {pkg.features.map((feature, index) => (
  • {getFeatureIcon(feature)} {t(`packages.feature_${feature}`)}
  • ))} {pkg.limits?.max_tenants &&
  • • {t('packages.max_tenants')} {pkg.limits.max_tenants}
  • } {pkg.limits?.max_events &&
  • • {t('packages.max_events_year')} {pkg.limits.max_events}
  • } {pkg.branding_allowed &&
  • {t('packages.custom_branding')}
  • }
))}
{/* FAQ Section */}

{t('packages.faq_title')}

{t('packages.faq_free')}

{t('packages.faq_free_desc')}

{t('packages.faq_upgrade')}

{t('packages.faq_upgrade_desc')}

{t('packages.faq_reseller')}

{t('packages.faq_reseller_desc')}

{t('packages.faq_payment')}

{t('packages.faq_payment_desc')}

{/* Modal */} {selectedPackage && ( {selectedPackage.name} - {t('packages.details')} {t('packages.details')} {t('packages.customer_opinions')}

{selectedPackage.name}

{selectedPackage.price === 0 ? t('packages.free') : `${selectedPackage.price} ${t('packages.currency.euro')}`}

{selectedPackage.description}

{selectedPackage.features.map((feature, index) => ( {getFeatureIcon(feature)} {t(`packages.feature_${feature}`)} ))} {selectedPackage.limits?.max_photos && ( {t('packages.max_photos')} {selectedPackage.limits.max_photos} )} {selectedPackage.limits?.max_guests && ( {t('packages.max_guests')} {selectedPackage.limits.max_guests} )} {selectedPackage.limits?.gallery_days && ( {t('packages.gallery_days')} {selectedPackage.limits.gallery_days} )} {selectedPackage.watermark_allowed === false && ( {t('packages.no_watermark')} )} {selectedPackage.branding_allowed && ( {t('packages.custom_branding')} )}
{ localStorage.setItem('preferred_package', JSON.stringify(selectedPackage)); }} > {t('packages.to_order')}

{t('packages.what_customers_say')}

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

"{testimonial.text}"

{testimonial.name}

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