typescript-typenfehler behoben.. npm run lint läuft nun fehlerfrei durch.
This commit is contained in:
@@ -1,22 +1,20 @@
|
||||
import React, { useState, useEffect, useMemo, useRef, useLayoutEffect } from 'react';
|
||||
import { Head, Link, usePage } from '@inertiajs/react';
|
||||
import { Link } from '@inertiajs/react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import type { TFunction } from 'i18next';
|
||||
import { Dialog, DialogContent, DialogHeader, DialogTitle } 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 { Button } from '@/components/ui/button';
|
||||
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion';
|
||||
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/components/ui/card';
|
||||
import { Sheet, SheetContent } from '@/components/ui/sheet';
|
||||
import { Separator } from '@/components/ui/separator';
|
||||
import { cn } from '@/lib/utils';
|
||||
import MarketingLayout from '@/layouts/mainWebsite';
|
||||
import { useAnalytics } from '@/hooks/useAnalytics';
|
||||
import { useCtaExperiment } from '@/hooks/useCtaExperiment';
|
||||
import { useLocalizedRoutes } from '@/hooks/useLocalizedRoutes';
|
||||
import { ArrowRight, ShoppingCart, Check, Users, Image, Shield, Star, Sparkles } from 'lucide-react';
|
||||
import { ArrowRight, Check, Shield, Star, Sparkles } from 'lucide-react';
|
||||
|
||||
interface Package {
|
||||
id: number;
|
||||
@@ -214,14 +212,11 @@ interface PackagesProps {
|
||||
const Packages: React.FC<PackagesProps> = ({ endcustomerPackages, resellerPackages }) => {
|
||||
const [open, setOpen] = useState(false);
|
||||
const [selectedPackage, setSelectedPackage] = useState<Package | null>(null);
|
||||
const [currentStep, setCurrentStep] = useState<'overview' | 'testimonials'>('overview');
|
||||
const [isMobile, setIsMobile] = useState(false);
|
||||
const dialogScrollRef = useRef<HTMLDivElement | null>(null);
|
||||
const dialogHeadingRef = useRef<HTMLDivElement | null>(null);
|
||||
const mobileEndcustomerRef = useRef<HTMLDivElement | null>(null);
|
||||
const mobileResellerRef = useRef<HTMLDivElement | null>(null);
|
||||
const { props } = usePage();
|
||||
const { auth } = props as any;
|
||||
const { localizedPath } = useLocalizedRoutes();
|
||||
const { t } = useTranslation('marketing');
|
||||
const { t: tCommon } = useTranslation('common');
|
||||
@@ -278,10 +273,18 @@ const Packages: React.FC<PackagesProps> = ({ endcustomerPackages, resellerPackag
|
||||
const media = window.matchMedia('(max-width: 768px)');
|
||||
const update = () => setIsMobile(media.matches);
|
||||
update();
|
||||
media.addEventListener ? media.addEventListener('change', update) : media.addListener(update);
|
||||
if (media.addEventListener) {
|
||||
media.addEventListener('change', update);
|
||||
} else {
|
||||
media.addListener(update);
|
||||
}
|
||||
|
||||
return () => {
|
||||
media.removeEventListener ? media.removeEventListener('change', update) : media.removeListener(update);
|
||||
if (media.removeEventListener) {
|
||||
media.removeEventListener('change', update);
|
||||
} else {
|
||||
media.removeListener(update);
|
||||
}
|
||||
};
|
||||
}, []);
|
||||
|
||||
@@ -403,7 +406,6 @@ function selectHighlightPackageId(packages: Package[]): number | null {
|
||||
value: pkg.price,
|
||||
});
|
||||
setSelectedPackage(pkg);
|
||||
setCurrentStep('overview');
|
||||
setOpen(true);
|
||||
};
|
||||
|
||||
@@ -418,20 +420,6 @@ function selectHighlightPackageId(packages: Package[]): number | null {
|
||||
|
||||
// nextStep entfernt, da Tabs nun parallel sind
|
||||
|
||||
const getFeatureIcon = (feature: string) => {
|
||||
switch (feature) {
|
||||
case 'basic_uploads': return <Image className="w-4 h-4" />;
|
||||
case 'unlimited_sharing': return <ArrowRight className="w-4 h-4" />;
|
||||
case 'no_watermark': return <Shield className="w-4 h-4" />;
|
||||
case 'custom_tasks': return <Check className="w-4 h-4" />;
|
||||
case 'advanced_analytics': return <Star className="w-4 h-4" />;
|
||||
case 'priority_support': return <Users className="w-4 h-4" />;
|
||||
case 'reseller_dashboard': return <ShoppingCart className="w-4 h-4" />;
|
||||
case 'custom_branding': return <Image className="w-4 h-4" />;
|
||||
default: return <Check className="w-4 h-4" />;
|
||||
}
|
||||
};
|
||||
|
||||
const getAccentTheme = (variant: 'endcustomer' | 'reseller') =>
|
||||
variant === 'reseller'
|
||||
? {
|
||||
|
||||
Reference in New Issue
Block a user