mirror of
https://github.com/andwati/dokploy.git
synced 2026-11-08 04:55:17 +00:00
- Introduced `ShowBillingInvoices` component to manage and display billing invoices. - Updated `ShowBilling` component to include navigation for invoices and enhanced subscription management. - Refactored `ShowInvoices` component for improved loading and display logic. - Created a new invoices page with server-side validation and layout integration.
75 lines
1.9 KiB
TypeScript
75 lines
1.9 KiB
TypeScript
import { CreditCard, FileText } from "lucide-react";
|
|
import Link from "next/link";
|
|
import { useRouter } from "next/router";
|
|
import {
|
|
Card,
|
|
CardContent,
|
|
CardDescription,
|
|
CardHeader,
|
|
CardTitle,
|
|
} from "@/components/ui/card";
|
|
import { cn } from "@/lib/utils";
|
|
import { ShowInvoices } from "./show-invoices";
|
|
|
|
const navigationItems = [
|
|
{
|
|
name: "Subscription",
|
|
href: "/dashboard/settings/billing",
|
|
icon: CreditCard,
|
|
},
|
|
{
|
|
name: "Invoices",
|
|
href: "/dashboard/settings/invoices",
|
|
icon: FileText,
|
|
},
|
|
];
|
|
|
|
export const ShowBillingInvoices = () => {
|
|
const router = useRouter();
|
|
|
|
return (
|
|
<div className="w-full">
|
|
<Card className="bg-sidebar p-2.5 rounded-xl max-w-5xl mx-auto">
|
|
<div className="rounded-xl bg-background shadow-md">
|
|
<CardHeader>
|
|
<CardTitle className="text-xl flex flex-row gap-2">
|
|
<CreditCard className="size-6 text-muted-foreground self-center" />
|
|
Billing
|
|
</CardTitle>
|
|
<CardDescription>
|
|
Manage your subscription and invoices
|
|
</CardDescription>
|
|
</CardHeader>
|
|
<CardContent className="space-y-4 py-4 border-t">
|
|
<nav className="flex space-x-2 border-b">
|
|
{navigationItems.map((item) => {
|
|
const Icon = item.icon;
|
|
const isActive = router.pathname === item.href;
|
|
return (
|
|
<Link
|
|
key={item.name}
|
|
href={item.href}
|
|
className={cn(
|
|
"flex items-center gap-2 px-4 py-2 text-sm font-medium border-b-2 transition-colors",
|
|
isActive
|
|
? "border-primary text-primary"
|
|
: "border-transparent text-muted-foreground hover:text-primary hover:border-muted",
|
|
)}
|
|
>
|
|
<Icon className="h-4 w-4" />
|
|
{item.name}
|
|
</Link>
|
|
);
|
|
})}
|
|
</nav>
|
|
|
|
<div className="mt-6">
|
|
<ShowInvoices />
|
|
</div>
|
|
</CardContent>
|
|
</div>
|
|
</Card>
|
|
</div>
|
|
);
|
|
};
|