@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,313 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useRef, useState, useCallback, useLayoutEffect, useMemo } from 'react';
|
|
4
|
+
import { useTranslation } from 'react-i18next';
|
|
5
|
+
import i18n from '../../i18n';
|
|
6
|
+
import { toWonSymbol } from '../../utils/format';
|
|
7
|
+
import { derivePassCard, deriveDurationDays } from './passCardProduct';
|
|
8
|
+
import './PassCard.css';
|
|
9
|
+
import Tooltip from '../Tooltip/Tooltip';
|
|
10
|
+
import MenuTooltip from '../Tooltip/MenuTooltip';
|
|
11
|
+
import logoSpeechear from '../../logo/Logo_speechear_kr.svg';
|
|
12
|
+
import logoSpeechear_white from '../../logo/Logo_speechear_kr_white.svg';
|
|
13
|
+
import logoSpeechear_textWhite from '../../logo/Logo_speechear_kr_textWhite.svg';
|
|
14
|
+
import logoSpeechear_black from '../../logo/Logo_speechear_kr_black.svg';
|
|
15
|
+
import logoSpeechearManager from '../../logo/Logo_speechearManager_kr.svg';
|
|
16
|
+
import logoSpeechearManager_white from '../../logo/Logo_speechearManager_kr_white.svg';
|
|
17
|
+
import logoSpeechearManager_textWhite from '../../logo/Logo_speechearManager_kr_textWhite.svg';
|
|
18
|
+
import logoSpeechearManager_black from '../../logo/Logo_speechearManager_kr_black.svg';
|
|
19
|
+
import PassCardBgTwoCircle from './PassCardBgTwoCircle';
|
|
20
|
+
import PassCardBgSoundMove from './PassCardBgSoundMove';
|
|
21
|
+
import PassCardBgSoundMoveV1 from './PassCardBgSoundMoveV1';
|
|
22
|
+
import PassCardBgTalk from './PassCardBgTalk';
|
|
23
|
+
import { getPassCardBgTheme } from './PassCardBgTheme';
|
|
24
|
+
/*
|
|
25
|
+
* 로고 variant 정적 매핑 — base + color suffix 조합으로 SVG URL을 resolve.
|
|
26
|
+
* (Vite 전용 import.meta.glob 대신 정적 import — Rollup CJS 빌드 호환)
|
|
27
|
+
*/
|
|
28
|
+
const LOGO_VARIANTS = {
|
|
29
|
+
Logo_speechear_kr: {
|
|
30
|
+
'': logoSpeechear,
|
|
31
|
+
'_white': logoSpeechear_white,
|
|
32
|
+
'_textWhite': logoSpeechear_textWhite,
|
|
33
|
+
'_black': logoSpeechear_black,
|
|
34
|
+
},
|
|
35
|
+
Logo_speechearManager_kr: {
|
|
36
|
+
'': logoSpeechearManager,
|
|
37
|
+
'_white': logoSpeechearManager_white,
|
|
38
|
+
'_textWhite': logoSpeechearManager_textWhite,
|
|
39
|
+
'_black': logoSpeechearManager_black,
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
function resolveLogoUrl(base, color) {
|
|
43
|
+
if (!base)
|
|
44
|
+
return undefined;
|
|
45
|
+
return LOGO_VARIANTS[base]?.[color ?? ''] ?? undefined;
|
|
46
|
+
}
|
|
47
|
+
const LOGO = {
|
|
48
|
+
speechear: logoSpeechear,
|
|
49
|
+
manager: logoSpeechearManager,
|
|
50
|
+
};
|
|
51
|
+
/** type별 로고 base 파일명 — 색상 variant 접미사와 조합해 실제 파일 결정 */
|
|
52
|
+
const LOGO_BASE = {
|
|
53
|
+
speechear: 'Logo_speechear_kr',
|
|
54
|
+
manager: 'Logo_speechearManager_kr',
|
|
55
|
+
};
|
|
56
|
+
const MAX_TILT = 10;
|
|
57
|
+
/**
|
|
58
|
+
* 초 → 가장 큰 단위 하나만("N일 남음" / "N시간 남음" / "N분 남음" / "N초 남음").
|
|
59
|
+
* 일이 있으면 일까지만, 없으면 시간까지만, 없으면 분까지만, 없으면 초까지.
|
|
60
|
+
* 하드코딩된 한국어 단위였던 것을 en 로케일에서도 올바르게 보이도록 t()로 번역.
|
|
61
|
+
*/
|
|
62
|
+
function formatRemaining(seconds, t) {
|
|
63
|
+
if (seconds <= 0)
|
|
64
|
+
return t('passCard.remainingSecond', { n: 0 });
|
|
65
|
+
const days = Math.floor(seconds / 86400);
|
|
66
|
+
if (days > 0)
|
|
67
|
+
return t('passCard.remainingDay', { n: days });
|
|
68
|
+
const hours = Math.floor(seconds / 3600);
|
|
69
|
+
if (hours > 0)
|
|
70
|
+
return t('passCard.remainingHour', { n: hours });
|
|
71
|
+
const minutes = Math.floor(seconds / 60);
|
|
72
|
+
if (minutes > 0)
|
|
73
|
+
return t('passCard.remainingMinute', { n: minutes });
|
|
74
|
+
return t('passCard.remainingSecond', { n: Math.floor(seconds) });
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* (type, plan, label) 조합에 따른 기본 PassCardBg 자동 선택.
|
|
78
|
+
*
|
|
79
|
+
* | 종류 | 30일 | 30일 오픈특가 | 1년 |
|
|
80
|
+
* | 말귀 | TwoCircle | TwoCircle | TwoCircle |
|
|
81
|
+
* | 말귀 매니저 | SoundMove | SoundMove_v1 | Talk |
|
|
82
|
+
*
|
|
83
|
+
* 말귀(speechear)는 기간/라벨과 무관하게 항상 PassCardBgTwoCircle 고정.
|
|
84
|
+
* 이 매핑을 변경하면 UsagePage / 다른 사용처도 한 번에 갱신됨.
|
|
85
|
+
*
|
|
86
|
+
* NOTE: `_v1` 접미사는 "버전"이 아니라 **오픈특가 전용 화이트 테마 변형**을 뜻한다
|
|
87
|
+
* (기본형은 라이트 배경/메인색 텍스트, _v1은 컬러 배경/화이트 텍스트 + white 로고).
|
|
88
|
+
* 중복이 아니므로 단순 병합하면 시각 회귀가 발생한다. 명확성을 위해
|
|
89
|
+
* `_Special`(또는 variant prop)로의 리네임이 바람직하나 CSS 클래스 계약을 함께
|
|
90
|
+
* 바꿔야 하므로 별도 작업으로 분리한다.
|
|
91
|
+
*/
|
|
92
|
+
function getDefaultBg(type, plan, label) {
|
|
93
|
+
if (type === 'manager') {
|
|
94
|
+
const isYear = /년/.test(plan) || /yr|year/i.test(plan) || /1년|365/.test(plan);
|
|
95
|
+
const isSpecial = label === '오픈특가' || label === i18n.t('passCard.specialLabel');
|
|
96
|
+
if (isYear)
|
|
97
|
+
return _jsx(PassCardBgTalk, {});
|
|
98
|
+
if (isSpecial)
|
|
99
|
+
return _jsx(PassCardBgSoundMoveV1, {});
|
|
100
|
+
return _jsx(PassCardBgSoundMove, {});
|
|
101
|
+
}
|
|
102
|
+
// speechear — 기간/라벨과 무관하게 항상 TwoCircle
|
|
103
|
+
return _jsx(PassCardBgTwoCircle, {});
|
|
104
|
+
}
|
|
105
|
+
/** @public */
|
|
106
|
+
export default function PassCard({ product, showPrice = false, plan, type, endDate, remainingSeconds, state = 'active', bg, bgOnly = false, textColor, subColor, copyrightColor, logoSrc, label, price, originalPrice, discountLabel, onUse, onRefund, onDelete }) {
|
|
107
|
+
const { t } = useTranslation();
|
|
108
|
+
// product가 있으면 카드가 표시 속성을 스스로 도출. 명시적 prop이 항상 우선.
|
|
109
|
+
const d = product ? derivePassCard(product) : undefined;
|
|
110
|
+
const rType = type ?? d?.type ?? 'speechear';
|
|
111
|
+
const rPlan = plan ?? d?.plan ?? '이용권';
|
|
112
|
+
const rLabel = label ?? d?.label;
|
|
113
|
+
const rPrice = price ?? (showPrice ? d?.price : undefined);
|
|
114
|
+
const rOriginalPrice = originalPrice ?? (showPrice ? d?.originalPrice : undefined);
|
|
115
|
+
const rDiscountLabel = discountLabel ?? d?.discountLabel;
|
|
116
|
+
// 사용량%·남은 시간 — rPrice가 있으면(가격 표시 카드) 그쪽이 우선이라 여긴 안 씀.
|
|
117
|
+
// 전체 기간을 모르면(product 미지정 등) 표시할 게 없으므로 null.
|
|
118
|
+
const usageInfo = useMemo(() => {
|
|
119
|
+
if (rPrice)
|
|
120
|
+
return null;
|
|
121
|
+
const totalDays = product?.durationDays ?? deriveDurationDays(product?.code);
|
|
122
|
+
if (!totalDays || totalDays <= 0)
|
|
123
|
+
return null;
|
|
124
|
+
const totalSeconds = totalDays * 86400;
|
|
125
|
+
let remaining;
|
|
126
|
+
if (remainingSeconds != null) {
|
|
127
|
+
remaining = remainingSeconds;
|
|
128
|
+
}
|
|
129
|
+
else if ((state === 'active' || state === 'expired') && endDate) {
|
|
130
|
+
// endDate는 앱 전체에서 날짜만(YYYY-MM-DD, 시:분:초 없음) 저장되는 관례라
|
|
131
|
+
// new Date(endDate)는 UTC 자정으로 파싱된다 — "지금"과 초 단위로 그냥 빼면
|
|
132
|
+
// 시간대 차이(KST는 UTC+9)만큼 없는 시:분이 생겨난 것처럼 보인다. 실제로
|
|
133
|
+
// 갖고 있는 정밀도(하루 단위)만큼만 계산해 자정 기준 날짜 차이로 스냅한다.
|
|
134
|
+
const end = new Date(endDate).getTime();
|
|
135
|
+
if (Number.isNaN(end))
|
|
136
|
+
return null;
|
|
137
|
+
const today = new Date();
|
|
138
|
+
today.setHours(0, 0, 0, 0);
|
|
139
|
+
const endDay = new Date(end);
|
|
140
|
+
endDay.setHours(0, 0, 0, 0);
|
|
141
|
+
const days = Math.round((endDay.getTime() - today.getTime()) / 86_400_000);
|
|
142
|
+
remaining = Math.max(0, days) * 86400;
|
|
143
|
+
}
|
|
144
|
+
else if (state === 'expired') {
|
|
145
|
+
// 만료된 카드인데 기준 날짜 정보가 전혀 없음 — 다 쓴 것으로 간주
|
|
146
|
+
remaining = 0;
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
// pending인데 remainingSeconds도 없음 = 한 번도 안 쓴 새 이용권 → 전체 기간이 그대로 남음
|
|
150
|
+
remaining = totalSeconds;
|
|
151
|
+
}
|
|
152
|
+
// 남은 사용량 기준(%) — 내림. "정확히 다 채웠을 때만 100%"가 되도록(있지도 않은
|
|
153
|
+
// 정밀도를 반올림으로 부풀리지 않음). "보유 중"인데 아직 한 번도 안 써서 100%
|
|
154
|
+
// 그대로면 표시하지 않고 카피라이트 유지(진짜 새 이용권이라는 뜻). active/expired는
|
|
155
|
+
// 100%든 0%든 항상 표시 — 지금 쓰고 있다는 사실 자체가 정보이므로 숨기면 안 됨.
|
|
156
|
+
const percent = Math.max(0, Math.min(100, Math.floor((Math.min(remaining, totalSeconds) / totalSeconds) * 100)));
|
|
157
|
+
if (state === 'pending' && percent >= 100)
|
|
158
|
+
return null;
|
|
159
|
+
return { percent, remainingLabel: formatRemaining(remaining, t) };
|
|
160
|
+
}, [rPrice, state, endDate, remainingSeconds, product?.durationDays, product?.code, t]);
|
|
161
|
+
const cardRef = useRef(null);
|
|
162
|
+
const [cardStyle, setCardStyle] = useState({});
|
|
163
|
+
const [menuAnchor, setMenuAnchor] = useState(null);
|
|
164
|
+
const hasMenu = !!(onUse || onRefund || onDelete);
|
|
165
|
+
const isEnteringRef = useRef(false);
|
|
166
|
+
const enterTimerRef = useRef(undefined);
|
|
167
|
+
// 테마 레지스트리 기반으로 resolve된 로고 src
|
|
168
|
+
// prop이 명시적으로 전달된 경우 그것을 우선 사용
|
|
169
|
+
const [resolvedLogoSrc, setResolvedLogoSrc] = useState(logoSrc);
|
|
170
|
+
// prop logoSrc 변경 시 즉시 반영하는 의도된 동기화다
|
|
171
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect
|
|
172
|
+
useLayoutEffect(() => { setResolvedLogoSrc(logoSrc); }, [logoSrc]);
|
|
173
|
+
// PassCardBg가 useLayoutEffect(child)에서 CSS 변수를 주입한 뒤,
|
|
174
|
+
// PassCard(parent)의 useLayoutEffect에서 override → 항상 마지막에 적용됨
|
|
175
|
+
//
|
|
176
|
+
// ⚠️ prop이 undefined일 때는 절대 removeProperty 하지 않는다.
|
|
177
|
+
// PassCardBg가 주입한 값을 지워버리기 때문. undefined = "override 안 함".
|
|
178
|
+
useLayoutEffect(() => {
|
|
179
|
+
const el = cardRef.current;
|
|
180
|
+
if (!el)
|
|
181
|
+
return;
|
|
182
|
+
if (textColor !== undefined)
|
|
183
|
+
el.style.setProperty('--pass-card-text', textColor);
|
|
184
|
+
if (subColor !== undefined)
|
|
185
|
+
el.style.setProperty('--pass-card-sub', subColor);
|
|
186
|
+
if (copyrightColor !== undefined)
|
|
187
|
+
el.style.setProperty('--pass-card-copyright', copyrightColor);
|
|
188
|
+
}, [textColor, subColor, copyrightColor]);
|
|
189
|
+
// bg가 바뀔 때마다 레지스트리에서 theme을 읽어 로고 src를 자동 resolve
|
|
190
|
+
// ⚠️ logoBase는 type으로 결정 (theme.logoBase 무시). theme은 색상 variant만 제공.
|
|
191
|
+
useLayoutEffect(() => {
|
|
192
|
+
const el = cardRef.current;
|
|
193
|
+
if (!el)
|
|
194
|
+
return;
|
|
195
|
+
const theme = getPassCardBgTheme(el);
|
|
196
|
+
if (!logoSrc) {
|
|
197
|
+
const base = LOGO_BASE[rType];
|
|
198
|
+
// 만료 카드는 CSS에서 바탕을 흰색으로 통일하므로(.pass-card--expired .pass-card-bg),
|
|
199
|
+
// 컬러 배경 전제로 고른 흰 로고 variant를 그대로 쓰면 로고가 사라진다.
|
|
200
|
+
// 브랜드색도 뺀 상태이니 검정 로고로 맞춘다.
|
|
201
|
+
const variant = state === 'expired' ? '_black' : (theme?.logoColor ?? '');
|
|
202
|
+
const resolved = resolveLogoUrl(base, variant);
|
|
203
|
+
setResolvedLogoSrc(resolved);
|
|
204
|
+
}
|
|
205
|
+
}, [bg, logoSrc, rType, state]);
|
|
206
|
+
const calcTilt = (e) => {
|
|
207
|
+
const card = cardRef.current;
|
|
208
|
+
if (!card)
|
|
209
|
+
return null;
|
|
210
|
+
const { left, top, width, height } = card.getBoundingClientRect();
|
|
211
|
+
const x = (e.clientX - left) / width - 0.5;
|
|
212
|
+
const y = (e.clientY - top) / height - 0.5;
|
|
213
|
+
return { rotateX: -y * MAX_TILT, rotateY: x * MAX_TILT };
|
|
214
|
+
};
|
|
215
|
+
const makeShadow = (rotateX, rotateY) => {
|
|
216
|
+
const sx = rotateY * -0.7;
|
|
217
|
+
const sy = rotateX * 0.7 + 10;
|
|
218
|
+
const blur = 20 + (Math.abs(rotateX) + Math.abs(rotateY)) * 0.4;
|
|
219
|
+
return `${sx}px ${sy}px ${blur}px rgba(0, 0, 0, 0.18)`;
|
|
220
|
+
};
|
|
221
|
+
const handleMouseEnter = useCallback((e) => {
|
|
222
|
+
isEnteringRef.current = true;
|
|
223
|
+
clearTimeout(enterTimerRef.current);
|
|
224
|
+
enterTimerRef.current = setTimeout(() => { isEnteringRef.current = false; }, 200);
|
|
225
|
+
const tilt = calcTilt(e);
|
|
226
|
+
if (!tilt)
|
|
227
|
+
return;
|
|
228
|
+
setCardStyle({
|
|
229
|
+
transform: `perspective(800px) rotateX(${tilt.rotateX}deg) rotateY(${tilt.rotateY}deg) scale3d(1.03, 1.03, 1.03)`,
|
|
230
|
+
boxShadow: makeShadow(tilt.rotateX, tilt.rotateY),
|
|
231
|
+
transition: 'transform 0.25s cubic-bezier(0.23, 1, 0.32, 1), box-shadow 0.25s cubic-bezier(0.23, 1, 0.32, 1)',
|
|
232
|
+
});
|
|
233
|
+
}, []);
|
|
234
|
+
const handleMouseMove = useCallback((e) => {
|
|
235
|
+
const tilt = calcTilt(e);
|
|
236
|
+
if (!tilt)
|
|
237
|
+
return;
|
|
238
|
+
const transition = isEnteringRef.current ? 'transform 0.2s ease, box-shadow 0.2s ease' : 'none';
|
|
239
|
+
setCardStyle({
|
|
240
|
+
transform: `perspective(800px) rotateX(${tilt.rotateX}deg) rotateY(${tilt.rotateY}deg) scale3d(1.03, 1.03, 1.03)`,
|
|
241
|
+
boxShadow: makeShadow(tilt.rotateX, tilt.rotateY),
|
|
242
|
+
transition,
|
|
243
|
+
});
|
|
244
|
+
}, []);
|
|
245
|
+
const handleMouseLeave = useCallback(() => {
|
|
246
|
+
clearTimeout(enterTimerRef.current);
|
|
247
|
+
isEnteringRef.current = false;
|
|
248
|
+
setCardStyle({
|
|
249
|
+
transform: 'perspective(800px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1)',
|
|
250
|
+
boxShadow: '0px 4px 16px rgba(0, 0, 0, 0.08)',
|
|
251
|
+
transition: 'transform 0.5s cubic-bezier(0.23, 1, 0.32, 1), box-shadow 0.5s cubic-bezier(0.23, 1, 0.32, 1)',
|
|
252
|
+
});
|
|
253
|
+
}, []);
|
|
254
|
+
const handleCloseMenu = useCallback(() => setMenuAnchor(null), []);
|
|
255
|
+
const planDisplay = useMemo(() => {
|
|
256
|
+
const text = rPlan.replace('이용권', '').trim();
|
|
257
|
+
const match = text.match(/^(.*?)(일|년)$/);
|
|
258
|
+
return match
|
|
259
|
+
? _jsxs(_Fragment, { children: [_jsx("span", { className: "h0 pass-card__plan-number", children: match[1] }), _jsx("span", { className: "h5b pass-card__plan-unit", children: match[2] === '년' ? t('passCard.unitYear', '년') : t('passCard.unitDay', '일') })] })
|
|
260
|
+
: _jsx("span", { className: "h0", children: text });
|
|
261
|
+
}, [rPlan, t]);
|
|
262
|
+
// 가격 표시 — 통화 기호(₩) / '원' 등은 h5로 작게, 숫자는 h1로 크게
|
|
263
|
+
const priceDisplay = useMemo(() => {
|
|
264
|
+
const p = toWonSymbol(rPrice);
|
|
265
|
+
if (!p)
|
|
266
|
+
return null;
|
|
267
|
+
const m = p.match(/^([^\d]*)([\d.,]+)(.*)$/);
|
|
268
|
+
if (!m)
|
|
269
|
+
return _jsx("span", { className: "h1", children: p });
|
|
270
|
+
const [, pre, num, post] = m;
|
|
271
|
+
return (_jsxs(_Fragment, { children: [pre && _jsx("span", { className: "h5 pass-card__price-symbol", children: pre }), _jsx("span", { className: "h1 pass-card__price-amount", children: num }), post.trim() && _jsx("span", { className: "h5 pass-card__price-symbol", children: post.trim() })] }));
|
|
272
|
+
}, [rPrice]);
|
|
273
|
+
const handleCardClick = useCallback(() => {
|
|
274
|
+
if (!hasMenu)
|
|
275
|
+
return;
|
|
276
|
+
setMenuAnchor(prev => {
|
|
277
|
+
if (prev)
|
|
278
|
+
return null;
|
|
279
|
+
const rect = cardRef.current?.getBoundingClientRect();
|
|
280
|
+
if (!rect)
|
|
281
|
+
return null;
|
|
282
|
+
const offset = 50;
|
|
283
|
+
return {
|
|
284
|
+
left: rect.left, right: rect.right,
|
|
285
|
+
width: rect.width, height: rect.height,
|
|
286
|
+
x: rect.x, y: rect.y + offset,
|
|
287
|
+
top: rect.top + offset, bottom: rect.bottom + offset,
|
|
288
|
+
};
|
|
289
|
+
});
|
|
290
|
+
}, [hasMenu]);
|
|
291
|
+
const handleCardKeyDown = useCallback((e) => {
|
|
292
|
+
if (!hasMenu)
|
|
293
|
+
return;
|
|
294
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
295
|
+
e.preventDefault();
|
|
296
|
+
handleCardClick();
|
|
297
|
+
}
|
|
298
|
+
}, [hasMenu, handleCardClick]);
|
|
299
|
+
const menuColumns = [{
|
|
300
|
+
items: [
|
|
301
|
+
...(onUse ? [{ label: t('passCard.menu.use', '사용하기'), icon: 'play', onClick: () => { onUse(); setMenuAnchor(null); }, closeOnSelect: true }] : []),
|
|
302
|
+
...(onRefund ? [{ label: t('passCard.menu.refund', '환불하기'), icon: 'rotate-ccw', onClick: () => { onRefund(); setMenuAnchor(null); }, closeOnSelect: true }] : []),
|
|
303
|
+
...(onDelete ? [{ label: t('passCard.menu.delete', '삭제하기'), icon: 'trash-2', onClick: () => { onDelete(); setMenuAnchor(null); }, closeOnSelect: true }] : []),
|
|
304
|
+
],
|
|
305
|
+
}];
|
|
306
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "pass-card-frame", children: _jsxs("div", { ref: cardRef, className: `pass-card pass-card--${state}${hasMenu ? ' pass-card--clickable' : ''}`, style: cardStyle, onMouseEnter: handleMouseEnter, onMouseMove: handleMouseMove, onMouseLeave: handleMouseLeave, onClick: handleCardClick, onKeyDown: hasMenu ? handleCardKeyDown : undefined, role: hasMenu ? 'button' : undefined, tabIndex: hasMenu ? 0 : undefined, children: [bg ?? getDefaultBg(rType, rPlan, rLabel), !bgOnly && (_jsxs(_Fragment, { children: [_jsx("div", { className: "pass-card__top", children: _jsxs("div", { className: "pass-card__top-left", children: [_jsx("img", { src: resolvedLogoSrc ?? LOGO[rType], className: "pass-card__logo", alt: rType === 'manager'
|
|
307
|
+
? t('header.logoManager', '말귀매니저 로고')
|
|
308
|
+
: t('header.logoMalgwi', '말귀 로고') }), _jsxs("div", { className: "pass-card__plan", children: [_jsx("div", { children: planDisplay }), _jsx("span", { className: "h5b pass-card__plan-suffix", children: rLabel ? t('passCard.labeledPlan', { label: rLabel }) : t('passCard.planSuffix', '이용권') })] })] }) }), rPrice
|
|
309
|
+
? (_jsxs("div", { className: "pass-card__price-area", children: [rDiscountLabel && _jsx("span", { className: "pass-card__discount body-3", children: rDiscountLabel }), _jsxs("div", { className: "pass-card__price", children: [rOriginalPrice && _jsx("span", { className: "pass-card__price-original body-3", children: toWonSymbol(rOriginalPrice) }), priceDisplay] })] }))
|
|
310
|
+
: usageInfo
|
|
311
|
+
? (_jsxs("div", { className: "pass-card__usage", children: [_jsx("span", { className: "h5b pass-card__usage-remaining", children: usageInfo.remainingLabel }), _jsxs("span", { className: "pass-card__usage-percent", children: [_jsx("span", { className: "h1 pass-card__usage-value", children: usageInfo.percent }), _jsx("span", { className: "h5b pass-card__usage-symbol", children: "%" })] })] }))
|
|
312
|
+
: _jsx("div", { className: "pass-card__copyright caption-2", children: "\u00A9 IHAB Corp. All rights reserved." })] }))] }) }), menuAnchor && (_jsx(Tooltip, { anchorRect: menuAnchor, onClose: handleCloseMenu, children: _jsx(MenuTooltip, { columns: menuColumns, onClose: handleCloseMenu, size: "small" }) }))] }));
|
|
313
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* ── PassCardBg 공통 베이스 ────────────────────────────────────────── */
|
|
2
|
+
/* 모든 PassCardBg_* 컴포넌트가 공유하는 기본 스타일 */
|
|
3
|
+
/* 부모에 position: relative; overflow: hidden 필요 */
|
|
4
|
+
.pass-card-bg {
|
|
5
|
+
position: absolute;
|
|
6
|
+
inset: 0;
|
|
7
|
+
pointer-events: none;
|
|
8
|
+
overflow: hidden;
|
|
9
|
+
border-radius: inherit;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/* ── 심볼 불투명도 토큰 ─────────────────────────────────────────────── */
|
|
13
|
+
:root {
|
|
14
|
+
--pass-card-symbol-opacity: 1;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* ── 우측 상단 심볼 (9종 공통) ──────────────────────────────────────────
|
|
18
|
+
<img>가 아니라 span인 이유: img는 색을 지정할 수 없어 만료 상태처럼 단색으로
|
|
19
|
+
칠해야 할 때 필터 꼼수(brightness+invert)를 써야 하고, 그러면 색조가 없는
|
|
20
|
+
중성 회색밖에 못 만들어 토큰 색과 정확히 맞출 수 없다.
|
|
21
|
+
|
|
22
|
+
기본은 원본 SVG를 배경 이미지로 깔아 <img>와 같게 그리고, 동시에 같은 SVG를
|
|
23
|
+
마스크로 씌워 둔다 — background를 색으로 바꾸기만 하면 형태는 그대로 둔 채
|
|
24
|
+
단색으로 칠해진다(.pass-card--expired 규칙이 이걸 쓴다).
|
|
25
|
+
|
|
26
|
+
--symbol-url은 컴포넌트가 인라인으로 주입한다. 번들러가 해석한 import 값을
|
|
27
|
+
써야 해서 CSS에 url(...)을 직접 적을 수 없고, 반드시 따옴표로 감싸야 한다
|
|
28
|
+
(작은 SVG는 data URI로 인라인되는데 그 안의 clip-path="url(#...)" 때문에
|
|
29
|
+
따옴표가 없으면 바깥 url()이 중간 괄호에서 먼저 닫힌다). */
|
|
30
|
+
.pass-card-bg__symbol {
|
|
31
|
+
position: absolute;
|
|
32
|
+
top: 12px;
|
|
33
|
+
right: 12px;
|
|
34
|
+
width: 48px;
|
|
35
|
+
height: 48px;
|
|
36
|
+
background: var(--symbol-url) center / contain no-repeat;
|
|
37
|
+
-webkit-mask: var(--symbol-url) center / contain no-repeat;
|
|
38
|
+
mask: var(--symbol-url) center / contain no-repeat;
|
|
39
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import './PassCardBg.css';
|
|
3
|
+
/** @public */
|
|
4
|
+
export default function PassCardBg({ variant = 'default' }) {
|
|
5
|
+
return (_jsxs("div", { className: `pass-card-bg pass-card-bg--${variant}`, "aria-hidden": "true", children: [_jsx("div", { className: "pass-card-bg__circle pass-card-bg__circle--1" }), _jsx("div", { className: "pass-card-bg__circle pass-card-bg__circle--2" }), _jsx("div", { className: "pass-card-bg__circle pass-card-bg__circle--3" })] }));
|
|
6
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
.pass-card-bg-ihab {
|
|
2
|
+
background: var(--color-white);
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.pass-card-bg-ihab__symbol {
|
|
6
|
+
position: absolute;
|
|
7
|
+
bottom: -24px;
|
|
8
|
+
right: -24px;
|
|
9
|
+
width: 140px;
|
|
10
|
+
height: 140px;
|
|
11
|
+
object-fit: contain;
|
|
12
|
+
opacity: 0.06;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* 우측 상단 심볼 — -90도 회전 후 visible bbox가 top:12/right:12에 위치하도록.
|
|
16
|
+
위치·마스크는 공통 .pass-card-bg__symbol이 담당하고 여기서는 차이만 둔다.
|
|
17
|
+
이 배경만 심볼이 아니라 가로 워드마크(Logo_IHAB_en, 264×100)라 폭이 정사각이
|
|
18
|
+
아니다 — <img width:auto>가 해주던 비율 유지를 span에서는 직접 계산해 준다. */
|
|
19
|
+
.pass-card-bg-ihab__symbol-top {
|
|
20
|
+
width: calc(48px * 264 / 100);
|
|
21
|
+
/* transform-origin: top right → 회전축이 layout box 우상단 */
|
|
22
|
+
/* translate(-48px, 0): 회전 후 우측으로 빠져나간 visible 영역(원래 height만큼)을 다시 좌측으로 당김 */
|
|
23
|
+
transform: translate(-48px, 0) rotate(-90deg);
|
|
24
|
+
transform-origin: top right;
|
|
25
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import './PassCardBg.css';
|
|
2
|
+
import './PassCardBgIHAB.css';
|
|
3
|
+
import { type PassCardBgTheme } from './PassCardBgTheme';
|
|
4
|
+
/** @public */
|
|
5
|
+
export declare const passCardBgIhabTheme: PassCardBgTheme;
|
|
6
|
+
/** @public */
|
|
7
|
+
export default function PassCardBgIHAB(): import("react").JSX.Element;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useParentBgTheme } from '../../hooks/useParentBgTheme';
|
|
3
|
+
import './PassCardBg.css';
|
|
4
|
+
import './PassCardBgIHAB.css';
|
|
5
|
+
import logoIhab from '../../logo/Logo_IHAB_en.svg';
|
|
6
|
+
import { injectPassCardBgTheme, clearPassCardBgTheme } from './PassCardBgTheme';
|
|
7
|
+
/** @public */
|
|
8
|
+
export const passCardBgIhabTheme = {
|
|
9
|
+
text: '#1a1a1a',
|
|
10
|
+
sub: 'var(--color-lightGray)',
|
|
11
|
+
logoBase: 'Logo_speechear_kr',
|
|
12
|
+
copyrightColor: '#c9c9c9',
|
|
13
|
+
};
|
|
14
|
+
/** @public */
|
|
15
|
+
export default function PassCardBgIHAB() {
|
|
16
|
+
const ref = useParentBgTheme(passCardBgIhabTheme, injectPassCardBgTheme, clearPassCardBgTheme);
|
|
17
|
+
return (_jsx("div", { ref: ref, className: "pass-card-bg pass-card-bg-ihab", "aria-hidden": "true", children: _jsx("span", { className: "pass-card-bg__symbol pass-card-bg-ihab__symbol-top", style: { ['--symbol-url']: `url("${logoIhab}")` } }) }));
|
|
18
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
.pass-card-bg-left-color-grid {
|
|
2
|
+
background: var(--color-white);
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
/* 좌측 컬러 바 — 좌 0 ~ 76% 덮음 */
|
|
6
|
+
.pass-card-bg-left-color-grid__bar {
|
|
7
|
+
position: absolute;
|
|
8
|
+
top: 0;
|
|
9
|
+
left: 0;
|
|
10
|
+
width: 76%;
|
|
11
|
+
height: 100%;
|
|
12
|
+
background: linear-gradient(120deg, var(--color-main), var(--color-sub));
|
|
13
|
+
border-radius: 16px 0 0 16px;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
/* 우측 격자 패턴 — 선 색은 변수로 빼둔다(만료 상태에서 회색으로 바꿔 끼우기 위함).
|
|
18
|
+
--color-main을 참조하지 않고 값이 박혀 있어서, 카드 쪽의 회색 재정의만으로는
|
|
19
|
+
여기까지 따라오지 않는다. */
|
|
20
|
+
.pass-card-bg-left-color-grid__grid {
|
|
21
|
+
--grid-line: rgba(73, 156, 223, 0.06);
|
|
22
|
+
position: absolute;
|
|
23
|
+
inset: 0;
|
|
24
|
+
background-image:
|
|
25
|
+
linear-gradient(var(--grid-line) 1px, transparent 1px),
|
|
26
|
+
linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);
|
|
27
|
+
background-size: 24px 24px;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* 만료 카드 — 격자를 숨긴다. 격자는 inset:0으로 카드 전체를 덮고 좌측 판보다 뒤에
|
|
31
|
+
그려지는데, 판이 밝아지면 그 위로 선이 드러난다. 특정 배경색으로 맞추는 대신
|
|
32
|
+
투명으로 둔다 — 판 위(darkWhite)와 우측 바탕(흰색) 두 곳을 한 색으로는 못 맞춘다. */
|
|
33
|
+
.pass-card--expired .pass-card-bg-left-color-grid__grid {
|
|
34
|
+
--grid-line: transparent;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* 만료 카드 — 좌측 판. 카드 폭의 76%를 덮는 가장 큰 면이라, 카드 전역 회색
|
|
38
|
+
재정의(disabled→whiteLine)를 그대로 받으면 이 판만 유독 진해 회색 톤이 깨진다.
|
|
39
|
+
우상단 심볼과 같은 색(--pass-card-expired-shape, PassCard.css 정의 —
|
|
40
|
+
--color-whiteLine이 다크모드에서 8% 알파로 거의 투명해지는 문제를 피하려고
|
|
41
|
+
다크모드 전용 불투명 값을 갖는 지역 변수)으로 맞추고, 그라디언트가 아니라
|
|
42
|
+
단색으로 채운다 — 회색끼리의 그라디언트는 한쪽 끝이 옅어져 판이 투명한 것처럼 보인다. */
|
|
43
|
+
.pass-card--expired .pass-card-bg-left-color-grid__bar {
|
|
44
|
+
background: var(--pass-card-expired-shape);
|
|
45
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import './PassCardBg.css';
|
|
2
|
+
import './PassCardBgLeftColorGrid.css';
|
|
3
|
+
import { type PassCardBgTheme } from './PassCardBgTheme';
|
|
4
|
+
/** @public */
|
|
5
|
+
export declare const passCardBgLeftColorGridTheme: PassCardBgTheme;
|
|
6
|
+
/** @public */
|
|
7
|
+
export type PassCardBgLeftColorGridProps = Record<string, never>;
|
|
8
|
+
/** @public */
|
|
9
|
+
export default function PassCardBgLeftColorGrid(_props?: PassCardBgLeftColorGridProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useParentBgTheme } from '../../hooks/useParentBgTheme';
|
|
3
|
+
import './PassCardBg.css';
|
|
4
|
+
import './PassCardBgLeftColorGrid.css';
|
|
5
|
+
import symbolIhab from '../../logo/Symbol_IHAB.svg';
|
|
6
|
+
import { injectPassCardBgTheme, clearPassCardBgTheme } from './PassCardBgTheme';
|
|
7
|
+
/** @public */
|
|
8
|
+
export const passCardBgLeftColorGridTheme = {
|
|
9
|
+
text: '#ffffff',
|
|
10
|
+
sub: 'var(--color-lightGray)',
|
|
11
|
+
logoBase: 'Logo_speechearManager_kr',
|
|
12
|
+
logoColor: '_white',
|
|
13
|
+
copyrightColor: '#ffffff',
|
|
14
|
+
};
|
|
15
|
+
/** @public */
|
|
16
|
+
export default function PassCardBgLeftColorGrid(_props = {}) {
|
|
17
|
+
const ref = useParentBgTheme(passCardBgLeftColorGridTheme, injectPassCardBgTheme, clearPassCardBgTheme);
|
|
18
|
+
return (_jsxs("div", { ref: ref, className: "pass-card-bg pass-card-bg-left-color-grid", "aria-hidden": "true", children: [_jsx("div", { className: "pass-card-bg-left-color-grid__bar" }), _jsx("div", { className: "pass-card-bg-left-color-grid__grid" }), _jsx("span", { className: "pass-card-bg__symbol pass-card-bg-left-color-grid__symbol", style: { ['--symbol-url']: `url("${symbolIhab}")` } })] }));
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/* ── PassCardBg_SoundLine ─────────────────────────────────────────── */
|
|
2
|
+
/* 다중 파동 리본 (4 humps) — 시안 → 그린 → 옐로 그라데이션 */
|
|
3
|
+
|
|
4
|
+
.pass-card-bg-sound-line {
|
|
5
|
+
background:
|
|
6
|
+
linear-gradient(60deg,
|
|
7
|
+
var(--color-pureWhite) 0%,
|
|
8
|
+
color-mix(in srgb, var(--color-sub) 15%, var(--color-pureWhite)) 100%
|
|
9
|
+
);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.pass-card-bg-sound-line__svg {
|
|
13
|
+
position: absolute;
|
|
14
|
+
inset: 0;
|
|
15
|
+
width: 100%;
|
|
16
|
+
height: 100%;
|
|
17
|
+
pointer-events: none;
|
|
18
|
+
}
|
|
19
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import './PassCardBg.css';
|
|
2
|
+
import './PassCardBgSoundLine.css';
|
|
3
|
+
import { type PassCardBgTheme } from './PassCardBgTheme';
|
|
4
|
+
/** @public */
|
|
5
|
+
export declare const passCardBgSoundLineTheme: PassCardBgTheme;
|
|
6
|
+
/** @public */
|
|
7
|
+
export type PassCardBgSoundLineProps = Record<string, never>;
|
|
8
|
+
/** @public */
|
|
9
|
+
export default function PassCardBgSoundLine(_props?: PassCardBgSoundLineProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useId } from 'react';
|
|
4
|
+
import { useParentBgTheme } from '../../hooks/useParentBgTheme';
|
|
5
|
+
import './PassCardBg.css';
|
|
6
|
+
import './PassCardBgSoundLine.css';
|
|
7
|
+
import symbolIhab from '../../logo/Symbol_IHAB.svg';
|
|
8
|
+
import { injectPassCardBgTheme, clearPassCardBgTheme } from './PassCardBgTheme';
|
|
9
|
+
/** @public */
|
|
10
|
+
export const passCardBgSoundLineTheme = {
|
|
11
|
+
text: '#1a1a1a',
|
|
12
|
+
sub: 'var(--color-lightGray)',
|
|
13
|
+
logoBase: 'Logo_speechear_kr',
|
|
14
|
+
copyrightColor: '#1a1a1a',
|
|
15
|
+
};
|
|
16
|
+
/** @public */
|
|
17
|
+
export default function PassCardBgSoundLine(_props = {}) {
|
|
18
|
+
// 같은 플랜 카드가 badge tier별로 여러 인스턴스 렌더될 수 있어(예: manager_standard),
|
|
19
|
+
// 고정 id면 두 번째 인스턴스부터 url(#id) 참조가 첫 번째 인스턴스의 그라디언트를 가리킨다
|
|
20
|
+
const gradId = `passcard-sound-line-grad-${useId()}`;
|
|
21
|
+
const ref = useParentBgTheme(passCardBgSoundLineTheme, injectPassCardBgTheme, clearPassCardBgTheme);
|
|
22
|
+
return (_jsxs("div", { ref: ref, className: "pass-card-bg pass-card-bg-sound-line", "aria-hidden": "true", children: [_jsxs("svg", { className: "pass-card-bg-sound-line__svg", viewBox: "0 0 500 300", preserveAspectRatio: "xMidYMid slice", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("defs", { children: _jsxs("linearGradient", { id: gradId, x1: "0", y1: "0", x2: "1", y2: "0", children: [_jsx("stop", { offset: "20%", stopColor: "var(--color-main)" }), _jsx("stop", { offset: "80%", stopColor: "var(--color-sub)" })] }) }), _jsx("g", { transform: "translate(25, 45)", children: _jsx("path", { d: "M -30 150 C 40 80, 100 220, 160 150 S 280 80, 340 150 S 460 220, 510 150", fill: "none", stroke: `url(#${gradId})`, strokeWidth: "50", strokeLinecap: "round" }) })] }), _jsx("span", { className: "pass-card-bg__symbol pass-card-bg-sound-line__symbol", style: { ['--symbol-url']: `url("${symbolIhab}")` } })] }));
|
|
23
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/* ── PassCardBg_SoundLine_v1 ──────────────────────────────────────── */
|
|
2
|
+
/* 다중 파동 리본 (4 humps) — main → sub 그라데이션 */
|
|
3
|
+
|
|
4
|
+
.pass-card-bg-sound-line-v1 {
|
|
5
|
+
background: linear-gradient(135deg, var(--color-main), var(--color-sub));
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.pass-card-bg-sound-line-v1__svg {
|
|
9
|
+
position: absolute;
|
|
10
|
+
inset: 0;
|
|
11
|
+
width: 100%;
|
|
12
|
+
height: 100%;
|
|
13
|
+
pointer-events: none;
|
|
14
|
+
}
|
|
15
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import './PassCardBg.css';
|
|
2
|
+
import './PassCardBgSoundLineV1.css';
|
|
3
|
+
import { type PassCardBgTheme } from './PassCardBgTheme';
|
|
4
|
+
/** @public */
|
|
5
|
+
export declare const passCardBgSoundLineV1Theme: PassCardBgTheme;
|
|
6
|
+
/** @public */
|
|
7
|
+
export type PassCardBgSoundLineV1Props = Record<string, never>;
|
|
8
|
+
/** @public */
|
|
9
|
+
export default function PassCardBgSoundLineV1(_props?: PassCardBgSoundLineV1Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useId } from 'react';
|
|
4
|
+
import { useParentBgTheme } from '../../hooks/useParentBgTheme';
|
|
5
|
+
import './PassCardBg.css';
|
|
6
|
+
import './PassCardBgSoundLineV1.css';
|
|
7
|
+
import symbolIhab from '../../logo/Symbol_IHAB_white.svg';
|
|
8
|
+
import { injectPassCardBgTheme, clearPassCardBgTheme } from './PassCardBgTheme';
|
|
9
|
+
/** @public */
|
|
10
|
+
export const passCardBgSoundLineV1Theme = {
|
|
11
|
+
text: '#ffffff',
|
|
12
|
+
sub: 'var(--color-lightGray)',
|
|
13
|
+
logoBase: 'Logo_speechear_kr',
|
|
14
|
+
logoColor: '_white',
|
|
15
|
+
copyrightColor: '#ffffff',
|
|
16
|
+
};
|
|
17
|
+
/** @public */
|
|
18
|
+
export default function PassCardBgSoundLineV1(_props = {}) {
|
|
19
|
+
// 같은 플랜 카드가 badge tier별로 여러 인스턴스 렌더될 수 있어, 고정 id면
|
|
20
|
+
// 두 번째 인스턴스부터 url(#id) 참조가 첫 번째 인스턴스의 그라디언트를 가리킨다
|
|
21
|
+
const gradId = `passcard-sound-line-v1-grad-${useId()}`;
|
|
22
|
+
const ref = useParentBgTheme(passCardBgSoundLineV1Theme, injectPassCardBgTheme, clearPassCardBgTheme);
|
|
23
|
+
return (_jsxs("div", { ref: ref, className: "pass-card-bg pass-card-bg-sound-line-v1", "aria-hidden": "true", children: [_jsxs("svg", { className: "pass-card-bg-sound-line-v1__svg", viewBox: "0 0 500 300", preserveAspectRatio: "xMidYMid slice", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("defs", { children: _jsxs("linearGradient", { id: gradId, x1: "0", y1: "0", x2: "1", y2: "0", children: [_jsx("stop", { offset: "50%", stopColor: "var(--color-sub)" }), _jsx("stop", { offset: "90%", stopColor: "var(--color-main)" })] }) }), _jsx("g", { transform: "translate(25, 45)", children: _jsx("path", { d: "M -30 150 C 40 80, 100 220, 160 150 S 280 80, 340 150 S 460 220, 510 150", fill: "none", stroke: `url(#${gradId})`, strokeWidth: "50", strokeLinecap: "round" }) })] }), _jsx("span", { className: "pass-card-bg__symbol pass-card-bg-sound-line-v1__symbol", style: { ['--symbol-url']: `url("${symbolIhab}")` } })] }));
|
|
24
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/* ── PassCardBg_SoundMove ─────────────────────────────────────────── */
|
|
2
|
+
/* IHAB 심볼 외곽선을 동심으로 반복 — 우하단에서 좌상단으로 확산 */
|
|
3
|
+
|
|
4
|
+
.pass-card-bg-sound-move {
|
|
5
|
+
background: var(--color-pureWhite);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/* SVG 레이어 — 카드 전체 채움 */
|
|
9
|
+
.pass-card-bg-sound-move__svg {
|
|
10
|
+
position: absolute;
|
|
11
|
+
inset: 0;
|
|
12
|
+
width: 100%;
|
|
13
|
+
height: 100%;
|
|
14
|
+
pointer-events: none;
|
|
15
|
+
}
|
|
16
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import './PassCardBg.css';
|
|
2
|
+
import './PassCardBgSoundMove.css';
|
|
3
|
+
import { type PassCardBgTheme } from './PassCardBgTheme';
|
|
4
|
+
/** @public */
|
|
5
|
+
export declare const passCardBgSoundMoveTheme: PassCardBgTheme;
|
|
6
|
+
/** @public */
|
|
7
|
+
export type PassCardBgSoundMoveProps = Record<string, never>;
|
|
8
|
+
/** @public */
|
|
9
|
+
export default function PassCardBgSoundMove(_props?: PassCardBgSoundMoveProps): import("react").JSX.Element;
|