feat : updae
This commit is contained in:
+10
-9
@@ -19,22 +19,23 @@ async function CommissionContent() {
|
||||
if (!availability.isOpen) return <div className="flex flex-col gap-8"><div className="flex flex-col gap-4 rounded-xl border p-6">
|
||||
<h2 className="font-heading text-xl font-semibold">ปิดรับ Commission ชั่วคราว</h2>
|
||||
<p className="whitespace-pre-wrap">{availability.closureMessage}</p>
|
||||
<Button variant="outline" nativeButton={false} render={<Link href="/commission/tickets" />}>
|
||||
ดู Ticket และคำขอที่มีอยู่
|
||||
<Button variant="outline" className="min-h-11" nativeButton={false} render={<Link href="/commission/tickets" />}>
|
||||
ดูคำขอของฉัน
|
||||
</Button>
|
||||
</div><CommissionIntro /></div>;
|
||||
const session = await getCustomerSession();
|
||||
if (!session) return <div className="flex flex-col gap-8"><CommissionIntro /><div className="flex flex-col gap-4 rounded-xl border p-6">
|
||||
<p>เข้าสู่ระบบหรือสมัครสมาชิกก่อนเริ่มคำขอ</p>
|
||||
if (!session) return <div className="flex flex-col gap-8"><div className="flex flex-col gap-4 rounded-xl border p-6">
|
||||
<h2 className="font-heading text-xl font-semibold">เริ่มคำขอ</h2>
|
||||
<p>เข้าสู่ระบบหรือสมัครสมาชิกเพื่อบันทึกคำขอ ติดตามผล และพูดคุยกับทีมงาน</p>
|
||||
<div className="flex flex-wrap gap-2">
|
||||
<Button nativeButton={false} render={<Link href="/auth/login?next=%2Fcommission" />}>เข้าสู่ระบบ</Button>
|
||||
<Button variant="outline" nativeButton={false} render={<Link href="/auth/register?next=%2Fcommission" />}>สมัครสมาชิก</Button>
|
||||
<Button className="min-h-11" nativeButton={false} render={<Link href="/auth/login?next=%2Fcommission" />}>เข้าสู่ระบบ</Button>
|
||||
<Button variant="outline" className="min-h-11" nativeButton={false} render={<Link href="/auth/register?next=%2Fcommission" />}>สมัครสมาชิก</Button>
|
||||
</div>
|
||||
</div></div>;
|
||||
</div><CommissionIntro /></div>;
|
||||
const catalog = await getCatalogOptions();
|
||||
if (!catalog) return <p>ยังไม่มีข้อมูลตัวละครสำหรับสร้างคำขอ</p>;
|
||||
return <div className="flex flex-col gap-6">
|
||||
<div className="flex items-center gap-3"><Button variant="outline" nativeButton={false} render={<Link href="/commission/tickets" />}>ดู Ticket ของฉัน</Button></div>
|
||||
<div className="flex items-center gap-3"><Button variant="outline" className="min-h-11" nativeButton={false} render={<Link href="/commission/tickets" />}>ดูคำขอของฉัน</Button></div>
|
||||
<CommissionRequestForm key={session.user.id} catalog={catalog} userId={session.user.id} />
|
||||
</div>;
|
||||
}
|
||||
@@ -42,7 +43,7 @@ async function CommissionContent() {
|
||||
export default function CommissionPage() {
|
||||
return <div className="min-h-svh"><SiteHeader />
|
||||
<main className="mx-auto flex w-full max-w-5xl flex-col gap-6 p-4 py-10 sm:p-8">
|
||||
<header><h1 className="font-heading text-3xl font-semibold">Commission</h1>
|
||||
<header><h1 className="font-heading text-3xl font-semibold">จ้างคำนวณทีม</h1>
|
||||
<p className="text-muted-foreground">ขอทีม เปรียบเทียบอาวุธหรือกลุ่มดาวตามที่ต้องการ</p></header>
|
||||
<Suspense fallback={<Card><CardHeader><Skeleton className="h-6 w-48" /><Skeleton className="h-4 w-full max-w-md" /></CardHeader></Card>}><CommissionContent /></Suspense>
|
||||
</main>
|
||||
|
||||
@@ -30,21 +30,22 @@ export default async function CommissionTicketsPage() {
|
||||
return <div className="min-h-svh"><SiteHeader /><CommissionLiveRefresh endpoint="/api/commission/events" userId={session.user.id} />
|
||||
<main className="mx-auto flex max-w-4xl flex-col gap-5 p-4 py-10 sm:p-8">
|
||||
<div className="flex items-center justify-between gap-3">
|
||||
<h1 className="font-heading text-3xl font-semibold">Ticket ของฉัน</h1>
|
||||
<h1 className="font-heading text-3xl font-semibold">คำขอของฉัน</h1>
|
||||
</div>
|
||||
<p className="text-sm text-muted-foreground">แต่ละคำขอมีแชตสำหรับรับผลและพูดคุยกับทีมงาน (Ticket) สถานะแชตบอกว่ายังส่งข้อความได้หรือไม่ ส่วนความคืบหน้าของงานสอบถามได้ในแชต</p>
|
||||
<Link href="/commission" className="text-sm underline">สร้างคำขอเพิ่ม</Link>
|
||||
{pending.length > 0 && <h2 className="text-xl font-semibold">รอชำระเงิน</h2>}
|
||||
{pending.map((checkout) => <Link key={checkout.id} href={`/commission/pay/${checkout.id}`}>
|
||||
<Card><CardHeader><CardTitle>รอชำระเงิน - ฿{checkout.amount}</CardTitle></CardHeader>
|
||||
<CardContent>{checkout.createdAt.toLocaleString("th-TH")}</CardContent></Card>
|
||||
</Link>)}
|
||||
<h2 className="text-xl font-semibold">Ticket ที่ชำระเงินแล้ว</h2>
|
||||
{tickets.length === 0 && <p>ยังไม่มี Ticket</p>}
|
||||
<h2 className="text-xl font-semibold">คำขอที่ชำระเงินแล้ว</h2>
|
||||
{tickets.length === 0 && <p>ยังไม่มีคำขอที่ชำระเงินแล้ว</p>}
|
||||
{tickets.map(({ ticket, amount }) => <Link key={ticket.id} href={`/commission/tickets/${ticket.id}`}>
|
||||
<Card><CardHeader><CardTitle>{ticket.title || `Ticket #${ticket.id.slice(0, 8)}`}</CardTitle>
|
||||
<CardAction><Badge variant={ticket.status === "open" ? "outline" : "destructive"}
|
||||
className={ticket.status === "open" ? "border-success/30 bg-success/10 text-success" : undefined}>
|
||||
{ticket.status === "open" ? "เปิดอยู่" : "ปิดแล้ว"}
|
||||
{ticket.status === "open" ? "แชตเปิดอยู่" : "แชตปิดแล้ว"}
|
||||
</Badge></CardAction></CardHeader>
|
||||
<CardContent>฿{amount} - {ticket.updatedAt.toLocaleString("th-TH")}</CardContent></Card>
|
||||
</Link>)}
|
||||
|
||||
+3
-1
@@ -1,3 +1,4 @@
|
||||
import { Button } from "@/components/ui/button";
|
||||
import Image from "@/components/ui/resilient-image";
|
||||
|
||||
import { SiteFooter } from "@/components/public/site-footer";
|
||||
@@ -33,8 +34,9 @@ export default function DonatePage() {
|
||||
priority
|
||||
/>
|
||||
</div>
|
||||
<Button nativeButton={false} className="min-h-11" render={<a href="/donate.jpg" download="buzz-guide-donate-qr.jpg" />}>บันทึก QR สำหรับโอนเงิน</Button>
|
||||
<p className="text-sm leading-6 text-muted-foreground">
|
||||
สามารถสแกน QR Code ได้ทุกแอปธนาคาร
|
||||
สแกน QR ด้วยแอปธนาคาร หรือบันทึก QR แล้วเลือกรูปในแอปธนาคารบนมือถือเครื่องนี้
|
||||
<br />
|
||||
ขอบคุณทุกการสนับสนุน เลิฟๆคับ
|
||||
</p>
|
||||
|
||||
+3
-3
@@ -20,13 +20,13 @@ export default function NotFound() {
|
||||
<Empty>
|
||||
<EmptyHeader>
|
||||
<EmptyMedia variant="icon"><MapPinOffIcon aria-hidden="true" /></EmptyMedia>
|
||||
<EmptyTitle>ไม่พบคู่มือนี้</EmptyTitle>
|
||||
<EmptyTitle>ไม่พบหน้านี้</EmptyTitle>
|
||||
<EmptyDescription>
|
||||
หน้านี้อาจถูกซ่อน เปลี่ยนชื่อ หรือยังไม่มีเนื้อหาที่เผยแพร่
|
||||
ลิงก์อาจไม่ถูกต้อง หน้าถูกย้าย หรือคุณไม่มีสิทธิ์เข้าถึง
|
||||
</EmptyDescription>
|
||||
</EmptyHeader>
|
||||
<EmptyContent>
|
||||
<Button render={<Link href="/" />}>กลับไปหน้ารวมตัวละคร</Button>
|
||||
<Button className="min-h-11" nativeButton={false} render={<Link href="/" />}>กลับไปหน้ารวมตัวละคร</Button>
|
||||
</EmptyContent>
|
||||
</Empty>
|
||||
</main>
|
||||
|
||||
@@ -28,10 +28,11 @@ export default async function StygianPage({ searchParams }: { searchParams: Prom
|
||||
<header>
|
||||
<p className="text-sm font-medium text-primary">Stygian Onslaught</p>
|
||||
<h1 className="font-heading text-4xl font-semibold">ไกด์ Stygian</h1>
|
||||
<p className="mt-3 text-muted-foreground">เลือกเวอร์ชัน ระดับบอส และบอสที่ต้องการดู เพื่ออ่านทีมแนะนำและกลไกของบอส</p>
|
||||
</header>
|
||||
{schedules.length ? <nav className="flex flex-wrap gap-2" aria-label="เวอร์ชัน Stygian">{schedules.map((entry) =>
|
||||
{schedules.length ? <div className="flex flex-col gap-2"><p className="text-sm font-medium">เลือกเวอร์ชัน</p><nav className="flex flex-wrap gap-2" aria-label="เวอร์ชัน Stygian">{schedules.map((entry) =>
|
||||
<Link key={entry.scheduleId} href={`/stygian?schedule=${entry.scheduleId}`} aria-current={entry.scheduleId === selectedId ? "page" : undefined}
|
||||
className={buttonVariants({ variant: entry.scheduleId === selectedId ? "default" : "outline", size: "sm" })}>{entry.challengeName}</Link>)}</nav> : null}
|
||||
className={buttonVariants({ variant: entry.scheduleId === selectedId ? "default" : "outline", size: "sm", className: "max-sm:min-h-11" })}>{entry.challengeName}</Link>)}</nav></div> : null}
|
||||
{schedule && catalog ? <StygianGuide schedule={schedule} catalog={catalog} /> : (
|
||||
<Empty className="border"><EmptyHeader><EmptyTitle>ยังไม่มีไกด์ Stygian</EmptyTitle><EmptyDescription>กำลังเตรียมข้อมูล กลับมาอ่านได้ภายหลัง หรือเลือกไกด์ตัวละครระหว่างรอ</EmptyDescription></EmptyHeader><Link href="/" className={buttonVariants({ variant: "outline" })}>เลือกไกด์ตัวละคร</Link></Empty>
|
||||
)}
|
||||
|
||||
+4
-19
@@ -8,6 +8,7 @@ import {
|
||||
AvatarFallback,
|
||||
AvatarImage,
|
||||
} from "@/components/ui/avatar";
|
||||
import { SiteHeader } from "@/components/public/site-header";
|
||||
import { SiteFooter } from "@/components/public/site-footer";
|
||||
import { Button } from "@/components/ui/button";
|
||||
import {
|
||||
@@ -55,7 +56,7 @@ const specialThanks: ThanksProfile[] = [
|
||||
];
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Special Thanks",
|
||||
title: "ขอบคุณผู้สนับสนุน",
|
||||
description: "ขอบคุณทุกคนที่มีส่วนช่วยให้ Buzz Guide เกิดขึ้นได้",
|
||||
};
|
||||
|
||||
@@ -66,28 +67,12 @@ function getInitials(username: string) {
|
||||
export default function ThanksPage() {
|
||||
return (
|
||||
<div className="flex min-h-svh flex-col bg-background">
|
||||
<header className="border-b">
|
||||
<div className="mx-auto flex min-h-16 w-full max-w-6xl items-center px-4 sm:px-6">
|
||||
<Link
|
||||
href="/"
|
||||
className="flex min-h-11 items-center gap-3 rounded-lg font-heading font-semibold focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
||||
>
|
||||
<Image
|
||||
src="/icon.png"
|
||||
alt=""
|
||||
width={36}
|
||||
height={36}
|
||||
className="size-9 object-contain"
|
||||
/>
|
||||
<span>ไกด์เกนชินไม่ใช่เกมมือถือ</span>
|
||||
</Link>
|
||||
</div>
|
||||
</header>
|
||||
<SiteHeader />
|
||||
|
||||
<main className="mx-auto flex w-full max-w-6xl flex-col gap-10 px-4 py-12 sm:px-6 sm:py-16">
|
||||
<header className="mx-auto flex max-w-2xl flex-col gap-3 text-center">
|
||||
<h1 className="font-heading text-4xl font-semibold tracking-tight sm:text-5xl">
|
||||
Special Thanks
|
||||
ขอบคุณผู้สนับสนุน
|
||||
</h1>
|
||||
<p className="text-lg leading-8 text-muted-foreground">
|
||||
ขอบคุณทุกคนที่มอบแรงสนับสนุนและเวลาให้เว็บไซต์นี้เกิดขึ้นได้
|
||||
|
||||
Reference in New Issue
Block a user