sh-ui-cli 0.58.6 → 0.58.8
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/data/changelog/versions.json +28 -0
- package/data/registry/react/components/calendar/index.tailwind.tsx +1 -1
- package/data/registry/react/components/calendar/styles.css +1 -1
- package/data/registry/react/components/calendar/styles.module.css +1 -1
- package/data/registry/react/components/carousel/index.tailwind.tsx +1 -1
- package/data/registry/react/components/carousel/styles.css +1 -1
- package/data/registry/react/components/carousel/styles.module.css +1 -1
- package/data/registry/react/components/pagination/index.tailwind.tsx +1 -1
- package/data/registry/react/components/pagination/styles.css +1 -1
- package/data/registry/react/components/pagination/styles.module.css +1 -1
- package/data/registry/react/components/rich-text-editor/index.tailwind.tsx +1 -1
- package/data/registry/react/components/rich-text-editor/styles.css +1 -1
- package/data/registry/react/components/rich-text-editor/styles.module.css +1 -1
- package/data/registry/react/components/tooltip/index.tailwind.tsx +1 -1
- package/data/registry/react/components/tooltip/styles.css +1 -1
- package/data/registry/react/components/tooltip/styles.module.css +1 -1
- package/package.json +1 -1
|
@@ -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.58.8",
|
|
7
|
+
"date": "2026-05-06",
|
|
8
|
+
"title": "디자인 디폴트 개편 7라운드 — Tooltip 의 duration·shadow 를 토큰으로",
|
|
9
|
+
"type": "patch",
|
|
10
|
+
"highlights": [
|
|
11
|
+
"**Tooltip 의 `duration-[120ms]` → `duration-[var(--duration-fast)]`** — 정확히 같은 값(120ms = `--duration-fast`)을 하드코딩하던 걸 토큰으로. 향후 token 단에서 motion 속도를 일괄 조정 가능.",
|
|
12
|
+
"**Tooltip 의 `shadow-[0_4px_12px_rgba(0,0,0,0.12)]` → `shadow-[var(--shadow-md)]`** — 토큰 `--shadow-md` 와 정확히 동일한 값을 하드코딩하던 걸 정리. 향후 elevation 일괄 조정 가능.",
|
|
13
|
+
"**다른 컴포넌트들의 shadow 는 별도로 보존** — Popover/Toast/DropdownMenu 등은 component-specific tuning (multi-layer, negative spread 등) 이라 토큰과 정확히 매칭되지 않음. 무리한 표준화는 visual diff 손실로 보류.",
|
|
14
|
+
"**Heading typography / hover state 일관성** — audit 결과 모두 의도된 차이 (Dialog/Card/Popover 의 size 차등 = 컨텍스트, hover 는 이미 모두 token-driven). 변경 안 함.",
|
|
15
|
+
"**4 variant + 듀얼 카피본 동기화** — Tooltip Tailwind / plain CSS / CSS Modules / vanilla-extract."
|
|
16
|
+
],
|
|
17
|
+
"url": "https://github.com/sanghyeonKim0201/sh-ui/releases/tag/v0.58.8"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"version": "0.58.7",
|
|
21
|
+
"date": "2026-05-06",
|
|
22
|
+
"title": "디자인 디폴트 개편 6라운드 — disabled opacity 토큰 통일",
|
|
23
|
+
"type": "patch",
|
|
24
|
+
"highlights": [
|
|
25
|
+
"**`--opacity-disabled` (0.5) 토큰을 모든 컴포넌트가 사용** — 그동안 calendar(0.3) / carousel(0.4) / pagination(0.45) / rich-text-editor(0.5) 가 각자 다른 disabled opacity 값을 쓰고 있었음. 단일 토큰으로 정렬해 \"disabled 느낌\"이 모든 컴포넌트에서 동일.",
|
|
26
|
+
"**Tailwind variant 의 하드코딩 opacity 클래스 제거** — `disabled:opacity-30` / `disabled:opacity-40` / `disabled:opacity-50` / `aria-disabled:opacity-45` / `data-[disabled]:opacity-45` → `disabled:opacity-[var(--opacity-disabled)]`.",
|
|
27
|
+
"**plain CSS / module / vanilla-extract 동기화** — `:disabled { opacity: 0.X }` 의 0.3/0.4/0.45/0.5 하드코딩 → `var(--opacity-disabled)`.",
|
|
28
|
+
"**outside / inactive 같은 \"비활성이지만 disabled 아님\" 상태는 별도 유지** — calendar 의 day--outside (0.4) 는 disabled 와 다른 시각 의도라 이번 통일에서 제외.",
|
|
29
|
+
"**철학 — \"disabled 느낌\" 은 토큰의 책임**: 사용자가 brand 톤 한 번 결정하면 모든 컴포넌트의 disabled 가 같은 깊이로 fade. 컴포넌트별 미세 조정 X."
|
|
30
|
+
],
|
|
31
|
+
"url": "https://github.com/sanghyeonKim0201/sh-ui/releases/tag/v0.58.7"
|
|
32
|
+
},
|
|
5
33
|
{
|
|
6
34
|
"version": "0.58.6",
|
|
7
35
|
"date": "2026-05-06",
|
|
@@ -526,7 +526,7 @@ export const CalendarGrid = React.forwardRef<HTMLDivElement, CalendarGridProps>(
|
|
|
526
526
|
<button
|
|
527
527
|
type="button"
|
|
528
528
|
className={cn(
|
|
529
|
-
"flex items-center justify-center w-9 h-9 p-0 border-none rounded-[calc(var(--radius)-2px)] bg-transparent text-foreground text-[0.8125rem] font-[inherit] cursor-pointer transition-[background-color,color] duration-[var(--duration-fast)] hover:not-disabled:bg-background-muted focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 disabled:opacity-
|
|
529
|
+
"flex items-center justify-center w-9 h-9 p-0 border-none rounded-[calc(var(--radius)-2px)] bg-transparent text-foreground text-[0.8125rem] font-[inherit] cursor-pointer transition-[background-color,color] duration-[var(--duration-fast)] hover:not-disabled:bg-background-muted focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 disabled:opacity-[var(--opacity-disabled)] disabled:cursor-not-allowed motion-reduce:transition-none",
|
|
530
530
|
!current && "text-[var(--foreground-subtle,var(--foreground-muted))] opacity-40",
|
|
531
531
|
isToday && "font-bold underline underline-offset-[0.125rem]",
|
|
532
532
|
selected && "bg-primary text-primary-foreground font-semibold hover:not-disabled:bg-primary-hover hover:not-disabled:text-primary-foreground",
|
|
@@ -205,7 +205,7 @@ export const CarouselItem = React.forwardRef<HTMLDivElement, React.HTMLAttribute
|
|
|
205
205
|
CarouselItem.displayName = "CarouselItem";
|
|
206
206
|
|
|
207
207
|
const navClasses =
|
|
208
|
-
"absolute top-1/2 w-8 h-8 inline-flex items-center justify-center bg-background text-foreground border border-border rounded-full cursor-pointer -translate-y-1/2 z-[1] transition-[opacity,background-color] duration-[var(--duration-fast)] hover:not-disabled:bg-background-muted focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 disabled:opacity-
|
|
208
|
+
"absolute top-1/2 w-8 h-8 inline-flex items-center justify-center bg-background text-foreground border border-border rounded-full cursor-pointer -translate-y-1/2 z-[1] transition-[opacity,background-color] duration-[var(--duration-fast)] hover:not-disabled:bg-background-muted focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 disabled:opacity-[var(--opacity-disabled)] disabled:cursor-not-allowed motion-reduce:transition-none data-[orientation=vertical]:left-1/2 data-[orientation=vertical]:-translate-x-1/2 data-[orientation=vertical]:[top:auto]";
|
|
209
209
|
|
|
210
210
|
export const CarouselPrevious = React.forwardRef<HTMLButtonElement, React.ButtonHTMLAttributes<HTMLButtonElement>>(
|
|
211
211
|
({ className, onClick, disabled, children, ...props }, ref) => {
|
|
@@ -34,7 +34,7 @@ export const PaginationItem = React.forwardRef<HTMLLIElement, React.LiHTMLAttrib
|
|
|
34
34
|
);
|
|
35
35
|
|
|
36
36
|
const linkBase =
|
|
37
|
-
"inline-flex items-center justify-center gap-1.5 min-w-9 h-9 px-3 rounded-[calc(var(--radius)-2px)] border border-transparent bg-transparent text-foreground no-underline transition-[background-color,border-color,color] duration-[var(--duration-fast)] cursor-pointer select-none hover:bg-background-muted focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 data-[active]:bg-foreground data-[active]:text-background data-[active]:font-medium data-[active]:hover:opacity-90 aria-disabled:pointer-events-none aria-disabled:opacity-
|
|
37
|
+
"inline-flex items-center justify-center gap-1.5 min-w-9 h-9 px-3 rounded-[calc(var(--radius)-2px)] border border-transparent bg-transparent text-foreground no-underline transition-[background-color,border-color,color] duration-[var(--duration-fast)] cursor-pointer select-none hover:bg-background-muted focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 data-[active]:bg-foreground data-[active]:text-background data-[active]:font-medium data-[active]:hover:opacity-90 aria-disabled:pointer-events-none aria-disabled:opacity-[var(--opacity-disabled)] data-[disabled]:pointer-events-none data-[disabled]:opacity-[var(--opacity-disabled)] data-[size=sm]:min-w-8 data-[size=sm]:h-8 data-[size=sm]:px-2 motion-reduce:transition-none";
|
|
38
38
|
|
|
39
39
|
export interface PaginationLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
40
40
|
isActive?: boolean;
|
|
@@ -157,7 +157,7 @@ function ToolbarButton({ editor, label, icon, isActive, canRun, run, disabled }:
|
|
|
157
157
|
<button
|
|
158
158
|
type="button"
|
|
159
159
|
className={cn(
|
|
160
|
-
"inline-flex items-center justify-center w-7 h-7 p-0 bg-transparent text-foreground-muted border border-transparent rounded-[calc(var(--radius)-2px)] cursor-pointer transition-[color,background-color,border-color] duration-[var(--duration-fast)] hover:not-disabled:text-foreground hover:not-disabled:bg-background hover:not-disabled:border-border focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-1 disabled:opacity-
|
|
160
|
+
"inline-flex items-center justify-center w-7 h-7 p-0 bg-transparent text-foreground-muted border border-transparent rounded-[calc(var(--radius)-2px)] cursor-pointer transition-[color,background-color,border-color] duration-[var(--duration-fast)] hover:not-disabled:text-foreground hover:not-disabled:bg-background hover:not-disabled:border-border focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-1 disabled:opacity-[var(--opacity-disabled)] disabled:cursor-not-allowed motion-reduce:transition-none",
|
|
161
161
|
isActive && "text-foreground bg-background border-border-strong",
|
|
162
162
|
)}
|
|
163
163
|
aria-label={label}
|
|
@@ -38,7 +38,7 @@ export const TooltipContent = React.forwardRef<HTMLDivElement, TooltipContentPro
|
|
|
38
38
|
<BaseTooltip.Popup
|
|
39
39
|
ref={ref}
|
|
40
40
|
className={cn(
|
|
41
|
-
"px-2.5 py-1.5 bg-foreground text-background rounded-[calc(var(--radius)-2px)] text-[length:var(--text-xs)] leading-snug max-w-xs shadow-[
|
|
41
|
+
"px-2.5 py-1.5 bg-foreground text-background rounded-[calc(var(--radius)-2px)] text-[length:var(--text-xs)] leading-snug max-w-xs shadow-[var(--shadow-md)] origin-[var(--transform-origin)] outline-none transition-[opacity,transform] duration-[var(--duration-fast)] ease-out motion-reduce:transition-none data-[starting-style]:opacity-0 data-[starting-style]:scale-95 data-[ending-style]:opacity-0 data-[ending-style]:scale-95 motion-reduce:data-[starting-style]:scale-100 motion-reduce:data-[ending-style]:scale-100",
|
|
42
42
|
className,
|
|
43
43
|
)}
|
|
44
44
|
{...props}
|