@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.
- package/README.md +591 -0
- package/dist/components.cjs.css +19 -0
- package/dist/components.cjs.js +975 -0
- package/dist/components.esm.css +19 -0
- package/dist/components.esm.js +975 -0
- package/dist/hooks.cjs.css +1 -0
- package/dist/hooks.cjs.js +799 -0
- package/dist/hooks.esm.css +1 -0
- package/dist/hooks.esm.js +799 -0
- package/dist/ihabdevteam-core-tokens.css +1 -0
- package/dist/ihabdevteam-core.cjs.js +993 -0
- package/dist/ihabdevteam-core.css +1 -0
- package/dist/ihabdevteam-core.d.ts +8272 -0
- package/dist/ihabdevteam-core.esm.js +993 -0
- package/dist/logo/Logo_APEB.svg +53 -0
- package/dist/logo/Logo_APEB_black.svg +42 -0
- package/dist/logo/Logo_APEB_white.svg +42 -0
- package/dist/logo/Logo_HTP_kr.svg +21 -0
- package/dist/logo/Logo_HTP_kr_black.svg +17 -0
- package/dist/logo/Logo_HTP_kr_white.svg +17 -0
- package/dist/logo/Logo_IHAB_en.svg +18 -0
- package/dist/logo/Logo_IHAB_en_black.svg +14 -0
- package/dist/logo/Logo_IHAB_en_white.svg +14 -0
- package/dist/logo/Logo_IHAB_kr.svg +18 -0
- package/dist/logo/Logo_IHAB_kr_black.svg +14 -0
- package/dist/logo/Logo_IHAB_kr_white.svg +14 -0
- package/dist/logo/Logo_SDS_kr.svg +22 -0
- package/dist/logo/Logo_SDS_kr_black.svg +18 -0
- package/dist/logo/Logo_SDS_kr_white.svg +18 -0
- package/dist/logo/Logo_speechearManager_kr.svg +20 -0
- package/dist/logo/Logo_speechearManager_kr_black.svg +21 -0
- package/dist/logo/Logo_speechearManager_kr_textWhite.svg +45 -0
- package/dist/logo/Logo_speechearManager_kr_white.svg +21 -0
- package/dist/logo/Logo_speechear_kr.svg +17 -0
- package/dist/logo/Logo_speechear_kr_black.svg +16 -0
- package/dist/logo/Logo_speechear_kr_textWhite.svg +42 -0
- package/dist/logo/Logo_speechear_kr_white.svg +16 -0
- package/dist/logo/Symbol_APEB.svg +34 -0
- package/dist/logo/Symbol_APEB_black.svg +15 -0
- package/dist/logo/Symbol_APEB_white.svg +15 -0
- package/dist/logo/Symbol_HTP.svg +14 -0
- package/dist/logo/Symbol_HTP_black.svg +10 -0
- package/dist/logo/Symbol_HTP_white.svg +10 -0
- package/dist/logo/Symbol_IHAB.svg +14 -0
- package/dist/logo/Symbol_IHAB_black.svg +10 -0
- package/dist/logo/Symbol_IHAB_white.svg +10 -0
- package/dist/logo/Symbol_SDS.svg +14 -0
- package/dist/logo/Symbol_SDS_black.svg +10 -0
- package/dist/logo/Symbol_SDS_white.svg +10 -0
- package/dist/logo/Symbol_speechear.svg +15 -0
- package/dist/logo/Symbol_speechear_black.svg +16 -0
- package/dist/logo/Symbol_speechear_white.svg +16 -0
- package/dist/logo/qr_speechear.svg +1 -0
- package/dist/packages/core/src/CoreScope.d.ts +40 -0
- package/dist/packages/core/src/CoreScope.js +19 -0
- package/dist/packages/core/src/components/Accordion.css +125 -0
- package/dist/packages/core/src/components/Accordion.d.ts +19 -0
- package/dist/packages/core/src/components/Accordion.js +33 -0
- package/dist/packages/core/src/components/ActionCard.css +109 -0
- package/dist/packages/core/src/components/ActionCard.d.ts +33 -0
- package/dist/packages/core/src/components/ActionCard.js +28 -0
- package/dist/packages/core/src/components/Alert.css +76 -0
- package/dist/packages/core/src/components/Alert.d.ts +18 -0
- package/dist/packages/core/src/components/Alert.js +28 -0
- package/dist/packages/core/src/components/AudioMeter.css +80 -0
- package/dist/packages/core/src/components/AudioMeter.d.ts +49 -0
- package/dist/packages/core/src/components/AudioMeter.js +91 -0
- package/dist/packages/core/src/components/Avatar.css +42 -0
- package/dist/packages/core/src/components/Avatar.d.ts +21 -0
- package/dist/packages/core/src/components/Avatar.js +31 -0
- package/dist/packages/core/src/components/Badge.css +166 -0
- package/dist/packages/core/src/components/Badge.d.ts +82 -0
- package/dist/packages/core/src/components/Badge.js +62 -0
- package/dist/packages/core/src/components/BarChart.css +142 -0
- package/dist/packages/core/src/components/BarChart.d.ts +16 -0
- package/dist/packages/core/src/components/BarChart.js +187 -0
- package/dist/packages/core/src/components/Board.css +85 -0
- package/dist/packages/core/src/components/Board.d.ts +39 -0
- package/dist/packages/core/src/components/Board.js +12 -0
- package/dist/packages/core/src/components/BottomNav.css +105 -0
- package/dist/packages/core/src/components/BottomNav.d.ts +32 -0
- package/dist/packages/core/src/components/BottomNav.js +92 -0
- package/dist/packages/core/src/components/Breadcrumb.css +62 -0
- package/dist/packages/core/src/components/Breadcrumb.d.ts +13 -0
- package/dist/packages/core/src/components/Breadcrumb.js +10 -0
- package/dist/packages/core/src/components/BulkBar.css +75 -0
- package/dist/packages/core/src/components/BulkBar.d.ts +22 -0
- package/dist/packages/core/src/components/BulkBar.js +40 -0
- package/dist/packages/core/src/components/Button.css +655 -0
- package/dist/packages/core/src/components/Button.d.ts +5 -0
- package/dist/packages/core/src/components/Button.js +202 -0
- package/dist/packages/core/src/components/Calendar.css +249 -0
- package/dist/packages/core/src/components/Calendar.d.ts +23 -0
- package/dist/packages/core/src/components/Calendar.js +92 -0
- package/dist/packages/core/src/components/ChartSection.css +191 -0
- package/dist/packages/core/src/components/ChartSection.d.ts +42 -0
- package/dist/packages/core/src/components/ChartSection.js +22 -0
- package/dist/packages/core/src/components/Checkbox.css +94 -0
- package/dist/packages/core/src/components/Checkbox.d.ts +16 -0
- package/dist/packages/core/src/components/Checkbox.js +15 -0
- package/dist/packages/core/src/components/ChoiceChips.css +65 -0
- package/dist/packages/core/src/components/ChoiceChips.d.ts +15 -0
- package/dist/packages/core/src/components/ChoiceChips.js +8 -0
- package/dist/packages/core/src/components/CircleBadge.d.ts +31 -0
- package/dist/packages/core/src/components/CircleBadge.js +20 -0
- package/dist/packages/core/src/components/CodeBox.css +62 -0
- package/dist/packages/core/src/components/CodeBox.d.ts +18 -0
- package/dist/packages/core/src/components/CodeBox.js +132 -0
- package/dist/packages/core/src/components/ColorPicker.css +40 -0
- package/dist/packages/core/src/components/ColorPicker.d.ts +17 -0
- package/dist/packages/core/src/components/ColorPicker.js +23 -0
- package/dist/packages/core/src/components/CompanyMeta.css +33 -0
- package/dist/packages/core/src/components/CompanyMeta.d.ts +14 -0
- package/dist/packages/core/src/components/CompanyMeta.js +12 -0
- package/dist/packages/core/src/components/CountTile.css +47 -0
- package/dist/packages/core/src/components/CountTile.d.ts +22 -0
- package/dist/packages/core/src/components/CountTile.js +24 -0
- package/dist/packages/core/src/components/DatePicker.css +151 -0
- package/dist/packages/core/src/components/DatePicker.d.ts +13 -0
- package/dist/packages/core/src/components/DatePicker.js +107 -0
- package/dist/packages/core/src/components/Dialog.css +98 -0
- package/dist/packages/core/src/components/Dialog.d.ts +31 -0
- package/dist/packages/core/src/components/Dialog.js +51 -0
- package/dist/packages/core/src/components/Divider.css +33 -0
- package/dist/packages/core/src/components/Divider.d.ts +13 -0
- package/dist/packages/core/src/components/Divider.js +14 -0
- package/dist/packages/core/src/components/Dropdown.css +175 -0
- package/dist/packages/core/src/components/Dropdown.d.ts +23 -0
- package/dist/packages/core/src/components/Dropdown.js +117 -0
- package/dist/packages/core/src/components/Effect/EffectPartyPopper.css +25 -0
- package/dist/packages/core/src/components/Effect/EffectPartyPopper.d.ts +11 -0
- package/dist/packages/core/src/components/Effect/EffectPartyPopper.js +298 -0
- package/dist/packages/core/src/components/Effect/EffectPartyPopperHost.d.ts +5 -0
- package/dist/packages/core/src/components/Effect/EffectPartyPopperHost.js +13 -0
- package/dist/packages/core/src/components/EmptyState.css +23 -0
- package/dist/packages/core/src/components/EmptyState.d.ts +19 -0
- package/dist/packages/core/src/components/EmptyState.js +7 -0
- package/dist/packages/core/src/components/ErrorState.css +2 -0
- package/dist/packages/core/src/components/ErrorState.d.ts +18 -0
- package/dist/packages/core/src/components/ErrorState.js +11 -0
- package/dist/packages/core/src/components/FileUpload.css +114 -0
- package/dist/packages/core/src/components/FileUpload.d.ts +25 -0
- package/dist/packages/core/src/components/FileUpload.js +111 -0
- package/dist/packages/core/src/components/FilterPanel.css +188 -0
- package/dist/packages/core/src/components/FilterPanel.d.ts +34 -0
- package/dist/packages/core/src/components/FilterPanel.js +82 -0
- package/dist/packages/core/src/components/FilterSectionInfo.d.ts +12 -0
- package/dist/packages/core/src/components/FilterSectionInfo.js +15 -0
- package/dist/packages/core/src/components/Footer.css +186 -0
- package/dist/packages/core/src/components/Footer.d.ts +18 -0
- package/dist/packages/core/src/components/Footer.js +19 -0
- package/dist/packages/core/src/components/Header.css +274 -0
- package/dist/packages/core/src/components/Header.d.ts +44 -0
- package/dist/packages/core/src/components/Header.js +98 -0
- package/dist/packages/core/src/components/HearingDeviceInfo.css +48 -0
- package/dist/packages/core/src/components/HearingDeviceInfo.d.ts +22 -0
- package/dist/packages/core/src/components/HearingDeviceInfo.js +13 -0
- package/dist/packages/core/src/components/Icon.d.ts +14 -0
- package/dist/packages/core/src/components/Icon.js +73 -0
- package/dist/packages/core/src/components/IconGridMenu.css +141 -0
- package/dist/packages/core/src/components/IconGridMenu.d.ts +20 -0
- package/dist/packages/core/src/components/IconGridMenu.js +45 -0
- package/dist/packages/core/src/components/LandingBottomSticky.css +114 -0
- package/dist/packages/core/src/components/LandingBottomSticky.d.ts +26 -0
- package/dist/packages/core/src/components/LandingBottomSticky.js +20 -0
- package/dist/packages/core/src/components/LandingHeader.css +192 -0
- package/dist/packages/core/src/components/LandingHeader.d.ts +67 -0
- package/dist/packages/core/src/components/LandingHeader.js +40 -0
- package/dist/packages/core/src/components/Loader.css +88 -0
- package/dist/packages/core/src/components/Loader.d.ts +14 -0
- package/dist/packages/core/src/components/Loader.js +12 -0
- package/dist/packages/core/src/components/NoticeBox.css +79 -0
- package/dist/packages/core/src/components/NoticeBox.d.ts +21 -0
- package/dist/packages/core/src/components/NoticeBox.js +19 -0
- package/dist/packages/core/src/components/PageTitle.css +27 -0
- package/dist/packages/core/src/components/PageTitle.d.ts +23 -0
- package/dist/packages/core/src/components/PageTitle.js +10 -0
- package/dist/packages/core/src/components/Pagination.css +11 -0
- package/dist/packages/core/src/components/Pagination.d.ts +22 -0
- package/dist/packages/core/src/components/Pagination.js +20 -0
- package/dist/packages/core/src/components/Panel.css +361 -0
- package/dist/packages/core/src/components/Panel.d.ts +166 -0
- package/dist/packages/core/src/components/Panel.js +162 -0
- package/dist/packages/core/src/components/PassCard/PassCard.css +289 -0
- package/dist/packages/core/src/components/PassCard/PassCard.d.ts +56 -0
- package/dist/packages/core/src/components/PassCard/PassCard.js +313 -0
- package/dist/packages/core/src/components/PassCard/PassCardBg.css +39 -0
- package/dist/packages/core/src/components/PassCard/PassCardBg.d.ts +8 -0
- package/dist/packages/core/src/components/PassCard/PassCardBg.js +6 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgIHAB.css +25 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgIHAB.d.ts +7 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgIHAB.js +18 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgLeftColorGrid.css +45 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgLeftColorGrid.d.ts +9 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgLeftColorGrid.js +19 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgSoundLine.css +19 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgSoundLine.d.ts +9 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgSoundLine.js +23 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgSoundLineV1.css +15 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgSoundLineV1.d.ts +9 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgSoundLineV1.js +24 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgSoundMove.css +16 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgSoundMove.d.ts +9 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgSoundMove.js +31 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgSoundMoveV1.css +16 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgSoundMoveV1.d.ts +9 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgSoundMoveV1.js +32 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgTalk.css +33 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgTalk.d.ts +9 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgTalk.js +18 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgTalkV1.css +36 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgTalkV1.d.ts +13 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgTalkV1.js +22 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgTheme.d.ts +38 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgTheme.js +34 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgTwoCircle.css +36 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgTwoCircle.d.ts +9 -0
- package/dist/packages/core/src/components/PassCard/PassCardBgTwoCircle.js +18 -0
- package/dist/packages/core/src/components/PassCard/PassCard_Back.css +76 -0
- package/dist/packages/core/src/components/PassCard/PassCard_Back.d.ts +13 -0
- package/dist/packages/core/src/components/PassCard/PassCard_Back.js +20 -0
- package/dist/packages/core/src/components/PassCard/ihabOutlinePath.d.ts +12 -0
- package/dist/packages/core/src/components/PassCard/ihabOutlinePath.js +19 -0
- package/dist/packages/core/src/components/PassCard/passCardProduct.d.ts +48 -0
- package/dist/packages/core/src/components/PassCard/passCardProduct.js +56 -0
- package/dist/packages/core/src/components/PaymentPlan.css +318 -0
- package/dist/packages/core/src/components/PaymentPlan.d.ts +57 -0
- package/dist/packages/core/src/components/PaymentPlan.js +126 -0
- package/dist/packages/core/src/components/PersonCard.css +72 -0
- package/dist/packages/core/src/components/PersonCard.d.ts +27 -0
- package/dist/packages/core/src/components/PersonCard.js +11 -0
- package/dist/packages/core/src/components/Popup/ConfirmPopup.d.ts +58 -0
- package/dist/packages/core/src/components/Popup/ConfirmPopup.js +59 -0
- package/dist/packages/core/src/components/Popup/CouponInputPopup.css +28 -0
- package/dist/packages/core/src/components/Popup/CouponInputPopup.d.ts +8 -0
- package/dist/packages/core/src/components/Popup/CouponInputPopup.js +45 -0
- package/dist/packages/core/src/components/Popup/DeviceListPopup.css +78 -0
- package/dist/packages/core/src/components/Popup/DeviceListPopup.d.ts +28 -0
- package/dist/packages/core/src/components/Popup/DeviceListPopup.js +31 -0
- package/dist/packages/core/src/components/Popup/DeviceSideTable.d.ts +41 -0
- package/dist/packages/core/src/components/Popup/DeviceSideTable.js +92 -0
- package/dist/packages/core/src/components/Popup/ListPopup.css +44 -0
- package/dist/packages/core/src/components/Popup/ListPopup.d.ts +75 -0
- package/dist/packages/core/src/components/Popup/ListPopup.js +85 -0
- package/dist/packages/core/src/components/Popup/LoadTablePopup.css +248 -0
- package/dist/packages/core/src/components/Popup/LoadTablePopup.d.ts +12 -0
- package/dist/packages/core/src/components/Popup/LoadTablePopup.js +86 -0
- package/dist/packages/core/src/components/Popup/Popup.css +136 -0
- package/dist/packages/core/src/components/Popup/Popup.d.ts +77 -0
- package/dist/packages/core/src/components/Popup/Popup.js +135 -0
- package/dist/packages/core/src/components/Popup/SaveTablePopup.css +32 -0
- package/dist/packages/core/src/components/Popup/SaveTablePopup.d.ts +25 -0
- package/dist/packages/core/src/components/Popup/SaveTablePopup.js +55 -0
- package/dist/packages/core/src/components/Popup/TrainingResultPopup.css +277 -0
- package/dist/packages/core/src/components/Popup/TrainingResultPopup.d.ts +14 -0
- package/dist/packages/core/src/components/Popup/TrainingResultPopup.js +104 -0
- package/dist/packages/core/src/components/Popup/WordDataUpdatePopup.css +119 -0
- package/dist/packages/core/src/components/Popup/WordDataUpdatePopup.d.ts +12 -0
- package/dist/packages/core/src/components/Popup/WordDataUpdatePopup.js +73 -0
- package/dist/packages/core/src/components/Popup/customerDetailUtils.d.ts +19 -0
- package/dist/packages/core/src/components/Popup/customerDetailUtils.js +45 -0
- package/dist/packages/core/src/components/ProgressBar.css +114 -0
- package/dist/packages/core/src/components/ProgressBar.d.ts +65 -0
- package/dist/packages/core/src/components/ProgressBar.js +51 -0
- package/dist/packages/core/src/components/ProgressIndicator.css +41 -0
- package/dist/packages/core/src/components/ProgressIndicator.d.ts +18 -0
- package/dist/packages/core/src/components/ProgressIndicator.js +45 -0
- package/dist/packages/core/src/components/PromoBanner.css +54 -0
- package/dist/packages/core/src/components/PromoBanner.d.ts +30 -0
- package/dist/packages/core/src/components/PromoBanner.js +54 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBg.css +8 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDark.css +3 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDark.d.ts +11 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDark.js +20 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDeep.css +3 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDeep.d.ts +10 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDeep.js +19 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDiagonal.css +10 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDiagonal.d.ts +10 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDiagonal.js +19 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDots.css +5 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDots.d.ts +10 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgDots.js +19 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgInstagram.css +3 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgInstagram.d.ts +11 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgInstagram.js +20 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgMain.css +3 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgMain.d.ts +12 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgMain.js +21 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgNaver.css +3 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgNaver.d.ts +11 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgNaver.js +20 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgOutline.css +16 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgOutline.d.ts +11 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgOutline.js +20 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgRadial.css +3 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgRadial.d.ts +10 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgRadial.js +19 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSoft.css +3 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSoft.d.ts +12 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSoft.js +21 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSoftSub.css +3 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSoftSub.d.ts +10 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSoftSub.js +19 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSub.css +3 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSub.d.ts +10 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSub.js +19 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSuccess.css +3 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSuccess.d.ts +11 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgSuccess.js +20 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgTheme.d.ts +32 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgTheme.js +29 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgWarm.css +3 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgWarm.d.ts +11 -0
- package/dist/packages/core/src/components/PromoBannerBg/PromoBannerBgWarm.js +20 -0
- package/dist/packages/core/src/components/PromoBannerBg/promoBannerBg.d.ts +21 -0
- package/dist/packages/core/src/components/PromoBannerBg/promoBannerBg.js +49 -0
- package/dist/packages/core/src/components/PublicationCard.css +70 -0
- package/dist/packages/core/src/components/PublicationCard.d.ts +31 -0
- package/dist/packages/core/src/components/PublicationCard.js +11 -0
- package/dist/packages/core/src/components/Radio.css +64 -0
- package/dist/packages/core/src/components/Radio.d.ts +13 -0
- package/dist/packages/core/src/components/Radio.js +9 -0
- package/dist/packages/core/src/components/RadioGroup.css +14 -0
- package/dist/packages/core/src/components/RadioGroup.d.ts +21 -0
- package/dist/packages/core/src/components/RadioGroup.js +14 -0
- package/dist/packages/core/src/components/Rating.css +69 -0
- package/dist/packages/core/src/components/Rating.d.ts +21 -0
- package/dist/packages/core/src/components/Rating.js +51 -0
- package/dist/packages/core/src/components/RingChart.css +50 -0
- package/dist/packages/core/src/components/RingChart.d.ts +68 -0
- package/dist/packages/core/src/components/RingChart.js +57 -0
- package/dist/packages/core/src/components/SearchSummary.css +62 -0
- package/dist/packages/core/src/components/SearchSummary.d.ts +32 -0
- package/dist/packages/core/src/components/SearchSummary.js +48 -0
- package/dist/packages/core/src/components/Section.css +73 -0
- package/dist/packages/core/src/components/Section.d.ts +16 -0
- package/dist/packages/core/src/components/Section.js +15 -0
- package/dist/packages/core/src/components/SectionHeader.css +87 -0
- package/dist/packages/core/src/components/SectionHeader.d.ts +31 -0
- package/dist/packages/core/src/components/SectionHeader.js +16 -0
- package/dist/packages/core/src/components/SegmentedControl.css +67 -0
- package/dist/packages/core/src/components/SegmentedControl.d.ts +26 -0
- package/dist/packages/core/src/components/SegmentedControl.js +13 -0
- package/dist/packages/core/src/components/ShortcutBadge.css +68 -0
- package/dist/packages/core/src/components/ShortcutBadge.d.ts +31 -0
- package/dist/packages/core/src/components/ShortcutBadge.js +23 -0
- package/dist/packages/core/src/components/SideNav.css +281 -0
- package/dist/packages/core/src/components/SideNav.d.ts +32 -0
- package/dist/packages/core/src/components/SideNav.js +92 -0
- package/dist/packages/core/src/components/Slider.css +184 -0
- package/dist/packages/core/src/components/Slider.d.ts +67 -0
- package/dist/packages/core/src/components/Slider.js +97 -0
- package/dist/packages/core/src/components/SoundCompass.css +138 -0
- package/dist/packages/core/src/components/SoundCompass.d.ts +42 -0
- package/dist/packages/core/src/components/SoundCompass.js +136 -0
- package/dist/packages/core/src/components/SplashLogo.css +32 -0
- package/dist/packages/core/src/components/SplashLogo.d.ts +35 -0
- package/dist/packages/core/src/components/SplashLogo.js +32 -0
- package/dist/packages/core/src/components/StatChart.css +83 -0
- package/dist/packages/core/src/components/StatChart.d.ts +26 -0
- package/dist/packages/core/src/components/StatChart.js +41 -0
- package/dist/packages/core/src/components/Table.css +158 -0
- package/dist/packages/core/src/components/Table.d.ts +94 -0
- package/dist/packages/core/src/components/Table.js +200 -0
- package/dist/packages/core/src/components/TableCell.css +12 -0
- package/dist/packages/core/src/components/TableField.css +60 -0
- package/dist/packages/core/src/components/Tabs.css +55 -0
- package/dist/packages/core/src/components/Tabs.d.ts +30 -0
- package/dist/packages/core/src/components/Tabs.js +55 -0
- package/dist/packages/core/src/components/TextField.css +266 -0
- package/dist/packages/core/src/components/TextField.d.ts +86 -0
- package/dist/packages/core/src/components/TextField.js +149 -0
- package/dist/packages/core/src/components/Timeline.css +62 -0
- package/dist/packages/core/src/components/Timeline.d.ts +26 -0
- package/dist/packages/core/src/components/Timeline.js +11 -0
- package/dist/packages/core/src/components/Toast.css +76 -0
- package/dist/packages/core/src/components/Toast.d.ts +10 -0
- package/dist/packages/core/src/components/Toast.js +19 -0
- package/dist/packages/core/src/components/Toggle.css +61 -0
- package/dist/packages/core/src/components/Toggle.d.ts +18 -0
- package/dist/packages/core/src/components/Toggle.js +7 -0
- package/dist/packages/core/src/components/Toolbar.css +86 -0
- package/dist/packages/core/src/components/Toolbar.d.ts +52 -0
- package/dist/packages/core/src/components/Toolbar.js +20 -0
- package/dist/packages/core/src/components/Tooltip/DebugTooltip.css +27 -0
- package/dist/packages/core/src/components/Tooltip/DebugTooltip.d.ts +12 -0
- package/dist/packages/core/src/components/Tooltip/DebugTooltip.js +79 -0
- package/dist/packages/core/src/components/Tooltip/DescriptionTooltip.css +50 -0
- package/dist/packages/core/src/components/Tooltip/DescriptionTooltip.d.ts +16 -0
- package/dist/packages/core/src/components/Tooltip/DescriptionTooltip.js +11 -0
- package/dist/packages/core/src/components/Tooltip/InfoTooltip.css +39 -0
- package/dist/packages/core/src/components/Tooltip/InfoTooltip.d.ts +13 -0
- package/dist/packages/core/src/components/Tooltip/InfoTooltip.js +10 -0
- package/dist/packages/core/src/components/Tooltip/MenuTooltip.css +93 -0
- package/dist/packages/core/src/components/Tooltip/MenuTooltip.d.ts +30 -0
- package/dist/packages/core/src/components/Tooltip/MenuTooltip.js +92 -0
- package/dist/packages/core/src/components/Tooltip/TextBoxTooltip.css +95 -0
- package/dist/packages/core/src/components/Tooltip/TextBoxTooltip.d.ts +13 -0
- package/dist/packages/core/src/components/Tooltip/TextBoxTooltip.js +55 -0
- package/dist/packages/core/src/components/Tooltip/Tooltip.css +120 -0
- package/dist/packages/core/src/components/Tooltip/Tooltip.d.ts +25 -0
- package/dist/packages/core/src/components/Tooltip/Tooltip.js +296 -0
- package/dist/packages/core/src/components/Tooltip/TrainingTooltip.css +67 -0
- package/dist/packages/core/src/components/Tooltip/TrainingTooltip.d.ts +16 -0
- package/dist/packages/core/src/components/Tooltip/TrainingTooltip.js +40 -0
- package/dist/packages/core/src/components/Tooltip/WordImageTooltip.css +61 -0
- package/dist/packages/core/src/components/Tooltip/WordImageTooltip.d.ts +12 -0
- package/dist/packages/core/src/components/Tooltip/WordImageTooltip.js +39 -0
- package/dist/packages/core/src/components/Tooltip/tooltipConstants.d.ts +44 -0
- package/dist/packages/core/src/components/Tooltip/tooltipConstants.js +38 -0
- package/dist/packages/core/src/components/TopBanner.css +100 -0
- package/dist/packages/core/src/components/TopBanner.d.ts +25 -0
- package/dist/packages/core/src/components/TopBanner.js +36 -0
- package/dist/packages/core/src/components/Training/AudioPlayerWaveForm.d.ts +17 -0
- package/dist/packages/core/src/components/Training/AudioPlayerWaveForm.js +237 -0
- package/dist/packages/core/src/components/Training/CategoryIcon.css +85 -0
- package/dist/packages/core/src/components/Training/CategoryIcon.d.ts +16 -0
- package/dist/packages/core/src/components/Training/CategoryIcon.js +79 -0
- package/dist/packages/core/src/components/Training/NoisePlayerContext.d.ts +43 -0
- package/dist/packages/core/src/components/Training/NoisePlayerContext.js +26 -0
- package/dist/packages/core/src/components/Training/NoiseSettingsTooltip.css +52 -0
- package/dist/packages/core/src/components/Training/NoiseSettingsTooltip.d.ts +13 -0
- package/dist/packages/core/src/components/Training/NoiseSettingsTooltip.js +81 -0
- package/dist/packages/core/src/components/Training/TrainingBlock.css +33 -0
- package/dist/packages/core/src/components/Training/TrainingBlock.d.ts +45 -0
- package/dist/packages/core/src/components/Training/TrainingBlock.js +44 -0
- package/dist/packages/core/src/components/Training/TrainingBlockButton.css +337 -0
- package/dist/packages/core/src/components/Training/TrainingBlockButton.d.ts +5 -0
- package/dist/packages/core/src/components/Training/TrainingBlockButton.js +193 -0
- package/dist/packages/core/src/components/Training/TrainingCard.css +178 -0
- package/dist/packages/core/src/components/Training/TrainingCard.d.ts +24 -0
- package/dist/packages/core/src/components/Training/TrainingCard.js +29 -0
- package/dist/packages/core/src/components/Training/TrainingCardGroup.css +73 -0
- package/dist/packages/core/src/components/Training/TrainingCardGroup.d.ts +41 -0
- package/dist/packages/core/src/components/Training/TrainingCardGroup.js +16 -0
- package/dist/packages/core/src/components/Training/TrainingPagePopup.css +210 -0
- package/dist/packages/core/src/components/Training/TrainingPagePopup.d.ts +91 -0
- package/dist/packages/core/src/components/Training/TrainingPagePopup.js +799 -0
- package/dist/packages/core/src/components/Training/TrainingPagePopupBottom.css +45 -0
- package/dist/packages/core/src/components/Training/TrainingPagePopupBottom.d.ts +14 -0
- package/dist/packages/core/src/components/Training/TrainingPagePopupBottom.js +60 -0
- package/dist/packages/core/src/components/Training/TrainingPagePopupContext.d.ts +13 -0
- package/dist/packages/core/src/components/Training/TrainingPagePopupContext.js +12 -0
- package/dist/packages/core/src/components/Training/TrainingPagePopupTitle.css +77 -0
- package/dist/packages/core/src/components/Training/TrainingPagePopupTitle.d.ts +21 -0
- package/dist/packages/core/src/components/Training/TrainingPagePopupTitle.js +41 -0
- package/dist/packages/core/src/components/Training/TrainingStep.css +236 -0
- package/dist/packages/core/src/components/Training/TrainingStep.d.ts +15 -0
- package/dist/packages/core/src/components/Training/TrainingStep.js +89 -0
- package/dist/packages/core/src/components/Training/TrainingStepAudioPlayer.css +320 -0
- package/dist/packages/core/src/components/Training/TrainingStepAudioPlayer.d.ts +5 -0
- package/dist/packages/core/src/components/Training/TrainingStepAudioPlayer.js +971 -0
- package/dist/packages/core/src/components/Training/TrainingStepBullet.css +148 -0
- package/dist/packages/core/src/components/Training/TrainingStepBullet.d.ts +6 -0
- package/dist/packages/core/src/components/Training/TrainingStepBullet.js +11 -0
- package/dist/packages/core/src/components/Training/TrainingStepCard.css +0 -0
- package/dist/packages/core/src/components/Training/TrainingStepCard.d.ts +36 -0
- package/dist/packages/core/src/components/Training/TrainingStepCard.js +110 -0
- package/dist/packages/core/src/components/Training/TrainingStepCardOrder.d.ts +15 -0
- package/dist/packages/core/src/components/Training/TrainingStepCardOrder.js +58 -0
- package/dist/packages/core/src/components/Training/TrainingStepComponents.d.ts +35 -0
- package/dist/packages/core/src/components/Training/TrainingStepComponents.js +60 -0
- package/dist/packages/core/src/components/Training/TrainingStepConfirm.d.ts +24 -0
- package/dist/packages/core/src/components/Training/TrainingStepConfirm.js +117 -0
- package/dist/packages/core/src/components/Training/TrainingStepConfirmWithText.d.ts +16 -0
- package/dist/packages/core/src/components/Training/TrainingStepConfirmWithText.js +60 -0
- package/dist/packages/core/src/components/Training/TrainingStepListen.d.ts +27 -0
- package/dist/packages/core/src/components/Training/TrainingStepListen.js +13 -0
- package/dist/packages/core/src/components/Training/TrainingStepOrderList.css +221 -0
- package/dist/packages/core/src/components/Training/TrainingStepOrderList.d.ts +7 -0
- package/dist/packages/core/src/components/Training/TrainingStepOrderList.js +445 -0
- package/dist/packages/core/src/components/Training/TrainingStepTextBox.css +111 -0
- package/dist/packages/core/src/components/Training/TrainingStepTextBox.d.ts +8 -0
- package/dist/packages/core/src/components/Training/TrainingStepTextBox.js +74 -0
- package/dist/packages/core/src/components/Training/TrainingStepTitle.css +89 -0
- package/dist/packages/core/src/components/Training/TrainingStepTitle.d.ts +21 -0
- package/dist/packages/core/src/components/Training/TrainingStepTitle.js +91 -0
- package/dist/packages/core/src/components/Training/TrainingWordCard.css +266 -0
- package/dist/packages/core/src/components/Training/TrainingWordCard.d.ts +43 -0
- package/dist/packages/core/src/components/Training/TrainingWordCard.js +229 -0
- package/dist/packages/core/src/components/Training/WordTablePopup.css +56 -0
- package/dist/packages/core/src/components/Training/WordTablePopup.d.ts +61 -0
- package/dist/packages/core/src/components/Training/WordTablePopup.js +105 -0
- package/dist/packages/core/src/components/Training/audioPlaybackRules.d.ts +95 -0
- package/dist/packages/core/src/components/Training/audioPlaybackRules.js +125 -0
- package/dist/packages/core/src/components/Training/audioWaits.d.ts +27 -0
- package/dist/packages/core/src/components/Training/audioWaits.js +64 -0
- package/dist/packages/core/src/components/Training/currentSound.d.ts +26 -0
- package/dist/packages/core/src/components/Training/currentSound.js +46 -0
- package/dist/packages/core/src/components/Training/pagePopupTiming.d.ts +17 -0
- package/dist/packages/core/src/components/Training/pagePopupTiming.js +17 -0
- package/dist/packages/core/src/components/Training/trainingBlockButtonTypes.d.ts +79 -0
- package/dist/packages/core/src/components/Training/trainingBlockButtonTypes.js +27 -0
- package/dist/packages/core/src/components/Training/trainingMissStats.d.ts +148 -0
- package/dist/packages/core/src/components/Training/trainingMissStats.js +163 -0
- package/dist/packages/core/src/components/Training/trainingPopupUtils.d.ts +108 -0
- package/dist/packages/core/src/components/Training/trainingPopupUtils.js +226 -0
- package/dist/packages/core/src/components/Training/trainingScenario.d.ts +42 -0
- package/dist/packages/core/src/components/Training/trainingScenario.js +25 -0
- package/dist/packages/core/src/components/Training/trainingStepAudioPlayerTypes.d.ts +37 -0
- package/dist/packages/core/src/components/Training/trainingStepAudioPlayerTypes.js +20 -0
- package/dist/packages/core/src/components/Training/trainingStepOrderListTypes.d.ts +34 -0
- package/dist/packages/core/src/components/Training/trainingStepOrderListTypes.js +5 -0
- package/dist/packages/core/src/components/Training/useAnchorRect.d.ts +26 -0
- package/dist/packages/core/src/components/Training/useAnchorRect.js +52 -0
- package/dist/packages/core/src/components/Training/useAudioPreview.d.ts +11 -0
- package/dist/packages/core/src/components/Training/useAudioPreview.js +178 -0
- package/dist/packages/core/src/components/Training/useNoiseFade.d.ts +24 -0
- package/dist/packages/core/src/components/Training/useNoiseFade.js +303 -0
- package/dist/packages/core/src/components/Training/useObjectUrls.d.ts +25 -0
- package/dist/packages/core/src/components/Training/useObjectUrls.js +56 -0
- package/dist/packages/core/src/components/Training/useProgressTicker.d.ts +33 -0
- package/dist/packages/core/src/components/Training/useProgressTicker.js +74 -0
- package/dist/packages/core/src/components/Training/useTTSPlayback.d.ts +30 -0
- package/dist/packages/core/src/components/Training/useTTSPlayback.js +172 -0
- package/dist/packages/core/src/components/Training/useWaveReady.d.ts +36 -0
- package/dist/packages/core/src/components/Training/useWaveReady.js +65 -0
- package/dist/packages/core/src/components/UpdateAlert.css +116 -0
- package/dist/packages/core/src/components/UpdateAlert.d.ts +23 -0
- package/dist/packages/core/src/components/UpdateAlert.js +25 -0
- package/dist/packages/core/src/components/Word/ContrastFilterPanel.d.ts +25 -0
- package/dist/packages/core/src/components/Word/ContrastFilterPanel.js +69 -0
- package/dist/packages/core/src/components/Word/PhonemeFilterPanel.d.ts +24 -0
- package/dist/packages/core/src/components/Word/PhonemeFilterPanel.js +15 -0
- package/dist/packages/core/src/components/Word/PhonemeSelectBlock.css +272 -0
- package/dist/packages/core/src/components/Word/PhonemeSelectBlock.d.ts +45 -0
- package/dist/packages/core/src/components/Word/PhonemeSelectBlock.js +71 -0
- package/dist/packages/core/src/components/Word/TableFilterPanel.d.ts +56 -0
- package/dist/packages/core/src/components/Word/TableFilterPanel.js +42 -0
- package/dist/packages/core/src/components/Word/WordSearchFilterPanel.d.ts +23 -0
- package/dist/packages/core/src/components/Word/WordSearchFilterPanel.js +14 -0
- package/dist/packages/core/src/components/Word/WordSearchResultBlock.css +130 -0
- package/dist/packages/core/src/components/Word/WordSearchResultBlock.d.ts +47 -0
- package/dist/packages/core/src/components/Word/WordSearchResultBlock.js +141 -0
- package/dist/packages/core/src/components/Word/WordTableBlock.css +85 -0
- package/dist/packages/core/src/components/Word/WordTableBlock.d.ts +5 -0
- package/dist/packages/core/src/components/Word/WordTableBlock.js +297 -0
- package/dist/packages/core/src/components/Word/WordTableButton.css +185 -0
- package/dist/packages/core/src/components/Word/WordTableButton.d.ts +48 -0
- package/dist/packages/core/src/components/Word/WordTableButton.js +28 -0
- package/dist/packages/core/src/components/Word/WordTableThumbnail.css +56 -0
- package/dist/packages/core/src/components/Word/WordTableThumbnail.d.ts +10 -0
- package/dist/packages/core/src/components/Word/WordTableThumbnail.js +21 -0
- package/dist/packages/core/src/components/Word/generatedDraft.d.ts +39 -0
- package/dist/packages/core/src/components/Word/generatedDraft.js +69 -0
- package/dist/packages/core/src/components/Word/phonemeSelectBlockUtils.d.ts +14 -0
- package/dist/packages/core/src/components/Word/phonemeSelectBlockUtils.js +10 -0
- package/dist/packages/core/src/components/Word/useWordTableDisplaySettings.d.ts +35 -0
- package/dist/packages/core/src/components/Word/useWordTableDisplaySettings.js +82 -0
- package/dist/packages/core/src/components/Word/useWordTablePrint.d.ts +31 -0
- package/dist/packages/core/src/components/Word/useWordTablePrint.js +43 -0
- package/dist/packages/core/src/components/Word/wordScoreStats.d.ts +77 -0
- package/dist/packages/core/src/components/Word/wordScoreStats.js +100 -0
- package/dist/packages/core/src/components/Word/wordTableBlockTypes.d.ts +85 -0
- package/dist/packages/core/src/components/Word/wordTableBlockTypes.js +3 -0
- package/dist/packages/core/src/components/Word/wordTablePrint.d.ts +14 -0
- package/dist/packages/core/src/components/Word/wordTablePrint.js +210 -0
- package/dist/packages/core/src/components/Word/wordTableRecommend.d.ts +67 -0
- package/dist/packages/core/src/components/Word/wordTableRecommend.js +91 -0
- package/dist/packages/core/src/components/Word/wordTableReview.d.ts +49 -0
- package/dist/packages/core/src/components/Word/wordTableReview.js +112 -0
- package/dist/packages/core/src/components/Word/wordTableScoring.d.ts +100 -0
- package/dist/packages/core/src/components/Word/wordTableScoring.js +126 -0
- package/dist/packages/core/src/components/Word/wordTableSettings.d.ts +56 -0
- package/dist/packages/core/src/components/Word/wordTableSettings.js +140 -0
- package/dist/packages/core/src/components/WordTable.css +424 -0
- package/dist/packages/core/src/components/WordTable.d.ts +75 -0
- package/dist/packages/core/src/components/WordTable.js +184 -0
- package/dist/packages/core/src/components/barChartData.d.ts +48 -0
- package/dist/packages/core/src/components/barChartData.js +111 -0
- package/dist/packages/core/src/components/barChartTypes.d.ts +82 -0
- package/dist/packages/core/src/components/barChartTypes.js +22 -0
- package/dist/packages/core/src/components/buttonTypes.d.ts +102 -0
- package/dist/packages/core/src/components/buttonTypes.js +1 -0
- package/dist/packages/core/src/components/tableTrackList.d.ts +9 -0
- package/dist/packages/core/src/components/tableTrackList.js +32 -0
- package/dist/packages/core/src/components/useAnchoredMenu.d.ts +28 -0
- package/dist/packages/core/src/components/useAnchoredMenu.js +72 -0
- package/dist/packages/core/src/components/useBarChartControl.d.ts +8 -0
- package/dist/packages/core/src/components/useBarChartControl.js +76 -0
- package/dist/packages/core/src/components/useCalendarMonth.d.ts +12 -0
- package/dist/packages/core/src/components/useCalendarMonth.js +50 -0
- package/dist/packages/core/src/components/useComboboxSuggestions.d.ts +22 -0
- package/dist/packages/core/src/components/useComboboxSuggestions.js +60 -0
- package/dist/packages/core/src/components/useFitScale.d.ts +16 -0
- package/dist/packages/core/src/components/useFitScale.js +43 -0
- package/dist/packages/core/src/components/useSoundCompassExam.d.ts +54 -0
- package/dist/packages/core/src/components/useSoundCompassExam.js +128 -0
- package/dist/packages/core/src/components/useToastLifecycle.d.ts +16 -0
- package/dist/packages/core/src/components/useToastLifecycle.js +140 -0
- package/dist/packages/core/src/components/wordTableLayout.d.ts +76 -0
- package/dist/packages/core/src/components/wordTableLayout.js +162 -0
- package/dist/packages/core/src/components.d.ts +314 -0
- package/dist/packages/core/src/components.js +232 -0
- package/dist/packages/core/src/context/I18nContext.d.ts +11 -0
- package/dist/packages/core/src/context/I18nContext.js +20 -0
- package/dist/packages/core/src/context/I18nProvider.d.ts +9 -0
- package/dist/packages/core/src/context/I18nProvider.js +15 -0
- package/dist/packages/core/src/context/WordDataContext.d.ts +25 -0
- package/dist/packages/core/src/context/WordDataContext.js +6 -0
- package/dist/packages/core/src/context/WordDataProvider.d.ts +5 -0
- package/dist/packages/core/src/context/WordDataProvider.js +5 -0
- package/dist/packages/core/src/hooks/bodyScrollLock.d.ts +5 -0
- package/dist/packages/core/src/hooks/bodyScrollLock.js +62 -0
- package/dist/packages/core/src/hooks/escStack.d.ts +2 -0
- package/dist/packages/core/src/hooks/escStack.js +38 -0
- package/dist/packages/core/src/hooks/useBackgroundUrl.d.ts +2 -0
- package/dist/packages/core/src/hooks/useBackgroundUrl.js +13 -0
- package/dist/packages/core/src/hooks/useCacheManagement.d.ts +34 -0
- package/dist/packages/core/src/hooks/useCacheManagement.js +107 -0
- package/dist/packages/core/src/hooks/useDailyTrainingSelection.d.ts +17 -0
- package/dist/packages/core/src/hooks/useDailyTrainingSelection.js +87 -0
- package/dist/packages/core/src/hooks/useDeviceManagement.d.ts +37 -0
- package/dist/packages/core/src/hooks/useDeviceManagement.js +40 -0
- package/dist/packages/core/src/hooks/useDocumentTitle.d.ts +22 -0
- package/dist/packages/core/src/hooks/useDocumentTitle.js +49 -0
- package/dist/packages/core/src/hooks/useEditableList.d.ts +20 -0
- package/dist/packages/core/src/hooks/useEditableList.js +73 -0
- package/dist/packages/core/src/hooks/useEscToClose.d.ts +19 -0
- package/dist/packages/core/src/hooks/useEscToClose.js +30 -0
- package/dist/packages/core/src/hooks/useFocusTrap.d.ts +19 -0
- package/dist/packages/core/src/hooks/useFocusTrap.js +50 -0
- package/dist/packages/core/src/hooks/useFontScale.d.ts +20 -0
- package/dist/packages/core/src/hooks/useFontScale.js +51 -0
- package/dist/packages/core/src/hooks/useHoverAnchor.d.ts +33 -0
- package/dist/packages/core/src/hooks/useHoverAnchor.js +49 -0
- package/dist/packages/core/src/hooks/useIcon.d.ts +7 -0
- package/dist/packages/core/src/hooks/useIcon.js +124 -0
- package/dist/packages/core/src/hooks/useLatestRef.d.ts +12 -0
- package/dist/packages/core/src/hooks/useLatestRef.js +17 -0
- package/dist/packages/core/src/hooks/useLucideIcon.d.ts +15 -0
- package/dist/packages/core/src/hooks/useLucideIcon.js +71 -0
- package/dist/packages/core/src/hooks/useMediaQuery.d.ts +17 -0
- package/dist/packages/core/src/hooks/useMediaQuery.js +45 -0
- package/dist/packages/core/src/hooks/usePagedList.d.ts +23 -0
- package/dist/packages/core/src/hooks/usePagedList.js +26 -0
- package/dist/packages/core/src/hooks/useParentBgTheme.d.ts +8 -0
- package/dist/packages/core/src/hooks/useParentBgTheme.js +18 -0
- package/dist/packages/core/src/hooks/usePasswordChange.d.ts +28 -0
- package/dist/packages/core/src/hooks/usePasswordChange.js +54 -0
- package/dist/packages/core/src/hooks/useRelativeDay.d.ts +12 -0
- package/dist/packages/core/src/hooks/useRelativeDay.js +30 -0
- package/dist/packages/core/src/hooks/useTablePaging.d.ts +46 -0
- package/dist/packages/core/src/hooks/useTablePaging.js +63 -0
- package/dist/packages/core/src/hooks/useToastState.d.ts +15 -0
- package/dist/packages/core/src/hooks/useToastState.js +29 -0
- package/dist/packages/core/src/hooks/useTrainingSessionLog.d.ts +7 -0
- package/dist/packages/core/src/hooks/useTrainingSessionLog.js +26 -0
- package/dist/packages/core/src/hooks/useTrainingTypeLabels.d.ts +16 -0
- package/dist/packages/core/src/hooks/useTrainingTypeLabels.js +25 -0
- package/dist/packages/core/src/hooks/useVisitAllPanel.d.ts +30 -0
- package/dist/packages/core/src/hooks/useVisitAllPanel.js +43 -0
- package/dist/packages/core/src/hooks/useVisitHistory.d.ts +38 -0
- package/dist/packages/core/src/hooks/useVisitHistory.js +59 -0
- package/dist/packages/core/src/hooks/useVisitSchedule.d.ts +31 -0
- package/dist/packages/core/src/hooks/useVisitSchedule.js +101 -0
- package/dist/packages/core/src/hooks/useWindowEvent.d.ts +11 -0
- package/dist/packages/core/src/hooks/useWindowEvent.js +27 -0
- package/dist/packages/core/src/hooks/useWordAttributeFilter.d.ts +70 -0
- package/dist/packages/core/src/hooks/useWordAttributeFilter.js +115 -0
- package/dist/packages/core/src/hooks/useWordDataStats.d.ts +22 -0
- package/dist/packages/core/src/hooks/useWordDataStats.js +40 -0
- package/dist/packages/core/src/hooks/useWordImage.d.ts +19 -0
- package/dist/packages/core/src/hooks/useWordImage.js +28 -0
- package/dist/packages/core/src/hooks/useWordMeanings.d.ts +39 -0
- package/dist/packages/core/src/hooks/useWordMeanings.js +62 -0
- package/dist/packages/core/src/hooks/useWordTrainingDataGeneration.d.ts +34 -0
- package/dist/packages/core/src/hooks/useWordTrainingDataGeneration.js +98 -0
- package/dist/packages/core/src/hooks/useWordTrainingFilter.d.ts +91 -0
- package/dist/packages/core/src/hooks/useWordTrainingFilter.js +549 -0
- package/dist/packages/core/src/hooks/wordTrainingFilterModel.d.ts +61 -0
- package/dist/packages/core/src/hooks/wordTrainingFilterModel.js +102 -0
- package/dist/packages/core/src/hooks.d.ts +27 -0
- package/dist/packages/core/src/hooks.js +28 -0
- package/dist/packages/core/src/i18n/index.d.ts +21 -0
- package/dist/packages/core/src/i18n/index.js +68 -0
- package/dist/packages/core/src/i18n/locales/en.json +4055 -0
- package/dist/packages/core/src/i18n/locales/ko.json +4052 -0
- package/dist/packages/core/src/icon/none.svg +4 -0
- package/dist/packages/core/src/icon/null.svg +3 -0
- package/dist/packages/core/src/index.d.ts +16 -0
- package/dist/packages/core/src/index.js +25 -0
- package/dist/packages/core/src/logo/Logo_APEB.svg +53 -0
- package/dist/packages/core/src/logo/Logo_APEB_black.svg +42 -0
- package/dist/packages/core/src/logo/Logo_APEB_white.svg +42 -0
- package/dist/packages/core/src/logo/Logo_HTP_kr.svg +21 -0
- package/dist/packages/core/src/logo/Logo_HTP_kr_black.svg +17 -0
- package/dist/packages/core/src/logo/Logo_HTP_kr_white.svg +17 -0
- package/dist/packages/core/src/logo/Logo_IHAB_en.svg +18 -0
- package/dist/packages/core/src/logo/Logo_IHAB_en_black.svg +14 -0
- package/dist/packages/core/src/logo/Logo_IHAB_en_white.svg +14 -0
- package/dist/packages/core/src/logo/Logo_IHAB_kr.svg +18 -0
- package/dist/packages/core/src/logo/Logo_IHAB_kr_black.svg +14 -0
- package/dist/packages/core/src/logo/Logo_IHAB_kr_white.svg +14 -0
- package/dist/packages/core/src/logo/Logo_SDS_kr.svg +22 -0
- package/dist/packages/core/src/logo/Logo_SDS_kr_black.svg +18 -0
- package/dist/packages/core/src/logo/Logo_SDS_kr_white.svg +18 -0
- package/dist/packages/core/src/logo/Logo_speechearManager_kr.svg +20 -0
- package/dist/packages/core/src/logo/Logo_speechearManager_kr_black.svg +21 -0
- package/dist/packages/core/src/logo/Logo_speechearManager_kr_textWhite.svg +45 -0
- package/dist/packages/core/src/logo/Logo_speechearManager_kr_white.svg +21 -0
- package/dist/packages/core/src/logo/Logo_speechear_kr.svg +17 -0
- package/dist/packages/core/src/logo/Logo_speechear_kr_black.svg +16 -0
- package/dist/packages/core/src/logo/Logo_speechear_kr_textWhite.svg +42 -0
- package/dist/packages/core/src/logo/Logo_speechear_kr_white.svg +16 -0
- package/dist/packages/core/src/logo/Symbol_APEB.svg +34 -0
- package/dist/packages/core/src/logo/Symbol_APEB_black.svg +15 -0
- package/dist/packages/core/src/logo/Symbol_APEB_white.svg +15 -0
- package/dist/packages/core/src/logo/Symbol_HTP.svg +14 -0
- package/dist/packages/core/src/logo/Symbol_HTP_black.svg +10 -0
- package/dist/packages/core/src/logo/Symbol_HTP_white.svg +10 -0
- package/dist/packages/core/src/logo/Symbol_IHAB.svg +14 -0
- package/dist/packages/core/src/logo/Symbol_IHAB_black.svg +10 -0
- package/dist/packages/core/src/logo/Symbol_IHAB_white.svg +10 -0
- package/dist/packages/core/src/logo/Symbol_SDS.svg +14 -0
- package/dist/packages/core/src/logo/Symbol_SDS_black.svg +10 -0
- package/dist/packages/core/src/logo/Symbol_SDS_white.svg +10 -0
- package/dist/packages/core/src/logo/Symbol_speechear.svg +15 -0
- package/dist/packages/core/src/logo/Symbol_speechear_black.svg +16 -0
- package/dist/packages/core/src/logo/Symbol_speechear_white.svg +16 -0
- package/dist/packages/core/src/logo/qr_speechear.svg +1 -0
- package/dist/packages/core/src/sounds/noiseAssets.d.ts +6 -0
- package/dist/packages/core/src/sounds/noiseAssets.js +24 -0
- package/dist/packages/core/src/styles.css +144 -0
- package/dist/packages/core/src/tokens.css +407 -0
- package/dist/packages/core/src/types/audio.d.ts +11 -0
- package/dist/packages/core/src/types/audio.js +1 -0
- package/dist/packages/core/src/types/device.d.ts +10 -0
- package/dist/packages/core/src/types/device.js +1 -0
- package/dist/packages/core/src/types/filterPanel.d.ts +63 -0
- package/dist/packages/core/src/types/filterPanel.js +8 -0
- package/dist/packages/core/src/types/geometry.d.ts +14 -0
- package/dist/packages/core/src/types/geometry.js +1 -0
- package/dist/packages/core/src/types/training.d.ts +131 -0
- package/dist/packages/core/src/types/training.js +1 -0
- package/dist/packages/core/src/types/wordSearch.d.ts +49 -0
- package/dist/packages/core/src/types/wordSearch.js +1 -0
- package/dist/packages/core/src/types.d.ts +3 -0
- package/dist/packages/core/src/types.js +1 -0
- package/dist/packages/core/src/utils/CategoryData.d.ts +91 -0
- package/dist/packages/core/src/utils/CategoryData.js +57 -0
- package/dist/packages/core/src/utils/array.d.ts +20 -0
- package/dist/packages/core/src/utils/array.js +36 -0
- package/dist/packages/core/src/utils/assets.d.ts +41 -0
- package/dist/packages/core/src/utils/assets.js +62 -0
- package/dist/packages/core/src/utils/audioMeter.d.ts +19 -0
- package/dist/packages/core/src/utils/audioMeter.js +70 -0
- package/dist/packages/core/src/utils/categories.d.ts +67 -0
- package/dist/packages/core/src/utils/categories.js +70 -0
- package/dist/packages/core/src/utils/clipboard.d.ts +10 -0
- package/dist/packages/core/src/utils/clipboard.js +46 -0
- package/dist/packages/core/src/utils/companyTypes.d.ts +2 -0
- package/dist/packages/core/src/utils/companyTypes.js +6 -0
- package/dist/packages/core/src/utils/csv.d.ts +22 -0
- package/dist/packages/core/src/utils/csv.js +35 -0
- package/dist/packages/core/src/utils/cx.d.ts +7 -0
- package/dist/packages/core/src/utils/cx.js +9 -0
- package/dist/packages/core/src/utils/dailySelectionUtils.d.ts +15 -0
- package/dist/packages/core/src/utils/dailySelectionUtils.js +68 -0
- package/dist/packages/core/src/utils/date.d.ts +86 -0
- package/dist/packages/core/src/utils/date.js +171 -0
- package/dist/packages/core/src/utils/deviceKind.d.ts +13 -0
- package/dist/packages/core/src/utils/deviceKind.js +19 -0
- package/dist/packages/core/src/utils/encoding.d.ts +26 -0
- package/dist/packages/core/src/utils/encoding.js +33 -0
- package/dist/packages/core/src/utils/errorMessage.d.ts +44 -0
- package/dist/packages/core/src/utils/errorMessage.js +63 -0
- package/dist/packages/core/src/utils/fontScale.d.ts +10 -0
- package/dist/packages/core/src/utils/fontScale.js +28 -0
- package/dist/packages/core/src/utils/format.d.ts +48 -0
- package/dist/packages/core/src/utils/format.js +122 -0
- package/dist/packages/core/src/utils/gameScoreLogger.d.ts +48 -0
- package/dist/packages/core/src/utils/gameScoreLogger.js +42 -0
- package/dist/packages/core/src/utils/getTrainingData.d.ts +61 -0
- package/dist/packages/core/src/utils/getTrainingData.js +156 -0
- package/dist/packages/core/src/utils/imageConfig.d.ts +48 -0
- package/dist/packages/core/src/utils/imageConfig.js +159 -0
- package/dist/packages/core/src/utils/josa.d.ts +29 -0
- package/dist/packages/core/src/utils/josa.js +103 -0
- package/dist/packages/core/src/utils/koreanPronunciation.d.ts +16 -0
- package/dist/packages/core/src/utils/koreanPronunciation.js +223 -0
- package/dist/packages/core/src/utils/koreanSyllable.d.ts +174 -0
- package/dist/packages/core/src/utils/koreanSyllable.js +654 -0
- package/dist/packages/core/src/utils/lucideIconSet.d.ts +16 -0
- package/dist/packages/core/src/utils/lucideIconSet.js +350 -0
- package/dist/packages/core/src/utils/lucideLoader.d.ts +44 -0
- package/dist/packages/core/src/utils/lucideLoader.js +76 -0
- package/dist/packages/core/src/utils/noiseSettingsStore.d.ts +22 -0
- package/dist/packages/core/src/utils/noiseSettingsStore.js +36 -0
- package/dist/packages/core/src/utils/phonemeConvert.d.ts +9 -0
- package/dist/packages/core/src/utils/phonemeConvert.js +53 -0
- package/dist/packages/core/src/utils/phonemeGroups.d.ts +22 -0
- package/dist/packages/core/src/utils/phonemeGroups.js +29 -0
- package/dist/packages/core/src/utils/phonemePairSearch.d.ts +22 -0
- package/dist/packages/core/src/utils/phonemePairSearch.js +583 -0
- package/dist/packages/core/src/utils/phonemePairSearchTypes.d.ts +46 -0
- package/dist/packages/core/src/utils/phonemePairSearchTypes.js +1 -0
- package/dist/packages/core/src/utils/planFeatures.d.ts +61 -0
- package/dist/packages/core/src/utils/planFeatures.js +168 -0
- package/dist/packages/core/src/utils/pronunciationConfig.d.ts +7 -0
- package/dist/packages/core/src/utils/pronunciationConfig.js +21 -0
- package/dist/packages/core/src/utils/savedWordTables.d.ts +18 -0
- package/dist/packages/core/src/utils/savedWordTables.js +70 -0
- package/dist/packages/core/src/utils/sortValue.d.ts +24 -0
- package/dist/packages/core/src/utils/sortValue.js +26 -0
- package/dist/packages/core/src/utils/speak.d.ts +7 -0
- package/dist/packages/core/src/utils/speak.js +35 -0
- package/dist/packages/core/src/utils/storage.d.ts +102 -0
- package/dist/packages/core/src/utils/storage.js +118 -0
- package/dist/packages/core/src/utils/theme.d.ts +11 -0
- package/dist/packages/core/src/utils/theme.js +28 -0
- package/dist/packages/core/src/utils/trainingItemResults.d.ts +60 -0
- package/dist/packages/core/src/utils/trainingItemResults.js +72 -0
- package/dist/packages/core/src/utils/trainingLogger.d.ts +58 -0
- package/dist/packages/core/src/utils/trainingLogger.js +50 -0
- package/dist/packages/core/src/utils/trainingPalette.d.ts +12 -0
- package/dist/packages/core/src/utils/trainingPalette.js +12 -0
- package/dist/packages/core/src/utils/ttsConfig.d.ts +78 -0
- package/dist/packages/core/src/utils/ttsConfig.js +89 -0
- package/dist/packages/core/src/utils/ttsResolver.d.ts +17 -0
- package/dist/packages/core/src/utils/ttsResolver.js +56 -0
- package/dist/packages/core/src/utils/wordContrast.d.ts +54 -0
- package/dist/packages/core/src/utils/wordContrast.js +198 -0
- package/dist/packages/core/src/utils/wordPairIndex.d.ts +26 -0
- package/dist/packages/core/src/utils/wordPairIndex.js +194 -0
- package/dist/packages/core/src/utils/wordPool.d.ts +34 -0
- package/dist/packages/core/src/utils/wordPool.js +20 -0
- package/dist/packages/core/src/utils/wordSuggestionPolicy.d.ts +55 -0
- package/dist/packages/core/src/utils/wordSuggestionPolicy.js +97 -0
- package/dist/packages/core/src/utils/wordTrainingGenerators.d.ts +122 -0
- package/dist/packages/core/src/utils/wordTrainingGenerators.js +560 -0
- package/dist/packages/core/src/utils/wordTrainingGroups.d.ts +10 -0
- package/dist/packages/core/src/utils/wordTrainingGroups.js +69 -0
- package/dist/packages/core/src/utils/wordTrainingPool.d.ts +51 -0
- package/dist/packages/core/src/utils/wordTrainingPool.js +436 -0
- package/dist/packages/core/src/utils/wordTrainingRuntime.d.ts +38 -0
- package/dist/packages/core/src/utils/wordTrainingRuntime.js +641 -0
- package/dist/packages/core/src/utils/wordTrainingRuntimeTypes.d.ts +89 -0
- package/dist/packages/core/src/utils/wordTrainingRuntimeTypes.js +77 -0
- package/dist/packages/core/src/utils.d.ts +57 -0
- package/dist/packages/core/src/utils.js +46 -0
- package/dist/tsdoc-metadata.json +11 -0
- package/dist/types.cjs.js +1 -0
- package/dist/types.esm.js +1 -0
- package/dist/utils.cjs.js +20 -0
- package/dist/utils.esm.js +20 -0
- 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
|
+
}
|