sh-ui-cli 0.41.0 → 0.42.1
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/bin/sh-ui.mjs +11 -2
- package/data/changelog/versions.json +28 -0
- package/data/registry/react/components/calendar/index.tsx +808 -0
- package/data/registry/react/components/calendar/styles.css +213 -0
- package/data/registry/react/components/date-picker/index.tsx +23 -275
- package/data/registry/react/components/date-picker/styles.css +1 -177
- package/data/registry/react/registry.json +21 -1
- package/package.json +1 -1
- package/src/add.mjs +79 -16
- package/src/mcp.mjs +4 -0
package/bin/sh-ui.mjs
CHANGED
|
@@ -21,8 +21,10 @@ const usage = `사용법:
|
|
|
21
21
|
옵션:
|
|
22
22
|
--skip-install (add) 외부 패키지 자동 설치 생략
|
|
23
23
|
--diff (add) 파일을 쓰지 않고 변경 내역만 출력
|
|
24
|
+
--force (add) 기존 파일을 모두 덮어쓰기 (prompt 없음)
|
|
25
|
+
(remove) 사용자가 수정한 파일도 삭제
|
|
26
|
+
--keep (add) 기존 파일을 모두 유지 (prompt 없음)
|
|
24
27
|
--all (list) 설치되지 않은 컴포넌트까지 표시
|
|
25
|
-
--force (remove) 사용자가 수정한 파일도 삭제
|
|
26
28
|
--dry-run (remove) 삭제 대상만 출력하고 실행 안 함
|
|
27
29
|
`;
|
|
28
30
|
|
|
@@ -39,13 +41,20 @@ try {
|
|
|
39
41
|
case "add": {
|
|
40
42
|
const skipInstall = rest.includes("--skip-install");
|
|
41
43
|
const diffMode = rest.includes("--diff");
|
|
44
|
+
const force = rest.includes("--force");
|
|
45
|
+
const keepFlag = rest.includes("--keep");
|
|
46
|
+
if (force && keepFlag) {
|
|
47
|
+
console.error("에러: --force 와 --keep 은 함께 쓸 수 없습니다.\n");
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
const onConflict = force ? "overwrite" : keepFlag ? "keep" : "prompt";
|
|
42
51
|
const names = rest.filter((a) => !a.startsWith("--"));
|
|
43
52
|
if (names.length === 0) {
|
|
44
53
|
console.error("에러: 추가할 컴포넌트 이름이 필요합니다.\n");
|
|
45
54
|
console.error(usage);
|
|
46
55
|
process.exit(1);
|
|
47
56
|
}
|
|
48
|
-
await add({ cwd: process.cwd(), names, skipInstall, diffMode });
|
|
57
|
+
await add({ cwd: process.cwd(), names, skipInstall, diffMode, onConflict });
|
|
49
58
|
break;
|
|
50
59
|
}
|
|
51
60
|
case "list": {
|
|
@@ -2,6 +2,34 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$description": "sh-ui 릴리즈 노트 단일 소스. docs(React)와 showcase(Flutter)가 함께 읽는다. 새 릴리즈마다 맨 앞에 추가.",
|
|
4
4
|
"versions": [
|
|
5
|
+
{
|
|
6
|
+
"version": "0.42.1",
|
|
7
|
+
"date": "2026-04-30",
|
|
8
|
+
"title": "Calendar range 셀 연결 + 검색 다이얼로그 픽스",
|
|
9
|
+
"type": "patch",
|
|
10
|
+
"highlights": [
|
|
11
|
+
"**Calendar range 시각 픽스** — `mode=\"range\"` 에서 시작/종료 사이 셀이 끊김 없는 한 줄의 띠로 이어지도록 수정. 이전엔 그리드 칼럼(1fr) 안에 가운데 정렬된 2.25rem 버튼에 배경을 직접 칠해 칼럼 사이마다 흰 틈이 보였던 이슈",
|
|
12
|
+
"각 날짜 셀을 wrapper `<div class=\"sh-ui-calendar__cell\">` 로 감싸고 in-range / range-start / range-end 배경을 cell 에 적용 — 칼럼을 100% 채우므로 인접 셀이 자연스럽게 맞닿고, 진한 pill (selected) 은 그대로 버튼에 올라감",
|
|
13
|
+
"docs 사이트: 헤더 검색 다이얼로그 버그 픽스 + 디자인 다듬기"
|
|
14
|
+
],
|
|
15
|
+
"url": "https://github.com/sanghyeonKim0201/sh-ui/releases/tag/v0.42.1"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"version": "0.42.0",
|
|
19
|
+
"date": "2026-04-30",
|
|
20
|
+
"title": "Calendar 컴포넌트 + DatePicker 내부 리팩터링",
|
|
21
|
+
"type": "minor",
|
|
22
|
+
"highlights": [
|
|
23
|
+
"**신규 `Calendar` 컴포넌트** — 인라인 캘린더 primitive. `mode=\"single\" | \"multiple\" | \"range\"` 3종, `numberOfMonths` 로 동시에 여러 달 표시, `disabled(date)` 콜백으로 날짜별 비활성 처리(e.g. 주말 비활성)",
|
|
24
|
+
"**빠른 헤더 내비게이션** — `‹‹ / ››` (1년 단위), `‹ / ›` (1개월 단위) + 연도/월 dropdown 으로 임의 연도·월 점프. dropdown 은 sh-ui `Select` 로 빌드되어 어포던스(chevron) 와 키보드 내비게이션을 그대로 가짐. `fromYear` / `toYear` 로 dropdown 범위 커스터마이징",
|
|
25
|
+
"**Compound API** — `CalendarHeader` / `CalendarPrevYearButton` / `CalendarPrevMonthButton` / `CalendarYearSelect` / `CalendarMonthSelect` / `CalendarNextMonthButton` / `CalendarNextYearButton` / `CalendarGrid` 컴파운드 파츠로 헤더를 자유롭게 조립. 화살표를 선택적으로 숨기거나 dropdown 만 노출하는 식의 변형이 가능",
|
|
26
|
+
"`weekStartsOn` (0=일/1=월), `weekdayLabels`, `formatMonthLabel` 등 i18n/표시 옵션. 키보드는 ←→↑↓ 외에 `PageUp/Down`(월), `Home/End`(월의 시작/끝)도 지원",
|
|
27
|
+
"**`DatePicker` 내부 리팩터링** — 중복 구현되어 있던 캘린더 그리드를 신규 `Calendar` 로 교체. 공개 API(`DatePicker` / `DateRangePicker` / `DatePickerCalendar` 등)는 변경 없음",
|
|
28
|
+
"registry: `calendar` 가 `select` 를, `date-picker` 가 `calendar` 를 registryDependency 로 의존 — `npx sh-ui-cli add date-picker` 시 `calendar` + `select` 도 자동 설치",
|
|
29
|
+
"**CLI: 기존 파일 충돌 처리** — registryDependency 로 끌려온 컴포넌트가 이미 존재 + 사용자가 커스터마이즈한 경우 자동으로 덮어쓰지 않는다. TTY 에서는 keep / overwrite / keep-all / overwrite-all 4지선다 prompt, 비대화형(CI·파이프·MCP) 환경에서는 자동으로 keep. `--force` / `--keep` 플래그로 동작 고정 가능. MCP `sh_ui_add_component` 도 기본 keep + `overwrite: true` 옵션 노출"
|
|
30
|
+
],
|
|
31
|
+
"url": "https://github.com/sanghyeonKim0201/sh-ui/releases/tag/v0.42.0"
|
|
32
|
+
},
|
|
5
33
|
{
|
|
6
34
|
"version": "0.41.0",
|
|
7
35
|
"date": "2026-04-30",
|