refactor: standardize admin page shell

This commit is contained in:
hailin
2026-07-02 15:39:03 +08:00
parent 09df56c21b
commit 2a63f97f35
13 changed files with 65 additions and 52 deletions

View File

@@ -2,6 +2,7 @@ import * as React from 'react'
import { AlertCircle, Bot, CheckCircle2, Lightbulb, Send } from 'lucide-react'
import { AppField } from '@/components/app/AppField'
import { AppPage } from '@/components/app/AppPage'
import { AppPageHeader } from '@/components/app/AppPageHeader'
import { AppSection } from '@/components/app/AppSection'
import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert'
@@ -47,8 +48,7 @@ export function TicketCreatePage() {
}
return (
<main className="min-h-screen bg-background p-6 text-foreground">
<div className="mx-auto grid max-w-6xl gap-5">
<AppPage maxWidth="6xl" contentClassName="grid gap-5">
<AppPageHeader title="创建工单" />
<form className="grid gap-4 xl:grid-cols-[minmax(0,1fr)_340px]" onSubmit={handleSubmit}>
<div className="grid gap-4">
@@ -175,7 +175,6 @@ export function TicketCreatePage() {
</AppSection>
</div>
</form>
</div>
</main>
</AppPage>
)
}

View File

@@ -3,6 +3,7 @@ import { Bot, CheckCircle2, CircleDot, Send, XCircle } from 'lucide-react'
import { AppEmptyState } from '@/components/app/AppEmptyState'
import { AppDetailLayout } from '@/components/app/AppDetailLayout'
import { AppPage } from '@/components/app/AppPage'
import { AppPageHeader } from '@/components/app/AppPageHeader'
import { AppPriorityBadge } from '@/components/app/AppPriorityBadge'
import { AppSection } from '@/components/app/AppSection'
@@ -87,23 +88,22 @@ export function TicketDetailPage({ ticketId }: { ticketId: number }) {
if (error) {
return (
<main className="min-h-screen bg-background p-6 text-foreground">
<AppPage maxWidth="6xl">
<AppEmptyState title="无法加载工单" description={error} />
</main>
</AppPage>
)
}
if (!ticket) {
return (
<main className="min-h-screen bg-background p-6 text-foreground">
<AppPage maxWidth="6xl">
<AppEmptyState title="正在加载工单" />
</main>
</AppPage>
)
}
return (
<main className="min-h-screen bg-background p-6 text-foreground">
<div className="mx-auto flex max-w-6xl flex-col gap-4">
<AppPage maxWidth="6xl">
<AppPageHeader
title={ticket.title}
description={ticket.ticket_no}
@@ -164,7 +164,6 @@ export function TicketDetailPage({ ticketId }: { ticketId: number }) {
onOpenChange={setTransitionDialogOpen}
onSubmit={handleTransition}
/>
</div>
</main>
</AppPage>
)
}

View File

@@ -3,6 +3,7 @@ import { ArrowRight, Plus } from 'lucide-react'
import { AppDataTable, type AppDataTableColumn } from '@/components/app/AppDataTable'
import { AppEmptyState } from '@/components/app/AppEmptyState'
import { AppPage } from '@/components/app/AppPage'
import { AppPageHeader } from '@/components/app/AppPageHeader'
import { AppPriorityBadge } from '@/components/app/AppPriorityBadge'
import { AppStatusBadge } from '@/components/app/AppStatusBadge'
@@ -194,8 +195,7 @@ export function TicketListPage() {
}
return (
<main className="min-h-screen bg-background p-6 text-foreground">
<div className="mx-auto flex max-w-7xl flex-col gap-5">
<AppPage contentClassName="gap-5">
<AppPageHeader
title="工单中心"
actions={
@@ -285,7 +285,6 @@ export function TicketListPage() {
onRowClick={(ticket) => (window.location.hash = `/tickets/${ticket.id}`)}
/>
) : null}
</div>
</main>
</AppPage>
)
}