@orioncactuscorp/ui 1.10.0 → 1.12.0

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.
Files changed (87) hide show
  1. package/README.md +136 -54
  2. package/dist/components/Accordion/Accordion.css +1 -1
  3. package/dist/components/Accordion/Accordion.js +169 -177
  4. package/dist/components/ActionArea/ActionAreaLayout.js +20 -24
  5. package/dist/components/Cell/Cell.css +1 -1
  6. package/dist/components/Cell/Cell.js +57 -58
  7. package/dist/components/CheckMark/CheckMark.css +1 -1
  8. package/dist/components/Checkbox/Checkbox.css +1 -1
  9. package/dist/components/Checkbox/Checkbox.js +50 -51
  10. package/dist/components/Menu/Menu.css +1 -1
  11. package/dist/components/Menu/Menu.module.scss.js +20 -22
  12. package/dist/components/Modal/Modal.js +253 -261
  13. package/dist/components/Modal/useModalContentBlockTransition.js +49 -44
  14. package/dist/components/Radio/Radio.css +1 -1
  15. package/dist/components/ScrollArea/ScrollArea.css +1 -1
  16. package/dist/components/ScrollArea/ScrollArea.js +197 -200
  17. package/dist/components/Select/Select.js +31 -34
  18. package/dist/components/Switch/Switch.css +1 -1
  19. package/dist/components/Tabs/Tabs.css +1 -0
  20. package/dist/components/Tabs/Tabs.js +208 -0
  21. package/dist/components/Tabs/Tabs.module.scss.js +27 -0
  22. package/dist/components/Tabs.d.ts +6 -0
  23. package/dist/components/Tabs.js +8 -0
  24. package/dist/components/TextArea/TextArea.js +57 -58
  25. package/dist/components/TextInput/TextInput.js +30 -33
  26. package/dist/components/Tooltip/Tooltip.css +1 -1
  27. package/dist/foundations/color.theme.dark.css +1 -1
  28. package/dist/foundations/color.theme.light.css +1 -1
  29. package/dist/foundations/focus.css +1 -0
  30. package/dist/foundations/reset.css +1 -1
  31. package/dist/foundations.css +4 -3
  32. package/dist/index.js +69 -64
  33. package/dist/react/motion.js +31 -35
  34. package/dist/reset.css +1 -1
  35. package/dist/styles.css +14 -12
  36. package/dist/ui/src/components/Accordion/Accordion.d.ts.map +1 -1
  37. package/dist/ui/src/components/ActionArea/ActionAreaLayout.d.ts.map +1 -1
  38. package/dist/ui/src/components/Cell/Cell.d.ts.map +1 -1
  39. package/dist/ui/src/components/CheckMark/types.d.ts +10 -0
  40. package/dist/ui/src/components/CheckMark/types.d.ts.map +1 -1
  41. package/dist/ui/src/components/Checkbox/Checkbox.d.ts.map +1 -1
  42. package/dist/ui/src/components/Checkbox/types.d.ts +16 -0
  43. package/dist/ui/src/components/Checkbox/types.d.ts.map +1 -1
  44. package/dist/ui/src/components/Modal/Modal.d.ts.map +1 -1
  45. package/dist/ui/src/components/Modal/useModalContentBlockTransition.d.ts.map +1 -1
  46. package/dist/ui/src/components/Radio/types.d.ts +16 -0
  47. package/dist/ui/src/components/Radio/types.d.ts.map +1 -1
  48. package/dist/ui/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  49. package/dist/ui/src/components/Select/Select.d.ts.map +1 -1
  50. package/dist/ui/src/components/Switch/types.d.ts +10 -0
  51. package/dist/ui/src/components/Switch/types.d.ts.map +1 -1
  52. package/dist/ui/src/components/Tabs/Tabs.d.ts +7 -0
  53. package/dist/ui/src/components/Tabs/Tabs.d.ts.map +1 -0
  54. package/dist/ui/src/components/Tabs/index.d.ts +3 -0
  55. package/dist/ui/src/components/Tabs/index.d.ts.map +1 -0
  56. package/dist/ui/src/components/Tabs/types.d.ts +26 -0
  57. package/dist/ui/src/components/Tabs/types.d.ts.map +1 -0
  58. package/dist/ui/src/components/TextArea/TextArea.d.ts.map +1 -1
  59. package/dist/ui/src/components/TextInput/TextInput.d.ts.map +1 -1
  60. package/dist/ui/src/index.d.ts +2 -0
  61. package/dist/ui/src/index.d.ts.map +1 -1
  62. package/dist/ui/src/react/motion/index.d.ts.map +1 -1
  63. package/dist/ui/src/utils/mergeRefs.d.ts +13 -0
  64. package/dist/ui/src/utils/mergeRefs.d.ts.map +1 -0
  65. package/dist/utils/mergeRefs.js +24 -0
  66. package/dist/vscode/oc-ui-vars.css +13 -0
  67. package/docs/colors.md +241 -0
  68. package/docs/editor-setup.md +42 -0
  69. package/docs/motion.md +665 -0
  70. package/docs/responsive-foundation-profile.md +230 -0
  71. package/docs/scss-helpers.md +189 -0
  72. package/docs/selector-contract.md +260 -0
  73. package/docs/spring.md +382 -0
  74. package/docs/stability.md +62 -0
  75. package/docs/tokens.md +561 -0
  76. package/docs/typography.md +115 -0
  77. package/package.json +9 -4
  78. package/src/scss/foundations/color-theme.test.ts +37 -8
  79. package/src/scss/foundations/color.theme.dark.scss +4 -1
  80. package/src/scss/foundations/color.theme.light.scss +3 -0
  81. package/src/scss/foundations/focus.scss +4 -0
  82. package/src/scss/foundations/focus.test.ts +48 -0
  83. package/src/scss/foundations/reset.scss +9 -4
  84. package/src/scss/foundations/reset.test.ts +32 -0
  85. package/src/scss/index.scss +2 -0
  86. package/src/scss/mixins/_focus.scss +11 -0
  87. package/src/scss/mixins/_focus.test.ts +58 -0
@@ -0,0 +1,62 @@
1
+ # Stability Policy
2
+
3
+ `@orioncactuscorp/ui`가 무엇을 공개 계약으로 보고, 무엇을 breaking change로 취급하는지 정의합니다. 릴리스는 [Semantic Versioning](https://semver.org/lang/ko/)과 [Changesets](https://github.com/changesets/changesets)로 관리하며, consumer 영향이 있는 변경은 CHANGELOG의 Migration Notes에 기록합니다.
4
+
5
+ ## 공개 계약의 범위
6
+
7
+ **문서화된 표면이 계약입니다.** README와 `docs/`(이 패키지에 동봉)에서 문서화한 것만 안정성을 보장합니다.
8
+
9
+ | 표면 | 계약 기준 |
10
+ | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
11
+ | 컴포넌트 props | 패키지 타입 정의 (`types.ts` 기반 공개 타입) |
12
+ | exports map | `package.json` `exports`의 subpath 중 README Exports에 문서화된 것 |
13
+ | selector 계약 | [Selector Contract](./selector-contract.md)의 `data-oc-component` / `data-oc-part` / visual·state selector 표 |
14
+ | CSS 변수 | foundation `--oc-*` 토큰 이름([Token Reference](./tokens.md))과 문서화된 component contract 변수(`--oc-{component}-*`) |
15
+ | SCSS API | [SCSS Helpers](./scss-helpers.md), [Semantic Motion](./motion.md), [Spring Motion](./spring.md), [Responsive Foundation Profile](./responsive-foundation-profile.md)에 문서화된 mixin/function/설정 변수 |
16
+
17
+ 다음은 계약이 **아니며** 예고 없이 바뀔 수 있습니다.
18
+
19
+ - CSS Module 클래스 이름 (해시 포함)
20
+ - selector 계약 표에 없는 내부 DOM 구조·wrapper 요소
21
+ - 문서화되지 않은 SCSS export, 내부 함수(`_` prefix), 내부 CSS 변수
22
+ - `dist/` 내부 파일 구조 (문서화된 exports subpath 경유가 아닌 직접 경로 import)
23
+
24
+ ## Breaking change 기준
25
+
26
+ major 버전에서만 진행하는 변경:
27
+
28
+ - 문서화된 prop, export, mixin/function의 제거 또는 의미 변경
29
+ - `data-oc-*` selector 계약의 제거·이름 변경, selector 표에 있는 slot 구조 변경
30
+ - 문서화된 `--oc-*` 토큰·component contract 변수의 제거·이름 변경
31
+ - [Legacy 호환 attribute](./selector-contract.md#legacy-호환-출력)의 제거
32
+ - 지원 브라우저·React·Node 최소 버전 상향
33
+
34
+ minor에서 진행하는 변경:
35
+
36
+ - 새 컴포넌트, 새 prop, 새 토큰, 새 selector 계약의 추가
37
+ - deprecation 선언 (동작 유지 + Migration Notes 안내)
38
+
39
+ patch에서 진행하는 변경:
40
+
41
+ - 계약을 바꾸지 않는 버그 수정, 시각 결함 수정, 문서 수정
42
+
43
+ 시각 스타일의 세부 값(색·간격·모션 수치)은 디자인 시스템 정책에 따라 minor에서 조정될 수 있습니다. 특정 픽셀 값 자체는 계약이 아니며, 토큰·selector를 통한 override 경로가 계약입니다.
44
+
45
+ ## Deprecation 절차
46
+
47
+ 1. 대체 경로가 준비된 minor 릴리스에서 deprecated로 선언하고 CHANGELOG Migration Notes에 대체 방법을 기록합니다.
48
+ 2. deprecated 표면은 최소 한 번의 minor 주기 동안 동작을 유지합니다.
49
+ 3. 제거는 다음 major 릴리스에서 Migration Notes와 함께 진행합니다.
50
+
51
+ ## 의존성 고지
52
+
53
+ - `@base-ui-components/react`: 현재 `1.0.0-rc` 계열(release candidate)에 의존합니다. Base UI가 안정판을 릴리스하면 minor 버전에서 전환할 예정입니다. RC 기간 동안 Base UI 쪽 데이터 attribute(`data-starting-style` 등)나 내부 동작 변경이 전이될 수 있으며, 확인된 영향은 Migration Notes에 기록합니다.
54
+ - `@orioncactuscorp/icons`: 컴포넌트 내부 indicator용 dependency입니다. 앱 코드에서 아이콘을 직접 import하는 경우에만 직접 의존성으로 추가하세요.
55
+
56
+ ## 지원 환경
57
+
58
+ - React 19+, React DOM 19+
59
+ - Node 22+
60
+ - 브라우저: **`color-mix()`를 지원하는 evergreen 브라우저** — Chrome/Edge 111+, Safari 16.2+, Firefox 113+ (2023년 상반기 이후)
61
+ - `color-mix()`보다 지원 범위가 좁은 CSS 기능은 fallback 또는 `@supports` 가드와 함께 사용합니다. 기준선 미만 브라우저에서 시각 품질 저하는 있을 수 있으나, layout·접근성·상호작용이 깨지는 결함은 버그로 취급합니다.
62
+ - CSS Modules와 CSS `@layer`를 처리하는 bundler
package/docs/tokens.md ADDED
@@ -0,0 +1,561 @@
1
+ # Token Reference
2
+
3
+ <!-- Generated by packages/ui/scripts/generate-token-reference.mjs. Do not edit manually. -->
4
+
5
+ `@orioncactuscorp/ui/foundations.css`가 선언하는 `--oc-*` foundation 토큰 전체 목록입니다. `bun run build:css` 시 자동 재생성됩니다.
6
+
7
+ 토큰 값은 theme(`data-theme`)과 viewport(responsive mode)에 따라 달라질 수 있으므로 이 문서는 이름과 용도를 기준으로 제공합니다. 실제 값은 브라우저 devtools의 computed value 또는 [VS Code 자동완성 index](./editor-setup.md)로 확인하세요.
8
+
9
+ 값 커스터마이즈 방법은 README의 Foundation 섹션과 [Responsive Foundation Profile](./responsive-foundation-profile.md)을 참조하세요.
10
+
11
+ 색상과 타이포는 이름 목록보다 역할 가이드를 먼저 확인하세요: [Semantic Colors](./colors.md), [Typography](./typography.md).
12
+
13
+ ## Color — theme semantic
14
+
15
+ `:root`, `[data-theme="light"]`, `[data-theme="dark"]`에서 theme별 값으로 선언됩니다. consumer override는 theme selector 스코프에서 수행합니다. 역할별 용도와 light/dark 기본값은 [Semantic Colors](./colors.md)를 참조하세요.
16
+
17
+ - `--oc-color-theme-accent-background-blue`
18
+ - `--oc-color-theme-accent-background-cyan`
19
+ - `--oc-color-theme-accent-background-green`
20
+ - `--oc-color-theme-accent-background-lightBlue`
21
+ - `--oc-color-theme-accent-background-lime`
22
+ - `--oc-color-theme-accent-background-orange`
23
+ - `--oc-color-theme-accent-background-pink`
24
+ - `--oc-color-theme-accent-background-purple`
25
+ - `--oc-color-theme-accent-background-red`
26
+ - `--oc-color-theme-accent-background-redOrange`
27
+ - `--oc-color-theme-accent-background-violet`
28
+ - `--oc-color-theme-accent-foreground-blue`
29
+ - `--oc-color-theme-accent-foreground-cyan`
30
+ - `--oc-color-theme-accent-foreground-green`
31
+ - `--oc-color-theme-accent-foreground-lightBlue`
32
+ - `--oc-color-theme-accent-foreground-lime`
33
+ - `--oc-color-theme-accent-foreground-orange`
34
+ - `--oc-color-theme-accent-foreground-pink`
35
+ - `--oc-color-theme-accent-foreground-purple`
36
+ - `--oc-color-theme-accent-foreground-red`
37
+ - `--oc-color-theme-accent-foreground-redOrange`
38
+ - `--oc-color-theme-accent-foreground-violet`
39
+ - `--oc-color-theme-background-elevated-alternative`
40
+ - `--oc-color-theme-background-elevated-normal`
41
+ - `--oc-color-theme-background-normal-alternative`
42
+ - `--oc-color-theme-background-normal-normal`
43
+ - `--oc-color-theme-fill-alternative`
44
+ - `--oc-color-theme-fill-normal`
45
+ - `--oc-color-theme-fill-strong`
46
+ - `--oc-color-theme-focus-ring`
47
+ - `--oc-color-theme-interaction-disable`
48
+ - `--oc-color-theme-interaction-inactive`
49
+ - `--oc-color-theme-inverse-background`
50
+ - `--oc-color-theme-inverse-label`
51
+ - `--oc-color-theme-inverse-primary`
52
+ - `--oc-color-theme-label-alternative`
53
+ - `--oc-color-theme-label-assistive`
54
+ - `--oc-color-theme-label-disable`
55
+ - `--oc-color-theme-label-neutral`
56
+ - `--oc-color-theme-label-normal`
57
+ - `--oc-color-theme-label-strong`
58
+ - `--oc-color-theme-line-normal-alternative`
59
+ - `--oc-color-theme-line-normal-neutral`
60
+ - `--oc-color-theme-line-normal-normal`
61
+ - `--oc-color-theme-line-normal-strong`
62
+ - `--oc-color-theme-line-solid-alternative`
63
+ - `--oc-color-theme-line-solid-neutral`
64
+ - `--oc-color-theme-line-solid-normal`
65
+ - `--oc-color-theme-line-solid-strong`
66
+ - `--oc-color-theme-material-dimmer`
67
+ - `--oc-color-theme-primary-normal`
68
+ - `--oc-color-theme-static-black`
69
+ - `--oc-color-theme-static-transparent`
70
+ - `--oc-color-theme-static-white`
71
+ - `--oc-color-theme-status-cautionary`
72
+ - `--oc-color-theme-status-negative`
73
+ - `--oc-color-theme-status-positive`
74
+
75
+ ## Color — global primitive
76
+
77
+ theme와 무관한 primitive 값입니다. 컴포넌트에서는 theme semantic 토큰을 우선 사용하세요.
78
+
79
+ - `--oc-color-global-blue-0`
80
+ - `--oc-color-global-blue-10`
81
+ - `--oc-color-global-blue-100`
82
+ - `--oc-color-global-blue-20`
83
+ - `--oc-color-global-blue-30`
84
+ - `--oc-color-global-blue-40`
85
+ - `--oc-color-global-blue-45`
86
+ - `--oc-color-global-blue-50`
87
+ - `--oc-color-global-blue-55`
88
+ - `--oc-color-global-blue-60`
89
+ - `--oc-color-global-blue-65`
90
+ - `--oc-color-global-blue-70`
91
+ - `--oc-color-global-blue-80`
92
+ - `--oc-color-global-blue-90`
93
+ - `--oc-color-global-blue-95`
94
+ - `--oc-color-global-blue-99`
95
+ - `--oc-color-global-common-0`
96
+ - `--oc-color-global-common-100`
97
+ - `--oc-color-global-common-transparent`
98
+ - `--oc-color-global-coolNeutral-0`
99
+ - `--oc-color-global-coolNeutral-10`
100
+ - `--oc-color-global-coolNeutral-100`
101
+ - `--oc-color-global-coolNeutral-15`
102
+ - `--oc-color-global-coolNeutral-17`
103
+ - `--oc-color-global-coolNeutral-20`
104
+ - `--oc-color-global-coolNeutral-22`
105
+ - `--oc-color-global-coolNeutral-23`
106
+ - `--oc-color-global-coolNeutral-25`
107
+ - `--oc-color-global-coolNeutral-30`
108
+ - `--oc-color-global-coolNeutral-40`
109
+ - `--oc-color-global-coolNeutral-5`
110
+ - `--oc-color-global-coolNeutral-50`
111
+ - `--oc-color-global-coolNeutral-60`
112
+ - `--oc-color-global-coolNeutral-7`
113
+ - `--oc-color-global-coolNeutral-70`
114
+ - `--oc-color-global-coolNeutral-80`
115
+ - `--oc-color-global-coolNeutral-90`
116
+ - `--oc-color-global-coolNeutral-95`
117
+ - `--oc-color-global-coolNeutral-96`
118
+ - `--oc-color-global-coolNeutral-97`
119
+ - `--oc-color-global-coolNeutral-98`
120
+ - `--oc-color-global-coolNeutral-99`
121
+ - `--oc-color-global-cyan-0`
122
+ - `--oc-color-global-cyan-10`
123
+ - `--oc-color-global-cyan-100`
124
+ - `--oc-color-global-cyan-20`
125
+ - `--oc-color-global-cyan-30`
126
+ - `--oc-color-global-cyan-40`
127
+ - `--oc-color-global-cyan-50`
128
+ - `--oc-color-global-cyan-60`
129
+ - `--oc-color-global-cyan-70`
130
+ - `--oc-color-global-cyan-80`
131
+ - `--oc-color-global-cyan-90`
132
+ - `--oc-color-global-cyan-95`
133
+ - `--oc-color-global-cyan-99`
134
+ - `--oc-color-global-green-0`
135
+ - `--oc-color-global-green-10`
136
+ - `--oc-color-global-green-100`
137
+ - `--oc-color-global-green-20`
138
+ - `--oc-color-global-green-30`
139
+ - `--oc-color-global-green-40`
140
+ - `--oc-color-global-green-50`
141
+ - `--oc-color-global-green-60`
142
+ - `--oc-color-global-green-70`
143
+ - `--oc-color-global-green-80`
144
+ - `--oc-color-global-green-90`
145
+ - `--oc-color-global-green-95`
146
+ - `--oc-color-global-green-99`
147
+ - `--oc-color-global-lightBlue-0`
148
+ - `--oc-color-global-lightBlue-10`
149
+ - `--oc-color-global-lightBlue-100`
150
+ - `--oc-color-global-lightBlue-20`
151
+ - `--oc-color-global-lightBlue-30`
152
+ - `--oc-color-global-lightBlue-40`
153
+ - `--oc-color-global-lightBlue-50`
154
+ - `--oc-color-global-lightBlue-60`
155
+ - `--oc-color-global-lightBlue-70`
156
+ - `--oc-color-global-lightBlue-80`
157
+ - `--oc-color-global-lightBlue-90`
158
+ - `--oc-color-global-lightBlue-95`
159
+ - `--oc-color-global-lightBlue-99`
160
+ - `--oc-color-global-lime-0`
161
+ - `--oc-color-global-lime-10`
162
+ - `--oc-color-global-lime-100`
163
+ - `--oc-color-global-lime-20`
164
+ - `--oc-color-global-lime-30`
165
+ - `--oc-color-global-lime-37`
166
+ - `--oc-color-global-lime-40`
167
+ - `--oc-color-global-lime-50`
168
+ - `--oc-color-global-lime-60`
169
+ - `--oc-color-global-lime-70`
170
+ - `--oc-color-global-lime-80`
171
+ - `--oc-color-global-lime-90`
172
+ - `--oc-color-global-lime-95`
173
+ - `--oc-color-global-lime-99`
174
+ - `--oc-color-global-neutral-0`
175
+ - `--oc-color-global-neutral-10`
176
+ - `--oc-color-global-neutral-100`
177
+ - `--oc-color-global-neutral-15`
178
+ - `--oc-color-global-neutral-20`
179
+ - `--oc-color-global-neutral-22`
180
+ - `--oc-color-global-neutral-30`
181
+ - `--oc-color-global-neutral-40`
182
+ - `--oc-color-global-neutral-5`
183
+ - `--oc-color-global-neutral-50`
184
+ - `--oc-color-global-neutral-60`
185
+ - `--oc-color-global-neutral-70`
186
+ - `--oc-color-global-neutral-80`
187
+ - `--oc-color-global-neutral-90`
188
+ - `--oc-color-global-neutral-95`
189
+ - `--oc-color-global-neutral-99`
190
+ - `--oc-color-global-opacity-0`
191
+ - `--oc-color-global-opacity-100`
192
+ - `--oc-color-global-opacity-12`
193
+ - `--oc-color-global-opacity-16`
194
+ - `--oc-color-global-opacity-22`
195
+ - `--oc-color-global-opacity-28`
196
+ - `--oc-color-global-opacity-35`
197
+ - `--oc-color-global-opacity-43`
198
+ - `--oc-color-global-opacity-5`
199
+ - `--oc-color-global-opacity-52`
200
+ - `--oc-color-global-opacity-61`
201
+ - `--oc-color-global-opacity-74`
202
+ - `--oc-color-global-opacity-8`
203
+ - `--oc-color-global-opacity-88`
204
+ - `--oc-color-global-opacity-97`
205
+ - `--oc-color-global-orange-0`
206
+ - `--oc-color-global-orange-10`
207
+ - `--oc-color-global-orange-100`
208
+ - `--oc-color-global-orange-20`
209
+ - `--oc-color-global-orange-30`
210
+ - `--oc-color-global-orange-39`
211
+ - `--oc-color-global-orange-40`
212
+ - `--oc-color-global-orange-50`
213
+ - `--oc-color-global-orange-60`
214
+ - `--oc-color-global-orange-70`
215
+ - `--oc-color-global-orange-80`
216
+ - `--oc-color-global-orange-90`
217
+ - `--oc-color-global-orange-95`
218
+ - `--oc-color-global-orange-99`
219
+ - `--oc-color-global-pink-0`
220
+ - `--oc-color-global-pink-10`
221
+ - `--oc-color-global-pink-100`
222
+ - `--oc-color-global-pink-20`
223
+ - `--oc-color-global-pink-30`
224
+ - `--oc-color-global-pink-40`
225
+ - `--oc-color-global-pink-46`
226
+ - `--oc-color-global-pink-50`
227
+ - `--oc-color-global-pink-60`
228
+ - `--oc-color-global-pink-70`
229
+ - `--oc-color-global-pink-80`
230
+ - `--oc-color-global-pink-90`
231
+ - `--oc-color-global-pink-95`
232
+ - `--oc-color-global-pink-99`
233
+ - `--oc-color-global-purple-0`
234
+ - `--oc-color-global-purple-10`
235
+ - `--oc-color-global-purple-100`
236
+ - `--oc-color-global-purple-20`
237
+ - `--oc-color-global-purple-30`
238
+ - `--oc-color-global-purple-40`
239
+ - `--oc-color-global-purple-50`
240
+ - `--oc-color-global-purple-60`
241
+ - `--oc-color-global-purple-70`
242
+ - `--oc-color-global-purple-80`
243
+ - `--oc-color-global-purple-90`
244
+ - `--oc-color-global-purple-95`
245
+ - `--oc-color-global-purple-99`
246
+ - `--oc-color-global-red-0`
247
+ - `--oc-color-global-red-10`
248
+ - `--oc-color-global-red-100`
249
+ - `--oc-color-global-red-20`
250
+ - `--oc-color-global-red-30`
251
+ - `--oc-color-global-red-40`
252
+ - `--oc-color-global-red-50`
253
+ - `--oc-color-global-red-60`
254
+ - `--oc-color-global-red-70`
255
+ - `--oc-color-global-red-80`
256
+ - `--oc-color-global-red-90`
257
+ - `--oc-color-global-red-95`
258
+ - `--oc-color-global-red-99`
259
+ - `--oc-color-global-redOrange-0`
260
+ - `--oc-color-global-redOrange-10`
261
+ - `--oc-color-global-redOrange-100`
262
+ - `--oc-color-global-redOrange-20`
263
+ - `--oc-color-global-redOrange-30`
264
+ - `--oc-color-global-redOrange-40`
265
+ - `--oc-color-global-redOrange-48`
266
+ - `--oc-color-global-redOrange-50`
267
+ - `--oc-color-global-redOrange-60`
268
+ - `--oc-color-global-redOrange-70`
269
+ - `--oc-color-global-redOrange-80`
270
+ - `--oc-color-global-redOrange-90`
271
+ - `--oc-color-global-redOrange-95`
272
+ - `--oc-color-global-redOrange-99`
273
+ - `--oc-color-global-violet-0`
274
+ - `--oc-color-global-violet-10`
275
+ - `--oc-color-global-violet-100`
276
+ - `--oc-color-global-violet-20`
277
+ - `--oc-color-global-violet-30`
278
+ - `--oc-color-global-violet-40`
279
+ - `--oc-color-global-violet-45`
280
+ - `--oc-color-global-violet-50`
281
+ - `--oc-color-global-violet-60`
282
+ - `--oc-color-global-violet-70`
283
+ - `--oc-color-global-violet-80`
284
+ - `--oc-color-global-violet-90`
285
+ - `--oc-color-global-violet-95`
286
+ - `--oc-color-global-violet-99`
287
+
288
+ ## Typography
289
+
290
+ size/height/spacing/weight는 `@include typo($variant, $weight)` 경유가 기본입니다. raw size 토큰 직접 참조는 피하세요. 19개 variant의 용도와 기본값은 [Typography](./typography.md)를 참조하세요.
291
+
292
+ - `--oc-typo-font-family`
293
+ - `--oc-typo-height-body1`
294
+ - `--oc-typo-height-body1reading`
295
+ - `--oc-typo-height-body2`
296
+ - `--oc-typo-height-body2reading`
297
+ - `--oc-typo-height-caption1`
298
+ - `--oc-typo-height-caption2`
299
+ - `--oc-typo-height-display1`
300
+ - `--oc-typo-height-display2`
301
+ - `--oc-typo-height-display3`
302
+ - `--oc-typo-height-heading1`
303
+ - `--oc-typo-height-heading2`
304
+ - `--oc-typo-height-headline1`
305
+ - `--oc-typo-height-headline2`
306
+ - `--oc-typo-height-label1`
307
+ - `--oc-typo-height-label1reading`
308
+ - `--oc-typo-height-label2`
309
+ - `--oc-typo-height-title1`
310
+ - `--oc-typo-height-title2`
311
+ - `--oc-typo-height-title3`
312
+ - `--oc-typo-size-body1`
313
+ - `--oc-typo-size-body1reading`
314
+ - `--oc-typo-size-body2`
315
+ - `--oc-typo-size-body2reading`
316
+ - `--oc-typo-size-caption1`
317
+ - `--oc-typo-size-caption2`
318
+ - `--oc-typo-size-display1`
319
+ - `--oc-typo-size-display2`
320
+ - `--oc-typo-size-display3`
321
+ - `--oc-typo-size-factor`
322
+ - `--oc-typo-size-heading1`
323
+ - `--oc-typo-size-heading2`
324
+ - `--oc-typo-size-headline1`
325
+ - `--oc-typo-size-headline2`
326
+ - `--oc-typo-size-label1`
327
+ - `--oc-typo-size-label1reading`
328
+ - `--oc-typo-size-label2`
329
+ - `--oc-typo-size-title1`
330
+ - `--oc-typo-size-title2`
331
+ - `--oc-typo-size-title3`
332
+ - `--oc-typo-spacing-body1`
333
+ - `--oc-typo-spacing-body1reading`
334
+ - `--oc-typo-spacing-body2`
335
+ - `--oc-typo-spacing-body2reading`
336
+ - `--oc-typo-spacing-caption1`
337
+ - `--oc-typo-spacing-caption2`
338
+ - `--oc-typo-spacing-display1`
339
+ - `--oc-typo-spacing-display2`
340
+ - `--oc-typo-spacing-display3`
341
+ - `--oc-typo-spacing-heading1`
342
+ - `--oc-typo-spacing-heading2`
343
+ - `--oc-typo-spacing-headline1`
344
+ - `--oc-typo-spacing-headline2`
345
+ - `--oc-typo-spacing-label1`
346
+ - `--oc-typo-spacing-label1reading`
347
+ - `--oc-typo-spacing-label2`
348
+ - `--oc-typo-spacing-title1`
349
+ - `--oc-typo-spacing-title2`
350
+ - `--oc-typo-spacing-title3`
351
+ - `--oc-typo-weight-body1-bold`
352
+ - `--oc-typo-weight-body1-medium`
353
+ - `--oc-typo-weight-body1-normal`
354
+ - `--oc-typo-weight-body1reading-bold`
355
+ - `--oc-typo-weight-body1reading-medium`
356
+ - `--oc-typo-weight-body1reading-normal`
357
+ - `--oc-typo-weight-body2-bold`
358
+ - `--oc-typo-weight-body2-medium`
359
+ - `--oc-typo-weight-body2-normal`
360
+ - `--oc-typo-weight-body2reading-bold`
361
+ - `--oc-typo-weight-body2reading-medium`
362
+ - `--oc-typo-weight-body2reading-normal`
363
+ - `--oc-typo-weight-caption1-bold`
364
+ - `--oc-typo-weight-caption1-medium`
365
+ - `--oc-typo-weight-caption1-normal`
366
+ - `--oc-typo-weight-caption2-bold`
367
+ - `--oc-typo-weight-caption2-medium`
368
+ - `--oc-typo-weight-caption2-normal`
369
+ - `--oc-typo-weight-display1-bold`
370
+ - `--oc-typo-weight-display1-medium`
371
+ - `--oc-typo-weight-display1-normal`
372
+ - `--oc-typo-weight-display2-bold`
373
+ - `--oc-typo-weight-display2-medium`
374
+ - `--oc-typo-weight-display2-normal`
375
+ - `--oc-typo-weight-display3-bold`
376
+ - `--oc-typo-weight-display3-medium`
377
+ - `--oc-typo-weight-display3-normal`
378
+ - `--oc-typo-weight-heading1-bold`
379
+ - `--oc-typo-weight-heading1-medium`
380
+ - `--oc-typo-weight-heading1-normal`
381
+ - `--oc-typo-weight-heading2-bold`
382
+ - `--oc-typo-weight-heading2-medium`
383
+ - `--oc-typo-weight-heading2-normal`
384
+ - `--oc-typo-weight-headline1-bold`
385
+ - `--oc-typo-weight-headline1-medium`
386
+ - `--oc-typo-weight-headline1-normal`
387
+ - `--oc-typo-weight-headline2-bold`
388
+ - `--oc-typo-weight-headline2-medium`
389
+ - `--oc-typo-weight-headline2-normal`
390
+ - `--oc-typo-weight-label1-bold`
391
+ - `--oc-typo-weight-label1-medium`
392
+ - `--oc-typo-weight-label1-normal`
393
+ - `--oc-typo-weight-label1reading-bold`
394
+ - `--oc-typo-weight-label1reading-medium`
395
+ - `--oc-typo-weight-label1reading-normal`
396
+ - `--oc-typo-weight-label2-bold`
397
+ - `--oc-typo-weight-label2-medium`
398
+ - `--oc-typo-weight-label2-normal`
399
+ - `--oc-typo-weight-title1-bold`
400
+ - `--oc-typo-weight-title1-medium`
401
+ - `--oc-typo-weight-title1-normal`
402
+ - `--oc-typo-weight-title2-bold`
403
+ - `--oc-typo-weight-title2-medium`
404
+ - `--oc-typo-weight-title2-normal`
405
+ - `--oc-typo-weight-title3-bold`
406
+ - `--oc-typo-weight-title3-medium`
407
+ - `--oc-typo-weight-title3-normal`
408
+
409
+ ## Space
410
+
411
+ responsive mode(fluid/stepped/static)에 따라 viewport별 출력이 달라집니다.
412
+
413
+ - `--oc-space-item-gap-atom`
414
+ - `--oc-space-item-gap-huge`
415
+ - `--oc-space-item-gap-large`
416
+ - `--oc-space-item-gap-medium`
417
+ - `--oc-space-item-gap-micro`
418
+ - `--oc-space-item-gap-mini`
419
+ - `--oc-space-item-gap-nano`
420
+ - `--oc-space-item-gap-small`
421
+ - `--oc-space-item-gap-tiny`
422
+ - `--oc-space-item-gap-xlarge`
423
+ - `--oc-space-item-gap-xsmall`
424
+ - `--oc-space-item-padding-atom`
425
+ - `--oc-space-item-padding-large`
426
+ - `--oc-space-item-padding-medium`
427
+ - `--oc-space-item-padding-micro`
428
+ - `--oc-space-item-padding-mini`
429
+ - `--oc-space-item-padding-nano`
430
+ - `--oc-space-item-padding-small`
431
+ - `--oc-space-item-padding-tiny`
432
+ - `--oc-space-item-padding-xsmall`
433
+ - `--oc-space-section-gap-large`
434
+ - `--oc-space-section-gap-medium`
435
+ - `--oc-space-section-gap-section`
436
+ - `--oc-space-section-gap-xlarge`
437
+ - `--oc-space-section-padding-viewport`
438
+ - `--oc-space-section-padding-viewport-block-safe-end`
439
+ - `--oc-space-section-padding-viewport-block-safe-start`
440
+ - `--oc-space-section-padding-viewport-inline-safe-end`
441
+ - `--oc-space-section-padding-viewport-inline-safe-start`
442
+ - `--oc-space-section-padding-viewport-x`
443
+ - `--oc-space-section-padding-viewport-y`
444
+
445
+ ## Atomic (radius/width/blur/shadow 등)
446
+
447
+ `--oc-atomic-radius-factor`는 radius 전역 배율 runtime multiplier입니다.
448
+
449
+ - `--oc-atomic-blur-compact`
450
+ - `--oc-atomic-blur-normal`
451
+ - `--oc-atomic-radius-factor`
452
+ - `--oc-atomic-radius-huge`
453
+ - `--oc-atomic-radius-large`
454
+ - `--oc-atomic-radius-max`
455
+ - `--oc-atomic-radius-medium`
456
+ - `--oc-atomic-radius-micro`
457
+ - `--oc-atomic-radius-mini`
458
+ - `--oc-atomic-radius-small`
459
+ - `--oc-atomic-radius-tiny`
460
+ - `--oc-atomic-radius-xlarge`
461
+ - `--oc-atomic-radius-xsmall`
462
+ - `--oc-atomic-shadow-normal-large`
463
+ - `--oc-atomic-shadow-normal-medium`
464
+ - `--oc-atomic-shadow-normal-small`
465
+ - `--oc-atomic-shadow-normal-xlarge`
466
+ - `--oc-atomic-shadow-normal-xsmall`
467
+ - `--oc-atomic-shadow-spread-small`
468
+ - `--oc-atomic-shadow-spread-xlarge`
469
+ - `--oc-atomic-width-content`
470
+ - `--oc-atomic-width-section-large`
471
+ - `--oc-atomic-width-section-medium`
472
+ - `--oc-atomic-width-section-small`
473
+ - `--oc-atomic-width-section-xsmall`
474
+
475
+ ## Focus ring
476
+
477
+ 키보드 포커스 링(`:focus-visible`)의 두께/offset입니다. 색상은 theme semantic 토큰 `--oc-color-theme-focus-ring`을 사용하며, 컴포넌트 적용은 `@include oc-focus-ring` 경유가 기본입니다.
478
+
479
+ - `--oc-focus-ring-offset`
480
+ - `--oc-focus-ring-width`
481
+
482
+ ## Motion
483
+
484
+ duration/scale/distance factor는 unitless multiplier입니다. 자세한 정책은 [Semantic Motion](./motion.md)을 참조하세요.
485
+
486
+ - `--oc-motion-distance-factor`
487
+ - `--oc-motion-distance-factor-reject`
488
+ - `--oc-motion-distance-factor-spatial`
489
+ - `--oc-motion-duration-ambient`
490
+ - `--oc-motion-duration-continuous`
491
+ - `--oc-motion-duration-disclosure`
492
+ - `--oc-motion-duration-disclosure-exit`
493
+ - `--oc-motion-duration-expand`
494
+ - `--oc-motion-duration-expand-exit`
495
+ - `--oc-motion-duration-factor`
496
+ - `--oc-motion-duration-factor-preserve`
497
+ - `--oc-motion-duration-factor-reduced`
498
+ - `--oc-motion-duration-fade`
499
+ - `--oc-motion-duration-feedback`
500
+ - `--oc-motion-duration-gesture`
501
+ - `--oc-motion-duration-gesture-release`
502
+ - `--oc-motion-duration-move`
503
+ - `--oc-motion-duration-reject`
504
+ - `--oc-motion-duration-sheet`
505
+ - `--oc-motion-duration-sheet-exit`
506
+ - `--oc-motion-duration-sheet-release`
507
+ - `--oc-motion-duration-surface`
508
+ - `--oc-motion-duration-surface-exit`
509
+ - `--oc-motion-pace-normal`
510
+ - `--oc-motion-pace-quick`
511
+ - `--oc-motion-pace-slow`
512
+ - `--oc-motion-scale-factor`
513
+ - `--oc-motion-scale-factor-feedback`
514
+ - `--oc-motion-scale-factor-spatial`
515
+ - `--oc-motion-timing-ambient`
516
+ - `--oc-motion-timing-continuous`
517
+ - `--oc-motion-timing-disclosure`
518
+ - `--oc-motion-timing-disclosure-exit`
519
+ - `--oc-motion-timing-expand`
520
+ - `--oc-motion-timing-expand-exit`
521
+ - `--oc-motion-timing-fade`
522
+ - `--oc-motion-timing-feedback`
523
+ - `--oc-motion-timing-gesture`
524
+ - `--oc-motion-timing-gesture-release`
525
+ - `--oc-motion-timing-move`
526
+ - `--oc-motion-timing-reject`
527
+ - `--oc-motion-timing-sheet`
528
+ - `--oc-motion-timing-sheet-exit`
529
+ - `--oc-motion-timing-sheet-release`
530
+ - `--oc-motion-timing-surface`
531
+ - `--oc-motion-timing-surface-exit`
532
+
533
+ ## Spring
534
+
535
+ spring preset의 timing/duration scale입니다. 자세한 사용법은 [Spring Motion](./spring.md)을 참조하세요.
536
+
537
+ - `--oc-spring-bouncy-duration-scale`
538
+ - `--oc-spring-bouncy-timing`
539
+ - `--oc-spring-smooth-duration-scale`
540
+ - `--oc-spring-smooth-timing`
541
+ - `--oc-spring-snappy-duration-scale`
542
+ - `--oc-spring-snappy-timing`
543
+
544
+ ## Z-index
545
+
546
+ - `--oc-zindex-0`
547
+ - `--oc-zindex-1`
548
+ - `--oc-zindex-2`
549
+ - `--oc-zindex-3`
550
+ - `--oc-zindex-4`
551
+ - `--oc-zindex-5`
552
+
553
+ ## Breakpoint
554
+
555
+ SCSS에서는 `respond-to(...)` mixin 경유가 기본입니다. raw media query에 직접 사용하지 마세요.
556
+
557
+ - `--oc-breakpoint-hg`
558
+ - `--oc-breakpoint-lg`
559
+ - `--oc-breakpoint-md`
560
+ - `--oc-breakpoint-sm`
561
+ - `--oc-breakpoint-xl`