import { Avatar, AvatarFallback, AvatarImage } from '@shadcn/ui/avatar'; import { Card, CardDescription, CardHeader, CardTitle } from '@shadcn/ui/card'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@shadcn/ui/tooltip'; import { getTranslations } from 'next-intl/server'; import Image from 'next/legacy/image'; import Link from 'next/link'; const BASE_URL = 'https://cdn.jsdelivr.net/gh/perfect-panel/ppanel-assets/billing/index.json'; interface BillingProps { type: 'dashboard' | 'payment'; } interface ItemType { logo: string; title: string; description: string; poster: string; expiryDate: string; href: string; } export default async function Billing({ type }: BillingProps) { const t = await getTranslations('common.billing'); let list: ItemType[] = []; try { const response = await fetch(BASE_URL, { cache: 'no-store' }); if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`); const data = await response.json(); const now = new Date().getTime(); list = data[type].filter((item) => { const expiryDate = Date.parse(item.expiryDate); return !isNaN(expiryDate) && expiryDate > now; }); } catch (error) { return null; } if (list && list.length === 0) return null; return (

{t('title')} {t('description')}

{list.map((item, index) => ( {item.title}
{item.title} {item.description}

{item.description}

))}
); }