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

export type EditorFormCheckboxPanelMessages = {
  sectionTitle: string;

  groupTitleTypeLabel: string;
  groupTitleTypeOptionText: string;
  groupTitleTypeOptionImage: string;

  groupTitleDisplayLabel: string;
  groupTitleDisplayOptionVisible: string;
  groupTitleDisplayOptionHidden: string;

  layoutLabel: string;
  layoutOptionStacked: string;
  layoutOptionInline: string;

  optionLayoutLabel: string;
  optionLayoutOptionStacked: string;
  optionLayoutOptionInline: string;

  labelGapLabel: string;

  groupTitleLabel: string;

  submitKeyLabel: string;

  optionsLabel: string;
  addOptionButtonLabel: string;
  optionLabelPlaceholder: string;
  optionValuePlaceholder: string;

  optionImageSourceLabel: string;
  optionImageSourceOptionUrl: string;
  optionImageSourceOptionUpload: string;

  optionImageUrlPlaceholder: string;
  optionImageUploadLabel: string;
  optionImageUploadAria: string;

  groupTitleImageSourceLabel: string;
  groupTitleImageSourceOptionUrl: string;
  groupTitleImageSourceOptionUpload: string;

  groupTitleImageUrlLabel: string;
  groupTitleImageUploadLabel: string;
  groupTitleImageUploadAria: string;

  requiredNoticeText: string;

  styleSectionTitle: string;

  textSizeLabel: string;
  textSizeUnitLabel: string;

  lineHeightLabel: string;
  lineHeightUnitLabel: string;

  letterSpacingLabel: string;
  letterSpacingUnitLabel: string;

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

  fixedWidthLabel: string;
  fixedWidthUnitLabel: string;

  paddingXLabel: string;
  paddingXUnitLabel: string;

  paddingYLabel: string;
  paddingYUnitLabel: string;

  optionGapLabel: string;
  optionGapUnitLabel: string;

  textColorLabel: string;
  textColorPickerAria: string;
  textColorHexAria: 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;
};

const EDITOR_FORM_CHECKBOX_PANEL_MESSAGES: Record<AppLocale, EditorFormCheckboxPanelMessages> = {
  en: {
    sectionTitle: "Checkbox field",

    groupTitleTypeLabel: "Group title type",
    groupTitleTypeOptionText: "Text",
    groupTitleTypeOptionImage: "Image",

    groupTitleDisplayLabel: "Group title display mode",
    groupTitleDisplayOptionVisible: "Visible (default)",
    groupTitleDisplayOptionHidden: "Hidden",

    layoutLabel: "Layout",
    layoutOptionStacked: "Vertical (default)",
    layoutOptionInline: "Horizontal (inline)",

    optionLayoutLabel: "Option layout",
    optionLayoutOptionStacked: "Vertical (default)",
    optionLayoutOptionInline: "Horizontal (inline)",

    labelGapLabel: "Label/field gap",

    groupTitleLabel: "Group title",

    submitKeyLabel: "Submit key",

    optionsLabel: "Options",
    addOptionButtonLabel: "Add option",
    optionLabelPlaceholder: "Label",
    optionValuePlaceholder: "Value (value)",

    optionImageSourceLabel: "Option image source",
    optionImageSourceOptionUrl: "URL",
    optionImageSourceOptionUpload: "File upload",

    optionImageUrlPlaceholder: "Option image URL (optional)",
    optionImageUploadLabel: "Option image file upload",
    optionImageUploadAria: "Option image file upload",

    groupTitleImageSourceLabel: "Group title image source",
    groupTitleImageSourceOptionUrl: "URL",
    groupTitleImageSourceOptionUpload: "File upload",

    groupTitleImageUrlLabel: "Group title image URL",
    groupTitleImageUploadLabel: "Group title image file upload",
    groupTitleImageUploadAria: "Group title image file upload",

    requiredNoticeText: "Required state is configured in the form controller.",

    styleSectionTitle: "Field style",

    textSizeLabel: "Checkbox text size",
    textSizeUnitLabel: "(px)",

    lineHeightLabel: "Checkbox line height",
    lineHeightUnitLabel: "(px)",

    letterSpacingLabel: "Checkbox letter spacing",
    letterSpacingUnitLabel: "(px)",

    widthModeLabel: "Field width",
    widthModeOptionAuto: "Auto",
    widthModeOptionFull: "Full width",
    widthModeOptionFixed: "Fixed value",

    fixedWidthLabel: "Field fixed width",
    fixedWidthUnitLabel: "(px)",

    paddingXLabel: "Checkbox horizontal padding",
    paddingXUnitLabel: "(px)",

    paddingYLabel: "Checkbox vertical padding",
    paddingYUnitLabel: "(px)",

    optionGapLabel: "Checkbox option gap",
    optionGapUnitLabel: "(px)",

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

    fillColorLabel: "Background color",
    fillColorPickerAria: "Checkbox background color picker",
    fillColorHexAria: "Checkbox background color HEX",

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

    borderRadiusLabel: "Field border radius",
    borderRadiusPresetNone: "None",
    borderRadiusPresetSmall: "Small",
    borderRadiusPresetMedium: "Medium",
    borderRadiusPresetLarge: "Large",
    borderRadiusPresetFull: "Fully rounded",
  },
  ko: {
    sectionTitle: "체크박스 필드",

    groupTitleTypeLabel: "그룹 타이틀 타입",
    groupTitleTypeOptionText: "텍스트",
    groupTitleTypeOptionImage: "이미지",

    groupTitleDisplayLabel: "그룹 타이틀 표시 방식",
    groupTitleDisplayOptionVisible: "표시 (기본)",
    groupTitleDisplayOptionHidden: "숨김",

    layoutLabel: "레이아웃",
    layoutOptionStacked: "세로 (기본)",
    layoutOptionInline: "가로 (인라인)",

    optionLayoutLabel: "옵션 레이아웃",
    optionLayoutOptionStacked: "세로 (기본)",
    optionLayoutOptionInline: "가로 (인라인)",

    labelGapLabel: "라벨/필드 간격",

    groupTitleLabel: "그룹 타이틀",

    submitKeyLabel: "전송 키",

    optionsLabel: "옵션",
    addOptionButtonLabel: "옵션 추가",
    optionLabelPlaceholder: "라벨",
    optionValuePlaceholder: "값(value)",

    optionImageSourceLabel: "옵션 이미지 소스",
    optionImageSourceOptionUrl: "URL",
    optionImageSourceOptionUpload: "파일 업로드",

    optionImageUrlPlaceholder: "옵션 이미지 URL (선택)",
    optionImageUploadLabel: "옵션 이미지 파일 업로드",
    optionImageUploadAria: "옵션 이미지 파일 업로드",

    groupTitleImageSourceLabel: "그룹 타이틀 이미지 소스",
    groupTitleImageSourceOptionUrl: "URL",
    groupTitleImageSourceOptionUpload: "파일 업로드",

    groupTitleImageUrlLabel: "그룹 타이틀 이미지 URL",
    groupTitleImageUploadLabel: "그룹 타이틀 이미지 파일 업로드",
    groupTitleImageUploadAria: "그룹 타이틀 이미지 파일 업로드",

    requiredNoticeText: "필수 여부는 폼 컨트롤러에서 설정합니다.",

    styleSectionTitle: "필드 스타일",

    textSizeLabel: "체크박스 텍스트 크기",
    textSizeUnitLabel: "(px)",

    lineHeightLabel: "체크박스 줄간격",
    lineHeightUnitLabel: "(px)",

    letterSpacingLabel: "체크박스 자간",
    letterSpacingUnitLabel: "(px)",

    widthModeLabel: "필드 너비",
    widthModeOptionAuto: "자동",
    widthModeOptionFull: "전체 폭",
    widthModeOptionFixed: "고정 값",

    fixedWidthLabel: "필드 고정 너비",
    fixedWidthUnitLabel: "(px)",

    paddingXLabel: "체크박스 가로 패딩",
    paddingXUnitLabel: "(px)",

    paddingYLabel: "체크박스 세로 패딩",
    paddingYUnitLabel: "(px)",

    optionGapLabel: "체크박스 옵션 간격",
    optionGapUnitLabel: "(px)",

    textColorLabel: "텍스트 색상",
    textColorPickerAria: "체크박스 텍스트 색상 피커",
    textColorHexAria: "체크박스 텍스트 색상 HEX",

    fillColorLabel: "배경 색상",
    fillColorPickerAria: "체크박스 배경 색상 피커",
    fillColorHexAria: "체크박스 배경 색상 HEX",

    strokeColorLabel: "테두리 색상",
    strokeColorPickerAria: "체크박스 테두리 색상 피커",
    strokeColorHexAria: "체크박스 테두리 색상 HEX",

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

export function getEditorFormCheckboxPanelMessages(
  locale: AppLocale | null | undefined,
): EditorFormCheckboxPanelMessages {
  const key = (locale ?? DEFAULT_LOCALE) as AppLocale;
  return EDITOR_FORM_CHECKBOX_PANEL_MESSAGES[key] ?? EDITOR_FORM_CHECKBOX_PANEL_MESSAGES[DEFAULT_LOCALE];
}
