import type { AppLocale } from "../locale";
import { DEFAULT_LOCALE } from "../locale";

export type EditorListPanelMessages = {
  listItemsLabel: string;
  listItemsAria: string;

  alignLabel: string;
  alignAria: string;
  alignOptionLeft: string;
  alignOptionCenter: string;
  alignOptionRight: string;

  styleSectionTitle: string;

  fontSizeLabel: string;
  fontSizeUnitLabel: string;
  fontSizePresetSmall: string;
  fontSizePresetMedium: string;
  fontSizePresetLarge: string;

  lineHeightLabel: string;
  lineHeightPresetTight: string;
  lineHeightPresetNormal: string;
  lineHeightPresetRelaxed: string;

  textColorLabel: string;
  textColorPickerAria: string;
  textColorHexAria: string;

  backgroundColorLabel: string;
  backgroundColorPickerAria: string;
  backgroundColorHexAria: string;

  bulletStyleLabel: string;
  bulletStyleAria: string;
  bulletStyleOptionDisc: string;
  bulletStyleOptionCircle: string;
  bulletStyleOptionSquare: string;
  bulletStyleOptionDecimal: string;
  bulletStyleOptionLowerAlpha: string;
  bulletStyleOptionUpperAlpha: string;
  bulletStyleOptionLowerRoman: string;
  bulletStyleOptionUpperRoman: string;
  bulletStyleOptionNone: string;

  gapLabel: string;
  gapUnitLabel: string;
  gapPresetTight: string;
  gapPresetNormal: string;
  gapPresetRelaxed: string;
};

const EDITOR_LIST_PANEL_MESSAGES: Record<AppLocale, EditorListPanelMessages> = {
  en: {
    listItemsLabel: "List items (separated by line breaks)",
    listItemsAria: "List items",

    alignLabel: "Alignment",
    alignAria: "List alignment",
    alignOptionLeft: "Left",
    alignOptionCenter: "Center",
    alignOptionRight: "Right",

    styleSectionTitle: "List style",

    fontSizeLabel: "Font size",
    fontSizeUnitLabel: "(px)",
    fontSizePresetSmall: "Small",
    fontSizePresetMedium: "Medium",
    fontSizePresetLarge: "Large",

    lineHeightLabel: "Line height",
    lineHeightPresetTight: "Tight",
    lineHeightPresetNormal: "Normal",
    lineHeightPresetRelaxed: "Relaxed",

    textColorLabel: "Text color",
    textColorPickerAria: "List text color picker",
    textColorHexAria: "List text color HEX",

    backgroundColorLabel: "Block background color",
    backgroundColorPickerAria: "List background color picker",
    backgroundColorHexAria: "List background color HEX",

    bulletStyleLabel: "Bullet style",
    bulletStyleAria: "List bullet style",
    bulletStyleOptionDisc: "Default (●)",
    bulletStyleOptionCircle: "Circle (○)",
    bulletStyleOptionSquare: "Square (■)",
    bulletStyleOptionDecimal: "Decimal (1.)",
    bulletStyleOptionLowerAlpha: "Lower alpha (a.)",
    bulletStyleOptionUpperAlpha: "Upper alpha (A.)",
    bulletStyleOptionLowerRoman: "Lower roman (i.)",
    bulletStyleOptionUpperRoman: "Upper roman (I.)",
    bulletStyleOptionNone: "None",

    gapLabel: "Item gap",
    gapUnitLabel: "(px)",
    gapPresetTight: "Tight",
    gapPresetNormal: "Normal",
    gapPresetRelaxed: "Relaxed",
  },
  ko: {
    listItemsLabel: "리스트 아이템 (줄바꿈으로 구분)",
    listItemsAria: "리스트 아이템들",

    alignLabel: "정렬",
    alignAria: "리스트 정렬",
    alignOptionLeft: "왼쪽",
    alignOptionCenter: "가운데",
    alignOptionRight: "오른쪽",

    styleSectionTitle: "리스트 스타일",

    fontSizeLabel: "글자 크기",
    fontSizeUnitLabel: "(px)",
    fontSizePresetSmall: "작게",
    fontSizePresetMedium: "보통",
    fontSizePresetLarge: "크게",

    lineHeightLabel: "줄 간격",
    lineHeightPresetTight: "좁게",
    lineHeightPresetNormal: "보통",
    lineHeightPresetRelaxed: "넓게",

    textColorLabel: "텍스트 색상",
    textColorPickerAria: "리스트 텍스트 색상 피커",
    textColorHexAria: "리스트 텍스트 색상 HEX",

    backgroundColorLabel: "블록 배경색",
    backgroundColorPickerAria: "리스트 배경색 피커",
    backgroundColorHexAria: "리스트 배경색 HEX",

    bulletStyleLabel: "불릿 스타일",
    bulletStyleAria: "리스트 불릿 스타일",
    bulletStyleOptionDisc: "기본 (●)",
    bulletStyleOptionCircle: "원 (○)",
    bulletStyleOptionSquare: "사각 (■)",
    bulletStyleOptionDecimal: "숫자 (1.)",
    bulletStyleOptionLowerAlpha: "알파벳 소문자 (a.)",
    bulletStyleOptionUpperAlpha: "알파벳 대문자 (A.)",
    bulletStyleOptionLowerRoman: "로마 숫자 소문자 (i.)",
    bulletStyleOptionUpperRoman: "로마 숫자 대문자 (I.)",
    bulletStyleOptionNone: "없음",

    gapLabel: "아이템 간 여백",
    gapUnitLabel: "(px)",
    gapPresetTight: "좁게",
    gapPresetNormal: "보통",
    gapPresetRelaxed: "넓게",
  },
};

export function getEditorListPanelMessages(
  locale: AppLocale | null | undefined,
): EditorListPanelMessages {
  const key = (locale ?? DEFAULT_LOCALE) as AppLocale;
  return EDITOR_LIST_PANEL_MESSAGES[key] ?? EDITOR_LIST_PANEL_MESSAGES[DEFAULT_LOCALE];
}
