sh-ui-cli 0.80.0 → 0.80.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/data/changelog/versions.json +12 -0
- package/data/registry/react/components/sidebar/index.tsx +1 -1
- package/package.json +1 -1
- package/src/create/templateManifest.js +1 -0
- package/src/create/theme/decode.js +5 -0
- package/src/create/theme/presets.js +44 -0
- package/templates/monorepo/packages/ui/ui-core/package.json +2 -1
- package/templates/monorepo/packages/ui/ui-core/sh-ui.config.json +2 -1
- package/templates/monorepo/packages/ui/ui-core/src/styles/.gitkeep +0 -0
- package/templates/nextjs-standalone/_arch/flat/lib/styles/tokens.css +34 -1
- package/templates/nextjs-standalone/_arch/fsd/src/shared/styles/tokens.css +34 -1
- package/templates/ui-app-template/src/styles/tokens.css +34 -1
|
@@ -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.80.1",
|
|
7
|
+
"date": "2026-05-12",
|
|
8
|
+
"title": "monorepo create_project P0 fix — paths.styles · sidebar 토큰 · sidebar import",
|
|
9
|
+
"type": "patch",
|
|
10
|
+
"highlights": [
|
|
11
|
+
"**A1/A2: `create_project --structure monorepo` ui-core 가 styles 경로 누락하던 결함 수정** — `sh-ui.config.json` 에 `paths.styles: \"src/styles\"`, `package.json` `exports` 에 `\"./styles/*\": \"./src/styles/*\"` 추가. 이전엔 직후 `add base focus-ring …` 호출이 `paths.styles 가 sh-ui.config.json에 없습니다` 로 즉시 실패.",
|
|
12
|
+
"**A3: 신규 프로젝트 tokens.css 에 sidebar/success/warning/info 토큰 emit** — sidebar 컴포넌트가 요구하는 `--sidebar-bg / --sidebar-fg / --sidebar-border / --sidebar-accent / --sidebar-accent-fg` 가 신규 프로젝트 tokens.css 에 빠져 sidebar 가 `@theme inline` 매핑에서 undefined 로 풀리던 결함 수정. presets(neutral · slate · rose · emerald · violet) light/dark 양쪽에 5+6 토큰 추가, `OPTIONAL_TOKEN_KEYS` 에 sidebar 키 등록. 베이스라인 3개 tokens.css 템플릿도 동기화.",
|
|
13
|
+
"**B1: registry/docs sidebar `.tsx` 확장자 import 제거** — `import { Popover } from \"../popover/index.tsx\"` 가 TS5097 (allowImportingTsExtensions) 로 docs typecheck 실패하던 결함 수정. 듀얼 카피본 양쪽 수정."
|
|
14
|
+
],
|
|
15
|
+
"url": "https://github.com/sanghyeonKim0201/sh-ui/releases/tag/v0.80.1"
|
|
16
|
+
},
|
|
5
17
|
{
|
|
6
18
|
"version": "0.80.0",
|
|
7
19
|
"date": "2026-05-12",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { cn } from "@SH_UI_UTILS@";
|
|
5
5
|
import { ChevronRightIcon, PanelLeftIcon } from "lucide-react";
|
|
6
|
-
import { Popover, PopoverContent, PopoverTrigger } from "../popover
|
|
6
|
+
import { Popover, PopoverContent, PopoverTrigger } from "../popover";
|
|
7
7
|
import "./styles.css";
|
|
8
8
|
|
|
9
9
|
const SIDEBAR_COOKIE_NAME = "sidebar_state";
|
package/package.json
CHANGED
|
@@ -41,6 +41,7 @@ export const TEMPLATE_MANIFEST = {
|
|
|
41
41
|
"packages/ui/ui-core/src/components/.gitkeep",
|
|
42
42
|
"packages/ui/ui-core/src/hooks/.gitkeep",
|
|
43
43
|
"packages/ui/ui-core/src/lib/utils.ts",
|
|
44
|
+
"packages/ui/ui-core/src/styles/.gitkeep",
|
|
44
45
|
"packages/ui/ui-core/tsconfig.json",
|
|
45
46
|
"pnpm-workspace.yaml",
|
|
46
47
|
"tsconfig.json",
|
|
@@ -19,6 +19,11 @@ const OPTIONAL_TOKEN_KEYS = [
|
|
|
19
19
|
'info', 'info-foreground',
|
|
20
20
|
'danger-hover',
|
|
21
21
|
'ring',
|
|
22
|
+
// v0.80.1+ — sidebar cascade 색. 5개 모두 light/dark 양쪽에 정의되어야 emit.
|
|
23
|
+
// sidebar 컴포넌트의 styles.css 가 .sh-ui-sidebar-wrapper 에 var(--background-subtle) 등으로
|
|
24
|
+
// fallback 을 두지만, Tailwind @theme inline 의 --color-sidebar-* 가 :root 에서 해석되도록
|
|
25
|
+
// tokens.css 에도 끌어올린다.
|
|
26
|
+
'sidebar-bg', 'sidebar-fg', 'sidebar-border', 'sidebar-accent', 'sidebar-accent-fg',
|
|
22
27
|
];
|
|
23
28
|
|
|
24
29
|
/**
|
|
@@ -24,6 +24,17 @@ const NEUTRAL_LIGHT = {
|
|
|
24
24
|
'danger-foreground': '#FFFFFF',
|
|
25
25
|
'danger-hover': '#B91C1C',
|
|
26
26
|
'ring': '#A3A3A3',
|
|
27
|
+
'success': '#16A34A',
|
|
28
|
+
'success-foreground': '#FFFFFF',
|
|
29
|
+
'warning': '#D97706',
|
|
30
|
+
'warning-foreground': '#FFFFFF',
|
|
31
|
+
'info': '#2563EB',
|
|
32
|
+
'info-foreground': '#FFFFFF',
|
|
33
|
+
'sidebar-bg': '#FAFAFA',
|
|
34
|
+
'sidebar-fg': '#0A0A0A',
|
|
35
|
+
'sidebar-border': '#E5E5E5',
|
|
36
|
+
'sidebar-accent': '#F5F5F5',
|
|
37
|
+
'sidebar-accent-fg': '#0A0A0A',
|
|
27
38
|
};
|
|
28
39
|
|
|
29
40
|
const NEUTRAL_DARK = {
|
|
@@ -44,6 +55,17 @@ const NEUTRAL_DARK = {
|
|
|
44
55
|
'danger-foreground': '#FFFFFF',
|
|
45
56
|
'danger-hover': '#EF4444',
|
|
46
57
|
'ring': '#737373',
|
|
58
|
+
'success': '#22C55E',
|
|
59
|
+
'success-foreground': '#052E16',
|
|
60
|
+
'warning': '#F59E0B',
|
|
61
|
+
'warning-foreground': '#451A03',
|
|
62
|
+
'info': '#3B82F6',
|
|
63
|
+
'info-foreground': '#172554',
|
|
64
|
+
'sidebar-bg': '#171717',
|
|
65
|
+
'sidebar-fg': '#FAFAFA',
|
|
66
|
+
'sidebar-border': '#262626',
|
|
67
|
+
'sidebar-accent': '#262626',
|
|
68
|
+
'sidebar-accent-fg': '#FAFAFA',
|
|
47
69
|
};
|
|
48
70
|
|
|
49
71
|
export const THEME_PRESETS = {
|
|
@@ -73,6 +95,17 @@ export const THEME_PRESETS = {
|
|
|
73
95
|
'danger-foreground': '#FFFFFF',
|
|
74
96
|
'danger-hover': '#B91C1C',
|
|
75
97
|
'ring': '#94A3B8',
|
|
98
|
+
'success': '#16A34A',
|
|
99
|
+
'success-foreground': '#FFFFFF',
|
|
100
|
+
'warning': '#D97706',
|
|
101
|
+
'warning-foreground': '#FFFFFF',
|
|
102
|
+
'info': '#2563EB',
|
|
103
|
+
'info-foreground': '#FFFFFF',
|
|
104
|
+
'sidebar-bg': '#F8FAFC',
|
|
105
|
+
'sidebar-fg': '#0F172A',
|
|
106
|
+
'sidebar-border': '#E2E8F0',
|
|
107
|
+
'sidebar-accent': '#F1F5F9',
|
|
108
|
+
'sidebar-accent-fg': '#0F172A',
|
|
76
109
|
},
|
|
77
110
|
dark: {
|
|
78
111
|
'background': '#0F172A',
|
|
@@ -92,6 +125,17 @@ export const THEME_PRESETS = {
|
|
|
92
125
|
'danger-foreground': '#450A0A',
|
|
93
126
|
'danger-hover': '#FCA5A5',
|
|
94
127
|
'ring': '#64748B',
|
|
128
|
+
'success': '#22C55E',
|
|
129
|
+
'success-foreground': '#052E16',
|
|
130
|
+
'warning': '#F59E0B',
|
|
131
|
+
'warning-foreground': '#451A03',
|
|
132
|
+
'info': '#60A5FA',
|
|
133
|
+
'info-foreground': '#172554',
|
|
134
|
+
'sidebar-bg': '#1E293B',
|
|
135
|
+
'sidebar-fg': '#F1F5F9',
|
|
136
|
+
'sidebar-border': '#334155',
|
|
137
|
+
'sidebar-accent': '#334155',
|
|
138
|
+
'sidebar-accent-fg': '#F1F5F9',
|
|
95
139
|
},
|
|
96
140
|
radius: 0.375,
|
|
97
141
|
// 정보 밀도 ↑ — 본문 14px 부터, 컨트롤 36px (대시보드/관리자 인상)
|
|
File without changes
|
|
@@ -20,6 +20,17 @@
|
|
|
20
20
|
--danger: #DC2626;
|
|
21
21
|
--danger-hover: color-mix(in srgb, var(--danger) 90%, black);
|
|
22
22
|
--danger-foreground: #FFFFFF;
|
|
23
|
+
--success: #16A34A;
|
|
24
|
+
--success-foreground: #FFFFFF;
|
|
25
|
+
--warning: #D97706;
|
|
26
|
+
--warning-foreground: #FFFFFF;
|
|
27
|
+
--info: #2563EB;
|
|
28
|
+
--info-foreground: #FFFFFF;
|
|
29
|
+
--sidebar-bg: #FAFAFA;
|
|
30
|
+
--sidebar-fg: #0A0A0A;
|
|
31
|
+
--sidebar-border: #E5E5E5;
|
|
32
|
+
--sidebar-accent: #F5F5F5;
|
|
33
|
+
--sidebar-accent-fg: #0A0A0A;
|
|
23
34
|
}
|
|
24
35
|
@media (prefers-color-scheme: dark) {
|
|
25
36
|
:root:not(.light):not(.dark) {
|
|
@@ -37,8 +48,19 @@
|
|
|
37
48
|
--primary-foreground: #171717;
|
|
38
49
|
--primary-hover: #E5E5E5;
|
|
39
50
|
--danger: #DC2626;
|
|
40
|
-
|
|
51
|
+
--danger-hover: color-mix(in srgb, var(--danger) 90%, black);
|
|
41
52
|
--danger-foreground: #FFFFFF;
|
|
53
|
+
--success: #22C55E;
|
|
54
|
+
--success-foreground: #052E16;
|
|
55
|
+
--warning: #F59E0B;
|
|
56
|
+
--warning-foreground: #451A03;
|
|
57
|
+
--info: #3B82F6;
|
|
58
|
+
--info-foreground: #172554;
|
|
59
|
+
--sidebar-bg: #171717;
|
|
60
|
+
--sidebar-fg: #FAFAFA;
|
|
61
|
+
--sidebar-border: #262626;
|
|
62
|
+
--sidebar-accent: #262626;
|
|
63
|
+
--sidebar-accent-fg: #FAFAFA;
|
|
42
64
|
}
|
|
43
65
|
}
|
|
44
66
|
.dark {
|
|
@@ -58,6 +80,17 @@
|
|
|
58
80
|
--danger: #DC2626;
|
|
59
81
|
--danger-hover: color-mix(in srgb, var(--danger) 90%, black);
|
|
60
82
|
--danger-foreground: #FFFFFF;
|
|
83
|
+
--success: #22C55E;
|
|
84
|
+
--success-foreground: #052E16;
|
|
85
|
+
--warning: #F59E0B;
|
|
86
|
+
--warning-foreground: #451A03;
|
|
87
|
+
--info: #3B82F6;
|
|
88
|
+
--info-foreground: #172554;
|
|
89
|
+
--sidebar-bg: #171717;
|
|
90
|
+
--sidebar-fg: #FAFAFA;
|
|
91
|
+
--sidebar-border: #262626;
|
|
92
|
+
--sidebar-accent: #262626;
|
|
93
|
+
--sidebar-accent-fg: #FAFAFA;
|
|
61
94
|
}
|
|
62
95
|
/* sh-ui:theme-colors-end */
|
|
63
96
|
|
|
@@ -20,6 +20,17 @@
|
|
|
20
20
|
--danger: #DC2626;
|
|
21
21
|
--danger-hover: color-mix(in srgb, var(--danger) 90%, black);
|
|
22
22
|
--danger-foreground: #FFFFFF;
|
|
23
|
+
--success: #16A34A;
|
|
24
|
+
--success-foreground: #FFFFFF;
|
|
25
|
+
--warning: #D97706;
|
|
26
|
+
--warning-foreground: #FFFFFF;
|
|
27
|
+
--info: #2563EB;
|
|
28
|
+
--info-foreground: #FFFFFF;
|
|
29
|
+
--sidebar-bg: #FAFAFA;
|
|
30
|
+
--sidebar-fg: #0A0A0A;
|
|
31
|
+
--sidebar-border: #E5E5E5;
|
|
32
|
+
--sidebar-accent: #F5F5F5;
|
|
33
|
+
--sidebar-accent-fg: #0A0A0A;
|
|
23
34
|
}
|
|
24
35
|
@media (prefers-color-scheme: dark) {
|
|
25
36
|
:root:not(.light):not(.dark) {
|
|
@@ -37,8 +48,19 @@
|
|
|
37
48
|
--primary-foreground: #171717;
|
|
38
49
|
--primary-hover: #E5E5E5;
|
|
39
50
|
--danger: #DC2626;
|
|
40
|
-
|
|
51
|
+
--danger-hover: color-mix(in srgb, var(--danger) 90%, black);
|
|
41
52
|
--danger-foreground: #FFFFFF;
|
|
53
|
+
--success: #22C55E;
|
|
54
|
+
--success-foreground: #052E16;
|
|
55
|
+
--warning: #F59E0B;
|
|
56
|
+
--warning-foreground: #451A03;
|
|
57
|
+
--info: #3B82F6;
|
|
58
|
+
--info-foreground: #172554;
|
|
59
|
+
--sidebar-bg: #171717;
|
|
60
|
+
--sidebar-fg: #FAFAFA;
|
|
61
|
+
--sidebar-border: #262626;
|
|
62
|
+
--sidebar-accent: #262626;
|
|
63
|
+
--sidebar-accent-fg: #FAFAFA;
|
|
42
64
|
}
|
|
43
65
|
}
|
|
44
66
|
.dark {
|
|
@@ -58,6 +80,17 @@
|
|
|
58
80
|
--danger: #DC2626;
|
|
59
81
|
--danger-hover: color-mix(in srgb, var(--danger) 90%, black);
|
|
60
82
|
--danger-foreground: #FFFFFF;
|
|
83
|
+
--success: #22C55E;
|
|
84
|
+
--success-foreground: #052E16;
|
|
85
|
+
--warning: #F59E0B;
|
|
86
|
+
--warning-foreground: #451A03;
|
|
87
|
+
--info: #3B82F6;
|
|
88
|
+
--info-foreground: #172554;
|
|
89
|
+
--sidebar-bg: #171717;
|
|
90
|
+
--sidebar-fg: #FAFAFA;
|
|
91
|
+
--sidebar-border: #262626;
|
|
92
|
+
--sidebar-accent: #262626;
|
|
93
|
+
--sidebar-accent-fg: #FAFAFA;
|
|
61
94
|
}
|
|
62
95
|
/* sh-ui:theme-colors-end */
|
|
63
96
|
|
|
@@ -20,6 +20,17 @@
|
|
|
20
20
|
--danger: #DC2626;
|
|
21
21
|
--danger-hover: color-mix(in srgb, var(--danger) 90%, black);
|
|
22
22
|
--danger-foreground: #FFFFFF;
|
|
23
|
+
--success: #16A34A;
|
|
24
|
+
--success-foreground: #FFFFFF;
|
|
25
|
+
--warning: #D97706;
|
|
26
|
+
--warning-foreground: #FFFFFF;
|
|
27
|
+
--info: #2563EB;
|
|
28
|
+
--info-foreground: #FFFFFF;
|
|
29
|
+
--sidebar-bg: #FAFAFA;
|
|
30
|
+
--sidebar-fg: #0A0A0A;
|
|
31
|
+
--sidebar-border: #E5E5E5;
|
|
32
|
+
--sidebar-accent: #F5F5F5;
|
|
33
|
+
--sidebar-accent-fg: #0A0A0A;
|
|
23
34
|
}
|
|
24
35
|
@media (prefers-color-scheme: dark) {
|
|
25
36
|
:root:not(.light):not(.dark) {
|
|
@@ -37,8 +48,19 @@
|
|
|
37
48
|
--primary-foreground: #171717;
|
|
38
49
|
--primary-hover: #E5E5E5;
|
|
39
50
|
--danger: #DC2626;
|
|
40
|
-
|
|
51
|
+
--danger-hover: color-mix(in srgb, var(--danger) 90%, black);
|
|
41
52
|
--danger-foreground: #FFFFFF;
|
|
53
|
+
--success: #22C55E;
|
|
54
|
+
--success-foreground: #052E16;
|
|
55
|
+
--warning: #F59E0B;
|
|
56
|
+
--warning-foreground: #451A03;
|
|
57
|
+
--info: #3B82F6;
|
|
58
|
+
--info-foreground: #172554;
|
|
59
|
+
--sidebar-bg: #171717;
|
|
60
|
+
--sidebar-fg: #FAFAFA;
|
|
61
|
+
--sidebar-border: #262626;
|
|
62
|
+
--sidebar-accent: #262626;
|
|
63
|
+
--sidebar-accent-fg: #FAFAFA;
|
|
42
64
|
}
|
|
43
65
|
}
|
|
44
66
|
.dark {
|
|
@@ -58,6 +80,17 @@
|
|
|
58
80
|
--danger: #DC2626;
|
|
59
81
|
--danger-hover: color-mix(in srgb, var(--danger) 90%, black);
|
|
60
82
|
--danger-foreground: #FFFFFF;
|
|
83
|
+
--success: #22C55E;
|
|
84
|
+
--success-foreground: #052E16;
|
|
85
|
+
--warning: #F59E0B;
|
|
86
|
+
--warning-foreground: #451A03;
|
|
87
|
+
--info: #3B82F6;
|
|
88
|
+
--info-foreground: #172554;
|
|
89
|
+
--sidebar-bg: #171717;
|
|
90
|
+
--sidebar-fg: #FAFAFA;
|
|
91
|
+
--sidebar-border: #262626;
|
|
92
|
+
--sidebar-accent: #262626;
|
|
93
|
+
--sidebar-accent-fg: #FAFAFA;
|
|
61
94
|
}
|
|
62
95
|
/* sh-ui:theme-colors-end */
|
|
63
96
|
|