import { ExternalLink } from "lucide-react"; import Link from "next/link"; import { useEffect, useState } from "react"; import { AnimatedNumber } from "~/components/custom_ui/animated-number"; import { LoadingPage } from "~/components/loading"; import { Button } from "~/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "~/components/ui/card"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "~/components/ui/tabs"; import { cn } from "~/lib/utils"; import { useTranslation } from "~/providers/I18nProvider"; import TipologiaPosizioneEnum from "~/schemas/public/TipologiaPosizioneEnum"; import { api } from "~/utils/api"; export const PricingChoice = () => { const { t } = useTranslation(); const { data: prezziario, isLoading } = api.prezziario.getPrezziPerTipologiaAll.useQuery(); if (isLoading) return ; if (!prezziario) return null; const pricingBreve = prezziario.transitorio.saldi.map((s) => ({ downPayment: prezziario.transitorio.acconto.prezzo_cent / 100, secondPayment: s.prezzo_cent / 100, })); const pricingStabile = prezziario.stabile.saldi.map((s) => ({ downPayment: prezziario.stabile.acconto.prezzo_cent / 100, secondPayment: s.prezzo_cent / 100, })); return (

Scegli il tuo servizio

Transitorio Stabile
); }; type PricingData = { downPayment: number; secondPayment: number }[]; export const PricingComponent = ({ pricingData, opzioni, cta, statico = false, className, title, tipo, }: { pricingData: PricingData; opzioni: string[]; title: string; cta: string; statico?: boolean; className?: string; tipo: TipologiaPosizioneEnum; }) => { const { t } = useTranslation(); const [Value, setValue] = useState(0); const p = pricingData[Value]; const downPayment = p?.downPayment || 0; const secondPayment = p?.secondPayment || 0; const customFormat = (num: number) => `${num}€`; const [intervalId, setIntervalId] = useState(null); useEffect(() => { if (statico) return; const interval = setInterval(() => { setValue((prevValue) => (prevValue + 1) % pricingData.length); }, 2500); setIntervalId(interval); return () => clearInterval(interval); }, []); const ClearCarousel = () => { if (intervalId) { clearInterval(intervalId); } }; return ( {title} Prezzo del servizio

{t.acconto}

{downPayment}€

{t.saldo}

Contratto

{tipo === TipologiaPosizioneEnum.Transitorio ? (
0 €
) : ( )}
{opzioni.map((opzione, idx) => ( ))}

{cta}

); }; export const PricingComponentConsulenza = ({ pricingData, opzioni, cta, statico = false, className, title, }: { pricingData: number[]; opzioni: string[]; title: string; cta: string; statico?: boolean; className?: string; }) => { const [Value, setValue] = useState(0); const p = pricingData[Value]; const customFormat = (num: number) => `${num}€`; const [intervalId, setIntervalId] = useState(null); useEffect(() => { if (statico) return; const interval = setInterval(() => { setValue((prevValue) => (prevValue + 1) % pricingData.length); }, 2500); setIntervalId(interval); return () => clearInterval(interval); }, []); const ClearCarousel = () => { if (intervalId) { clearInterval(intervalId); } }; return ( {title} Prezzo del servizio

{opzioni.map((opzione, idx) => ( ))}

{cta}

); };