@uniai-fe/uds-primitives 0.10.4 → 0.11.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.
package/README.md CHANGED
@@ -320,6 +320,7 @@ function LinkButton() {
320
320
  - 슬롯: `button-label`, `button-icon`, `button-left`, `button-right`, `button-loading`
321
321
  - Modifier: `button-scale-*`, `button-fill-*`, `button-priority-*`, `button-state-*`, `button-size-*`, `button-block`, `button-icon-left/right`
322
322
  - `scale` prop은 legacy 호환용이며 `fill`/`size`를 명시 사용하는 것이 권장된다.
323
+ - `Button.Default`의 `priority`는 `primary|secondary|tertiary|green|yellow|orange|teal|pink|red|darkGray|lightGray`를 지원한다. 신규 컬러 preset은 `--button-default-{priority}-*` 변수를 컨테이너 범위에서 재정의해 상태별로 교정할 수 있다.
323
324
  - `loading` 상태는 readonly와 동일하게 잠기며 hover/pressed 반응을 막는다. anchor 등 커스텀 요소도 `aria-disabled="true"`를 통해 동일한 스타일을 적용받는다.
324
325
 
325
326
  ### TextButton / RoundButton 템플릿
@@ -345,7 +346,7 @@ function Templates() {
345
346
  ```
346
347
 
347
348
  - TextButton(`Button.Text`)은 `size="small|medium|large"` + `priority="secondary|tertiary"`만 허용한다.
348
- - RoundButton(`Button.Rounded`)은 size만 지정하면 되고 priority는 기본 Button과 동일하게 `primary|secondary|tertiary`를 사용한다.
349
+ - RoundButton(`Button.Rounded`)은 `priority="primary|secondary|tertiary"`만 사용한다.
349
350
  - 템플릿별 클래스를 추가로 노출한다: `.button-template-text`, `.button-template-text-size-*`, `.button-template-round`, `.button-template-round-size-*`.
350
351
  - 스토리북 `primitives/Button` Story에서 solid/outlined/텍스트/라운드 4가지 카테고리를 한 번에 확인할 수 있다.
351
352
 
package/dist/styles.css CHANGED
@@ -195,6 +195,71 @@
195
195
  --button-default-tertiary-outline-hover-foreground: var(--color-neutral-20);
196
196
  --button-default-tertiary-overlay-outlined-bg: var(--color-cool-gray-95);
197
197
  --button-default-tertiary-overlay-solid-bg: var(--color-surface-strong);
198
+ /* FE-274: Badge 팔레트를 초기값으로 사용하며 서비스에서 priority별로 교정할 수 있다. */
199
+ --button-default-green-solid-bg: var(--color-green-95);
200
+ --button-default-green-solid-hover-bg: var(--color-green-90);
201
+ --button-default-green-solid-active-bg: var(--color-green-80);
202
+ --button-default-green-solid-foreground: var(--color-green-45);
203
+ --button-default-green-outline-border: var(--color-green-45);
204
+ --button-default-green-outline-foreground: var(--color-green-45);
205
+ --button-default-green-outline-hover-bg: var(--color-green-95);
206
+ --button-default-green-outline-active-bg: var(--color-green-90);
207
+ --button-default-yellow-solid-bg: var(--color-yellow-95);
208
+ --button-default-yellow-solid-hover-bg: var(--color-yellow-90);
209
+ --button-default-yellow-solid-active-bg: var(--color-yellow-80);
210
+ --button-default-yellow-solid-foreground: var(--color-yellow-45);
211
+ --button-default-yellow-outline-border: var(--color-yellow-60);
212
+ --button-default-yellow-outline-foreground: var(--color-yellow-45);
213
+ --button-default-yellow-outline-hover-bg: var(--color-yellow-95);
214
+ --button-default-yellow-outline-active-bg: var(--color-yellow-90);
215
+ --button-default-orange-solid-bg: var(--color-orange-95);
216
+ --button-default-orange-solid-hover-bg: var(--color-orange-90);
217
+ --button-default-orange-solid-active-bg: var(--color-orange-80);
218
+ --button-default-orange-solid-foreground: var(--color-orange-55);
219
+ --button-default-orange-outline-border: var(--color-orange-70);
220
+ --button-default-orange-outline-foreground: var(--color-orange-55);
221
+ --button-default-orange-outline-hover-bg: var(--color-orange-95);
222
+ --button-default-orange-outline-active-bg: var(--color-orange-90);
223
+ --button-default-teal-solid-bg: var(--color-teal-95);
224
+ --button-default-teal-solid-hover-bg: var(--color-teal-90);
225
+ --button-default-teal-solid-active-bg: var(--color-teal-80);
226
+ --button-default-teal-solid-foreground: var(--color-teal-45);
227
+ --button-default-teal-outline-border: var(--color-teal-45);
228
+ --button-default-teal-outline-foreground: var(--color-teal-45);
229
+ --button-default-teal-outline-hover-bg: var(--color-teal-95);
230
+ --button-default-teal-outline-active-bg: var(--color-teal-90);
231
+ --button-default-pink-solid-bg: var(--color-pink-95);
232
+ --button-default-pink-solid-hover-bg: var(--color-pink-90);
233
+ --button-default-pink-solid-active-bg: var(--color-pink-80);
234
+ --button-default-pink-solid-foreground: var(--color-pink-55);
235
+ --button-default-pink-outline-border: var(--color-pink-70);
236
+ --button-default-pink-outline-foreground: var(--color-pink-55);
237
+ --button-default-pink-outline-hover-bg: var(--color-pink-95);
238
+ --button-default-pink-outline-active-bg: var(--color-pink-90);
239
+ --button-default-red-solid-bg: var(--color-red-95);
240
+ --button-default-red-solid-hover-bg: var(--color-red-90);
241
+ --button-default-red-solid-active-bg: var(--color-red-80);
242
+ --button-default-red-solid-foreground: var(--color-red-55);
243
+ --button-default-red-outline-border: var(--color-red-70);
244
+ --button-default-red-outline-foreground: var(--color-red-55);
245
+ --button-default-red-outline-hover-bg: var(--color-red-95);
246
+ --button-default-red-outline-active-bg: var(--color-red-90);
247
+ --button-default-dark-gray-solid-bg: var(--color-cool-gray-20);
248
+ --button-default-dark-gray-solid-hover-bg: var(--color-cool-gray-10);
249
+ --button-default-dark-gray-solid-active-bg: var(--color-cool-gray-10);
250
+ --button-default-dark-gray-solid-foreground: var(--color-common-100);
251
+ --button-default-dark-gray-outline-border: var(--color-cool-gray-20);
252
+ --button-default-dark-gray-outline-foreground: var(--color-cool-gray-20);
253
+ --button-default-dark-gray-outline-hover-bg: var(--color-cool-gray-95);
254
+ --button-default-dark-gray-outline-active-bg: var(--color-cool-gray-90);
255
+ --button-default-light-gray-solid-bg: var(--color-cool-gray-95);
256
+ --button-default-light-gray-solid-hover-bg: var(--color-cool-gray-90);
257
+ --button-default-light-gray-solid-active-bg: var(--color-cool-gray-80);
258
+ --button-default-light-gray-solid-foreground: var(--color-cool-gray-20);
259
+ --button-default-light-gray-outline-border: var(--color-cool-gray-80);
260
+ --button-default-light-gray-outline-foreground: var(--color-cool-gray-20);
261
+ --button-default-light-gray-outline-hover-bg: var(--color-cool-gray-99);
262
+ --button-default-light-gray-outline-active-bg: var(--color-cool-gray-95);
198
263
  /* text button colors */
199
264
  --button-text-secondary-foreground: var(--color-primary-default);
200
265
  --button-text-secondary-hover-bg: var(
@@ -1609,10 +1674,7 @@
1609
1674
  .button:where(
1610
1675
  .button-fill-outlined.button-priority-primary
1611
1676
  )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
1612
- background-color: var(
1613
- --button-default-primary-solid-bg,
1614
- var(--color-primary-default)
1615
- );
1677
+ background-color: var(--button-default-primary-solid-bg);
1616
1678
  border-color: var(
1617
1679
  --button-default-primary-outline-border,
1618
1680
  var(--color-primary-default)
@@ -1716,10 +1778,7 @@
1716
1778
  .button:where(
1717
1779
  .button-fill-outlined.button-priority-secondary
1718
1780
  )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
1719
- background-color: var(
1720
- --button-default-secondary-solid-bg,
1721
- var(--color-blue-95, #e5eeff)
1722
- );
1781
+ background-color: var(--button-default-secondary-solid-bg);
1723
1782
  border-color: var(
1724
1783
  --button-default-secondary-outline-border,
1725
1784
  var(--color-cool-gray-90)
@@ -1835,15 +1894,638 @@
1835
1894
  .button:where(
1836
1895
  .button-fill-outlined.button-priority-tertiary
1837
1896
  )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
1838
- background-color: var(
1839
- --button-default-tertiary-solid-bg,
1840
- var(--color-surface-neutral)
1841
- );
1897
+ background-color: var(--button-default-tertiary-solid-bg);
1842
1898
  border-color: var(
1843
1899
  --button-default-tertiary-outline-border,
1844
1900
  var(--color-cool-gray-90)
1845
1901
  );
1846
1902
  }
1903
+ .button:where(.button-fill-solid.button-priority-green) {
1904
+ background-color: var(--button-default-green-solid-bg);
1905
+ border-color: var(--button-default-green-solid-bg);
1906
+ color: var(--button-default-green-solid-foreground);
1907
+ }
1908
+ .button:where(.button-fill-solid.button-priority-green):disabled,
1909
+ .button:where(.button-fill-solid.button-priority-green)[aria-disabled="true"] {
1910
+ background-color: var(
1911
+ --button-default-neutral-disabled-bg,
1912
+ var(--color-surface-standard)
1913
+ );
1914
+ border-color: var(
1915
+ --button-default-neutral-disabled-bg,
1916
+ var(--color-surface-standard)
1917
+ );
1918
+ color: var(
1919
+ --button-default-neutral-disabled-foreground,
1920
+ var(--color-label-disabled)
1921
+ );
1922
+ }
1923
+ .button:where(.button-fill-solid.button-priority-green):hover:not(
1924
+ :disabled
1925
+ ):not([aria-disabled="true"]),
1926
+ .button:where(
1927
+ .button-fill-solid.button-priority-green
1928
+ )[data-user-action="hover"]:not(:disabled):not([aria-disabled="true"]) {
1929
+ background-color: var(--button-default-green-solid-hover-bg);
1930
+ border-color: var(--button-default-green-solid-hover-bg);
1931
+ }
1932
+ .button:where(.button-fill-solid.button-priority-green):active:not(
1933
+ :disabled
1934
+ ):not([aria-disabled="true"]),
1935
+ .button:where(
1936
+ .button-fill-solid.button-priority-green
1937
+ )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
1938
+ background-color: var(--button-default-green-solid-active-bg);
1939
+ border-color: var(--button-default-green-solid-active-bg);
1940
+ }
1941
+ .button:where(.button-fill-outlined.button-priority-green) {
1942
+ background-color: transparent;
1943
+ color: var(--button-default-green-outline-foreground);
1944
+ border-color: var(--button-default-green-outline-border);
1945
+ }
1946
+ .button:where(.button-fill-outlined.button-priority-green):disabled,
1947
+ .button:where(
1948
+ .button-fill-outlined.button-priority-green
1949
+ )[aria-disabled="true"] {
1950
+ background-color: var(
1951
+ --button-default-neutral-disabled-bg,
1952
+ var(--color-surface-standard)
1953
+ );
1954
+ border-color: var(
1955
+ --button-default-neutral-disabled-bg,
1956
+ var(--color-surface-standard)
1957
+ );
1958
+ color: var(
1959
+ --button-default-neutral-disabled-foreground,
1960
+ var(--color-label-disabled)
1961
+ );
1962
+ }
1963
+ .button:where(.button-fill-outlined.button-priority-green):hover:not(
1964
+ :disabled
1965
+ ):not([aria-disabled="true"]),
1966
+ .button:where(
1967
+ .button-fill-outlined.button-priority-green
1968
+ )[data-user-action="hover"]:not(:disabled):not([aria-disabled="true"]) {
1969
+ background-color: var(--button-default-green-outline-hover-bg);
1970
+ border-color: var(--button-default-green-outline-border);
1971
+ }
1972
+ .button:where(.button-fill-outlined.button-priority-green):active:not(
1973
+ :disabled
1974
+ ):not([aria-disabled="true"]),
1975
+ .button:where(
1976
+ .button-fill-outlined.button-priority-green
1977
+ )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
1978
+ background-color: var(--button-default-green-outline-active-bg);
1979
+ border-color: var(--button-default-green-outline-border);
1980
+ }
1981
+ .button:where(.button-fill-solid.button-priority-yellow) {
1982
+ background-color: var(--button-default-yellow-solid-bg);
1983
+ border-color: var(--button-default-yellow-solid-bg);
1984
+ color: var(--button-default-yellow-solid-foreground);
1985
+ }
1986
+ .button:where(.button-fill-solid.button-priority-yellow):disabled,
1987
+ .button:where(.button-fill-solid.button-priority-yellow)[aria-disabled="true"] {
1988
+ background-color: var(
1989
+ --button-default-neutral-disabled-bg,
1990
+ var(--color-surface-standard)
1991
+ );
1992
+ border-color: var(
1993
+ --button-default-neutral-disabled-bg,
1994
+ var(--color-surface-standard)
1995
+ );
1996
+ color: var(
1997
+ --button-default-neutral-disabled-foreground,
1998
+ var(--color-label-disabled)
1999
+ );
2000
+ }
2001
+ .button:where(.button-fill-solid.button-priority-yellow):hover:not(
2002
+ :disabled
2003
+ ):not([aria-disabled="true"]),
2004
+ .button:where(
2005
+ .button-fill-solid.button-priority-yellow
2006
+ )[data-user-action="hover"]:not(:disabled):not([aria-disabled="true"]) {
2007
+ background-color: var(--button-default-yellow-solid-hover-bg);
2008
+ border-color: var(--button-default-yellow-solid-hover-bg);
2009
+ }
2010
+ .button:where(.button-fill-solid.button-priority-yellow):active:not(
2011
+ :disabled
2012
+ ):not([aria-disabled="true"]),
2013
+ .button:where(
2014
+ .button-fill-solid.button-priority-yellow
2015
+ )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
2016
+ background-color: var(--button-default-yellow-solid-active-bg);
2017
+ border-color: var(--button-default-yellow-solid-active-bg);
2018
+ }
2019
+ .button:where(.button-fill-outlined.button-priority-yellow) {
2020
+ background-color: transparent;
2021
+ color: var(--button-default-yellow-outline-foreground);
2022
+ border-color: var(--button-default-yellow-outline-border);
2023
+ }
2024
+ .button:where(.button-fill-outlined.button-priority-yellow):disabled,
2025
+ .button:where(
2026
+ .button-fill-outlined.button-priority-yellow
2027
+ )[aria-disabled="true"] {
2028
+ background-color: var(
2029
+ --button-default-neutral-disabled-bg,
2030
+ var(--color-surface-standard)
2031
+ );
2032
+ border-color: var(
2033
+ --button-default-neutral-disabled-bg,
2034
+ var(--color-surface-standard)
2035
+ );
2036
+ color: var(
2037
+ --button-default-neutral-disabled-foreground,
2038
+ var(--color-label-disabled)
2039
+ );
2040
+ }
2041
+ .button:where(.button-fill-outlined.button-priority-yellow):hover:not(
2042
+ :disabled
2043
+ ):not([aria-disabled="true"]),
2044
+ .button:where(
2045
+ .button-fill-outlined.button-priority-yellow
2046
+ )[data-user-action="hover"]:not(:disabled):not([aria-disabled="true"]) {
2047
+ background-color: var(--button-default-yellow-outline-hover-bg);
2048
+ border-color: var(--button-default-yellow-outline-border);
2049
+ }
2050
+ .button:where(.button-fill-outlined.button-priority-yellow):active:not(
2051
+ :disabled
2052
+ ):not([aria-disabled="true"]),
2053
+ .button:where(
2054
+ .button-fill-outlined.button-priority-yellow
2055
+ )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
2056
+ background-color: var(--button-default-yellow-outline-active-bg);
2057
+ border-color: var(--button-default-yellow-outline-border);
2058
+ }
2059
+ .button:where(.button-fill-solid.button-priority-orange) {
2060
+ background-color: var(--button-default-orange-solid-bg);
2061
+ border-color: var(--button-default-orange-solid-bg);
2062
+ color: var(--button-default-orange-solid-foreground);
2063
+ }
2064
+ .button:where(.button-fill-solid.button-priority-orange):disabled,
2065
+ .button:where(.button-fill-solid.button-priority-orange)[aria-disabled="true"] {
2066
+ background-color: var(
2067
+ --button-default-neutral-disabled-bg,
2068
+ var(--color-surface-standard)
2069
+ );
2070
+ border-color: var(
2071
+ --button-default-neutral-disabled-bg,
2072
+ var(--color-surface-standard)
2073
+ );
2074
+ color: var(
2075
+ --button-default-neutral-disabled-foreground,
2076
+ var(--color-label-disabled)
2077
+ );
2078
+ }
2079
+ .button:where(.button-fill-solid.button-priority-orange):hover:not(
2080
+ :disabled
2081
+ ):not([aria-disabled="true"]),
2082
+ .button:where(
2083
+ .button-fill-solid.button-priority-orange
2084
+ )[data-user-action="hover"]:not(:disabled):not([aria-disabled="true"]) {
2085
+ background-color: var(--button-default-orange-solid-hover-bg);
2086
+ border-color: var(--button-default-orange-solid-hover-bg);
2087
+ }
2088
+ .button:where(.button-fill-solid.button-priority-orange):active:not(
2089
+ :disabled
2090
+ ):not([aria-disabled="true"]),
2091
+ .button:where(
2092
+ .button-fill-solid.button-priority-orange
2093
+ )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
2094
+ background-color: var(--button-default-orange-solid-active-bg);
2095
+ border-color: var(--button-default-orange-solid-active-bg);
2096
+ }
2097
+ .button:where(.button-fill-outlined.button-priority-orange) {
2098
+ background-color: transparent;
2099
+ color: var(--button-default-orange-outline-foreground);
2100
+ border-color: var(--button-default-orange-outline-border);
2101
+ }
2102
+ .button:where(.button-fill-outlined.button-priority-orange):disabled,
2103
+ .button:where(
2104
+ .button-fill-outlined.button-priority-orange
2105
+ )[aria-disabled="true"] {
2106
+ background-color: var(
2107
+ --button-default-neutral-disabled-bg,
2108
+ var(--color-surface-standard)
2109
+ );
2110
+ border-color: var(
2111
+ --button-default-neutral-disabled-bg,
2112
+ var(--color-surface-standard)
2113
+ );
2114
+ color: var(
2115
+ --button-default-neutral-disabled-foreground,
2116
+ var(--color-label-disabled)
2117
+ );
2118
+ }
2119
+ .button:where(.button-fill-outlined.button-priority-orange):hover:not(
2120
+ :disabled
2121
+ ):not([aria-disabled="true"]),
2122
+ .button:where(
2123
+ .button-fill-outlined.button-priority-orange
2124
+ )[data-user-action="hover"]:not(:disabled):not([aria-disabled="true"]) {
2125
+ background-color: var(--button-default-orange-outline-hover-bg);
2126
+ border-color: var(--button-default-orange-outline-border);
2127
+ }
2128
+ .button:where(.button-fill-outlined.button-priority-orange):active:not(
2129
+ :disabled
2130
+ ):not([aria-disabled="true"]),
2131
+ .button:where(
2132
+ .button-fill-outlined.button-priority-orange
2133
+ )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
2134
+ background-color: var(--button-default-orange-outline-active-bg);
2135
+ border-color: var(--button-default-orange-outline-border);
2136
+ }
2137
+ .button:where(.button-fill-solid.button-priority-teal) {
2138
+ background-color: var(--button-default-teal-solid-bg);
2139
+ border-color: var(--button-default-teal-solid-bg);
2140
+ color: var(--button-default-teal-solid-foreground);
2141
+ }
2142
+ .button:where(.button-fill-solid.button-priority-teal):disabled,
2143
+ .button:where(.button-fill-solid.button-priority-teal)[aria-disabled="true"] {
2144
+ background-color: var(
2145
+ --button-default-neutral-disabled-bg,
2146
+ var(--color-surface-standard)
2147
+ );
2148
+ border-color: var(
2149
+ --button-default-neutral-disabled-bg,
2150
+ var(--color-surface-standard)
2151
+ );
2152
+ color: var(
2153
+ --button-default-neutral-disabled-foreground,
2154
+ var(--color-label-disabled)
2155
+ );
2156
+ }
2157
+ .button:where(.button-fill-solid.button-priority-teal):hover:not(:disabled):not(
2158
+ [aria-disabled="true"]
2159
+ ),
2160
+ .button:where(
2161
+ .button-fill-solid.button-priority-teal
2162
+ )[data-user-action="hover"]:not(:disabled):not([aria-disabled="true"]) {
2163
+ background-color: var(--button-default-teal-solid-hover-bg);
2164
+ border-color: var(--button-default-teal-solid-hover-bg);
2165
+ }
2166
+ .button:where(.button-fill-solid.button-priority-teal):active:not(
2167
+ :disabled
2168
+ ):not([aria-disabled="true"]),
2169
+ .button:where(
2170
+ .button-fill-solid.button-priority-teal
2171
+ )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
2172
+ background-color: var(--button-default-teal-solid-active-bg);
2173
+ border-color: var(--button-default-teal-solid-active-bg);
2174
+ }
2175
+ .button:where(.button-fill-outlined.button-priority-teal) {
2176
+ background-color: transparent;
2177
+ color: var(--button-default-teal-outline-foreground);
2178
+ border-color: var(--button-default-teal-outline-border);
2179
+ }
2180
+ .button:where(.button-fill-outlined.button-priority-teal):disabled,
2181
+ .button:where(
2182
+ .button-fill-outlined.button-priority-teal
2183
+ )[aria-disabled="true"] {
2184
+ background-color: var(
2185
+ --button-default-neutral-disabled-bg,
2186
+ var(--color-surface-standard)
2187
+ );
2188
+ border-color: var(
2189
+ --button-default-neutral-disabled-bg,
2190
+ var(--color-surface-standard)
2191
+ );
2192
+ color: var(
2193
+ --button-default-neutral-disabled-foreground,
2194
+ var(--color-label-disabled)
2195
+ );
2196
+ }
2197
+ .button:where(.button-fill-outlined.button-priority-teal):hover:not(
2198
+ :disabled
2199
+ ):not([aria-disabled="true"]),
2200
+ .button:where(
2201
+ .button-fill-outlined.button-priority-teal
2202
+ )[data-user-action="hover"]:not(:disabled):not([aria-disabled="true"]) {
2203
+ background-color: var(--button-default-teal-outline-hover-bg);
2204
+ border-color: var(--button-default-teal-outline-border);
2205
+ }
2206
+ .button:where(.button-fill-outlined.button-priority-teal):active:not(
2207
+ :disabled
2208
+ ):not([aria-disabled="true"]),
2209
+ .button:where(
2210
+ .button-fill-outlined.button-priority-teal
2211
+ )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
2212
+ background-color: var(--button-default-teal-outline-active-bg);
2213
+ border-color: var(--button-default-teal-outline-border);
2214
+ }
2215
+ .button:where(.button-fill-solid.button-priority-pink) {
2216
+ background-color: var(--button-default-pink-solid-bg);
2217
+ border-color: var(--button-default-pink-solid-bg);
2218
+ color: var(--button-default-pink-solid-foreground);
2219
+ }
2220
+ .button:where(.button-fill-solid.button-priority-pink):disabled,
2221
+ .button:where(.button-fill-solid.button-priority-pink)[aria-disabled="true"] {
2222
+ background-color: var(
2223
+ --button-default-neutral-disabled-bg,
2224
+ var(--color-surface-standard)
2225
+ );
2226
+ border-color: var(
2227
+ --button-default-neutral-disabled-bg,
2228
+ var(--color-surface-standard)
2229
+ );
2230
+ color: var(
2231
+ --button-default-neutral-disabled-foreground,
2232
+ var(--color-label-disabled)
2233
+ );
2234
+ }
2235
+ .button:where(.button-fill-solid.button-priority-pink):hover:not(:disabled):not(
2236
+ [aria-disabled="true"]
2237
+ ),
2238
+ .button:where(
2239
+ .button-fill-solid.button-priority-pink
2240
+ )[data-user-action="hover"]:not(:disabled):not([aria-disabled="true"]) {
2241
+ background-color: var(--button-default-pink-solid-hover-bg);
2242
+ border-color: var(--button-default-pink-solid-hover-bg);
2243
+ }
2244
+ .button:where(.button-fill-solid.button-priority-pink):active:not(
2245
+ :disabled
2246
+ ):not([aria-disabled="true"]),
2247
+ .button:where(
2248
+ .button-fill-solid.button-priority-pink
2249
+ )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
2250
+ background-color: var(--button-default-pink-solid-active-bg);
2251
+ border-color: var(--button-default-pink-solid-active-bg);
2252
+ }
2253
+ .button:where(.button-fill-outlined.button-priority-pink) {
2254
+ background-color: transparent;
2255
+ color: var(--button-default-pink-outline-foreground);
2256
+ border-color: var(--button-default-pink-outline-border);
2257
+ }
2258
+ .button:where(.button-fill-outlined.button-priority-pink):disabled,
2259
+ .button:where(
2260
+ .button-fill-outlined.button-priority-pink
2261
+ )[aria-disabled="true"] {
2262
+ background-color: var(
2263
+ --button-default-neutral-disabled-bg,
2264
+ var(--color-surface-standard)
2265
+ );
2266
+ border-color: var(
2267
+ --button-default-neutral-disabled-bg,
2268
+ var(--color-surface-standard)
2269
+ );
2270
+ color: var(
2271
+ --button-default-neutral-disabled-foreground,
2272
+ var(--color-label-disabled)
2273
+ );
2274
+ }
2275
+ .button:where(.button-fill-outlined.button-priority-pink):hover:not(
2276
+ :disabled
2277
+ ):not([aria-disabled="true"]),
2278
+ .button:where(
2279
+ .button-fill-outlined.button-priority-pink
2280
+ )[data-user-action="hover"]:not(:disabled):not([aria-disabled="true"]) {
2281
+ background-color: var(--button-default-pink-outline-hover-bg);
2282
+ border-color: var(--button-default-pink-outline-border);
2283
+ }
2284
+ .button:where(.button-fill-outlined.button-priority-pink):active:not(
2285
+ :disabled
2286
+ ):not([aria-disabled="true"]),
2287
+ .button:where(
2288
+ .button-fill-outlined.button-priority-pink
2289
+ )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
2290
+ background-color: var(--button-default-pink-outline-active-bg);
2291
+ border-color: var(--button-default-pink-outline-border);
2292
+ }
2293
+ .button:where(.button-fill-solid.button-priority-red) {
2294
+ background-color: var(--button-default-red-solid-bg);
2295
+ border-color: var(--button-default-red-solid-bg);
2296
+ color: var(--button-default-red-solid-foreground);
2297
+ }
2298
+ .button:where(.button-fill-solid.button-priority-red):disabled,
2299
+ .button:where(.button-fill-solid.button-priority-red)[aria-disabled="true"] {
2300
+ background-color: var(
2301
+ --button-default-neutral-disabled-bg,
2302
+ var(--color-surface-standard)
2303
+ );
2304
+ border-color: var(
2305
+ --button-default-neutral-disabled-bg,
2306
+ var(--color-surface-standard)
2307
+ );
2308
+ color: var(
2309
+ --button-default-neutral-disabled-foreground,
2310
+ var(--color-label-disabled)
2311
+ );
2312
+ }
2313
+ .button:where(.button-fill-solid.button-priority-red):hover:not(:disabled):not(
2314
+ [aria-disabled="true"]
2315
+ ),
2316
+ .button:where(
2317
+ .button-fill-solid.button-priority-red
2318
+ )[data-user-action="hover"]:not(:disabled):not([aria-disabled="true"]) {
2319
+ background-color: var(--button-default-red-solid-hover-bg);
2320
+ border-color: var(--button-default-red-solid-hover-bg);
2321
+ }
2322
+ .button:where(.button-fill-solid.button-priority-red):active:not(:disabled):not(
2323
+ [aria-disabled="true"]
2324
+ ),
2325
+ .button:where(
2326
+ .button-fill-solid.button-priority-red
2327
+ )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
2328
+ background-color: var(--button-default-red-solid-active-bg);
2329
+ border-color: var(--button-default-red-solid-active-bg);
2330
+ }
2331
+ .button:where(.button-fill-outlined.button-priority-red) {
2332
+ background-color: transparent;
2333
+ color: var(--button-default-red-outline-foreground);
2334
+ border-color: var(--button-default-red-outline-border);
2335
+ }
2336
+ .button:where(.button-fill-outlined.button-priority-red):disabled,
2337
+ .button:where(.button-fill-outlined.button-priority-red)[aria-disabled="true"] {
2338
+ background-color: var(
2339
+ --button-default-neutral-disabled-bg,
2340
+ var(--color-surface-standard)
2341
+ );
2342
+ border-color: var(
2343
+ --button-default-neutral-disabled-bg,
2344
+ var(--color-surface-standard)
2345
+ );
2346
+ color: var(
2347
+ --button-default-neutral-disabled-foreground,
2348
+ var(--color-label-disabled)
2349
+ );
2350
+ }
2351
+ .button:where(.button-fill-outlined.button-priority-red):hover:not(
2352
+ :disabled
2353
+ ):not([aria-disabled="true"]),
2354
+ .button:where(
2355
+ .button-fill-outlined.button-priority-red
2356
+ )[data-user-action="hover"]:not(:disabled):not([aria-disabled="true"]) {
2357
+ background-color: var(--button-default-red-outline-hover-bg);
2358
+ border-color: var(--button-default-red-outline-border);
2359
+ }
2360
+ .button:where(.button-fill-outlined.button-priority-red):active:not(
2361
+ :disabled
2362
+ ):not([aria-disabled="true"]),
2363
+ .button:where(
2364
+ .button-fill-outlined.button-priority-red
2365
+ )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
2366
+ background-color: var(--button-default-red-outline-active-bg);
2367
+ border-color: var(--button-default-red-outline-border);
2368
+ }
2369
+ .button:where(.button-fill-solid.button-priority-darkGray) {
2370
+ background-color: var(--button-default-dark-gray-solid-bg);
2371
+ border-color: var(--button-default-dark-gray-solid-bg);
2372
+ color: var(--button-default-dark-gray-solid-foreground);
2373
+ }
2374
+ .button:where(.button-fill-solid.button-priority-darkGray):disabled,
2375
+ .button:where(
2376
+ .button-fill-solid.button-priority-darkGray
2377
+ )[aria-disabled="true"] {
2378
+ background-color: var(
2379
+ --button-default-neutral-disabled-bg,
2380
+ var(--color-surface-standard)
2381
+ );
2382
+ border-color: var(
2383
+ --button-default-neutral-disabled-bg,
2384
+ var(--color-surface-standard)
2385
+ );
2386
+ color: var(
2387
+ --button-default-neutral-disabled-foreground,
2388
+ var(--color-label-disabled)
2389
+ );
2390
+ }
2391
+ .button:where(.button-fill-solid.button-priority-darkGray):hover:not(
2392
+ :disabled
2393
+ ):not([aria-disabled="true"]),
2394
+ .button:where(
2395
+ .button-fill-solid.button-priority-darkGray
2396
+ )[data-user-action="hover"]:not(:disabled):not([aria-disabled="true"]) {
2397
+ background-color: var(--button-default-dark-gray-solid-hover-bg);
2398
+ border-color: var(--button-default-dark-gray-solid-hover-bg);
2399
+ }
2400
+ .button:where(.button-fill-solid.button-priority-darkGray):active:not(
2401
+ :disabled
2402
+ ):not([aria-disabled="true"]),
2403
+ .button:where(
2404
+ .button-fill-solid.button-priority-darkGray
2405
+ )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
2406
+ background-color: var(--button-default-dark-gray-solid-active-bg);
2407
+ border-color: var(--button-default-dark-gray-solid-active-bg);
2408
+ }
2409
+ .button:where(.button-fill-outlined.button-priority-darkGray) {
2410
+ background-color: transparent;
2411
+ color: var(--button-default-dark-gray-outline-foreground);
2412
+ border-color: var(--button-default-dark-gray-outline-border);
2413
+ }
2414
+ .button:where(.button-fill-outlined.button-priority-darkGray):disabled,
2415
+ .button:where(
2416
+ .button-fill-outlined.button-priority-darkGray
2417
+ )[aria-disabled="true"] {
2418
+ background-color: var(
2419
+ --button-default-neutral-disabled-bg,
2420
+ var(--color-surface-standard)
2421
+ );
2422
+ border-color: var(
2423
+ --button-default-neutral-disabled-bg,
2424
+ var(--color-surface-standard)
2425
+ );
2426
+ color: var(
2427
+ --button-default-neutral-disabled-foreground,
2428
+ var(--color-label-disabled)
2429
+ );
2430
+ }
2431
+ .button:where(.button-fill-outlined.button-priority-darkGray):hover:not(
2432
+ :disabled
2433
+ ):not([aria-disabled="true"]),
2434
+ .button:where(
2435
+ .button-fill-outlined.button-priority-darkGray
2436
+ )[data-user-action="hover"]:not(:disabled):not([aria-disabled="true"]) {
2437
+ background-color: var(--button-default-dark-gray-outline-hover-bg);
2438
+ border-color: var(--button-default-dark-gray-outline-border);
2439
+ }
2440
+ .button:where(.button-fill-outlined.button-priority-darkGray):active:not(
2441
+ :disabled
2442
+ ):not([aria-disabled="true"]),
2443
+ .button:where(
2444
+ .button-fill-outlined.button-priority-darkGray
2445
+ )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
2446
+ background-color: var(--button-default-dark-gray-outline-active-bg);
2447
+ border-color: var(--button-default-dark-gray-outline-border);
2448
+ }
2449
+ .button:where(.button-fill-solid.button-priority-lightGray) {
2450
+ background-color: var(--button-default-light-gray-solid-bg);
2451
+ border-color: var(--button-default-light-gray-solid-bg);
2452
+ color: var(--button-default-light-gray-solid-foreground);
2453
+ }
2454
+ .button:where(.button-fill-solid.button-priority-lightGray):disabled,
2455
+ .button:where(
2456
+ .button-fill-solid.button-priority-lightGray
2457
+ )[aria-disabled="true"] {
2458
+ background-color: var(
2459
+ --button-default-neutral-disabled-bg,
2460
+ var(--color-surface-standard)
2461
+ );
2462
+ border-color: var(
2463
+ --button-default-neutral-disabled-bg,
2464
+ var(--color-surface-standard)
2465
+ );
2466
+ color: var(
2467
+ --button-default-neutral-disabled-foreground,
2468
+ var(--color-label-disabled)
2469
+ );
2470
+ }
2471
+ .button:where(.button-fill-solid.button-priority-lightGray):hover:not(
2472
+ :disabled
2473
+ ):not([aria-disabled="true"]),
2474
+ .button:where(
2475
+ .button-fill-solid.button-priority-lightGray
2476
+ )[data-user-action="hover"]:not(:disabled):not([aria-disabled="true"]) {
2477
+ background-color: var(--button-default-light-gray-solid-hover-bg);
2478
+ border-color: var(--button-default-light-gray-solid-hover-bg);
2479
+ }
2480
+ .button:where(.button-fill-solid.button-priority-lightGray):active:not(
2481
+ :disabled
2482
+ ):not([aria-disabled="true"]),
2483
+ .button:where(
2484
+ .button-fill-solid.button-priority-lightGray
2485
+ )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
2486
+ background-color: var(--button-default-light-gray-solid-active-bg);
2487
+ border-color: var(--button-default-light-gray-solid-active-bg);
2488
+ }
2489
+ .button:where(.button-fill-outlined.button-priority-lightGray) {
2490
+ background-color: transparent;
2491
+ color: var(--button-default-light-gray-outline-foreground);
2492
+ border-color: var(--button-default-light-gray-outline-border);
2493
+ }
2494
+ .button:where(.button-fill-outlined.button-priority-lightGray):disabled,
2495
+ .button:where(
2496
+ .button-fill-outlined.button-priority-lightGray
2497
+ )[aria-disabled="true"] {
2498
+ background-color: var(
2499
+ --button-default-neutral-disabled-bg,
2500
+ var(--color-surface-standard)
2501
+ );
2502
+ border-color: var(
2503
+ --button-default-neutral-disabled-bg,
2504
+ var(--color-surface-standard)
2505
+ );
2506
+ color: var(
2507
+ --button-default-neutral-disabled-foreground,
2508
+ var(--color-label-disabled)
2509
+ );
2510
+ }
2511
+ .button:where(.button-fill-outlined.button-priority-lightGray):hover:not(
2512
+ :disabled
2513
+ ):not([aria-disabled="true"]),
2514
+ .button:where(
2515
+ .button-fill-outlined.button-priority-lightGray
2516
+ )[data-user-action="hover"]:not(:disabled):not([aria-disabled="true"]) {
2517
+ background-color: var(--button-default-light-gray-outline-hover-bg);
2518
+ border-color: var(--button-default-light-gray-outline-border);
2519
+ }
2520
+ .button:where(.button-fill-outlined.button-priority-lightGray):active:not(
2521
+ :disabled
2522
+ ):not([aria-disabled="true"]),
2523
+ .button:where(
2524
+ .button-fill-outlined.button-priority-lightGray
2525
+ )[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
2526
+ background-color: var(--button-default-light-gray-outline-active-bg);
2527
+ border-color: var(--button-default-light-gray-outline-border);
2528
+ }
1847
2529
  .button:where(.button-size-small) {
1848
2530
  padding-inline: var(
1849
2531
  --button-default-padding-inline-small,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniai-fe/uds-primitives",
3
- "version": "0.10.4",
3
+ "version": "0.11.0",
4
4
  "description": "UNIAI Design System; Primitives Components Package",
5
5
  "type": "module",
6
6
  "private": false,
@@ -87,10 +87,10 @@
87
87
  "react-hook-form": "^7.82.0",
88
88
  "sass": "^1.101.3",
89
89
  "typescript": "6.0.3",
90
+ "@uniai-fe/next-devkit": "0.4.0",
90
91
  "@uniai-fe/eslint-config": "0.4.2",
91
92
  "@uniai-fe/tsconfig": "0.2.0",
92
93
  "@uniai-fe/util-functions": "0.4.3",
93
- "@uniai-fe/next-devkit": "0.4.0",
94
94
  "@uniai-fe/uds-foundation": "0.5.0"
95
95
  },
96
96
  "scripts": {
@@ -19,7 +19,7 @@ import {
19
19
  * @param {"solid-xlarge" | "solid-large" | "solid-medium" | "solid-small" | "outlined-xlarge" | "outlined-large" | "outlined-medium" | "outlined-small"} [props.scale] legacy fill/size fallback 식별자.
20
20
  * @param {"solid" | "outlined"} props.fill 채움 스타일.
21
21
  * @param {"xlarge" | "large" | "medium" | "small" | "table"} props.size 버튼 크기. `table`은 Table 셀 액션용 compact 규격이다.
22
- * @param {"primary" | "secondary" | "tertiary"} props.priority semantic color priority.
22
+ * @param {"primary" | "secondary" | "tertiary" | "green" | "yellow" | "orange" | "teal" | "pink" | "red" | "darkGray" | "lightGray"} props.priority semantic color priority.
23
23
  * @param {"default" | "readonly" | "disabled"} [props.state="default"] 내부 상태. `disabled`/`loading`과 병합된다.
24
24
  * @param {boolean} [props.block=false] true면 폭을 100%로 확장한다.
25
25
  * @param {"full" | "fit" | "fill" | "auto" | number | string} [props.width] Form.Field width preset 또는 custom width.
@@ -36,6 +36,7 @@ $button-priorities: (
36
36
  --button-default-primary-outline-hover-foreground,
37
37
  var(--color-common-100)
38
38
  ),
39
+ outline-active-bg: var(--button-default-primary-solid-bg),
39
40
  ),
40
41
  secondary: (
41
42
  solid-bg: var(
@@ -64,6 +65,7 @@ $button-priorities: (
64
65
  --button-default-secondary-outline-hover-foreground,
65
66
  var(--color-primary-heavy)
66
67
  ),
68
+ outline-active-bg: var(--button-default-secondary-solid-bg),
67
69
  ),
68
70
  tertiary: (
69
71
  solid-bg: var(
@@ -98,6 +100,87 @@ $button-priorities: (
98
100
  --button-default-tertiary-outline-hover-foreground,
99
101
  var(--color-neutral-20)
100
102
  ),
103
+ outline-active-bg: var(--button-default-tertiary-solid-bg),
104
+ ),
105
+ "green": (
106
+ solid-bg: var(--button-default-green-solid-bg),
107
+ solid-hover: var(--button-default-green-solid-hover-bg),
108
+ solid-active: var(--button-default-green-solid-active-bg),
109
+ solid-foreground: var(--button-default-green-solid-foreground),
110
+ outline-border: var(--button-default-green-outline-border),
111
+ outline-foreground: var(--button-default-green-outline-foreground),
112
+ outline-hover-bg: var(--button-default-green-outline-hover-bg),
113
+ outline-active-bg: var(--button-default-green-outline-active-bg),
114
+ ),
115
+ "yellow": (
116
+ solid-bg: var(--button-default-yellow-solid-bg),
117
+ solid-hover: var(--button-default-yellow-solid-hover-bg),
118
+ solid-active: var(--button-default-yellow-solid-active-bg),
119
+ solid-foreground: var(--button-default-yellow-solid-foreground),
120
+ outline-border: var(--button-default-yellow-outline-border),
121
+ outline-foreground: var(--button-default-yellow-outline-foreground),
122
+ outline-hover-bg: var(--button-default-yellow-outline-hover-bg),
123
+ outline-active-bg: var(--button-default-yellow-outline-active-bg),
124
+ ),
125
+ "orange": (
126
+ solid-bg: var(--button-default-orange-solid-bg),
127
+ solid-hover: var(--button-default-orange-solid-hover-bg),
128
+ solid-active: var(--button-default-orange-solid-active-bg),
129
+ solid-foreground: var(--button-default-orange-solid-foreground),
130
+ outline-border: var(--button-default-orange-outline-border),
131
+ outline-foreground: var(--button-default-orange-outline-foreground),
132
+ outline-hover-bg: var(--button-default-orange-outline-hover-bg),
133
+ outline-active-bg: var(--button-default-orange-outline-active-bg),
134
+ ),
135
+ "teal": (
136
+ solid-bg: var(--button-default-teal-solid-bg),
137
+ solid-hover: var(--button-default-teal-solid-hover-bg),
138
+ solid-active: var(--button-default-teal-solid-active-bg),
139
+ solid-foreground: var(--button-default-teal-solid-foreground),
140
+ outline-border: var(--button-default-teal-outline-border),
141
+ outline-foreground: var(--button-default-teal-outline-foreground),
142
+ outline-hover-bg: var(--button-default-teal-outline-hover-bg),
143
+ outline-active-bg: var(--button-default-teal-outline-active-bg),
144
+ ),
145
+ "pink": (
146
+ solid-bg: var(--button-default-pink-solid-bg),
147
+ solid-hover: var(--button-default-pink-solid-hover-bg),
148
+ solid-active: var(--button-default-pink-solid-active-bg),
149
+ solid-foreground: var(--button-default-pink-solid-foreground),
150
+ outline-border: var(--button-default-pink-outline-border),
151
+ outline-foreground: var(--button-default-pink-outline-foreground),
152
+ outline-hover-bg: var(--button-default-pink-outline-hover-bg),
153
+ outline-active-bg: var(--button-default-pink-outline-active-bg),
154
+ ),
155
+ "red": (
156
+ solid-bg: var(--button-default-red-solid-bg),
157
+ solid-hover: var(--button-default-red-solid-hover-bg),
158
+ solid-active: var(--button-default-red-solid-active-bg),
159
+ solid-foreground: var(--button-default-red-solid-foreground),
160
+ outline-border: var(--button-default-red-outline-border),
161
+ outline-foreground: var(--button-default-red-outline-foreground),
162
+ outline-hover-bg: var(--button-default-red-outline-hover-bg),
163
+ outline-active-bg: var(--button-default-red-outline-active-bg),
164
+ ),
165
+ "darkGray": (
166
+ solid-bg: var(--button-default-dark-gray-solid-bg),
167
+ solid-hover: var(--button-default-dark-gray-solid-hover-bg),
168
+ solid-active: var(--button-default-dark-gray-solid-active-bg),
169
+ solid-foreground: var(--button-default-dark-gray-solid-foreground),
170
+ outline-border: var(--button-default-dark-gray-outline-border),
171
+ outline-foreground: var(--button-default-dark-gray-outline-foreground),
172
+ outline-hover-bg: var(--button-default-dark-gray-outline-hover-bg),
173
+ outline-active-bg: var(--button-default-dark-gray-outline-active-bg),
174
+ ),
175
+ "lightGray": (
176
+ solid-bg: var(--button-default-light-gray-solid-bg),
177
+ solid-hover: var(--button-default-light-gray-solid-hover-bg),
178
+ solid-active: var(--button-default-light-gray-solid-active-bg),
179
+ solid-foreground: var(--button-default-light-gray-solid-foreground),
180
+ outline-border: var(--button-default-light-gray-outline-border),
181
+ outline-foreground: var(--button-default-light-gray-outline-foreground),
182
+ outline-hover-bg: var(--button-default-light-gray-outline-hover-bg),
183
+ outline-active-bg: var(--button-default-light-gray-outline-active-bg),
101
184
  ),
102
185
  );
103
186
 
@@ -327,7 +410,7 @@ $button-priorities: (
327
410
 
328
411
  &:active:not(:disabled):not([aria-disabled="true"]),
329
412
  &[data-user-action="pressed"]:not(:disabled):not([aria-disabled="true"]) {
330
- background-color: priority-token($priority, solid-bg);
413
+ background-color: priority-token($priority, outline-active-bg);
331
414
  border-color: priority-token($priority, outline-border);
332
415
  }
333
416
  }
@@ -141,6 +141,79 @@
141
141
  --button-default-tertiary-overlay-outlined-bg: var(--color-cool-gray-95);
142
142
  --button-default-tertiary-overlay-solid-bg: var(--color-surface-strong);
143
143
 
144
+ /* FE-274: Badge 팔레트를 초기값으로 사용하며 서비스에서 priority별로 교정할 수 있다. */
145
+ --button-default-green-solid-bg: var(--color-green-95);
146
+ --button-default-green-solid-hover-bg: var(--color-green-90);
147
+ --button-default-green-solid-active-bg: var(--color-green-80);
148
+ --button-default-green-solid-foreground: var(--color-green-45);
149
+ --button-default-green-outline-border: var(--color-green-45);
150
+ --button-default-green-outline-foreground: var(--color-green-45);
151
+ --button-default-green-outline-hover-bg: var(--color-green-95);
152
+ --button-default-green-outline-active-bg: var(--color-green-90);
153
+
154
+ --button-default-yellow-solid-bg: var(--color-yellow-95);
155
+ --button-default-yellow-solid-hover-bg: var(--color-yellow-90);
156
+ --button-default-yellow-solid-active-bg: var(--color-yellow-80);
157
+ --button-default-yellow-solid-foreground: var(--color-yellow-45);
158
+ --button-default-yellow-outline-border: var(--color-yellow-60);
159
+ --button-default-yellow-outline-foreground: var(--color-yellow-45);
160
+ --button-default-yellow-outline-hover-bg: var(--color-yellow-95);
161
+ --button-default-yellow-outline-active-bg: var(--color-yellow-90);
162
+
163
+ --button-default-orange-solid-bg: var(--color-orange-95);
164
+ --button-default-orange-solid-hover-bg: var(--color-orange-90);
165
+ --button-default-orange-solid-active-bg: var(--color-orange-80);
166
+ --button-default-orange-solid-foreground: var(--color-orange-55);
167
+ --button-default-orange-outline-border: var(--color-orange-70);
168
+ --button-default-orange-outline-foreground: var(--color-orange-55);
169
+ --button-default-orange-outline-hover-bg: var(--color-orange-95);
170
+ --button-default-orange-outline-active-bg: var(--color-orange-90);
171
+
172
+ --button-default-teal-solid-bg: var(--color-teal-95);
173
+ --button-default-teal-solid-hover-bg: var(--color-teal-90);
174
+ --button-default-teal-solid-active-bg: var(--color-teal-80);
175
+ --button-default-teal-solid-foreground: var(--color-teal-45);
176
+ --button-default-teal-outline-border: var(--color-teal-45);
177
+ --button-default-teal-outline-foreground: var(--color-teal-45);
178
+ --button-default-teal-outline-hover-bg: var(--color-teal-95);
179
+ --button-default-teal-outline-active-bg: var(--color-teal-90);
180
+
181
+ --button-default-pink-solid-bg: var(--color-pink-95);
182
+ --button-default-pink-solid-hover-bg: var(--color-pink-90);
183
+ --button-default-pink-solid-active-bg: var(--color-pink-80);
184
+ --button-default-pink-solid-foreground: var(--color-pink-55);
185
+ --button-default-pink-outline-border: var(--color-pink-70);
186
+ --button-default-pink-outline-foreground: var(--color-pink-55);
187
+ --button-default-pink-outline-hover-bg: var(--color-pink-95);
188
+ --button-default-pink-outline-active-bg: var(--color-pink-90);
189
+
190
+ --button-default-red-solid-bg: var(--color-red-95);
191
+ --button-default-red-solid-hover-bg: var(--color-red-90);
192
+ --button-default-red-solid-active-bg: var(--color-red-80);
193
+ --button-default-red-solid-foreground: var(--color-red-55);
194
+ --button-default-red-outline-border: var(--color-red-70);
195
+ --button-default-red-outline-foreground: var(--color-red-55);
196
+ --button-default-red-outline-hover-bg: var(--color-red-95);
197
+ --button-default-red-outline-active-bg: var(--color-red-90);
198
+
199
+ --button-default-dark-gray-solid-bg: var(--color-cool-gray-20);
200
+ --button-default-dark-gray-solid-hover-bg: var(--color-cool-gray-10);
201
+ --button-default-dark-gray-solid-active-bg: var(--color-cool-gray-10);
202
+ --button-default-dark-gray-solid-foreground: var(--color-common-100);
203
+ --button-default-dark-gray-outline-border: var(--color-cool-gray-20);
204
+ --button-default-dark-gray-outline-foreground: var(--color-cool-gray-20);
205
+ --button-default-dark-gray-outline-hover-bg: var(--color-cool-gray-95);
206
+ --button-default-dark-gray-outline-active-bg: var(--color-cool-gray-90);
207
+
208
+ --button-default-light-gray-solid-bg: var(--color-cool-gray-95);
209
+ --button-default-light-gray-solid-hover-bg: var(--color-cool-gray-90);
210
+ --button-default-light-gray-solid-active-bg: var(--color-cool-gray-80);
211
+ --button-default-light-gray-solid-foreground: var(--color-cool-gray-20);
212
+ --button-default-light-gray-outline-border: var(--color-cool-gray-80);
213
+ --button-default-light-gray-outline-foreground: var(--color-cool-gray-20);
214
+ --button-default-light-gray-outline-hover-bg: var(--color-cool-gray-99);
215
+ --button-default-light-gray-outline-active-bg: var(--color-cool-gray-95);
216
+
144
217
  /* text button colors */
145
218
  --button-text-secondary-foreground: var(--color-primary-default);
146
219
  --button-text-secondary-hover-bg: var(
@@ -51,6 +51,14 @@ export const BUTTON_PRIORITIES: ButtonPriority[] = [
51
51
  "primary",
52
52
  "secondary",
53
53
  "tertiary",
54
+ "green",
55
+ "yellow",
56
+ "orange",
57
+ "teal",
58
+ "pink",
59
+ "red",
60
+ "darkGray",
61
+ "lightGray",
54
62
  ] as const;
55
63
 
56
64
  /**
@@ -3,13 +3,25 @@ import type { FormFieldWidth } from "../../form/types";
3
3
 
4
4
  /**
5
5
  * Button; priority 옵션
6
- * @typedef {"primary" | "secondary" | "tertiary"} ButtonPriority
6
+ * @typedef {"primary" | "secondary" | "tertiary" | "green" | "yellow" | "orange" | "teal" | "pink" | "red" | "darkGray" | "lightGray"} ButtonPriority
7
7
  * @desc
8
8
  * - primary: 브랜드 컬러를 사용하는 기본 버튼.
9
9
  * - secondary: 보조 강조 색상.
10
10
  * - tertiary: 중립/회색 계열 보조 버튼.
11
+ * - green~lightGray: Button.Default에서 사용하는 고정 컬러 preset.
11
12
  */
12
- export type ButtonPriority = "primary" | "secondary" | "tertiary";
13
+ export type ButtonPriority =
14
+ | "primary"
15
+ | "secondary"
16
+ | "tertiary"
17
+ | "green"
18
+ | "yellow"
19
+ | "orange"
20
+ | "teal"
21
+ | "pink"
22
+ | "red"
23
+ | "darkGray"
24
+ | "lightGray";
13
25
 
14
26
  /**
15
27
  * Button; fill 옵션
@@ -99,7 +111,7 @@ type SharedElementProps = Omit<NativeButtonProps, "children"> &
99
111
  * @property {"solid-xlarge" | "solid-large" | "solid-medium" | "solid-small" | "outlined-xlarge" | "outlined-large" | "outlined-medium" | "outlined-small"} [scale] 레이아웃/spacing 집합. 추후 fill/size 조합으로 대체 예정이다.
100
112
  * @property {"solid" | "outlined"} fill 채움 스타일. scale 조합보다 우선한다.
101
113
  * @property {"xlarge" | "large" | "medium" | "small" | "table"} size 높이/타이포 스케일. scale 조합보다 우선한다.
102
- * @property {"primary" | "secondary" | "tertiary"} priority semantic color priority.
114
+ * @property {"primary" | "secondary" | "tertiary" | "green" | "yellow" | "orange" | "teal" | "pink" | "red" | "darkGray" | "lightGray"} priority semantic color priority.
103
115
  * @property {"default" | "readonly" | "disabled"} [state] UI 상태. disabled prop과 조합된다.
104
116
  * @property {boolean} [block] width:100% 확장 여부.
105
117
  * @property {FormFieldWidth} [width] width preset. block보다 우선 적용된다.
@@ -128,7 +140,8 @@ export interface ButtonProps extends SharedElementProps {
128
140
  scale?: ButtonScale;
129
141
  /**
130
142
  * @required
131
- * "primary" | "secondary" | "tertiary"
143
+ * "primary" | "secondary" | "tertiary" | "green" | "yellow" | "orange" |
144
+ * "teal" | "pink" | "red" | "darkGray" | "lightGray"
132
145
  */
133
146
  priority: ButtonPriority;
134
147
  /**
@@ -196,7 +209,7 @@ export type TextButtonSize = "small" | "medium" | "large";
196
209
  * - `secondary`
197
210
  * - `tertiary`
198
211
  */
199
- export type TextButtonPriority = Exclude<ButtonPriority, "primary">;
212
+ export type TextButtonPriority = "secondary" | "tertiary";
200
213
 
201
214
  /**
202
215
  * Button Types; Text preset props
@@ -238,6 +251,12 @@ export interface TextButtonProps extends Omit<
238
251
  */
239
252
  export type RoundButtonSize = "small" | "medium" | "large";
240
253
 
254
+ /**
255
+ * Button Types; Rounded preset priority 옵션
256
+ * @typedef {"primary" | "secondary" | "tertiary"} RoundButtonPriority
257
+ */
258
+ export type RoundButtonPriority = "primary" | "secondary" | "tertiary";
259
+
241
260
  /**
242
261
  * Button Types; Rounded preset props
243
262
  * @property {ElementType} [as] 렌더링할 요소. 기본값은 button.
@@ -253,8 +272,13 @@ export type RoundButtonSize = "small" | "medium" | "large";
253
272
  */
254
273
  export interface RoundButtonProps extends Omit<
255
274
  ButtonProps,
256
- "scale" | "size" | "fill"
275
+ "scale" | "priority" | "size" | "fill"
257
276
  > {
277
+ /**
278
+ * 라운드 버튼 전용 priority 축.
279
+ * "primary" | "secondary" | "tertiary"
280
+ */
281
+ priority: RoundButtonPriority;
258
282
  /**
259
283
  * 라운드 버튼 전용 size 축.
260
284
  * "small" | "medium" | "large"
@@ -12,7 +12,7 @@ import { useAddress } from "../../hooks/useAddress";
12
12
  * @param {AddressFindButtonProps} props 버튼 props
13
13
  * @param {React.ReactNode} [props.label] 버튼 라벨 텍스트
14
14
  * @param {string} [props.className] 커스텀 className
15
- * @param {"primary"|"secondary"|"tertiary"} [props.priority="secondary"] 버튼 priority
15
+ * @param {"primary"|"secondary"|"tertiary"|"green"|"yellow"|"orange"|"teal"|"pink"|"red"|"darkGray"|"lightGray"} [props.priority="secondary"] 버튼 priority
16
16
  * @param {"solid"|"outlined"} [props.fill="solid"] 버튼 fill 타입
17
17
  * @param {"xlarge"|"large"|"medium"|"small"} [props.size="xlarge"] 버튼 size
18
18
  * @param {"button"|"submit"|"reset"} [props.type="button"] native type