/**
 * 考勤模块共享常量（消除 types.ts / attendance-sheet.tsx / attendance-filters.tsx / parent-attendance-calendar.tsx 重复定义）。
 *
 * 注意：标签使用 i18n key（`status.*`），由组件层通过 `useTranslations("attendance")` 解析。
 */
import type { AttendanceStatus } from "./types"

/** 重导出类型，便于组件层从 constants 单点导入（消除 types/constants 双源混乱） */
export type { AttendanceStatus } from "./types"

/** 考勤状态选项（顺序即 UI 展示顺序） */
export const ATTENDANCE_STATUS_OPTIONS: AttendanceStatus[] = [
  "present",
  "absent",
  "late",
  "early_leave",
  "excused",
]

/** 考勤状态 → i18n key 映射（组件层 `t(key)` 解析） */
export const ATTENDANCE_STATUS_LABEL_KEYS: Record<AttendanceStatus, string> = {
  present: "status.present",
  absent: "status.absent",
  late: "status.late",
  early_leave: "status.early_leave",
  excused: "status.excused",
}

/** 考勤状态 → Badge variant 映射 */
export const ATTENDANCE_STATUS_BADGE_VARIANTS: Record<AttendanceStatus, "default" | "secondary" | "destructive" | "outline"> = {
  present: "default",
  absent: "destructive",
  late: "secondary",
  early_leave: "outline",
  excused: "outline",
}

/** 考勤状态 → Tailwind 圆点颜色类 */
export const ATTENDANCE_STATUS_DOT_COLORS: Record<AttendanceStatus, string> = {
  present: "bg-green-500",
  absent: "bg-red-500",
  late: "bg-yellow-500",
  early_leave: "bg-blue-500",
  excused: "bg-purple-500",
}

/** 键盘快捷键映射 */
export const ATTENDANCE_STATUS_SHORTCUTS: Record<string, AttendanceStatus> = {
  p: "present",
  a: "absent",
  l: "late",
  e: "early_leave",
  x: "excused",
}

/** 初始化状态计数，避免 `{} as Record<...>` 类型断言 */
export function createInitialStatusCounts(): Record<AttendanceStatus, number> {
  return {
    present: 0,
    absent: 0,
    late: 0,
    early_leave: 0,
    excused: 0,
  }
}
