@ihabdevteam/core 0.177.0 → 0.179.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/dist/components.cjs.js +42 -42
  3. package/dist/components.esm.css +3 -3
  4. package/dist/hooks.cjs.js +1 -1
  5. package/dist/i18n.cjs.js +1 -1
  6. package/dist/ihabdevteam-core.cjs.js +45 -45
  7. package/dist/ihabdevteam-core.d.ts +47 -3
  8. package/dist/packages/core/src/components/BarChart.js +7 -1
  9. package/dist/packages/core/src/components/Button.css +16 -0
  10. package/dist/packages/core/src/components/Button.js +3 -2
  11. package/dist/packages/core/src/components/ChartSection.css +14 -3
  12. package/dist/packages/core/src/components/ChartSection.d.ts +10 -1
  13. package/dist/packages/core/src/components/ChartSection.js +11 -4
  14. package/dist/packages/core/src/components/Popup/DeviceSideTable.d.ts +4 -1
  15. package/dist/packages/core/src/components/Popup/DeviceSideTable.js +2 -2
  16. package/dist/packages/core/src/components/Popup/Popup.css +10 -1
  17. package/dist/packages/core/src/components/Popup/Popup.d.ts +10 -0
  18. package/dist/packages/core/src/components/Popup/Popup.js +2 -2
  19. package/dist/packages/core/src/components/RingChart.js +7 -1
  20. package/dist/packages/core/src/components/SegmentedControl.css +4 -1
  21. package/dist/packages/core/src/components/SegmentedControl.d.ts +9 -0
  22. package/dist/packages/core/src/components/SegmentedControl.js +2 -2
  23. package/dist/packages/core/src/components/TextField.js +2 -3
  24. package/dist/packages/core/src/components/Training/TrainingBlock.css +20 -0
  25. package/dist/packages/core/src/components/Training/TrainingPagePopup.css +6 -0
  26. package/dist/packages/core/src/components/Training/TrainingPagePopup.d.ts +4 -0
  27. package/dist/packages/core/src/components/Training/TrainingPagePopup.js +3 -3
  28. package/dist/packages/core/src/components/buttonTypes.d.ts +9 -0
  29. package/dist/packages/core/src/hooks/useIsoLayoutEffect.d.ts +16 -0
  30. package/dist/packages/core/src/hooks/useIsoLayoutEffect.js +17 -0
  31. package/dist/packages/core/src/version.d.ts +1 -1
  32. package/dist/packages/core/src/version.js +1 -1
  33. package/dist/utils.cjs.js +1 -1
  34. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,68 @@ All notable changes to this project will be documented in this file.
7
7
  > 적은 글이라, 지금 이름으로 고쳐 놓으면 그 시절에 그 이름으로 받은 사람이
8
8
  > 제 이야기를 못 찾는다.
9
9
 
10
+ ## 0.179.0
11
+
12
+ ### 소비자에게 먼저 — 앱이 코어 이름을 겨냥하던 자리 다섯을 코어가 쥔다
13
+
14
+ 말귀가 앱 CSS 를 **전수로 세어(117규칙 · 34파일)** 보낸 둘째 묶음이다(2026-09-18). 그 가운데 코어가 쥐는 편이 나은
15
+ 다섯을 받았다. 나머지는 그 화면만의 쓰임이라 앱에 남는다(랜딩 폰 목업 · 게임 입력칸 · 어드민 사이드내브 등).
16
+
17
+ - **`Popup footerLayout`**(`'center'` 기본 · `'fill'` · `'between'`): 바닥 줄의 가로 배치. `'fill'` 은 폭을 똑같이 나누고(단추 둘 반반),
18
+ `'between'` 은 양 끝으로 밀며 양옆에 `--spacing-xl` 을 둔다(왼쪽 보조 · 오른쪽 주액션). `buttons` 배열에도 듣는다.
19
+ **바닥 줄의 세로가 이제 늘 가운데다** — 안 적어 두면 `stretch` 라 키가 다른 것을 나란히 두면 늘어났고, 소비자 셋이 이 자리를
20
+ 각자 `align-items: center` 로 칠하고 있었다. 바닥에 **키를 채우던 것**(칸막이 등)을 둔 창은 한 번 본다.
21
+ - **`PagePopup contentFull`**: 속 통의 `max-width: 800px` 과 `--spacing-page` 여백을 푼다. 안에 넣는 화면이 제 폭·여백을 그대로 쓰는 쓰임
22
+ (표 한 판을 꽉 채우는 창). 소비자 둘이 `.page-popup__content { padding: 0; max-width: none }` 로 각자 풀고 있었다.
23
+ - **`Button nowrap`**: 라벨을 한 줄로 둔다. '문자'·'카카오' 처럼 **한 낱말인 두 글자**가 표 칸에서 갈리던 자리다.
24
+ **기본은 그대로 줄바꿈이다** — 두 줄 라벨이 이미 선 화면이 있고, 좁은 자리에서 nowrap 은 넘쳐 **잘린다**(줄바꿈은 키만 늘어난다).
25
+ - **`Button align='left'` 가 교차축까지 왼쪽이다**: 두 줄 라벨(`label` + `subLabel`)이 `align='left'` 에서도 가운데로 모여
26
+ 소비자 둘이 `align-items: flex-start` 를 다시 칠하고 있었다. 한 줄 라벨은 가로 자리만 바뀐다(세로 가운데는 그대로).
27
+ `align='left'` 를 **두 줄 라벨에 쓰고 있던** 화면은 라벨이 왼쪽으로 붙는다 — 그게 이 prop 의 뜻이다.
28
+ - **훈련 갈래 목록이 폰(≤767px)에서 두 열이다**: 전에는 `flex-wrap` + 단추 `width: calc(50% - 5px)` 로 두 열을 노렸는데
29
+ **둘 합이 폭과 딱 같아서** 테두리·반올림 한 픽셀에 밀려 한 열로 떨어졌다. 이제 코어가 그 화면 규칙(2칸 격자)을 쥔다 —
30
+ 소비자가 `.page .training-list` 로 특이도를 못박아 격자를 다시 깔던 것(코어와 같은 셈수로는 **청크 차례가 승자를 정했다**)을 걷을 수 있다.
31
+ 감싸개를 한 겹 두는 화면도 셀을 채운다(손자까지 본다).
32
+
33
+ ### 안 바꾼 것 — 이미 있었다
34
+
35
+ - **`StatChart` 를 눌러지는 카드로** 는 새로 넣을 것이 없었다. `onClick` 을 주면 `manager-stat-card--clickable` 이 붙어
36
+ 커서·hover 테두리·Enter/Space·`role="button"`·Tab 자리가 함께 온다(`ChartSection onClick` 과 같은 결). 앱이 손으로 붙일 것이 아니다.
37
+
38
+ ## 0.178.0
39
+
40
+ ### 소비자에게 먼저 — 앱이 덮고 있던 자리 넷을 코어가 쥔다
41
+
42
+ 말귀가 문장훈련 분석 화면을 굳힌 뒤 **모아서 청한 묶음**이다(2026-09-17). 넷 다 앱 CSS 로 덮고 있던 자리이고,
43
+ 이 판을 받으면 그 덮개를 걷을 수 있다. 소비자가 손댈 것은 없다 — 새 prop 은 모두 **안 주면 예전 그대로** 다.
44
+
45
+ - **`ChartSection subRowAlign`**(`'start'` 기본 · `'center'` · `'end'`): 서브로우에 선 것들의 세로 맞춤.
46
+ 수(설명 한 줄 + 큰 수, 두 줄)와 **32px 고르개**가 함께 서면 고르개가 위에 붙어 아래가 29px 비었다
47
+ (말귀 실측: 서브로우 61.4px · 고르개 32px). `'center'` 면 수가 가장 높으므로 **수의 자리는 안 바뀌고** 낮은 것만 가운데로 온다.
48
+ 기본을 안 바꾼 것은 이미 선 화면 셋의 **범례**가 함께 움직이기 때문이다(범례는 첫 줄부터 읽는 편이 낫다).
49
+ - **`SegmentedControl` 32 짜리 칸의 기본 최소 폭 64 → 80px**, 그리고 **`minButtonWidth`**(px).
50
+ 64 는 갑갑했다(사용자 지시). 80 은 같은 화면 기간 고르개(size 40)와 같은 눈금이다. **이 기본값은 이미 선 화면을 움직인다** —
51
+ 32 짜리 고르개를 좁은 자리에 세운 카드는 한 번 본다. 이름이 긴 고르개('상세분석 · 로데이터')는 `minButtonWidth` 로 더 벌린다.
52
+ 바닥을 깔면 짧은 이름이 헐렁해지니, **이름 길이가 크게 다른 고르개는 주지 않는 편이 낫다.**
53
+ - **`BarChart`·`RingChart` 의 기다림이 그려질 것과 같은 키를 가진다** — "뼈대 먼저, 그 안에서 기다린다"(사용자 지시).
54
+ 전에는 기다림 상자가 186px 로 박혀 있었고 막대가 들어서면 156px 이라, 자료가 오는 순간 카드마다 30px 씩 줄어
55
+ 격자 넷이 한꺼번에 내려앉았다(말귀 실측: 섹션 372 → 342px). 이제 키는 차트가 쥔 값에서 온다 —
56
+ 막대는 제 자리 높이(small 100 · medium 140 · large 180)와 **축 줄 수**(밑이름이 있으면 두 줄 — 한 줄로 박아 뒀더니 그 차트에서 18px 모자랐다),
57
+ 링은 그려질 링과 **같은 지름**(medium 120 · small 96 · 숫자면 그 숫자). 놀이터에서 재서 맞췄다 — 기다림 181px = 그려진 것 181px, 링 카드 셋도 키가 같다.
58
+ `.manager-bar-chart-loading` 이름은 남겨 두었고(그 이름을 덮던 소비자가 있다) 기다림도 이제 `.manager-bar-chart-wrap` 안에 선다.
59
+ - **`DeviceSideTable loading`**: `Table` 의 `loading` 을 그대로 내려보낸다. 안쪽 표에는 있는데 이 감싸개에 없어서,
60
+ 기기 탭이 서버 줄을 기다리는 동안 **빈 표**를 그렸다가 줄이 오면 늘어났다.
61
+
62
+ ### 함께 나가는 것 — 그동안 미배포로 쌓인 것
63
+
64
+ - **`ChartSection` 이 "칸이 좁은가" 를 그리기 **전** 에 잰다**(`useEffect` → layout effect).
65
+ 전에는 좁은 카드도 **첫 프레임은 고르개를 편 채** 그려졌다가 다음 프레임에 '⋯' 로 접혔다. 그 한 프레임 동안
66
+ 머리가 한 줄 늘어 카드가 부풀고 격자 전체가 따라 움직였다 — 말귀 실측 2026-09-17: 머리 32 → **70** → 32px,
67
+ 섹션 342 → **380** → 342px, 페이지 바닥이 **38px** 출렁(`layout-shift` 로 잡힘).
68
+ 뒤따르는 폭 변화는 `ResizeObserver` 가 그대로 따라간다. 소비자가 할 일은 없다.
69
+ 서버 렌더에서는 여전히 effect 로 돈다(layout effect 는 서버에서 돌지 않고 React 가 경고를 찍는다) —
70
+ `TextField` 가 제 파일에 두고 쓰던 그 한 줄을 `hooks/useIsoLayoutEffect`(@internal) 한 곳으로 모아 둘이 함께 쓴다.
71
+
10
72
  ## 0.177.0
11
73
 
12
74
  ### 소비자에게 먼저 — `totalNum` 이 그리는 자리가 머리 오른쪽에서 **제목 아래 서브로우** 로 내려간다