feat(ui) : improve guide navigation, signup, and commissions
This commit is contained in:
@@ -4,7 +4,6 @@ import { connection } from "next/server";
|
||||
import { SiteHeader } from "@/components/public/site-header";
|
||||
import { CommissionRequestForm } from "@/components/commission/request-form";
|
||||
import { CommissionIntro } from "@/components/commission/commission-intro";
|
||||
import { CommissionPushEntryPrompt } from "@/components/commission/push-entry-prompt";
|
||||
import { Button } from "@/components/ui/button";
|
||||
import { Card, CardHeader } from "@/components/ui/card";
|
||||
import { Skeleton } from "@/components/ui/skeleton";
|
||||
@@ -35,9 +34,8 @@ async function CommissionContent() {
|
||||
const catalog = await getCatalogOptions();
|
||||
if (!catalog) return <p>ยังไม่มีข้อมูลตัวละครสำหรับสร้างคำขอ</p>;
|
||||
return <div className="flex flex-col gap-6">
|
||||
<CommissionPushEntryPrompt scope="customer" />
|
||||
<div className="flex items-center gap-3"><Button variant="outline" nativeButton={false} render={<Link href="/commission/tickets" />}>ดู Ticket ของฉัน</Button></div>
|
||||
<CommissionRequestForm catalog={catalog} />
|
||||
<CommissionRequestForm key={session.user.id} catalog={catalog} userId={session.user.id} />
|
||||
</div>;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@ import { connection } from "next/server";
|
||||
import { getDb } from "@/db";
|
||||
import { commissionCheckouts, commissionTickets } from "@/db/schema";
|
||||
import { CommissionLiveRefresh } from "@/components/commission/live-refresh";
|
||||
import { CommissionPushEntryPrompt } from "@/components/commission/push-entry-prompt";
|
||||
import { SiteHeader } from "@/components/public/site-header";
|
||||
import { Badge } from "@/components/ui/badge";
|
||||
import { Card, CardAction, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
||||
@@ -29,7 +28,6 @@ export default async function CommissionTicketsPage() {
|
||||
.orderBy(desc(commissionCheckouts.createdAt)).limit(20),
|
||||
]);
|
||||
return <div className="min-h-svh"><SiteHeader /><CommissionLiveRefresh endpoint="/api/commission/events" userId={session.user.id} />
|
||||
<CommissionPushEntryPrompt scope="customer" />
|
||||
<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>
|
||||
|
||||
@@ -3,7 +3,6 @@ import { Anuphan, Geist_Mono } from "next/font/google";
|
||||
|
||||
import { DeploymentUpdateNotifier } from "@/components/deployment-update-notifier";
|
||||
import { PageProgress } from "@/components/page-progress";
|
||||
import { SiteEntryPrompt } from "@/components/site-entry-prompt";
|
||||
import { Toaster } from "@/components/ui/sonner";
|
||||
import { siteUrl } from "@/lib/site-url";
|
||||
|
||||
@@ -49,7 +48,6 @@ export default function RootLayout({ children }: LayoutProps<"/">) {
|
||||
<body className="flex min-h-full flex-col">
|
||||
<PageProgress />
|
||||
{children}
|
||||
<SiteEntryPrompt />
|
||||
<DeploymentUpdateNotifier deploymentId={deploymentId} />
|
||||
<Toaster
|
||||
richColors
|
||||
|
||||
@@ -36,7 +36,7 @@ export default async function ProfilePage({ searchParams }: PageProps<"/profile"
|
||||
<h1 className="mb-6 font-heading text-3xl font-semibold">โปรไฟล์ของฉัน</h1>
|
||||
{setup === "1" && <p className="mb-6 text-muted-foreground">
|
||||
{upload === "failed" ? "สร้างบัญชีแล้ว แต่บันทึกรูปโปรไฟล์ไม่สำเร็จ กรุณาลองอีกครั้ง" :
|
||||
"เพิ่มรูปโปรไฟล์หรือแก้ชื่อที่แสดงก่อนเริ่มใช้งาน"}
|
||||
"สร้างบัญชีเรียบร้อยแล้ว เพิ่มรูปโปรไฟล์ได้ตามต้องการ หรือกดข้ามเพื่อเริ่มใช้งาน"}
|
||||
</p>}
|
||||
<div className="grid items-start gap-6 md:grid-cols-2">
|
||||
<ProfileForm {...user} nextPath={setup === "1" ? setupNextPath : undefined} />
|
||||
|
||||
@@ -6,7 +6,7 @@ import { SiteHeader } from "@/components/public/site-header";
|
||||
import { StygianGuide } from "@/components/public/stygian-guide";
|
||||
import { LiveRefresh } from "@/components/live-refresh";
|
||||
import { Empty, EmptyDescription, EmptyHeader, EmptyTitle } from "@/components/ui/empty";
|
||||
import { Button } from "@/components/ui/button";
|
||||
import { buttonVariants } from "@/components/ui/button";
|
||||
import { getCachedStygianSchedule, getCachedStygianSchedules } from "@/lib/cache/stygian";
|
||||
import { getActiveCatalog } from "@/lib/guides/queries";
|
||||
|
||||
@@ -27,13 +27,13 @@ export default async function StygianPage({ searchParams }: { searchParams: Prom
|
||||
<main className="mx-auto flex w-full max-w-7xl flex-1 flex-col gap-8 px-4 py-10 sm:px-6 sm:py-14">
|
||||
<header>
|
||||
<p className="text-sm font-medium text-primary">Stygian Onslaught</p>
|
||||
<h1 className="font-heading text-4xl font-semibold">Stygian Guide</h1>
|
||||
<h1 className="font-heading text-4xl font-semibold">ไกด์ Stygian</h1>
|
||||
</header>
|
||||
{schedules.length ? <nav className="flex flex-wrap gap-2" aria-label="Stygian versions">{schedules.map((entry) => entry.scheduleId === selectedId
|
||||
? <Button key={entry.scheduleId} disabled variant="secondary" size="sm">{entry.challengeName}</Button>
|
||||
: <Button key={entry.scheduleId} variant="outline" size="sm" nativeButton={false} render={<Link href={`/stygian?schedule=${entry.scheduleId}`} />}>{entry.challengeName}</Button>)}</nav> : null}
|
||||
{schedules.length ? <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}
|
||||
{schedule && catalog ? <StygianGuide schedule={schedule} catalog={catalog} /> : (
|
||||
<Empty className="border"><EmptyHeader><EmptyTitle>No Stygian versions yet</EmptyTitle><EmptyDescription>An administrator must sync the Lunaris archive first.</EmptyDescription></EmptyHeader></Empty>
|
||||
<Empty className="border"><EmptyHeader><EmptyTitle>ยังไม่มีไกด์ Stygian</EmptyTitle><EmptyDescription>กำลังเตรียมข้อมูล กลับมาอ่านได้ภายหลัง หรือเลือกไกด์ตัวละครระหว่างรอ</EmptyDescription></EmptyHeader><Link href="/" className={buttonVariants({ variant: "outline" })}>เลือกไกด์ตัวละคร</Link></Empty>
|
||||
)}
|
||||
</main>
|
||||
<SiteFooter />
|
||||
|
||||
Reference in New Issue
Block a user