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

export type EditorButtonPanelMessages = {
  buttonTextLabel: string;
  buttonTextAria: string;

  imageSectionTitle: string;
  imageSourceLabel: string;
  imageSourceAria: string;
  imageSourceOptionNone: string;
  imageSourceOptionUrl: string;
  imageSourceOptionUpload: string;

  imageUrlLabel: string;
  imageUrlAria: string;
  imageUploadLabel: string;
  imageUploadAria: string;

  imageAltLabel: string;
  imageAltAria: string;

  imagePlacementLabel: string;
  imagePlacementAria: string;
  imagePlacementOptionLeft: string;
  imagePlacementOptionRight: string;
  imagePlacementOptionTop: string;
  imagePlacementOptionBottom: string;

  paddingXLabel: string;
  paddingYLabel: string;

  linkLabel: string;
  linkAria: string;

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

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

  styleLabel: string;
  styleAria: string;
  styleOptionSolid: string;
  styleOptionOutline: string;
  styleOptionGhost: string;

  fillColorLabel: string;
  fillColorPickerAria: string;
  fillColorHexAria: string;

  strokeColorLabel: string;
  strokeColorPickerAria: string;
  strokeColorHexAria: string;

  borderRadiusLabel: string;
  borderRadiusPresetNone: string;
  borderRadiusPresetSmall: string;
  borderRadiusPresetMedium: string;
  borderRadiusPresetLarge: string;
  borderRadiusPresetFull: string;

  widthModeLabel: string;
  widthModeAria: string;
  widthModeOptionAuto: string;
  widthModeOptionFull: string;
  widthModeOptionFixed: string;

  fixedWidthLabel: string;
  fixedWidthUnitLabel: string;
  fixedWidthPresetSmall: string;
  fixedWidthPresetMedium: string;
  fixedWidthPresetLarge: string;

  fontSizeLabel: string;
  fontSizeUnitLabel: string;

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

  letterSpacingLabel: string;
  letterSpacingUnitLabel: string;
  letterSpacingPresetTighter: string;
  letterSpacingPresetTight: string;
  letterSpacingPresetNormal: string;
  letterSpacingPresetWide: string;
  letterSpacingPresetWider: string;
};

const EDITOR_BUTTON_PANEL_MESSAGES: Record<AppLocale, EditorButtonPanelMessages> = {
  en: {
    buttonTextLabel: "Button text",
    buttonTextAria: "Button text",

    imageSectionTitle: "Button image",
    imageSourceLabel: "Button image source",
    imageSourceAria: "Button image source",
    imageSourceOptionNone: "None",
    imageSourceOptionUrl: "URL",
    imageSourceOptionUpload: "File upload",

    imageUrlLabel: "Button image URL",
    imageUrlAria: "Button image URL",
    imageUploadLabel: "Button image file upload",
    imageUploadAria: "Button image file upload",

    imageAltLabel: "Button image alt text",
    imageAltAria: "Button image alt text",

    imagePlacementLabel: "Button image placement",
    imagePlacementAria: "Button image placement",
    imagePlacementOptionLeft: "Text left",
    imagePlacementOptionRight: "Text right",
    imagePlacementOptionTop: "Text top",
    imagePlacementOptionBottom: "Text bottom",

    paddingXLabel: "Horizontal padding",
    paddingYLabel: "Vertical padding",

    linkLabel: "Button link",
    linkAria: "Button link",

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

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

    styleLabel: "Style",
    styleAria: "Button style",
    styleOptionSolid: "Fill",
    styleOptionOutline: "Outline",
    styleOptionGhost: "Ghost",

    fillColorLabel: "Fill color",
    fillColorPickerAria: "Button fill color picker",
    fillColorHexAria: "Button fill color HEX",

    strokeColorLabel: "Border color",
    strokeColorPickerAria: "Button border color picker",
    strokeColorHexAria: "Button border color HEX",

    borderRadiusLabel: "Border radius",
    borderRadiusPresetNone: "None",
    borderRadiusPresetSmall: "Small",
    borderRadiusPresetMedium: "Medium",
    borderRadiusPresetLarge: "Large",
    borderRadiusPresetFull: "Full",

    widthModeLabel: "Button width mode",
    widthModeAria: "Button width mode",
    widthModeOptionAuto: "Auto",
    widthModeOptionFull: "Full width",
    widthModeOptionFixed: "Fixed",

    fixedWidthLabel: "Button fixed width",
    fixedWidthUnitLabel: "(px)",
    fixedWidthPresetSmall: "Small",
    fixedWidthPresetMedium: "Medium",
    fixedWidthPresetLarge: "Wide",

    fontSizeLabel: "Button font size",
    fontSizeUnitLabel: "(px)",

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

    letterSpacingLabel: "Letter spacing",
    letterSpacingUnitLabel: "(px)",
    letterSpacingPresetTighter: "Very tight",
    letterSpacingPresetTight: "Tight",
    letterSpacingPresetNormal: "Normal",
    letterSpacingPresetWide: "Wide",
    letterSpacingPresetWider: "Very wide",
  },
  ko: {
    buttonTextLabel: "버튼 텍스트",
    buttonTextAria: "버튼 텍스트",

    imageSectionTitle: "버튼 이미지",
    imageSourceLabel: "버튼 이미지 소스",
    imageSourceAria: "버튼 이미지 소스",
    imageSourceOptionNone: "사용 안 함",
    imageSourceOptionUrl: "URL",
    imageSourceOptionUpload: "파일 업로드",

    imageUrlLabel: "버튼 이미지 URL",
    imageUrlAria: "버튼 이미지 URL",
    imageUploadLabel: "버튼 이미지 파일 업로드",
    imageUploadAria: "버튼 이미지 파일 업로드",

    imageAltLabel: "버튼 이미지 대체 텍스트",
    imageAltAria: "버튼 이미지 대체 텍스트",

    imagePlacementLabel: "버튼 이미지 위치",
    imagePlacementAria: "버튼 이미지 위치",
    imagePlacementOptionLeft: "텍스트 왼쪽",
    imagePlacementOptionRight: "텍스트 오른쪽",
    imagePlacementOptionTop: "텍스트 위쪽",
    imagePlacementOptionBottom: "텍스트 아래쪽",

    paddingXLabel: "가로 패딩",
    paddingYLabel: "세로 패딩",

    linkLabel: "버튼 링크",
    linkAria: "버튼 링크",

    alignLabel: "정렬",
    alignAria: "버튼 정렬",
    alignOptionLeft: "왼쪽",
    alignOptionCenter: "가운데",
    alignOptionRight: "오른쪽",

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

    styleLabel: "스타일",
    styleAria: "버튼 스타일",
    styleOptionSolid: "채움",
    styleOptionOutline: "외곽선",
    styleOptionGhost: "고스트",

    fillColorLabel: "채움 색상",
    fillColorPickerAria: "버튼 채움 색상 피커",
    fillColorHexAria: "버튼 채움 색상 HEX",

    strokeColorLabel: "외곽선 색상",
    strokeColorPickerAria: "버튼 외곽선 색상 피커",
    strokeColorHexAria: "버튼 외곽선 색상 HEX",

    borderRadiusLabel: "모서리 둥글기",
    borderRadiusPresetNone: "없음",
    borderRadiusPresetSmall: "작게",
    borderRadiusPresetMedium: "보통",
    borderRadiusPresetLarge: "크게",
    borderRadiusPresetFull: "완전 둥글게",

    widthModeLabel: "버튼 너비 모드",
    widthModeAria: "버튼 너비 모드",
    widthModeOptionAuto: "자동",
    widthModeOptionFull: "전체 폭",
    widthModeOptionFixed: "고정 값",

    fixedWidthLabel: "버튼 고정 너비",
    fixedWidthUnitLabel: "(px)",
    fixedWidthPresetSmall: "작게",
    fixedWidthPresetMedium: "보통",
    fixedWidthPresetLarge: "넓게",

    fontSizeLabel: "버튼 크기",
    fontSizeUnitLabel: "(px)",

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

    letterSpacingLabel: "글자 간격",
    letterSpacingUnitLabel: "(px)",
    letterSpacingPresetTighter: "아주 좁게",
    letterSpacingPresetTight: "좁게",
    letterSpacingPresetNormal: "보통",
    letterSpacingPresetWide: "넓게",
    letterSpacingPresetWider: "아주 넓게",
  },
};

export function getEditorButtonPanelMessages(
  locale: AppLocale | null | undefined,
): EditorButtonPanelMessages {
  const key = (locale ?? DEFAULT_LOCALE) as AppLocale;
  return EDITOR_BUTTON_PANEL_MESSAGES[key] ?? EDITOR_BUTTON_PANEL_MESSAGES[DEFAULT_LOCALE];
}
