@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,188 @@
|
|
|
1
|
+
.filter-panel {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
gap: var(--spacing-m);
|
|
5
|
+
padding: var(--spacing-l);
|
|
6
|
+
background: var(--color-white);
|
|
7
|
+
border: 1px solid var(--color-darkWhite);
|
|
8
|
+
border-radius: var(--radius-m);
|
|
9
|
+
min-width : 200px;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.filter-panel__header {
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
justify-content: space-between;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* ── 접기 가능한 패널 ─────────────────────────────────────────
|
|
19
|
+
헤더를 고정 높이(60px) 바로 만들어 접힘/펼침과 무관하게 항상
|
|
20
|
+
패널 최상단 같은 위치에 두고, 본문만 아래로 열리고 닫힌다.
|
|
21
|
+
(세로 패딩을 컨테이너에서 제거하고 본문이 자체 하단 여백을 가짐) */
|
|
22
|
+
.filter-panel--collapsible {
|
|
23
|
+
padding-top: 0;
|
|
24
|
+
padding-bottom: 0;
|
|
25
|
+
}
|
|
26
|
+
.filter-panel--collapsible .filter-panel__header {
|
|
27
|
+
min-height: 60px;
|
|
28
|
+
flex-shrink: 0;
|
|
29
|
+
}
|
|
30
|
+
.filter-panel--collapsible .filter-panel__sections {
|
|
31
|
+
padding-bottom: var(--spacing-m);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* 하단 안내 영역 (예: "해당 단어 243개 가능") */
|
|
35
|
+
.filter-panel__footer {
|
|
36
|
+
padding-top: var(--spacing-m);
|
|
37
|
+
padding-bottom: var(--spacing-l);
|
|
38
|
+
border-top: 1px solid var(--color-darkWhite);
|
|
39
|
+
color: var(--color-gray);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.filter-panel__title {
|
|
43
|
+
display: block;
|
|
44
|
+
text-align: left;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* 헤더 좌측: 접기 버튼 + 타이틀 인라인 */
|
|
48
|
+
.filter-panel__title-row {
|
|
49
|
+
display: flex;
|
|
50
|
+
align-items: center;
|
|
51
|
+
gap: var(--spacing-xs);
|
|
52
|
+
min-width: 0;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.filter-panel__header-actions {
|
|
56
|
+
display: flex;
|
|
57
|
+
align-items: center;
|
|
58
|
+
gap: var(--spacing-xs);
|
|
59
|
+
margin-left: auto;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.filter-panel__section {
|
|
63
|
+
display: flex;
|
|
64
|
+
flex-direction: column;
|
|
65
|
+
gap: var(--spacing-xs);
|
|
66
|
+
align-items: flex-start;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.filter-panel__section-label-row {
|
|
70
|
+
display: flex;
|
|
71
|
+
align-items: center;
|
|
72
|
+
justify-content: space-between;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.filter-panel__section-label {
|
|
76
|
+
color: var(--color-darkGray);
|
|
77
|
+
text-align: left;
|
|
78
|
+
margin: 0;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.filter-panel__section-multiple {
|
|
82
|
+
color: var(--color-lightGray);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.filter-panel__sections {
|
|
86
|
+
display: flex;
|
|
87
|
+
flex-direction: column;
|
|
88
|
+
gap: var(--spacing-m);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.filter-panel__sections--row {
|
|
92
|
+
flex-direction: row;
|
|
93
|
+
flex-wrap: wrap;
|
|
94
|
+
gap: 16px 32px;
|
|
95
|
+
align-items: flex-start;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* 그룹 라벨 행 — 하위 섹션들을 묶는 헤더. 가로 배치에서 줄 전체를 차지해 줄바꿈을 만든다.
|
|
99
|
+
우측에 groupAction(보기 모드 토글 등)을 배치. */
|
|
100
|
+
.filter-panel__group-label-row {
|
|
101
|
+
flex-basis: 100%;
|
|
102
|
+
width: 100%;
|
|
103
|
+
display: flex;
|
|
104
|
+
align-items: center;
|
|
105
|
+
justify-content: space-between;
|
|
106
|
+
gap: var(--spacing-s);
|
|
107
|
+
padding-top: var(--spacing-xs);
|
|
108
|
+
}
|
|
109
|
+
.filter-panel__group-label {
|
|
110
|
+
margin: 0;
|
|
111
|
+
color: var(--color-darkGray);
|
|
112
|
+
text-align: left;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/* layout='row' 섹션: 라벨을 왼쪽에 두고 아이템을 오른쪽에 가로로 나열 */
|
|
116
|
+
.filter-panel__section--row {
|
|
117
|
+
flex-direction: row;
|
|
118
|
+
align-items: center;
|
|
119
|
+
gap: var(--spacing-s);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.filter-panel__section--row .filter-panel__section-label-row {
|
|
123
|
+
flex: 0 0 auto;
|
|
124
|
+
min-width: 44px;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/* 가로 배치에서 row 섹션끼리도 인라인으로 나란히 — 콘텐츠 너비만큼 차지하고, 넘치면 줄바꿈 */
|
|
128
|
+
.filter-panel__sections--row .filter-panel__section--row {
|
|
129
|
+
flex: 0 0 auto;
|
|
130
|
+
max-width: 100%;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* block 섹션은 한 줄 전체를 차지해 인라인 흐름에서 분리 */
|
|
134
|
+
.filter-panel__sections--row .filter-panel__section--block {
|
|
135
|
+
flex-basis: 100%;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
.filter-panel__items {
|
|
140
|
+
display: flex;
|
|
141
|
+
flex-wrap: wrap;
|
|
142
|
+
gap: var(--spacing-xs);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.filter-panel__item-groups {
|
|
146
|
+
display: flex;
|
|
147
|
+
flex-wrap: wrap;
|
|
148
|
+
column-gap: var(--spacing-xl);
|
|
149
|
+
row-gap: var(--spacing-xs);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.filter-panel__item-group {
|
|
153
|
+
display: flex;
|
|
154
|
+
flex-wrap: wrap;
|
|
155
|
+
gap: var(--spacing-xs);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/* type: 'note' 섹션 — 선택 불가능한 안내 텍스트(예: 입력 구문 사용법). */
|
|
159
|
+
.filter-panel__note {
|
|
160
|
+
color: var(--color-darkGray);
|
|
161
|
+
text-align: left;
|
|
162
|
+
width: 100%;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.filter-panel__note-list {
|
|
166
|
+
margin: 0;
|
|
167
|
+
padding-left: 18px;
|
|
168
|
+
display: flex;
|
|
169
|
+
flex-direction: column;
|
|
170
|
+
gap: 4px;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/* 글자 입력 TextField 래퍼 — 폭만 지정(테두리·높이는 TextField 자체 스타일). */
|
|
174
|
+
.filter-panel__textfield {
|
|
175
|
+
min-width: 200px;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/* 훈련 음소 드롭다운 — 전체 너비로 늘리지 않고 콘텐츠 기준 고정폭(선택 값이 바뀌어도 흔들리지 않게 min-width) */
|
|
179
|
+
.filter-panel__dropdown {
|
|
180
|
+
min-width: 180px;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
@media (max-width: 767px) {
|
|
184
|
+
.filter-panel__textfield {
|
|
185
|
+
min-width: 0;
|
|
186
|
+
width: 100%;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import './FilterPanel.css';
|
|
3
|
+
export type { FilterPanelItem, FilterPanelSection } from '../types/filterPanel';
|
|
4
|
+
export { FILTER_ALL_VALUE } from '../types/filterPanel';
|
|
5
|
+
import type { FilterPanelSection } from '../types/filterPanel';
|
|
6
|
+
/** @public */
|
|
7
|
+
export interface FilterPanelProps {
|
|
8
|
+
title?: ReactNode;
|
|
9
|
+
headerAction?: ReactNode;
|
|
10
|
+
/** 헤더 우측에 접기/펼치기 토글 버튼을 노출하고, 접으면 본문(섹션)을 숨긴다. */
|
|
11
|
+
collapsible?: boolean;
|
|
12
|
+
/** collapsible일 때 초기 접힘 상태 */
|
|
13
|
+
defaultCollapsed?: boolean;
|
|
14
|
+
/** 접힘 상태를 외부에서 제어(controlled). 지정 시 내부 상태 대신 이 값을 따른다. */
|
|
15
|
+
collapsed?: boolean;
|
|
16
|
+
/** 접힘 상태가 토글될 때 호출 (controlled 사용 시 상태 갱신용) */
|
|
17
|
+
onCollapsedChange?: (collapsed: boolean) => void;
|
|
18
|
+
/** 섹션 아래 하단에 표시할 안내 영역(예: "해당 단어 243개 가능"). 접히면 함께 숨겨진다. */
|
|
19
|
+
footer?: ReactNode;
|
|
20
|
+
sections: FilterPanelSection[];
|
|
21
|
+
selected?: Record<string, string | string[]>;
|
|
22
|
+
onSelect?: (value: string, sectionLabel: string) => void;
|
|
23
|
+
/**
|
|
24
|
+
* 섹션 나열 방식.
|
|
25
|
+
* - `inline` (기본) — 섹션이 가로로 흐르며 폭이 부족하면 자동 줄바꿈.
|
|
26
|
+
* - `newline` — 섹션마다 무조건 개행(각 섹션이 한 줄 차지).
|
|
27
|
+
*/
|
|
28
|
+
align?: 'inline' | 'newline';
|
|
29
|
+
/** @deprecated `align` 사용 — 'horizontal'=inline, 'vertical'=newline */
|
|
30
|
+
sectionAlign?: 'vertical' | 'horizontal';
|
|
31
|
+
className?: string;
|
|
32
|
+
}
|
|
33
|
+
/** @public */
|
|
34
|
+
export default function FilterPanel({ title, headerAction, collapsible, defaultCollapsed, collapsed: controlledCollapsed, onCollapsedChange, footer, sections, selected, onSelect, align, sectionAlign, className, }: FilterPanelProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { cx } from '../utils/cx';
|
|
4
|
+
import { Fragment, useState } from 'react';
|
|
5
|
+
import { useTranslation } from 'react-i18next';
|
|
6
|
+
import './FilterPanel.css';
|
|
7
|
+
import Button from './Button';
|
|
8
|
+
import SegmentedControl from './SegmentedControl';
|
|
9
|
+
import TextField from './TextField';
|
|
10
|
+
import Dropdown from './Dropdown';
|
|
11
|
+
export { FILTER_ALL_VALUE } from '../types/filterPanel';
|
|
12
|
+
import { FILTER_ALL_VALUE } from '../types/filterPanel';
|
|
13
|
+
/** @public */
|
|
14
|
+
export default function FilterPanel({ title, headerAction, collapsible = false, defaultCollapsed = false, collapsed: controlledCollapsed, onCollapsedChange, footer, sections, selected = {}, onSelect, align, sectionAlign, className, }) {
|
|
15
|
+
// align 우선. 없으면 구 prop(sectionAlign) 매핑, 그것도 없으면 inline 기본.
|
|
16
|
+
const isRow = (align ?? (sectionAlign === 'vertical' ? 'newline' : sectionAlign === 'horizontal' ? 'inline' : 'inline')) === 'inline';
|
|
17
|
+
const { t } = useTranslation();
|
|
18
|
+
const [internalCollapsed, setInternalCollapsed] = useState(defaultCollapsed);
|
|
19
|
+
const collapsed = controlledCollapsed ?? internalCollapsed;
|
|
20
|
+
const toggleCollapsed = () => {
|
|
21
|
+
const next = !collapsed;
|
|
22
|
+
setInternalCollapsed(next);
|
|
23
|
+
onCollapsedChange?.(next);
|
|
24
|
+
};
|
|
25
|
+
const showHeader = title || headerAction || collapsible;
|
|
26
|
+
return (_jsxs("div", { className: cx('filter-panel', collapsible ? 'filter-panel--collapsible' : '', collapsed ? 'filter-panel--collapsed' : '', className), children: [showHeader && (_jsxs("div", { className: "filter-panel__header", children: [_jsxs("div", { className: "filter-panel__title-row", children: [collapsible && (_jsx(Button, { size: 40, type: "dot", variant: "transparent-gray", useBorder: false, icon: collapsed ? 'chevron-down' : 'chevron-up',
|
|
27
|
+
/* Button은 aria-label을 자기 ariaLabel prop으로 덮어쓴다({...rest} 뒤에
|
|
28
|
+
aria-label={ariaLabelString}을 다시 쓴다) — kebab으로 넘기면 undefined가
|
|
29
|
+
되어 이름이 통째로 사라진다. 저장소의 다른 호출부는 모두 ariaLabel을 쓴다.
|
|
30
|
+
문구도 이 파일만 한국어로 박혀 있었다(키는 이미 있다). */
|
|
31
|
+
ariaLabel: collapsed ? t('common.expand', '펼치기') : t('common.collapse', '접기'), "aria-expanded": !collapsed, onClick: toggleCollapsed })), title && _jsx("span", { className: "filter-panel__title h4", children: title })] }), _jsx("div", { className: "filter-panel__header-actions", children: !collapsed && headerAction })] })), !collapsed && (_jsxs(_Fragment, { children: [_jsx("div", { className: cx('filter-panel__sections', isRow ? 'filter-panel__sections--row' : ''), children: sections.map(section => {
|
|
32
|
+
const sel = selected[section.label];
|
|
33
|
+
const isAllSelected = sel === undefined || (Array.isArray(sel) ? sel.length === 0 : false);
|
|
34
|
+
// section.items에 빈 항목(null/undefined)이 섞여 들어오면 item.value 접근에서
|
|
35
|
+
// 바로 터진다 — 호출부 데이터 소스(단어 목록 필터링 등) 결함을 여기서까지 전파시키지
|
|
36
|
+
// 않도록 렌더 직전에 걸러낸다
|
|
37
|
+
const items = (section.items ?? []).filter((item) => item != null);
|
|
38
|
+
/* 보기 버튼 한 개. 칸으로 나뉜 절(section.groups)과 안 나뉜 절이 같은 버튼을
|
|
39
|
+
그리는데, 한때 이 25줄을 두 벌 적어 두었다. 새 속성을 하나 붙일 때 한쪽만
|
|
40
|
+
붙는 것이 자연스러운 모양이라 갈릴 수밖에 없다. */
|
|
41
|
+
const renderItemButton = (item) => {
|
|
42
|
+
const value = typeof item === 'string' ? item : item.value;
|
|
43
|
+
const disabled = typeof item !== 'string' && Boolean(item.disabled);
|
|
44
|
+
const itemLabels = typeof item !== 'string' ? item.labels : undefined;
|
|
45
|
+
const displayLabel = typeof item !== 'string' ? item.displayLabel : undefined;
|
|
46
|
+
const tooltip = typeof item !== 'string' ? item.tooltip : undefined;
|
|
47
|
+
const descriptionTooltip = typeof item !== 'string' ? item.descriptionTooltip : undefined;
|
|
48
|
+
const shape = typeof item !== 'string' ? item.shape : undefined;
|
|
49
|
+
const isSelected = Array.isArray(sel) ? sel.includes(value) : sel === value;
|
|
50
|
+
return (_jsx(Button, { size: "keyboard", label: itemLabels ?? displayLabel ?? value, type: section.itemType ?? (itemLabels ? 'bar' : value.length === 1 ? 'dot' : undefined), selected: isSelected, disabled: disabled, shape: shape, showTooltipInfo: !!tooltip, tooltipInfoText: tooltip, tooltipDescription: descriptionTooltip, onClick: () => onSelect?.(value, section.label) }, value));
|
|
51
|
+
};
|
|
52
|
+
return (_jsxs(Fragment, { children: [section.groupLabel && (_jsxs("div", { className: "filter-panel__group-label-row", children: [_jsx("div", { className: "filter-panel__group-label body-2", children: section.groupLabel }), section.groupAction] })), _jsxs("div", { className: cx('filter-panel__section', section.layout === 'row' ? 'filter-panel__section--row' : '', section.block ? 'filter-panel__section--block' : ''), children: [_jsxs("div", { className: "filter-panel__section-label-row", children: [_jsx("span", { className: "filter-panel__section-label body-3", children: section.displayLabel ?? section.label }), section.labelAction] }), section.type === 'note' ? (_jsx("div", { className: "filter-panel__note body-3", children: section.content })) : section.type === 'input' ? (_jsx(TextField, { className: "filter-panel__textfield", placeholder: section.placeholder, ariaLabel: section.displayLabel ?? section.label, value: selected[section.label] ?? '', onChange: (value) => onSelect?.(value, section.label), error: section.error })) : (!section.multiple && section.display === 'segmented') ? (_jsx(SegmentedControl
|
|
53
|
+
/* 바로 위 TextField 처럼 섹션 이름을 그대로 쓴다. 안 주면 라디오그룹이
|
|
54
|
+
기본값 '선택 탭'으로 읽혀, 필터가 여럿인 화면에서 어느 그룹인지
|
|
55
|
+
구분이 안 된다(단어표 검색 설정은 세그먼트가 열 개 가까이 된다). */
|
|
56
|
+
, {
|
|
57
|
+
/* 바로 위 TextField 처럼 섹션 이름을 그대로 쓴다. 안 주면 라디오그룹이
|
|
58
|
+
기본값 '선택 탭'으로 읽혀, 필터가 여럿인 화면에서 어느 그룹인지
|
|
59
|
+
구분이 안 된다(단어표 검색 설정은 세그먼트가 열 개 가까이 된다). */
|
|
60
|
+
ariaLabel: section.displayLabel ?? section.label, options: [
|
|
61
|
+
...(section.allOption ? [{ key: FILTER_ALL_VALUE, label: section.allLabel ?? t('common.all', '전체') }] : []),
|
|
62
|
+
...items.map(item => {
|
|
63
|
+
const value = typeof item === 'string' ? item : item.value;
|
|
64
|
+
const displayLabel = typeof item !== 'string' ? item.displayLabel : undefined;
|
|
65
|
+
const disabled = typeof item !== 'string' ? item.disabled : undefined;
|
|
66
|
+
return { key: value, label: displayLabel ?? value, disabled };
|
|
67
|
+
}),
|
|
68
|
+
], value: isAllSelected && section.allOption ? FILTER_ALL_VALUE : selected[section.label], onChange: (value) => onSelect?.(value, section.label), size: 32 })) : (!section.multiple && section.display === 'dropdown') ? (_jsx(Dropdown, { className: "filter-panel__dropdown", size: 40, options: [
|
|
69
|
+
...(section.allOption ? [{ value: FILTER_ALL_VALUE, label: section.allLabel ?? t('common.all', '전체') }] : []),
|
|
70
|
+
...items.map(item => {
|
|
71
|
+
const value = typeof item === 'string' ? item : item.value;
|
|
72
|
+
const displayLabel = typeof item !== 'string' ? item.displayLabel : undefined;
|
|
73
|
+
const disabled = typeof item !== 'string' ? item.disabled : undefined;
|
|
74
|
+
return { value, label: displayLabel ?? value, disabled };
|
|
75
|
+
}),
|
|
76
|
+
], value: isAllSelected && section.allOption ? FILTER_ALL_VALUE : selected[section.label], onChange: (value) => onSelect?.(value, section.label) })) : (_jsxs("div", { className: section.groups ? 'filter-panel__item-groups' : 'filter-panel__items', children: [section.allOption && !section.groups && (_jsx(Button, { size: "keyboard", label: section.allLabel ?? t('common.all', '전체'), selected: isAllSelected, disabled: section.allOptionDisabled, onClick: () => onSelect?.(FILTER_ALL_VALUE, section.label) })), section.groups
|
|
77
|
+
? section.groups.map((group, gi) => (_jsxs("div", { className: "filter-panel__item-group", children: [gi === 0 && section.allOption && (_jsx(Button, { size: "keyboard", label: section.allLabel ?? t('common.all', '전체'), selected: isAllSelected, disabled: section.allOptionDisabled, onClick: () => onSelect?.(FILTER_ALL_VALUE, section.label) })), group
|
|
78
|
+
.filter((item) => item != null)
|
|
79
|
+
.map(renderItemButton)] }, gi)))
|
|
80
|
+
: items.map(renderItemButton)] }))] })] }, section.label));
|
|
81
|
+
}) }), footer != null && footer !== false && (_jsx("div", { className: "filter-panel__footer body-3", children: footer }))] }))] }));
|
|
82
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** @public */
|
|
2
|
+
export interface FilterSectionInfoProps {
|
|
3
|
+
/** 툴팁 제목(선택) */
|
|
4
|
+
title?: string;
|
|
5
|
+
/** 설명 항목 — 2개 이상이면 번호가 붙는다 */
|
|
6
|
+
items: string[];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* FilterPanel 섹션 라벨 옆에 붙이는 "?" 버튼 — 마우스를 올리면 DescriptionTooltip으로 설명을 보여준다.
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
export default function FilterSectionInfo({ title, items }: FilterSectionInfoProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
4
|
+
import Button from './Button';
|
|
5
|
+
import DescriptionTooltip from './Tooltip/DescriptionTooltip';
|
|
6
|
+
import { useHoverAnchor } from '../hooks/useHoverAnchor';
|
|
7
|
+
/**
|
|
8
|
+
* FilterPanel 섹션 라벨 옆에 붙이는 "?" 버튼 — 마우스를 올리면 DescriptionTooltip으로 설명을 보여준다.
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
export default function FilterSectionInfo({ title, items }) {
|
|
12
|
+
const { t } = useTranslation();
|
|
13
|
+
const { anchorRect, openAt, close: handleClose } = useHoverAnchor();
|
|
14
|
+
return (_jsxs(_Fragment, { children: [_jsx(Button, { size: 24, type: "dot", icon: "info", variant: "transparent-gray", useBorder: false, selected: !!anchorRect, ariaLabel: t('common.info', '설명'), onPointerEnter: (e) => openAt(e.currentTarget), onPointerLeave: handleClose, onFocus: (e) => openAt(e.currentTarget), onBlur: handleClose }), anchorRect && (_jsx(DescriptionTooltip, { title: title, items: items, showIndex: items.length > 1, anchorRect: anchorRect, onClose: handleClose }))] }));
|
|
15
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
.site-footer {
|
|
2
|
+
background: var(--color-deepWhite);
|
|
3
|
+
color: var(--color-gray);
|
|
4
|
+
padding: var(--spacing-page);
|
|
5
|
+
border-top: 1px solid var(--color-whiteLine);
|
|
6
|
+
box-sizing: border-box;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.site-footer__top {
|
|
10
|
+
display: flex;
|
|
11
|
+
gap: 40px;
|
|
12
|
+
align-items: flex-start;
|
|
13
|
+
justify-content: space-between;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.site-footer__brand {
|
|
17
|
+
flex: 0 0 220px;
|
|
18
|
+
width: 220px;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.site-footer__lead {
|
|
22
|
+
/* 주변 링크가 lightGray라 darkGray는 혼자 도드라져 보였다 — 한 단계 낮춰
|
|
23
|
+
위계는 남기되(링크보다 진함) 톤 차이를 줄인다. */
|
|
24
|
+
color: var(--color-gray);
|
|
25
|
+
text-align: left;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.site-footer__links {
|
|
29
|
+
display: flex;
|
|
30
|
+
flex-wrap: wrap;
|
|
31
|
+
gap: 100px 10px; /* row-gap 100px, column-gap 10px */
|
|
32
|
+
flex: 1 1 auto;
|
|
33
|
+
min-width: 320px; /* ensure links area doesn't collapse under brand */
|
|
34
|
+
align-items: flex-start;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.site-footer__column {
|
|
38
|
+
flex: 0 0 160px; /* fixed base width, allow wrapping */
|
|
39
|
+
min-width: 160px;
|
|
40
|
+
text-align: left;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.site-footer__column-title {
|
|
44
|
+
color: var(--color-lightGray);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.footer-title {
|
|
48
|
+
font-size: 13px;
|
|
49
|
+
line-height: 20px;
|
|
50
|
+
font-weight: 600;
|
|
51
|
+
color: var(--color-lightGray);
|
|
52
|
+
width: 80px;
|
|
53
|
+
display: inline-block;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.site-footer__column ul {
|
|
57
|
+
list-style: none;
|
|
58
|
+
padding: 0;
|
|
59
|
+
margin: 10px 0 0 0;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/*
|
|
63
|
+
* 링크에 터치 타깃(24px)을 주면서 한 줄이 20 → 24px 로 커졌다. margin 을
|
|
64
|
+
* 그만큼 덜어 목록 전체 리듬(30px)은 이전과 같게 둔다.
|
|
65
|
+
*/
|
|
66
|
+
.site-footer__column li {
|
|
67
|
+
margin-bottom: 6px;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.site-footer__column a {
|
|
71
|
+
color: var(--color-lightGray);
|
|
72
|
+
text-decoration: none;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* explicit footer link utility so components can target links */
|
|
76
|
+
/* 글자 높이(16px)가 곧 터치 타깃이라 WCAG 2.2 AA(2.5.8, 24px)에 못 미친다.
|
|
77
|
+
목록이 세로로 쌓이므로 높이를 벌려도 레이아웃이 크게 흔들리지 않는다. */
|
|
78
|
+
.footer-link {
|
|
79
|
+
display: inline-flex;
|
|
80
|
+
align-items: center;
|
|
81
|
+
/* 짧은 라벨("말귀" 2글자)은 너비도 24px 에 못 미친다 */
|
|
82
|
+
min-width: 24px;
|
|
83
|
+
min-height: 24px;
|
|
84
|
+
font-size: 13px;
|
|
85
|
+
line-height: 20px;
|
|
86
|
+
color: var(--color-lightGray);
|
|
87
|
+
text-decoration: none;
|
|
88
|
+
transition: color 120ms ease;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.footer-meta {
|
|
92
|
+
line-height: 18px;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.footer-copyright {
|
|
96
|
+
line-height: 18px;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* 호버·포커스는 색으로만 알린다 — 밑줄은 링크가 세로로 촘촘히 쌓인 푸터에서
|
|
100
|
+
줄 간격을 흔들어 보이게 하고, 색 변화(lightGray → main)만으로 충분히 구분된다. */
|
|
101
|
+
.footer-link:hover,
|
|
102
|
+
.footer-link:focus {
|
|
103
|
+
color: var(--color-main);
|
|
104
|
+
text-decoration: none;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.site-footer__rule {
|
|
108
|
+
border: none;
|
|
109
|
+
border-top: 1px solid var(--color-darkWhite);
|
|
110
|
+
margin: 40px 0;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.site-footer__bottom {
|
|
114
|
+
display: flex;
|
|
115
|
+
align-items: center;
|
|
116
|
+
justify-content: flex-start;
|
|
117
|
+
gap: 40px;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.site-footer__brand-compact {
|
|
121
|
+
display: flex;
|
|
122
|
+
align-items: center;
|
|
123
|
+
gap: 18px;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.site-footer__logo {
|
|
127
|
+
height: 52px;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/* center small logo inside bottom brand area */
|
|
131
|
+
.site-footer__bottom .site-footer__brand {
|
|
132
|
+
display: flex;
|
|
133
|
+
justify-content: center;
|
|
134
|
+
align-items: center;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.site-footer__meta {
|
|
138
|
+
color: var(--color-lightGray);
|
|
139
|
+
text-align: left;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.site-footer__copyright {
|
|
143
|
+
color: var(--color-lightGray);
|
|
144
|
+
width: 100%;
|
|
145
|
+
box-sizing: border-box;
|
|
146
|
+
display: flex;
|
|
147
|
+
align-items: center;
|
|
148
|
+
justify-content: center;
|
|
149
|
+
text-align: center;
|
|
150
|
+
margin: var(--spacing-page) 0 0 0 ;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/* Tablet layout: stack brand and links; stack brand and meta in bottom */
|
|
154
|
+
@media (max-width: 1024px) {
|
|
155
|
+
.site-footer__top {
|
|
156
|
+
flex-direction: column;
|
|
157
|
+
gap: var(--spacing-page);
|
|
158
|
+
}
|
|
159
|
+
.site-footer__brand {
|
|
160
|
+
width: 100%;
|
|
161
|
+
flex: 0 0 auto;
|
|
162
|
+
}
|
|
163
|
+
.site-footer__links {
|
|
164
|
+
gap: 20px 10px;
|
|
165
|
+
width: 100%;
|
|
166
|
+
margin: 0;
|
|
167
|
+
/* 기본 규칙의 min-width:320px는 "브랜드 영역 옆에서 링크가 찌그러지지 않게"
|
|
168
|
+
하려던 것인데, 이 폭부터는 브랜드가 위로 빠지는 세로 배치라 그 이유가
|
|
169
|
+
사라진다. 그대로 두면 320px 기기에서 링크 블록이 부모(280px)와 뷰포트를
|
|
170
|
+
40px 넘쳐 잘렸다(스크롤도 안 생겨 잘린 줄도 모른다). */
|
|
171
|
+
min-width: 0;
|
|
172
|
+
}
|
|
173
|
+
.site-footer__bottom {
|
|
174
|
+
flex-direction: column;
|
|
175
|
+
align-items: flex-start;
|
|
176
|
+
gap: var(--spacing-page);
|
|
177
|
+
}
|
|
178
|
+
.site-footer__meta {
|
|
179
|
+
width: 100%;
|
|
180
|
+
}
|
|
181
|
+
.site-footer__logo { height: 50px; }
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
@media (max-width: 767px) {
|
|
185
|
+
.site-footer__logo { height: 48px; }
|
|
186
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import './Footer.css';
|
|
2
|
+
/** @public */
|
|
3
|
+
export interface FooterProps {
|
|
4
|
+
/** 제공하면 "이용약관" 링크가 페이지 이동 대신 이 핸들러를 호출한다 (미제공 시 기존 href="#" 유지) */
|
|
5
|
+
onTermsClick?: () => void;
|
|
6
|
+
/** 제공하면 "개인정보처리방침" 링크가 페이지 이동 대신 이 핸들러를 호출한다 (미제공 시 기존 href="#" 유지) */
|
|
7
|
+
onPrivacyClick?: () => void;
|
|
8
|
+
/**
|
|
9
|
+
* 고객센터 줄에 표시할 연락처. 소비처마다 대표번호가 다를 수 있어 주입받는다.
|
|
10
|
+
* 넘기지 않으면 기존 값을 그대로 쓴다.
|
|
11
|
+
*/
|
|
12
|
+
contact?: {
|
|
13
|
+
email?: string;
|
|
14
|
+
tel?: string;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/** @public */
|
|
18
|
+
export default function Footer({ onTermsClick, onPrivacyClick, contact }?: FooterProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Fragment } from 'react';
|
|
4
|
+
import { useTranslation } from 'react-i18next';
|
|
5
|
+
import './Footer.css';
|
|
6
|
+
import logoSrc from '../logo/Logo_IHAB_en.svg';
|
|
7
|
+
/** @public */
|
|
8
|
+
export default function Footer({ onTermsClick, onPrivacyClick, contact } = {}) {
|
|
9
|
+
const email = contact?.email ?? 'support@ihab.co.kr';
|
|
10
|
+
const tel = contact?.tel ?? '031-380-3724';
|
|
11
|
+
const { t } = useTranslation();
|
|
12
|
+
return (_jsx("footer", { className: "site-footer", children: _jsxs("div", { className: "safearea", children: [_jsxs("div", { className: "site-footer__top", children: [_jsx("div", { className: "site-footer__brand", children: _jsx("div", { className: "site-footer__lead h3", children: t('footer.lead', '아이해브는 소리를 통해\n신뢰를 쌓고\n회복을 돕습니다.').split('\n').map((line, i, arr) => (_jsxs(Fragment, { children: [line, i < arr.length - 1 && _jsx("br", {})] }, i))) }) }), _jsxs("div", { className: "site-footer__links", children: [_jsxs("div", { className: "site-footer__column", children: [_jsx("div", { className: "site-footer__column-title footer-title", children: t('footer.site.title', '사이트') }), _jsxs("ul", { children: [_jsx("li", { children: _jsx("a", { className: "footer-link", href: "https://www.ihab.co.kr/", target: "_blank", rel: "noopener noreferrer", children: "IHAB" }) }), _jsx("li", { children: _jsx("a", { className: "footer-link", href: "https://speechear.ihab.co.kr/", target: "_blank", rel: "noopener noreferrer", children: t('footer.site.malgwi', '말귀') }) }), _jsx("li", { children: _jsx("a", { className: "footer-link", href: "https://ihab-offcial-web.vercel.app/product/sound-localization", target: "_blank", rel: "noopener noreferrer", children: t('footer.site.soundDirection', '소리방향성시스템') }) }), _jsx("li", { children: _jsx("a", { className: "footer-link", href: "https://ihab-offcial-web.vercel.app/product/vr-sound-localization", target: "_blank", rel: "noopener noreferrer", children: t('footer.site.vrSoundDirection', 'VR소리방향성시스템') }) }), _jsx("li", { children: _jsx("a", { className: "footer-link", href: "https://ihab-offcial-web.vercel.app/product/hearing-test-pro", target: "_blank", rel: "noopener noreferrer", children: t('footer.site.hearingTest', '청력테스트 프로') }) })] })] }), _jsxs("div", { className: "site-footer__column", children: [_jsx("div", { className: "site-footer__column-title footer-title", children: t('footer.sns.title', 'SNS') }), _jsxs("ul", { children: [_jsx("li", { children: _jsx("a", { className: "footer-link", href: "https://blog.naver.com/ihab_official", target: "_blank", rel: "noopener noreferrer", children: t('footer.sns.naverBlog', '네이버 블로그') }) }), _jsx("li", { children: _jsx("a", { className: "footer-link", href: "https://www.instagram.com/ihab.official.yt/", target: "_blank", rel: "noopener noreferrer", children: "Instagram" }) }), _jsx("li", { children: _jsx("a", { className: "footer-link", href: "https://www.youtube.com/@%EC%95%84%EC%9D%B4%ED%95%B4%EB%B8%8C-%EA%B3%B5%EC%8B%9D%EC%B1%84%EB%84%90", target: "_blank", rel: "noopener noreferrer", children: "Youtube" }) })] })] }), _jsxs("div", { className: "site-footer__column", children: [_jsx("div", { className: "site-footer__column-title footer-title", children: t('footer.policy.title', '정책') }), _jsxs("ul", { children: [_jsx("li", { children: _jsx("a", { className: "footer-link", href: "#", onClick: e => { if (onTermsClick) {
|
|
13
|
+
e.preventDefault();
|
|
14
|
+
onTermsClick();
|
|
15
|
+
} }, children: t('footer.policy.terms', '이용약관') }) }), _jsx("li", { children: _jsx("a", { className: "footer-link", href: "#", onClick: e => { if (onPrivacyClick) {
|
|
16
|
+
e.preventDefault();
|
|
17
|
+
onPrivacyClick();
|
|
18
|
+
} }, children: t('footer.policy.privacy', '개인정보 처리방침') }) })] })] })] })] }), _jsx("hr", { className: "site-footer__rule" }), _jsxs("div", { className: "site-footer__bottom", children: [_jsx("div", { className: "site-footer__brand", children: _jsx("img", { src: logoSrc, alt: "IHAB", className: "site-footer__logo" }) }), _jsxs("div", { className: "site-footer__meta", children: [_jsxs("div", { children: [_jsx("span", { className: "footer-title", children: t('footer.ceo', '대표') }), _jsx("span", { className: "footer-meta caption-1", children: t('footer.ceoName', '한지혜') })] }), _jsxs("div", { children: [_jsx("span", { className: "footer-title", children: t('footer.address', '주소') }), _jsx("span", { className: "footer-meta caption-1", children: t('footer.addressValue', '강원도 춘천시 시청길 32 해찬빌딩 3층 302호') })] }), _jsxs("div", { children: [_jsx("span", { className: "footer-title", children: t('footer.support', '고객센터') }), _jsxs("span", { className: "footer-meta caption-1", children: [email, " \u00A0 ", tel] })] })] })] }), _jsx("div", { className: "site-footer__copyright footer-copyright caption-1", children: "\u00A9 IHAB, Inc. All rights reserved." })] }) }));
|
|
19
|
+
}
|