mirror of
https://github.com/arthur-pbty/binouz.git
synced 2026-06-03 15:07:17 +02:00
b7010a1704
- Implemented AuthButton component for Discord sign-in and sign-out functionality. - Created CopyButton component for copying server IP addresses. - Developed EventCard and GradeCard components for displaying events and grades. - Added Footer and Navbar components for site navigation and information. - Introduced PurchaseButton for handling grade purchases with Stripe integration. - Created SectionHeader component for consistent section titles. - Implemented session management with SessionProvider for NextAuth. - Set up PostgreSQL database with Docker and Prisma for data management. - Added admin guard functionality to restrict access to certain routes. - Configured NextAuth with Discord provider for user authentication. - Defined Prisma schema for user, admin, grade, event, and purchase models. - Seeded database with initial grades and events data. - Added SVG hero image for the landing page. - Extended NextAuth types to include additional user properties.
34 lines
1010 B
TypeScript
34 lines
1010 B
TypeScript
import PurchaseButton from "@/components/purchase-button";
|
|
import { formatPrice } from "@/lib/format";
|
|
|
|
type GradeCardProps = {
|
|
grade: {
|
|
id: string;
|
|
name: string;
|
|
price: number;
|
|
description: string;
|
|
};
|
|
};
|
|
|
|
export default function GradeCard({ grade }: GradeCardProps) {
|
|
return (
|
|
<div className="flex h-full flex-col justify-between rounded-3xl border border-white/10 bg-white/5 p-6 backdrop-blur">
|
|
<div>
|
|
<p className="text-xs uppercase tracking-[0.3em] text-cyan-200/80">
|
|
{grade.name}
|
|
</p>
|
|
<p className="mt-4 text-3xl font-semibold text-white">
|
|
{formatPrice(grade.price)}
|
|
</p>
|
|
<p className="mt-3 text-sm text-slate-300">{grade.description}</p>
|
|
</div>
|
|
<div className="mt-6 flex items-center justify-between">
|
|
<span className="text-[10px] uppercase tracking-[0.3em] text-slate-400">
|
|
Instant access
|
|
</span>
|
|
<PurchaseButton gradeId={grade.id} />
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|