"use client"; /** * 教师详情对话框(ARCHITECTURE.md §7.3 详情页 / §9.4 / §10 P5) * * 数据契约: * - 详情数据复用列表中的 AdminTeacher 对象(@contract-pending:单查契约待补齐) * * 关联:ARCHITECTURE.md §5.5 / §7.3 / §9.4 / §10 P5 / §11.3 */ import { School } from "lucide-react"; import { useTranslations } from "next-intl"; import type { AdminTeacher } from "@/lib/api/admin-p5"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from "@/shared/components/ui/dialog"; import { DetailField, DetailSection } from "@/shared/components/page-templates"; import { formatTeacherCount, formatTeacherStatus, teacherStatusToBadgeClass, } from "@/features/admin/teachers/transformations"; /** * 教师详情对话框。受控组件,由父组件管理 open 状态与选中数据。 */ export function TeacherDetailDialog({ open, onOpenChange, teacher, }: { open: boolean; onOpenChange: (open: boolean) => void; teacher: AdminTeacher | null; }): React.ReactElement { const t = useTranslations("admin.teachers.detail"); return ( {t("title")} {t("description")} {teacher ? : null} ); } /** * 详情内容区(基本信息 + 教学信息)。 */ function TeacherDetailBody({ teacher, }: { teacher: AdminTeacher; }): React.ReactElement { const t = useTranslations("admin.teachers.detail"); return (
} />
); } /** * 状态徽章(按状态色阶展示)。 */ function StatusBadge({ status }: { status: string }): React.ReactElement { const label = formatTeacherStatus(status); const cls = teacherStatusToBadgeClass(status); return ( {label} ); }