MetricsHeader.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. "use client";
  2. import { ArrowLeft } from "lucide-react";
  3. import { useRouter } from "next/navigation";
  4. export default function MetricsHeader({ metricId }: { metricId: string }) {
  5. const router = useRouter();
  6. const getMetricTitle = (id: string) => {
  7. const category = id.charAt(0).toUpperCase();
  8. switch (category) {
  9. case "K":
  10. return "知识掌握指标详情";
  11. case "A":
  12. return "AI 辅助指标详情";
  13. case "S":
  14. return "软件工程指标详情";
  15. case "D":
  16. return "态度与协作指标详情";
  17. default:
  18. return "能力指标详情";
  19. }
  20. };
  21. return (
  22. <header className="h-16 px-4 md:px-6 flex items-center justify-between sticky top-0 z-50 bg-surface/90 backdrop-blur-md border-b border-outline-variant">
  23. <div className="flex items-center gap-4">
  24. <button
  25. onClick={() => router.back()}
  26. className="w-10 h-10 rounded-full flex items-center justify-center hover:bg-surface-variant transition-colors text-on-surface cursor-pointer"
  27. >
  28. <ArrowLeft className="w-6 h-6" />
  29. </button>
  30. <h1 className="text-xl font-medium tracking-tight text-on-surface">
  31. {getMetricTitle(metricId)}
  32. </h1>
  33. </div>
  34. <div className="flex items-center gap-3">
  35. <div className="hidden md:flex items-center gap-2">
  36. <span className="w-8 h-8 rounded-full bg-primary-container text-on-primary-container flex items-center justify-center text-sm font-bold">
  37. 67
  38. </span>
  39. </div>
  40. </div>
  41. </header>
  42. );
  43. }