/** * 汉语拼音分类数据 * 23 个声母 + 24 个韵母 + 16 个整体认读音节 */ export interface PinyinCategory { key: string; label: string; count: number; items: string[]; } export interface PinyinSubCategory { key: string; label: string; count: number; items: string[]; } export interface PinyinSection { key: string; title: string; count: number; items: string[]; subCategories?: PinyinSubCategory[]; } // ─── 声母 (23个) ─── export const SHENGMU: string[] = [ 'b', 'p', 'm', 'f', 'd', 't', 'n', 'l', 'g', 'k', 'h', 'j', 'q', 'x', 'zh', 'ch', 'sh', 'r', 'z', 'c', 's', 'y', 'w', ]; export const QIAOSHEYIN: string[] = ['zh', 'ch', 'sh', 'r']; export const PINGSHEYIN: string[] = ['z', 'c', 's']; // ─── 韵母 (24个) ─── export const DAN_YUNMU: string[] = ['a', 'o', 'e', 'i', 'u', 'ü']; export const FU_YUNMU: string[] = ['ai', 'ei', 'ui', 'ao', 'ou', 'iu', 'ie', 'üe']; export const TESHU_YUNMU: string[] = ['er']; export const QIANBI_YUNMU: string[] = ['an', 'en', 'in', 'un', 'ün']; export const HOUBI_YUNMU: string[] = ['ang', 'eng', 'ing', 'ong']; export const YUNMU: string[] = [ ...DAN_YUNMU, ...FU_YUNMU, ...TESHU_YUNMU, ...QIANBI_YUNMU, ...HOUBI_YUNMU, ]; // ─── 整体认读音节 (16个) ─── export const ZHENGTI_RENDU: string[] = [ 'zhi', 'chi', 'shi', 'ri', 'zi', 'ci', 'si', 'yi', 'wu', 'yu', 'ye', 'yue', 'yuan', 'yin', 'yun', 'ying', ]; // ─── 结构化分类数据(用于绘制) ─── export const PINYIN_SECTIONS: PinyinSection[] = [ { key: 'shengmu', title: '一、声母', count: 23, items: SHENGMU, subCategories: [ { key: 'qiaoshe', label: '翘舌音', count: 4, items: QIAOSHEYIN }, { key: 'pingshe', label: '平舌音', count: 3, items: PINGSHEYIN }, ], }, { key: 'yunmu', title: '二、韵母', count: 24, items: YUNMU, subCategories: [ { key: 'dan', label: '单韵母', count: 6, items: DAN_YUNMU }, { key: 'fu', label: '复韵母', count: 8, items: FU_YUNMU }, { key: 'teshu', label: '特殊韵母', count: 1, items: TESHU_YUNMU }, { key: 'qianbi', label: '前鼻韵母', count: 5, items: QIANBI_YUNMU }, { key: 'houbi', label: '后鼻韵母', count: 4, items: HOUBI_YUNMU }, ], }, { key: 'zhengti', title: '三、整体认读音节', count: 16, items: ZHENGTI_RENDU, }, ];