@uniai-fe/uds-primitives 0.2.11 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/styles.css +1118 -890
  2. package/package.json +1 -1
  3. package/src/components/button/index.tsx +1 -1
  4. package/src/components/button/markup/Base.tsx +1 -1
  5. package/src/components/button/styles/button.scss +32 -0
  6. package/src/components/button/styles/variables.scss +16 -0
  7. package/src/components/button/types/index.ts +3 -179
  8. package/src/components/button/types/{constants.ts → options.ts} +28 -13
  9. package/src/components/button/types/props.ts +264 -0
  10. package/src/components/chip/markup/Chip.tsx +14 -2
  11. package/src/components/chip/styles/chip.scss +154 -0
  12. package/src/components/chip/styles/index.scss +2 -138
  13. package/src/components/chip/styles/variables.scss +26 -0
  14. package/src/components/chip/types/index.ts +2 -52
  15. package/src/components/chip/types/options.ts +38 -0
  16. package/src/components/chip/types/props.ts +115 -0
  17. package/src/components/chip/utils/class-name.ts +36 -0
  18. package/src/components/chip/utils/index.ts +1 -36
  19. package/src/components/form/index.tsx +3 -16
  20. package/src/components/form/markup/form-field/index.tsx +1 -0
  21. package/src/components/form/markup/index.tsx +11 -0
  22. package/src/components/form/styles/index.scss +2 -2
  23. package/src/components/form/utils/index.ts +1 -0
  24. package/src/components/input/markup/foundation/Button.tsx +1 -6
  25. package/src/components/input/markup/text/AuthCode.tsx +3 -1
  26. package/src/components/input/markup/text/Email.tsx +16 -11
  27. package/src/components/input/markup/text/Password.tsx +3 -3
  28. package/src/components/input/markup/text/Phone.tsx +30 -28
  29. package/src/components/input/markup/text/Search.tsx +3 -1
  30. package/src/components/input/types/text.ts +10 -5
  31. package/src/components/input/utils/index.tsx +0 -1
  32. package/src/components/table/markup/Container.tsx +36 -70
  33. package/src/components/table/markup/foundation/Cell.tsx +4 -6
  34. package/src/components/table/styles/foundation.scss +75 -9
  35. package/src/components/table/types/foundation.ts +62 -59
  36. package/src/index.scss +7 -6
  37. package/src/index.tsx +19 -22
  38. package/src/components/button/types/templates.ts +0 -84
  39. package/src/components/input/utils/verification.tsx +0 -35
package/dist/styles.css CHANGED
@@ -18,24 +18,30 @@
18
18
  --button-default-gap-small: var(--spacing-gap-1);
19
19
  --button-default-gap-medium: var(--spacing-gap-2);
20
20
  --button-default-gap-large: var(--spacing-gap-3);
21
+ /* 변경: Figma node(705:13710) 기준 table 버튼 gap을 보정한다. */
22
+ --button-default-gap-table: var(--spacing-gap-1);
21
23
  --button-default-padding-inline-base: var(--spacing-padding-4);
22
24
  --button-default-padding-inline-small: var(--spacing-padding-6);
23
25
  --button-default-padding-inline-medium: var(--spacing-padding-7);
24
26
  --button-default-padding-inline-large: var(--spacing-padding-9);
27
+ --button-default-padding-inline-table: var(--spacing-padding-5);
25
28
  --button-default-padding-block-base: 0px;
26
29
  --button-default-padding-block-small: 0px;
27
30
  --button-default-padding-block-medium: 0px;
28
31
  --button-default-padding-block-large: 0px;
32
+ --button-default-padding-block-table: 0px;
29
33
  /* default button sizing */
30
34
  --button-default-width-min-base: var(--theme-size-small-2);
31
35
  --button-default-height-small: var(--theme-size-small-3, 32px);
32
36
  --button-default-height-medium: var(--theme-size-medium-1, 40px);
33
37
  --button-default-height-large: var(--theme-size-medium-2, 48px);
34
38
  --button-default-height-xlarge: var(--theme-size-medium-3, 56px);
39
+ --button-default-height-table: var(--theme-size-small-2, 24px);
35
40
  --button-default-radius-small: var(--theme-radius-medium-3);
36
41
  --button-default-radius-medium: var(--theme-radius-medium-3);
37
42
  --button-default-radius-large: var(--theme-radius-large-1);
38
43
  --button-default-radius-xlarge: var(--theme-radius-large-2);
44
+ --button-default-radius-table: var(--theme-radius-medium-2);
39
45
  /* text buttons */
40
46
  --button-text-padding-block-base: var(--spacing-padding-4, 8px);
41
47
  --button-text-padding-inline-small: var(--spacing-padding-4, 8px);
@@ -90,6 +96,16 @@
90
96
  --button-default-font-body-large-letter-spacing: var(
91
97
  --font-body-large-letter-spacing
92
98
  );
99
+ /* 변경: table 버튼은 caption-large 스케일(12px)을 사용한다. */
100
+ --button-default-font-caption-large-size: var(--font-caption-large-size);
101
+ /* 변경: table 버튼 텍스트는 font-weight를 400으로 고정한다. */
102
+ --button-default-font-caption-large-weight: 400;
103
+ --button-default-font-caption-large-line-height: var(
104
+ --font-caption-large-line-height
105
+ );
106
+ --button-default-font-caption-large-letter-spacing: var(
107
+ --font-caption-large-letter-spacing
108
+ );
93
109
  --button-default-font-weight: 400;
94
110
  /* default button colors (priority 기반) */
95
111
  --button-default-neutral-foreground: var(--color-neutral-20);
@@ -166,12 +182,32 @@
166
182
  --theme-checkbox-icon-disabled-selected: var(--color-common-100);
167
183
  --theme-checkbox-focus-ring: rgba(2, 84, 255, 0.32);
168
184
  --theme-chip-height: var(--theme-size-small-3, 32px);
169
- --theme-chip-padding-inline: var(--spacing-padding-5, 12px);
185
+ --theme-chip-padding-horizontal: var(--spacing-padding-5, 12px);
186
+ --theme-chip-gap: var(--spacing-gap-1, 4px);
187
+ /* 변경: table chip 수치를 Figma table 액션 셀 기준으로 보정한다. */
188
+ /* 변경: table chip 높이는 button table과 동일하게 24px로 맞춘다. */
189
+ --theme-chip-height-table: 24px;
190
+ --theme-chip-padding-horizontal-table: var(--spacing-padding-5, 12px);
191
+ --theme-chip-padding-left-table: var(--spacing-padding-5, 12px);
192
+ --theme-chip-padding-right-table: var(--spacing-padding-4, 8px);
193
+ /* 변경: table chip은 높이 24px 고정을 위해 수직 padding을 사용하지 않는다. */
194
+ --theme-chip-padding-block-table: 0px;
195
+ --theme-chip-gap-table: var(--spacing-gap-1, 4px);
196
+ --theme-chip-font-size-table: var(--font-caption-large-size, 12px);
197
+ /* 변경: table chip 텍스트는 font-weight를 400으로 고정한다. */
198
+ --theme-chip-font-weight-table: 400;
199
+ --theme-chip-line-height-table: var(--font-caption-large-line-height, 1.5);
200
+ /* 변경: Figma 705:13702 기준으로 table chip radius를 6px로 고정한다. */
201
+ --theme-chip-radius-table: var(--theme-radius-medium-2, 6px);
170
202
  --theme-chip-radius: var(--theme-radius-medium-3, 8px);
171
203
  --theme-chip-rounded-radius: var(--theme-radius-large-2, 16px);
172
204
  --theme-chip-font-family: var(--font-body-medium-family, "Pretendard");
173
205
  --theme-chip-font-size: var(--font-body-xsmall-size, 13px);
174
206
  --theme-chip-font-weight: var(--font-body-xsmall-weight, 400);
207
+ --divider-width: 1px;
208
+ --divider-height: 12px;
209
+ --divider-color: var(--color-border-standard-cool-gray, #e4e5e7);
210
+ --divider-margin: var(--spacing-gap-4, 8px);
175
211
  --drawer-overlay-bg: rgba(0, 0, 0, 0.44);
176
212
  --drawer-surface-bg: var(--color-surface-static-white);
177
213
  --drawer-radius-large: var(--theme-radius-large-2);
@@ -228,17 +264,45 @@
228
264
  --dropdown-option-height-small: var(--theme-size-medium-1, 40px);
229
265
  --dropdown-option-height-medium: var(--theme-size-medium-2, 48px);
230
266
  --dropdown-option-height-large: var(--theme-size-medium-3, 56px);
231
- --tooltip-message-background: var(--color-cool-gray-20);
232
- --tooltip-message-foreground: var(--color-common-100);
233
- --tooltip-message-radius: var(--theme-radius-medium-3);
234
- --tooltip-message-padding-inline: var(--spacing-padding-5);
235
- --tooltip-message-padding-block: var(--spacing-padding-4);
236
- --tooltip-message-font-size: var(--font-caption-large-size);
237
- --tooltip-message-line-height: var(--font-caption-large-line-height);
238
- --tooltip-message-letter-spacing: var(--font-caption-large-letter-spacing);
239
- --tooltip-message-font-weight: 400;
240
- --tooltip-trigger-icon-size: 16px;
241
- --tooltip-trigger-icon-color: var(--color-label-alternative);
267
+ --form-field-width: auto;
268
+ --form-field-flex: 0 0 auto;
269
+ --form-field-gap-x: var(--spacing-gap-5, 12px);
270
+ --form-field-gap-y: var(--spacing-gap-3, 6px);
271
+ --form-field-label-font-size: var(--font-label-small-size);
272
+ --form-field-label-font-weight: 400;
273
+ --form-field-label-line-height: var(--font-label-small-line-height);
274
+ --form-field-label-color: var(--color-label-standard);
275
+ --form-field-helper-font-size: var(--font-caption-medium-size);
276
+ --form-field-helper-font-weight: 400;
277
+ --form-field-helper-line-height: var(--font-caption-medium-line-height);
278
+ --form-field-helper-color: var(--color-label-neutral);
279
+ --info-box-background-color: color-mix(
280
+ in srgb,
281
+ var(--color-feedback-information) 9%,
282
+ var(--color-common-100)
283
+ );
284
+ --info-box-border-color: color-mix(
285
+ in srgb,
286
+ var(--color-feedback-information) 24%,
287
+ var(--color-common-100)
288
+ );
289
+ --info-box-icon-color: var(--color-feedback-information);
290
+ --info-box-heading-color: var(--color-feedback-information);
291
+ --info-box-body-color: var(--color-label-strong);
292
+ --info-box-radius: var(--theme-radius-120x120);
293
+ --info-box-padding-block: var(--spacing-padding-6);
294
+ --info-box-padding-inline: var(--spacing-padding-6);
295
+ --info-box-gap-icon: var(--spacing-gap-4);
296
+ --info-box-gap-contents: var(--spacing-gap-3);
297
+ --info-box-icon-size: 24px;
298
+ --info-box-heading-font-size: var(--font-heading-xsmall-size);
299
+ --info-box-heading-line-height: var(--font-heading-xsmall-line-height);
300
+ --info-box-heading-letter-spacing: var(--font-heading-xsmall-letter-spacing);
301
+ --info-box-heading-font-weight: var(--font-heading-xsmall-weight);
302
+ --info-box-body-font-size: var(--font-body-small-size);
303
+ --info-box-body-line-height: var(--font-body-small-line-height);
304
+ --info-box-body-letter-spacing: var(--font-body-small-letter-spacing);
305
+ --info-box-body-font-weight: var(--font-body-small-weight);
242
306
  /* Layout presets */
243
307
  --input-width: 100%;
244
308
  --input-flex: 0 1 auto;
@@ -288,6 +352,46 @@
288
352
  --input-surface-color: var(--color-common-100);
289
353
  --input-surface-muted-color: var(--color-neutral-99);
290
354
  --input-surface-disabled-color: var(--color-neutral-95);
355
+ --theme-navigation-height: 86px;
356
+ --theme-navigation-padding-inline: 32px;
357
+ --theme-navigation-padding-block-start: 8px;
358
+ --theme-navigation-padding-block-end: 20px;
359
+ --theme-navigation-item-gap: 2px;
360
+ --theme-navigation-icon-size: 24px;
361
+ --theme-navigation-label-font-size: 12px;
362
+ --theme-navigation-label-line-height: 1.4;
363
+ --theme-navigation-label-font-weight: 500;
364
+ --theme-navigation-label-letter-spacing: -0.12px;
365
+ --theme-navigation-bg: var(--color-common-100, #ffffff);
366
+ --theme-navigation-border: var(--color-border-assistive, #e4e5e7);
367
+ --theme-navigation-shadow: 0 -4px 16px rgba(0, 0, 0, 0.04);
368
+ --theme-navigation-color: var(--color-label-strong, #3d3f43);
369
+ --theme-navigation-color-active: var(--color-primary-default, #0061ff);
370
+ --theme-navigation-color-disabled: var(--color-label-disabled, #c5c6cc);
371
+ --theme-radio-frame-size-medium: 20px;
372
+ --theme-radio-frame-size-large: 24px;
373
+ --theme-radio-indicator-size-medium: 16px;
374
+ --theme-radio-indicator-size-large: 20px;
375
+ --theme-radio-indicator-border-width: 1.4px;
376
+ --theme-radio-indicator-border-width-selected-medium: 4px;
377
+ --theme-radio-indicator-border-width-selected-large: 6px;
378
+ --theme-radio-border-color: var(--color-border-assistive);
379
+ --theme-radio-border-selected: var(--color-primary-default);
380
+ --theme-radio-surface-selected: var(--color-primary-default);
381
+ --theme-radio-surface-disabled: var(--color-border-assistive);
382
+ --theme-radio-border-disabled: var(--color-border-assistive);
383
+ --theme-radio-disabled-selected-fill: var(--color-primary-default);
384
+ --theme-radio-label-color: var(--color-label-strong);
385
+ --theme-radio-label-disabled: var(--color-label-disabled);
386
+ --theme-radio-helper-color: var(--color-label-neutral);
387
+ --theme-radio-helper-disabled: var(--color-label-disabled);
388
+ --theme-radio-card-background: var(--color-common-100);
389
+ --theme-radio-card-title-color: var(--color-label-strong);
390
+ --theme-radio-card-description-color: var(--color-label-neutral);
391
+ --theme-radio-card-badge-background: var(--color-surface-static-blue);
392
+ --theme-radio-card-badge-color: var(--color-primary-default);
393
+ --theme-radio-focus-ring: rgba(2, 84, 255, 0.32);
394
+ --theme-radio-disabled-selected-opacity: 0.28;
291
395
  /* layout presets */
292
396
  --select-width: 100%;
293
397
  --select-flex: 0 1 auto;
@@ -398,58 +502,6 @@
398
502
  --font-body-medium-line-height
399
503
  );
400
504
  --select-multiple-chip-summary-font-weight: 400;
401
- --form-field-width: auto;
402
- --form-field-flex: 0 0 auto;
403
- --form-field-gap-x: var(--spacing-gap-5, 12px);
404
- --form-field-gap-y: var(--spacing-gap-3, 6px);
405
- --form-field-label-font-size: var(--font-label-small-size);
406
- --form-field-label-font-weight: 400;
407
- --form-field-label-line-height: var(--font-label-small-line-height);
408
- --form-field-label-color: var(--color-label-standard);
409
- --form-field-helper-font-size: var(--font-caption-medium-size);
410
- --form-field-helper-font-weight: 400;
411
- --form-field-helper-line-height: var(--font-caption-medium-line-height);
412
- --form-field-helper-color: var(--color-label-neutral);
413
- --theme-navigation-height: 86px;
414
- --theme-navigation-padding-inline: 32px;
415
- --theme-navigation-padding-block-start: 8px;
416
- --theme-navigation-padding-block-end: 20px;
417
- --theme-navigation-item-gap: 2px;
418
- --theme-navigation-icon-size: 24px;
419
- --theme-navigation-label-font-size: 12px;
420
- --theme-navigation-label-line-height: 1.4;
421
- --theme-navigation-label-font-weight: 500;
422
- --theme-navigation-label-letter-spacing: -0.12px;
423
- --theme-navigation-bg: var(--color-common-100, #ffffff);
424
- --theme-navigation-border: var(--color-border-assistive, #e4e5e7);
425
- --theme-navigation-shadow: 0 -4px 16px rgba(0, 0, 0, 0.04);
426
- --theme-navigation-color: var(--color-label-strong, #3d3f43);
427
- --theme-navigation-color-active: var(--color-primary-default, #0061ff);
428
- --theme-navigation-color-disabled: var(--color-label-disabled, #c5c6cc);
429
- --theme-radio-frame-size-medium: 20px;
430
- --theme-radio-frame-size-large: 24px;
431
- --theme-radio-indicator-size-medium: 16px;
432
- --theme-radio-indicator-size-large: 20px;
433
- --theme-radio-indicator-border-width: 1.4px;
434
- --theme-radio-indicator-border-width-selected-medium: 4px;
435
- --theme-radio-indicator-border-width-selected-large: 6px;
436
- --theme-radio-border-color: var(--color-border-assistive);
437
- --theme-radio-border-selected: var(--color-primary-default);
438
- --theme-radio-surface-selected: var(--color-primary-default);
439
- --theme-radio-surface-disabled: var(--color-border-assistive);
440
- --theme-radio-border-disabled: var(--color-border-assistive);
441
- --theme-radio-disabled-selected-fill: var(--color-primary-default);
442
- --theme-radio-label-color: var(--color-label-strong);
443
- --theme-radio-label-disabled: var(--color-label-disabled);
444
- --theme-radio-helper-color: var(--color-label-neutral);
445
- --theme-radio-helper-disabled: var(--color-label-disabled);
446
- --theme-radio-card-background: var(--color-common-100);
447
- --theme-radio-card-title-color: var(--color-label-strong);
448
- --theme-radio-card-description-color: var(--color-label-neutral);
449
- --theme-radio-card-badge-background: var(--color-surface-static-blue);
450
- --theme-radio-card-badge-color: var(--color-primary-default);
451
- --theme-radio-focus-ring: rgba(2, 84, 255, 0.32);
452
- --theme-radio-disabled-selected-opacity: 0.28;
453
505
  --table-border-color: var(--color-border-standard-cool-gray);
454
506
  --table-line-head-background-color: var(--color-surface-static-cool-gray);
455
507
  --table-grid-head-background-color: var(
@@ -472,10 +524,17 @@
472
524
  --table-td-text-size: 15px;
473
525
  --table-td-text-weight: var(--font-body-xsmall-weight);
474
526
  --table-td-text-line-height: var(--font-body-xsmall-line-height);
475
- --divider-width: 1px;
476
- --divider-height: 12px;
477
- --divider-color: var(--color-border-standard-cool-gray, #e4e5e7);
478
- --divider-margin: var(--spacing-gap-4, 8px);
527
+ --tooltip-message-background: var(--color-cool-gray-20);
528
+ --tooltip-message-foreground: var(--color-common-100);
529
+ --tooltip-message-radius: var(--theme-radius-medium-3);
530
+ --tooltip-message-padding-inline: var(--spacing-padding-5);
531
+ --tooltip-message-padding-block: var(--spacing-padding-4);
532
+ --tooltip-message-font-size: var(--font-caption-large-size);
533
+ --tooltip-message-line-height: var(--font-caption-large-line-height);
534
+ --tooltip-message-letter-spacing: var(--font-caption-large-letter-spacing);
535
+ --tooltip-message-font-weight: 400;
536
+ --tooltip-trigger-icon-size: 16px;
537
+ --tooltip-trigger-icon-color: var(--color-label-alternative);
479
538
  }
480
539
 
481
540
  @keyframes alternate-loading-spin {
@@ -948,6 +1007,19 @@
948
1007
  line-height: var(--button-default-font-body-large-line-height, var(--font-body-large-line-height, 1.5em));
949
1008
  letter-spacing: var(--button-default-font-body-large-letter-spacing, var(--font-body-large-letter-spacing, 0px));
950
1009
  }
1010
+ .button:where(.button-size-table) {
1011
+ padding-inline: var(--button-default-padding-inline-table, var(--spacing-padding-5, 12px));
1012
+ gap: var(--button-default-gap-table, var(--spacing-gap-1, 4px));
1013
+ padding-block: var(--button-default-padding-block-table, 0px);
1014
+ min-height: var(--button-default-height-table, var(--theme-size-small-2, 24px));
1015
+ border-radius: var(--button-default-radius-table, var(--theme-radius-medium-2, 6px));
1016
+ }
1017
+ .button:where(.button-size-table) span {
1018
+ font-size: var(--button-default-font-caption-large-size, var(--font-caption-large-size, 12px));
1019
+ font-weight: var(--button-default-font-caption-large-weight, var(--button-default-font-weight, 400));
1020
+ line-height: var(--button-default-font-caption-large-line-height, var(--font-caption-large-line-height, 1.5em));
1021
+ letter-spacing: var(--button-default-font-caption-large-letter-spacing, var(--font-caption-large-letter-spacing, 0px));
1022
+ }
951
1023
  .button:where(.button-fill-outlined) {
952
1024
  box-shadow: none;
953
1025
  }
@@ -1480,7 +1552,7 @@
1480
1552
 
1481
1553
 
1482
1554
  .chip {
1483
- --chip-gap: var(--spacing-gap-1, 4px);
1555
+ --chip-gap: var(--theme-chip-gap);
1484
1556
  --chip-bg: transparent;
1485
1557
  --chip-border-color: transparent;
1486
1558
  --chip-label-color: var(--color-label-standard, #3d3f43);
@@ -1489,7 +1561,8 @@
1489
1561
  justify-content: center;
1490
1562
  gap: var(--chip-gap);
1491
1563
  height: var(--theme-chip-height);
1492
- padding-inline: var(--theme-chip-padding-inline);
1564
+ padding-left: var(--theme-chip-padding-horizontal);
1565
+ padding-right: var(--theme-chip-padding-horizontal);
1493
1566
  padding-block: 0;
1494
1567
  border-radius: var(--theme-chip-radius);
1495
1568
  border: 1px solid var(--chip-border-color);
@@ -1553,8 +1626,34 @@ figure.chip {
1553
1626
  --chip-bg: var(--color-common-100, #ffffff);
1554
1627
  --chip-label-color: var(--color-label-standard, #3d3f43);
1555
1628
  --chip-border-color: var(--color-border-assistive, #e4e5e7);
1556
- padding-inline-start: var(--spacing-padding-4, 8px);
1557
- padding-inline-end: var(--spacing-padding-2, 4px);
1629
+ padding-left: var(--spacing-padding-4, 8px);
1630
+ padding-right: var(--spacing-padding-2, 4px);
1631
+ }
1632
+
1633
+ .chip:where([data-size=table]) {
1634
+ height: var(--theme-chip-height-table);
1635
+ padding-left: var(--theme-chip-padding-horizontal-table);
1636
+ padding-right: var(--theme-chip-padding-horizontal-table);
1637
+ padding-block: var(--theme-chip-padding-block-table);
1638
+ --chip-gap: var(--theme-chip-gap-table);
1639
+ font-size: var(--theme-chip-font-size-table);
1640
+ font-weight: var(--theme-chip-font-weight-table);
1641
+ line-height: var(--theme-chip-line-height-table);
1642
+ border-radius: var(--theme-chip-radius-table);
1643
+ }
1644
+
1645
+ .chip:where([data-size=table]) .chip-label {
1646
+ line-height: var(--theme-chip-line-height-table);
1647
+ }
1648
+
1649
+ .chip:where([data-size=table][data-kind=input]) {
1650
+ padding-left: var(--theme-chip-padding-left-table);
1651
+ padding-right: var(--theme-chip-padding-right-table);
1652
+ }
1653
+
1654
+ .chip:where([data-size=table][data-kind=input]) .chip-remove-button {
1655
+ width: fit-content;
1656
+ height: fit-content;
1558
1657
  }
1559
1658
 
1560
1659
  .chip:where([data-kind=input][data-selected=true]) {
@@ -1562,7 +1661,7 @@ figure.chip {
1562
1661
  }
1563
1662
 
1564
1663
  .chip-leading {
1565
- display: inline-flex;
1664
+ display: flex;
1566
1665
  align-items: center;
1567
1666
  justify-content: center;
1568
1667
  color: inherit;
@@ -1570,7 +1669,7 @@ figure.chip {
1570
1669
  }
1571
1670
 
1572
1671
  .chip-label {
1573
- display: inline-flex;
1672
+ display: flex;
1574
1673
  align-items: center;
1575
1674
  gap: var(--spacing-gap-1, 4px);
1576
1675
  color: inherit;
@@ -1579,11 +1678,11 @@ figure.chip {
1579
1678
  }
1580
1679
 
1581
1680
  .chip-remove-button {
1582
- display: inline-flex;
1681
+ display: flex;
1583
1682
  align-items: center;
1584
1683
  justify-content: center;
1585
- width: 16px;
1586
- height: 16px;
1684
+ width: fit-content;
1685
+ height: fit-content;
1587
1686
  border: none;
1588
1687
  background: transparent;
1589
1688
  color: var(--color-label-neutral, #797e86);
@@ -1603,6 +1702,19 @@ figure.chip {
1603
1702
  height: 100%;
1604
1703
  }
1605
1704
 
1705
+ /* Divider 토큰도 전역 :root 범위에 선언한다. */
1706
+
1707
+
1708
+ .divider {
1709
+ width: var(--divider-width);
1710
+ height: var(--divider-height);
1711
+ background-color: var(--divider-color);
1712
+ margin: 0 var(--divider-margin);
1713
+ vertical-align: middle;
1714
+ align-self: center;
1715
+ font-size: 0;
1716
+ }
1717
+
1606
1718
 
1607
1719
 
1608
1720
  .drawer-overlay {
@@ -1951,81 +2063,131 @@ figure.chip {
1951
2063
  padding: 0;
1952
2064
  }
1953
2065
 
1954
- .pop-over-content {
1955
- position: relative;
1956
- z-index: 50;
1957
- outline: none;
2066
+
2067
+
2068
+ .form-field-container {
2069
+ display: block;
2070
+ width: var(--form-field-width);
2071
+ flex: var(--form-field-flex);
2072
+ }
2073
+ .form-field-container[data-width=auto] {
2074
+ --form-field-width: auto;
2075
+ --form-field-flex: 0 0 auto;
2076
+ }
2077
+ .form-field-container[data-width=fill] {
2078
+ --form-field-width: auto;
2079
+ --form-field-flex: 1 1 0%;
2080
+ }
2081
+ .form-field-container[data-width=full] {
2082
+ --form-field-width: 100%;
2083
+ --form-field-flex: 0 0 100%;
2084
+ }
2085
+ .form-field-container[data-width=fit] {
2086
+ --form-field-width: fit-content;
2087
+ --form-field-flex: 0 0 auto;
2088
+ }
2089
+ .form-field-container[data-width=custom] {
2090
+ --form-field-flex: 0 0 auto;
1958
2091
  }
1959
2092
 
1960
- .pop-over-content {
1961
- width: fit-content;
1962
- max-width: min(100vw - 24px, max-content);
1963
- box-sizing: border-box;
1964
- background-color: var(--color-common-100);
1965
- border-radius: var(--theme-radius-large-2);
1966
- overflow: hidden;
1967
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.16), 0 0 2px rgba(0, 0, 0, 0.12);
2093
+ .form-field-header {
2094
+ margin-bottom: var(--form-field-gap-y);
1968
2095
  }
1969
2096
 
1970
- .pop-over-content[data-width=match] {
1971
- width: var(--radix-popover-trigger-width);
2097
+ .form-field-required {
2098
+ color: var(--color-feedback-error);
1972
2099
  }
1973
2100
 
1974
- .pop-over-content[data-width=fit-content] {
1975
- width: fit-content;
2101
+ .form-field-label {
2102
+ display: flex;
2103
+ align-items: center;
2104
+ gap: var(--spacing-gap-1);
2105
+ font-size: var(--form-field-label-font-size);
2106
+ font-weight: var(--form-field-label-font-weight);
2107
+ line-height: var(--form-field-label-line-height);
2108
+ }
2109
+ .form-field-label span:not(.form-field-required) {
2110
+ color: var(--form-field-label-color);
1976
2111
  }
1977
2112
 
1978
- .pop-over-content[data-width=max-content] {
1979
- width: max-content;
2113
+ .form-field-body {
2114
+ display: flex;
2115
+ flex-wrap: wrap;
2116
+ gap: var(--form-field-gap-x);
2117
+ width: 100%;
2118
+ }
2119
+
2120
+ .form-field-footer {
2121
+ margin-top: var(--form-field-gap-y);
2122
+ font-size: var(--form-field-helper-font-size);
2123
+ line-height: var(--form-field-helper-line-height);
2124
+ }
2125
+ .form-field-footer p,
2126
+ .form-field-footer span {
2127
+ color: var(--form-field-helper-color);
1980
2128
  }
1981
2129
 
1982
2130
 
1983
2131
 
1984
- .tooltip-trigger {
1985
- display: inline-flex;
1986
- align-items: center;
1987
- justify-content: center;
2132
+ .info-box {
2133
+ display: flex;
2134
+ align-items: flex-start;
2135
+ gap: var(--info-box-gap-icon);
2136
+ width: 100%;
2137
+ box-sizing: border-box;
2138
+ margin: 0;
2139
+ padding: var(--info-box-padding-block) var(--info-box-padding-inline);
2140
+ border: 1px solid var(--info-box-border-color);
2141
+ border-radius: var(--info-box-radius);
2142
+ background-color: var(--info-box-background-color);
1988
2143
  }
1989
2144
 
1990
- .tooltip-template-trigger {
2145
+ .info-box:where([data-state=info]) {
2146
+ --info-box-icon-color: var(--color-feedback-information);
2147
+ --info-box-heading-color: var(--color-feedback-information);
2148
+ }
2149
+
2150
+ .info-box-icon {
1991
2151
  display: inline-flex;
1992
- width: var(--tooltip-trigger-icon-size);
1993
- height: var(--tooltip-trigger-icon-size);
1994
2152
  align-items: center;
1995
2153
  justify-content: center;
1996
- padding: 0;
1997
- border: 0;
1998
- background-color: transparent;
1999
- color: var(--tooltip-trigger-icon-color);
2000
- cursor: pointer;
2154
+ margin: 0;
2155
+ width: var(--info-box-icon-size);
2156
+ height: var(--info-box-icon-size);
2157
+ color: var(--info-box-icon-color);
2158
+ flex-shrink: 0;
2001
2159
  }
2002
2160
 
2003
- .tooltip-template-trigger svg {
2161
+ .info-box-icon svg {
2162
+ display: block;
2004
2163
  width: 100%;
2005
2164
  height: 100%;
2006
- display: block;
2007
2165
  }
2008
2166
 
2009
- .tooltip-message {
2010
- max-width: min(20rem, 100vw - 1.5rem);
2011
- box-sizing: border-box;
2012
- border-radius: var(--tooltip-message-radius);
2013
- background-color: var(--tooltip-message-background);
2014
- padding: var(--tooltip-message-padding-block) var(--tooltip-message-padding-inline);
2167
+ .info-box-content {
2168
+ display: flex;
2169
+ flex: 1;
2170
+ min-width: 0;
2171
+ flex-direction: column;
2172
+ gap: var(--info-box-gap-contents);
2015
2173
  }
2016
2174
 
2017
- .tooltip-message-text {
2018
- display: block;
2019
- color: var(--tooltip-message-foreground);
2020
- font-size: var(--tooltip-message-font-size);
2021
- line-height: var(--tooltip-message-line-height);
2022
- letter-spacing: var(--tooltip-message-letter-spacing);
2023
- font-weight: var(--tooltip-message-font-weight);
2024
- white-space: normal;
2175
+ .info-box-heading {
2176
+ margin: 0;
2177
+ color: var(--info-box-heading-color);
2178
+ font-size: var(--info-box-heading-font-size);
2179
+ line-height: var(--info-box-heading-line-height);
2180
+ letter-spacing: var(--info-box-heading-letter-spacing);
2181
+ font-weight: var(--info-box-heading-font-weight);
2025
2182
  }
2026
2183
 
2027
- .tooltip-message-arrow {
2028
- fill: var(--tooltip-message-background);
2184
+ .info-box-body {
2185
+ margin: 0;
2186
+ color: var(--info-box-body-color);
2187
+ font-size: var(--info-box-body-font-size);
2188
+ line-height: var(--info-box-body-line-height);
2189
+ letter-spacing: var(--info-box-body-letter-spacing);
2190
+ font-weight: var(--info-box-body-font-weight);
2029
2191
  }
2030
2192
 
2031
2193
 
@@ -2586,988 +2748,952 @@ figure.chip {
2586
2748
  cursor: pointer;
2587
2749
  }
2588
2750
 
2589
- /* Select tokens mapped to Input primary tokens for visual parity */
2590
2751
 
2591
2752
 
2592
- .select {
2593
- display: flex;
2594
- width: var(--select-width);
2595
- flex: var(--select-flex);
2596
- flex-direction: column;
2597
- gap: var(--spacing-gap-2);
2598
- min-width: 0;
2753
+ .bottom-navigation {
2754
+ width: 100%;
2755
+ position: relative;
2756
+ z-index: 10;
2757
+ background-color: var(--theme-navigation-bg);
2758
+ border-top: 1px solid var(--theme-navigation-border);
2759
+ box-shadow: var(--theme-navigation-shadow, 0 -4px 16px rgba(0, 0, 0, 0.04));
2760
+ padding-inline: var(--theme-navigation-padding-inline);
2761
+ padding-block-start: var(--theme-navigation-padding-block-start);
2762
+ padding-block-end: max(var(--theme-navigation-padding-block-end), env(safe-area-inset-bottom, 0px));
2763
+ min-height: var(--theme-navigation-height);
2599
2764
  }
2600
2765
 
2601
- .select[data-width=auto] {
2602
- --select-width: auto;
2603
- --select-flex: 0 1 auto;
2766
+ .bottom-navigation[data-fixed=true] {
2767
+ position: fixed;
2768
+ inset-inline: 0;
2769
+ bottom: 0;
2770
+ z-index: 20;
2604
2771
  }
2605
2772
 
2606
- .select[data-width=fill] {
2607
- --select-width: auto;
2608
- --select-flex: 1 1 0%;
2773
+ .bottom-navigation-list {
2774
+ display: flex;
2775
+ align-items: flex-start;
2776
+ justify-content: space-between;
2777
+ gap: 0;
2778
+ padding: 0;
2779
+ margin: 0;
2780
+ list-style: none;
2609
2781
  }
2610
2782
 
2611
- .select[data-width=full],
2612
- .select-block {
2613
- --select-width: 100%;
2614
- --select-flex: 0 0 100%;
2783
+ .bottom-navigation-item {
2784
+ flex: 1;
2785
+ min-width: 0;
2786
+ display: flex;
2787
+ justify-content: center;
2615
2788
  }
2616
2789
 
2617
- .select[data-width=fit] {
2618
- --select-width: fit-content;
2619
- --select-flex: 0 0 auto;
2790
+ .bottom-navigation-trigger {
2791
+ display: inline-flex;
2792
+ flex-direction: column;
2793
+ align-items: center;
2794
+ gap: var(--theme-navigation-item-gap);
2795
+ min-width: 0;
2796
+ padding: 0;
2797
+ border: none;
2798
+ background: none;
2799
+ appearance: none;
2800
+ text-decoration: none;
2801
+ color: var(--theme-navigation-color);
2802
+ font: inherit;
2803
+ cursor: pointer;
2804
+ -webkit-tap-highlight-color: transparent;
2805
+ transition: color 0.16s ease;
2620
2806
  }
2621
2807
 
2622
- .select[data-width=custom] {
2623
- --select-flex: 0 0 auto;
2808
+ .bottom-navigation-trigger[data-active=true] {
2809
+ color: var(--theme-navigation-color-active);
2624
2810
  }
2625
2811
 
2626
- .select-button {
2627
- --select-icon-fill: var(--select-icon-color-default);
2628
- display: flex;
2629
- width: 100%;
2630
- align-items: center;
2631
- gap: var(--select-primary-gap-inline);
2632
- min-height: var(--select-primary-height-medium);
2633
- padding: var(--select-primary-padding-block) var(--select-primary-padding-inline);
2634
- border: var(--select-primary-border-width-default) solid var(--select-primary-color-border);
2635
- border-radius: var(--select-primary-radius-medium);
2636
- background-color: var(--input-surface-color);
2637
- cursor: pointer;
2638
- transition: border-color 150ms ease, background-color 150ms ease, color 150ms ease;
2639
- text-align: left;
2640
- }
2641
- .select-button[data-size=small] {
2642
- min-height: var(--select-primary-height-small);
2643
- border-radius: var(--select-primary-radius-small);
2812
+ .bottom-navigation-trigger[data-disabled=true],
2813
+ .bottom-navigation-trigger:disabled {
2814
+ color: var(--theme-navigation-color-disabled);
2815
+ cursor: default;
2816
+ pointer-events: none;
2644
2817
  }
2645
- .select-button[data-size=large] {
2646
- min-height: var(--select-primary-height-large);
2647
- border-radius: var(--select-primary-radius-large);
2818
+
2819
+ .bottom-navigation-trigger:focus-visible {
2820
+ outline: none;
2821
+ border-radius: var(--theme-radius-large-1, 12px);
2822
+ box-shadow: 0 0 0 2px var(--color-primary-focus, rgba(0, 97, 255, 0.2));
2648
2823
  }
2649
- .select-button[data-multiple=true] {
2824
+
2825
+ .navigation-item-icon {
2826
+ display: inline-flex;
2650
2827
  align-items: center;
2651
- flex-wrap: nowrap;
2652
- overflow: hidden;
2828
+ justify-content: center;
2829
+ width: var(--theme-navigation-icon-size);
2830
+ height: var(--theme-navigation-icon-size);
2831
+ color: currentColor;
2653
2832
  }
2654
- .select-button[data-priority=secondary] {
2655
- width: fit-content;
2656
- max-width: 100%;
2657
- min-height: auto;
2658
- border: none;
2659
- border-radius: var(--select-secondary-radius);
2660
- padding: var(--select-secondary-padding-block) var(--select-secondary-padding-inline);
2661
- background-color: transparent;
2662
- gap: var(--select-secondary-gap);
2663
- position: relative;
2664
- --select-icon-fill: currentColor;
2665
- transition: background-color 150ms ease, color 150ms ease;
2833
+ .navigation-item-icon svg {
2834
+ display: block;
2835
+ width: 100%;
2836
+ height: 100%;
2666
2837
  }
2667
- .select-button[data-priority=secondary]:hover:not([data-state=disabled]) {
2668
- background-color: var(--select-color-surface-secondary-hover);
2838
+ .navigation-item-icon {
2839
+ /* SVG fill/stroke를 currentColor로 맞춰 selected 컬러만 제어한다. */
2669
2840
  }
2670
- .select-button[data-priority=secondary]:active:not([data-state=disabled]) {
2671
- background-color: var(--select-color-surface-secondary-active);
2841
+ .navigation-item-icon svg [fill]:not([fill=none]) {
2842
+ fill: currentColor;
2672
2843
  }
2673
- .select-button[data-priority=secondary][data-state=focused], .select-button[data-priority=secondary][data-open=true] {
2674
- background-color: var(--select-color-surface-secondary-hover);
2844
+ .navigation-item-icon svg [stroke]:not([stroke=none]) {
2845
+ stroke: currentColor;
2675
2846
  }
2676
- .select-button[data-priority=secondary][data-state=focused]::after, .select-button[data-priority=secondary][data-open=true]::after {
2677
- height: var(--select-secondary-underline-width-focus);
2678
- background-color: var(--select-color-border-secondary-focused);
2847
+
2848
+ .navigation-item-label {
2849
+ display: block;
2850
+ font-size: var(--theme-navigation-label-font-size);
2851
+ font-weight: var(--theme-navigation-label-font-weight);
2852
+ line-height: var(--theme-navigation-label-line-height);
2853
+ letter-spacing: var(--theme-navigation-label-letter-spacing);
2854
+ color: currentColor;
2855
+ text-align: center;
2856
+ white-space: nowrap;
2857
+ overflow: hidden;
2858
+ text-overflow: ellipsis;
2859
+ max-width: 100%;
2679
2860
  }
2680
- .select-button[data-priority=secondary][data-state=disabled], .select-button[data-priority=secondary]:disabled {
2681
- color: var(--color-label-disabled);
2682
- cursor: not-allowed;
2861
+
2862
+ /* Pagination native 구현 스타일 */
2863
+ .pagination {
2864
+ --pagination-gap: var(--spacing-gap-2, 8px);
2865
+ --pagination-number-height: var(--theme-size-small-2, 24px);
2866
+ --pagination-number-min-width: var(--theme-size-small-2, 24px);
2867
+ --pagination-number-radius: var(--theme-radius-medium-1, 6px);
2868
+ --pagination-color-active-bg: var(--color-cool-gray-10, #18191b);
2869
+ --pagination-color-active-label: var(--color-common-100, #ffffff);
2870
+ --pagination-color-inactive-label: var(--color-label-alternative, #afb1b6);
2871
+ --pagination-dot-size: 8px;
2872
+ --pagination-dot-bg: var(--color-cool-gray-85, #d2d3d7);
2873
+ --pagination-dot-active-bg: var(--color-primary-default, #0061ff);
2874
+ --pagination-dot-active-bg-secondary: var(
2875
+ --color-surface-heavy,
2876
+ #313235
2877
+ );
2878
+ --pagination-carousel-height: 8px;
2879
+ --pagination-carousel-dot-width: 8px;
2880
+ --pagination-carousel-active-width: 20px;
2881
+ --pagination-count-bg: var(--color-cool-gray-10, #18191b);
2882
+ --pagination-count-divider: var(--color-common-100, #ffffff);
2883
+ --pagination-count-total: var(--color-label-alternative, #afb1b6);
2884
+ display: inline-flex;
2885
+ gap: var(--pagination-gap);
2886
+ align-items: center;
2887
+ padding: 0;
2888
+ margin: 0;
2889
+ list-style: none;
2683
2890
  }
2684
- .select-button[data-priority=table] {
2685
- border-radius: var(--select-table-radius);
2686
- border-color: var(--select-table-border-default-color);
2687
- background-color: var(--select-table-surface-color);
2688
- --select-icon-fill: var(--select-table-icon-color-default);
2891
+
2892
+ .pagination[data-interactive=false] .pagination-button,
2893
+ .pagination-button:disabled {
2894
+ cursor: default;
2689
2895
  }
2690
- .select-button:not([data-priority=secondary])[data-state=focused], .select-button:not([data-priority=secondary])[data-open=true], .select-button:not([data-priority=secondary]):focus-visible {
2691
- border-color: var(--select-primary-color-border-focused);
2692
- border-width: var(--select-primary-border-width-focus);
2693
- --select-icon-fill: var(--select-icon-color-focused);
2896
+
2897
+ .pagination-item {
2898
+ list-style: none;
2694
2899
  }
2695
- .select-button[data-priority=table][data-state=focused], .select-button[data-priority=table][data-open=true], .select-button[data-priority=table]:focus-visible {
2696
- border-color: var(--select-table-border-focus-color);
2697
- border-width: var(--select-primary-border-width-focus);
2698
- --select-icon-fill: var(--select-table-icon-color-focused);
2699
- }
2700
- .select-button:not([data-priority=secondary])[data-state=disabled], .select-button:not([data-priority=secondary]):disabled {
2701
- border-color: var(--select-primary-color-border-disabled);
2702
- background-color: var(--select-primary-color-surface-disabled);
2703
- cursor: not-allowed;
2704
- --select-icon-fill: var(--select-icon-color-disabled);
2705
- }
2706
- .select-button[data-priority=secondary][data-state=disabled], .select-button[data-priority=secondary]:disabled {
2707
- border-color: transparent;
2708
- background-color: var(--select-color-surface-secondary-disabled);
2709
- }
2710
- .select-button[data-priority=secondary][data-state=disabled]::after, .select-button[data-priority=secondary]:disabled::after {
2711
- background-color: var(--select-color-border-secondary-disabled);
2712
- height: var(--select-secondary-underline-width-default);
2713
- }
2714
- .select-button[data-priority=table][data-state=disabled], .select-button[data-priority=table]:disabled {
2715
- border-color: var(--select-table-border-disabled-color);
2716
- background-color: var(--select-table-surface-disabled-color);
2717
- cursor: not-allowed;
2718
- --select-icon-fill: var(--select-table-icon-color-disabled);
2900
+
2901
+ .pagination-button {
2902
+ appearance: none;
2903
+ border: none;
2904
+ background: transparent;
2905
+ padding: 0;
2906
+ margin: 0;
2907
+ display: inline-flex;
2908
+ align-items: center;
2909
+ justify-content: center;
2910
+ cursor: pointer;
2911
+ color: inherit;
2912
+ font: inherit;
2913
+ transition: background-color 0.16s ease, color 0.16s ease, opacity 0.16s ease;
2719
2914
  }
2720
2915
 
2721
- .select-value {
2722
- flex: 1 1 auto;
2723
- min-width: 0;
2724
- display: flex;
2725
- flex-direction: column;
2726
- gap: var(--spacing-gap-2);
2916
+ .pagination--variant-list {
2917
+ gap: var(--spacing-gap-1, 4px);
2727
2918
  }
2728
2919
 
2729
- .select-label {
2730
- flex: 1 1 auto;
2731
- min-width: 0;
2732
- font-family: var(--font-body-medium-family);
2733
- font-size: var(--select-text-medium-size);
2734
- font-weight: var(--select-text-medium-weight);
2735
- line-height: var(--select-text-medium-line-height);
2736
- letter-spacing: var(--select-text-medium-letter-spacing);
2737
- color: var(--select-primary-color-text);
2738
- overflow: hidden;
2739
- text-overflow: ellipsis;
2740
- white-space: nowrap;
2741
- }
2742
- .select-button[data-priority=secondary] .select-label {
2743
- color: var(--select-secondary-color-text);
2920
+ .pagination--variant-list .pagination-button {
2921
+ min-width: var(--pagination-number-min-width);
2922
+ height: var(--pagination-number-height);
2923
+ padding-inline: var(--spacing-padding-2, 8px);
2924
+ border-radius: var(--pagination-number-radius);
2925
+ background-color: transparent;
2926
+ color: var(--pagination-color-inactive-label);
2927
+ font-size: var(--font-label-medium-size, 12px);
2928
+ font-weight: var(--font-label-medium-weight, 400);
2929
+ line-height: var(--font-label-medium-line-height, 1.5);
2744
2930
  }
2745
- .select-button[data-priority=table] .select-label {
2746
- color: var(--select-table-color-text);
2931
+
2932
+ .pagination[data-interactive=true] .pagination--variant-list .pagination-button:not([data-active=true]):hover {
2933
+ background-color: var(--color-bg-alternative-cool-gray, #f0f1f5);
2934
+ color: var(--color-label-strong, #5b5c60);
2747
2935
  }
2748
- .select-button[data-state=focused] .select-label, .select-button[data-open=true] .select-label {
2749
- color: var(--select-primary-color-text-focused);
2936
+
2937
+ .pagination--variant-list .pagination-button[data-active=true] {
2938
+ background-color: var(--pagination-color-active-bg);
2939
+ color: var(--pagination-color-active-label);
2750
2940
  }
2751
- .select-button[data-state=disabled] .select-label {
2752
- color: var(--select-primary-color-text-disabled);
2941
+
2942
+ .pagination-number {
2943
+ min-width: 1ch;
2944
+ text-align: center;
2753
2945
  }
2754
- .select-button[data-priority=secondary][data-state=disabled] .select-label {
2755
- color: var(--color-label-disabled);
2946
+
2947
+ .pagination--variant-carousel {
2948
+ gap: 5px;
2949
+ min-height: var(--pagination-carousel-height);
2950
+ align-items: center;
2756
2951
  }
2757
2952
 
2758
- .select-label-placeholder {
2759
- color: var(--select-primary-color-placeholder);
2953
+ .pagination--variant-carousel[data-priority=secondary] {
2954
+ --pagination-dot-active-bg: var(
2955
+ --pagination-dot-active-bg-secondary,
2956
+ var(--color-secondary-strong, #ccdeff)
2957
+ );
2760
2958
  }
2761
- .select-button[data-priority=secondary] .select-label-placeholder {
2762
- color: var(--select-secondary-color-placeholder);
2959
+
2960
+ .pagination--variant-carousel .pagination-button {
2961
+ width: auto;
2962
+ height: var(--pagination-carousel-height);
2963
+ padding: 0;
2763
2964
  }
2764
- .select-button[data-priority=table] .select-label-placeholder {
2765
- color: var(--select-table-color-placeholder);
2965
+
2966
+ .pagination--variant-carousel .pagination-dot {
2967
+ display: inline-flex;
2968
+ width: var(--pagination-carousel-dot-width);
2969
+ height: var(--pagination-carousel-height);
2970
+ border-radius: calc(var(--pagination-carousel-height) / 2);
2971
+ background-color: var(--pagination-dot-bg);
2972
+ transition: width 0.16s ease, background-color 0.16s ease;
2766
2973
  }
2767
2974
 
2768
- .select-button[data-size=small] .select-label {
2769
- font-size: var(--select-text-small-size);
2770
- line-height: var(--select-text-small-line-height);
2771
- letter-spacing: var(--select-text-small-letter-spacing);
2772
- font-weight: var(--select-text-small-weight);
2975
+ .pagination--variant-carousel .pagination-button[data-active=true] .pagination-dot {
2976
+ width: var(--pagination-carousel-active-width);
2977
+ background-color: var(--pagination-dot-active-bg);
2773
2978
  }
2774
2979
 
2775
- .select-button[data-priority=table][data-size=small] .select-label {
2776
- font-size: var(--select-table-text-small-size);
2777
- line-height: var(--select-table-text-small-line-height);
2778
- font-weight: var(--select-table-text-small-weight);
2980
+ .pagination--variant-count {
2981
+ gap: 0;
2779
2982
  }
2780
2983
 
2781
- .select-button[data-size=large] .select-label {
2782
- font-size: var(--select-text-large-size);
2783
- line-height: var(--select-text-large-line-height);
2784
- letter-spacing: var(--select-text-large-letter-spacing);
2785
- font-weight: var(--select-text-large-weight);
2984
+ .pagination--variant-count .pagination-button {
2985
+ border-radius: var(--theme-radius-large-2, 16px);
2986
+ padding-inline: var(--spacing-padding-4, 16px);
2987
+ background-color: var(--pagination-count-bg);
2988
+ color: var(--pagination-color-active-label);
2989
+ font-weight: var(--font-label-medium-weight, 400);
2990
+ line-height: 1.5;
2786
2991
  }
2787
2992
 
2788
- .select-button[data-priority=table][data-size=medium] .select-label {
2789
- font-size: var(--select-table-text-medium-size);
2790
- line-height: var(--select-table-text-medium-line-height);
2791
- font-weight: var(--select-table-text-medium-weight);
2993
+ .pagination--variant-count.pagination--count-size-small .pagination-button {
2994
+ height: var(--theme-size-small-2, 24px);
2995
+ font-size: var(--font-label-medium-size, 12px);
2792
2996
  }
2793
2997
 
2794
- .select-button[data-priority=table][data-size=large] .select-label {
2795
- font-size: var(--select-table-text-large-size);
2796
- line-height: var(--select-table-text-large-line-height);
2797
- font-weight: var(--select-table-text-large-weight);
2998
+ .pagination--variant-count.pagination--count-size-xsmall .pagination-button {
2999
+ height: var(--theme-size-small-1, 20px);
3000
+ font-size: var(--font-label-small-size, 11px);
2798
3001
  }
2799
3002
 
2800
- .select-button[data-priority=secondary][data-size=large] .select-label {
2801
- font-weight: 600;
3003
+ .pagination-count-current {
3004
+ color: var(--pagination-color-active-label);
2802
3005
  }
2803
3006
 
2804
- .select-tags {
2805
- display: flex;
2806
- flex-wrap: nowrap;
2807
- gap: var(--select-multiple-chip-gap);
2808
- align-items: center;
2809
- min-width: 0;
2810
- flex: 1 1 auto;
3007
+ .pagination-count-divider {
3008
+ margin-inline: var(--spacing-gap-1, 4px);
3009
+ color: var(--pagination-count-divider);
2811
3010
  }
2812
3011
 
2813
- .select-tag {
2814
- display: flex;
2815
- align-items: center;
2816
- gap: var(--select-multiple-chip-gap);
2817
- padding: var(--select-multiple-chip-padding-block) var(--select-multiple-chip-padding-inline);
2818
- border-radius: var(--select-multiple-chip-radius);
2819
- border: 1px solid var(--select-multiple-chip-border-color, var(--color-border-standard-cool-gray));
2820
- background-color: var(--select-multiple-chip-surface);
2821
- color: var(--select-multiple-chip-color);
2822
- font-size: var(--select-multiple-chip-font-size);
2823
- line-height: var(--select-multiple-chip-line-height);
2824
- font-weight: var(--select-multiple-chip-font-weight);
2825
- white-space: nowrap;
2826
- min-height: var(--select-multiple-chip-height);
3012
+ .pagination-count-total {
3013
+ color: var(--pagination-count-total);
2827
3014
  }
2828
- .select-tag:focus-within {
2829
- border-color: var(--select-color-border-secondary-focused);
3015
+
3016
+ .pop-over-content {
3017
+ position: relative;
3018
+ z-index: 50;
3019
+ outline: none;
2830
3020
  }
2831
- .select-tag[data-removable=true] {
2832
- padding-right: var(--spacing-padding-2);
3021
+
3022
+ .pop-over-content {
3023
+ width: fit-content;
3024
+ max-width: min(100vw - 24px, max-content);
3025
+ box-sizing: border-box;
3026
+ background-color: var(--color-common-100);
3027
+ border-radius: var(--theme-radius-large-2);
3028
+ overflow: hidden;
3029
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.16), 0 0 2px rgba(0, 0, 0, 0.12);
2833
3030
  }
2834
3031
 
2835
- .select-tag[data-kind=summary],
2836
- .select-tag-summary {
2837
- background-color: var(--select-multiple-chip-summary-surface);
2838
- border-color: var(--select-multiple-chip-summary-border-color);
2839
- color: var(--select-multiple-chip-summary-color);
2840
- padding: var(--select-multiple-chip-summary-padding-block) var(--select-multiple-chip-summary-padding-inline);
2841
- border-radius: var(--select-multiple-chip-summary-radius);
2842
- font-size: var(--select-multiple-chip-summary-font-size);
2843
- line-height: var(--select-multiple-chip-summary-line-height);
2844
- font-weight: var(--select-multiple-chip-summary-font-weight);
2845
- min-height: auto;
3032
+ .pop-over-content[data-width=match] {
3033
+ width: var(--radix-popover-trigger-width);
2846
3034
  }
2847
3035
 
2848
- .select-tag-label {
2849
- display: flex;
2850
- align-items: center;
2851
- gap: var(--spacing-gap-1);
2852
- min-width: 0;
3036
+ .pop-over-content[data-width=fit-content] {
3037
+ width: fit-content;
2853
3038
  }
2854
3039
 
2855
- .select-tag-suffix {
2856
- color: var(--select-multiple-chip-suffix-color);
2857
- font-size: inherit;
2858
- line-height: inherit;
3040
+ .pop-over-content[data-width=max-content] {
3041
+ width: max-content;
2859
3042
  }
2860
3043
 
2861
- .select-tag-remove {
2862
- display: flex;
3044
+
3045
+
3046
+ .radio {
3047
+ display: inline-flex;
2863
3048
  align-items: center;
2864
3049
  justify-content: center;
2865
- width: var(--select-icon-size-small);
2866
- height: var(--select-icon-size-small);
3050
+ inline-size: var(--theme-radio-frame-size-medium);
3051
+ block-size: var(--theme-radio-frame-size-medium);
2867
3052
  border: none;
2868
3053
  background-color: transparent;
3054
+ border-radius: 0;
2869
3055
  padding: 0;
2870
3056
  cursor: pointer;
2871
- color: var(--select-multiple-chip-remove-color);
2872
- flex-shrink: 0;
2873
- border-radius: 9999px;
2874
- transition: color 150ms ease;
3057
+ transition: box-shadow 0.15s ease, transform 0.15s ease;
2875
3058
  }
2876
- .select-tag-remove:focus-visible {
2877
- outline: 0.2rem solid var(--color-border-strong);
2878
- outline-offset: 0.1rem;
3059
+ .radio[data-size=large] {
3060
+ inline-size: var(--theme-radio-frame-size-large);
3061
+ block-size: var(--theme-radio-frame-size-large);
2879
3062
  }
2880
- .select-tag-remove:hover {
2881
- color: var(--select-multiple-chip-remove-hover-color);
3063
+ .radio[data-disabled=true] {
3064
+ cursor: not-allowed;
3065
+ opacity: 0.6;
2882
3066
  }
2883
- .select-tag-remove svg {
2884
- width: 100%;
2885
- height: 100%;
3067
+
3068
+ .radio:focus-visible {
3069
+ box-shadow: 0 0 0 2px var(--theme-radio-focus-ring);
2886
3070
  }
2887
- .select-tag-remove svg path {
2888
- fill: currentColor;
3071
+
3072
+ .radio-indicator {
3073
+ inline-size: var(--theme-radio-indicator-size-medium);
3074
+ block-size: var(--theme-radio-indicator-size-medium);
3075
+ border-radius: 9999px;
3076
+ border: var(--theme-radio-indicator-border-width) solid var(--theme-radio-border-color);
3077
+ transition: border-color 0.15s ease;
2889
3078
  }
2890
3079
 
2891
- .select-icon {
2892
- flex-shrink: 0;
2893
- width: var(--select-icon-size-medium);
2894
- height: var(--select-icon-size-medium);
2895
- display: flex;
2896
- align-items: center;
2897
- justify-content: center;
2898
- margin-left: auto;
2899
- }
2900
- .select-icon[data-size=small] {
2901
- width: var(--select-icon-size-small);
2902
- height: var(--select-icon-size-small);
2903
- }
2904
- .select-icon[data-size=large] {
2905
- width: var(--select-icon-size-large);
2906
- height: var(--select-icon-size-large);
2907
- }
2908
- [data-open=true] .select-icon {
2909
- transform: rotate(180deg);
2910
- }
2911
- .select-icon svg {
2912
- display: block;
2913
- width: 100%;
2914
- height: 100%;
2915
- }
2916
- .select-icon svg path {
2917
- fill: var(--select-icon-fill);
3080
+ .radio[data-state=checked] .radio-indicator,
3081
+ .radio[data-size=medium][data-state=checked] .radio-indicator {
3082
+ border-width: var(--theme-radio-indicator-border-width-selected-medium);
2918
3083
  }
2919
3084
 
2920
-
2921
-
2922
- .form-field-container {
2923
- display: block;
2924
- width: var(--form-field-width);
2925
- flex: var(--form-field-flex);
2926
- }
2927
- .form-field-container[data-width=auto] {
2928
- --form-field-width: auto;
2929
- --form-field-flex: 0 0 auto;
2930
- }
2931
- .form-field-container[data-width=fill] {
2932
- --form-field-width: auto;
2933
- --form-field-flex: 1 1 0%;
2934
- }
2935
- .form-field-container[data-width=full] {
2936
- --form-field-width: 100%;
2937
- --form-field-flex: 0 0 100%;
3085
+ .radio[data-size=large] .radio-indicator {
3086
+ inline-size: var(--theme-radio-indicator-size-large);
3087
+ block-size: var(--theme-radio-indicator-size-large);
2938
3088
  }
2939
- .form-field-container[data-width=fit] {
2940
- --form-field-width: fit-content;
2941
- --form-field-flex: 0 0 auto;
3089
+ .radio[data-size=large][data-state=checked] .radio-indicator {
3090
+ border-width: var(--theme-radio-indicator-border-width-selected-large);
2942
3091
  }
2943
- .form-field-container[data-width=custom] {
2944
- --form-field-flex: 0 0 auto;
3092
+
3093
+ .radio[data-state=checked] .radio-indicator {
3094
+ border-color: var(--theme-radio-border-selected);
2945
3095
  }
2946
3096
 
2947
- .form-field-header {
2948
- margin-bottom: var(--form-field-gap-y);
3097
+ .radio[data-disabled=true] .radio-indicator {
3098
+ border-color: var(--theme-radio-border-disabled);
3099
+ background-color: var(--theme-radio-surface-disabled);
3100
+ opacity: 1;
2949
3101
  }
2950
3102
 
2951
- .form-field-required {
2952
- color: var(--color-feedback-error);
3103
+ .radio[data-disabled=true][data-state=checked] .radio-indicator {
3104
+ border-color: var(--theme-radio-disabled-selected-fill);
3105
+ opacity: var(--theme-radio-disabled-selected-opacity);
2953
3106
  }
2954
3107
 
2955
- .form-field-label {
3108
+ .radio-field {
2956
3109
  display: flex;
2957
- align-items: center;
3110
+ flex-direction: column;
2958
3111
  gap: var(--spacing-gap-1);
2959
- font-size: var(--form-field-label-font-size);
2960
- font-weight: var(--form-field-label-font-weight);
2961
- line-height: var(--form-field-label-line-height);
3112
+ color: var(--theme-radio-label-color);
2962
3113
  }
2963
- .form-field-label span:not(.form-field-required) {
2964
- color: var(--form-field-label-color);
3114
+
3115
+ .radio-field[data-disabled=true] {
3116
+ color: var(--theme-radio-label-disabled);
2965
3117
  }
2966
3118
 
2967
- .form-field-body {
2968
- display: flex;
2969
- flex-wrap: wrap;
2970
- gap: var(--form-field-gap-x);
2971
- width: 100%;
3119
+ .radio-label-wrapper {
3120
+ display: inline-flex;
3121
+ align-items: center;
3122
+ gap: var(--spacing-gap-2);
3123
+ cursor: pointer;
2972
3124
  }
2973
3125
 
2974
- .form-field-footer {
2975
- margin-top: var(--form-field-gap-y);
2976
- font-size: var(--form-field-helper-font-size);
2977
- line-height: var(--form-field-helper-line-height);
3126
+ .radio-label-wrapper[data-disabled=true] {
3127
+ cursor: not-allowed;
2978
3128
  }
2979
- .form-field-footer p,
2980
- .form-field-footer span {
2981
- color: var(--form-field-helper-color);
3129
+
3130
+ .radio-label-text {
3131
+ font-weight: var(--font-body-medium-weight);
3132
+ user-select: none;
2982
3133
  }
2983
3134
 
3135
+ .radio-field[data-size=medium] .radio-label-text {
3136
+ font-size: var(--font-body-xsmall-size);
3137
+ line-height: var(--font-body-xsmall-line-height);
3138
+ }
2984
3139
 
3140
+ .radio-field[data-size=large] .radio-label-text {
3141
+ font-size: var(--font-body-medium-size);
3142
+ line-height: var(--font-body-medium-line-height);
3143
+ }
2985
3144
 
2986
- .bottom-navigation {
2987
- width: 100%;
2988
- position: relative;
2989
- z-index: 10;
2990
- background-color: var(--theme-navigation-bg);
2991
- border-top: 1px solid var(--theme-navigation-border);
2992
- box-shadow: var(--theme-navigation-shadow, 0 -4px 16px rgba(0, 0, 0, 0.04));
2993
- padding-inline: var(--theme-navigation-padding-inline);
2994
- padding-block-start: var(--theme-navigation-padding-block-start);
2995
- padding-block-end: max(var(--theme-navigation-padding-block-end), env(safe-area-inset-bottom, 0px));
2996
- min-height: var(--theme-navigation-height);
3145
+ .radio-helper {
3146
+ margin: 0;
3147
+ font-size: var(--font-caption-large-size);
3148
+ line-height: var(--font-caption-large-line-height);
3149
+ color: var(--theme-radio-helper-color);
3150
+ user-select: none;
2997
3151
  }
2998
3152
 
2999
- .bottom-navigation[data-fixed=true] {
3000
- position: fixed;
3001
- inset-inline: 0;
3002
- bottom: 0;
3003
- z-index: 20;
3153
+ .radio-field[data-disabled=true] .radio-helper {
3154
+ color: var(--theme-radio-helper-disabled);
3004
3155
  }
3005
3156
 
3006
- .bottom-navigation-list {
3157
+ .radio-card-group {
3007
3158
  display: flex;
3008
- align-items: flex-start;
3159
+ flex-direction: column;
3160
+ gap: var(--spacing-gap-3);
3161
+ }
3162
+
3163
+ .radio-card {
3164
+ display: flex;
3165
+ align-items: center;
3009
3166
  justify-content: space-between;
3010
- gap: 0;
3011
- padding: 0;
3012
- margin: 0;
3013
- list-style: none;
3167
+ inline-size: 100%;
3168
+ gap: var(--spacing-gap-3);
3169
+ padding: 16px 24px;
3170
+ background-color: var(--theme-radio-card-background);
3171
+ transition: background-color 0.15s ease;
3172
+ cursor: pointer;
3173
+ }
3174
+ .radio-card[data-disabled=true] {
3175
+ cursor: not-allowed;
3176
+ opacity: 0.7;
3014
3177
  }
3015
3178
 
3016
- .bottom-navigation-item {
3017
- flex: 1;
3018
- min-width: 0;
3179
+ .radio-card-content {
3019
3180
  display: flex;
3020
- justify-content: center;
3181
+ flex-direction: column;
3182
+ gap: var(--spacing-gap-1);
3183
+ min-inline-size: 0;
3021
3184
  }
3022
3185
 
3023
- .bottom-navigation-trigger {
3186
+ .radio-card-title-row {
3024
3187
  display: inline-flex;
3025
- flex-direction: column;
3026
3188
  align-items: center;
3027
- gap: var(--theme-navigation-item-gap);
3028
- min-width: 0;
3029
- padding: 0;
3030
- border: none;
3031
- background: none;
3032
- appearance: none;
3033
- text-decoration: none;
3034
- color: var(--theme-navigation-color);
3035
- font: inherit;
3036
- cursor: pointer;
3037
- -webkit-tap-highlight-color: transparent;
3038
- transition: color 0.16s ease;
3189
+ gap: var(--spacing-gap-1);
3190
+ min-inline-size: 0;
3039
3191
  }
3040
3192
 
3041
- .bottom-navigation-trigger[data-active=true] {
3042
- color: var(--theme-navigation-color-active);
3193
+ .radio-card-title {
3194
+ font-size: var(--font-heading-small-size);
3195
+ line-height: var(--font-heading-small-line-height);
3196
+ font-weight: var(--font-heading-small-weight);
3197
+ letter-spacing: 0.2px;
3198
+ color: var(--theme-radio-card-title-color);
3199
+ white-space: nowrap;
3043
3200
  }
3044
3201
 
3045
- .bottom-navigation-trigger[data-disabled=true],
3046
- .bottom-navigation-trigger:disabled {
3047
- color: var(--theme-navigation-color-disabled);
3048
- cursor: default;
3049
- pointer-events: none;
3202
+ .radio-card-badge {
3203
+ display: none;
3204
+ align-items: center;
3205
+ justify-content: center;
3206
+ padding: 4px 6px;
3207
+ font-size: var(--font-caption-medium-size);
3208
+ line-height: var(--font-caption-medium-line-height);
3209
+ border-radius: 6px;
3210
+ background-color: var(--theme-radio-card-badge-background);
3211
+ color: var(--theme-radio-card-badge-color);
3050
3212
  }
3051
3213
 
3052
- .bottom-navigation-trigger:focus-visible {
3053
- outline: none;
3054
- border-radius: var(--theme-radius-large-1, 12px);
3055
- box-shadow: 0 0 0 2px var(--color-primary-focus, rgba(0, 97, 255, 0.2));
3214
+ .radio-card[data-state=checked] .radio-card-title {
3215
+ color: var(--theme-radio-card-badge-color);
3216
+ }
3217
+ .radio-card[data-state=checked] .radio-card-badge {
3218
+ display: inline-flex;
3056
3219
  }
3057
3220
 
3058
- .navigation-item-icon {
3221
+ .radio-card-description {
3222
+ margin: 0;
3223
+ font-size: var(--font-body-small-size);
3224
+ line-height: var(--font-body-small-line-height);
3225
+ color: var(--theme-radio-card-description-color);
3226
+ }
3227
+
3228
+ .radio-card-indicator-wrapper {
3059
3229
  display: inline-flex;
3060
3230
  align-items: center;
3061
3231
  justify-content: center;
3062
- width: var(--theme-navigation-icon-size);
3063
- height: var(--theme-navigation-icon-size);
3064
- color: currentColor;
3065
- }
3066
- .navigation-item-icon svg {
3067
- display: block;
3068
- width: 100%;
3069
- height: 100%;
3070
- }
3071
- .navigation-item-icon {
3072
- /* SVG fill/stroke를 currentColor로 맞춰 selected 컬러만 제어한다. */
3073
- }
3074
- .navigation-item-icon svg [fill]:not([fill=none]) {
3075
- fill: currentColor;
3232
+ flex-shrink: 0;
3076
3233
  }
3077
- .navigation-item-icon svg [stroke]:not([stroke=none]) {
3078
- stroke: currentColor;
3234
+
3235
+ .radio-card-indicator {
3236
+ inline-size: var(--theme-radio-indicator-size-medium);
3237
+ block-size: var(--theme-radio-indicator-size-medium);
3238
+ border-radius: 9999px;
3239
+ border: var(--theme-radio-indicator-border-width) solid var(--theme-radio-border-color);
3240
+ transition: border-color 0.15s ease;
3079
3241
  }
3080
3242
 
3081
- .navigation-item-label {
3082
- display: block;
3083
- font-size: var(--theme-navigation-label-font-size);
3084
- font-weight: var(--theme-navigation-label-font-weight);
3085
- line-height: var(--theme-navigation-label-line-height);
3086
- letter-spacing: var(--theme-navigation-label-letter-spacing);
3087
- color: currentColor;
3088
- text-align: center;
3089
- white-space: nowrap;
3090
- overflow: hidden;
3091
- text-overflow: ellipsis;
3092
- max-width: 100%;
3093
- }
3094
-
3095
- /* Pagination native 구현 스타일 */
3096
- .pagination {
3097
- --pagination-gap: var(--spacing-gap-2, 8px);
3098
- --pagination-number-height: var(--theme-size-small-2, 24px);
3099
- --pagination-number-min-width: var(--theme-size-small-2, 24px);
3100
- --pagination-number-radius: var(--theme-radius-medium-1, 6px);
3101
- --pagination-color-active-bg: var(--color-cool-gray-10, #18191b);
3102
- --pagination-color-active-label: var(--color-common-100, #ffffff);
3103
- --pagination-color-inactive-label: var(--color-label-alternative, #afb1b6);
3104
- --pagination-dot-size: 8px;
3105
- --pagination-dot-bg: var(--color-cool-gray-85, #d2d3d7);
3106
- --pagination-dot-active-bg: var(--color-primary-default, #0061ff);
3107
- --pagination-dot-active-bg-secondary: var(
3108
- --color-surface-heavy,
3109
- #313235
3110
- );
3111
- --pagination-carousel-height: 8px;
3112
- --pagination-carousel-dot-width: 8px;
3113
- --pagination-carousel-active-width: 20px;
3114
- --pagination-count-bg: var(--color-cool-gray-10, #18191b);
3115
- --pagination-count-divider: var(--color-common-100, #ffffff);
3116
- --pagination-count-total: var(--color-label-alternative, #afb1b6);
3117
- display: inline-flex;
3118
- gap: var(--pagination-gap);
3119
- align-items: center;
3120
- padding: 0;
3121
- margin: 0;
3122
- list-style: none;
3243
+ .radio-card[data-size=large] .radio-card-indicator {
3244
+ inline-size: var(--theme-radio-indicator-size-large);
3245
+ block-size: var(--theme-radio-indicator-size-large);
3123
3246
  }
3124
3247
 
3125
- .pagination[data-interactive=false] .pagination-button,
3126
- .pagination-button:disabled {
3127
- cursor: default;
3248
+ .radio-card[data-state=checked] .radio-card-indicator {
3249
+ border-color: var(--theme-radio-border-selected);
3250
+ border-width: var(--theme-radio-indicator-border-width-selected-medium);
3128
3251
  }
3129
3252
 
3130
- .pagination-item {
3131
- list-style: none;
3253
+ .radio-card[data-size=large][data-state=checked] .radio-card-indicator {
3254
+ border-width: var(--theme-radio-indicator-border-width-selected-large);
3132
3255
  }
3133
3256
 
3134
- .pagination-button {
3135
- appearance: none;
3136
- border: none;
3137
- background: transparent;
3138
- padding: 0;
3139
- margin: 0;
3140
- display: inline-flex;
3141
- align-items: center;
3142
- justify-content: center;
3143
- cursor: pointer;
3144
- color: inherit;
3145
- font: inherit;
3146
- transition: background-color 0.16s ease, color 0.16s ease, opacity 0.16s ease;
3257
+ .segmented-control {
3258
+ --segmented-height: 34px;
3259
+ --segmented-padding: 2px;
3260
+ --segmented-radius: 16px;
3261
+ --segmented-bg: var(--color-bg-alternative-cool-gray, #f2f2f3);
3262
+ --segmented-indicator-bg: var(--color-common-100, #ffffff);
3263
+ --segmented-indicator-shadow: 2px 2px 4px rgba(0, 0, 0, 0.02);
3264
+ --segmented-label-color: var(--color-label-neutral, #797e86);
3265
+ --segmented-label-active-color: var(--color-label-strong, #181a1b);
3266
+ --segmented-disabled-opacity: 0.4;
3267
+ --segmented-gap: 2px;
3268
+ --segmented-item-padding-x: 22px;
3269
+ --segmented-item-padding-y: 4px;
3270
+ --segmented-item-font-size: var(--font-heading-xxsmall-size, 15px);
3271
+ --segmented-item-font-weight: var(--font-heading-xxsmall-weight, 500);
3272
+ --segmented-item-line-height: var(--font-heading-xxsmall-line-height, 1.5);
3273
+ position: relative;
3274
+ display: block;
3275
+ box-sizing: border-box;
3276
+ padding: var(--segmented-padding);
3277
+ border-radius: var(--segmented-radius);
3278
+ background: var(--segmented-bg);
3279
+ width: fit-content;
3280
+ min-height: var(--segmented-height);
3281
+ isolation: isolate;
3282
+ overflow: hidden;
3147
3283
  }
3148
3284
 
3149
- .pagination--variant-list {
3150
- gap: var(--spacing-gap-1, 4px);
3285
+ .segmented-control:where([data-keep-selected=true]) {
3286
+ --segmented-disabled-opacity: 0.3;
3151
3287
  }
3152
3288
 
3153
- .pagination--variant-list .pagination-button {
3154
- min-width: var(--pagination-number-min-width);
3155
- height: var(--pagination-number-height);
3156
- padding-inline: var(--spacing-padding-2, 8px);
3157
- border-radius: var(--pagination-number-radius);
3158
- background-color: transparent;
3159
- color: var(--pagination-color-inactive-label);
3160
- font-size: var(--font-label-medium-size, 12px);
3161
- font-weight: var(--font-label-medium-weight, 400);
3162
- line-height: var(--font-label-medium-line-height, 1.5);
3289
+ .segmented-control-indicator {
3290
+ position: absolute;
3291
+ top: var(--segmented-padding);
3292
+ bottom: var(--segmented-padding);
3293
+ left: 0;
3294
+ width: 0px;
3295
+ height: calc(100% - var(--segmented-padding) * 2);
3296
+ margin: 0;
3297
+ border-radius: calc(var(--segmented-radius) - var(--segmented-padding));
3298
+ background: var(--segmented-indicator-bg);
3299
+ box-shadow: var(--segmented-indicator-shadow);
3300
+ transition: transform 0.2s ease, width 0.2s ease, opacity 0.2s ease;
3301
+ pointer-events: none;
3302
+ z-index: 0;
3163
3303
  }
3164
3304
 
3165
- .pagination[data-interactive=true] .pagination--variant-list .pagination-button:not([data-active=true]):hover {
3166
- background-color: var(--color-bg-alternative-cool-gray, #f0f1f5);
3167
- color: var(--color-label-strong, #5b5c60);
3305
+ .segmented-control-indicator[data-visible=false] {
3306
+ opacity: 0;
3168
3307
  }
3169
3308
 
3170
- .pagination--variant-list .pagination-button[data-active=true] {
3171
- background-color: var(--pagination-color-active-bg);
3172
- color: var(--pagination-color-active-label);
3309
+ .segmented-control-list {
3310
+ display: flex;
3311
+ column-gap: var(--segmented-gap);
3312
+ row-gap: 0;
3313
+ margin: 0;
3314
+ padding: 0;
3315
+ list-style: none;
3316
+ position: relative;
3317
+ z-index: 1;
3173
3318
  }
3174
3319
 
3175
- .pagination-number {
3176
- min-width: 1ch;
3177
- text-align: center;
3320
+ .segmented-control-item {
3321
+ list-style: none;
3322
+ margin: 0;
3323
+ padding: 0;
3178
3324
  }
3179
3325
 
3180
- .pagination--variant-carousel {
3181
- gap: 5px;
3182
- min-height: var(--pagination-carousel-height);
3326
+ .segmented-control-button {
3327
+ position: relative;
3328
+ z-index: 1;
3329
+ display: flex;
3183
3330
  align-items: center;
3331
+ justify-content: center;
3332
+ width: 100%;
3333
+ border: none;
3334
+ background: transparent;
3335
+ cursor: pointer;
3336
+ min-width: 0;
3337
+ border-radius: calc(var(--segmented-radius) - var(--segmented-padding));
3338
+ padding: var(--segmented-item-padding-y) var(--segmented-item-padding-x);
3339
+ transition: color 0.2s ease;
3184
3340
  }
3185
3341
 
3186
- .pagination--variant-carousel[data-priority=secondary] {
3187
- --pagination-dot-active-bg: var(
3188
- --pagination-dot-active-bg-secondary,
3189
- var(--color-secondary-strong, #ccdeff)
3190
- );
3342
+ .segmented-control-button:where([data-disabled=true]) {
3343
+ cursor: not-allowed;
3344
+ opacity: var(--segmented-disabled-opacity);
3191
3345
  }
3192
3346
 
3193
- .pagination--variant-carousel .pagination-button {
3194
- width: auto;
3195
- height: var(--pagination-carousel-height);
3196
- padding: 0;
3347
+ .segmented-control-button:where(:focus-visible) {
3348
+ outline: 2px solid var(--color-focus-ring, var(--color-primary-default));
3349
+ outline-offset: 2px;
3197
3350
  }
3198
3351
 
3199
- .pagination--variant-carousel .pagination-dot {
3200
- display: inline-flex;
3201
- width: var(--pagination-carousel-dot-width);
3202
- height: var(--pagination-carousel-height);
3203
- border-radius: calc(var(--pagination-carousel-height) / 2);
3204
- background-color: var(--pagination-dot-bg);
3205
- transition: width 0.16s ease, background-color 0.16s ease;
3352
+ .segmented-control-button-label {
3353
+ display: flex;
3354
+ align-items: center;
3355
+ justify-content: center;
3356
+ font-size: var(--segmented-item-font-size);
3357
+ font-weight: var(--segmented-item-font-weight);
3358
+ line-height: var(--segmented-item-line-height);
3359
+ letter-spacing: 0.2px;
3360
+ color: var(--segmented-label-color);
3361
+ transition: color 0.2s ease;
3206
3362
  }
3207
3363
 
3208
- .pagination--variant-carousel .pagination-button[data-active=true] .pagination-dot {
3209
- width: var(--pagination-carousel-active-width);
3210
- background-color: var(--pagination-dot-active-bg);
3364
+ .segmented-control-button:where([data-state=on]) .segmented-control-button-label {
3365
+ color: var(--segmented-label-active-color);
3211
3366
  }
3212
3367
 
3213
- .pagination--variant-count {
3214
- gap: 0;
3215
- }
3368
+ /* Select tokens mapped to Input primary tokens for visual parity */
3216
3369
 
3217
- .pagination--variant-count .pagination-button {
3218
- border-radius: var(--theme-radius-large-2, 16px);
3219
- padding-inline: var(--spacing-padding-4, 16px);
3220
- background-color: var(--pagination-count-bg);
3221
- color: var(--pagination-color-active-label);
3222
- font-weight: var(--font-label-medium-weight, 400);
3223
- line-height: 1.5;
3224
- }
3225
3370
 
3226
- .pagination--variant-count.pagination--count-size-small .pagination-button {
3227
- height: var(--theme-size-small-2, 24px);
3228
- font-size: var(--font-label-medium-size, 12px);
3371
+ .select {
3372
+ display: flex;
3373
+ width: var(--select-width);
3374
+ flex: var(--select-flex);
3375
+ flex-direction: column;
3376
+ gap: var(--spacing-gap-2);
3377
+ min-width: 0;
3229
3378
  }
3230
3379
 
3231
- .pagination--variant-count.pagination--count-size-xsmall .pagination-button {
3232
- height: var(--theme-size-small-1, 20px);
3233
- font-size: var(--font-label-small-size, 11px);
3380
+ .select[data-width=auto] {
3381
+ --select-width: auto;
3382
+ --select-flex: 0 1 auto;
3234
3383
  }
3235
3384
 
3236
- .pagination-count-current {
3237
- color: var(--pagination-color-active-label);
3385
+ .select[data-width=fill] {
3386
+ --select-width: auto;
3387
+ --select-flex: 1 1 0%;
3238
3388
  }
3239
3389
 
3240
- .pagination-count-divider {
3241
- margin-inline: var(--spacing-gap-1, 4px);
3242
- color: var(--pagination-count-divider);
3390
+ .select[data-width=full],
3391
+ .select-block {
3392
+ --select-width: 100%;
3393
+ --select-flex: 0 0 100%;
3243
3394
  }
3244
3395
 
3245
- .pagination-count-total {
3246
- color: var(--pagination-count-total);
3396
+ .select[data-width=fit] {
3397
+ --select-width: fit-content;
3398
+ --select-flex: 0 0 auto;
3247
3399
  }
3248
3400
 
3401
+ .select[data-width=custom] {
3402
+ --select-flex: 0 0 auto;
3403
+ }
3249
3404
 
3250
-
3251
- .radio {
3252
- display: inline-flex;
3405
+ .select-button {
3406
+ --select-icon-fill: var(--select-icon-color-default);
3407
+ display: flex;
3408
+ width: 100%;
3253
3409
  align-items: center;
3254
- justify-content: center;
3255
- inline-size: var(--theme-radio-frame-size-medium);
3256
- block-size: var(--theme-radio-frame-size-medium);
3257
- border: none;
3258
- background-color: transparent;
3259
- border-radius: 0;
3260
- padding: 0;
3410
+ gap: var(--select-primary-gap-inline);
3411
+ min-height: var(--select-primary-height-medium);
3412
+ padding: var(--select-primary-padding-block) var(--select-primary-padding-inline);
3413
+ border: var(--select-primary-border-width-default) solid var(--select-primary-color-border);
3414
+ border-radius: var(--select-primary-radius-medium);
3415
+ background-color: var(--input-surface-color);
3261
3416
  cursor: pointer;
3262
- transition: box-shadow 0.15s ease, transform 0.15s ease;
3263
- }
3264
- .radio[data-size=large] {
3265
- inline-size: var(--theme-radio-frame-size-large);
3266
- block-size: var(--theme-radio-frame-size-large);
3267
- }
3268
- .radio[data-disabled=true] {
3269
- cursor: not-allowed;
3270
- opacity: 0.6;
3271
- }
3272
-
3273
- .radio:focus-visible {
3274
- box-shadow: 0 0 0 2px var(--theme-radio-focus-ring);
3275
- }
3276
-
3277
- .radio-indicator {
3278
- inline-size: var(--theme-radio-indicator-size-medium);
3279
- block-size: var(--theme-radio-indicator-size-medium);
3280
- border-radius: 9999px;
3281
- border: var(--theme-radio-indicator-border-width) solid var(--theme-radio-border-color);
3282
- transition: border-color 0.15s ease;
3283
- }
3284
-
3285
- .radio[data-state=checked] .radio-indicator,
3286
- .radio[data-size=medium][data-state=checked] .radio-indicator {
3287
- border-width: var(--theme-radio-indicator-border-width-selected-medium);
3417
+ transition: border-color 150ms ease, background-color 150ms ease, color 150ms ease;
3418
+ text-align: left;
3288
3419
  }
3289
-
3290
- .radio[data-size=large] .radio-indicator {
3291
- inline-size: var(--theme-radio-indicator-size-large);
3292
- block-size: var(--theme-radio-indicator-size-large);
3420
+ .select-button[data-size=small] {
3421
+ min-height: var(--select-primary-height-small);
3422
+ border-radius: var(--select-primary-radius-small);
3293
3423
  }
3294
- .radio[data-size=large][data-state=checked] .radio-indicator {
3295
- border-width: var(--theme-radio-indicator-border-width-selected-large);
3424
+ .select-button[data-size=large] {
3425
+ min-height: var(--select-primary-height-large);
3426
+ border-radius: var(--select-primary-radius-large);
3296
3427
  }
3297
-
3298
- .radio[data-state=checked] .radio-indicator {
3299
- border-color: var(--theme-radio-border-selected);
3428
+ .select-button[data-multiple=true] {
3429
+ align-items: center;
3430
+ flex-wrap: nowrap;
3431
+ overflow: hidden;
3300
3432
  }
3301
-
3302
- .radio[data-disabled=true] .radio-indicator {
3303
- border-color: var(--theme-radio-border-disabled);
3304
- background-color: var(--theme-radio-surface-disabled);
3305
- opacity: 1;
3433
+ .select-button[data-priority=secondary] {
3434
+ width: fit-content;
3435
+ max-width: 100%;
3436
+ min-height: auto;
3437
+ border: none;
3438
+ border-radius: var(--select-secondary-radius);
3439
+ padding: var(--select-secondary-padding-block) var(--select-secondary-padding-inline);
3440
+ background-color: transparent;
3441
+ gap: var(--select-secondary-gap);
3442
+ position: relative;
3443
+ --select-icon-fill: currentColor;
3444
+ transition: background-color 150ms ease, color 150ms ease;
3306
3445
  }
3307
-
3308
- .radio[data-disabled=true][data-state=checked] .radio-indicator {
3309
- border-color: var(--theme-radio-disabled-selected-fill);
3310
- opacity: var(--theme-radio-disabled-selected-opacity);
3446
+ .select-button[data-priority=secondary]:hover:not([data-state=disabled]) {
3447
+ background-color: var(--select-color-surface-secondary-hover);
3311
3448
  }
3312
-
3313
- .radio-field {
3314
- display: flex;
3315
- flex-direction: column;
3316
- gap: var(--spacing-gap-1);
3317
- color: var(--theme-radio-label-color);
3449
+ .select-button[data-priority=secondary]:active:not([data-state=disabled]) {
3450
+ background-color: var(--select-color-surface-secondary-active);
3318
3451
  }
3319
-
3320
- .radio-field[data-disabled=true] {
3321
- color: var(--theme-radio-label-disabled);
3452
+ .select-button[data-priority=secondary][data-state=focused], .select-button[data-priority=secondary][data-open=true] {
3453
+ background-color: var(--select-color-surface-secondary-hover);
3322
3454
  }
3323
-
3324
- .radio-label-wrapper {
3325
- display: inline-flex;
3326
- align-items: center;
3327
- gap: var(--spacing-gap-2);
3328
- cursor: pointer;
3455
+ .select-button[data-priority=secondary][data-state=focused]::after, .select-button[data-priority=secondary][data-open=true]::after {
3456
+ height: var(--select-secondary-underline-width-focus);
3457
+ background-color: var(--select-color-border-secondary-focused);
3329
3458
  }
3330
-
3331
- .radio-label-wrapper[data-disabled=true] {
3459
+ .select-button[data-priority=secondary][data-state=disabled], .select-button[data-priority=secondary]:disabled {
3460
+ color: var(--color-label-disabled);
3332
3461
  cursor: not-allowed;
3333
3462
  }
3334
-
3335
- .radio-label-text {
3336
- font-weight: var(--font-body-medium-weight);
3337
- user-select: none;
3338
- }
3339
-
3340
- .radio-field[data-size=medium] .radio-label-text {
3341
- font-size: var(--font-body-xsmall-size);
3342
- line-height: var(--font-body-xsmall-line-height);
3463
+ .select-button[data-priority=table] {
3464
+ border-radius: var(--select-table-radius);
3465
+ border-color: var(--select-table-border-default-color);
3466
+ background-color: var(--select-table-surface-color);
3467
+ --select-icon-fill: var(--select-table-icon-color-default);
3343
3468
  }
3344
-
3345
- .radio-field[data-size=large] .radio-label-text {
3346
- font-size: var(--font-body-medium-size);
3347
- line-height: var(--font-body-medium-line-height);
3469
+ .select-button:not([data-priority=secondary])[data-state=focused], .select-button:not([data-priority=secondary])[data-open=true], .select-button:not([data-priority=secondary]):focus-visible {
3470
+ border-color: var(--select-primary-color-border-focused);
3471
+ border-width: var(--select-primary-border-width-focus);
3472
+ --select-icon-fill: var(--select-icon-color-focused);
3348
3473
  }
3349
-
3350
- .radio-helper {
3351
- margin: 0;
3352
- font-size: var(--font-caption-large-size);
3353
- line-height: var(--font-caption-large-line-height);
3354
- color: var(--theme-radio-helper-color);
3355
- user-select: none;
3474
+ .select-button[data-priority=table][data-state=focused], .select-button[data-priority=table][data-open=true], .select-button[data-priority=table]:focus-visible {
3475
+ border-color: var(--select-table-border-focus-color);
3476
+ border-width: var(--select-primary-border-width-focus);
3477
+ --select-icon-fill: var(--select-table-icon-color-focused);
3356
3478
  }
3357
-
3358
- .radio-field[data-disabled=true] .radio-helper {
3359
- color: var(--theme-radio-helper-disabled);
3479
+ .select-button:not([data-priority=secondary])[data-state=disabled], .select-button:not([data-priority=secondary]):disabled {
3480
+ border-color: var(--select-primary-color-border-disabled);
3481
+ background-color: var(--select-primary-color-surface-disabled);
3482
+ cursor: not-allowed;
3483
+ --select-icon-fill: var(--select-icon-color-disabled);
3360
3484
  }
3361
-
3362
- .radio-card-group {
3363
- display: flex;
3364
- flex-direction: column;
3365
- gap: var(--spacing-gap-3);
3485
+ .select-button[data-priority=secondary][data-state=disabled], .select-button[data-priority=secondary]:disabled {
3486
+ border-color: transparent;
3487
+ background-color: var(--select-color-surface-secondary-disabled);
3366
3488
  }
3367
-
3368
- .radio-card {
3369
- display: flex;
3370
- align-items: center;
3371
- justify-content: space-between;
3372
- inline-size: 100%;
3373
- gap: var(--spacing-gap-3);
3374
- padding: 16px 24px;
3375
- background-color: var(--theme-radio-card-background);
3376
- transition: background-color 0.15s ease;
3377
- cursor: pointer;
3489
+ .select-button[data-priority=secondary][data-state=disabled]::after, .select-button[data-priority=secondary]:disabled::after {
3490
+ background-color: var(--select-color-border-secondary-disabled);
3491
+ height: var(--select-secondary-underline-width-default);
3378
3492
  }
3379
- .radio-card[data-disabled=true] {
3493
+ .select-button[data-priority=table][data-state=disabled], .select-button[data-priority=table]:disabled {
3494
+ border-color: var(--select-table-border-disabled-color);
3495
+ background-color: var(--select-table-surface-disabled-color);
3380
3496
  cursor: not-allowed;
3381
- opacity: 0.7;
3497
+ --select-icon-fill: var(--select-table-icon-color-disabled);
3382
3498
  }
3383
3499
 
3384
- .radio-card-content {
3500
+ .select-value {
3501
+ flex: 1 1 auto;
3502
+ min-width: 0;
3385
3503
  display: flex;
3386
3504
  flex-direction: column;
3387
- gap: var(--spacing-gap-1);
3388
- min-inline-size: 0;
3389
- }
3390
-
3391
- .radio-card-title-row {
3392
- display: inline-flex;
3393
- align-items: center;
3394
- gap: var(--spacing-gap-1);
3395
- min-inline-size: 0;
3505
+ gap: var(--spacing-gap-2);
3396
3506
  }
3397
3507
 
3398
- .radio-card-title {
3399
- font-size: var(--font-heading-small-size);
3400
- line-height: var(--font-heading-small-line-height);
3401
- font-weight: var(--font-heading-small-weight);
3402
- letter-spacing: 0.2px;
3403
- color: var(--theme-radio-card-title-color);
3508
+ .select-label {
3509
+ flex: 1 1 auto;
3510
+ min-width: 0;
3511
+ font-family: var(--font-body-medium-family);
3512
+ font-size: var(--select-text-medium-size);
3513
+ font-weight: var(--select-text-medium-weight);
3514
+ line-height: var(--select-text-medium-line-height);
3515
+ letter-spacing: var(--select-text-medium-letter-spacing);
3516
+ color: var(--select-primary-color-text);
3517
+ overflow: hidden;
3518
+ text-overflow: ellipsis;
3404
3519
  white-space: nowrap;
3405
3520
  }
3406
-
3407
- .radio-card-badge {
3408
- display: none;
3409
- align-items: center;
3410
- justify-content: center;
3411
- padding: 4px 6px;
3412
- font-size: var(--font-caption-medium-size);
3413
- line-height: var(--font-caption-medium-line-height);
3414
- border-radius: 6px;
3415
- background-color: var(--theme-radio-card-badge-background);
3416
- color: var(--theme-radio-card-badge-color);
3521
+ .select-button[data-priority=secondary] .select-label {
3522
+ color: var(--select-secondary-color-text);
3417
3523
  }
3418
-
3419
- .radio-card[data-state=checked] .radio-card-title {
3420
- color: var(--theme-radio-card-badge-color);
3524
+ .select-button[data-priority=table] .select-label {
3525
+ color: var(--select-table-color-text);
3421
3526
  }
3422
- .radio-card[data-state=checked] .radio-card-badge {
3423
- display: inline-flex;
3527
+ .select-button[data-state=focused] .select-label, .select-button[data-open=true] .select-label {
3528
+ color: var(--select-primary-color-text-focused);
3424
3529
  }
3425
-
3426
- .radio-card-description {
3427
- margin: 0;
3428
- font-size: var(--font-body-small-size);
3429
- line-height: var(--font-body-small-line-height);
3430
- color: var(--theme-radio-card-description-color);
3530
+ .select-button[data-state=disabled] .select-label {
3531
+ color: var(--select-primary-color-text-disabled);
3431
3532
  }
3432
-
3433
- .radio-card-indicator-wrapper {
3434
- display: inline-flex;
3435
- align-items: center;
3436
- justify-content: center;
3437
- flex-shrink: 0;
3533
+ .select-button[data-priority=secondary][data-state=disabled] .select-label {
3534
+ color: var(--color-label-disabled);
3438
3535
  }
3439
3536
 
3440
- .radio-card-indicator {
3441
- inline-size: var(--theme-radio-indicator-size-medium);
3442
- block-size: var(--theme-radio-indicator-size-medium);
3443
- border-radius: 9999px;
3444
- border: var(--theme-radio-indicator-border-width) solid var(--theme-radio-border-color);
3445
- transition: border-color 0.15s ease;
3537
+ .select-label-placeholder {
3538
+ color: var(--select-primary-color-placeholder);
3539
+ }
3540
+ .select-button[data-priority=secondary] .select-label-placeholder {
3541
+ color: var(--select-secondary-color-placeholder);
3542
+ }
3543
+ .select-button[data-priority=table] .select-label-placeholder {
3544
+ color: var(--select-table-color-placeholder);
3446
3545
  }
3447
3546
 
3448
- .radio-card[data-size=large] .radio-card-indicator {
3449
- inline-size: var(--theme-radio-indicator-size-large);
3450
- block-size: var(--theme-radio-indicator-size-large);
3547
+ .select-button[data-size=small] .select-label {
3548
+ font-size: var(--select-text-small-size);
3549
+ line-height: var(--select-text-small-line-height);
3550
+ letter-spacing: var(--select-text-small-letter-spacing);
3551
+ font-weight: var(--select-text-small-weight);
3451
3552
  }
3452
3553
 
3453
- .radio-card[data-state=checked] .radio-card-indicator {
3454
- border-color: var(--theme-radio-border-selected);
3455
- border-width: var(--theme-radio-indicator-border-width-selected-medium);
3554
+ .select-button[data-priority=table][data-size=small] .select-label {
3555
+ font-size: var(--select-table-text-small-size);
3556
+ line-height: var(--select-table-text-small-line-height);
3557
+ font-weight: var(--select-table-text-small-weight);
3456
3558
  }
3457
3559
 
3458
- .radio-card[data-size=large][data-state=checked] .radio-card-indicator {
3459
- border-width: var(--theme-radio-indicator-border-width-selected-large);
3560
+ .select-button[data-size=large] .select-label {
3561
+ font-size: var(--select-text-large-size);
3562
+ line-height: var(--select-text-large-line-height);
3563
+ letter-spacing: var(--select-text-large-letter-spacing);
3564
+ font-weight: var(--select-text-large-weight);
3460
3565
  }
3461
3566
 
3462
- .segmented-control {
3463
- --segmented-height: 34px;
3464
- --segmented-padding: 2px;
3465
- --segmented-radius: 16px;
3466
- --segmented-bg: var(--color-bg-alternative-cool-gray, #f2f2f3);
3467
- --segmented-indicator-bg: var(--color-common-100, #ffffff);
3468
- --segmented-indicator-shadow: 2px 2px 4px rgba(0, 0, 0, 0.02);
3469
- --segmented-label-color: var(--color-label-neutral, #797e86);
3470
- --segmented-label-active-color: var(--color-label-strong, #181a1b);
3471
- --segmented-disabled-opacity: 0.4;
3472
- --segmented-gap: 2px;
3473
- --segmented-item-padding-x: 22px;
3474
- --segmented-item-padding-y: 4px;
3475
- --segmented-item-font-size: var(--font-heading-xxsmall-size, 15px);
3476
- --segmented-item-font-weight: var(--font-heading-xxsmall-weight, 500);
3477
- --segmented-item-line-height: var(--font-heading-xxsmall-line-height, 1.5);
3478
- position: relative;
3479
- display: block;
3480
- box-sizing: border-box;
3481
- padding: var(--segmented-padding);
3482
- border-radius: var(--segmented-radius);
3483
- background: var(--segmented-bg);
3484
- width: fit-content;
3485
- min-height: var(--segmented-height);
3486
- isolation: isolate;
3487
- overflow: hidden;
3567
+ .select-button[data-priority=table][data-size=medium] .select-label {
3568
+ font-size: var(--select-table-text-medium-size);
3569
+ line-height: var(--select-table-text-medium-line-height);
3570
+ font-weight: var(--select-table-text-medium-weight);
3488
3571
  }
3489
3572
 
3490
- .segmented-control:where([data-keep-selected=true]) {
3491
- --segmented-disabled-opacity: 0.3;
3573
+ .select-button[data-priority=table][data-size=large] .select-label {
3574
+ font-size: var(--select-table-text-large-size);
3575
+ line-height: var(--select-table-text-large-line-height);
3576
+ font-weight: var(--select-table-text-large-weight);
3492
3577
  }
3493
3578
 
3494
- .segmented-control-indicator {
3495
- position: absolute;
3496
- top: var(--segmented-padding);
3497
- bottom: var(--segmented-padding);
3498
- left: 0;
3499
- width: 0px;
3500
- height: calc(100% - var(--segmented-padding) * 2);
3501
- margin: 0;
3502
- border-radius: calc(var(--segmented-radius) - var(--segmented-padding));
3503
- background: var(--segmented-indicator-bg);
3504
- box-shadow: var(--segmented-indicator-shadow);
3505
- transition: transform 0.2s ease, width 0.2s ease, opacity 0.2s ease;
3506
- pointer-events: none;
3507
- z-index: 0;
3579
+ .select-button[data-priority=secondary][data-size=large] .select-label {
3580
+ font-weight: 600;
3508
3581
  }
3509
3582
 
3510
- .segmented-control-indicator[data-visible=false] {
3511
- opacity: 0;
3583
+ .select-tags {
3584
+ display: flex;
3585
+ flex-wrap: nowrap;
3586
+ gap: var(--select-multiple-chip-gap);
3587
+ align-items: center;
3588
+ min-width: 0;
3589
+ flex: 1 1 auto;
3512
3590
  }
3513
3591
 
3514
- .segmented-control-list {
3592
+ .select-tag {
3515
3593
  display: flex;
3516
- column-gap: var(--segmented-gap);
3517
- row-gap: 0;
3518
- margin: 0;
3519
- padding: 0;
3520
- list-style: none;
3521
- position: relative;
3522
- z-index: 1;
3594
+ align-items: center;
3595
+ gap: var(--select-multiple-chip-gap);
3596
+ padding: var(--select-multiple-chip-padding-block) var(--select-multiple-chip-padding-inline);
3597
+ border-radius: var(--select-multiple-chip-radius);
3598
+ border: 1px solid var(--select-multiple-chip-border-color, var(--color-border-standard-cool-gray));
3599
+ background-color: var(--select-multiple-chip-surface);
3600
+ color: var(--select-multiple-chip-color);
3601
+ font-size: var(--select-multiple-chip-font-size);
3602
+ line-height: var(--select-multiple-chip-line-height);
3603
+ font-weight: var(--select-multiple-chip-font-weight);
3604
+ white-space: nowrap;
3605
+ min-height: var(--select-multiple-chip-height);
3606
+ }
3607
+ .select-tag:focus-within {
3608
+ border-color: var(--select-color-border-secondary-focused);
3609
+ }
3610
+ .select-tag[data-removable=true] {
3611
+ padding-right: var(--spacing-padding-2);
3523
3612
  }
3524
3613
 
3525
- .segmented-control-item {
3526
- list-style: none;
3527
- margin: 0;
3528
- padding: 0;
3614
+ .select-tag[data-kind=summary],
3615
+ .select-tag-summary {
3616
+ background-color: var(--select-multiple-chip-summary-surface);
3617
+ border-color: var(--select-multiple-chip-summary-border-color);
3618
+ color: var(--select-multiple-chip-summary-color);
3619
+ padding: var(--select-multiple-chip-summary-padding-block) var(--select-multiple-chip-summary-padding-inline);
3620
+ border-radius: var(--select-multiple-chip-summary-radius);
3621
+ font-size: var(--select-multiple-chip-summary-font-size);
3622
+ line-height: var(--select-multiple-chip-summary-line-height);
3623
+ font-weight: var(--select-multiple-chip-summary-font-weight);
3624
+ min-height: auto;
3529
3625
  }
3530
3626
 
3531
- .segmented-control-button {
3532
- position: relative;
3533
- z-index: 1;
3627
+ .select-tag-label {
3534
3628
  display: flex;
3535
3629
  align-items: center;
3536
- justify-content: center;
3537
- width: 100%;
3538
- border: none;
3539
- background: transparent;
3540
- cursor: pointer;
3630
+ gap: var(--spacing-gap-1);
3541
3631
  min-width: 0;
3542
- border-radius: calc(var(--segmented-radius) - var(--segmented-padding));
3543
- padding: var(--segmented-item-padding-y) var(--segmented-item-padding-x);
3544
- transition: color 0.2s ease;
3545
3632
  }
3546
3633
 
3547
- .segmented-control-button:where([data-disabled=true]) {
3548
- cursor: not-allowed;
3549
- opacity: var(--segmented-disabled-opacity);
3634
+ .select-tag-suffix {
3635
+ color: var(--select-multiple-chip-suffix-color);
3636
+ font-size: inherit;
3637
+ line-height: inherit;
3550
3638
  }
3551
3639
 
3552
- .segmented-control-button:where(:focus-visible) {
3553
- outline: 2px solid var(--color-focus-ring, var(--color-primary-default));
3554
- outline-offset: 2px;
3640
+ .select-tag-remove {
3641
+ display: flex;
3642
+ align-items: center;
3643
+ justify-content: center;
3644
+ width: var(--select-icon-size-small);
3645
+ height: var(--select-icon-size-small);
3646
+ border: none;
3647
+ background-color: transparent;
3648
+ padding: 0;
3649
+ cursor: pointer;
3650
+ color: var(--select-multiple-chip-remove-color);
3651
+ flex-shrink: 0;
3652
+ border-radius: 9999px;
3653
+ transition: color 150ms ease;
3654
+ }
3655
+ .select-tag-remove:focus-visible {
3656
+ outline: 0.2rem solid var(--color-border-strong);
3657
+ outline-offset: 0.1rem;
3658
+ }
3659
+ .select-tag-remove:hover {
3660
+ color: var(--select-multiple-chip-remove-hover-color);
3661
+ }
3662
+ .select-tag-remove svg {
3663
+ width: 100%;
3664
+ height: 100%;
3665
+ }
3666
+ .select-tag-remove svg path {
3667
+ fill: currentColor;
3555
3668
  }
3556
3669
 
3557
- .segmented-control-button-label {
3670
+ .select-icon {
3671
+ flex-shrink: 0;
3672
+ width: var(--select-icon-size-medium);
3673
+ height: var(--select-icon-size-medium);
3558
3674
  display: flex;
3559
3675
  align-items: center;
3560
3676
  justify-content: center;
3561
- font-size: var(--segmented-item-font-size);
3562
- font-weight: var(--segmented-item-font-weight);
3563
- line-height: var(--segmented-item-line-height);
3564
- letter-spacing: 0.2px;
3565
- color: var(--segmented-label-color);
3566
- transition: color 0.2s ease;
3677
+ margin-left: auto;
3567
3678
  }
3568
-
3569
- .segmented-control-button:where([data-state=on]) .segmented-control-button-label {
3570
- color: var(--segmented-label-active-color);
3679
+ .select-icon[data-size=small] {
3680
+ width: var(--select-icon-size-small);
3681
+ height: var(--select-icon-size-small);
3682
+ }
3683
+ .select-icon[data-size=large] {
3684
+ width: var(--select-icon-size-large);
3685
+ height: var(--select-icon-size-large);
3686
+ }
3687
+ [data-open=true] .select-icon {
3688
+ transform: rotate(180deg);
3689
+ }
3690
+ .select-icon svg {
3691
+ display: block;
3692
+ width: 100%;
3693
+ height: 100%;
3694
+ }
3695
+ .select-icon svg path {
3696
+ fill: var(--select-icon-fill);
3571
3697
  }
3572
3698
 
3573
3699
  .tab-root {
@@ -3905,22 +4031,52 @@ figure.chip {
3905
4031
  line-height: inherit;
3906
4032
  }
3907
4033
 
3908
- .table-cell-content[data-align-x=left],
3909
- .table-cell-content[data-align=left] {
4034
+ .table-cell-content[data-align-x=left] {
3910
4035
  justify-content: flex-start;
3911
- text-align: left;
3912
4036
  }
3913
4037
 
3914
- .table-cell-content[data-align-x=center],
3915
- .table-cell-content[data-align=center] {
4038
+ .table-cell-content[data-align-x=center] {
3916
4039
  justify-content: center;
3917
- text-align: center;
3918
4040
  }
3919
4041
 
3920
- .table-cell-content[data-align-x=right],
3921
- .table-cell-content[data-align=right] {
4042
+ .table-cell-content[data-align-x=right] {
3922
4043
  justify-content: flex-end;
3923
- text-align: right;
4044
+ }
4045
+
4046
+ .table-cell-content[data-align-x=normal] {
4047
+ justify-content: normal;
4048
+ }
4049
+
4050
+ .table-cell-content[data-align-x=start] {
4051
+ justify-content: start;
4052
+ }
4053
+
4054
+ .table-cell-content[data-align-x=end] {
4055
+ justify-content: end;
4056
+ }
4057
+
4058
+ .table-cell-content[data-align-x=flex-start] {
4059
+ justify-content: flex-start;
4060
+ }
4061
+
4062
+ .table-cell-content[data-align-x=flex-end] {
4063
+ justify-content: flex-end;
4064
+ }
4065
+
4066
+ .table-cell-content[data-align-x=space-between] {
4067
+ justify-content: space-between;
4068
+ }
4069
+
4070
+ .table-cell-content[data-align-x=space-around] {
4071
+ justify-content: space-around;
4072
+ }
4073
+
4074
+ .table-cell-content[data-align-x=space-evenly] {
4075
+ justify-content: space-evenly;
4076
+ }
4077
+
4078
+ .table-cell-content[data-align-x=stretch] {
4079
+ justify-content: stretch;
3924
4080
  }
3925
4081
 
3926
4082
  .table-cell-content[data-align-y=top] {
@@ -3935,6 +4091,42 @@ figure.chip {
3935
4091
  align-items: flex-end;
3936
4092
  }
3937
4093
 
4094
+ .table-cell-content[data-align-y=normal] {
4095
+ align-items: normal;
4096
+ }
4097
+
4098
+ .table-cell-content[data-align-y=stretch] {
4099
+ align-items: stretch;
4100
+ }
4101
+
4102
+ .table-cell-content[data-align-y=start] {
4103
+ align-items: start;
4104
+ }
4105
+
4106
+ .table-cell-content[data-align-y=end] {
4107
+ align-items: end;
4108
+ }
4109
+
4110
+ .table-cell-content[data-align-y=flex-start] {
4111
+ align-items: flex-start;
4112
+ }
4113
+
4114
+ .table-cell-content[data-align-y=flex-end] {
4115
+ align-items: flex-end;
4116
+ }
4117
+
4118
+ .table-cell-content[data-align-y=self-start] {
4119
+ align-items: self-start;
4120
+ }
4121
+
4122
+ .table-cell-content[data-align-y=self-end] {
4123
+ align-items: self-end;
4124
+ }
4125
+
4126
+ .table-cell-content[data-align-y=baseline] {
4127
+ align-items: baseline;
4128
+ }
4129
+
3938
4130
  .table-cell.table-head-cell .table-cell-text {
3939
4131
  color: var(--table-th-text-color);
3940
4132
  font-size: var(--table-th-text-size);
@@ -3974,15 +4166,51 @@ figure.chip {
3974
4166
  line-height: var(--table-td-text-line-height);
3975
4167
  }
3976
4168
 
3977
- /* Divider 토큰도 전역 :root 범위에 선언한다. */
3978
4169
 
3979
4170
 
3980
- .divider {
3981
- width: var(--divider-width);
3982
- height: var(--divider-height);
3983
- background-color: var(--divider-color);
3984
- margin: 0 var(--divider-margin);
3985
- vertical-align: middle;
3986
- align-self: center;
3987
- font-size: 0;
4171
+ .tooltip-trigger {
4172
+ display: inline-flex;
4173
+ align-items: center;
4174
+ justify-content: center;
4175
+ }
4176
+
4177
+ .tooltip-template-trigger {
4178
+ display: inline-flex;
4179
+ width: var(--tooltip-trigger-icon-size);
4180
+ height: var(--tooltip-trigger-icon-size);
4181
+ align-items: center;
4182
+ justify-content: center;
4183
+ padding: 0;
4184
+ border: 0;
4185
+ background-color: transparent;
4186
+ color: var(--tooltip-trigger-icon-color);
4187
+ cursor: pointer;
4188
+ }
4189
+
4190
+ .tooltip-template-trigger svg {
4191
+ width: 100%;
4192
+ height: 100%;
4193
+ display: block;
4194
+ }
4195
+
4196
+ .tooltip-message {
4197
+ max-width: min(20rem, 100vw - 1.5rem);
4198
+ box-sizing: border-box;
4199
+ border-radius: var(--tooltip-message-radius);
4200
+ background-color: var(--tooltip-message-background);
4201
+ padding: var(--tooltip-message-padding-block) var(--tooltip-message-padding-inline);
4202
+ }
4203
+
4204
+ .tooltip-message-text {
4205
+ display: block;
4206
+ color: var(--tooltip-message-foreground);
4207
+ font-size: var(--tooltip-message-font-size);
4208
+ line-height: var(--tooltip-message-line-height);
4209
+ letter-spacing: var(--tooltip-message-letter-spacing);
4210
+ font-weight: var(--tooltip-message-font-weight);
4211
+ white-space: normal;
4212
+ }
4213
+
4214
+ .tooltip-message-arrow {
4215
+ fill: var(--tooltip-message-background);
3988
4216
  }