Files
aura-store/src/components/landing/PricingSection.tsx
T

55 lines
2.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { useEffect, useState } from "react";
import { api } from "../../api/client";
import { GlassCard } from "../ui/GlassCard";
import { Button } from "../ui/Button";
import { Check } from "lucide-react";
import { Link } from "react-router-dom";
interface Tariff { id: number; name: string; duration_days: number; price_rub: number; }
export function PricingSection() {
const [tariffs, setTariffs] = useState<Tariff[]>([]);
useEffect(() => {
api.action("tariffs").then((r) => { if (r.ok) setTariffs(r.tariffs); });
}, []);
const perks = ["Неограниченный трафик", "До 5 устройств", "WireGuard + VLESS", "Поддержка 24/7"];
return (
<section id="pricing" className="py-24 max-w-6xl mx-auto px-4">
<h2 className="text-4xl font-bold text-center mb-4">Тарифы</h2>
<p className="text-white/40 text-center mb-12">Без скрытых платежей</p>
<div className="grid grid-cols-1 md:grid-cols-3 gap-5 justify-items-center">
{tariffs.map((t, i) => {
const popular = i === 1;
return (
<GlassCard key={t.id} className={`w-full max-w-xs relative ${popular ? "border-accent/40 bg-accent/5" : ""}`}>
{popular && (
<div className="absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 rounded-full bg-accent text-xs font-bold">
Популярный
</div>
)}
<div className="text-white/50 text-sm mb-2">{t.name}</div>
<div className="text-4xl font-black mb-1">{t.price_rub} <span className="text-xl text-white/40"></span></div>
<div className="text-sm text-white/30 mb-5">{t.duration_days} дней</div>
<ul className="space-y-2 mb-6">
{perks.map((p) => (
<li key={p} className="flex items-center gap-2 text-sm text-white/70">
<Check size={15} className="text-green-400 shrink-0" /> {p}
</li>
))}
</ul>
<Link to="/register">
<Button className="w-full" variant={popular ? "primary" : "secondary"}>
Выбрать
</Button>
</Link>
</GlassCard>
);
})}
</div>
</section>
);
}