sh-ui-cli 0.42.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.
|
@@ -2,6 +2,18 @@
|
|
|
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
|
+
},
|
|
5
17
|
{
|
|
6
18
|
"version": "0.42.0",
|
|
7
19
|
"date": "2026-04-30",
|
|
@@ -745,33 +745,39 @@ export const CalendarGrid = React.forwardRef<HTMLDivElement, CalendarGridProps>(
|
|
|
745
745
|
const hidden = !current && !ctx.showOutsideDays;
|
|
746
746
|
|
|
747
747
|
if (hidden) {
|
|
748
|
-
return <span key={i} className="sh-ui-
|
|
748
|
+
return <span key={i} className="sh-ui-calendar__cell sh-ui-calendar__cell--hidden" aria-hidden />;
|
|
749
749
|
}
|
|
750
750
|
|
|
751
751
|
return (
|
|
752
|
-
<
|
|
752
|
+
<div
|
|
753
753
|
key={i}
|
|
754
|
-
type="button"
|
|
755
754
|
className={cx(
|
|
756
|
-
"sh-ui-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
inRange && "sh-ui-calendar__day--in-range",
|
|
761
|
-
isStart && "sh-ui-calendar__day--range-start",
|
|
762
|
-
isEnd && "sh-ui-calendar__day--range-end",
|
|
755
|
+
"sh-ui-calendar__cell",
|
|
756
|
+
inRange && "sh-ui-calendar__cell--in-range",
|
|
757
|
+
isStart && "sh-ui-calendar__cell--range-start",
|
|
758
|
+
isEnd && "sh-ui-calendar__cell--range-end",
|
|
763
759
|
)}
|
|
764
|
-
disabled={dDisabled}
|
|
765
|
-
tabIndex={-1}
|
|
766
|
-
onClick={() => { if (!dDisabled) ctx.handleSelect(date); }}
|
|
767
|
-
onMouseEnter={() => ctx.setHoverDate(date)}
|
|
768
|
-
onMouseLeave={() => ctx.setHoverDate(undefined)}
|
|
769
|
-
aria-label={formatIsoDate(date)}
|
|
770
|
-
aria-selected={selected || inRange || undefined}
|
|
771
|
-
data-today={isToday || undefined}
|
|
772
760
|
>
|
|
773
|
-
|
|
774
|
-
|
|
761
|
+
<button
|
|
762
|
+
type="button"
|
|
763
|
+
className={cx(
|
|
764
|
+
"sh-ui-calendar__day",
|
|
765
|
+
!current && "sh-ui-calendar__day--outside",
|
|
766
|
+
selected && "sh-ui-calendar__day--selected",
|
|
767
|
+
isToday && "sh-ui-calendar__day--today",
|
|
768
|
+
)}
|
|
769
|
+
disabled={dDisabled}
|
|
770
|
+
tabIndex={-1}
|
|
771
|
+
onClick={() => { if (!dDisabled) ctx.handleSelect(date); }}
|
|
772
|
+
onMouseEnter={() => ctx.setHoverDate(date)}
|
|
773
|
+
onMouseLeave={() => ctx.setHoverDate(undefined)}
|
|
774
|
+
aria-label={formatIsoDate(date)}
|
|
775
|
+
aria-selected={selected || inRange || undefined}
|
|
776
|
+
data-today={isToday || undefined}
|
|
777
|
+
>
|
|
778
|
+
{date.getDate()}
|
|
779
|
+
</button>
|
|
780
|
+
</div>
|
|
775
781
|
);
|
|
776
782
|
})}
|
|
777
783
|
</div>
|
|
@@ -128,7 +128,36 @@
|
|
|
128
128
|
border-radius: calc(var(--radius) - 2px);
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
/* ──
|
|
131
|
+
/* ── Cell (column slot, range strip carrier) ── */
|
|
132
|
+
|
|
133
|
+
.sh-ui-calendar__cell {
|
|
134
|
+
display: flex;
|
|
135
|
+
align-items: center;
|
|
136
|
+
justify-content: center;
|
|
137
|
+
width: 100%;
|
|
138
|
+
height: 2.375rem;
|
|
139
|
+
min-width: 0;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.sh-ui-calendar__cell--in-range,
|
|
143
|
+
.sh-ui-calendar__cell--range-start,
|
|
144
|
+
.sh-ui-calendar__cell--range-end {
|
|
145
|
+
background: color-mix(in srgb, var(--primary) 12%, transparent);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.sh-ui-calendar__cell--range-start:not(.sh-ui-calendar__cell--range-end) {
|
|
149
|
+
border-radius: calc(var(--radius) - 2px) 0 0 calc(var(--radius) - 2px);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.sh-ui-calendar__cell--range-end:not(.sh-ui-calendar__cell--range-start) {
|
|
153
|
+
border-radius: 0 calc(var(--radius) - 2px) calc(var(--radius) - 2px) 0;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.sh-ui-calendar__cell--range-start.sh-ui-calendar__cell--range-end {
|
|
157
|
+
border-radius: calc(var(--radius) - 2px);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/* ── Day button ── */
|
|
132
161
|
|
|
133
162
|
.sh-ui-calendar__day {
|
|
134
163
|
display: flex;
|
|
@@ -136,7 +165,6 @@
|
|
|
136
165
|
justify-content: center;
|
|
137
166
|
width: 2.25rem;
|
|
138
167
|
height: 2.25rem;
|
|
139
|
-
margin: 0.0625rem auto;
|
|
140
168
|
padding: 0;
|
|
141
169
|
border: none;
|
|
142
170
|
border-radius: calc(var(--radius) - 2px);
|
|
@@ -162,13 +190,6 @@
|
|
|
162
190
|
opacity: 0.4;
|
|
163
191
|
}
|
|
164
192
|
|
|
165
|
-
.sh-ui-calendar__day--hidden {
|
|
166
|
-
visibility: hidden;
|
|
167
|
-
pointer-events: none;
|
|
168
|
-
cursor: default;
|
|
169
|
-
background: transparent;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
193
|
.sh-ui-calendar__day--today {
|
|
173
194
|
font-weight: var(--weight-bold);
|
|
174
195
|
text-decoration: underline;
|
|
@@ -190,38 +211,3 @@
|
|
|
190
211
|
opacity: 0.3;
|
|
191
212
|
cursor: not-allowed;
|
|
192
213
|
}
|
|
193
|
-
|
|
194
|
-
/* ── Range ── */
|
|
195
|
-
|
|
196
|
-
.sh-ui-calendar__day--in-range {
|
|
197
|
-
background: color-mix(in srgb, var(--primary) 12%, transparent);
|
|
198
|
-
border-radius: 0;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
.sh-ui-calendar__day--in-range:hover:not(:disabled) {
|
|
202
|
-
background: color-mix(in srgb, var(--primary) 22%, transparent);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
.sh-ui-calendar__day--range-start {
|
|
206
|
-
background: var(--primary);
|
|
207
|
-
color: var(--primary-foreground);
|
|
208
|
-
font-weight: var(--weight-semibold);
|
|
209
|
-
border-radius: calc(var(--radius) - 2px) 0 0 calc(var(--radius) - 2px);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
.sh-ui-calendar__day--range-end {
|
|
213
|
-
background: var(--primary);
|
|
214
|
-
color: var(--primary-foreground);
|
|
215
|
-
font-weight: var(--weight-semibold);
|
|
216
|
-
border-radius: 0 calc(var(--radius) - 2px) calc(var(--radius) - 2px) 0;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
.sh-ui-calendar__day--range-start.sh-ui-calendar__day--range-end {
|
|
220
|
-
border-radius: calc(var(--radius) - 2px);
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
.sh-ui-calendar__day--range-start:hover:not(:disabled),
|
|
224
|
-
.sh-ui-calendar__day--range-end:hover:not(:disabled) {
|
|
225
|
-
background: var(--primary-hover);
|
|
226
|
-
color: var(--primary-foreground);
|
|
227
|
-
}
|