/**
 * 清掃詳細ログ（`CleanLogTable`）の「事前チェック1回目 / 2回目」のセルの中身（D-171 / D-178）。
 *
 * ★列は「何分前か」ではなく「その清掃の何回目の事前チェックか」★（早い方が1回目。ユーザー判断 2026-10-16「案1」。D-178）。
 * 事前チェックの時刻は設定で変わる（例 60/30 → 60/10）ため、何分前かはセルの中に出す（`precheckMinutesLabel()`）。
 * ★旧見出し「1h前ST / 30分前ST」★は分数を固定した名前で、設定を変えると中身と食い違うため廃止した。
 *
 * ★`null` ＝ その回の事前チェックの予定が無い★（`CleanLogItem.status_1h` / `status_30m`。
 * ユーザー指示 2026-10-07「事前チェックがないものは-にしてください」）。
 * ★null は Pill を出さず「-」★（色なし）。★文字列（`"Standby."` を含む）は今までどおり Pill★。
 *
 * ★ここで分岐する理由★: `statusColor()`（`lib/theme-status.ts`）に null が届く経路を作らないため。
 *   画面は `kind` で分岐し、`"pill"` のときだけ `statusColor()` を呼ぶ（`text` は `string` に絞られている）。
 * ★「-」は JP/EN 共通の記号なので `t()` に通さない★。
 * ★CSV は「-」ではなく空のセル★（`lib/clean-logs/csv.ts`。`csvCell()` で `'-` になるため。D-164）。
 * ★「-」にするのは null だけ★ — 空文字や値そのものが `"-"` の行は予定ありとして Pill で出す（DB の値を変換しない。D-077）。
 */

import type { Lang } from "@/lib/i18n";

/** 事前チェックの予定が無い列に出す記号（JP/EN 共通） */
export const PRECHECK_STATUS_NONE = "-";

export type PrecheckStatusCell =
  | { kind: "none"; text: typeof PRECHECK_STATUS_NONE }
  | { kind: "pill"; text: string };

export function precheckStatusCell(status: string | null): PrecheckStatusCell {
  return status === null
    ? { kind: "none", text: PRECHECK_STATUS_NONE }
    : { kind: "pill", text: status };
}

/**
 * セルの Pill の横に出す「何分前か」の文字（D-178）。JP「60分前」/ EN「60 min」。
 * ★`minutes` が null なら null★（画面は Pill だけを出す。`status_*` が null のときは呼ぶ前に「-」で分岐する）。
 * ★分数は生値のまま★（`clean_timetables.precheck`。旧コード値 `1` / `2` も「1分前」「2分前」。D-077 と同じ考え方）。
 *
 * ★辞書（`lib/i18n.ts`）の `"{n}分前"` を使わない理由★: そのキーの EN はシステム管理画面の
 *   "{n} min before" で、表のセルには長すぎる。辞書のキーは日本語原文そのものなので、
 *   同じ「{n}分前」に別の英語を当てられない。ここでは言語を受け取って組み立てる。
 */
export function precheckMinutesLabel(lang: Lang, minutes: number | null): string | null {
  if (minutes === null) return null;
  return lang === "en" ? `${minutes} min` : `${minutes}分前`;
}
