@ihabdevteam/core 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (848) hide show
  1. package/README.md +591 -0
  2. package/dist/components.cjs.css +19 -0
  3. package/dist/components.cjs.js +975 -0
  4. package/dist/components.esm.css +19 -0
  5. package/dist/components.esm.js +975 -0
  6. package/dist/hooks.cjs.css +1 -0
  7. package/dist/hooks.cjs.js +799 -0
  8. package/dist/hooks.esm.css +1 -0
  9. package/dist/hooks.esm.js +799 -0
  10. package/dist/ihabdevteam-core-tokens.css +1 -0
  11. package/dist/ihabdevteam-core.cjs.js +993 -0
  12. package/dist/ihabdevteam-core.css +1 -0
  13. package/dist/ihabdevteam-core.d.ts +8272 -0
  14. package/dist/ihabdevteam-core.esm.js +993 -0
  15. package/dist/logo/Logo_APEB.svg +53 -0
  16. package/dist/logo/Logo_APEB_black.svg +42 -0
  17. package/dist/logo/Logo_APEB_white.svg +42 -0
  18. package/dist/logo/Logo_HTP_kr.svg +21 -0
  19. package/dist/logo/Logo_HTP_kr_black.svg +17 -0
  20. package/dist/logo/Logo_HTP_kr_white.svg +17 -0
  21. package/dist/logo/Logo_IHAB_en.svg +18 -0
  22. package/dist/logo/Logo_IHAB_en_black.svg +14 -0
  23. package/dist/logo/Logo_IHAB_en_white.svg +14 -0
  24. package/dist/logo/Logo_IHAB_kr.svg +18 -0
  25. package/dist/logo/Logo_IHAB_kr_black.svg +14 -0
  26. package/dist/logo/Logo_IHAB_kr_white.svg +14 -0
  27. package/dist/logo/Logo_SDS_kr.svg +22 -0
  28. package/dist/logo/Logo_SDS_kr_black.svg +18 -0
  29. package/dist/logo/Logo_SDS_kr_white.svg +18 -0
  30. package/dist/logo/Logo_speechearManager_kr.svg +20 -0
  31. package/dist/logo/Logo_speechearManager_kr_black.svg +21 -0
  32. package/dist/logo/Logo_speechearManager_kr_textWhite.svg +45 -0
  33. package/dist/logo/Logo_speechearManager_kr_white.svg +21 -0
  34. package/dist/logo/Logo_speechear_kr.svg +17 -0
  35. package/dist/logo/Logo_speechear_kr_black.svg +16 -0
  36. package/dist/logo/Logo_speechear_kr_textWhite.svg +42 -0
  37. package/dist/logo/Logo_speechear_kr_white.svg +16 -0
  38. package/dist/logo/Symbol_APEB.svg +34 -0
  39. package/dist/logo/Symbol_APEB_black.svg +15 -0
  40. package/dist/logo/Symbol_APEB_white.svg +15 -0
  41. package/dist/logo/Symbol_HTP.svg +14 -0
  42. package/dist/logo/Symbol_HTP_black.svg +10 -0
  43. package/dist/logo/Symbol_HTP_white.svg +10 -0
  44. package/dist/logo/Symbol_IHAB.svg +14 -0
  45. package/dist/logo/Symbol_IHAB_black.svg +10 -0
  46. package/dist/logo/Symbol_IHAB_white.svg +10 -0
  47. package/dist/logo/Symbol_SDS.svg +14 -0
  48. package/dist/logo/Symbol_SDS_black.svg +10 -0
  49. package/dist/logo/Symbol_SDS_white.svg +10 -0
  50. package/dist/logo/Symbol_speechear.svg +15 -0
  51. package/dist/logo/Symbol_speechear_black.svg +16 -0
  52. package/dist/logo/Symbol_speechear_white.svg +16 -0
  53. package/dist/logo/qr_speechear.svg +1 -0
  54. package/dist/packages/core/src/CoreScope.d.ts +40 -0
  55. package/dist/packages/core/src/CoreScope.js +19 -0
  56. package/dist/packages/core/src/components/Accordion.css +125 -0
  57. package/dist/packages/core/src/components/Accordion.d.ts +19 -0
  58. package/dist/packages/core/src/components/Accordion.js +33 -0
  59. package/dist/packages/core/src/components/ActionCard.css +109 -0
  60. package/dist/packages/core/src/components/ActionCard.d.ts +33 -0
  61. package/dist/packages/core/src/components/ActionCard.js +28 -0
  62. package/dist/packages/core/src/components/Alert.css +76 -0
  63. package/dist/packages/core/src/components/Alert.d.ts +18 -0
  64. package/dist/packages/core/src/components/Alert.js +28 -0
  65. package/dist/packages/core/src/components/AudioMeter.css +80 -0
  66. package/dist/packages/core/src/components/AudioMeter.d.ts +49 -0
  67. package/dist/packages/core/src/components/AudioMeter.js +91 -0
  68. package/dist/packages/core/src/components/Avatar.css +42 -0
  69. package/dist/packages/core/src/components/Avatar.d.ts +21 -0
  70. package/dist/packages/core/src/components/Avatar.js +31 -0
  71. package/dist/packages/core/src/components/Badge.css +166 -0
  72. package/dist/packages/core/src/components/Badge.d.ts +82 -0
  73. package/dist/packages/core/src/components/Badge.js +62 -0
  74. package/dist/packages/core/src/components/BarChart.css +142 -0
  75. package/dist/packages/core/src/components/BarChart.d.ts +16 -0
  76. package/dist/packages/core/src/components/BarChart.js +187 -0
  77. package/dist/packages/core/src/components/Board.css +85 -0
  78. package/dist/packages/core/src/components/Board.d.ts +39 -0
  79. package/dist/packages/core/src/components/Board.js +12 -0
  80. package/dist/packages/core/src/components/BottomNav.css +105 -0
  81. package/dist/packages/core/src/components/BottomNav.d.ts +32 -0
  82. package/dist/packages/core/src/components/BottomNav.js +92 -0
  83. package/dist/packages/core/src/components/Breadcrumb.css +62 -0
  84. package/dist/packages/core/src/components/Breadcrumb.d.ts +13 -0
  85. package/dist/packages/core/src/components/Breadcrumb.js +10 -0
  86. package/dist/packages/core/src/components/BulkBar.css +75 -0
  87. package/dist/packages/core/src/components/BulkBar.d.ts +22 -0
  88. package/dist/packages/core/src/components/BulkBar.js +40 -0
  89. package/dist/packages/core/src/components/Button.css +655 -0
  90. package/dist/packages/core/src/components/Button.d.ts +5 -0
  91. package/dist/packages/core/src/components/Button.js +202 -0
  92. package/dist/packages/core/src/components/Calendar.css +249 -0
  93. package/dist/packages/core/src/components/Calendar.d.ts +23 -0
  94. package/dist/packages/core/src/components/Calendar.js +92 -0
  95. package/dist/packages/core/src/components/ChartSection.css +191 -0
  96. package/dist/packages/core/src/components/ChartSection.d.ts +42 -0
  97. package/dist/packages/core/src/components/ChartSection.js +22 -0
  98. package/dist/packages/core/src/components/Checkbox.css +94 -0
  99. package/dist/packages/core/src/components/Checkbox.d.ts +16 -0
  100. package/dist/packages/core/src/components/Checkbox.js +15 -0
  101. package/dist/packages/core/src/components/ChoiceChips.css +65 -0
  102. package/dist/packages/core/src/components/ChoiceChips.d.ts +15 -0
  103. package/dist/packages/core/src/components/ChoiceChips.js +8 -0
  104. package/dist/packages/core/src/components/CircleBadge.d.ts +31 -0
  105. package/dist/packages/core/src/components/CircleBadge.js +20 -0
  106. package/dist/packages/core/src/components/CodeBox.css +62 -0
  107. package/dist/packages/core/src/components/CodeBox.d.ts +18 -0
  108. package/dist/packages/core/src/components/CodeBox.js +132 -0
  109. package/dist/packages/core/src/components/ColorPicker.css +40 -0
  110. package/dist/packages/core/src/components/ColorPicker.d.ts +17 -0
  111. package/dist/packages/core/src/components/ColorPicker.js +23 -0
  112. package/dist/packages/core/src/components/CompanyMeta.css +33 -0
  113. package/dist/packages/core/src/components/CompanyMeta.d.ts +14 -0
  114. package/dist/packages/core/src/components/CompanyMeta.js +12 -0
  115. package/dist/packages/core/src/components/CountTile.css +47 -0
  116. package/dist/packages/core/src/components/CountTile.d.ts +22 -0
  117. package/dist/packages/core/src/components/CountTile.js +24 -0
  118. package/dist/packages/core/src/components/DatePicker.css +151 -0
  119. package/dist/packages/core/src/components/DatePicker.d.ts +13 -0
  120. package/dist/packages/core/src/components/DatePicker.js +107 -0
  121. package/dist/packages/core/src/components/Dialog.css +98 -0
  122. package/dist/packages/core/src/components/Dialog.d.ts +31 -0
  123. package/dist/packages/core/src/components/Dialog.js +51 -0
  124. package/dist/packages/core/src/components/Divider.css +33 -0
  125. package/dist/packages/core/src/components/Divider.d.ts +13 -0
  126. package/dist/packages/core/src/components/Divider.js +14 -0
  127. package/dist/packages/core/src/components/Dropdown.css +175 -0
  128. package/dist/packages/core/src/components/Dropdown.d.ts +23 -0
  129. package/dist/packages/core/src/components/Dropdown.js +117 -0
  130. package/dist/packages/core/src/components/Effect/EffectPartyPopper.css +25 -0
  131. package/dist/packages/core/src/components/Effect/EffectPartyPopper.d.ts +11 -0
  132. package/dist/packages/core/src/components/Effect/EffectPartyPopper.js +298 -0
  133. package/dist/packages/core/src/components/Effect/EffectPartyPopperHost.d.ts +5 -0
  134. package/dist/packages/core/src/components/Effect/EffectPartyPopperHost.js +13 -0
  135. package/dist/packages/core/src/components/EmptyState.css +23 -0
  136. package/dist/packages/core/src/components/EmptyState.d.ts +19 -0
  137. package/dist/packages/core/src/components/EmptyState.js +7 -0
  138. package/dist/packages/core/src/components/ErrorState.css +2 -0
  139. package/dist/packages/core/src/components/ErrorState.d.ts +18 -0
  140. package/dist/packages/core/src/components/ErrorState.js +11 -0
  141. package/dist/packages/core/src/components/FileUpload.css +114 -0
  142. package/dist/packages/core/src/components/FileUpload.d.ts +25 -0
  143. package/dist/packages/core/src/components/FileUpload.js +111 -0
  144. package/dist/packages/core/src/components/FilterPanel.css +188 -0
  145. package/dist/packages/core/src/components/FilterPanel.d.ts +34 -0
  146. package/dist/packages/core/src/components/FilterPanel.js +82 -0
  147. package/dist/packages/core/src/components/FilterSectionInfo.d.ts +12 -0
  148. package/dist/packages/core/src/components/FilterSectionInfo.js +15 -0
  149. package/dist/packages/core/src/components/Footer.css +186 -0
  150. package/dist/packages/core/src/components/Footer.d.ts +18 -0
  151. package/dist/packages/core/src/components/Footer.js +19 -0
  152. package/dist/packages/core/src/components/Header.css +274 -0
  153. package/dist/packages/core/src/components/Header.d.ts +44 -0
  154. package/dist/packages/core/src/components/Header.js +98 -0
  155. package/dist/packages/core/src/components/HearingDeviceInfo.css +48 -0
  156. package/dist/packages/core/src/components/HearingDeviceInfo.d.ts +22 -0
  157. package/dist/packages/core/src/components/HearingDeviceInfo.js +13 -0
  158. package/dist/packages/core/src/components/Icon.d.ts +14 -0
  159. package/dist/packages/core/src/components/Icon.js +73 -0
  160. package/dist/packages/core/src/components/IconGridMenu.css +141 -0
  161. package/dist/packages/core/src/components/IconGridMenu.d.ts +20 -0
  162. package/dist/packages/core/src/components/IconGridMenu.js +45 -0
  163. package/dist/packages/core/src/components/LandingBottomSticky.css +114 -0
  164. package/dist/packages/core/src/components/LandingBottomSticky.d.ts +26 -0
  165. package/dist/packages/core/src/components/LandingBottomSticky.js +20 -0
  166. package/dist/packages/core/src/components/LandingHeader.css +192 -0
  167. package/dist/packages/core/src/components/LandingHeader.d.ts +67 -0
  168. package/dist/packages/core/src/components/LandingHeader.js +40 -0
  169. package/dist/packages/core/src/components/Loader.css +88 -0
  170. package/dist/packages/core/src/components/Loader.d.ts +14 -0
  171. package/dist/packages/core/src/components/Loader.js +12 -0
  172. package/dist/packages/core/src/components/NoticeBox.css +79 -0
  173. package/dist/packages/core/src/components/NoticeBox.d.ts +21 -0
  174. package/dist/packages/core/src/components/NoticeBox.js +19 -0
  175. package/dist/packages/core/src/components/PageTitle.css +27 -0
  176. package/dist/packages/core/src/components/PageTitle.d.ts +23 -0
  177. package/dist/packages/core/src/components/PageTitle.js +10 -0
  178. package/dist/packages/core/src/components/Pagination.css +11 -0
  179. package/dist/packages/core/src/components/Pagination.d.ts +22 -0
  180. package/dist/packages/core/src/components/Pagination.js +20 -0
  181. package/dist/packages/core/src/components/Panel.css +361 -0
  182. package/dist/packages/core/src/components/Panel.d.ts +166 -0
  183. package/dist/packages/core/src/components/Panel.js +162 -0
  184. package/dist/packages/core/src/components/PassCard/PassCard.css +289 -0
  185. package/dist/packages/core/src/components/PassCard/PassCard.d.ts +56 -0
  186. package/dist/packages/core/src/components/PassCard/PassCard.js +313 -0
  187. package/dist/packages/core/src/components/PassCard/PassCardBg.css +39 -0
  188. package/dist/packages/core/src/components/PassCard/PassCardBg.d.ts +8 -0
  189. package/dist/packages/core/src/components/PassCard/PassCardBg.js +6 -0
  190. package/dist/packages/core/src/components/PassCard/PassCardBgIHAB.css +25 -0
  191. package/dist/packages/core/src/components/PassCard/PassCardBgIHAB.d.ts +7 -0
  192. package/dist/packages/core/src/components/PassCard/PassCardBgIHAB.js +18 -0
  193. package/dist/packages/core/src/components/PassCard/PassCardBgLeftColorGrid.css +45 -0
  194. package/dist/packages/core/src/components/PassCard/PassCardBgLeftColorGrid.d.ts +9 -0
  195. package/dist/packages/core/src/components/PassCard/PassCardBgLeftColorGrid.js +19 -0
  196. package/dist/packages/core/src/components/PassCard/PassCardBgSoundLine.css +19 -0
  197. package/dist/packages/core/src/components/PassCard/PassCardBgSoundLine.d.ts +9 -0
  198. package/dist/packages/core/src/components/PassCard/PassCardBgSoundLine.js +23 -0
  199. package/dist/packages/core/src/components/PassCard/PassCardBgSoundLineV1.css +15 -0
  200. package/dist/packages/core/src/components/PassCard/PassCardBgSoundLineV1.d.ts +9 -0
  201. package/dist/packages/core/src/components/PassCard/PassCardBgSoundLineV1.js +24 -0
  202. package/dist/packages/core/src/components/PassCard/PassCardBgSoundMove.css +16 -0
  203. package/dist/packages/core/src/components/PassCard/PassCardBgSoundMove.d.ts +9 -0
  204. package/dist/packages/core/src/components/PassCard/PassCardBgSoundMove.js +31 -0
  205. package/dist/packages/core/src/components/PassCard/PassCardBgSoundMoveV1.css +16 -0
  206. package/dist/packages/core/src/components/PassCard/PassCardBgSoundMoveV1.d.ts +9 -0
  207. package/dist/packages/core/src/components/PassCard/PassCardBgSoundMoveV1.js +32 -0
  208. package/dist/packages/core/src/components/PassCard/PassCardBgTalk.css +33 -0
  209. package/dist/packages/core/src/components/PassCard/PassCardBgTalk.d.ts +9 -0
  210. package/dist/packages/core/src/components/PassCard/PassCardBgTalk.js +18 -0
  211. package/dist/packages/core/src/components/PassCard/PassCardBgTalkV1.css +36 -0
  212. package/dist/packages/core/src/components/PassCard/PassCardBgTalkV1.d.ts +13 -0
  213. package/dist/packages/core/src/components/PassCard/PassCardBgTalkV1.js +22 -0
  214. package/dist/packages/core/src/components/PassCard/PassCardBgTheme.d.ts +38 -0
  215. package/dist/packages/core/src/components/PassCard/PassCardBgTheme.js +34 -0
  216. package/dist/packages/core/src/components/PassCard/PassCardBgTwoCircle.css +36 -0
  217. package/dist/packages/core/src/components/PassCard/PassCardBgTwoCircle.d.ts +9 -0
  218. package/dist/packages/core/src/components/PassCard/PassCardBgTwoCircle.js +18 -0
  219. package/dist/packages/core/src/components/PassCard/PassCard_Back.css +76 -0
  220. package/dist/packages/core/src/components/PassCard/PassCard_Back.d.ts +13 -0
  221. package/dist/packages/core/src/components/PassCard/PassCard_Back.js +20 -0
  222. package/dist/packages/core/src/components/PassCard/ihabOutlinePath.d.ts +12 -0
  223. package/dist/packages/core/src/components/PassCard/ihabOutlinePath.js +19 -0
  224. package/dist/packages/core/src/components/PassCard/passCardProduct.d.ts +48 -0
  225. package/dist/packages/core/src/components/PassCard/passCardProduct.js +56 -0
  226. package/dist/packages/core/src/components/PaymentPlan.css +318 -0
  227. package/dist/packages/core/src/components/PaymentPlan.d.ts +57 -0
  228. package/dist/packages/core/src/components/PaymentPlan.js +126 -0
  229. package/dist/packages/core/src/components/PersonCard.css +72 -0
  230. package/dist/packages/core/src/components/PersonCard.d.ts +27 -0
  231. package/dist/packages/core/src/components/PersonCard.js +11 -0
  232. package/dist/packages/core/src/components/Popup/ConfirmPopup.d.ts +58 -0
  233. package/dist/packages/core/src/components/Popup/ConfirmPopup.js +59 -0
  234. package/dist/packages/core/src/components/Popup/CouponInputPopup.css +28 -0
  235. package/dist/packages/core/src/components/Popup/CouponInputPopup.d.ts +8 -0
  236. package/dist/packages/core/src/components/Popup/CouponInputPopup.js +45 -0
  237. package/dist/packages/core/src/components/Popup/DeviceListPopup.css +78 -0
  238. package/dist/packages/core/src/components/Popup/DeviceListPopup.d.ts +28 -0
  239. package/dist/packages/core/src/components/Popup/DeviceListPopup.js +31 -0
  240. package/dist/packages/core/src/components/Popup/DeviceSideTable.d.ts +41 -0
  241. package/dist/packages/core/src/components/Popup/DeviceSideTable.js +92 -0
  242. package/dist/packages/core/src/components/Popup/ListPopup.css +44 -0
  243. package/dist/packages/core/src/components/Popup/ListPopup.d.ts +75 -0
  244. package/dist/packages/core/src/components/Popup/ListPopup.js +85 -0
  245. package/dist/packages/core/src/components/Popup/LoadTablePopup.css +248 -0
  246. package/dist/packages/core/src/components/Popup/LoadTablePopup.d.ts +12 -0
  247. package/dist/packages/core/src/components/Popup/LoadTablePopup.js +86 -0
  248. package/dist/packages/core/src/components/Popup/Popup.css +136 -0
  249. package/dist/packages/core/src/components/Popup/Popup.d.ts +77 -0
  250. package/dist/packages/core/src/components/Popup/Popup.js +135 -0
  251. package/dist/packages/core/src/components/Popup/SaveTablePopup.css +32 -0
  252. package/dist/packages/core/src/components/Popup/SaveTablePopup.d.ts +25 -0
  253. package/dist/packages/core/src/components/Popup/SaveTablePopup.js +55 -0
  254. package/dist/packages/core/src/components/Popup/TrainingResultPopup.css +277 -0
  255. package/dist/packages/core/src/components/Popup/TrainingResultPopup.d.ts +14 -0
  256. package/dist/packages/core/src/components/Popup/TrainingResultPopup.js +104 -0
  257. package/dist/packages/core/src/components/Popup/WordDataUpdatePopup.css +119 -0
  258. package/dist/packages/core/src/components/Popup/WordDataUpdatePopup.d.ts +12 -0
  259. package/dist/packages/core/src/components/Popup/WordDataUpdatePopup.js +73 -0
  260. package/dist/packages/core/src/components/Popup/customerDetailUtils.d.ts +19 -0
  261. package/dist/packages/core/src/components/Popup/customerDetailUtils.js +45 -0
  262. package/dist/packages/core/src/components/ProgressBar.css +114 -0
  263. package/dist/packages/core/src/components/ProgressBar.d.ts +65 -0
  264. package/dist/packages/core/src/components/ProgressBar.js +51 -0
  265. package/dist/packages/core/src/components/ProgressIndicator.css +41 -0
  266. package/dist/packages/core/src/components/ProgressIndicator.d.ts +18 -0
  267. package/dist/packages/core/src/components/ProgressIndicator.js +45 -0
  268. package/dist/packages/core/src/components/PromoBanner.css +54 -0
  269. package/dist/packages/core/src/components/PromoBanner.d.ts +30 -0
  270. package/dist/packages/core/src/components/PromoBanner.js +54 -0
  271. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBg.css +8 -0
  272. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDark.css +3 -0
  273. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDark.d.ts +11 -0
  274. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDark.js +20 -0
  275. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDeep.css +3 -0
  276. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDeep.d.ts +10 -0
  277. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDeep.js +19 -0
  278. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDiagonal.css +10 -0
  279. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDiagonal.d.ts +10 -0
  280. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDiagonal.js +19 -0
  281. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDots.css +5 -0
  282. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDots.d.ts +10 -0
  283. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDots.js +19 -0
  284. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgInstagram.css +3 -0
  285. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgInstagram.d.ts +11 -0
  286. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgInstagram.js +20 -0
  287. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgMain.css +3 -0
  288. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgMain.d.ts +12 -0
  289. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgMain.js +21 -0
  290. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgNaver.css +3 -0
  291. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgNaver.d.ts +11 -0
  292. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgNaver.js +20 -0
  293. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgOutline.css +16 -0
  294. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgOutline.d.ts +11 -0
  295. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgOutline.js +20 -0
  296. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgRadial.css +3 -0
  297. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgRadial.d.ts +10 -0
  298. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgRadial.js +19 -0
  299. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSoft.css +3 -0
  300. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSoft.d.ts +12 -0
  301. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSoft.js +21 -0
  302. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSoftSub.css +3 -0
  303. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSoftSub.d.ts +10 -0
  304. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSoftSub.js +19 -0
  305. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSub.css +3 -0
  306. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSub.d.ts +10 -0
  307. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSub.js +19 -0
  308. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSuccess.css +3 -0
  309. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSuccess.d.ts +11 -0
  310. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSuccess.js +20 -0
  311. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgTheme.d.ts +32 -0
  312. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgTheme.js +29 -0
  313. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgWarm.css +3 -0
  314. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgWarm.d.ts +11 -0
  315. package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgWarm.js +20 -0
  316. package/dist/packages/core/src/components/PromoBannerBg/promoBannerBg.d.ts +21 -0
  317. package/dist/packages/core/src/components/PromoBannerBg/promoBannerBg.js +49 -0
  318. package/dist/packages/core/src/components/PublicationCard.css +70 -0
  319. package/dist/packages/core/src/components/PublicationCard.d.ts +31 -0
  320. package/dist/packages/core/src/components/PublicationCard.js +11 -0
  321. package/dist/packages/core/src/components/Radio.css +64 -0
  322. package/dist/packages/core/src/components/Radio.d.ts +13 -0
  323. package/dist/packages/core/src/components/Radio.js +9 -0
  324. package/dist/packages/core/src/components/RadioGroup.css +14 -0
  325. package/dist/packages/core/src/components/RadioGroup.d.ts +21 -0
  326. package/dist/packages/core/src/components/RadioGroup.js +14 -0
  327. package/dist/packages/core/src/components/Rating.css +69 -0
  328. package/dist/packages/core/src/components/Rating.d.ts +21 -0
  329. package/dist/packages/core/src/components/Rating.js +51 -0
  330. package/dist/packages/core/src/components/RingChart.css +50 -0
  331. package/dist/packages/core/src/components/RingChart.d.ts +68 -0
  332. package/dist/packages/core/src/components/RingChart.js +57 -0
  333. package/dist/packages/core/src/components/SearchSummary.css +62 -0
  334. package/dist/packages/core/src/components/SearchSummary.d.ts +32 -0
  335. package/dist/packages/core/src/components/SearchSummary.js +48 -0
  336. package/dist/packages/core/src/components/Section.css +73 -0
  337. package/dist/packages/core/src/components/Section.d.ts +16 -0
  338. package/dist/packages/core/src/components/Section.js +15 -0
  339. package/dist/packages/core/src/components/SectionHeader.css +87 -0
  340. package/dist/packages/core/src/components/SectionHeader.d.ts +31 -0
  341. package/dist/packages/core/src/components/SectionHeader.js +16 -0
  342. package/dist/packages/core/src/components/SegmentedControl.css +67 -0
  343. package/dist/packages/core/src/components/SegmentedControl.d.ts +26 -0
  344. package/dist/packages/core/src/components/SegmentedControl.js +13 -0
  345. package/dist/packages/core/src/components/ShortcutBadge.css +68 -0
  346. package/dist/packages/core/src/components/ShortcutBadge.d.ts +31 -0
  347. package/dist/packages/core/src/components/ShortcutBadge.js +23 -0
  348. package/dist/packages/core/src/components/SideNav.css +281 -0
  349. package/dist/packages/core/src/components/SideNav.d.ts +32 -0
  350. package/dist/packages/core/src/components/SideNav.js +92 -0
  351. package/dist/packages/core/src/components/Slider.css +184 -0
  352. package/dist/packages/core/src/components/Slider.d.ts +67 -0
  353. package/dist/packages/core/src/components/Slider.js +97 -0
  354. package/dist/packages/core/src/components/SoundCompass.css +138 -0
  355. package/dist/packages/core/src/components/SoundCompass.d.ts +42 -0
  356. package/dist/packages/core/src/components/SoundCompass.js +136 -0
  357. package/dist/packages/core/src/components/SplashLogo.css +32 -0
  358. package/dist/packages/core/src/components/SplashLogo.d.ts +35 -0
  359. package/dist/packages/core/src/components/SplashLogo.js +32 -0
  360. package/dist/packages/core/src/components/StatChart.css +83 -0
  361. package/dist/packages/core/src/components/StatChart.d.ts +26 -0
  362. package/dist/packages/core/src/components/StatChart.js +41 -0
  363. package/dist/packages/core/src/components/Table.css +158 -0
  364. package/dist/packages/core/src/components/Table.d.ts +94 -0
  365. package/dist/packages/core/src/components/Table.js +200 -0
  366. package/dist/packages/core/src/components/TableCell.css +12 -0
  367. package/dist/packages/core/src/components/TableField.css +60 -0
  368. package/dist/packages/core/src/components/Tabs.css +55 -0
  369. package/dist/packages/core/src/components/Tabs.d.ts +30 -0
  370. package/dist/packages/core/src/components/Tabs.js +55 -0
  371. package/dist/packages/core/src/components/TextField.css +266 -0
  372. package/dist/packages/core/src/components/TextField.d.ts +86 -0
  373. package/dist/packages/core/src/components/TextField.js +149 -0
  374. package/dist/packages/core/src/components/Timeline.css +62 -0
  375. package/dist/packages/core/src/components/Timeline.d.ts +26 -0
  376. package/dist/packages/core/src/components/Timeline.js +11 -0
  377. package/dist/packages/core/src/components/Toast.css +76 -0
  378. package/dist/packages/core/src/components/Toast.d.ts +10 -0
  379. package/dist/packages/core/src/components/Toast.js +19 -0
  380. package/dist/packages/core/src/components/Toggle.css +61 -0
  381. package/dist/packages/core/src/components/Toggle.d.ts +18 -0
  382. package/dist/packages/core/src/components/Toggle.js +7 -0
  383. package/dist/packages/core/src/components/Toolbar.css +86 -0
  384. package/dist/packages/core/src/components/Toolbar.d.ts +52 -0
  385. package/dist/packages/core/src/components/Toolbar.js +20 -0
  386. package/dist/packages/core/src/components/Tooltip/DebugTooltip.css +27 -0
  387. package/dist/packages/core/src/components/Tooltip/DebugTooltip.d.ts +12 -0
  388. package/dist/packages/core/src/components/Tooltip/DebugTooltip.js +79 -0
  389. package/dist/packages/core/src/components/Tooltip/DescriptionTooltip.css +50 -0
  390. package/dist/packages/core/src/components/Tooltip/DescriptionTooltip.d.ts +16 -0
  391. package/dist/packages/core/src/components/Tooltip/DescriptionTooltip.js +11 -0
  392. package/dist/packages/core/src/components/Tooltip/InfoTooltip.css +39 -0
  393. package/dist/packages/core/src/components/Tooltip/InfoTooltip.d.ts +13 -0
  394. package/dist/packages/core/src/components/Tooltip/InfoTooltip.js +10 -0
  395. package/dist/packages/core/src/components/Tooltip/MenuTooltip.css +93 -0
  396. package/dist/packages/core/src/components/Tooltip/MenuTooltip.d.ts +30 -0
  397. package/dist/packages/core/src/components/Tooltip/MenuTooltip.js +92 -0
  398. package/dist/packages/core/src/components/Tooltip/TextBoxTooltip.css +95 -0
  399. package/dist/packages/core/src/components/Tooltip/TextBoxTooltip.d.ts +13 -0
  400. package/dist/packages/core/src/components/Tooltip/TextBoxTooltip.js +55 -0
  401. package/dist/packages/core/src/components/Tooltip/Tooltip.css +120 -0
  402. package/dist/packages/core/src/components/Tooltip/Tooltip.d.ts +25 -0
  403. package/dist/packages/core/src/components/Tooltip/Tooltip.js +296 -0
  404. package/dist/packages/core/src/components/Tooltip/TrainingTooltip.css +67 -0
  405. package/dist/packages/core/src/components/Tooltip/TrainingTooltip.d.ts +16 -0
  406. package/dist/packages/core/src/components/Tooltip/TrainingTooltip.js +40 -0
  407. package/dist/packages/core/src/components/Tooltip/WordImageTooltip.css +61 -0
  408. package/dist/packages/core/src/components/Tooltip/WordImageTooltip.d.ts +12 -0
  409. package/dist/packages/core/src/components/Tooltip/WordImageTooltip.js +39 -0
  410. package/dist/packages/core/src/components/Tooltip/tooltipConstants.d.ts +44 -0
  411. package/dist/packages/core/src/components/Tooltip/tooltipConstants.js +38 -0
  412. package/dist/packages/core/src/components/TopBanner.css +100 -0
  413. package/dist/packages/core/src/components/TopBanner.d.ts +25 -0
  414. package/dist/packages/core/src/components/TopBanner.js +36 -0
  415. package/dist/packages/core/src/components/Training/AudioPlayerWaveForm.d.ts +17 -0
  416. package/dist/packages/core/src/components/Training/AudioPlayerWaveForm.js +237 -0
  417. package/dist/packages/core/src/components/Training/CategoryIcon.css +85 -0
  418. package/dist/packages/core/src/components/Training/CategoryIcon.d.ts +16 -0
  419. package/dist/packages/core/src/components/Training/CategoryIcon.js +79 -0
  420. package/dist/packages/core/src/components/Training/NoisePlayerContext.d.ts +43 -0
  421. package/dist/packages/core/src/components/Training/NoisePlayerContext.js +26 -0
  422. package/dist/packages/core/src/components/Training/NoiseSettingsTooltip.css +52 -0
  423. package/dist/packages/core/src/components/Training/NoiseSettingsTooltip.d.ts +13 -0
  424. package/dist/packages/core/src/components/Training/NoiseSettingsTooltip.js +81 -0
  425. package/dist/packages/core/src/components/Training/TrainingBlock.css +33 -0
  426. package/dist/packages/core/src/components/Training/TrainingBlock.d.ts +45 -0
  427. package/dist/packages/core/src/components/Training/TrainingBlock.js +44 -0
  428. package/dist/packages/core/src/components/Training/TrainingBlockButton.css +337 -0
  429. package/dist/packages/core/src/components/Training/TrainingBlockButton.d.ts +5 -0
  430. package/dist/packages/core/src/components/Training/TrainingBlockButton.js +193 -0
  431. package/dist/packages/core/src/components/Training/TrainingCard.css +178 -0
  432. package/dist/packages/core/src/components/Training/TrainingCard.d.ts +24 -0
  433. package/dist/packages/core/src/components/Training/TrainingCard.js +29 -0
  434. package/dist/packages/core/src/components/Training/TrainingCardGroup.css +73 -0
  435. package/dist/packages/core/src/components/Training/TrainingCardGroup.d.ts +41 -0
  436. package/dist/packages/core/src/components/Training/TrainingCardGroup.js +16 -0
  437. package/dist/packages/core/src/components/Training/TrainingPagePopup.css +210 -0
  438. package/dist/packages/core/src/components/Training/TrainingPagePopup.d.ts +91 -0
  439. package/dist/packages/core/src/components/Training/TrainingPagePopup.js +799 -0
  440. package/dist/packages/core/src/components/Training/TrainingPagePopupBottom.css +45 -0
  441. package/dist/packages/core/src/components/Training/TrainingPagePopupBottom.d.ts +14 -0
  442. package/dist/packages/core/src/components/Training/TrainingPagePopupBottom.js +60 -0
  443. package/dist/packages/core/src/components/Training/TrainingPagePopupContext.d.ts +13 -0
  444. package/dist/packages/core/src/components/Training/TrainingPagePopupContext.js +12 -0
  445. package/dist/packages/core/src/components/Training/TrainingPagePopupTitle.css +77 -0
  446. package/dist/packages/core/src/components/Training/TrainingPagePopupTitle.d.ts +21 -0
  447. package/dist/packages/core/src/components/Training/TrainingPagePopupTitle.js +41 -0
  448. package/dist/packages/core/src/components/Training/TrainingStep.css +236 -0
  449. package/dist/packages/core/src/components/Training/TrainingStep.d.ts +15 -0
  450. package/dist/packages/core/src/components/Training/TrainingStep.js +89 -0
  451. package/dist/packages/core/src/components/Training/TrainingStepAudioPlayer.css +320 -0
  452. package/dist/packages/core/src/components/Training/TrainingStepAudioPlayer.d.ts +5 -0
  453. package/dist/packages/core/src/components/Training/TrainingStepAudioPlayer.js +971 -0
  454. package/dist/packages/core/src/components/Training/TrainingStepBullet.css +148 -0
  455. package/dist/packages/core/src/components/Training/TrainingStepBullet.d.ts +6 -0
  456. package/dist/packages/core/src/components/Training/TrainingStepBullet.js +11 -0
  457. package/dist/packages/core/src/components/Training/TrainingStepCard.css +0 -0
  458. package/dist/packages/core/src/components/Training/TrainingStepCard.d.ts +36 -0
  459. package/dist/packages/core/src/components/Training/TrainingStepCard.js +110 -0
  460. package/dist/packages/core/src/components/Training/TrainingStepCardOrder.d.ts +15 -0
  461. package/dist/packages/core/src/components/Training/TrainingStepCardOrder.js +58 -0
  462. package/dist/packages/core/src/components/Training/TrainingStepComponents.d.ts +35 -0
  463. package/dist/packages/core/src/components/Training/TrainingStepComponents.js +60 -0
  464. package/dist/packages/core/src/components/Training/TrainingStepConfirm.d.ts +24 -0
  465. package/dist/packages/core/src/components/Training/TrainingStepConfirm.js +117 -0
  466. package/dist/packages/core/src/components/Training/TrainingStepConfirmWithText.d.ts +16 -0
  467. package/dist/packages/core/src/components/Training/TrainingStepConfirmWithText.js +60 -0
  468. package/dist/packages/core/src/components/Training/TrainingStepListen.d.ts +27 -0
  469. package/dist/packages/core/src/components/Training/TrainingStepListen.js +13 -0
  470. package/dist/packages/core/src/components/Training/TrainingStepOrderList.css +221 -0
  471. package/dist/packages/core/src/components/Training/TrainingStepOrderList.d.ts +7 -0
  472. package/dist/packages/core/src/components/Training/TrainingStepOrderList.js +445 -0
  473. package/dist/packages/core/src/components/Training/TrainingStepTextBox.css +111 -0
  474. package/dist/packages/core/src/components/Training/TrainingStepTextBox.d.ts +8 -0
  475. package/dist/packages/core/src/components/Training/TrainingStepTextBox.js +74 -0
  476. package/dist/packages/core/src/components/Training/TrainingStepTitle.css +89 -0
  477. package/dist/packages/core/src/components/Training/TrainingStepTitle.d.ts +21 -0
  478. package/dist/packages/core/src/components/Training/TrainingStepTitle.js +91 -0
  479. package/dist/packages/core/src/components/Training/TrainingWordCard.css +266 -0
  480. package/dist/packages/core/src/components/Training/TrainingWordCard.d.ts +43 -0
  481. package/dist/packages/core/src/components/Training/TrainingWordCard.js +229 -0
  482. package/dist/packages/core/src/components/Training/WordTablePopup.css +56 -0
  483. package/dist/packages/core/src/components/Training/WordTablePopup.d.ts +61 -0
  484. package/dist/packages/core/src/components/Training/WordTablePopup.js +105 -0
  485. package/dist/packages/core/src/components/Training/audioPlaybackRules.d.ts +95 -0
  486. package/dist/packages/core/src/components/Training/audioPlaybackRules.js +125 -0
  487. package/dist/packages/core/src/components/Training/audioWaits.d.ts +27 -0
  488. package/dist/packages/core/src/components/Training/audioWaits.js +64 -0
  489. package/dist/packages/core/src/components/Training/currentSound.d.ts +26 -0
  490. package/dist/packages/core/src/components/Training/currentSound.js +46 -0
  491. package/dist/packages/core/src/components/Training/pagePopupTiming.d.ts +17 -0
  492. package/dist/packages/core/src/components/Training/pagePopupTiming.js +17 -0
  493. package/dist/packages/core/src/components/Training/trainingBlockButtonTypes.d.ts +79 -0
  494. package/dist/packages/core/src/components/Training/trainingBlockButtonTypes.js +27 -0
  495. package/dist/packages/core/src/components/Training/trainingMissStats.d.ts +148 -0
  496. package/dist/packages/core/src/components/Training/trainingMissStats.js +163 -0
  497. package/dist/packages/core/src/components/Training/trainingPopupUtils.d.ts +108 -0
  498. package/dist/packages/core/src/components/Training/trainingPopupUtils.js +226 -0
  499. package/dist/packages/core/src/components/Training/trainingScenario.d.ts +42 -0
  500. package/dist/packages/core/src/components/Training/trainingScenario.js +25 -0
  501. package/dist/packages/core/src/components/Training/trainingStepAudioPlayerTypes.d.ts +37 -0
  502. package/dist/packages/core/src/components/Training/trainingStepAudioPlayerTypes.js +20 -0
  503. package/dist/packages/core/src/components/Training/trainingStepOrderListTypes.d.ts +34 -0
  504. package/dist/packages/core/src/components/Training/trainingStepOrderListTypes.js +5 -0
  505. package/dist/packages/core/src/components/Training/useAnchorRect.d.ts +26 -0
  506. package/dist/packages/core/src/components/Training/useAnchorRect.js +52 -0
  507. package/dist/packages/core/src/components/Training/useAudioPreview.d.ts +11 -0
  508. package/dist/packages/core/src/components/Training/useAudioPreview.js +178 -0
  509. package/dist/packages/core/src/components/Training/useNoiseFade.d.ts +24 -0
  510. package/dist/packages/core/src/components/Training/useNoiseFade.js +303 -0
  511. package/dist/packages/core/src/components/Training/useObjectUrls.d.ts +25 -0
  512. package/dist/packages/core/src/components/Training/useObjectUrls.js +56 -0
  513. package/dist/packages/core/src/components/Training/useProgressTicker.d.ts +33 -0
  514. package/dist/packages/core/src/components/Training/useProgressTicker.js +74 -0
  515. package/dist/packages/core/src/components/Training/useTTSPlayback.d.ts +30 -0
  516. package/dist/packages/core/src/components/Training/useTTSPlayback.js +172 -0
  517. package/dist/packages/core/src/components/Training/useWaveReady.d.ts +36 -0
  518. package/dist/packages/core/src/components/Training/useWaveReady.js +65 -0
  519. package/dist/packages/core/src/components/UpdateAlert.css +116 -0
  520. package/dist/packages/core/src/components/UpdateAlert.d.ts +23 -0
  521. package/dist/packages/core/src/components/UpdateAlert.js +25 -0
  522. package/dist/packages/core/src/components/Word/ContrastFilterPanel.d.ts +25 -0
  523. package/dist/packages/core/src/components/Word/ContrastFilterPanel.js +69 -0
  524. package/dist/packages/core/src/components/Word/PhonemeFilterPanel.d.ts +24 -0
  525. package/dist/packages/core/src/components/Word/PhonemeFilterPanel.js +15 -0
  526. package/dist/packages/core/src/components/Word/PhonemeSelectBlock.css +272 -0
  527. package/dist/packages/core/src/components/Word/PhonemeSelectBlock.d.ts +45 -0
  528. package/dist/packages/core/src/components/Word/PhonemeSelectBlock.js +71 -0
  529. package/dist/packages/core/src/components/Word/TableFilterPanel.d.ts +56 -0
  530. package/dist/packages/core/src/components/Word/TableFilterPanel.js +42 -0
  531. package/dist/packages/core/src/components/Word/WordSearchFilterPanel.d.ts +23 -0
  532. package/dist/packages/core/src/components/Word/WordSearchFilterPanel.js +14 -0
  533. package/dist/packages/core/src/components/Word/WordSearchResultBlock.css +130 -0
  534. package/dist/packages/core/src/components/Word/WordSearchResultBlock.d.ts +47 -0
  535. package/dist/packages/core/src/components/Word/WordSearchResultBlock.js +141 -0
  536. package/dist/packages/core/src/components/Word/WordTableBlock.css +85 -0
  537. package/dist/packages/core/src/components/Word/WordTableBlock.d.ts +5 -0
  538. package/dist/packages/core/src/components/Word/WordTableBlock.js +297 -0
  539. package/dist/packages/core/src/components/Word/WordTableButton.css +185 -0
  540. package/dist/packages/core/src/components/Word/WordTableButton.d.ts +48 -0
  541. package/dist/packages/core/src/components/Word/WordTableButton.js +28 -0
  542. package/dist/packages/core/src/components/Word/WordTableThumbnail.css +56 -0
  543. package/dist/packages/core/src/components/Word/WordTableThumbnail.d.ts +10 -0
  544. package/dist/packages/core/src/components/Word/WordTableThumbnail.js +21 -0
  545. package/dist/packages/core/src/components/Word/generatedDraft.d.ts +39 -0
  546. package/dist/packages/core/src/components/Word/generatedDraft.js +69 -0
  547. package/dist/packages/core/src/components/Word/phonemeSelectBlockUtils.d.ts +14 -0
  548. package/dist/packages/core/src/components/Word/phonemeSelectBlockUtils.js +10 -0
  549. package/dist/packages/core/src/components/Word/useWordTableDisplaySettings.d.ts +35 -0
  550. package/dist/packages/core/src/components/Word/useWordTableDisplaySettings.js +82 -0
  551. package/dist/packages/core/src/components/Word/useWordTablePrint.d.ts +31 -0
  552. package/dist/packages/core/src/components/Word/useWordTablePrint.js +43 -0
  553. package/dist/packages/core/src/components/Word/wordScoreStats.d.ts +77 -0
  554. package/dist/packages/core/src/components/Word/wordScoreStats.js +100 -0
  555. package/dist/packages/core/src/components/Word/wordTableBlockTypes.d.ts +85 -0
  556. package/dist/packages/core/src/components/Word/wordTableBlockTypes.js +3 -0
  557. package/dist/packages/core/src/components/Word/wordTablePrint.d.ts +14 -0
  558. package/dist/packages/core/src/components/Word/wordTablePrint.js +210 -0
  559. package/dist/packages/core/src/components/Word/wordTableRecommend.d.ts +67 -0
  560. package/dist/packages/core/src/components/Word/wordTableRecommend.js +91 -0
  561. package/dist/packages/core/src/components/Word/wordTableReview.d.ts +49 -0
  562. package/dist/packages/core/src/components/Word/wordTableReview.js +112 -0
  563. package/dist/packages/core/src/components/Word/wordTableScoring.d.ts +100 -0
  564. package/dist/packages/core/src/components/Word/wordTableScoring.js +126 -0
  565. package/dist/packages/core/src/components/Word/wordTableSettings.d.ts +56 -0
  566. package/dist/packages/core/src/components/Word/wordTableSettings.js +140 -0
  567. package/dist/packages/core/src/components/WordTable.css +424 -0
  568. package/dist/packages/core/src/components/WordTable.d.ts +75 -0
  569. package/dist/packages/core/src/components/WordTable.js +184 -0
  570. package/dist/packages/core/src/components/barChartData.d.ts +48 -0
  571. package/dist/packages/core/src/components/barChartData.js +111 -0
  572. package/dist/packages/core/src/components/barChartTypes.d.ts +82 -0
  573. package/dist/packages/core/src/components/barChartTypes.js +22 -0
  574. package/dist/packages/core/src/components/buttonTypes.d.ts +102 -0
  575. package/dist/packages/core/src/components/buttonTypes.js +1 -0
  576. package/dist/packages/core/src/components/tableTrackList.d.ts +9 -0
  577. package/dist/packages/core/src/components/tableTrackList.js +32 -0
  578. package/dist/packages/core/src/components/useAnchoredMenu.d.ts +28 -0
  579. package/dist/packages/core/src/components/useAnchoredMenu.js +72 -0
  580. package/dist/packages/core/src/components/useBarChartControl.d.ts +8 -0
  581. package/dist/packages/core/src/components/useBarChartControl.js +76 -0
  582. package/dist/packages/core/src/components/useCalendarMonth.d.ts +12 -0
  583. package/dist/packages/core/src/components/useCalendarMonth.js +50 -0
  584. package/dist/packages/core/src/components/useComboboxSuggestions.d.ts +22 -0
  585. package/dist/packages/core/src/components/useComboboxSuggestions.js +60 -0
  586. package/dist/packages/core/src/components/useFitScale.d.ts +16 -0
  587. package/dist/packages/core/src/components/useFitScale.js +43 -0
  588. package/dist/packages/core/src/components/useSoundCompassExam.d.ts +54 -0
  589. package/dist/packages/core/src/components/useSoundCompassExam.js +128 -0
  590. package/dist/packages/core/src/components/useToastLifecycle.d.ts +16 -0
  591. package/dist/packages/core/src/components/useToastLifecycle.js +140 -0
  592. package/dist/packages/core/src/components/wordTableLayout.d.ts +76 -0
  593. package/dist/packages/core/src/components/wordTableLayout.js +162 -0
  594. package/dist/packages/core/src/components.d.ts +314 -0
  595. package/dist/packages/core/src/components.js +232 -0
  596. package/dist/packages/core/src/context/I18nContext.d.ts +11 -0
  597. package/dist/packages/core/src/context/I18nContext.js +20 -0
  598. package/dist/packages/core/src/context/I18nProvider.d.ts +9 -0
  599. package/dist/packages/core/src/context/I18nProvider.js +15 -0
  600. package/dist/packages/core/src/context/WordDataContext.d.ts +25 -0
  601. package/dist/packages/core/src/context/WordDataContext.js +6 -0
  602. package/dist/packages/core/src/context/WordDataProvider.d.ts +5 -0
  603. package/dist/packages/core/src/context/WordDataProvider.js +5 -0
  604. package/dist/packages/core/src/hooks/bodyScrollLock.d.ts +5 -0
  605. package/dist/packages/core/src/hooks/bodyScrollLock.js +62 -0
  606. package/dist/packages/core/src/hooks/escStack.d.ts +2 -0
  607. package/dist/packages/core/src/hooks/escStack.js +38 -0
  608. package/dist/packages/core/src/hooks/useBackgroundUrl.d.ts +2 -0
  609. package/dist/packages/core/src/hooks/useBackgroundUrl.js +13 -0
  610. package/dist/packages/core/src/hooks/useCacheManagement.d.ts +34 -0
  611. package/dist/packages/core/src/hooks/useCacheManagement.js +107 -0
  612. package/dist/packages/core/src/hooks/useDailyTrainingSelection.d.ts +17 -0
  613. package/dist/packages/core/src/hooks/useDailyTrainingSelection.js +87 -0
  614. package/dist/packages/core/src/hooks/useDeviceManagement.d.ts +37 -0
  615. package/dist/packages/core/src/hooks/useDeviceManagement.js +40 -0
  616. package/dist/packages/core/src/hooks/useDocumentTitle.d.ts +22 -0
  617. package/dist/packages/core/src/hooks/useDocumentTitle.js +49 -0
  618. package/dist/packages/core/src/hooks/useEditableList.d.ts +20 -0
  619. package/dist/packages/core/src/hooks/useEditableList.js +73 -0
  620. package/dist/packages/core/src/hooks/useEscToClose.d.ts +19 -0
  621. package/dist/packages/core/src/hooks/useEscToClose.js +30 -0
  622. package/dist/packages/core/src/hooks/useFocusTrap.d.ts +19 -0
  623. package/dist/packages/core/src/hooks/useFocusTrap.js +50 -0
  624. package/dist/packages/core/src/hooks/useFontScale.d.ts +20 -0
  625. package/dist/packages/core/src/hooks/useFontScale.js +51 -0
  626. package/dist/packages/core/src/hooks/useHoverAnchor.d.ts +33 -0
  627. package/dist/packages/core/src/hooks/useHoverAnchor.js +49 -0
  628. package/dist/packages/core/src/hooks/useIcon.d.ts +7 -0
  629. package/dist/packages/core/src/hooks/useIcon.js +124 -0
  630. package/dist/packages/core/src/hooks/useLatestRef.d.ts +12 -0
  631. package/dist/packages/core/src/hooks/useLatestRef.js +17 -0
  632. package/dist/packages/core/src/hooks/useLucideIcon.d.ts +15 -0
  633. package/dist/packages/core/src/hooks/useLucideIcon.js +71 -0
  634. package/dist/packages/core/src/hooks/useMediaQuery.d.ts +17 -0
  635. package/dist/packages/core/src/hooks/useMediaQuery.js +45 -0
  636. package/dist/packages/core/src/hooks/usePagedList.d.ts +23 -0
  637. package/dist/packages/core/src/hooks/usePagedList.js +26 -0
  638. package/dist/packages/core/src/hooks/useParentBgTheme.d.ts +8 -0
  639. package/dist/packages/core/src/hooks/useParentBgTheme.js +18 -0
  640. package/dist/packages/core/src/hooks/usePasswordChange.d.ts +28 -0
  641. package/dist/packages/core/src/hooks/usePasswordChange.js +54 -0
  642. package/dist/packages/core/src/hooks/useRelativeDay.d.ts +12 -0
  643. package/dist/packages/core/src/hooks/useRelativeDay.js +30 -0
  644. package/dist/packages/core/src/hooks/useTablePaging.d.ts +46 -0
  645. package/dist/packages/core/src/hooks/useTablePaging.js +63 -0
  646. package/dist/packages/core/src/hooks/useToastState.d.ts +15 -0
  647. package/dist/packages/core/src/hooks/useToastState.js +29 -0
  648. package/dist/packages/core/src/hooks/useTrainingSessionLog.d.ts +7 -0
  649. package/dist/packages/core/src/hooks/useTrainingSessionLog.js +26 -0
  650. package/dist/packages/core/src/hooks/useTrainingTypeLabels.d.ts +16 -0
  651. package/dist/packages/core/src/hooks/useTrainingTypeLabels.js +25 -0
  652. package/dist/packages/core/src/hooks/useVisitAllPanel.d.ts +30 -0
  653. package/dist/packages/core/src/hooks/useVisitAllPanel.js +43 -0
  654. package/dist/packages/core/src/hooks/useVisitHistory.d.ts +38 -0
  655. package/dist/packages/core/src/hooks/useVisitHistory.js +59 -0
  656. package/dist/packages/core/src/hooks/useVisitSchedule.d.ts +31 -0
  657. package/dist/packages/core/src/hooks/useVisitSchedule.js +101 -0
  658. package/dist/packages/core/src/hooks/useWindowEvent.d.ts +11 -0
  659. package/dist/packages/core/src/hooks/useWindowEvent.js +27 -0
  660. package/dist/packages/core/src/hooks/useWordAttributeFilter.d.ts +70 -0
  661. package/dist/packages/core/src/hooks/useWordAttributeFilter.js +115 -0
  662. package/dist/packages/core/src/hooks/useWordDataStats.d.ts +22 -0
  663. package/dist/packages/core/src/hooks/useWordDataStats.js +40 -0
  664. package/dist/packages/core/src/hooks/useWordImage.d.ts +19 -0
  665. package/dist/packages/core/src/hooks/useWordImage.js +28 -0
  666. package/dist/packages/core/src/hooks/useWordMeanings.d.ts +39 -0
  667. package/dist/packages/core/src/hooks/useWordMeanings.js +62 -0
  668. package/dist/packages/core/src/hooks/useWordTrainingDataGeneration.d.ts +34 -0
  669. package/dist/packages/core/src/hooks/useWordTrainingDataGeneration.js +98 -0
  670. package/dist/packages/core/src/hooks/useWordTrainingFilter.d.ts +91 -0
  671. package/dist/packages/core/src/hooks/useWordTrainingFilter.js +549 -0
  672. package/dist/packages/core/src/hooks/wordTrainingFilterModel.d.ts +61 -0
  673. package/dist/packages/core/src/hooks/wordTrainingFilterModel.js +102 -0
  674. package/dist/packages/core/src/hooks.d.ts +27 -0
  675. package/dist/packages/core/src/hooks.js +28 -0
  676. package/dist/packages/core/src/i18n/index.d.ts +21 -0
  677. package/dist/packages/core/src/i18n/index.js +68 -0
  678. package/dist/packages/core/src/i18n/locales/en.json +4055 -0
  679. package/dist/packages/core/src/i18n/locales/ko.json +4052 -0
  680. package/dist/packages/core/src/icon/none.svg +4 -0
  681. package/dist/packages/core/src/icon/null.svg +3 -0
  682. package/dist/packages/core/src/index.d.ts +16 -0
  683. package/dist/packages/core/src/index.js +25 -0
  684. package/dist/packages/core/src/logo/Logo_APEB.svg +53 -0
  685. package/dist/packages/core/src/logo/Logo_APEB_black.svg +42 -0
  686. package/dist/packages/core/src/logo/Logo_APEB_white.svg +42 -0
  687. package/dist/packages/core/src/logo/Logo_HTP_kr.svg +21 -0
  688. package/dist/packages/core/src/logo/Logo_HTP_kr_black.svg +17 -0
  689. package/dist/packages/core/src/logo/Logo_HTP_kr_white.svg +17 -0
  690. package/dist/packages/core/src/logo/Logo_IHAB_en.svg +18 -0
  691. package/dist/packages/core/src/logo/Logo_IHAB_en_black.svg +14 -0
  692. package/dist/packages/core/src/logo/Logo_IHAB_en_white.svg +14 -0
  693. package/dist/packages/core/src/logo/Logo_IHAB_kr.svg +18 -0
  694. package/dist/packages/core/src/logo/Logo_IHAB_kr_black.svg +14 -0
  695. package/dist/packages/core/src/logo/Logo_IHAB_kr_white.svg +14 -0
  696. package/dist/packages/core/src/logo/Logo_SDS_kr.svg +22 -0
  697. package/dist/packages/core/src/logo/Logo_SDS_kr_black.svg +18 -0
  698. package/dist/packages/core/src/logo/Logo_SDS_kr_white.svg +18 -0
  699. package/dist/packages/core/src/logo/Logo_speechearManager_kr.svg +20 -0
  700. package/dist/packages/core/src/logo/Logo_speechearManager_kr_black.svg +21 -0
  701. package/dist/packages/core/src/logo/Logo_speechearManager_kr_textWhite.svg +45 -0
  702. package/dist/packages/core/src/logo/Logo_speechearManager_kr_white.svg +21 -0
  703. package/dist/packages/core/src/logo/Logo_speechear_kr.svg +17 -0
  704. package/dist/packages/core/src/logo/Logo_speechear_kr_black.svg +16 -0
  705. package/dist/packages/core/src/logo/Logo_speechear_kr_textWhite.svg +42 -0
  706. package/dist/packages/core/src/logo/Logo_speechear_kr_white.svg +16 -0
  707. package/dist/packages/core/src/logo/Symbol_APEB.svg +34 -0
  708. package/dist/packages/core/src/logo/Symbol_APEB_black.svg +15 -0
  709. package/dist/packages/core/src/logo/Symbol_APEB_white.svg +15 -0
  710. package/dist/packages/core/src/logo/Symbol_HTP.svg +14 -0
  711. package/dist/packages/core/src/logo/Symbol_HTP_black.svg +10 -0
  712. package/dist/packages/core/src/logo/Symbol_HTP_white.svg +10 -0
  713. package/dist/packages/core/src/logo/Symbol_IHAB.svg +14 -0
  714. package/dist/packages/core/src/logo/Symbol_IHAB_black.svg +10 -0
  715. package/dist/packages/core/src/logo/Symbol_IHAB_white.svg +10 -0
  716. package/dist/packages/core/src/logo/Symbol_SDS.svg +14 -0
  717. package/dist/packages/core/src/logo/Symbol_SDS_black.svg +10 -0
  718. package/dist/packages/core/src/logo/Symbol_SDS_white.svg +10 -0
  719. package/dist/packages/core/src/logo/Symbol_speechear.svg +15 -0
  720. package/dist/packages/core/src/logo/Symbol_speechear_black.svg +16 -0
  721. package/dist/packages/core/src/logo/Symbol_speechear_white.svg +16 -0
  722. package/dist/packages/core/src/logo/qr_speechear.svg +1 -0
  723. package/dist/packages/core/src/sounds/noiseAssets.d.ts +6 -0
  724. package/dist/packages/core/src/sounds/noiseAssets.js +24 -0
  725. package/dist/packages/core/src/styles.css +144 -0
  726. package/dist/packages/core/src/tokens.css +407 -0
  727. package/dist/packages/core/src/types/audio.d.ts +11 -0
  728. package/dist/packages/core/src/types/audio.js +1 -0
  729. package/dist/packages/core/src/types/device.d.ts +10 -0
  730. package/dist/packages/core/src/types/device.js +1 -0
  731. package/dist/packages/core/src/types/filterPanel.d.ts +63 -0
  732. package/dist/packages/core/src/types/filterPanel.js +8 -0
  733. package/dist/packages/core/src/types/geometry.d.ts +14 -0
  734. package/dist/packages/core/src/types/geometry.js +1 -0
  735. package/dist/packages/core/src/types/training.d.ts +131 -0
  736. package/dist/packages/core/src/types/training.js +1 -0
  737. package/dist/packages/core/src/types/wordSearch.d.ts +49 -0
  738. package/dist/packages/core/src/types/wordSearch.js +1 -0
  739. package/dist/packages/core/src/types.d.ts +3 -0
  740. package/dist/packages/core/src/types.js +1 -0
  741. package/dist/packages/core/src/utils/CategoryData.d.ts +91 -0
  742. package/dist/packages/core/src/utils/CategoryData.js +57 -0
  743. package/dist/packages/core/src/utils/array.d.ts +20 -0
  744. package/dist/packages/core/src/utils/array.js +36 -0
  745. package/dist/packages/core/src/utils/assets.d.ts +41 -0
  746. package/dist/packages/core/src/utils/assets.js +62 -0
  747. package/dist/packages/core/src/utils/audioMeter.d.ts +19 -0
  748. package/dist/packages/core/src/utils/audioMeter.js +70 -0
  749. package/dist/packages/core/src/utils/categories.d.ts +67 -0
  750. package/dist/packages/core/src/utils/categories.js +70 -0
  751. package/dist/packages/core/src/utils/clipboard.d.ts +10 -0
  752. package/dist/packages/core/src/utils/clipboard.js +46 -0
  753. package/dist/packages/core/src/utils/companyTypes.d.ts +2 -0
  754. package/dist/packages/core/src/utils/companyTypes.js +6 -0
  755. package/dist/packages/core/src/utils/csv.d.ts +22 -0
  756. package/dist/packages/core/src/utils/csv.js +35 -0
  757. package/dist/packages/core/src/utils/cx.d.ts +7 -0
  758. package/dist/packages/core/src/utils/cx.js +9 -0
  759. package/dist/packages/core/src/utils/dailySelectionUtils.d.ts +15 -0
  760. package/dist/packages/core/src/utils/dailySelectionUtils.js +68 -0
  761. package/dist/packages/core/src/utils/date.d.ts +86 -0
  762. package/dist/packages/core/src/utils/date.js +171 -0
  763. package/dist/packages/core/src/utils/deviceKind.d.ts +13 -0
  764. package/dist/packages/core/src/utils/deviceKind.js +19 -0
  765. package/dist/packages/core/src/utils/encoding.d.ts +26 -0
  766. package/dist/packages/core/src/utils/encoding.js +33 -0
  767. package/dist/packages/core/src/utils/errorMessage.d.ts +44 -0
  768. package/dist/packages/core/src/utils/errorMessage.js +63 -0
  769. package/dist/packages/core/src/utils/fontScale.d.ts +10 -0
  770. package/dist/packages/core/src/utils/fontScale.js +28 -0
  771. package/dist/packages/core/src/utils/format.d.ts +48 -0
  772. package/dist/packages/core/src/utils/format.js +122 -0
  773. package/dist/packages/core/src/utils/gameScoreLogger.d.ts +48 -0
  774. package/dist/packages/core/src/utils/gameScoreLogger.js +42 -0
  775. package/dist/packages/core/src/utils/getTrainingData.d.ts +61 -0
  776. package/dist/packages/core/src/utils/getTrainingData.js +156 -0
  777. package/dist/packages/core/src/utils/imageConfig.d.ts +48 -0
  778. package/dist/packages/core/src/utils/imageConfig.js +159 -0
  779. package/dist/packages/core/src/utils/josa.d.ts +29 -0
  780. package/dist/packages/core/src/utils/josa.js +103 -0
  781. package/dist/packages/core/src/utils/koreanPronunciation.d.ts +16 -0
  782. package/dist/packages/core/src/utils/koreanPronunciation.js +223 -0
  783. package/dist/packages/core/src/utils/koreanSyllable.d.ts +174 -0
  784. package/dist/packages/core/src/utils/koreanSyllable.js +654 -0
  785. package/dist/packages/core/src/utils/lucideIconSet.d.ts +16 -0
  786. package/dist/packages/core/src/utils/lucideIconSet.js +350 -0
  787. package/dist/packages/core/src/utils/lucideLoader.d.ts +44 -0
  788. package/dist/packages/core/src/utils/lucideLoader.js +76 -0
  789. package/dist/packages/core/src/utils/noiseSettingsStore.d.ts +22 -0
  790. package/dist/packages/core/src/utils/noiseSettingsStore.js +36 -0
  791. package/dist/packages/core/src/utils/phonemeConvert.d.ts +9 -0
  792. package/dist/packages/core/src/utils/phonemeConvert.js +53 -0
  793. package/dist/packages/core/src/utils/phonemeGroups.d.ts +22 -0
  794. package/dist/packages/core/src/utils/phonemeGroups.js +29 -0
  795. package/dist/packages/core/src/utils/phonemePairSearch.d.ts +22 -0
  796. package/dist/packages/core/src/utils/phonemePairSearch.js +583 -0
  797. package/dist/packages/core/src/utils/phonemePairSearchTypes.d.ts +46 -0
  798. package/dist/packages/core/src/utils/phonemePairSearchTypes.js +1 -0
  799. package/dist/packages/core/src/utils/planFeatures.d.ts +61 -0
  800. package/dist/packages/core/src/utils/planFeatures.js +168 -0
  801. package/dist/packages/core/src/utils/pronunciationConfig.d.ts +7 -0
  802. package/dist/packages/core/src/utils/pronunciationConfig.js +21 -0
  803. package/dist/packages/core/src/utils/savedWordTables.d.ts +18 -0
  804. package/dist/packages/core/src/utils/savedWordTables.js +70 -0
  805. package/dist/packages/core/src/utils/sortValue.d.ts +24 -0
  806. package/dist/packages/core/src/utils/sortValue.js +26 -0
  807. package/dist/packages/core/src/utils/speak.d.ts +7 -0
  808. package/dist/packages/core/src/utils/speak.js +35 -0
  809. package/dist/packages/core/src/utils/storage.d.ts +102 -0
  810. package/dist/packages/core/src/utils/storage.js +118 -0
  811. package/dist/packages/core/src/utils/theme.d.ts +11 -0
  812. package/dist/packages/core/src/utils/theme.js +28 -0
  813. package/dist/packages/core/src/utils/trainingItemResults.d.ts +60 -0
  814. package/dist/packages/core/src/utils/trainingItemResults.js +72 -0
  815. package/dist/packages/core/src/utils/trainingLogger.d.ts +58 -0
  816. package/dist/packages/core/src/utils/trainingLogger.js +50 -0
  817. package/dist/packages/core/src/utils/trainingPalette.d.ts +12 -0
  818. package/dist/packages/core/src/utils/trainingPalette.js +12 -0
  819. package/dist/packages/core/src/utils/ttsConfig.d.ts +78 -0
  820. package/dist/packages/core/src/utils/ttsConfig.js +89 -0
  821. package/dist/packages/core/src/utils/ttsResolver.d.ts +17 -0
  822. package/dist/packages/core/src/utils/ttsResolver.js +56 -0
  823. package/dist/packages/core/src/utils/wordContrast.d.ts +54 -0
  824. package/dist/packages/core/src/utils/wordContrast.js +198 -0
  825. package/dist/packages/core/src/utils/wordPairIndex.d.ts +26 -0
  826. package/dist/packages/core/src/utils/wordPairIndex.js +194 -0
  827. package/dist/packages/core/src/utils/wordPool.d.ts +34 -0
  828. package/dist/packages/core/src/utils/wordPool.js +20 -0
  829. package/dist/packages/core/src/utils/wordSuggestionPolicy.d.ts +55 -0
  830. package/dist/packages/core/src/utils/wordSuggestionPolicy.js +97 -0
  831. package/dist/packages/core/src/utils/wordTrainingGenerators.d.ts +122 -0
  832. package/dist/packages/core/src/utils/wordTrainingGenerators.js +560 -0
  833. package/dist/packages/core/src/utils/wordTrainingGroups.d.ts +10 -0
  834. package/dist/packages/core/src/utils/wordTrainingGroups.js +69 -0
  835. package/dist/packages/core/src/utils/wordTrainingPool.d.ts +51 -0
  836. package/dist/packages/core/src/utils/wordTrainingPool.js +436 -0
  837. package/dist/packages/core/src/utils/wordTrainingRuntime.d.ts +38 -0
  838. package/dist/packages/core/src/utils/wordTrainingRuntime.js +641 -0
  839. package/dist/packages/core/src/utils/wordTrainingRuntimeTypes.d.ts +89 -0
  840. package/dist/packages/core/src/utils/wordTrainingRuntimeTypes.js +77 -0
  841. package/dist/packages/core/src/utils.d.ts +57 -0
  842. package/dist/packages/core/src/utils.js +46 -0
  843. package/dist/tsdoc-metadata.json +11 -0
  844. package/dist/types.cjs.js +1 -0
  845. package/dist/types.esm.js +1 -0
  846. package/dist/utils.cjs.js +20 -0
  847. package/dist/utils.esm.js +20 -0
  848. package/package.json +171 -0
@@ -0,0 +1,69 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useTranslation } from 'react-i18next';
4
+ import FilterPanel from '../FilterPanel';
5
+ import FilterSectionInfo from '../FilterSectionInfo';
6
+ /**
7
+ * 대립쌍(최소대립쌍) 검색 방식을 고르는 FilterPanel — 대립 방식/입력 음절 위치/입력 음절 갯수/입력 방식,
8
+ * 4개 모두 단일 선택 세그먼트. WordPairsPage의 [대립 설정] 패널이 원 출처.
9
+ * @public
10
+ */
11
+ export default function ContrastFilterPanel({ title, mode, onModeChange, matchMode, onMatchModeChange, positionCount, onPositionCountChange, inputMode, onInputModeChange, className, }) {
12
+ const { t } = useTranslation();
13
+ const labels = {
14
+ searchMode: t('wordPairs.filter.searchModeLabel', '대립 방식'),
15
+ phonemeOrder: t('wordPairs.filter.phonemeOrder', '입력 음절 위치'),
16
+ count: t('wordPairs.filter.countLabel', '입력 음절 갯수'),
17
+ inputMode: t('wordPairs.filter.inputModeLabel', '입력 방식'),
18
+ orderAny: t('wordPairs.filter.orderAny', '무관'),
19
+ orderMatch: t('wordPairs.filter.orderMatch', '일치'),
20
+ include: t('wordPairs.mode.include', '음소 포함'),
21
+ pick: t('wordPairs.mode.pick', '음소 대립'),
22
+ explicit: t('wordPairs.mode.contrast', '음소 대립 지정'),
23
+ charInput: t('wordPairs.input.char', '글자 선택'),
24
+ pronInput: t('wordPairs.input.pron', '발음 선택'),
25
+ };
26
+ const countLabelFor = (n) => t('wordPairs.count', { n });
27
+ const sections = [
28
+ {
29
+ label: labels.searchMode,
30
+ items: [labels.include, labels.pick, labels.explicit],
31
+ display: 'segmented',
32
+ labelAction: _jsx(FilterSectionInfo, { title: t('wordPairs.mode.infoTitle', '대립 방식'), items: [t('wordPairs.mode.infoInclude', '음소 포함 — 선택한 음소가 모두 들어간 단어와 그 대립쌍을 찾아요.'), t('wordPairs.mode.infoPick', '음소 대립 — 선택한 음소가 대립쌍 두 단어의 실제 차이점일 때만 매칭돼요.'), t('wordPairs.mode.infoContrast', '음소 대립 지정 — 기준 단어와 대립 단어의 음소를 각각 직접 선택해 대립쌍을 찾아요.')] }),
33
+ },
34
+ {
35
+ label: labels.phonemeOrder,
36
+ items: [labels.orderAny, labels.orderMatch],
37
+ display: 'segmented',
38
+ labelAction: _jsx(FilterSectionInfo, { items: t('wordPairs.filter.phonemeOrderInfo', { returnObjects: true }) }),
39
+ },
40
+ { label: labels.count, items: [countLabelFor(1), countLabelFor(2)], display: 'segmented' },
41
+ {
42
+ label: labels.inputMode,
43
+ items: [labels.charInput, labels.pronInput],
44
+ display: 'segmented',
45
+ labelAction: _jsx(FilterSectionInfo, { title: t('wordPairs.input.infoTitle', '입력 방식'), items: [t('wordPairs.input.infoChar', '글자 선택 — 선택한 음소로 단어(글자 기준)를 찾은 후, 단어의 표준 발음 대립쌍을 찾습니다.'), t('wordPairs.input.infoPron', '발음 선택 — 선택한 음소로 표준 발음 대립쌍을 찾습니다.')] }),
46
+ },
47
+ ];
48
+ const selected = {
49
+ [labels.searchMode]: mode === 'explicit' ? labels.explicit : mode === 'pick' ? labels.pick : labels.include,
50
+ [labels.phonemeOrder]: matchMode === 'ordered' ? labels.orderMatch : labels.orderAny,
51
+ [labels.count]: countLabelFor(positionCount),
52
+ [labels.inputMode]: inputMode === 'phoneme' ? labels.pronInput : labels.charInput,
53
+ };
54
+ const onSelect = (value, sectionLabel) => {
55
+ if (sectionLabel === labels.searchMode) {
56
+ onModeChange(value === labels.explicit ? 'explicit' : value === labels.pick ? 'pick' : 'include');
57
+ }
58
+ else if (sectionLabel === labels.phonemeOrder) {
59
+ onMatchModeChange(value === labels.orderMatch ? 'ordered' : 'unordered');
60
+ }
61
+ else if (sectionLabel === labels.count) {
62
+ onPositionCountChange(value === countLabelFor(2) ? 2 : 1);
63
+ }
64
+ else if (sectionLabel === labels.inputMode) {
65
+ onInputModeChange(value === labels.pronInput ? 'phoneme' : 'word');
66
+ }
67
+ };
68
+ return (_jsx(FilterPanel, { className: className, title: title ?? t('wordPairs.filter.searchOptionsTitle', '대립 설정'), sections: sections, selected: selected, onSelect: onSelect, align: "inline" }));
69
+ }
@@ -0,0 +1,24 @@
1
+ import type { ReactNode } from 'react';
2
+ import { type FilterPanelSection } from '../FilterPanel';
3
+ /** @public */
4
+ export interface PhonemeFilterPanelProps {
5
+ /** 패널 제목. 미지정 시 i18n(training.filter.phonemeGroup) 기본값 사용. */
6
+ title?: ReactNode;
7
+ /** 패널 헤더 우측 액션 — 보통 글자 입력/발음 입력 SegmentedControl(호출부가 값 변환까지 처리하는 콜백으로 구성). */
8
+ headerAction?: ReactNode;
9
+ /**
10
+ * 미리 구성된 초성/모음/종성 섹션(과, 필요하면 위치 등 추가 섹션) — 훈련 타입별 caps(제한 없음 노출 여부,
11
+ * 종성 '제외' 고정/금지, 발음클러스터 등)에 따라 형태가 달라(useWordTrainingFilter.ts) 섹션 자체는
12
+ * 호출부가 만든다. 이 컴포넌트는 그 결과를 일관된 제목·레이아웃으로 렌더링만 담당한다.
13
+ */
14
+ sections: FilterPanelSection[];
15
+ selected: Record<string, string | string[]>;
16
+ onSelect: (value: string, sectionLabel: string) => void;
17
+ className?: string;
18
+ }
19
+ /**
20
+ * 훈련할 음절(초성/모음/종성)을 고르는 FilterPanel 셸(shell) — 섹션 자체는 훈련 타입별 조건(caps)에
21
+ * 따라 호출부(useWordTrainingFilter)가 구성해 넘긴다. WordTrainingFilterPanels의 [훈련 음절] 패널이 원 출처.
22
+ * @public
23
+ */
24
+ export default function PhonemeFilterPanel({ title, headerAction, sections, selected, onSelect, className }: PhonemeFilterPanelProps): import("react").JSX.Element | null;
@@ -0,0 +1,15 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useTranslation } from 'react-i18next';
4
+ import FilterPanel from '../FilterPanel';
5
+ /**
6
+ * 훈련할 음절(초성/모음/종성)을 고르는 FilterPanel 셸(shell) — 섹션 자체는 훈련 타입별 조건(caps)에
7
+ * 따라 호출부(useWordTrainingFilter)가 구성해 넘긴다. WordTrainingFilterPanels의 [훈련 음절] 패널이 원 출처.
8
+ * @public
9
+ */
10
+ export default function PhonemeFilterPanel({ title, headerAction, sections, selected, onSelect, className }) {
11
+ const { t } = useTranslation();
12
+ if (sections.length === 0)
13
+ return null;
14
+ return (_jsx(FilterPanel, { className: className, title: title ?? t('training.filter.phonemeGroup', { defaultValue: '훈련 음절' }), headerAction: headerAction, sections: sections, selected: selected, onSelect: onSelect, align: "newline" }));
15
+ }
@@ -0,0 +1,272 @@
1
+ .phoneme-select-block {
2
+ align-items: flex-start;
3
+ width: 100%;
4
+ flex: 1 1 auto;
5
+ }
6
+
7
+ .phoneme-select-block__cell {
8
+ display: flex;
9
+ flex-direction: column;
10
+ align-items: center;
11
+ gap: 12px;
12
+ }
13
+
14
+ .phoneme-select-block__controls {
15
+ display: flex;
16
+ flex-direction: row;
17
+ align-items: center;
18
+ justify-content: center;
19
+ gap: var(--spacing-xs);
20
+ width: 100%;
21
+ }
22
+
23
+ @media (max-width: 767px) {
24
+ .phoneme-select-block__controls {
25
+ flex-direction: column;
26
+ align-items: center;
27
+ }
28
+ }
29
+
30
+ .phoneme-select-block__count-control {
31
+ align-self: center;
32
+ }
33
+
34
+ .phoneme-select-block__cell-group {
35
+ display: flex;
36
+ align-items: flex-start;
37
+ gap: var(--spacing-xs);
38
+ }
39
+
40
+ .phoneme-select-block__cell-vs {
41
+ color: var(--color-lightGray);
42
+ align-self: center;
43
+ margin-bottom: 22px;
44
+ padding: 0 16px;
45
+ }
46
+
47
+ .phoneme-select-block__pair-panels {
48
+ display: flex;
49
+ gap: var(--spacing-s);
50
+ width: 100%;
51
+ }
52
+
53
+ .phoneme-select-block__panel-group {
54
+ display: flex;
55
+ flex-direction: column;
56
+ gap: var(--spacing-m);
57
+ flex: 1;
58
+ }
59
+
60
+ .phoneme-select-block__cells {
61
+ display: flex;
62
+ align-items: flex-start;
63
+ justify-content: center;
64
+ gap: var(--spacing-xs);
65
+ width: 100%;
66
+ padding: var(--spacing-m) 0;
67
+ }
68
+
69
+ .phoneme-select-block__cell-circle {
70
+ position: relative;
71
+ display: flex;
72
+ align-items: center;
73
+ justify-content: center;
74
+ width: 240px;
75
+ height: 80px;
76
+ border-radius: var(--radius-m);
77
+ background: var(--color-white);
78
+ border: 1px solid var(--color-whiteLine);
79
+ box-shadow: var(--shadow-tooltip);
80
+ }
81
+
82
+ .phoneme-select-block__cell-index {
83
+ /* 음절/자모 위치를 알려주는 라벨 — lightGray는 2.42:1로 AA 미달이었다 */
84
+ color: var(--color-gray);
85
+ line-height: 1;
86
+ }
87
+
88
+ .phoneme-select-block__cell-jamo {
89
+ display: flex;
90
+ flex-direction: row;
91
+ align-items: stretch;
92
+ justify-content: center;
93
+ width: 100%;
94
+ height: 100%;
95
+ }
96
+
97
+ .phoneme-select-block__cell-jamo-part {
98
+ position: relative;
99
+ flex: 1;
100
+ display: flex;
101
+ flex-direction: column;
102
+ align-items: center;
103
+ justify-content: center;
104
+ gap: 4px;
105
+ /* 상하 여백이 수치상 대칭이어도 한글 자모 글자의 시각적 무게중심이
106
+ 위쪽에 있어 위로 쏠려 보인다 — 위쪽에 여백을 더 줘서 의도적으로
107
+ 아래로 내린다(라벨이 함께 있을 때 기준). */
108
+ padding-top: 3px;
109
+ color: var(--color-black);
110
+ }
111
+
112
+ /* 라벨이 없으면(빈 슬롯, 종성 제외) 글자 하나만 남으므로 위 보정이 오히려
113
+ 아래로 치우쳐 보이게 한다 — 보정을 빼고 순수 중앙 정렬한다. */
114
+ .phoneme-select-block__cell-jamo-part--no-label {
115
+ padding-top: 0;
116
+ }
117
+
118
+ .phoneme-select-block__cell-jamo-char.h1 {
119
+ /* .h1의 line-height(44px)가 그대로 남아있으면 글자 위아래로 보이지 않는
120
+ 여백이 커져 라벨과 묶었을 때 전체가 위로 치우쳐 보인다 — 명시적으로
121
+ 덮어써서 실제 글자 높이만큼만 차지하게 한다(specificity를 올려
122
+ .h1보다 확실히 우선 적용). */
123
+ line-height: 1;
124
+ }
125
+
126
+ .phoneme-select-block__cell-jamo-char--excluded {
127
+ color: var(--color-whiteLine);
128
+ /* 박스 중앙 정렬 수치는 다른 자모와 동일하지만, 'x' 글자 자체의 잉크가
129
+ 한글 글자보다 아래쪽에 몰려 있어 시각적으로 처져 보인다 — 수동 보정. */
130
+ transform: translateY(-2px);
131
+ }
132
+
133
+ /* placeholder('-')도 같은 이유로 처져 보여 excluded와 동일하게 보정한다. */
134
+ .phoneme-select-block__cell-jamo-part--empty .phoneme-select-block__cell-jamo-char {
135
+ transform: translateY(-2px);
136
+ }
137
+
138
+ .phoneme-select-block__cell-jamo-label {
139
+ color: var(--color-lightGray);
140
+ line-height: 1;
141
+ }
142
+
143
+ .phoneme-select-block__cell-jamo-part--empty .phoneme-select-block__cell-jamo-label {
144
+ color: var(--color-darkWhite);
145
+ }
146
+
147
+ .phoneme-select-block__cell-jamo-part + .phoneme-select-block__cell-jamo-part::before {
148
+ content: '';
149
+ position: absolute;
150
+ left: 0;
151
+ top: 50%;
152
+ transform: translateY(-50%);
153
+ width: 1px;
154
+ height: 20px;
155
+ background: var(--color-whiteLine);
156
+ }
157
+
158
+ .phoneme-select-block__cell-jamo-part--empty {
159
+ color: var(--color-darkWhite);
160
+ }
161
+
162
+ .phoneme-select-block__panels {
163
+ display: flex;
164
+ flex-direction: column;
165
+ align-items: stretch;
166
+ gap: var(--spacing-m);
167
+ align-self: stretch;
168
+ width: 100%;
169
+ }
170
+
171
+ .phoneme-select-block__detail {
172
+ display: flex;
173
+ flex-direction: row;
174
+ align-items: flex-start;
175
+ justify-content: center;
176
+ gap: var(--spacing-s);
177
+ }
178
+
179
+ .phoneme-select-block__detail > .filter-panel {
180
+ flex: 1;
181
+ }
182
+
183
+ /* Section에 직접 얹은 대립 설정(beforeContent)·단어 검색 설정(afterContent) 패널은
184
+ 섹션이 align-items: flex-start라 콘텐츠 폭으로 줄어든다 — 카드 폭을 꽉 채우게 한다. */
185
+ .phoneme-select-block > .filter-panel {
186
+ align-self: stretch;
187
+ width: 100%;
188
+ }
189
+
190
+
191
+ .phoneme-select-block__controls .button38--bar {
192
+ min-width: 96px;
193
+ }
194
+
195
+ .phoneme-select-block__required {
196
+ color: var(--color-main);
197
+ line-height: 1;
198
+ margin-left: 2px;
199
+ }
200
+
201
+ .phoneme-select-block__before-search {
202
+ display: flex;
203
+ justify-content: center;
204
+ width: 100%;
205
+ text-align: center;
206
+ }
207
+
208
+ .phoneme-select-block__search-row {
209
+ display: flex;
210
+ justify-content: center;
211
+ gap: var(--spacing-xs);
212
+ width: 100%;
213
+ }
214
+
215
+ .phoneme-select-block__checking {
216
+ display: flex;
217
+ align-items: center;
218
+ gap: 10px;
219
+ height: 60px;
220
+ min-width: 198px;
221
+ padding: 0 28px;
222
+ border-radius: var(--radius-m);
223
+ border: 1px solid var(--color-whiteLine);
224
+ background: transparent;
225
+ color: var(--color-disabled);
226
+ cursor: default;
227
+ }
228
+
229
+ .phoneme-select-block__checking-label {
230
+ white-space: nowrap;
231
+ }
232
+
233
+ .phoneme-select-block__spinner {
234
+ width: 18px;
235
+ height: 18px;
236
+ border: 2px solid var(--color-whiteLine);
237
+ border-top-color: var(--color-disabled);
238
+ border-radius: 50%;
239
+ animation: phonemeSpinner 0.7s linear infinite;
240
+ flex-shrink: 0;
241
+ }
242
+
243
+ @keyframes phonemeSpinner {
244
+ to { transform: rotate(360deg); }
245
+ }
246
+
247
+ @media (max-width: 767px) {
248
+ .phoneme-select-block__pair-panels {
249
+ flex-direction: column;
250
+ }
251
+ .phoneme-select-block__detail {
252
+ flex-direction: column;
253
+ }
254
+ .phoneme-select-block__detail > .filter-panel {
255
+ width: 100%;
256
+ }
257
+ .phoneme-select-block__cell-vs {
258
+ align-self: center;
259
+ margin-bottom: 0;
260
+ padding: 4px 0;
261
+ }
262
+ .phoneme-select-block__cells {
263
+ flex-wrap: wrap;
264
+ }
265
+ .phoneme-select-block__cell-circle {
266
+ width: min(240px, 100%);
267
+ height: 64px;
268
+ }
269
+ .phoneme-select-block__cell-jamo-part {
270
+ font-size: 24px;
271
+ }
272
+ }
@@ -0,0 +1,45 @@
1
+ import { type ReactNode } from 'react';
2
+ import './PhonemeSelectBlock.css';
3
+ import { type FilterPanelSection } from '../FilterPanel';
4
+ import { type PhonemeSelectBlockSection } from './phonemeSelectBlockUtils';
5
+ export type { PhonemeSelectBlockSection };
6
+ /** @public */
7
+ export interface PhonemeSelectBlockProps {
8
+ sections: (PhonemeSelectBlockSection | string)[];
9
+ selectedList: Record<string, string>[];
10
+ count: number;
11
+ onCountChange: (count: number) => void;
12
+ maxCount?: number;
13
+ minCount?: number;
14
+ combinationSections?: FilterPanelSection[];
15
+ combinationSectionsForSlot?: (selected: Record<string, string>, index: number) => FilterPanelSection[];
16
+ onSelect?: (index: number) => (value: string, sectionLabel: string) => void;
17
+ placeholder?: string;
18
+ className?: string;
19
+ title?: ReactNode;
20
+ titleIcon?: string;
21
+ disc?: ReactNode;
22
+ onClearPhoneme?: () => void;
23
+ onSearch?: () => void;
24
+ onSearchEmpty?: () => void;
25
+ searchDisabled?: boolean;
26
+ searchLabel?: string;
27
+ searchChecking?: boolean;
28
+ pairMode?: boolean;
29
+ showInfoButton?: boolean;
30
+ /** 검색 버튼 바로 위에 표시할 내용(예: 현재 검색 조건 요약 Badge) */
31
+ beforeSearchContent?: ReactNode;
32
+ /** Section 맨 위(카운트 컨트롤보다도 위)에 넣을 내용 — 예: 대립 설정 FilterPanel. 같은 Section 안에서
33
+ * gap 간격을 공유하게 하려는 용도(호출부가 별도 카드로 쌓지 않도록). */
34
+ beforeContent?: ReactNode;
35
+ /** Section 맨 아래(검색 버튼보다도 아래)에 넣을 내용 — 예: 단어 검색 설정 FilterPanel. */
36
+ afterContent?: ReactNode;
37
+ /** true면 내부 1개/2개 SegmentedControl을 숨긴다(호출부가 count를 외부 FilterPanel 등에서 대신 관리할 때) */
38
+ hideCountControl?: boolean;
39
+ /** 섹션 타입: 기본 page, 팝업 페이지 pagePopup, 팝업 내 popup */
40
+ sectionType?: 'page' | 'pagePopup' | 'popup';
41
+ /** true면 슬롯 라벨을 "1번 음절" 대신 "첫번째 음절"로 표시(음절 위치가 '일치'일 때처럼 순서가 실제 의미를 가질 때) */
42
+ ordinal?: boolean;
43
+ }
44
+ /** @public */
45
+ export default function PhonemeSelectBlock({ sections, selectedList, count, onCountChange, maxCount, minCount, combinationSections, combinationSectionsForSlot, onSelect, placeholder, className, title, titleIcon, disc, showInfoButton, onClearPhoneme, onSearch, onSearchEmpty, searchDisabled, searchLabel, searchChecking, pairMode, sectionType, beforeSearchContent, beforeContent, afterContent, hideCountControl, ordinal, }: PhonemeSelectBlockProps): import("react").JSX.Element;
@@ -0,0 +1,71 @@
1
+ 'use client';
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { cx } from '../../utils/cx';
4
+ import { useCallback, useMemo } from 'react';
5
+ import { useTranslation } from 'react-i18next';
6
+ import useMediaQuery from '../../hooks/useMediaQuery';
7
+ import { useHoverAnchor } from '../../hooks/useHoverAnchor';
8
+ import './PhonemeSelectBlock.css';
9
+ import Section from '../Section';
10
+ import SegmentedControl from '../SegmentedControl';
11
+ import FilterPanel from '../FilterPanel';
12
+ import Button from '../Button';
13
+ import DescriptionTooltip from '../Tooltip/DescriptionTooltip';
14
+ import { sectionValues } from './phonemeSelectBlockUtils';
15
+ /** @public */
16
+ export default function PhonemeSelectBlock({ sections, selectedList, count, onCountChange, maxCount = 4, minCount = 1, combinationSections, combinationSectionsForSlot, onSelect, placeholder = '-', className, title, titleIcon, disc, showInfoButton = false, onClearPhoneme, onSearch, onSearchEmpty, searchDisabled = false, searchLabel, searchChecking = false, pairMode = false, sectionType = 'page', beforeSearchContent, beforeContent, afterContent, hideCountControl = false, ordinal = false, }) {
17
+ const { t } = useTranslation();
18
+ const infoNotes = useMemo(() => t('wordPairs.infoNotes', { returnObjects: true }), [t]);
19
+ const countOptions = useMemo(() => Array.from({ length: maxCount - minCount + 1 }, (_, i) => {
20
+ const n = minCount + i;
21
+ return { key: String(n), label: t('wordPairs.count', { n }) };
22
+ }), [t, maxCount, minCount]);
23
+ const ordinals = useMemo(() => t('wordPairs.ordinals', { returnObjects: true }), [t]);
24
+ // count===1이면 슬롯이 하나뿐이라 번호를 매길 이유가 없다 — "1번 음소" 대신 그냥 "음소".
25
+ const phonemeLabel = useCallback((n) => {
26
+ if (ordinal)
27
+ return t('wordPairs.phonemeOrdinalLabel', { ordinal: ordinals[n - 1] ?? n });
28
+ if (count === 1)
29
+ return t('wordPairs.phonemeSingleLabel', '음절');
30
+ return t('wordPairs.phonemeN', { n });
31
+ }, [ordinal, ordinals, count, t]);
32
+ const phonemeContrastLabel = useCallback((n) => {
33
+ if (ordinal)
34
+ return t('wordPairs.phonemeContrastOrdinalLabel', { ordinal: ordinals[n - 1] ?? n });
35
+ if (count === 1)
36
+ return t('wordPairs.phonemeContrastSingleLabel', '대립 음절');
37
+ return t('wordPairs.phonemeContrast', { n });
38
+ }, [ordinal, ordinals, count, t]);
39
+ // 검색을 시작하려면 최소 한 슬롯은 음소를 선택해야 하므로, 맨 처음 슬롯에만 필수 표시를 붙인다.
40
+ const panelTitle = useCallback((label, isFirst) => isFirst ? _jsxs(_Fragment, { children: [label, _jsx("span", { className: "phoneme-select-block__required", children: "*" })] }) : label, []);
41
+ const { anchorRect: infoAnchorRect, toggleAt: toggleInfo, close: handleCloseInfo } = useHoverAnchor();
42
+ const handleCountChange = useCallback((v) => onCountChange(Number(v)), [onCountChange]);
43
+ const isMobile = useMediaQuery('(max-width: 767px)');
44
+ const renderJamoParts = useCallback((selected) => sectionValues(selected, sections).map(({ label, value, displayLabel }) => {
45
+ const hasLabel = !!value && value !== '없음';
46
+ return (_jsxs("span", { className: cx('phoneme-select-block__cell-jamo-part', value ? '' : 'phoneme-select-block__cell-jamo-part--empty', hasLabel ? '' : 'phoneme-select-block__cell-jamo-part--no-label'), children: [_jsx("span", { className: `phoneme-select-block__cell-jamo-char h1${value === '없음' ? ' phoneme-select-block__cell-jamo-char--excluded' : ''}`, children: value === '없음' ? 'x' : (value || placeholder) }), hasLabel && _jsx("span", { className: "phoneme-select-block__cell-jamo-label caption-2", children: displayLabel ?? label })] }, label));
47
+ }), [sections, placeholder]);
48
+ const infoButton = (_jsxs(_Fragment, { children: [_jsx("div", { "data-tooltip-ignore": true, children: _jsx(Button, { size: 40, type: isMobile ? 'dot' : undefined, icon: "info", label: isMobile ? undefined : t('wordPairs.caution', '유의사항'), selected: !!infoAnchorRect, onClick: (e) => toggleInfo(e.currentTarget) }) }), infoAnchorRect && (_jsx(DescriptionTooltip, { title: t('wordPairs.caution', '유의사항'), items: infoNotes, anchorRect: infoAnchorRect, onClose: handleCloseInfo }))] }));
49
+ return (_jsxs(Section, { type: sectionType, title: title, icon: titleIcon, disc: disc, action: infoButton, className: cx('phoneme-select-block', className), children: [beforeContent, (!hideCountControl || (showInfoButton && !(title || disc))) && (_jsxs("div", { className: "phoneme-select-block__controls", children: [!hideCountControl && (_jsx(SegmentedControl, { options: countOptions, value: String(count), onChange: handleCountChange, size: 40, className: "phoneme-select-block__count-control" })), showInfoButton && !(title || disc) && infoButton] })), _jsx("div", { className: "phoneme-select-block__cells", children: pairMode
50
+ ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "phoneme-select-block__cell-group", children: Array.from({ length: count }).map((_, pairIdx) => {
51
+ const sel = selectedList[pairIdx * 2] ?? {};
52
+ return (_jsxs("div", { className: "phoneme-select-block__cell", children: [_jsx("div", { className: "phoneme-select-block__cell-circle", children: _jsx("div", { className: "phoneme-select-block__cell-jamo", children: renderJamoParts(sel) }) }), _jsx("span", { className: "phoneme-select-block__cell-index caption-1", children: phonemeLabel(pairIdx + 1) })] }, pairIdx));
53
+ }) }), _jsx("span", { className: "phoneme-select-block__cell-vs h3", children: t('wordPairs.phonemeSelect.vs', '대') }), _jsx("div", { className: "phoneme-select-block__cell-group", children: Array.from({ length: count }).map((_, pairIdx) => {
54
+ const sel = selectedList[pairIdx * 2 + 1] ?? {};
55
+ return (_jsxs("div", { className: "phoneme-select-block__cell", children: [_jsx("div", { className: "phoneme-select-block__cell-circle", children: _jsx("div", { className: "phoneme-select-block__cell-jamo", children: renderJamoParts(sel) }) }), _jsx("span", { className: "phoneme-select-block__cell-index caption-1", children: phonemeContrastLabel(pairIdx + 1) })] }, pairIdx));
56
+ }) })] }))
57
+ : selectedList.map((selected, i) => (_jsxs("div", { className: "phoneme-select-block__cell", children: [_jsx("div", { className: "phoneme-select-block__cell-circle", children: _jsx("div", { className: "phoneme-select-block__cell-jamo", children: renderJamoParts(selected) }) }), _jsx("span", { className: "phoneme-select-block__cell-index caption-1", children: phonemeLabel(i + 1) })] }, i))) }), (combinationSections || combinationSectionsForSlot) && (_jsx("div", { className: "phoneme-select-block__panels", children: _jsx("div", { className: "phoneme-select-block__detail", children: pairMode
58
+ ? (_jsxs("div", { className: "phoneme-select-block__pair-panels", children: [_jsx("div", { className: "phoneme-select-block__panel-group", children: Array.from({ length: count }).map((_, pairIdx) => {
59
+ const sel = selectedList[pairIdx * 2] ?? {};
60
+ return (_jsx(FilterPanel, { title: panelTitle(phonemeLabel(pairIdx + 1), pairIdx === 0), sections: combinationSectionsForSlot ? combinationSectionsForSlot(sel, pairIdx * 2) : combinationSections, selected: sel, onSelect: onSelect?.(pairIdx * 2), align: "newline" }, pairIdx));
61
+ }) }), _jsx("div", { className: "phoneme-select-block__panel-group", children: Array.from({ length: count }).map((_, pairIdx) => {
62
+ const sel = selectedList[pairIdx * 2 + 1] ?? {};
63
+ return (_jsx(FilterPanel, { title: phonemeContrastLabel(pairIdx + 1), sections: combinationSectionsForSlot ? combinationSectionsForSlot(sel, pairIdx * 2 + 1) : combinationSections, selected: sel, onSelect: onSelect?.(pairIdx * 2 + 1), align: "newline" }, pairIdx));
64
+ }) })] }))
65
+ : selectedList.map((selected, i) => (_jsx(FilterPanel, { title: panelTitle(phonemeLabel(i + 1), i === 0), sections: combinationSectionsForSlot ? combinationSectionsForSlot(selected, i) : combinationSections, selected: selected, onSelect: onSelect?.(i), align: "newline" }, i))) }) })), beforeSearchContent && (_jsx("div", { className: "phoneme-select-block__before-search", children: beforeSearchContent })), (onClearPhoneme || onSearch || searchChecking) && (() => {
66
+ // 종성 '제외'(없음)만 선택된 슬롯은 실제 음소를 고른 것으로 치지 않는다 —
67
+ // "받침 없음"은 단독으로는 검색 조건이 되기엔 너무 느슨한 보조 조건이라서다.
68
+ const isEmpty = selectedList.every(sel => Object.entries(sel).every(([k, v]) => !v || (k === '종성' && v === '없음')));
69
+ return (_jsxs("div", { className: "phoneme-select-block__search-row", onClick: isEmpty ? onSearchEmpty : undefined, children: [onClearPhoneme && (_jsx(Button, { size: "56", type: "bar", label: t('wordPairs.resetOptions', '검색 옵션 초기화'), selected: false, disabled: isEmpty, onClick: isEmpty ? undefined : onClearPhoneme })), searchChecking ? (_jsxs("div", { className: "phoneme-select-block__checking", children: [_jsx("div", { className: "phoneme-select-block__spinner" }), _jsx("span", { className: "button-1 phoneme-select-block__checking-label", children: searchLabel ?? t('wordSearch.searchButton', '검색하기') })] })) : onSearch && (_jsx(Button, { size: "56", type: "bar", variant: "main", label: searchLabel ?? t('wordSearch.searchButton', '검색하기'), disabled: isEmpty || searchDisabled, onClick: isEmpty || searchDisabled ? undefined : onSearch }))] }));
70
+ })(), afterContent] }));
71
+ }
@@ -0,0 +1,56 @@
1
+ import type { ReactNode } from 'react';
2
+ import { type FilterPanelSection } from '../FilterPanel';
3
+ import type { WordTableOrientation, WordTableCutLine, WordTableContentType } from '../WordTable';
4
+ import { type TableSettingsSetters } from './wordTableSettings';
5
+ interface TableFilterPanelBaseProps {
6
+ /** 패널 제목. 미지정 시 i18n(wordTable.filterTitle) 기본값 사용. */
7
+ title?: ReactNode;
8
+ className?: string;
9
+ }
10
+ /**
11
+ * 셸(shell) 모드 — 이미 같은 5개 wordTableSettings.ts 빌더로 섹션을 직접 만든 호출부
12
+ * (예: useWordTableDisplaySettings)가 그 결과를 그대로 넘길 때 쓴다.
13
+ * @public
14
+ */
15
+ export interface TableFilterPanelShellProps extends TableFilterPanelBaseProps {
16
+ sections: FilterPanelSection[];
17
+ selected: Record<string, string | string[]>;
18
+ onSelect: (value: string, sectionLabel: string) => void;
19
+ }
20
+ /**
21
+ * 스마트 모드 — 원시 상태+setter로부터 구성/용지 방향/외곽선(+옵션)을 이 컴포넌트가 직접 조립한다.
22
+ * @public
23
+ */
24
+ export interface TableFilterPanelSmartProps extends TableFilterPanelBaseProps {
25
+ hasImage: boolean;
26
+ hasColloquial: boolean;
27
+ contentTypes: WordTableContentType[];
28
+ orientation: WordTableOrientation;
29
+ showOutline: boolean;
30
+ cutLine: WordTableCutLine;
31
+ showDivLine: boolean;
32
+ /** 기본 5개 설정(구성·용지 방향·외곽선·절취선·구분선) 상태 setter 묶음. */
33
+ setters: TableSettingsSetters;
34
+ /** 절취선 섹션 노출 여부 — 칸 수가 1개보다 많을 때만(호출부가 판단). */
35
+ showCutLine?: boolean;
36
+ /** 구분선 섹션 노출 여부 — 대립쌍표 등 짝이 있는 표에서만(호출부가 판단). */
37
+ showDivLine2?: boolean;
38
+ /** 용지 방향과 외곽선 사이에 끼워 넣을 추가 섹션 — 칸 수/페이지당 개수/페이지 번호 등, 호출부 전용이라 직접 구성해 넘긴다. */
39
+ middleSections?: FilterPanelSection[];
40
+ /** middleSections의 현재 선택값. */
41
+ extraSelected?: Record<string, string | string[]>;
42
+ /** middleSections의 select 처리 — 기본 5개 섹션이 아닐 때만 호출된다. */
43
+ onExtraSelect?: (value: string, sectionLabel: string) => void;
44
+ }
45
+ /** @public */
46
+ export type TableFilterPanelProps = TableFilterPanelShellProps | TableFilterPanelSmartProps;
47
+ /**
48
+ * 단어표 인쇄/표시 옵션을 고르는 FilterPanel — 구성(이미지/단어/표준 발음/구어체 발음)·용지 방향·외곽선은
49
+ * 항상 노출, 절취선·구분선은 옵션. wordTableSettings.ts의 공용 빌더를 그대로 써서 WordTableBlock의
50
+ * [표 설정] 패널과 동일한 매칭 규칙(값·라벨)을 유지한다. 칸 수 등 호출부 전용 섹션은 middleSections로 끼워 넣는다.
51
+ * `sections`를 직접 넘기면(셸 모드) 내부 조립을 건너뛰고 그대로 렌더링만 한다 — 이미 같은 빌더로
52
+ * 섹션을 직접 만든 훅(useWordTableDisplaySettings 등)을 위한 경로다.
53
+ * @public
54
+ */
55
+ export default function TableFilterPanel(props: TableFilterPanelProps): import("react").JSX.Element;
56
+ export {};
@@ -0,0 +1,42 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useTranslation } from 'react-i18next';
4
+ import FilterPanel from '../FilterPanel';
5
+ import { buildCompositionSection, buildOrientationSection, buildBorderSection, buildCutLineSection, buildDivLineSection, buildTableSettingsSelected, applyTableSettingsSelect, } from './wordTableSettings';
6
+ function isShellProps(props) {
7
+ return 'sections' in props;
8
+ }
9
+ /**
10
+ * 단어표 인쇄/표시 옵션을 고르는 FilterPanel — 구성(이미지/단어/표준 발음/구어체 발음)·용지 방향·외곽선은
11
+ * 항상 노출, 절취선·구분선은 옵션. wordTableSettings.ts의 공용 빌더를 그대로 써서 WordTableBlock의
12
+ * [표 설정] 패널과 동일한 매칭 규칙(값·라벨)을 유지한다. 칸 수 등 호출부 전용 섹션은 middleSections로 끼워 넣는다.
13
+ * `sections`를 직접 넘기면(셸 모드) 내부 조립을 건너뛰고 그대로 렌더링만 한다 — 이미 같은 빌더로
14
+ * 섹션을 직접 만든 훅(useWordTableDisplaySettings 등)을 위한 경로다.
15
+ * @public
16
+ */
17
+ export default function TableFilterPanel(props) {
18
+ const { t } = useTranslation();
19
+ const { title, className } = props;
20
+ if (isShellProps(props)) {
21
+ return (_jsx(FilterPanel, { className: className, title: title ?? t('wordTable.filterTitle', '표 설정'), sections: props.sections, selected: props.selected, onSelect: props.onSelect, align: "inline" }));
22
+ }
23
+ const { hasImage, hasColloquial, contentTypes, orientation, showOutline, cutLine, showDivLine, setters, showCutLine = false, showDivLine2 = false, middleSections = [], extraSelected = {}, onExtraSelect, } = props;
24
+ const sections = [
25
+ buildCompositionSection(t, { hasImage, hasColloquial }),
26
+ buildOrientationSection(t),
27
+ ...middleSections,
28
+ buildBorderSection(t),
29
+ ...(showCutLine ? [buildCutLineSection(t)] : []),
30
+ ...(showDivLine2 ? [buildDivLineSection(t)] : []),
31
+ ];
32
+ const selected = {
33
+ ...buildTableSettingsSelected(t, { contentTypes, orientation, showOutline, cutLine, showDivLine }),
34
+ ...extraSelected,
35
+ };
36
+ const onSelect = (value, sectionLabel) => {
37
+ if (applyTableSettingsSelect(t, value, sectionLabel, setters))
38
+ return;
39
+ onExtraSelect?.(value, sectionLabel);
40
+ };
41
+ return (_jsx(FilterPanel, { className: className, title: title ?? t('wordTable.filterTitle', '표 설정'), sections: sections, selected: selected, onSelect: onSelect, sectionAlign: "horizontal" }));
42
+ }
@@ -0,0 +1,23 @@
1
+ import type { ReactNode } from 'react';
2
+ import { type FilterPanelSection } from '../FilterPanel';
3
+ /** @public */
4
+ export interface WordSearchFilterPanelProps {
5
+ /** 패널 제목. 미지정 시 i18n(wordSearch.filterTitle) 기본값 사용. */
6
+ title?: ReactNode;
7
+ /**
8
+ * 미리 구성된 섹션들(등급/품사/어종/음절 수/선택 등) — 호출부마다 노출 섹션·순서·옵션이 달라(예:
9
+ * WordSearchPage는 고정 5섹션, WordTrainingFilterPanels는 훈련 타입별 caps로 가변) 섹션 자체는
10
+ * 호출부가 만든다. 이 컴포넌트는 그 결과를 일관된 제목·레이아웃으로 렌더링만 담당한다.
11
+ */
12
+ sections: FilterPanelSection[];
13
+ selected: Record<string, string | string[]>;
14
+ onSelect: (value: string, sectionLabel: string) => void;
15
+ className?: string;
16
+ }
17
+ /**
18
+ * 단어를 어떤 조건으로 좁힐지 고르는 FilterPanel 셸(shell) — 등급/품사/어종/음절 수/선택 섹션 자체는
19
+ * 호출부가 구성해 넘긴다. WordSearchPage의 [단어 검색 설정] 패널과 WordTrainingFilterPanels의
20
+ * [단어 선정] 패널이 원 출처(섹션 구성은 다르지만 같은 셸을 공용).
21
+ * @public
22
+ */
23
+ export default function WordSearchFilterPanel({ title, sections, selected, onSelect, className }: WordSearchFilterPanelProps): import("react").JSX.Element;
@@ -0,0 +1,14 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useTranslation } from 'react-i18next';
4
+ import FilterPanel from '../FilterPanel';
5
+ /**
6
+ * 단어를 어떤 조건으로 좁힐지 고르는 FilterPanel 셸(shell) — 등급/품사/어종/음절 수/선택 섹션 자체는
7
+ * 호출부가 구성해 넘긴다. WordSearchPage의 [단어 검색 설정] 패널과 WordTrainingFilterPanels의
8
+ * [단어 선정] 패널이 원 출처(섹션 구성은 다르지만 같은 셸을 공용).
9
+ * @public
10
+ */
11
+ export default function WordSearchFilterPanel({ title, sections, selected, onSelect, className }) {
12
+ const { t } = useTranslation();
13
+ return (_jsx(FilterPanel, { className: className, title: title ?? t('wordSearch.filterTitle', '단어 검색 설정'), sections: sections, selected: selected, onSelect: onSelect, align: "inline" }));
14
+ }