@pantoia/ui 0.10.1 → 0.10.2
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/README.md +0 -9
- package/package.json +1 -1
- package/skills/pantoia-design/SKILL.md +13 -23
package/README.md
CHANGED
package/package.json
CHANGED
|
@@ -5,7 +5,6 @@ description: PANTOIA Design System(@pantoia/ui)으로 화면을 만들거나 고
|
|
|
5
5
|
|
|
6
6
|
# @pantoia/ui
|
|
7
7
|
|
|
8
|
-
React 디자인 시스템이다. Base UI 위에 스타일을 얹고 Tailwind CSS 4로 토큰을 노출한다.
|
|
9
8
|
사람이 보는 문서는 https://design.pantoia.com 에 있다.
|
|
10
9
|
|
|
11
10
|
## 설치
|
|
@@ -21,19 +20,16 @@ tailwindcss 4.0 이상. Tabs의 스크롤바 모양은 4.3부터
|
|
|
21
20
|
npx @pantoia/ui init
|
|
22
21
|
```
|
|
23
22
|
|
|
24
|
-
init은 컴포넌트를 저장할 위치와 전역 CSS 파일을 묻고 `components.json`을 만든다.
|
|
25
|
-
글꼴 패키지 `pretendard`, `@fontsource/jetbrains-mono`는 설치할지 묻는다.
|
|
26
23
|
전역 CSS에는 `@import "tailwindcss";` 바로 아래에 이 줄이 들어간다.
|
|
27
24
|
|
|
28
25
|
```css
|
|
29
26
|
@import "@pantoia/ui/tailwind.css";
|
|
30
27
|
```
|
|
31
28
|
|
|
32
|
-
다크 모드는 `.dark` 클래스로 켠다.
|
|
29
|
+
다크 모드는 `.dark` 클래스로 켠다.
|
|
33
30
|
next-themes를 쓸 때는 `attribute="class"`로 둔다.
|
|
34
31
|
|
|
35
32
|
React Router 프레임워크 모드는 `react-router.config.ts`에 `future: { unstable_optimizeDeps: true }`를 더한다.
|
|
36
|
-
없으면 개발 서버에서 처음 여는 route마다 페이지가 새로고침된다.
|
|
37
33
|
|
|
38
34
|
## 쓰는 법
|
|
39
35
|
|
|
@@ -48,13 +44,12 @@ import { Button } from '@/components/ui/button'
|
|
|
48
44
|
import { Field, FieldLabel, FieldHelp } from '@/components/ui/field'
|
|
49
45
|
```
|
|
50
46
|
|
|
51
|
-
import 경로는 저장 위치와 프로젝트의 경로 별칭을 따른다.
|
|
47
|
+
import 경로는 저장 위치와 프로젝트의 경로 별칭을 따른다.
|
|
52
48
|
패키지는 컴포넌트와 `tv`를 export하지 않는다. `add`로 복사한 파일만 import한다.
|
|
53
49
|
|
|
54
|
-
|
|
50
|
+
`value`와 `defaultValue`, `onValueChange`를 짝으로 쓴다.
|
|
55
51
|
고르지 않은 상태는 `null`이다. Select, RadioGroup, Combobox, NumberField가 같다.
|
|
56
|
-
Select와 RadioGroup의 state는 `useState<string | null>`로 둔다.
|
|
57
|
-
컴포넌트마다의 속성과 이벤트는 https://design.pantoia.com 의 각 페이지에 있다.
|
|
52
|
+
Select와 RadioGroup의 state는 `useState<string | null>`로 둔다.
|
|
58
53
|
|
|
59
54
|
## 디자인 규칙
|
|
60
55
|
|
|
@@ -78,7 +73,7 @@ Select와 RadioGroup의 state는 `useState<string | null>`로 둔다. 문자열
|
|
|
78
73
|
|
|
79
74
|
### Surface
|
|
80
75
|
|
|
81
|
-
경계를 만드는
|
|
76
|
+
경계를 만드는 유틸리티다.
|
|
82
77
|
|
|
83
78
|
```
|
|
84
79
|
frame 배경과 선. 페이지 안의 영역
|
|
@@ -92,7 +87,7 @@ well bg-bg-well. 파인 면
|
|
|
92
87
|
|
|
93
88
|
```
|
|
94
89
|
간격 gap-tight 4, gap-stack 16, gap-block 32, gap-section 48, gap-gutter 16
|
|
95
|
-
둥글기 rounded-r2부터 rounded-r24까지
|
|
90
|
+
둥글기 rounded-r2부터 rounded-r24까지
|
|
96
91
|
글자 text-display, text-title, text-section, text-subsection, text-prose,
|
|
97
92
|
text-value, text-label, text-caption, text-micro
|
|
98
93
|
크기만 text-t10부터 text-t64까지
|
|
@@ -105,14 +100,14 @@ well bg-bg-well. 파인 면
|
|
|
105
100
|
|
|
106
101
|
```
|
|
107
102
|
임의 값 bg-[#fff], p-[13px]. 토큰을 쓰거나 토큰을 더한다
|
|
108
|
-
dark: 변형자
|
|
103
|
+
dark: 변형자
|
|
109
104
|
Tailwind 기본 색 bg-blue-500, text-gray-700. 역할 토큰을 쓴다
|
|
110
105
|
px 직접 지정 간격과 둥글기는 토큰으로 쓴다
|
|
111
106
|
```
|
|
112
107
|
|
|
113
108
|
## 커스텀 값 추가
|
|
114
109
|
|
|
115
|
-
전역 CSS에 적는다. 값은 라이트와 다크 양쪽에 모두 적는다.
|
|
110
|
+
전역 CSS에 적는다. 값은 라이트와 다크 양쪽에 모두 적는다.
|
|
116
111
|
|
|
117
112
|
```css
|
|
118
113
|
/* 모드와 무관한 값 */
|
|
@@ -121,7 +116,7 @@ px 직접 지정 간격과 둥글기는 토큰으로 쓴다
|
|
|
121
116
|
--spacing-wide: 64px;
|
|
122
117
|
}
|
|
123
118
|
|
|
124
|
-
/* 모드마다
|
|
119
|
+
/* 모드마다 적는 값 */
|
|
125
120
|
:root, .light { --pds-bg-brand-solid: #9c63e4; }
|
|
126
121
|
.dark { --pds-bg-brand-solid: #9c63e4; }
|
|
127
122
|
|
|
@@ -129,7 +124,7 @@ px 직접 지정 간격과 둥글기는 토큰으로 쓴다
|
|
|
129
124
|
@utility raised { @apply bg-bg-panel shadow-s2; }
|
|
130
125
|
```
|
|
131
126
|
|
|
132
|
-
토큰 이름을 더했으면 저장 위치의 `tv.ts`에 있는 `twMergeConfig`의 그룹 목록에도 더한다.
|
|
127
|
+
토큰 이름을 더했으면 저장 위치의 `tv.ts`에 있는 `twMergeConfig`의 그룹 목록에도 더한다.
|
|
133
128
|
|
|
134
129
|
색 역할을 더하려면 팔레트 10단계를 양쪽 모드에 적고, 토큰 6개를 만든다.
|
|
135
130
|
|
|
@@ -139,7 +134,7 @@ px 직접 지정 간격과 둥글기는 토큰으로 쓴다
|
|
|
139
134
|
--pds-line-<역할> --pds-line-<역할>-weak
|
|
140
135
|
```
|
|
141
136
|
|
|
142
|
-
토큰을 덮어쓸 때 미치는
|
|
137
|
+
토큰을 덮어쓸 때 미치는 범위다.
|
|
143
138
|
|
|
144
139
|
```
|
|
145
140
|
팔레트 단계 그 단계를 참조하는 토큰이 모두 바뀐다
|
|
@@ -149,8 +144,6 @@ className 그 한 곳만 바뀐다
|
|
|
149
144
|
|
|
150
145
|
## 컴포넌트
|
|
151
146
|
|
|
152
|
-
`variant`는 tailwind-variants로 만든 스타일 축이다. `-`는 축이 없다는 뜻이다.
|
|
153
|
-
|
|
154
147
|
| 컴포넌트 | add | 하위 컴포넌트 | variant |
|
|
155
148
|
|---|---|---|---|
|
|
156
149
|
| Accordion | accordion | Accordion, AccordionItem, AccordionTrigger, AccordionContent | - |
|
|
@@ -198,7 +191,7 @@ Field는 라벨, 도움말, 오류 메시지를 입력 컨트롤에 묶는다. I
|
|
|
198
191
|
Select는 고른 항목의 `SelectItemText`나 글자를 트리거에 보인다. `SelectItem`을 다른 컴포넌트로 감싸면 `items`로 라벨을 넘긴다.
|
|
199
192
|
Combobox 항목이 `{ value, label }`이 아닌 객체면 `itemToStringLabel`로 `ComboboxInput`에 보일 글자를 정한다.
|
|
200
193
|
|
|
201
|
-
앱에 한 번만 두는
|
|
194
|
+
앱에 한 번만 두는 것이다. 앱은 `isolate`로 감싼다.
|
|
202
195
|
|
|
203
196
|
```tsx
|
|
204
197
|
import { Toast, toast } from '@/components/ui/toast'
|
|
@@ -218,11 +211,8 @@ import { TooltipProvider } from '@/components/ui/tooltip'
|
|
|
218
211
|
|
|
219
212
|
```sh
|
|
220
213
|
npx @pantoia/ui list 추가할 수 있는 컴포넌트를 확인한다
|
|
221
|
-
npx @pantoia/ui add button 소스를 components.json의 위치로 복사한다
|
|
222
214
|
npx @pantoia/ui diff 복사한 파일을 설치된 패키지의 파일과 비교한다
|
|
223
215
|
```
|
|
224
216
|
|
|
225
|
-
`add`는
|
|
217
|
+
`add`는 `components.json`에 버전을 적는다.
|
|
226
218
|
복사한 파일을 고치면 패키지를 올려도 그 파일은 그대로다. `diff`로 달라진 곳을 확인하고 직접 반영한다.
|
|
227
|
-
|
|
228
|
-
복사한 파일도 위의 디자인 규칙을 따른다. 임의 값과 `dark:` 변형자를 쓰지 않는다.
|