import type { OrgStatus } from '../api/client'
import StatusChip from '../ui/StatusChip'
import type { GlyphKind } from '../ui/StatusGlyph'

export const STATUS_LABELS: Record<OrgStatus, string> = {
  INFO_PENDING: '정보 대기',
  READY: '생성 가능',
  PARTIAL: '부분 생성',
  ACTIVE: '운영 중',
}

/** 접힌 목록 등 뱃지를 놓을 자리가 없을 때 쓰는 상태 점 색 */
export const STATUS_DOT: Record<OrgStatus, string> = {
  INFO_PENDING: 'bg-gray-300',
  READY: 'bg-blue-500',
  PARTIAL: 'bg-amber-500',
  ACTIVE: 'bg-emerald-500',
}

/**
 * 채널 준비 상태는 네 단계가 순서대로 이어진다. 그래서 색뿐 아니라 모양도 그 순서를 담는다.
 * 빈 사각(담당자 없음) → 절반(생성 가능) → 삼각(한쪽만 생성돼 손봐야 함) → 채운 사각(운영 중).
 */
const TONE: Record<OrgStatus, string> = {
  INFO_PENDING: 'gray',
  READY: 'blue',
  PARTIAL: 'amber',
  ACTIVE: 'emerald',
}

const GLYPH: Record<OrgStatus, GlyphKind> = {
  INFO_PENDING: 'idle',
  READY: 'progress',
  PARTIAL: 'caution',
  ACTIVE: 'done',
}

export default function StatusBadge({ status }: { status: OrgStatus }) {
  return <StatusChip label={STATUS_LABELS[status]} tone={TONE[status]} glyph={GLYPH[status]} />
}
