@uniai-fe/uds-primitives 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +64 -5
  2. package/dist/styles.css +236 -279
  3. package/package.json +4 -4
  4. package/src/components/badge/markup/Badge.tsx +10 -0
  5. package/src/components/badge/styles/index.scss +2 -2
  6. package/src/components/badge/types/index.ts +1 -1
  7. package/src/components/button/index.scss +3 -1
  8. package/src/components/button/index.tsx +9 -1
  9. package/src/components/button/markup/ButtonDefault.tsx +162 -0
  10. package/src/components/button/markup/ButtonRounded.tsx +48 -0
  11. package/src/components/button/markup/ButtonText.tsx +49 -0
  12. package/src/components/button/markup/index.ts +3 -0
  13. package/src/components/button/styles/{index.scss → button.scss} +148 -362
  14. package/src/components/button/styles/round-button.scss +56 -0
  15. package/src/components/button/styles/text-button.scss +96 -0
  16. package/src/components/button/types/index.ts +110 -35
  17. package/src/components/button/types/templates.ts +33 -0
  18. package/src/components/button/utils/index.ts +19 -19
  19. package/src/components/checkbox/markup/Checkbox.tsx +20 -2
  20. package/src/components/checkbox/types/checkbox.ts +16 -0
  21. package/src/components/chip/markup/Chip.tsx +8 -0
  22. package/src/components/dialog/markup/{confirm-dialog.tsx → ConfirmDialog.tsx} +23 -0
  23. package/src/components/dialog/markup/{notice-dialog.tsx → NoticeDialog.tsx} +18 -0
  24. package/src/components/dialog/markup/index.tsx +2 -2
  25. package/src/components/dialog/types/index.ts +43 -0
  26. package/src/components/drawer/markup/{drawer.tsx → Drawer.tsx} +58 -0
  27. package/src/components/drawer/markup/index.tsx +1 -1
  28. package/src/components/drawer/types/index.ts +24 -0
  29. package/src/components/input/markup/text/Base.tsx +32 -3
  30. package/src/components/input/markup/text/Identification.tsx +15 -2
  31. package/src/components/input/markup/text/Password.tsx +35 -2
  32. package/src/components/input/markup/text/Phone.tsx +38 -2
  33. package/src/components/input/markup/text/Search.tsx +30 -1
  34. package/src/components/input/styles/index.scss +6 -6
  35. package/src/components/input/types/index.ts +22 -1
  36. package/src/components/input/utils/index.ts +6 -0
  37. package/src/components/navigation/markup/mobile/BottomNavigation.tsx +11 -0
  38. package/src/components/navigation/types/index.ts +22 -0
  39. package/src/components/pagination/markup/Carousel.tsx +1 -0
  40. package/src/components/pagination/markup/Count.tsx +1 -0
  41. package/src/components/pagination/markup/Pagination.tsx +2 -0
  42. package/src/components/radio/markup/Radio.tsx +16 -2
  43. package/src/components/radio/markup/RadioCard.tsx +8 -0
  44. package/src/components/radio/markup/RadioCardGroup.tsx +8 -0
  45. package/src/components/radio/types/radio.ts +39 -0
  46. package/src/components/segmented-control/markup/SegmentedControl.tsx +12 -0
  47. package/src/components/segmented-control/types/index.ts +16 -0
  48. package/src/components/tab/markup/TabContent.tsx +5 -0
  49. package/src/components/tab/markup/TabList.tsx +19 -2
  50. package/src/components/tab/markup/TabRoot.tsx +50 -4
  51. package/src/components/tab/markup/TabTrigger.tsx +9 -1
  52. package/src/components/tab/styles/index.scss +28 -10
  53. package/src/components/tab/types/index.ts +10 -0
  54. package/src/components/tab/utils/tab-context.ts +8 -2
  55. package/src/components/button/markup/Button.tsx +0 -175
  56. package/src/components/button/markup/index.tsx +0 -1
package/dist/styles.css CHANGED
@@ -1051,7 +1051,7 @@
1051
1051
  --badge-fill-label-color: var(--color-primary-default, #1a6aff);
1052
1052
  }
1053
1053
 
1054
- .badge:where([data-style=fill][data-intent=teritary]) {
1054
+ .badge:where([data-style=fill][data-intent=tertiary]) {
1055
1055
  --badge-fill-bg-color: var(--color-cool-gray-10, #18191b);
1056
1056
  --badge-fill-label-color: var(--color-common-100, #ffffff);
1057
1057
  }
@@ -1092,7 +1092,7 @@
1092
1092
  --badge-outline-label-color: var(--color-primary-strong, #0050e5);
1093
1093
  }
1094
1094
 
1095
- .badge:where([data-style=outlined][data-intent=teritary]) {
1095
+ .badge:where([data-style=outlined][data-intent=tertiary]) {
1096
1096
  --badge-outline-border-color: var(--color-border-standard-heavy, #313235);
1097
1097
  --badge-outline-label-color: var(--color-label-strong, #18191b);
1098
1098
  }
@@ -1131,7 +1131,7 @@
1131
1131
  --badge-dot-color: var(--color-red-55, #f43625);
1132
1132
  }
1133
1133
 
1134
- :where(.radix-themes, .theme-root, :root) {
1134
+ :root {
1135
1135
  /* spacing */
1136
1136
  --theme-button-gap-1: var(--spacing-gap-1);
1137
1137
  --theme-button-gap-2: var(--spacing-gap-2);
@@ -1145,6 +1145,24 @@
1145
1145
  --theme-button-padding-7: var(--spacing-padding-7);
1146
1146
  --theme-button-padding-9: var(--spacing-padding-9);
1147
1147
  --theme-button-min-width: var(--theme-size-small-2);
1148
+ --theme-button-text-padding-block: var(--spacing-padding-4, 8px);
1149
+ --theme-button-text-padding-inline-small: var(--spacing-padding-4, 8px);
1150
+ --theme-button-text-padding-inline-medium: var(--spacing-padding-5, 12px);
1151
+ --theme-button-text-padding-inline-large: var(--spacing-padding-5, 12px);
1152
+ --theme-button-text-min-height-small: var(--theme-size-small-1, 20px);
1153
+ --theme-button-text-min-height-medium: var(--theme-size-small-2, 24px);
1154
+ --theme-button-text-min-height-large: var(--theme-size-small-3, 32px);
1155
+ --theme-button-text-radius: var(--theme-radius-small, 4px);
1156
+ --theme-button-round-padding-inline-small: var(--spacing-padding-5, 12px);
1157
+ --theme-button-round-padding-inline-medium: var(--spacing-padding-6, 16px);
1158
+ --theme-button-round-padding-inline-large: var(--spacing-padding-7, 20px);
1159
+ --theme-button-round-padding-block: var(--spacing-padding-2, 4px);
1160
+ --theme-button-round-min-height-small: var(--theme-size-small-2, 24px);
1161
+ --theme-button-round-min-height-medium: var(--theme-size-small-3, 32px);
1162
+ --theme-button-round-min-height-large: var(--theme-size-medium-1, 40px);
1163
+ --theme-button-round-radius-small: var(--theme-radius-xlarge-2, 16px);
1164
+ --theme-button-round-radius-medium: var(--theme-radius-xlarge-2, 16px);
1165
+ --theme-button-round-radius-large: 30px;
1148
1166
  /* size/radius */
1149
1167
  --theme-button-size-small-1: var(--theme-size-small-1);
1150
1168
  --theme-button-size-small-2: var(--theme-size-small-2);
@@ -1231,16 +1249,9 @@
1231
1249
  --theme-button-overlay-outlined-primary-bg: var(--color-blue-90);
1232
1250
  --theme-button-overlay-outlined-secondary-bg: var(--color-cool-gray-95);
1233
1251
  --theme-button-overlay-outlined-tertiary-bg: var(--color-cool-gray-95);
1234
- /* text-button backgrounds */
1235
- --theme-button-text-default-hover-bg: var(--color-tertiary-default);
1236
- --theme-button-text-default-pressed-bg: var(--color-tertiary-strong);
1237
- --theme-button-text-secondary-hover-bg: var(--color-bg-alternative-cool-gray);
1238
- --theme-button-text-secondary-pressed-bg: var(--color-secondary-strong);
1239
- --theme-button-text-tertiary-hover-bg: var(--color-bg-alternative-cool-gray);
1240
- --theme-button-text-tertiary-pressed-bg: var(--color-bg-surface-strong);
1241
1252
  }
1242
1253
 
1243
- /* Radix reset 이후에도 primitives 스타일이 유지되도록 공통 클래스에 스타일 부여 */
1254
+ /* Primitives 버튼 공통 스타일 */
1244
1255
  .button {
1245
1256
  display: flex;
1246
1257
  align-items: center;
@@ -1261,472 +1272,400 @@
1261
1272
  font-weight: var(--theme-button-font-weight, 400); /* 버튼 텍스트는 스케일과 무관하게 weight 400 유지 */
1262
1273
  line-height: var(--theme-button-font-body-medium-line-height, var(--font-body-medium-line-height, 24px));
1263
1274
  letter-spacing: var(--theme-button-font-body-medium-letter-spacing, var(--font-body-medium-letter-spacing, 0px));
1264
- /* Radix Theme pressed filter를 비활성화해 상태 색상이 그대로 노출되도록 한다. */
1265
- --base-button-solid-active-filter: none;
1266
- --base-button-solid-high-contrast-hover-filter: none;
1267
- --base-button-solid-high-contrast-active-filter: none;
1268
- --base-button-classic-active-filter: none;
1269
- --base-button-classic-high-contrast-hover-filter: none;
1270
- --base-button-classic-high-contrast-active-filter: none;
1271
1275
  filter: none;
1272
1276
  cursor: pointer;
1273
1277
  }
1274
1278
 
1275
- .button:where([data-block=true]) {
1279
+ .button.button-block {
1276
1280
  width: 100%;
1277
1281
  }
1278
1282
 
1279
- .button:where([data-loading=true]) {
1283
+ .button[aria-busy=true] {
1280
1284
  pointer-events: none;
1281
1285
  cursor: progress;
1282
1286
  }
1283
1287
 
1284
1288
  .button-icon,
1285
1289
  .button-label,
1286
- .button-prefix,
1287
- .button-suffix {
1290
+ .button-left,
1291
+ .button-right {
1288
1292
  display: inline-flex;
1289
1293
  align-items: center;
1290
1294
  justify-content: center;
1291
1295
  }
1292
1296
 
1293
- .button:where([data-variant=solid][data-intent=primary]) {
1297
+ .button.button-fill-solid.button-priority-primary {
1294
1298
  background-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1295
1299
  border-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1296
1300
  color: var(--theme-button-color-common-100, var(--color-common-100));
1297
1301
  }
1298
- .button:where([data-variant=solid][data-intent=primary]):disabled, .button:where([data-variant=solid][data-intent=primary])[data-disabled=true] {
1302
+ .button.button-fill-solid.button-priority-primary:disabled, .button.button-fill-solid.button-priority-primary[aria-disabled=true] {
1299
1303
  background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1300
1304
  border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1301
1305
  color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1302
1306
  }
1303
- .button:where([data-variant=solid][data-intent=primary]):hover:not(:disabled), .button:where([data-variant=solid][data-intent=primary])[data-simulated-state=hover]:not(:disabled) {
1307
+ .button.button-fill-solid.button-priority-primary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-primary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1304
1308
  background-color: var(--theme-button-color-blue-50, var(--color-blue-50));
1305
1309
  border-color: var(--theme-button-color-blue-50, var(--color-blue-50));
1306
1310
  }
1307
- .button:where([data-variant=solid][data-intent=primary]):active:not(:disabled), .button:where([data-variant=solid][data-intent=primary])[data-simulated-state=pressed]:not(:disabled) {
1311
+ .button.button-fill-solid.button-priority-primary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-primary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1308
1312
  background-color: var(--theme-button-color-blue-45, var(--color-blue-45));
1309
1313
  border-color: var(--theme-button-color-blue-45, var(--color-blue-45));
1310
1314
  }
1311
1315
 
1312
- .button:where([data-variant=outlined][data-intent=primary]) {
1316
+ .button.button-fill-outlined.button-priority-primary {
1313
1317
  background-color: transparent;
1314
1318
  color: var(--theme-button-color-primary-default, var(--color-primary-default));
1315
1319
  border-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1316
1320
  }
1317
- .button:where([data-variant=outlined][data-intent=primary]):disabled, .button:where([data-variant=outlined][data-intent=primary])[data-disabled=true] {
1321
+ .button.button-fill-outlined.button-priority-primary:disabled, .button.button-fill-outlined.button-priority-primary[aria-disabled=true] {
1318
1322
  background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1319
1323
  border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1320
1324
  color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1321
1325
  }
1322
- .button:where([data-variant=outlined][data-intent=primary]):hover:not(:disabled), .button:where([data-variant=outlined][data-intent=primary])[data-simulated-state=hover]:not(:disabled) {
1326
+ .button.button-fill-outlined.button-priority-primary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-primary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1323
1327
  background-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1324
1328
  border-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1325
1329
  }
1326
- .button:where([data-variant=outlined][data-intent=primary]):active:not(:disabled), .button:where([data-variant=outlined][data-intent=primary])[data-simulated-state=pressed]:not(:disabled) {
1330
+ .button.button-fill-outlined.button-priority-primary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-primary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1327
1331
  background-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1328
1332
  border-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1329
1333
  }
1330
1334
 
1331
- .button:where([data-variant=text-button][data-intent=primary]) {
1332
- border-color: transparent;
1333
- background-color: transparent;
1334
- color: var(--theme-button-color-primary-default, var(--color-primary-default));
1335
- }
1336
- .button:where([data-variant=text-button][data-intent=primary]):hover:not(:disabled), .button:where([data-variant=text-button][data-intent=primary])[data-simulated-state=hover]:not(:disabled) {
1337
- background-color: var(--theme-button-text-default-hover-bg, var(--color-tertiary-default));
1338
- }
1339
- .button:where([data-variant=text-button][data-intent=primary]):active:not(:disabled), .button:where([data-variant=text-button][data-intent=primary])[data-simulated-state=pressed]:not(:disabled) {
1340
- background-color: var(--theme-button-text-default-pressed-bg, var(--color-tertiary-strong));
1341
- }
1342
- .button:where([data-variant=text-button][data-intent=primary]):disabled, .button:where([data-variant=text-button][data-intent=primary])[data-disabled=true] {
1343
- background-color: transparent;
1344
- border-color: transparent;
1345
- color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1346
- }
1347
-
1348
- .button:where([data-variant=solid][data-intent=secondary]) {
1335
+ .button.button-fill-solid.button-priority-secondary {
1349
1336
  background-color: var(--theme-button-secondary-solid-bg, var(--color-blue-95, #e5eeff));
1350
1337
  border-color: var(--theme-button-secondary-solid-bg, var(--color-blue-95, #e5eeff));
1351
1338
  color: var(--theme-button-color-primary-default, var(--color-primary-default));
1352
1339
  }
1353
- .button:where([data-variant=solid][data-intent=secondary]):disabled, .button:where([data-variant=solid][data-intent=secondary])[data-disabled=true] {
1340
+ .button.button-fill-solid.button-priority-secondary:disabled, .button.button-fill-solid.button-priority-secondary[aria-disabled=true] {
1354
1341
  background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1355
1342
  border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1356
1343
  color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1357
1344
  }
1358
- .button:where([data-variant=solid][data-intent=secondary]):hover:not(:disabled), .button:where([data-variant=solid][data-intent=secondary])[data-simulated-state=hover]:not(:disabled) {
1345
+ .button.button-fill-solid.button-priority-secondary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-secondary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1359
1346
  background-color: var(--theme-button-secondary-solid-hover-bg, #dbe9ff);
1360
1347
  border-color: var(--theme-button-secondary-solid-hover-bg, #dbe9ff);
1361
1348
  }
1362
- .button:where([data-variant=solid][data-intent=secondary]):active:not(:disabled), .button:where([data-variant=solid][data-intent=secondary])[data-simulated-state=pressed]:not(:disabled) {
1349
+ .button.button-fill-solid.button-priority-secondary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-secondary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1363
1350
  background-color: var(--theme-button-secondary-solid-pressed-bg, #ccdeff);
1364
1351
  border-color: var(--theme-button-secondary-solid-pressed-bg, #ccdeff);
1365
1352
  }
1366
1353
 
1367
- .button:where([data-variant=outlined][data-intent=secondary]) {
1354
+ .button.button-fill-outlined.button-priority-secondary {
1368
1355
  background-color: transparent;
1369
1356
  color: var(--theme-button-color-primary-default, var(--color-primary-default));
1370
1357
  border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1371
1358
  }
1372
- .button:where([data-variant=outlined][data-intent=secondary]):disabled, .button:where([data-variant=outlined][data-intent=secondary])[data-disabled=true] {
1359
+ .button.button-fill-outlined.button-priority-secondary:disabled, .button.button-fill-outlined.button-priority-secondary[aria-disabled=true] {
1373
1360
  background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1374
1361
  border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1375
1362
  color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1376
1363
  }
1377
- .button:where([data-variant=outlined][data-intent=secondary]):hover:not(:disabled), .button:where([data-variant=outlined][data-intent=secondary])[data-simulated-state=hover]:not(:disabled) {
1364
+ .button.button-fill-outlined.button-priority-secondary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-secondary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1378
1365
  background-color: var(--theme-button-color-blue-90, var(--color-blue-90));
1379
1366
  border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1380
1367
  }
1381
- .button:where([data-variant=outlined][data-intent=secondary]):active:not(:disabled), .button:where([data-variant=outlined][data-intent=secondary])[data-simulated-state=pressed]:not(:disabled) {
1368
+ .button.button-fill-outlined.button-priority-secondary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-secondary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1382
1369
  background-color: var(--theme-button-secondary-solid-bg, var(--color-blue-95, #e5eeff));
1383
1370
  border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1384
1371
  }
1385
1372
 
1386
- .button:where([data-variant=text-button][data-intent=secondary]) {
1387
- border-color: transparent;
1388
- background-color: transparent;
1389
- color: var(--theme-button-color-primary-default, var(--color-primary-default));
1390
- }
1391
- .button:where([data-variant=text-button][data-intent=secondary]):hover:not(:disabled), .button:where([data-variant=text-button][data-intent=secondary])[data-simulated-state=hover]:not(:disabled) {
1392
- background-color: var(--theme-button-text-secondary-hover-bg, var(--color-bg-alternative-cool-gray));
1393
- }
1394
- .button:where([data-variant=text-button][data-intent=secondary]):active:not(:disabled), .button:where([data-variant=text-button][data-intent=secondary])[data-simulated-state=pressed]:not(:disabled) {
1395
- background-color: var(--theme-button-text-secondary-pressed-bg, var(--color-secondary-strong));
1396
- }
1397
- .button:where([data-variant=text-button][data-intent=secondary]):disabled, .button:where([data-variant=text-button][data-intent=secondary])[data-disabled=true] {
1398
- background-color: transparent;
1399
- border-color: transparent;
1400
- color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1401
- }
1402
-
1403
- .button:where([data-variant=solid][data-intent=teritary]) {
1373
+ .button.button-fill-solid.button-priority-tertiary {
1404
1374
  background-color: var(--theme-button-tertiary-solid-bg, var(--color-bg-surface-neutral));
1405
1375
  border-color: var(--theme-button-tertiary-solid-bg, var(--color-bg-surface-neutral));
1406
1376
  color: var(--theme-button-tertiary-solid-foreground, var(--color-label-neutral));
1407
1377
  }
1408
- .button:where([data-variant=solid][data-intent=teritary]):disabled, .button:where([data-variant=solid][data-intent=teritary])[data-disabled=true] {
1378
+ .button.button-fill-solid.button-priority-tertiary:disabled, .button.button-fill-solid.button-priority-tertiary[aria-disabled=true] {
1409
1379
  background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1410
1380
  border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1411
1381
  color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1412
1382
  }
1413
- .button:where([data-variant=solid][data-intent=teritary]):hover:not(:disabled), .button:where([data-variant=solid][data-intent=teritary])[data-simulated-state=hover]:not(:disabled) {
1383
+ .button.button-fill-solid.button-priority-tertiary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-tertiary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1414
1384
  background-color: var(--theme-button-tertiary-solid-hover-bg, var(--color-bg-surface-static-cool-gray));
1415
1385
  border-color: var(--theme-button-tertiary-solid-hover-bg, var(--color-bg-surface-static-cool-gray));
1416
1386
  }
1417
- .button:where([data-variant=solid][data-intent=teritary]):active:not(:disabled), .button:where([data-variant=solid][data-intent=teritary])[data-simulated-state=pressed]:not(:disabled) {
1387
+ .button.button-fill-solid.button-priority-tertiary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-tertiary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1418
1388
  background-color: var(--theme-button-tertiary-solid-pressed-bg, var(--color-bg-surface-strong));
1419
1389
  border-color: var(--theme-button-tertiary-solid-pressed-bg, var(--color-bg-surface-strong));
1420
1390
  }
1421
1391
 
1422
- .button:where([data-variant=outlined][data-intent=teritary]) {
1392
+ .button.button-fill-outlined.button-priority-tertiary {
1423
1393
  background-color: transparent;
1424
1394
  color: var(--theme-button-color-cool-gray-10, var(--color-cool-gray-10));
1425
1395
  border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1426
1396
  }
1427
- .button:where([data-variant=outlined][data-intent=teritary]):disabled, .button:where([data-variant=outlined][data-intent=teritary])[data-disabled=true] {
1397
+ .button.button-fill-outlined.button-priority-tertiary:disabled, .button.button-fill-outlined.button-priority-tertiary[aria-disabled=true] {
1428
1398
  background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1429
1399
  border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1430
1400
  color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1431
1401
  }
1432
- .button:where([data-variant=outlined][data-intent=teritary]):hover:not(:disabled), .button:where([data-variant=outlined][data-intent=teritary])[data-simulated-state=hover]:not(:disabled) {
1402
+ .button.button-fill-outlined.button-priority-tertiary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-tertiary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1433
1403
  background-color: var(--theme-button-color-cool-gray-95, var(--color-cool-gray-95));
1434
1404
  border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1435
1405
  }
1436
- .button:where([data-variant=outlined][data-intent=teritary]):active:not(:disabled), .button:where([data-variant=outlined][data-intent=teritary])[data-simulated-state=pressed]:not(:disabled) {
1406
+ .button.button-fill-outlined.button-priority-tertiary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-tertiary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1437
1407
  background-color: var(--theme-button-tertiary-solid-bg, var(--color-bg-surface-neutral));
1438
1408
  border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1439
1409
  }
1440
1410
 
1441
- .button:where([data-variant=text-button][data-intent=teritary]) {
1442
- border-color: transparent;
1443
- background-color: transparent;
1444
- color: var(--theme-button-color-cool-gray-10, var(--color-cool-gray-10));
1445
- }
1446
- .button:where([data-variant=text-button][data-intent=teritary]):hover:not(:disabled), .button:where([data-variant=text-button][data-intent=teritary])[data-simulated-state=hover]:not(:disabled) {
1447
- background-color: var(--theme-button-text-tertiary-hover-bg, var(--color-bg-alternative-cool-gray));
1448
- }
1449
- .button:where([data-variant=text-button][data-intent=teritary]):active:not(:disabled), .button:where([data-variant=text-button][data-intent=teritary])[data-simulated-state=pressed]:not(:disabled) {
1450
- background-color: var(--theme-button-text-tertiary-pressed-bg, var(--color-bg-surface-strong));
1451
- }
1452
- .button:where([data-variant=text-button][data-intent=teritary]):disabled, .button:where([data-variant=text-button][data-intent=teritary])[data-disabled=true] {
1453
- background-color: transparent;
1454
- border-color: transparent;
1455
- color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1456
- }
1457
-
1458
- .button:where([data-size=small]) {
1459
- padding-inline: var(--theme-button-padding-3, var(--spacing-padding-3, 12px));
1460
- gap: var(--theme-button-gap-1, var(--spacing-gap-1, 4px));
1461
- padding-block: var(--theme-button-padding-1, var(--spacing-padding-1, 2px));
1411
+ .button.button-size-small {
1412
+ padding-inline: var(--theme-button-padding-6, var(--spacing-padding-6, 24px));
1413
+ gap: var(--theme-button-gap-2, var(--spacing-gap-2, 8px));
1414
+ padding-block: var(--theme-button-padding-2, var(--spacing-padding-2, 4px));
1462
1415
  font-size: var(--theme-button-font-label-medium-size, var(--font-label-medium-size, 14px));
1463
- font-weight: var(--theme-button-font-weight, 400);
1416
+ font-weight: var(--theme-button-font-label-medium-weight, var(--font-label-medium-weight, 400));
1464
1417
  line-height: var(--theme-button-font-label-medium-line-height, var(--font-label-medium-line-height, 1.5em));
1465
1418
  letter-spacing: var(--theme-button-font-label-medium-letter-spacing, var(--font-label-medium-letter-spacing, 0px));
1419
+ min-height: var(--theme-button-size-small-3, var(--theme-size-small-3, 32px));
1420
+ border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1466
1421
  }
1467
1422
 
1468
- .button:where([data-size=medium]) {
1469
- padding-inline: var(--theme-button-padding-4, var(--spacing-padding-4, 16px));
1423
+ .button.button-size-medium {
1424
+ padding-inline: var(--theme-button-padding-7, var(--spacing-padding-7, 20px));
1470
1425
  gap: var(--theme-button-gap-2, var(--spacing-gap-2, 8px));
1471
- padding-block: var(--theme-button-padding-2, var(--spacing-padding-2, 4px));
1426
+ padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1472
1427
  font-size: var(--theme-button-font-label-large-size, var(--font-label-large-size, 16px));
1473
- font-weight: var(--theme-button-font-weight, 400);
1428
+ font-weight: var(--theme-button-font-label-large-weight, var(--font-label-large-weight, 400));
1474
1429
  line-height: var(--theme-button-font-label-large-line-height, var(--font-label-large-line-height, 1.5em));
1475
1430
  letter-spacing: var(--theme-button-font-label-large-letter-spacing, var(--font-label-large-letter-spacing, 0px));
1431
+ min-height: var(--theme-button-size-medium-1, var(--theme-size-medium-1, 40px));
1432
+ border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1476
1433
  }
1477
1434
 
1478
- .button:where([data-size=large]) {
1479
- padding-inline: var(--theme-button-padding-5, var(--spacing-padding-5, 20px));
1435
+ .button.button-size-large {
1436
+ padding-inline: var(--theme-button-padding-9, var(--spacing-padding-9, 28px));
1480
1437
  gap: var(--theme-button-gap-3, var(--spacing-gap-3, 12px));
1481
- padding-block: var(--theme-button-padding-3, var(--spacing-padding-3, 6px));
1438
+ padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1482
1439
  font-size: var(--theme-button-font-body-medium-size, var(--font-body-medium-size, 17px));
1483
- font-weight: var(--theme-button-font-weight, 400);
1440
+ font-weight: var(--theme-button-font-body-medium-weight, var(--font-body-medium-weight, 500));
1484
1441
  line-height: var(--theme-button-font-body-medium-line-height, var(--font-body-medium-line-height, 1.5em));
1485
1442
  letter-spacing: var(--theme-button-font-body-medium-letter-spacing, var(--font-body-medium-letter-spacing, 0px));
1443
+ min-height: var(--theme-button-size-medium-2, var(--theme-size-medium-2, 48px));
1444
+ border-radius: var(--theme-button-radius-large-1, var(--theme-radius-large-1, 12px));
1486
1445
  }
1487
1446
 
1488
- .button:where([data-size=xlarge]) {
1489
- padding-inline: var(--theme-button-padding-6, var(--spacing-padding-6, 24px));
1447
+ .button.button-size-xlarge {
1448
+ padding-inline: var(--theme-button-padding-9, var(--spacing-padding-9, 28px));
1490
1449
  gap: var(--theme-button-gap-3, var(--spacing-gap-3, 12px));
1491
- padding-block: var(--theme-button-padding-4, var(--spacing-padding-4, 8px));
1450
+ padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1492
1451
  font-size: var(--theme-button-font-body-large-size, var(--font-body-large-size, 19px));
1493
- font-weight: var(--theme-button-font-weight, 400);
1452
+ font-weight: var(--theme-button-font-body-large-weight, var(--font-body-large-weight, 600));
1494
1453
  line-height: var(--theme-button-font-body-large-line-height, var(--font-body-large-line-height, 1.5em));
1495
1454
  letter-spacing: var(--theme-button-font-body-large-letter-spacing, var(--font-body-large-letter-spacing, 0px));
1455
+ min-height: var(--theme-button-size-medium-3, var(--theme-size-medium-3, 56px));
1456
+ border-radius: var(--theme-button-radius-large-2, var(--theme-radius-large-2, 16px));
1496
1457
  }
1497
1458
 
1498
- .button:where([data-variant=solid][data-size=small]) {
1499
- padding-block: var(--theme-button-padding-2, var(--spacing-padding-2, 4px));
1459
+ .button.button-size-small {
1500
1460
  padding-inline: var(--theme-button-padding-6, var(--spacing-padding-6, 24px));
1461
+ gap: var(--theme-button-gap-2, var(--spacing-gap-2, 8px));
1462
+ padding-block: var(--theme-button-padding-2, var(--spacing-padding-2, 4px));
1463
+ font-size: var(--theme-button-font-label-medium-size, var(--font-label-medium-size, 14px));
1464
+ font-weight: var(--theme-button-font-label-medium-weight, var(--font-label-medium-weight, 400));
1465
+ line-height: var(--theme-button-font-label-medium-line-height, var(--font-label-medium-line-height, 1.5em));
1466
+ letter-spacing: var(--theme-button-font-label-medium-letter-spacing, var(--font-label-medium-letter-spacing, 0px));
1467
+ min-height: var(--theme-button-size-small-3, var(--theme-size-small-3, 32px));
1468
+ border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1501
1469
  }
1502
1470
 
1503
- .button:where([data-variant=solid][data-size=medium]) {
1504
- padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1471
+ .button.button-size-medium {
1505
1472
  padding-inline: var(--theme-button-padding-7, var(--spacing-padding-7, 20px));
1506
- }
1507
-
1508
- .button:where([data-variant=solid][data-size=large]) {
1473
+ gap: var(--theme-button-gap-2, var(--spacing-gap-2, 8px));
1509
1474
  padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1510
- padding-inline: var(--theme-button-padding-9, var(--spacing-padding-9, 28px));
1475
+ font-size: var(--theme-button-font-label-large-size, var(--font-label-large-size, 16px));
1476
+ font-weight: var(--theme-button-font-label-large-weight, var(--font-label-large-weight, 400));
1477
+ line-height: var(--theme-button-font-label-large-line-height, var(--font-label-large-line-height, 1.5em));
1478
+ letter-spacing: var(--theme-button-font-label-large-letter-spacing, var(--font-label-large-letter-spacing, 0px));
1479
+ min-height: var(--theme-button-size-medium-1, var(--theme-size-medium-1, 40px));
1480
+ border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1511
1481
  }
1512
1482
 
1513
- .button:where([data-variant=solid][data-size=xlarge]) {
1514
- padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1483
+ .button.button-size-large {
1515
1484
  padding-inline: var(--theme-button-padding-9, var(--spacing-padding-9, 28px));
1516
- }
1517
-
1518
- .button:where([data-variant=outlined][data-size=small]) {
1519
- padding-block: var(--theme-button-padding-2, var(--spacing-padding-2, 4px));
1520
- padding-inline: var(--theme-button-padding-6, var(--spacing-padding-6, 24px));
1521
- }
1522
-
1523
- .button:where([data-variant=outlined][data-size=medium]) {
1485
+ gap: var(--theme-button-gap-3, var(--spacing-gap-3, 12px));
1524
1486
  padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1525
- padding-inline: var(--theme-button-padding-7, var(--spacing-padding-7, 20px));
1487
+ font-size: var(--theme-button-font-body-medium-size, var(--font-body-medium-size, 17px));
1488
+ font-weight: var(--theme-button-font-body-medium-weight, var(--font-body-medium-weight, 500));
1489
+ line-height: var(--theme-button-font-body-medium-line-height, var(--font-body-medium-line-height, 1.5em));
1490
+ letter-spacing: var(--theme-button-font-body-medium-letter-spacing, var(--font-body-medium-letter-spacing, 0px));
1491
+ min-height: var(--theme-button-size-medium-2, var(--theme-size-medium-2, 48px));
1492
+ border-radius: var(--theme-button-radius-large-1, var(--theme-radius-large-1, 12px));
1526
1493
  }
1527
1494
 
1528
- .button:where([data-variant=outlined][data-size=large]) {
1529
- padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1495
+ .button.button-size-xlarge {
1530
1496
  padding-inline: var(--theme-button-padding-9, var(--spacing-padding-9, 28px));
1531
- }
1532
-
1533
- .button:where([data-variant=outlined][data-size=xlarge]) {
1497
+ gap: var(--theme-button-gap-3, var(--spacing-gap-3, 12px));
1534
1498
  padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1535
- padding-inline: var(--theme-button-padding-9, var(--spacing-padding-9, 28px));
1536
- }
1537
-
1538
- .button:where([data-variant=text-button][data-size=small]) {
1539
- padding-block: var(--theme-button-padding-4, var(--spacing-padding-4, 8px));
1540
- padding-inline: var(--theme-button-padding-4, var(--spacing-padding-4, 8px));
1541
- }
1542
-
1543
- .button:where([data-variant=text-button][data-size=medium]) {
1544
- padding-block: var(--theme-button-padding-4, var(--spacing-padding-4, 8px));
1545
- padding-inline: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1546
- }
1547
-
1548
- .button:where([data-variant=text-button][data-size=large]) {
1549
- padding-block: var(--theme-button-padding-4, var(--spacing-padding-4, 8px));
1550
- padding-inline: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1551
- }
1552
-
1553
- .button:where([data-shape=round][data-size=small]) {
1554
- padding-block: var(--theme-button-padding-2, var(--spacing-padding-2, 4px));
1555
- padding-inline: var(--theme-button-padding-5, var(--spacing-padding-5, 20px));
1556
- }
1557
-
1558
- .button:where([data-shape=round][data-size=medium]) {
1559
- padding-block: var(--theme-button-padding-2, var(--spacing-padding-2, 4px));
1560
- padding-inline: var(--theme-button-padding-6, var(--spacing-padding-6, 24px));
1561
- }
1562
-
1563
- .button:where([data-shape=round][data-size=large]) {
1564
- padding-block: var(--theme-button-padding-2, var(--spacing-padding-2, 4px));
1565
- padding-inline: var(--theme-button-padding-7, var(--spacing-padding-7, 20px));
1566
- }
1567
-
1568
- .button:where([data-variant=solid][data-size=small]) {
1569
- height: var(--theme-button-size-small-3, var(--theme-size-small-3, 32px));
1570
- border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1571
- }
1572
-
1573
- .button:where([data-variant=solid][data-size=medium]) {
1574
- height: var(--theme-button-size-medium-1, var(--theme-size-medium-1, 40px));
1575
- border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1576
- }
1577
-
1578
- .button:where([data-variant=solid][data-size=large]) {
1579
- height: var(--theme-button-size-medium-2, var(--theme-size-medium-2, 48px));
1580
- border-radius: var(--theme-button-radius-large-1, var(--theme-radius-large-1, 12px));
1581
- }
1582
-
1583
- .button:where([data-variant=solid][data-size=xlarge]) {
1584
- height: var(--theme-button-size-medium-3, var(--theme-size-medium-3, 56px));
1585
- border-radius: var(--theme-button-radius-large-2, var(--theme-radius-large-2, 16px));
1586
- }
1587
-
1588
- .button:where([data-variant=outlined][data-size=small]) {
1589
- height: var(--theme-button-size-small-3, var(--theme-size-small-3, 32px));
1590
- border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1591
- }
1592
-
1593
- .button:where([data-variant=outlined][data-size=medium]) {
1594
- height: var(--theme-button-size-medium-1, var(--theme-size-medium-1, 40px));
1595
- border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1596
- }
1597
-
1598
- .button:where([data-variant=outlined][data-size=large]) {
1599
- height: var(--theme-button-size-medium-2, var(--theme-size-medium-2, 48px));
1600
- border-radius: var(--theme-button-radius-large-1, var(--theme-radius-large-1, 12px));
1601
- }
1602
-
1603
- .button:where([data-variant=outlined][data-size=xlarge]) {
1604
- height: var(--theme-button-size-medium-3, var(--theme-size-medium-3, 56px));
1499
+ font-size: var(--theme-button-font-body-large-size, var(--font-body-large-size, 19px));
1500
+ font-weight: var(--theme-button-font-body-large-weight, var(--font-body-large-weight, 600));
1501
+ line-height: var(--theme-button-font-body-large-line-height, var(--font-body-large-line-height, 1.5em));
1502
+ letter-spacing: var(--theme-button-font-body-large-letter-spacing, var(--font-body-large-letter-spacing, 0px));
1503
+ min-height: var(--theme-button-size-medium-3, var(--theme-size-medium-3, 56px));
1605
1504
  border-radius: var(--theme-button-radius-large-2, var(--theme-radius-large-2, 16px));
1606
1505
  }
1607
1506
 
1608
- .button:where([data-variant=text-button][data-size=small]) {
1609
- height: var(--theme-button-size-small-1, var(--theme-size-small-1, 20px));
1610
- border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1611
- }
1612
-
1613
- .button:where([data-variant=text-button][data-size=medium]) {
1614
- height: var(--theme-button-size-small-2, var(--theme-size-small-2, 24px));
1615
- border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1616
- }
1617
-
1618
- .button:where([data-variant=text-button][data-size=large]) {
1619
- height: var(--theme-button-size-small-3, var(--theme-size-small-3, 32px));
1620
- border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1621
- }
1622
-
1623
- .button:where([data-shape=round][data-size=small]) {
1624
- height: var(--theme-button-size-small-2, var(--theme-size-small-2, 24px));
1625
- border-radius: var(--theme-button-size-small-2, var(--theme-size-small-2, 24px));
1626
- }
1627
-
1628
- .button:where([data-shape=round][data-size=medium]) {
1629
- height: var(--theme-button-size-small-3, var(--theme-size-small-3, 32px));
1630
- border-radius: var(--theme-button-size-small-3, var(--theme-size-small-3, 32px));
1631
- }
1632
-
1633
- .button:where([data-shape=round][data-size=large]) {
1634
- height: var(--theme-button-size-medium-1, var(--theme-size-medium-1, 40px));
1635
- border-radius: var(--theme-button-size-medium-1, var(--theme-size-medium-1, 40px));
1636
- }
1637
-
1638
- /* Radix Themes outline variant는 box-shadow가 default로 들어가므로 제거 */
1639
- .button.rt-variant-outline,
1640
- .button:where([data-variant=outlined]) {
1507
+ .button.button-fill-outlined {
1641
1508
  box-shadow: none;
1642
1509
  }
1643
1510
 
1644
- .button:where([data-variant=solid][data-intent=secondary]):hover:not(:disabled), .button:where([data-variant=solid][data-intent=secondary])[data-simulated-state=hover]:not(:disabled) {
1511
+ .button.button-fill-solid.button-priority-secondary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-secondary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1645
1512
  background-color: transparent;
1646
1513
  border-color: transparent;
1647
1514
  box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0);
1648
1515
  }
1649
- .button:where([data-variant=solid][data-intent=secondary]):active:not(:disabled), .button:where([data-variant=solid][data-intent=secondary])[data-simulated-state=pressed]:not(:disabled) {
1516
+ .button.button-fill-solid.button-priority-secondary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-secondary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1650
1517
  background-color: transparent;
1651
1518
  border-color: transparent;
1652
1519
  box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0);
1653
1520
  }
1654
1521
 
1655
- .button:where([data-variant=solid][data-intent=secondary]):hover:not(:disabled), .button:where([data-variant=solid][data-intent=secondary])[data-simulated-state=hover]:not(:disabled) {
1522
+ .button.button-fill-solid.button-priority-secondary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-secondary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1656
1523
  background-color: var(--theme-button-secondary-solid-hover-bg, #dbe9ff);
1657
1524
  border-color: var(--theme-button-secondary-solid-hover-bg, #dbe9ff);
1658
1525
  box-shadow: none;
1659
1526
  }
1660
- .button:where([data-variant=solid][data-intent=secondary]):active:not(:disabled), .button:where([data-variant=solid][data-intent=secondary])[data-simulated-state=pressed]:not(:disabled) {
1527
+ .button.button-fill-solid.button-priority-secondary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-secondary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1661
1528
  background-color: var(--theme-button-secondary-solid-pressed-bg, #ccdeff);
1662
1529
  border-color: var(--theme-button-secondary-solid-pressed-bg, #ccdeff);
1663
1530
  box-shadow: none;
1664
1531
  }
1665
1532
 
1666
- .button:where([data-variant=solid][data-intent=teritary]):hover:not(:disabled), .button:where([data-variant=solid][data-intent=teritary])[data-simulated-state=hover]:not(:disabled) {
1533
+ .button.button-fill-solid.button-priority-tertiary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-tertiary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1667
1534
  background-color: var(--color-border-standard-strong, var(--color-bg-surface-strong));
1668
1535
  border-color: var(--theme-button-tertiary-solid-bg, var(--color-bg-surface-neutral));
1669
1536
  box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.68);
1670
1537
  }
1671
- .button:where([data-variant=solid][data-intent=teritary]):active:not(:disabled), .button:where([data-variant=solid][data-intent=teritary])[data-simulated-state=pressed]:not(:disabled) {
1538
+ .button.button-fill-solid.button-priority-tertiary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-tertiary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1672
1539
  background-color: var(--color-border-standard-strong, var(--color-bg-surface-strong));
1673
1540
  border-color: var(--theme-button-tertiary-solid-bg, var(--color-bg-surface-neutral));
1674
1541
  box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.48);
1675
1542
  }
1676
1543
 
1677
- .button:where([data-variant=outlined][data-intent=primary]):hover:not(:disabled), .button:where([data-variant=outlined][data-intent=primary])[data-simulated-state=hover]:not(:disabled) {
1544
+ .button.button-fill-outlined.button-priority-primary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-primary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1678
1545
  background-color: var(--theme-button-overlay-outlined-primary-bg, var(--color-blue-90));
1679
1546
  border-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1680
1547
  box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.68);
1681
1548
  }
1682
- .button:where([data-variant=outlined][data-intent=primary]):active:not(:disabled), .button:where([data-variant=outlined][data-intent=primary])[data-simulated-state=pressed]:not(:disabled) {
1549
+ .button.button-fill-outlined.button-priority-primary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-primary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1683
1550
  background-color: var(--theme-button-overlay-outlined-primary-bg, var(--color-blue-90));
1684
1551
  border-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1685
1552
  box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.28);
1686
1553
  }
1687
1554
 
1688
- .button:where([data-variant=outlined][data-intent=secondary]):hover:not(:disabled), .button:where([data-variant=outlined][data-intent=secondary])[data-simulated-state=hover]:not(:disabled) {
1555
+ .button.button-fill-outlined.button-priority-secondary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-secondary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1689
1556
  background-color: var(--theme-button-overlay-outlined-secondary-bg, var(--color-cool-gray-95));
1690
1557
  border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1691
1558
  box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.68);
1692
1559
  }
1693
- .button:where([data-variant=outlined][data-intent=secondary]):active:not(:disabled), .button:where([data-variant=outlined][data-intent=secondary])[data-simulated-state=pressed]:not(:disabled) {
1560
+ .button.button-fill-outlined.button-priority-secondary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-secondary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1694
1561
  background-color: var(--theme-button-overlay-outlined-secondary-bg, var(--color-cool-gray-95));
1695
1562
  border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1696
1563
  box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.28);
1697
1564
  }
1698
1565
 
1699
- .button:where([data-variant=outlined][data-intent=teritary]):hover:not(:disabled), .button:where([data-variant=outlined][data-intent=teritary])[data-simulated-state=hover]:not(:disabled) {
1566
+ .button.button-fill-outlined.button-priority-tertiary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-tertiary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1700
1567
  background-color: var(--theme-button-overlay-outlined-tertiary-bg, var(--color-cool-gray-95));
1701
1568
  border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1702
1569
  box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.68);
1703
1570
  }
1704
- .button:where([data-variant=outlined][data-intent=teritary]):active:not(:disabled), .button:where([data-variant=outlined][data-intent=teritary])[data-simulated-state=pressed]:not(:disabled) {
1571
+ .button.button-fill-outlined.button-priority-tertiary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-tertiary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1705
1572
  background-color: var(--theme-button-overlay-outlined-tertiary-bg, var(--color-cool-gray-95));
1706
1573
  border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1707
1574
  box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.28);
1708
1575
  }
1709
1576
 
1710
1577
  .button:disabled,
1711
- .button:where([data-disabled=true]) {
1578
+ .button[aria-disabled=true] {
1712
1579
  background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1713
1580
  border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1714
1581
  color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1715
1582
  cursor: not-allowed;
1716
1583
  }
1717
1584
 
1718
- .button:where([data-shape=round]) {
1719
- border-radius: 9999px;
1720
- }
1721
-
1722
- .button:where([data-icon-slot=left]) .button-label {
1585
+ .button.button-icon-left .button-label {
1723
1586
  margin-left: var(--theme-button-gap-1, var(--spacing-gap-1, 4px));
1724
1587
  }
1725
1588
 
1726
- .button:where([data-icon-slot=right]) .button-label {
1589
+ .button.button-icon-right .button-label {
1727
1590
  margin-right: var(--theme-button-gap-1, var(--spacing-gap-1, 4px));
1728
1591
  }
1729
1592
 
1593
+ .button.button-template-text {
1594
+ min-width: auto;
1595
+ border-color: transparent;
1596
+ background-color: transparent;
1597
+ padding-block: var(--theme-button-text-padding-block, var(--spacing-padding-4, 8px));
1598
+ padding-inline: var(--theme-button-text-padding-inline-small, var(--spacing-padding-4, 8px));
1599
+ border-width: 0;
1600
+ gap: var(--spacing-gap-1, 4px);
1601
+ border-radius: var(--theme-button-text-radius, var(--theme-radius-small, 4px));
1602
+ }
1603
+
1604
+ .button.button-template-text-size-small {
1605
+ min-height: var(--theme-button-text-min-height-small, var(--theme-size-small-1, 20px));
1606
+ padding-inline: var(--theme-button-text-padding-inline-small, var(--spacing-padding-4, 8px));
1607
+ }
1608
+
1609
+ .button.button-template-text-size-medium {
1610
+ min-height: var(--theme-button-text-min-height-medium, var(--theme-size-small-2, 24px));
1611
+ padding-inline: var(--theme-button-text-padding-inline-medium, var(--spacing-padding-5, 12px));
1612
+ }
1613
+
1614
+ .button.button-template-text-size-large {
1615
+ min-height: var(--theme-button-text-min-height-large, var(--theme-size-small-3, 32px));
1616
+ padding-inline: var(--theme-button-text-padding-inline-large, var(--spacing-padding-5, 12px));
1617
+ }
1618
+
1619
+ .button.button-template-text:disabled {
1620
+ background-color: transparent;
1621
+ border-color: transparent;
1622
+ }
1623
+
1624
+ .button.button-template-text.button-priority-secondary {
1625
+ color: var(--theme-button-color-primary-default, var(--color-primary-default));
1626
+ }
1627
+ .button.button-template-text.button-priority-secondary:hover:not(:disabled), .button.button-template-text.button-priority-secondary[data-user-action=hover]:not(:disabled) {
1628
+ background-color: var(--color-bg-alternative-cool-gray, var(--color-cool-gray-95));
1629
+ }
1630
+ .button.button-template-text.button-priority-secondary:active:not(:disabled), .button.button-template-text.button-priority-secondary[data-user-action=pressed]:not(:disabled) {
1631
+ background-color: var(--color-secondary-strong, var(--color-blue-90));
1632
+ }
1633
+
1634
+ .button.button-template-text.button-priority-tertiary {
1635
+ color: var(--theme-button-color-cool-gray-10, var(--color-cool-gray-10));
1636
+ }
1637
+ .button.button-template-text.button-priority-tertiary:hover:not(:disabled), .button.button-template-text.button-priority-tertiary[data-user-action=hover]:not(:disabled) {
1638
+ background-color: var(--color-bg-alternative-cool-gray, var(--color-cool-gray-95));
1639
+ }
1640
+ .button.button-template-text.button-priority-tertiary:active:not(:disabled), .button.button-template-text.button-priority-tertiary[data-user-action=pressed]:not(:disabled) {
1641
+ background-color: var(--color-bg-surface-strong, var(--color-cool-gray-20));
1642
+ }
1643
+
1644
+ .button.button-template-round {
1645
+ min-width: auto;
1646
+ padding-block: var(--theme-button-round-padding-block, var(--spacing-padding-2, 4px));
1647
+ padding-inline: var(--theme-button-round-padding-inline-medium, var(--spacing-padding-6, 16px));
1648
+ gap: var(--spacing-gap-2, 8px);
1649
+ }
1650
+
1651
+ .button.button-template-round-size-small {
1652
+ min-height: var(--theme-button-round-min-height-small, var(--theme-size-small-2, 24px));
1653
+ padding-inline: var(--theme-button-round-padding-inline-small, var(--spacing-padding-5, 12px));
1654
+ border-radius: var(--theme-button-round-radius-small, var(--theme-radius-xlarge-2, 16px));
1655
+ }
1656
+
1657
+ .button.button-template-round-size-medium {
1658
+ min-height: var(--theme-button-round-min-height-medium, var(--theme-size-small-3, 32px));
1659
+ padding-inline: var(--theme-button-round-padding-inline-medium, var(--spacing-padding-6, 16px));
1660
+ border-radius: var(--theme-button-round-radius-medium, var(--theme-radius-xlarge-2, 16px));
1661
+ }
1662
+
1663
+ .button.button-template-round-size-large {
1664
+ min-height: var(--theme-button-round-min-height-large, var(--theme-size-medium-1, 40px));
1665
+ padding-inline: var(--theme-button-round-padding-inline-large, var(--spacing-padding-7, 20px));
1666
+ border-radius: var(--theme-button-round-radius-large, 30px);
1667
+ }
1668
+
1730
1669
  /* TODO(calendar): 스타일을 SOT 토큰 값으로 정의한다. */
1731
1670
  :where(.radix-themes, .theme-root, :root) {
1732
1671
  --theme-checkbox-frame-size-medium: 20px;
@@ -2500,12 +2439,12 @@ figure.chip {
2500
2439
  --theme-input-height-small: var(--theme-size-medium-1);
2501
2440
  --theme-input-height-medium: var(--theme-size-medium-2);
2502
2441
  --theme-input-height-large: var(--theme-size-medium-3);
2503
- --theme-input-height-teritary: calc(var(--theme-size-medium-2) + 24px);
2442
+ --theme-input-height-tertiary: calc(var(--theme-size-medium-2) + 24px);
2504
2443
  --theme-input-padding-x: var(--spacing-padding-6);
2505
2444
  --theme-input-padding-y: var(--spacing-padding-4);
2506
2445
  --theme-input-gap: var(--spacing-gap-4);
2507
2446
  --theme-input-radius-default: var(--theme-radius-large-1);
2508
- --theme-input-radius-teritary: var(--theme-radius-large-2);
2447
+ --theme-input-radius-tertiary: var(--theme-radius-large-2);
2509
2448
  --theme-input-label-color: var(--color-label-standard);
2510
2449
  --theme-input-helper-color: var(--color-label-neutral);
2511
2450
  --theme-input-helper-disabled-color: var(--color-label-disabled);
@@ -2591,23 +2530,23 @@ figure.chip {
2591
2530
  padding-block: var(--spacing-padding-4);
2592
2531
  background-color: transparent;
2593
2532
  }
2594
- .input-field[data-appearance=teritary] {
2595
- border-radius: var(--theme-input-radius-teritary);
2533
+ .input-field[data-appearance=tertiary] {
2534
+ border-radius: var(--theme-input-radius-tertiary);
2596
2535
  background-color: var(--theme-input-surface);
2597
- min-height: var(--theme-input-height-teritary);
2536
+ min-height: var(--theme-input-height-tertiary);
2598
2537
  flex-wrap: wrap;
2599
2538
  row-gap: var(--spacing-gap-1);
2600
2539
  column-gap: var(--theme-input-gap);
2601
2540
  }
2602
- .input-field[data-appearance=teritary] .input-inline-label {
2541
+ .input-field[data-appearance=tertiary] .input-inline-label {
2603
2542
  flex-basis: 100%;
2604
2543
  }
2605
- .input-field[data-appearance=teritary] .input-element {
2544
+ .input-field[data-appearance=tertiary] .input-element {
2606
2545
  min-height: var(--theme-size-medium-2);
2607
2546
  width: auto;
2608
2547
  flex: 1 1 auto;
2609
2548
  }
2610
- .input-field[data-appearance=teritary] .input-element + .input-affix {
2549
+ .input-field[data-appearance=tertiary] .input-element + .input-affix {
2611
2550
  margin-left: auto;
2612
2551
  }
2613
2552
  .input-field:not([data-appearance=secondary])[data-state=active], .input-field:not([data-appearance=secondary])[data-state=focused] {
@@ -2666,7 +2605,7 @@ figure.chip {
2666
2605
  padding-inline: 0;
2667
2606
  }
2668
2607
 
2669
- .input-field[data-appearance=teritary] .input-element {
2608
+ .input-field[data-appearance=tertiary] .input-element {
2670
2609
  min-height: var(--theme-size-medium-2);
2671
2610
  }
2672
2611
 
@@ -3443,17 +3382,14 @@ figure.chip {
3443
3382
  /* Figma node 694:4619 측정값을 CSS 변수로 고정해 Storybook과 실 서비스 간 시각 편차를 줄인다. */
3444
3383
  --tab-label-font-size: var(--font-heading-xsmall-size, 17px);
3445
3384
  --tab-label-font-weight: var(--font-heading-xsmall-weight, 600);
3446
- --tab-label-line-height: var(--font-heading-xsmall-line-height, 1.5em);
3447
- --tab-label-letter-spacing: var(--font-heading-xsmall-letter-spacing, 0px);
3448
- --tab-gap: 10px;
3385
+ --tab-label-line-height: 1.4;
3386
+ --tab-label-letter-spacing: 0px;
3387
+ --tab-gap: var(--spacing-gap-2, 8px);
3449
3388
  --tab-padding-y: 10px;
3450
- --tab-padding-x: 20px;
3389
+ --tab-padding-x: var(--spacing-padding-8, 24px);
3451
3390
  --tab-icon-gap: 6px;
3452
- --tab-line-track-color: var(
3453
- --color-border-divider,
3454
- var(--color-cool-gray-85)
3455
- );
3456
- --tab-line-track-height: 1.6px;
3391
+ --tab-line-track-color: var(--color-border-divider, #f2f2f3);
3392
+ --tab-line-track-height: 1px;
3457
3393
  --tab-line-indicator-height: 2px;
3458
3394
  --tab-color-active-default: #1a6aff;
3459
3395
  --tab-color-active: var(--tab-color-active-default);
@@ -3463,12 +3399,33 @@ figure.chip {
3463
3399
  --tab-fill-active-color: var(--color-common-100, #ffffff);
3464
3400
  --tab-inactive-color: var(--color-label-alternative, #afb1b6);
3465
3401
  --tab-disabled-opacity: 0.4;
3402
+ --tab-height: 48px;
3466
3403
  width: 100%;
3467
3404
  display: flex;
3468
3405
  flex-direction: column;
3469
3406
  gap: var(--spacing-gap-3);
3470
3407
  }
3471
3408
 
3409
+ .tab-root:where([data-scale=small]) {
3410
+ --tab-label-font-size: var(--font-heading-xxsmall-size, 15px);
3411
+ --tab-label-font-weight: var(--font-heading-xxsmall-weight, 600);
3412
+ --tab-height: 40px;
3413
+ --tab-padding-x: var(--spacing-padding-4, 8px);
3414
+ }
3415
+
3416
+ .tab-root:where([data-scale=medium]) {
3417
+ --tab-label-font-size: var(--font-heading-xsmall-size, 17px);
3418
+ --tab-label-font-weight: var(--font-heading-xsmall-weight, 600);
3419
+ --tab-height: 48px;
3420
+ }
3421
+
3422
+ .tab-root:where([data-scale=large]) {
3423
+ --tab-label-font-size: var(--font-heading-small-size, 19px);
3424
+ --tab-label-font-weight: var(--font-heading-small-weight, 600);
3425
+ --tab-height: 56px;
3426
+ --tab-padding-x: var(--spacing-padding-8, 24px);
3427
+ }
3428
+
3472
3429
  .tab-list {
3473
3430
  display: flex;
3474
3431
  align-items: stretch;
@@ -3492,6 +3449,7 @@ figure.chip {
3492
3449
  align-items: center;
3493
3450
  justify-content: center;
3494
3451
  gap: var(--tab-icon-gap);
3452
+ min-height: var(--tab-height);
3495
3453
  padding: var(--tab-padding-y) var(--tab-padding-x);
3496
3454
  background: transparent;
3497
3455
  border: none;
@@ -3591,7 +3549,6 @@ figure.chip {
3591
3549
  .tab-trigger:where([data-variant=fill]) {
3592
3550
  border-radius: 12px;
3593
3551
  min-width: 0;
3594
- padding: var(--tab-padding-y) var(--tab-padding-x);
3595
3552
  }
3596
3553
 
3597
3554
  .tab-trigger:where([data-variant=fill][data-state=active]) {