import { mapValues } from 'es-toolkit'; import { font } from './primitive'; import { TypographyKeys } from './types'; export type FontFamily = | 'lp-pri-font-family-variables-pretendard' | 'lp-pri-font-family-variables-pretendard-jp' | 'lp-pri-font-family-merriweather' | 'lp-pri-font-family-flare'; interface TypographyValues { family: Exclude; weight: keyof typeof font.weight; lineHeight: keyof typeof font.lineHeight; size: keyof typeof font.size; letterSpacing?: keyof typeof font.letterSpacing; } export const typography: Record = { // Display 'lp-sys-typo-display2-accent-black': { family: 'lp-pri-font-family-variables-pretendard', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-52', weight: 'lp-pri-font-weight-700', }, 'lp-sys-typo-display3-accent-black': { family: 'lp-pri-font-family-variables-pretendard', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-42', weight: 'lp-pri-font-weight-600', }, // Heading 'lp-sys-typo-heading1-answer': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-150', size: 'lp-pri-font-size-22', }, 'lp-sys-typo-heading2-answer': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-150', size: 'lp-pri-font-size-22', }, 'lp-sys-typo-heading3-answer': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-150', size: 'lp-pri-font-size-22', }, 'lp-sys-typo-heading4-answer': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-150', size: 'lp-pri-font-size-20', }, 'lp-sys-typo-heading5-answer': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-150', size: 'lp-pri-font-size-16', }, 'lp-sys-typo-heading6-answer': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-150', size: 'lp-pri-font-size-16', }, // Title 'lp-sys-typo-title1-accent-bold': { family: 'lp-pri-font-family-variables-pretendard', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-32', weight: 'lp-pri-font-weight-500', }, 'lp-sys-typo-title2-accent-bold': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-28', }, 'lp-sys-typo-title3-accent-bold': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-24', }, 'lp-sys-typo-title4-accent-bold': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-20', }, 'lp-sys-typo-title5-accent-bold': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-18', }, 'lp-sys-typo-title1-normal-bold': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-500', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-32', }, 'lp-sys-typo-title2-normal-bold': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-500', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-28', }, 'lp-sys-typo-title3-normal-bold': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-500', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-24', }, 'lp-sys-typo-title4-normal-bold': { weight: 'lp-pri-font-weight-500', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-20', family: 'lp-pri-font-family-variables-pretendard', }, 'lp-sys-typo-title5-normal-bold': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-500', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-18', }, // Paragraph 'lp-sys-typo-paragraph1-normal-bold': { weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-17', family: 'lp-pri-font-family-variables-pretendard', }, 'lp-sys-typo-paragraph2-normal-bold': { weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-16', family: 'lp-pri-font-family-variables-pretendard', }, 'lp-sys-typo-paragraph3-normal-bold': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-15', }, 'lp-sys-typo-paragraph4-normal-bold': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-14', }, 'lp-sys-typo-paragraph1-normal-medium': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-500', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-17', }, 'lp-sys-typo-paragraph2-normal-medium': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-500', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-16', }, 'lp-sys-typo-paragraph3-normal-medium': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-500', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-15', }, 'lp-sys-typo-paragraph4-normal-medium': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-500', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-14', }, 'lp-sys-typo-paragraph1-normal-regular': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-400', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-17', }, 'lp-sys-typo-paragraph2-normal-regular': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-400', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-16', }, 'lp-sys-typo-paragraph3-normal-regular': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-400', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-15', }, 'lp-sys-typo-paragraph4-normal-regular': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-400', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-14', }, 'lp-sys-typo-paragraph2-post-regular': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-400', lineHeight: 'lp-pri-font-lineheight-150', size: 'lp-pri-font-size-16', }, 'lp-sys-typo-paragraph3-post-regular': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-400', lineHeight: 'lp-pri-font-lineheight-150', size: 'lp-pri-font-size-15', }, 'lp-sys-typo-paragraph4-post-regular': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-400', lineHeight: 'lp-pri-font-lineheight-150', size: 'lp-pri-font-size-14', }, // Answer 'lp-sys-typo-paragraph2-answer-bold': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-160', size: 'lp-pri-font-size-16', }, 'lp-sys-typo-paragraph2-answer-regular': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-400', lineHeight: 'lp-pri-font-lineheight-160', size: 'lp-pri-font-size-16', }, // Caption 'lp-sys-typo-caption1-normal-bold': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-13', }, 'lp-sys-typo-caption2-normal-bold': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-12', }, 'lp-sys-typo-caption3-normal-bold': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-600', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-11', }, 'lp-sys-typo-caption1-normal-medium': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-500', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-13', }, 'lp-sys-typo-caption2-normal-medium': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-500', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-12', }, 'lp-sys-typo-caption3-normal-medium': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-500', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-11', }, 'lp-sys-typo-caption1-normal-regular': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-400', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-13', }, 'lp-sys-typo-caption2-normal-regular': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-400', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-12', }, 'lp-sys-typo-caption3-normal-regular': { family: 'lp-pri-font-family-variables-pretendard', weight: 'lp-pri-font-weight-400', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-11', }, }; export const typographyClassName: Partial> = mapValues( typography, (_value, key) => key, ); export const typographyEnglish: Partial> = { 'lp-sys-typo-title1-accent-bold': { ...typography['lp-sys-typo-title1-accent-bold'], family: 'lp-pri-font-family-flare', size: 'lp-pri-font-size-34', lineHeight: 'lp-pri-font-lineheight-120', letterSpacing: 'lp-pri-font-letterspacing-tight', weight: 'lp-pri-font-weight-400', }, 'lp-sys-typo-title2-accent-bold': { ...typography['lp-sys-typo-title2-accent-bold'], family: 'lp-pri-font-family-flare', lineHeight: 'lp-pri-font-lineheight-120', size: 'lp-pri-font-size-30', letterSpacing: 'lp-pri-font-letterspacing-tight', weight: 'lp-pri-font-weight-400', }, 'lp-sys-typo-title3-accent-bold': { ...typography['lp-sys-typo-title3-accent-bold'], family: 'lp-pri-font-family-flare', lineHeight: 'lp-pri-font-lineheight-120', size: 'lp-pri-font-size-26', letterSpacing: 'lp-pri-font-letterspacing-tight', weight: 'lp-pri-font-weight-400', }, 'lp-sys-typo-title4-accent-bold': { ...typography['lp-sys-typo-title4-accent-bold'], family: 'lp-pri-font-family-flare', lineHeight: 'lp-pri-font-lineheight-120', size: 'lp-pri-font-size-22', letterSpacing: 'lp-pri-font-letterspacing-tight', weight: 'lp-pri-font-weight-400', }, 'lp-sys-typo-title5-accent-bold': { ...typography['lp-sys-typo-title5-accent-bold'], family: 'lp-pri-font-family-flare', lineHeight: 'lp-pri-font-lineheight-130', size: 'lp-pri-font-size-20', letterSpacing: 'lp-pri-font-letterspacing-tight', weight: 'lp-pri-font-weight-400', }, 'lp-sys-typo-display2-accent-black': { family: 'lp-pri-font-family-flare', lineHeight: 'lp-pri-font-lineheight-110', size: 'lp-pri-font-size-54', weight: 'lp-pri-font-weight-400', letterSpacing: 'lp-pri-font-letterspacing-tight', }, 'lp-sys-typo-display3-accent-black': { ...typography['lp-sys-typo-display3-accent-black'], family: 'lp-pri-font-family-flare', lineHeight: 'lp-pri-font-lineheight-120', weight: 'lp-pri-font-weight-400', letterSpacing: 'lp-pri-font-letterspacing-tight', }, };