@ihabdevteam/core 0.322.0 → 0.324.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/CHANGELOG.md +557 -0
- package/dist/components.cjs.js +183 -183
- package/dist/components.esm.css +1 -1
- package/dist/hooks.cjs.js +3 -3
- package/dist/i18n.cjs.js +3 -3
- package/dist/ihabdevteam-core.cjs.js +187 -187
- package/dist/ihabdevteam-core.d.ts +55 -17
- package/dist/packages/core/src/components/Accordion.js +3 -3
- package/dist/packages/core/src/components/Alert.js +2 -2
- package/dist/packages/core/src/components/BarChart.js +120 -119
- package/dist/packages/core/src/components/BottomNav.js +18 -18
- package/dist/packages/core/src/components/BulkBar.js +25 -25
- package/dist/packages/core/src/components/Button.js +16 -16
- package/dist/packages/core/src/components/Calendar.js +17 -17
- package/dist/packages/core/src/components/ChartSection.js +30 -30
- package/dist/packages/core/src/components/CountTile.js +38 -38
- package/dist/packages/core/src/components/DatePicker.js +59 -59
- package/dist/packages/core/src/components/Dialog.js +14 -14
- package/dist/packages/core/src/components/Effect/EffectPartyPopperHost.js +8 -8
- package/dist/packages/core/src/components/FilterPanel.js +6 -6
- package/dist/packages/core/src/components/FilterSectionInfo.js +6 -6
- package/dist/packages/core/src/components/GameIntro.js +1 -1
- package/dist/packages/core/src/components/Icon.js +2 -2
- package/dist/packages/core/src/components/ItemActions.js +16 -16
- package/dist/packages/core/src/components/LandingHeader.js +6 -6
- package/dist/packages/core/src/components/LineChart.js +24 -24
- package/dist/packages/core/src/components/Loader.js +5 -5
- package/dist/packages/core/src/components/NoticeBox.js +3 -3
- package/dist/packages/core/src/components/PageTitle.js +2 -2
- package/dist/packages/core/src/components/Pagination.js +4 -4
- package/dist/packages/core/src/components/Panel.js +2 -2
- package/dist/packages/core/src/components/PanelRow.js +6 -13
- package/dist/packages/core/src/components/PassCard/PassCard.js +9 -9
- package/dist/packages/core/src/components/PassCard/passCardProduct.js +2 -2
- package/dist/packages/core/src/components/PaymentPlan.js +5 -5
- package/dist/packages/core/src/components/Popup/ConfirmPopup.js +29 -29
- package/dist/packages/core/src/components/Popup/CouponInputPopup.js +2 -2
- package/dist/packages/core/src/components/Popup/DeviceSideTable.js +18 -25
- package/dist/packages/core/src/components/Popup/ListPopup.js +3 -3
- package/dist/packages/core/src/components/Popup/LoadTablePopup.js +7 -7
- package/dist/packages/core/src/components/Popup/Popup.js +27 -27
- package/dist/packages/core/src/components/Popup/SaveTablePopup.js +5 -5
- package/dist/packages/core/src/components/Popup/TrainingResultPopup.js +4 -4
- package/dist/packages/core/src/components/Popup/customerDetailUtils.js +18 -18
- package/dist/packages/core/src/components/Popup/useDiscardGuard.js +4 -4
- package/dist/packages/core/src/components/ProgressIndicator.js +5 -5
- package/dist/packages/core/src/components/PromoBannerBg/promoBannerBg.js +16 -16
- package/dist/packages/core/src/components/Rating.js +20 -20
- package/dist/packages/core/src/components/Report/ReportDocument.js +21 -21
- package/dist/packages/core/src/components/RingChart.js +5 -5
- package/dist/packages/core/src/components/SectionHeadFloat.js +15 -15
- package/dist/packages/core/src/components/SegmentedControl.js +34 -34
- package/dist/packages/core/src/components/SideNav.js +37 -37
- package/dist/packages/core/src/components/Slider.js +2 -2
- package/dist/packages/core/src/components/SoundCompass.js +5 -5
- package/dist/packages/core/src/components/Table.js +257 -98
- package/dist/packages/core/src/components/Tabs.js +12 -12
- package/dist/packages/core/src/components/TextField.js +34 -34
- package/dist/packages/core/src/components/Toast.js +6 -6
- package/dist/packages/core/src/components/Tooltip/MenuTooltip.js +4 -4
- package/dist/packages/core/src/components/Tooltip/Tooltip.js +22 -22
- package/dist/packages/core/src/components/Tooltip/TrainingTooltip.js +4 -4
- package/dist/packages/core/src/components/TopBanner.js +28 -28
- package/dist/packages/core/src/components/Training/AudioPlayerWaveForm.js +11 -11
- package/dist/packages/core/src/components/Training/CategoryIcon.js +2 -2
- package/dist/packages/core/src/components/Training/NoisePlayerContext.js +12 -12
- package/dist/packages/core/src/components/Training/NoiseSettingsTooltip.js +2 -2
- package/dist/packages/core/src/components/Training/TrainingBlock.js +11 -11
- package/dist/packages/core/src/components/Training/TrainingBlockButton.js +10 -10
- package/dist/packages/core/src/components/Training/TrainingBlockGrid.js +21 -21
- package/dist/packages/core/src/components/Training/TrainingCard.css +13 -1
- package/dist/packages/core/src/components/Training/TrainingCard.js +2 -2
- package/dist/packages/core/src/components/Training/TrainingCardGroup.js +6 -6
- package/dist/packages/core/src/components/Training/TrainingPagePopup.js +81 -81
- package/dist/packages/core/src/components/Training/TrainingPagePopupBottom.js +17 -17
- package/dist/packages/core/src/components/Training/TrainingStepAudioPlayer.js +127 -127
- package/dist/packages/core/src/components/Training/TrainingStepCard.js +18 -18
- package/dist/packages/core/src/components/Training/TrainingStepConfirmWithText.js +4 -4
- package/dist/packages/core/src/components/Training/TrainingStepOrderList.js +12 -12
- package/dist/packages/core/src/components/Training/TrainingStepTextBox.js +12 -12
- package/dist/packages/core/src/components/Training/TrainingStepTitle.js +4 -4
- package/dist/packages/core/src/components/Training/TrainingWordCard.js +17 -17
- package/dist/packages/core/src/components/Training/WordTablePopup.js +5 -5
- package/dist/packages/core/src/components/Training/audioPlaybackRules.js +8 -8
- package/dist/packages/core/src/components/Training/audioTimeline.js +25 -25
- package/dist/packages/core/src/components/Training/oneShotSound.js +13 -13
- package/dist/packages/core/src/components/Training/trainingMissStats.js +20 -20
- package/dist/packages/core/src/components/Training/trainingPopupUtils.js +7 -7
- package/dist/packages/core/src/components/Training/useAudioPreview.js +15 -15
- package/dist/packages/core/src/components/Training/useFloatingFocus.js +14 -14
- package/dist/packages/core/src/components/Training/useNoiseFade.js +22 -22
- package/dist/packages/core/src/components/Training/useObjectUrls.js +2 -2
- package/dist/packages/core/src/components/Training/usePlaybackSequencer.d.ts +2 -2
- package/dist/packages/core/src/components/Training/usePlaybackSequencer.js +23 -23
- package/dist/packages/core/src/components/Training/useProgressTicker.js +33 -33
- package/dist/packages/core/src/components/Training/useTTSPlayback.js +17 -17
- package/dist/packages/core/src/components/Training/useWaveReady.js +11 -11
- package/dist/packages/core/src/components/UpdateAlert.js +6 -6
- package/dist/packages/core/src/components/Word/PhonemeSelectBlock.js +7 -1
- package/dist/packages/core/src/components/Word/TableFilterPanel.js +3 -3
- package/dist/packages/core/src/components/Word/WordSearchResultBlock.js +10 -10
- package/dist/packages/core/src/components/Word/WordTableBlock.js +28 -28
- package/dist/packages/core/src/components/Word/WordTableButton.css +16 -2
- package/dist/packages/core/src/components/Word/WordTableThumbnail.css +6 -1
- package/dist/packages/core/src/components/Word/generatedDraft.js +14 -14
- package/dist/packages/core/src/components/Word/useWordTableDisplaySettings.js +7 -7
- package/dist/packages/core/src/components/Word/wordScoreStats.js +15 -15
- package/dist/packages/core/src/components/Word/wordTablePrint.js +10 -10
- package/dist/packages/core/src/components/Word/wordTableRecommend.js +11 -11
- package/dist/packages/core/src/components/Word/wordTableReview.js +28 -28
- package/dist/packages/core/src/components/Word/wordTableSettings.d.ts +8 -11
- package/dist/packages/core/src/components/Word/wordTableSettings.js +48 -36
- package/dist/packages/core/src/components/WordTable.js +130 -130
- package/dist/packages/core/src/components/barChartData.d.ts +16 -1
- package/dist/packages/core/src/components/barChartData.js +49 -29
- package/dist/packages/core/src/components/barChartTypes.js +8 -8
- package/dist/packages/core/src/components/tableTrackList.js +11 -11
- package/dist/packages/core/src/components/updateAlertStack.js +28 -28
- package/dist/packages/core/src/components/useBarChartControl.js +4 -6
- package/dist/packages/core/src/components/useComboboxSuggestions.js +17 -17
- package/dist/packages/core/src/components/useToastLifecycle.js +18 -18
- package/dist/packages/core/src/components/wordTableLayout.d.ts +17 -4
- package/dist/packages/core/src/components/wordTableLayout.js +5 -5
- package/dist/packages/core/src/context/I18nProvider.js +6 -6
- package/dist/packages/core/src/hooks/focusReturn.js +27 -27
- package/dist/packages/core/src/hooks/inputModality.js +13 -13
- package/dist/packages/core/src/hooks/touchToggle.js +39 -39
- package/dist/packages/core/src/hooks/useAnchoredMenu.js +30 -30
- package/dist/packages/core/src/hooks/useDailyTrainingSelection.js +28 -28
- package/dist/packages/core/src/hooks/useDocumentTitle.js +10 -10
- package/dist/packages/core/src/hooks/useEditableList.js +4 -4
- package/dist/packages/core/src/hooks/useFocusTrap.js +2 -2
- package/dist/packages/core/src/hooks/useFontScale.js +6 -6
- package/dist/packages/core/src/hooks/useIcon.js +7 -7
- package/dist/packages/core/src/hooks/useListControls.js +2 -2
- package/dist/packages/core/src/hooks/usePageResetOnChange.js +3 -3
- package/dist/packages/core/src/hooks/usePasswordChange.js +4 -4
- package/dist/packages/core/src/hooks/usePendingPress.js +7 -7
- package/dist/packages/core/src/hooks/useRelativeDay.js +4 -4
- package/dist/packages/core/src/hooks/useSoundCompassExam.js +6 -6
- package/dist/packages/core/src/hooks/useTablePaging.d.ts +0 -11
- package/dist/packages/core/src/hooks/useTablePaging.js +29 -34
- package/dist/packages/core/src/hooks/useTrainingSessionLog.js +35 -35
- package/dist/packages/core/src/hooks/useVisitSchedule.js +4 -4
- package/dist/packages/core/src/hooks/useWordAttributeFilter.js +14 -14
- package/dist/packages/core/src/hooks/useWordMeanings.js +5 -5
- package/dist/packages/core/src/hooks/useWordTrainingFilter.js +7 -7
- package/dist/packages/core/src/i18n/locales/en.json +14 -2
- package/dist/packages/core/src/i18n/locales/ko.json +13 -1
- package/dist/packages/core/src/types/wordSearch.d.ts +9 -0
- package/dist/packages/core/src/utils/audioMeter.js +5 -5
- package/dist/packages/core/src/utils/audioPeaks.d.ts +1 -1
- package/dist/packages/core/src/utils/audioPeaks.js +18 -18
- package/dist/packages/core/src/utils/blockGrid.js +4 -4
- package/dist/packages/core/src/utils/chunkSkew.js +9 -9
- package/dist/packages/core/src/utils/clipboard.js +3 -3
- package/dist/packages/core/src/utils/dailySelectionUtils.js +12 -12
- package/dist/packages/core/src/utils/date.js +12 -12
- package/dist/packages/core/src/utils/devWarn.js +4 -4
- package/dist/packages/core/src/utils/deviceKind.d.ts +37 -7
- package/dist/packages/core/src/utils/deviceKind.js +53 -10
- package/dist/packages/core/src/utils/errorMessage.js +7 -7
- package/dist/packages/core/src/utils/filterPanelSummary.js +14 -14
- package/dist/packages/core/src/utils/format.js +4 -4
- package/dist/packages/core/src/utils/getTrainingData.js +9 -9
- package/dist/packages/core/src/utils/imageConfig.js +17 -17
- package/dist/packages/core/src/utils/koreanSyllable.js +18 -18
- package/dist/packages/core/src/utils/navScroll.js +2 -2
- package/dist/packages/core/src/utils/phonemeConvert.d.ts +7 -0
- package/dist/packages/core/src/utils/phonemeConvert.js +19 -10
- package/dist/packages/core/src/utils/phonemeGroups.js +2 -2
- package/dist/packages/core/src/utils/phonemePairSearch.d.ts +1 -0
- package/dist/packages/core/src/utils/phonemePairSearch.js +129 -105
- package/dist/packages/core/src/utils/phonemePairSearchTypes.d.ts +2 -0
- package/dist/packages/core/src/utils/phonemeSectionCodes.d.ts +52 -0
- package/dist/packages/core/src/utils/phonemeSectionCodes.js +76 -0
- package/dist/packages/core/src/utils/prefetchChunk.js +6 -6
- package/dist/packages/core/src/utils/safeHref.js +4 -4
- package/dist/packages/core/src/utils/savedWordTables.js +5 -5
- package/dist/packages/core/src/utils/speak.js +12 -12
- package/dist/packages/core/src/utils/textSort.d.ts +0 -10
- package/dist/packages/core/src/utils/textSort.js +38 -48
- package/dist/packages/core/src/utils/theme.js +3 -3
- package/dist/packages/core/src/utils/trainingItemResults.js +3 -3
- package/dist/packages/core/src/utils/ttsConfig.js +2 -2
- package/dist/packages/core/src/utils/wordAttributeFilterCodes.d.ts +1 -1
- package/dist/packages/core/src/utils/wordAttributeFilterCodes.js +65 -45
- package/dist/packages/core/src/utils/wordContrast.js +3 -3
- package/dist/packages/core/src/utils/wordPairIndex.js +4 -4
- package/dist/packages/core/src/utils/wordTrainingGenerators.js +4 -4
- package/dist/packages/core/src/utils/wordTrainingPool.js +15 -15
- package/dist/packages/core/src/utils/wordTrainingRuntime.js +6 -6
- package/dist/packages/core/src/utils/wornDate.d.ts +3 -3
- package/dist/packages/core/src/utils/wornDate.js +14 -14
- package/dist/packages/core/src/version.d.ts +1 -1
- package/dist/packages/core/src/version.js +1 -1
- package/dist/utils.cjs.js +4 -4
- package/package.json +1 -1
|
@@ -1678,7 +1678,7 @@ export declare function copyText(text: string): Promise<boolean>;
|
|
|
1678
1678
|
*
|
|
1679
1679
|
* 값은 손으로 적고 `test/coreVersion.test.ts` 가 package.json 과 어긋나면 운다.
|
|
1680
1680
|
*/
|
|
1681
|
-
export declare const CORE_VERSION = "0.
|
|
1681
|
+
export declare const CORE_VERSION = "0.324.0";
|
|
1682
1682
|
|
|
1683
1683
|
/** @public */
|
|
1684
1684
|
declare const coreDefault: Record<string, unknown>;
|
|
@@ -4858,6 +4858,33 @@ export declare interface PhonemeFilterPanelProps {
|
|
|
4858
4858
|
*/
|
|
4859
4859
|
export declare function phonemePartsOf(word: string): string[];
|
|
4860
4860
|
|
|
4861
|
+
/**
|
|
4862
|
+
* **음절 자리의 코드** — `onset`·`vowel`·`coda`·`glide`, 그리고 빔(`none`).
|
|
4863
|
+
*
|
|
4864
|
+
* ## 왜 제 모듈인가
|
|
4865
|
+
*
|
|
4866
|
+
* 처음에는 이 가름을 `phonemePairSearch` 에 두고 `phonemeConvert` 가 들여왔다 — 그런데
|
|
4867
|
+
* `phonemePairSearch` 도 `phonemeConvert`(`VOWEL_TO_PHONEME`)를 들여온다. **돌림 import** 가
|
|
4868
|
+
* 되어 시험 **338 꾸러미**가 한꺼번에 무너졌다(2026-10-13). 두 쪽이 함께 쓰는 것은 **어느
|
|
4869
|
+
* 한쪽이 아니라 그 아래**에 둔다.
|
|
4870
|
+
*
|
|
4871
|
+
* ## 왜 코드인가
|
|
4872
|
+
*
|
|
4873
|
+
* 전에는 열쇠가 한글(`'초성'`)이었고 그것이 **저장된다** — 단어표의
|
|
4874
|
+
* `searchConfig.phonemeSelected` 가 그 꼴이다. 저장되는 값이 표시 언어에 묶이면 말을 고치려
|
|
4875
|
+
* 해도 자료를 밀어야 한다(사장님 지시 2026-10-13 "동작에 한글이 끼지 말라").
|
|
4876
|
+
*
|
|
4877
|
+
* **값을 바꾸지 않고 읽는 쪽을 너그럽게 했다** — 표준의 *lenient reader · strict writer*.
|
|
4878
|
+
* 저장된 표를 밀지 않아도 되고 소비자 코드도 안 바뀐다. 안쪽 로직에서만 한글이 사라진다.
|
|
4879
|
+
*
|
|
4880
|
+
* 어휘는 **훈련 필터가 이미 쓰던 것**과 같게 뒀다(`useWordTrainingFilter` 의 `onset`·`vowel`·
|
|
4881
|
+
* `coda`) — 같은 뜻에 어휘가 둘이던 것을 모았다.
|
|
4882
|
+
*
|
|
4883
|
+
* **값(자모 `'ㄴ'`)은 그대로다** — 그것은 한국어 글자 그 자체이고 바꿀 것은 열쇠와 빔 값이다.
|
|
4884
|
+
*/
|
|
4885
|
+
/** 음절 자리 코드 @public */
|
|
4886
|
+
declare type PhonemeSectionCode = 'onset' | 'vowel' | 'coda' | 'glide';
|
|
4887
|
+
|
|
4861
4888
|
/** @public */
|
|
4862
4889
|
export declare function PhonemeSelectBlock({ sections, selectedList, count, onCountChange, maxCount, minCount, combinationSections, combinationSectionsForSlot, onSelect, placeholder, className, title, titleIcon, disc, showInfoButton, onClearPhoneme, onSearch, onSearchEmpty, searchDisabled, searchLabel, searchChecking, pairMode, sectionType, beforeSearchContent, beforeContent, afterContent, hideCountControl, ordinal, }: PhonemeSelectBlockProps): JSX.Element;
|
|
4863
4890
|
|
|
@@ -10140,17 +10167,6 @@ export declare function useTableSort<K extends string>(opts?: TableSortOptions<K
|
|
|
10140
10167
|
onClick: () => void;
|
|
10141
10168
|
};
|
|
10142
10169
|
sortRows: <R>(rows: readonly R[], getValue: (row: R, key: K) => unknown) => readonly R[];
|
|
10143
|
-
/** @deprecated `sort` 를 쓴다 — 같은 값이다(2026-10-13) */
|
|
10144
|
-
정렬: {
|
|
10145
|
-
key: K;
|
|
10146
|
-
asc: boolean;
|
|
10147
|
-
} | null;
|
|
10148
|
-
/** @deprecated `field` 를 쓴다 — 같은 함수다(2026-10-13) */
|
|
10149
|
-
칸: (label: string, key: K) => {
|
|
10150
|
-
label: string;
|
|
10151
|
-
sortDir: "desc" | "asc" | null;
|
|
10152
|
-
onClick: () => void;
|
|
10153
|
-
};
|
|
10154
10170
|
};
|
|
10155
10171
|
|
|
10156
10172
|
/**
|
|
@@ -10684,7 +10700,7 @@ export declare interface WordAttributeFilterKeys {
|
|
|
10684
10700
|
}
|
|
10685
10701
|
|
|
10686
10702
|
/** @public 공용 속성 필터 섹션 코드 */
|
|
10687
|
-
export declare type WordAttributeSectionCode = 'grade' | 'syllables' | 'pos' | 'wordType';
|
|
10703
|
+
export declare type WordAttributeSectionCode = 'grade' | 'syllables' | 'pos' | 'wordType' | 'field';
|
|
10688
10704
|
|
|
10689
10705
|
/** 정답 단어 구성 선택 상태 (정답 단어에만 적용 — 오답은 대립 관계로 결정) */
|
|
10690
10706
|
export declare interface WordComposition {
|
|
@@ -11008,7 +11024,16 @@ export declare interface WordSearchResultGroup {
|
|
|
11008
11024
|
export declare interface WordSearchResultItem {
|
|
11009
11025
|
id: string;
|
|
11010
11026
|
words: WordSearchResultWord[];
|
|
11027
|
+
/**
|
|
11028
|
+
* 갈린 자리 — **옛 한글 이름**(`'초성'`·`'모음'`·`'종성'`·`'활음'`)이다.
|
|
11029
|
+
*
|
|
11030
|
+
* @deprecated `diffSectionCode` 를 쓴다 — 같은 자리를 코드로 가리킨다. 2026-10-13 안쪽을
|
|
11031
|
+
* 코드로 옮겼지만 **소비자가 이 값으로 묶음을 가른다**(말귀 `WordPairsPage` 의 `GROUP_ORDER`).
|
|
11032
|
+
* 혼자 바꾸면 그쪽 묶음이 조용히 빈다. 소비자가 옮긴 뒤 걷는다.
|
|
11033
|
+
*/
|
|
11011
11034
|
diffSection?: string;
|
|
11035
|
+
/** 갈린 자리 — 코드(`'onset'`·`'vowel'`·`'coda'`·`'glide'`). 이쪽이 정본이다. */
|
|
11036
|
+
diffSectionCode?: PhonemeSectionCode;
|
|
11012
11037
|
diffHasEmpty?: boolean;
|
|
11013
11038
|
}
|
|
11014
11039
|
|
|
@@ -11259,11 +11284,24 @@ export declare interface WordTableButtonProps {
|
|
|
11259
11284
|
className?: string;
|
|
11260
11285
|
}
|
|
11261
11286
|
|
|
11262
|
-
/**
|
|
11263
|
-
|
|
11287
|
+
/**
|
|
11288
|
+
* 단어표 칸에 무엇을 그리나 — **코드다, 보일 글이 아니다.**
|
|
11289
|
+
*
|
|
11290
|
+
* 2026-10-13 한글 값(`'단어'`·`'이미지'`…)에서 옮겼다(사장님 지시 "모두 표준으로"). 저장되는
|
|
11291
|
+
* 값이 표시 언어에 묶이면 **말을 고치려 해도 자료를 밀어야** 한다 — 보일 글은 사전이 쥐고
|
|
11292
|
+
* (`wordTable.filter.*`), 코드는 안 바뀐다. 같은 저장소의 `wordAttributeFilterCodes` 가
|
|
11293
|
+
* 이미 그 꼴이었다(`'grade'`·`'native'`…).
|
|
11294
|
+
*
|
|
11295
|
+
* 옮길 때 소비자 넷을 셌다 — `WordTableContentType`·`WordTableCutLine` 을 적는 줄이 **0** 이고,
|
|
11296
|
+
* 저장되는 자리도 없었다(`SavedWordTable` 에 안 들고 `localStorage` 에도 안 적는다).
|
|
11297
|
+
* 그래서 받침 없이 그냥 옮겼다 — `DeviceSide` 때와 달리 밀 자료가 없다.
|
|
11298
|
+
*
|
|
11299
|
+
* @public
|
|
11300
|
+
*/
|
|
11301
|
+
export declare type WordTableContentType = 'word' | 'image' | 'standardPron' | 'colloquialPron';
|
|
11264
11302
|
|
|
11265
|
-
/** @public */
|
|
11266
|
-
export declare type WordTableCutLine = '
|
|
11303
|
+
/** 칸 사이 선 — **코드다.** 보일 글은 사전(`wordTable.filter.show`·`.dotted`·`.corner`·`.hide`). @public */
|
|
11304
|
+
export declare type WordTableCutLine = 'show' | 'dashed' | 'corner' | 'hide';
|
|
11267
11305
|
|
|
11268
11306
|
/** 표시(비편집) 단어표의 표 설정 값 — WordTable 렌더 props에 그대로 전달한다. */
|
|
11269
11307
|
export declare interface WordTableDisplaySettings {
|
|
@@ -37,7 +37,7 @@ function Item({ title, body, open = false, onToggle, avatar, titleClassName = 'b
|
|
|
37
37
|
export default function Accordion({ items = [], defaultOpenIndex = 0, size = 72, className = '', bodyClassName, }) {
|
|
38
38
|
/* 펼침을 자리 번호로만 들고 있어, 앞에 항목이 더해지면 **다른 항목이** 펼쳐졌다. id 가 있는 항목을 누르면 id 로 기억한다.
|
|
39
39
|
처음(아직 누르기 전)은 defaultOpenIndex 자리 — 항목이 늦게 와도 그 자리가 열린다(예전과 같다). */
|
|
40
|
-
const [
|
|
41
|
-
const
|
|
42
|
-
return (_jsx("div", { className: `accordion-group accordion-group--s${size} ${className}`.trim(), role: "list", children: items.map((item, i) => (_jsx(Item, { title: item.title, body: item.body, avatar: item.avatar, open:
|
|
40
|
+
const [open, setOpen] = useState({ index: defaultOpenIndex });
|
|
41
|
+
const isOpen = (item, i) => open.id != null && item.id != null ? item.id === open.id : open.id == null && i === open.index;
|
|
42
|
+
return (_jsx("div", { className: `accordion-group accordion-group--s${size} ${className}`.trim(), role: "list", children: items.map((item, i) => (_jsx(Item, { title: item.title, body: item.body, avatar: item.avatar, open: isOpen(item, i), onToggle: () => setOpen(isOpen(item, i) ? { index: -1 } : { index: i, id: item.id }), bodyClassName: bodyClassName }, item.id ?? i))) }));
|
|
43
43
|
}
|
|
@@ -29,8 +29,8 @@ export default function Alert({ tone = 'info', title, message, children, dismiss
|
|
|
29
29
|
return null;
|
|
30
30
|
const cls = cx('alert', `alert--${tone}`, className);
|
|
31
31
|
/* 톤과 상관없이 늘 role="alert" 였다 — "저장했습니다"(success)·안내(info)까지 하던 말을 끊고 읽혔다 */
|
|
32
|
-
const
|
|
33
|
-
const role =
|
|
32
|
+
const liveMode = live ?? (tone === 'danger' || tone === 'warning' ? 'assertive' : 'polite');
|
|
33
|
+
const role = liveMode === 'assertive' ? 'alert' : liveMode === 'polite' ? 'status' : undefined;
|
|
34
34
|
const hasTitle = Boolean(title);
|
|
35
35
|
const hasMessage = Boolean(message || children);
|
|
36
36
|
return (_jsxs("div", { ref: rootRef, className: cls, role: role, children: [_jsxs("div", { className: "alert__body", children: [_jsxs("div", { className: "alert__header", children: [_jsx(Icon, { icon: TONE_ICON[tone], size: 20, className: "alert__icon" }), hasTitle && _jsx("span", { className: "alert__title body-2", children: title }), !hasTitle && hasMessage && _jsx("div", { className: "alert__message body-3", children: message || children })] }), hasTitle && hasMessage && (_jsx("div", { className: "alert__message alert__message--indented body-3", children: message || children }))] }), dismissible && (_jsx("button", { type: "button", className: "alert__dismiss", onClick: handleDismiss, "aria-label": t('common.close', '닫기'), children: "\u00D7" }))] }));
|