Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions app/(admin)/(activity-management)/events/[id]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
import { SiteHeader } from "@/components/site-header";
import type { Metadata } from "next";
import { Suspense } from "react";
import { EventDetailsCard } from "./_components/event-details-card";
import { Header } from "./_components/header";
import { UserCard } from "./_components/user-card";

export const metadata: Metadata = {
title: "事件詳情",
};

export default async function EventPage({
params,
}: {
Expand Down
5 changes: 5 additions & 0 deletions app/(admin)/(activity-management)/events/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
import { SiteHeader } from "@/components/site-header";
import type { Metadata } from "next";
import { EventsDataTable } from "./_components/data-table";

export const metadata: Metadata = {
title: "事件管理",
};

export default function Page() {
return (
<>
Expand Down
5 changes: 5 additions & 0 deletions app/(admin)/(activity-management)/points/[id]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
import { SiteHeader } from "@/components/site-header";
import type { Metadata } from "next";
import { Suspense } from "react";
import { Header } from "./_components/header";
import { PointDetailsCard } from "./_components/point-details-card";
import { UserCard } from "./_components/user-card";

export const metadata: Metadata = {
title: "積分記錄詳情",
};

export default async function PointPage({
params,
}: {
Expand Down
5 changes: 5 additions & 0 deletions app/(admin)/(activity-management)/points/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
import { SiteHeader } from "@/components/site-header";
import type { Metadata } from "next";
import { PointsDataTable } from "./_components/data-table";

export const metadata: Metadata = {
title: "積分管理",
};

export default function Page() {
return (
<>
Expand Down
5 changes: 5 additions & 0 deletions app/(admin)/(activity-management)/submissions/[id]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
import { SiteHeader } from "@/components/site-header";
import type { Metadata } from "next";
import { Suspense } from "react";
import { Header } from "./_components/header";
import { ResultCard } from "./_components/result-card";
import { SubmissionDetailsCard } from "./_components/submission-details-card";
import { UserCard } from "./_components/user-card";

export const metadata: Metadata = {
title: "提交記錄詳情",
};

export default async function SubmissionPage({
params,
}: {
Expand Down
5 changes: 5 additions & 0 deletions app/(admin)/(activity-management)/submissions/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
import { SiteHeader } from "@/components/site-header";
import type { Metadata } from "next";
import { SubmissionsDataTable } from "./_components/data-table";

export const metadata: Metadata = {
title: "提交記錄",
};

export default function Page() {
return (
<>
Expand Down
5 changes: 5 additions & 0 deletions app/(admin)/(question-management)/database/[id]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { SiteHeader } from "@/components/site-header";
import type { Metadata } from "next";
import { Suspense } from "react";
import { DeleteDatabaseButtonTrigger } from "../_components/delete";
import { UpdateDatabaseButtonTrigger } from "../_components/update";
Expand All @@ -7,6 +8,10 @@ import { Header } from "./_components/header";
import { RelationCard } from "./_components/relation-card";
import { SchemaCard } from "./_components/schema-card";

export const metadata: Metadata = {
title: "資料庫資訊",
};

export default async function DatabasePage({
params,
}: {
Expand Down
5 changes: 5 additions & 0 deletions app/(admin)/(question-management)/database/page.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
import { SiteHeader } from "@/components/site-header";
import type { Metadata } from "next";
import { CreateDatabaseTrigger } from "./_components/create";
import { DatabaseDataTable } from "./_components/data-table";

export const metadata: Metadata = {
title: "資料庫",
};

export default function Page() {
return (
<>
Expand Down
5 changes: 5 additions & 0 deletions app/(admin)/(question-management)/questions/[id]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { SiteHeader } from "@/components/site-header";
import type { Metadata } from "next";
import { Suspense } from "react";
import { DeleteQuestionButtonTrigger } from "../_components/delete";
import { UpdateQuestionButtonTrigger } from "../_components/update";
Expand All @@ -7,6 +8,10 @@ import { DatabaseCard } from "./_components/database-card";
import { DescriptionCard } from "./_components/description-card";
import { Header } from "./_components/header";

export const metadata: Metadata = {
title: "題目資訊",
};

export default async function QuestionPage({
params,
}: {
Expand Down
5 changes: 5 additions & 0 deletions app/(admin)/(question-management)/questions/page.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
import { SiteHeader } from "@/components/site-header";
import type { Metadata } from "next";
import { CreateQuestionTrigger } from "./_components/create";
import { QuestionsDataTable } from "./_components/data-table";

export const metadata: Metadata = {
title: "題庫",
};

export default function Page() {
return (
<>
Expand Down
5 changes: 5 additions & 0 deletions app/(admin)/(user-management)/groups/[id]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { SiteHeader } from "@/components/site-header";
import type { Metadata } from "next";
import { Suspense } from "react";
import { DeleteGroupButtonTrigger } from "../_components/delete";
import { UpdateGroupButtonTrigger } from "../_components/update";
Expand All @@ -7,6 +8,10 @@ import { Header } from "./_components/header";
import { MembersCard } from "./_components/members-card";
import { ScopeCard } from "./_components/scope-card";

export const metadata: Metadata = {
title: "群組資訊",
};

export default async function GroupPage({
params,
}: {
Expand Down
5 changes: 5 additions & 0 deletions app/(admin)/(user-management)/groups/page.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
import { SiteHeader } from "@/components/site-header";
import type { Metadata } from "next";
import { CreateGroupTrigger } from "./_components/create";
import { GroupDataTable } from "./_components/data-table";

export const metadata: Metadata = {
title: "群組",
};

export default function GroupsPage() {
return (
<>
Expand Down
5 changes: 5 additions & 0 deletions app/(admin)/(user-management)/scopesets/[id]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
import { SiteHeader } from "@/components/site-header";
import type { Metadata } from "next";
import { Suspense } from "react";
import { DeleteScopeSetButtonTrigger } from "../_components/delete";
import { UpdateScopeSetButtonTrigger } from "../_components/update";
import { GroupsCard } from "./_components/groups";
import { Header } from "./_components/header";
import { ScopesCard } from "./_components/scopes";

export const metadata: Metadata = {
title: "權限集資訊",
};

export default async function ScopeSetPage({
params,
}: {
Expand Down
5 changes: 5 additions & 0 deletions app/(admin)/(user-management)/scopesets/page.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
import { SiteHeader } from "@/components/site-header";
import type { Metadata } from "next";
import { CreateScopeSetTrigger } from "./_components/create";
import { ScopeSetDataTable } from "./_components/data-table";

export const metadata: Metadata = {
title: "權限集",
};

export default function ScopesetPage() {
return (
<>
Expand Down
5 changes: 5 additions & 0 deletions app/(admin)/(user-management)/users/[id]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { SiteHeader } from "@/components/site-header";
import type { Metadata } from "next";
import { Suspense } from "react";
import { DeleteUserButtonTrigger } from "../_components/delete";
import { ImpersonateUserButtonTrigger } from "../_components/impersonate";
Expand All @@ -8,6 +9,10 @@ import { AuditInfoCard } from "./_components/audit-info";
import { GroupsCard } from "./_components/groups";
import { Header } from "./_components/header";

export const metadata: Metadata = {
title: "使用者資訊",
};

export default async function UserPage({
params,
}: {
Expand Down
5 changes: 5 additions & 0 deletions app/(admin)/(user-management)/users/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
import { SiteHeader } from "@/components/site-header";
import type { Metadata } from "next";
import { UsersDataTable } from "./_components/data-table";

export const metadata: Metadata = {
title: "使用者",
};

export default function Page() {
return (
<>
Expand Down
5 changes: 5 additions & 0 deletions app/(admin)/me/page.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
import { SiteHeader } from "@/components/site-header";
import { Separator } from "@/components/ui/separator";
import type { Metadata } from "next";
import { Suspense } from "react";
import { MeForm } from "./_components/form";

export const metadata: Metadata = {
title: "個人資訊",
};

export default function Me() {
return (
<>
Expand Down
5 changes: 5 additions & 0 deletions app/(admin)/page.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
import { DataTableSkeleton } from "@/components/data-table/skeleton";
import { SiteHeader } from "@/components/site-header";
import type { Metadata } from "next";

export const metadata: Metadata = {
title: "概覽",
};

export default function Home() {
return (
Expand Down
5 changes: 5 additions & 0 deletions app/forbidden/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ import { AlertTriangle } from "lucide-react";
import Link from "next/link";
import { UserInfo } from "./user-info";

import type { Metadata } from "next";
export const metadata: Metadata = {
title: "權限不足",
};

export default async function ForbiddenPage() {
await redirectIfAuthenticated();

Expand Down
4 changes: 2 additions & 2 deletions app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ const geistMono = Geist_Mono({
});

export const metadata: Metadata = {
title: "Database Playground Admin",
description: "Managing your Database Playground instance.",
title: { template: "%s | 管理介面 | 資料庫練功坊", default: "預設頁面" },
description: "管理資料庫練功坊的題目、使用者、做題記錄等。",
};

export const experimental_ppr = true;
Expand Down
5 changes: 5 additions & 0 deletions app/login/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { LoginForm } from "@/components/login-form";
import { Logo } from "@/components/logo";
import { redirectIfAuthenticated } from "@/lib/auth.rsc";
import type { Metadata } from "next";
import Link from "next/link";

interface LoginPageProps {
Expand All @@ -12,6 +13,10 @@ interface LoginPageProps {
}>;
}

export const metadata: Metadata = {
title: "登入",
};

export default async function LoginPage({ searchParams }: LoginPageProps) {
// Redirect if already authenticated
await redirectIfAuthenticated();
Expand Down