@uniai-fe/uds-primitives 0.3.17 → 0.3.19

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 (73) hide show
  1. package/dist/styles.css +224 -160
  2. package/package.json +18 -9
  3. package/src/components/alternate/styles/alternate.scss +11 -8
  4. package/src/components/badge/markup/Badge.tsx +3 -5
  5. package/src/components/badge/styles/index.scss +2 -1
  6. package/src/components/button/index.tsx +7 -1
  7. package/src/components/button/markup/Base.tsx +5 -10
  8. package/src/components/button/markup/Label.tsx +23 -0
  9. package/src/components/button/markup/index.ts +1 -0
  10. package/src/components/button/types/index.ts +1 -0
  11. package/src/components/button/types/label.ts +9 -0
  12. package/src/components/checkbox/markup/Checkbox.tsx +9 -4
  13. package/src/components/checkbox/styles/index.scss +6 -4
  14. package/src/components/chip/index.tsx +1 -2
  15. package/src/components/chip/markup/Chip.tsx +39 -25
  16. package/src/components/chip/markup/DefaultStyle.tsx +76 -48
  17. package/src/components/chip/markup/InputStyle.tsx +71 -48
  18. package/src/components/chip/markup/Label.tsx +15 -0
  19. package/src/components/chip/markup/ListRoot.tsx +88 -0
  20. package/src/components/chip/markup/RemoveButton.tsx +4 -1
  21. package/src/components/chip/markup/index.tsx +13 -1
  22. package/src/components/chip/styles/chip.scss +43 -15
  23. package/src/components/chip/types/options.ts +22 -14
  24. package/src/components/chip/types/props-internal.ts +15 -51
  25. package/src/components/chip/types/props.ts +127 -46
  26. package/src/components/chip/utils/index.ts +1 -1
  27. package/src/components/form/markup/form-field/Header.tsx +3 -1
  28. package/src/components/input/markup/file/UploadedChip.tsx +5 -5
  29. package/src/components/input/styles/foundation.scss +15 -0
  30. package/src/components/input/styles/variables.scss +16 -3
  31. package/src/components/input/types/file.ts +1 -1
  32. package/src/components/radio/markup/Radio.tsx +9 -4
  33. package/src/components/radio/styles/index.scss +6 -4
  34. package/src/components/segmented-control/markup/Label.tsx +22 -0
  35. package/src/components/segmented-control/markup/List.tsx +2 -3
  36. package/src/components/segmented-control/markup/index.ts +1 -0
  37. package/src/components/segmented-control/styles/index.scss +4 -4
  38. package/src/components/segmented-control/types/index.ts +9 -0
  39. package/src/components/select/markup/foundation/Base.tsx +3 -8
  40. package/src/components/select/markup/foundation/Selected.tsx +3 -2
  41. package/src/components/select/markup/multiple/Multiple.tsx +143 -9
  42. package/src/components/select/styles/select.scss +1 -1
  43. package/src/components/select/styles/variables.scss +13 -12
  44. package/src/components/select/types/props.ts +21 -2
  45. package/src/components/slot/index.tsx +2 -6
  46. package/src/components/slot/markup/Text.tsx +34 -0
  47. package/src/components/slot/markup/index.tsx +7 -0
  48. package/src/components/slot/types/index.ts +2 -0
  49. package/src/components/slot/types/text.ts +24 -0
  50. package/src/components/table/markup/foundation/Cell.tsx +4 -12
  51. package/src/components/table/markup/foundation/Td.tsx +4 -7
  52. package/src/components/table/markup/foundation/Text.tsx +16 -0
  53. package/src/components/table/markup/foundation/Th.tsx +4 -7
  54. package/src/components/table/markup/foundation/index.tsx +2 -0
  55. package/src/components/table/styles/foundation.scss +384 -310
  56. package/src/components/table/types/foundation.ts +9 -0
  57. package/src/components/tooltip/markup/Message.tsx +3 -1
  58. package/src/components/tooltip/markup/Text.tsx +21 -0
  59. package/src/components/tooltip/markup/index.tsx +3 -0
  60. package/src/components/tooltip/types/index.ts +1 -0
  61. package/src/components/tooltip/types/text.ts +9 -0
  62. package/src/index.scss +0 -1
  63. package/src/index.tsx +0 -1
  64. package/src/components/chip/utils/class-name.ts +0 -36
  65. package/src/components/label/hooks/index.ts +0 -4
  66. package/src/components/label/img/.gitkeep +0 -0
  67. package/src/components/label/index.scss +0 -1
  68. package/src/components/label/index.tsx +0 -4
  69. package/src/components/label/markup/index.tsx +0 -4
  70. package/src/components/label/styles/index.scss +0 -0
  71. package/src/components/label/types/index.ts +0 -4
  72. package/src/components/label/utils/index.ts +0 -4
  73. /package/src/components/slot/markup/{Component.tsx → Base.tsx} +0 -0
package/dist/styles.css CHANGED
@@ -7,7 +7,7 @@
7
7
  --theme-badge-radius: var(--theme-radius-medium-1, 6px);
8
8
  --theme-badge-font-family: var(--font-caption-medium-family, inherit);
9
9
  --theme-badge-font-size: var(--font-caption-medium-size, 11px);
10
- --theme-badge-font-weight: var(--font-caption-medium-weight, 400);
10
+ --theme-badge-font-weight: 400;
11
11
  --theme-badge-line-height: var(--font-caption-medium-line-height, 1.5);
12
12
  --theme-badge-letter-spacing: var(--font-caption-medium-letter-spacing, 0);
13
13
  --theme-badge-dot-size: var(--spacing-gap-3, 8px);
@@ -188,6 +188,7 @@
188
188
  --theme-checkbox-surface-selected-disabled: rgba(26, 106, 255, 0.28);
189
189
  --theme-checkbox-label-color: var(--color-label-strong);
190
190
  --theme-checkbox-label-disabled: var(--color-label-disabled);
191
+ --theme-checkbox-label-font-weight: 400;
191
192
  --theme-checkbox-helper-color: var(--color-label-neutral);
192
193
  --theme-checkbox-helper-disabled: var(--color-label-disabled);
193
194
  --theme-checkbox-icon-default: transparent;
@@ -344,6 +345,19 @@
344
345
  --input-table-text-large-size: var(--font-body-small-size);
345
346
  --input-table-text-large-line-height: var(--font-body-small-line-height);
346
347
  --input-table-text-large-weight: var(--font-body-small-weight);
348
+ /* Figma size 매핑: small/medium/large typography 토큰 */
349
+ --input-text-small-size: var(--font-body-xsmall-size);
350
+ --input-text-small-line-height: var(--font-label-medium-line-height);
351
+ --input-text-small-weight: 400;
352
+ --input-text-small-letter-spacing: 0.2px;
353
+ --input-text-medium-size: var(--font-body-medium-size);
354
+ --input-text-medium-line-height: var(--font-body-medium-line-height);
355
+ --input-text-medium-weight: 400;
356
+ --input-text-medium-letter-spacing: 0px;
357
+ --input-text-large-size: var(--font-body-large-size);
358
+ --input-text-large-line-height: var(--font-body-large-line-height);
359
+ --input-text-large-weight: 400;
360
+ --input-text-large-letter-spacing: 0px;
347
361
  /* Label/helper colors */
348
362
  --input-label-color: var(--color-label-standard);
349
363
  --input-label-accent-color: var(--color-primary-default);
@@ -365,9 +379,9 @@
365
379
  --input-placeholder-disabled-color: var(--color-label-disabled);
366
380
  /* 변경: readonly 입력은 placeholder를 숨겨 value 텍스트 대비를 고정한다. */
367
381
  --input-placeholder-readonly-color: transparent;
368
- --input-font-size: var(--font-body-medium-size);
369
- --input-line-height: var(--font-body-medium-line-height);
370
- --input-font-weight: 400;
382
+ --input-font-size: var(--input-text-medium-size);
383
+ --input-line-height: var(--input-text-medium-line-height);
384
+ --input-font-weight: var(--input-text-medium-weight);
371
385
  --input-letter-spacing: 0px;
372
386
  /* Border tokens */
373
387
  --input-border-color: var(--color-border-standard-cool-gray);
@@ -426,6 +440,7 @@
426
440
  --theme-radio-disabled-selected-fill: var(--color-primary-default);
427
441
  --theme-radio-label-color: var(--color-label-strong);
428
442
  --theme-radio-label-disabled: var(--color-label-disabled);
443
+ --theme-radio-label-font-weight: 400;
429
444
  --theme-radio-helper-color: var(--color-label-neutral);
430
445
  --theme-radio-helper-disabled: var(--color-label-disabled);
431
446
  --theme-radio-card-background: var(--color-common-100);
@@ -497,18 +512,19 @@
497
512
  --input-table-text-large-line-height
498
513
  );
499
514
  --select-table-text-large-weight: var(--input-table-text-large-weight);
500
- --select-text-small-size: 15px;
501
- --select-text-small-line-height: 1.4;
502
- --select-text-small-letter-spacing: 0.2px;
503
- --select-text-small-weight: 400;
504
- --select-text-medium-size: var(--font-body-medium-size);
505
- --select-text-medium-line-height: var(--font-body-medium-line-height);
506
- --select-text-medium-letter-spacing: 0;
507
- --select-text-medium-weight: 400;
508
- --select-text-large-size: var(--font-body-large-size);
509
- --select-text-large-line-height: var(--font-body-large-line-height);
510
- --select-text-large-letter-spacing: 0;
511
- --select-text-large-weight: 400;
515
+ /* 변경: trigger 텍스트 토큰을 input text 토큰과 직접 매핑해 size typography를 동기화한다. */
516
+ --select-text-small-size: var(--input-text-small-size);
517
+ --select-text-small-line-height: var(--input-text-small-line-height);
518
+ --select-text-small-letter-spacing: var(--input-text-small-letter-spacing);
519
+ --select-text-small-weight: var(--input-text-small-weight);
520
+ --select-text-medium-size: var(--input-text-medium-size);
521
+ --select-text-medium-line-height: var(--input-text-medium-line-height);
522
+ --select-text-medium-letter-spacing: var(--input-text-medium-letter-spacing);
523
+ --select-text-medium-weight: var(--input-text-medium-weight);
524
+ --select-text-large-size: var(--input-text-large-size);
525
+ --select-text-large-line-height: var(--input-text-large-line-height);
526
+ --select-text-large-letter-spacing: var(--input-text-large-letter-spacing);
527
+ --select-text-large-weight: var(--input-text-large-weight);
512
528
  --select-icon-size-small: 1.6rem;
513
529
  --select-icon-size-medium: 2rem;
514
530
  --select-icon-size-large: 2rem;
@@ -652,9 +668,15 @@
652
668
  .alternate.is-horizontal.loading .empty-text {
653
669
  transform: translateY(0.2rem);
654
670
  }
671
+ .alternate.is-horizontal.loading .empty-text {
672
+ margin-left: 1rem;
673
+ }
655
674
  .alternate.is-vertical {
656
675
  flex-direction: column;
657
676
  }
677
+ .alternate.is-vertical .empty-text {
678
+ margin-top: 1rem;
679
+ }
658
680
 
659
681
  .alternate-loading-icon {
660
682
  width: 2.4rem;
@@ -666,12 +688,6 @@
666
688
  justify-content: center;
667
689
  animation: alternate-loading-spin 1s linear infinite;
668
690
  }
669
- .alternate-loading-icon.is-horizontal {
670
- margin-right: 1rem;
671
- }
672
- .alternate-loading-icon.is-vertical {
673
- margin-bottom: 1rem;
674
- }
675
691
  .alternate-loading-icon.is-medium {
676
692
  width: 3.6rem;
677
693
  height: 3.6rem;
@@ -680,6 +696,10 @@
680
696
  width: 5.2rem;
681
697
  height: 5.2rem;
682
698
  }
699
+ .alternate-loading-icon svg {
700
+ width: 100%;
701
+ height: 100%;
702
+ }
683
703
 
684
704
 
685
705
 
@@ -1705,17 +1725,17 @@
1705
1725
  cursor: not-allowed;
1706
1726
  }
1707
1727
 
1708
- .checkbox-label-text {
1709
- font-weight: var(--font-body-medium-weight);
1728
+ .checkbox-label {
1729
+ font-weight: var(--theme-checkbox-label-font-weight);
1710
1730
  user-select: none;
1711
1731
  }
1712
1732
 
1713
- .checkbox-field[data-size=medium] .checkbox-label-text {
1733
+ .checkbox-field[data-size=medium] .checkbox-label {
1714
1734
  font-size: var(--font-body-xsmall-size);
1715
1735
  line-height: var(--font-body-xsmall-line-height);
1716
1736
  }
1717
1737
 
1718
- .checkbox-field[data-size=large] .checkbox-label-text {
1738
+ .checkbox-field[data-size=large] .checkbox-label {
1719
1739
  font-size: var(--font-body-medium-size);
1720
1740
  line-height: var(--font-body-medium-line-height);
1721
1741
  }
@@ -1736,6 +1756,7 @@
1736
1756
 
1737
1757
 
1738
1758
  .chip {
1759
+ --chip-current-height: var(--theme-chip-height);
1739
1760
  --chip-gap: var(--theme-chip-gap);
1740
1761
  --chip-bg: transparent;
1741
1762
  --chip-border-color: transparent;
@@ -1744,7 +1765,7 @@
1744
1765
  align-items: center;
1745
1766
  justify-content: center;
1746
1767
  gap: var(--chip-gap);
1747
- height: var(--theme-chip-height);
1768
+ height: var(--chip-current-height);
1748
1769
  padding-left: var(--theme-chip-padding-horizontal);
1749
1770
  padding-right: var(--theme-chip-padding-horizontal);
1750
1771
  padding-block: 0;
@@ -1778,35 +1799,47 @@ figure.chip {
1778
1799
  outline-offset: 2px;
1779
1800
  }
1780
1801
 
1781
- .chip:where([data-kind=filter]),
1782
- .chip:where([data-kind=filter-rounded]) {
1802
+ .chip:where([data-style=filter][data-fill=solid]) {
1783
1803
  --chip-bg: var(--color-surface-standard);
1784
1804
  --chip-label-color: var(--color-label-neutral);
1785
1805
  --chip-border-color: transparent;
1786
1806
  }
1787
1807
 
1788
- .chip:where([data-kind=filter][data-selected=true]),
1789
- .chip:where([data-kind=filter-rounded][data-selected=true]) {
1808
+ .chip:where([data-style=filter][data-fill=outlined]) {
1809
+ --chip-bg: var(--color-common-100);
1810
+ --chip-label-color: var(--color-label-neutral);
1811
+ --chip-border-color: var(--color-border-standard-cool-gray);
1812
+ }
1813
+
1814
+ .chip:where([data-style=filter][data-selected=true]) {
1790
1815
  --chip-bg: var(--color-surface-heavy);
1791
1816
  --chip-label-color: var(--color-common-100);
1817
+ --chip-border-color: transparent;
1792
1818
  }
1793
1819
 
1794
- .chip:where([data-kind=filter-rounded]) {
1795
- border-radius: var(--theme-chip-rounded-radius);
1820
+ .chip:where([data-style][data-rounded=true]) {
1821
+ border-radius: calc(var(--chip-current-height) / 2);
1796
1822
  }
1797
1823
 
1798
- .chip:where([data-kind=assist]) {
1824
+ .chip:where([data-style=assist][data-fill=solid]) {
1799
1825
  --chip-bg: var(--color-surface-static-neutral);
1800
1826
  --chip-label-color: var(--color-label-strong);
1801
1827
  --chip-gap: var(--theme-chip-assist-gap);
1802
1828
  --chip-border-color: transparent;
1803
1829
  }
1804
1830
 
1805
- .chip:where([data-kind=assist][data-selected=true]) {
1831
+ .chip:where([data-style=assist][data-fill=outlined]) {
1832
+ --chip-bg: var(--color-common-100);
1833
+ --chip-label-color: var(--color-label-strong);
1834
+ --chip-gap: var(--theme-chip-assist-gap);
1835
+ --chip-border-color: var(--color-border-standard-cool-gray);
1836
+ }
1837
+
1838
+ .chip:where([data-style=assist][data-selected=true]) {
1806
1839
  --chip-label-color: var(--color-primary-default);
1807
1840
  }
1808
1841
 
1809
- .chip:where([data-kind=input]) {
1842
+ .chip:where([data-style=input]) {
1810
1843
  --chip-gap: var(--theme-chip-input-gap);
1811
1844
  --chip-bg: var(--color-common-100);
1812
1845
  --chip-label-color: var(--color-label-standard);
@@ -1815,12 +1848,13 @@ figure.chip {
1815
1848
  padding-right: var(--theme-chip-input-padding-right);
1816
1849
  }
1817
1850
 
1818
- .chip:where([data-kind=input][data-removable=false]) {
1851
+ .chip:where([data-style=input][data-removable=false]) {
1819
1852
  padding-left: var(--theme-chip-padding-horizontal);
1820
1853
  padding-right: var(--theme-chip-padding-horizontal);
1821
1854
  }
1822
1855
 
1823
1856
  .chip:where([data-size=table]) {
1857
+ --chip-current-height: var(--theme-chip-height-table);
1824
1858
  height: var(--theme-chip-height-table);
1825
1859
  padding-left: var(--theme-chip-padding-horizontal-table);
1826
1860
  padding-right: var(--theme-chip-padding-horizontal-table);
@@ -1836,22 +1870,22 @@ figure.chip {
1836
1870
  line-height: var(--theme-chip-line-height-table);
1837
1871
  }
1838
1872
 
1839
- .chip:where([data-size=table][data-kind=input]) {
1873
+ .chip:where([data-size=table][data-style=input]) {
1840
1874
  padding-left: var(--theme-chip-padding-left-table);
1841
1875
  padding-right: var(--theme-chip-padding-right-table);
1842
1876
  }
1843
1877
 
1844
- .chip:where([data-size=table][data-kind=input][data-removable=false]) {
1878
+ .chip:where([data-size=table][data-style=input][data-removable=false]) {
1845
1879
  padding-left: var(--theme-chip-padding-horizontal-table);
1846
1880
  padding-right: var(--theme-chip-padding-horizontal-table);
1847
1881
  }
1848
1882
 
1849
- .chip:where([data-size=table][data-kind=input]) .chip-remove-button {
1883
+ .chip:where([data-size=table][data-style=input]) .chip-remove-button {
1850
1884
  width: fit-content;
1851
1885
  height: fit-content;
1852
1886
  }
1853
1887
 
1854
- .chip:where([data-kind=input][data-selected=true]) {
1888
+ .chip:where([data-style=input][data-selected=true]) {
1855
1889
  --chip-border-color: var(--color-border-standard-blue);
1856
1890
  }
1857
1891
 
@@ -1898,6 +1932,20 @@ figure.chip {
1898
1932
  height: 100%;
1899
1933
  }
1900
1934
 
1935
+ .chip-list {
1936
+ display: flex;
1937
+ flex-wrap: wrap;
1938
+ align-items: center;
1939
+ gap: var(--spacing-gap-2);
1940
+ margin: 0;
1941
+ padding: 0;
1942
+ list-style: none;
1943
+ }
1944
+
1945
+ .chip-list-item {
1946
+ display: flex;
1947
+ }
1948
+
1901
1949
  /* Divider 토큰도 전역 :root 범위에 선언한다. */
1902
1950
 
1903
1951
 
@@ -2469,9 +2517,17 @@ figure.chip {
2469
2517
  }
2470
2518
  .input-field[data-size=small] {
2471
2519
  min-height: var(--input-default-height-small);
2520
+ --input-font-size: var(--input-text-small-size);
2521
+ --input-line-height: var(--input-text-small-line-height);
2522
+ --input-font-weight: var(--input-text-small-weight);
2523
+ --input-letter-spacing: var(--input-text-small-letter-spacing);
2472
2524
  }
2473
2525
  .input-field[data-size=large] {
2474
2526
  min-height: var(--input-default-height-large);
2527
+ --input-font-size: var(--input-text-large-size);
2528
+ --input-line-height: var(--input-text-large-line-height);
2529
+ --input-font-weight: var(--input-text-large-weight);
2530
+ --input-letter-spacing: var(--input-text-large-letter-spacing);
2475
2531
  }
2476
2532
  .input-field[data-priority=secondary] {
2477
2533
  border: none;
@@ -2501,6 +2557,10 @@ figure.chip {
2501
2557
  border-radius: var(--input-tertiary-radius-base);
2502
2558
  background-color: var(--input-surface-color);
2503
2559
  min-height: var(--input-tertiary-height-base);
2560
+ --input-font-size: var(--input-text-medium-size);
2561
+ --input-line-height: var(--input-text-medium-line-height);
2562
+ --input-font-weight: var(--input-text-medium-weight);
2563
+ --input-letter-spacing: var(--input-text-medium-letter-spacing);
2504
2564
  row-gap: var(--input-tertiary-row-gap);
2505
2565
  column-gap: var(--input-default-gap);
2506
2566
  flex-wrap: wrap;
@@ -3366,17 +3426,17 @@ figure.chip {
3366
3426
  cursor: not-allowed;
3367
3427
  }
3368
3428
 
3369
- .radio-label-text {
3370
- font-weight: var(--font-body-medium-weight);
3429
+ .radio-label {
3430
+ font-weight: var(--theme-radio-label-font-weight);
3371
3431
  user-select: none;
3372
3432
  }
3373
3433
 
3374
- .radio-field[data-size=medium] .radio-label-text {
3434
+ .radio-field[data-size=medium] .radio-label {
3375
3435
  font-size: var(--font-body-xsmall-size);
3376
3436
  line-height: var(--font-body-xsmall-line-height);
3377
3437
  }
3378
3438
 
3379
- .radio-field[data-size=large] .radio-label-text {
3439
+ .radio-field[data-size=large] .radio-label {
3380
3440
  font-size: var(--font-body-medium-size);
3381
3441
  line-height: var(--font-body-medium-line-height);
3382
3442
  }
@@ -3507,7 +3567,7 @@ figure.chip {
3507
3567
  --segmented-item-padding-x: 22px;
3508
3568
  --segmented-item-padding-y: 4px;
3509
3569
  --segmented-item-font-size: var(--font-heading-xxsmall-size, 15px);
3510
- --segmented-item-font-weight: var(--font-heading-xxsmall-weight, 500);
3570
+ --segmented-item-font-weight: 500;
3511
3571
  --segmented-item-line-height: var(--font-heading-xxsmall-line-height, 1.5);
3512
3572
  position: relative;
3513
3573
  display: block;
@@ -3588,7 +3648,7 @@ figure.chip {
3588
3648
  outline-offset: 2px;
3589
3649
  }
3590
3650
 
3591
- .segmented-control-button-label {
3651
+ .segmented-control-label {
3592
3652
  display: flex;
3593
3653
  align-items: center;
3594
3654
  justify-content: center;
@@ -3600,7 +3660,7 @@ figure.chip {
3600
3660
  transition: color 0.2s ease;
3601
3661
  }
3602
3662
 
3603
- .segmented-control-button:where([data-state=on]) .segmented-control-button-label {
3663
+ .segmented-control-button:where([data-state=on]) .segmented-control-label {
3604
3664
  color: var(--segmented-label-active-color);
3605
3665
  }
3606
3666
 
@@ -3876,7 +3936,7 @@ figure.chip {
3876
3936
  }
3877
3937
 
3878
3938
  .select-button[data-priority=secondary][data-size=large] .select-label {
3879
- font-weight: 600;
3939
+ --select-text-large-weight: 600;
3880
3940
  }
3881
3941
 
3882
3942
  .select-tags {
@@ -4187,157 +4247,162 @@ figure.chip {
4187
4247
 
4188
4248
 
4189
4249
 
4190
- .table.table-container {
4250
+ .table {
4191
4251
  width: 100%;
4192
4252
  border-collapse: collapse;
4193
4253
  border-spacing: 0;
4194
4254
  }
4195
-
4196
- .table.table-container .table-native-cell.table-th,
4197
- .table.table-container .table-native-cell.table-td {
4255
+ .table :where(.table-native-cell):where(.table-th) {
4198
4256
  vertical-align: middle;
4199
4257
  background-color: var(--table-cell-background-color);
4200
4258
  text-align: left;
4201
4259
  }
4202
-
4203
- .table.table-container[data-layout=line] .table-native-cell.table-th,
4204
- .table.table-container[data-layout=line] .table-native-cell.table-td {
4260
+ .table :where(.table-native-cell):where(.table-td) {
4261
+ vertical-align: middle;
4262
+ background-color: var(--table-cell-background-color);
4263
+ text-align: left;
4264
+ position: relative;
4265
+ z-index: 0;
4266
+ }
4267
+ .table[data-layout=line] :where(.table-native-cell):where(.table-th) {
4205
4268
  --table-cell-padding-inline: var(--table-line-cell-padding-inline);
4206
4269
  --table-cell-padding-block: var(--table-line-cell-padding-block);
4207
4270
  border-bottom: 1px solid var(--table-border-color);
4208
4271
  }
4209
-
4210
- .table.table-container[data-layout=line] .table-head .table-native-cell.table-th {
4272
+ .table[data-layout=line] :where(.table-native-cell):where(.table-td) {
4273
+ --table-cell-padding-inline: var(--table-line-cell-padding-inline);
4274
+ --table-cell-padding-block: var(--table-line-cell-padding-block);
4275
+ border-bottom: 1px solid var(--table-border-color);
4276
+ }
4277
+ .table[data-layout=line] :where(.table-head) :where(.table-native-cell):where(.table-th) {
4211
4278
  height: var(--table-line-cell-height-head);
4212
4279
  border-top: 1px solid var(--table-border-color);
4213
4280
  background-color: var(--table-line-head-background-color);
4214
4281
  }
4215
-
4216
- .table.table-container[data-layout=line] .table-body .table-native-cell.table-td,
4217
- .table.table-container[data-layout=line] .table-foot .table-native-cell.table-td {
4282
+ .table[data-layout=line] :where(.table-body) :where(.table-native-cell):where(.table-td) {
4218
4283
  height: var(--table-line-cell-height-body);
4219
4284
  }
4220
-
4221
- .table.table-container[data-layout=line] .table-body .table-native-cell.table-th .table-native-cell-text,
4222
- .table.table-container[data-layout=line] .table-body .table-native-cell.table-th .table-cell-text {
4285
+ .table[data-layout=line] :where(.table-body) :where(.table-native-cell):where(.table-th) :where(.table-native-cell-text) {
4223
4286
  font-weight: 600;
4224
4287
  }
4225
-
4226
- .table.table-container[data-layout=line] .table-native-cell[rowspan] {
4288
+ .table[data-layout=line] :where(.table-body) :where(.table-native-cell):where(.table-th) :where(.table-cell-text) {
4289
+ font-weight: 600;
4290
+ }
4291
+ .table[data-layout=line] :where(.table-foot) :where(.table-native-cell):where(.table-td) {
4292
+ height: var(--table-line-cell-height-body);
4293
+ }
4294
+ .table[data-layout=line] :where(.table-native-cell[rowspan]) {
4227
4295
  border-right: 1px solid var(--table-border-color);
4228
4296
  }
4229
-
4230
- .table.table-container[data-layout=grid] .table-native-cell.table-th,
4231
- .table.table-container[data-layout=grid] .table-native-cell.table-td {
4297
+ .table[data-layout=grid] {
4298
+ border-radius: var(--table-grid-border-radius);
4299
+ overflow: visible;
4300
+ isolation: isolate;
4301
+ }
4302
+ .table[data-layout=grid] :where(.table-native-cell):where(.table-th) {
4232
4303
  --table-cell-padding-inline: var(--table-grid-cell-padding-inline);
4233
4304
  --table-cell-padding-block: var(--table-grid-cell-padding-block);
4234
4305
  height: var(--table-grid-cell-height);
4235
4306
  }
4236
-
4237
- .table.table-container[data-layout=grid] {
4238
- border-radius: var(--table-grid-border-radius);
4239
- overflow: visible;
4240
- isolation: isolate;
4307
+ .table[data-layout=grid] :where(.table-native-cell):where(.table-td) {
4308
+ --table-cell-padding-inline: var(--table-grid-cell-padding-inline);
4309
+ --table-cell-padding-block: var(--table-grid-cell-padding-block);
4310
+ height: var(--table-grid-cell-height);
4241
4311
  }
4242
-
4243
- .table.table-container[data-layout=grid] .table-head .table-native-cell.table-th {
4312
+ .table[data-layout=grid] :where(.table-head) :where(.table-native-cell):where(.table-th) {
4244
4313
  background-color: var(--table-grid-head-background-color);
4245
4314
  }
4246
-
4247
- .table.table-container[data-layout=grid] .table-body .table-native-cell.table-th {
4315
+ .table[data-layout=grid] :where(.table-head) :where(.table-row:first-child) > :where(.table-native-cell:first-child) {
4316
+ border-top-left-radius: var(--table-grid-border-radius);
4317
+ }
4318
+ .table[data-layout=grid] :where(.table-head) :where(.table-row:first-child) > :where(.table-native-cell:last-child) {
4319
+ border-top-right-radius: var(--table-grid-border-radius);
4320
+ }
4321
+ .table[data-layout=grid] :where(.table-body) :where(.table-native-cell):where(.table-th) {
4248
4322
  background-color: var(--table-grid-row-header-background-color);
4249
4323
  }
4250
-
4251
- .table.table-container[data-layout=grid] .table-foot .table-native-cell.table-th {
4324
+ .table[data-layout=grid] :where(.table-foot) :where(.table-native-cell):where(.table-th) {
4252
4325
  background-color: var(--table-grid-row-header-background-color);
4253
4326
  }
4254
-
4255
- .table.table-container[data-layout=grid] .table-row[data-highlighted=true] .table-native-cell.table-th,
4256
- .table.table-container[data-layout=grid] .table-row[data-highlighted=true] .table-native-cell.table-td {
4327
+ .table[data-layout=grid] :where(.table-row[data-highlighted=true]) :where(.table-native-cell):where(.table-th) {
4257
4328
  background-color: var(--table-grid-row-highlight-background-color);
4258
4329
  }
4259
-
4260
- .table.table-container .table-row > .table-native-cell.table-th:first-child {
4261
- position: sticky;
4262
- left: 0;
4330
+ .table[data-layout=grid] :where(.table-row[data-highlighted=true]) :where(.table-native-cell):where(.table-td) {
4331
+ background-color: var(--table-grid-row-highlight-background-color);
4263
4332
  }
4264
-
4265
- .table.table-container .table-head .table-row > .table-native-cell.table-th:first-child {
4266
- z-index: 150;
4333
+ .table[data-layout=grid] :where(.table-cell-content) {
4334
+ border-right: 1px solid var(--table-border-color);
4335
+ border-bottom: 1px solid var(--table-border-color);
4267
4336
  }
4268
-
4269
- .table.table-container .table-body .table-row > .table-native-cell.table-th:first-child {
4270
- z-index: 100;
4337
+ .table[data-layout=grid] :where(.table-head) :where(.table-row:first-child) > :where(.table-native-cell) > :where(.table-cell-content) {
4338
+ border-top: 1px solid var(--table-border-color);
4271
4339
  }
4272
-
4273
- .table.table-container .table-foot .table-row > .table-native-cell.table-th:first-child {
4274
- z-index: 50;
4340
+ .table[data-layout=grid] :where(.table-row) > :where(.table-native-cell:first-child) > :where(.table-cell-content) {
4341
+ border-left: 1px solid var(--table-border-color);
4275
4342
  }
4276
-
4277
- .table.table-container .table-head .table-row:first-child > .table-native-cell.table-th:first-child {
4278
- z-index: 200;
4343
+ .table[data-layout=grid] :where(.table-row) > :where(.table-native-cell[rowspan]) > :where(.table-cell-content) {
4344
+ border-right: 0;
4279
4345
  }
4280
-
4281
- .table.table-container .table-native-cell.table-td {
4282
- position: relative;
4283
- z-index: 0;
4346
+ .table[data-layout=grid] :where(.table-row) > :where(.table-native-cell[rowspan] + .table-native-cell) > :where(.table-cell-content) {
4347
+ border-left: 1px solid var(--table-border-color);
4284
4348
  }
4285
-
4286
- .table.table-container[data-layout=grid] .table-head .table-row:first-child > .table-native-cell:first-child {
4287
- border-top-left-radius: var(--table-grid-border-radius);
4349
+ .table[data-layout=grid] :where(.table-row:first-child) > :where(.table-native-cell:first-child) :where(.table-cell-content) {
4350
+ border-top-left-radius: inherit;
4288
4351
  }
4289
-
4290
- .table.table-container[data-layout=grid] .table-head .table-row:first-child > .table-native-cell:last-child {
4291
- border-top-right-radius: var(--table-grid-border-radius);
4352
+ .table[data-layout=grid] :where(.table-row:first-child) > :where(.table-native-cell:last-child) :where(.table-cell-content) {
4353
+ border-top-right-radius: inherit;
4292
4354
  }
4293
-
4294
- .table.table-container[data-layout=grid] .table-foot .table-row:last-child > .table-native-cell:first-child,
4295
- .table.table-container[data-layout=grid]:not([data-has-footer=true]) .table-body:last-of-type .table-row:last-child > .table-native-cell:first-child {
4355
+ .table[data-layout=grid] :where(.table-foot) :where(.table-row:last-child) > :where(.table-native-cell:first-child) {
4296
4356
  border-bottom-left-radius: var(--table-grid-border-radius);
4297
4357
  }
4298
-
4299
- .table.table-container[data-layout=grid] .table-foot .table-row:last-child > .table-native-cell:last-child,
4300
- .table.table-container[data-layout=grid]:not([data-has-footer=true]) .table-body:last-of-type .table-row:last-child > .table-native-cell:last-child {
4358
+ .table[data-layout=grid] :where(.table-foot) :where(.table-row:last-child) > :where(.table-native-cell:first-child) :where(.table-cell-content) {
4359
+ border-bottom-left-radius: inherit;
4360
+ }
4361
+ .table[data-layout=grid] :where(.table-foot) :where(.table-row:last-child) > :where(.table-native-cell:last-child) {
4301
4362
  border-bottom-right-radius: var(--table-grid-border-radius);
4302
4363
  }
4303
-
4304
- .table.table-container[data-layout=grid] .table-cell-content {
4305
- border-right: 1px solid var(--table-border-color);
4306
- border-bottom: 1px solid var(--table-border-color);
4364
+ .table[data-layout=grid] :where(.table-foot) :where(.table-row:last-child) > :where(.table-native-cell:last-child) :where(.table-cell-content) {
4365
+ border-bottom-right-radius: inherit;
4307
4366
  }
4308
-
4309
- .table.table-container[data-layout=grid] .table-head .table-row:first-child > .table-native-cell > .table-cell-content {
4310
- border-top: 1px solid var(--table-border-color);
4367
+ .table[data-layout=grid]:not([data-has-footer=true]) :where(.table-body:last-of-type) :where(.table-row:last-child) > :where(.table-native-cell:first-child) {
4368
+ border-bottom-left-radius: var(--table-grid-border-radius);
4311
4369
  }
4312
-
4313
- .table.table-container[data-layout=grid] .table-row > .table-native-cell:first-child > .table-cell-content {
4314
- border-left: 1px solid var(--table-border-color);
4370
+ .table[data-layout=grid]:not([data-has-footer=true]) :where(.table-body:last-of-type) :where(.table-row:last-child) > :where(.table-native-cell:first-child) :where(.table-cell-content) {
4371
+ border-bottom-left-radius: inherit;
4315
4372
  }
4316
-
4317
- .table.table-container[data-layout=grid] .table-row > .table-native-cell[rowspan] > .table-cell-content {
4318
- border-right: 0;
4373
+ .table[data-layout=grid]:not([data-has-footer=true]) :where(.table-body:last-of-type) :where(.table-row:last-child) > :where(.table-native-cell:last-child) {
4374
+ border-bottom-right-radius: var(--table-grid-border-radius);
4319
4375
  }
4320
-
4321
- .table.table-container[data-layout=grid] .table-row > .table-native-cell[rowspan] + .table-native-cell > .table-cell-content {
4322
- border-left: 1px solid var(--table-border-color);
4376
+ .table[data-layout=grid]:not([data-has-footer=true]) :where(.table-body:last-of-type) :where(.table-row:last-child) > :where(.table-native-cell:last-child) :where(.table-cell-content) {
4377
+ border-bottom-right-radius: inherit;
4323
4378
  }
4324
-
4325
- .table.table-container[data-layout=grid] .table-row:first-child > .table-native-cell:first-child .table-cell-content {
4326
- border-top-left-radius: inherit;
4379
+ .table :where(.table-row) > :where(.table-native-cell:first-child):where(.table-th) {
4380
+ position: sticky;
4381
+ left: 0;
4327
4382
  }
4328
-
4329
- .table.table-container[data-layout=grid] .table-row:first-child > .table-native-cell:last-child .table-cell-content {
4330
- border-top-right-radius: inherit;
4383
+ .table :where(.table-head) :where(.table-row) > :where(.table-native-cell:first-child):where(.table-th) {
4384
+ z-index: 150;
4331
4385
  }
4332
-
4333
- .table.table-container[data-layout=grid] .table-foot .table-row:last-child > .table-native-cell:first-child .table-cell-content,
4334
- .table.table-container[data-layout=grid]:not([data-has-footer=true]) .table-body:last-of-type .table-row:last-child > .table-native-cell:first-child .table-cell-content {
4335
- border-bottom-left-radius: inherit;
4386
+ .table :where(.table-body) :where(.table-row) > :where(.table-native-cell:first-child):where(.table-th) {
4387
+ z-index: 100;
4336
4388
  }
4337
-
4338
- .table.table-container[data-layout=grid] .table-foot .table-row:last-child > .table-native-cell:last-child .table-cell-content,
4339
- .table.table-container[data-layout=grid]:not([data-has-footer=true]) .table-body:last-of-type .table-row:last-child > .table-native-cell:last-child .table-cell-content {
4340
- border-bottom-right-radius: inherit;
4389
+ .table :where(.table-foot) :where(.table-row) > :where(.table-native-cell:first-child):where(.table-th) {
4390
+ z-index: 50;
4391
+ }
4392
+ .table :where(.table-head) :where(.table-row:first-child) > :where(.table-native-cell:first-child):where(.table-th) {
4393
+ z-index: 200;
4394
+ }
4395
+ .table :where(.table-foot .table-cell-content) {
4396
+ color: var(--table-td-text-color);
4397
+ font-size: var(--table-td-text-size);
4398
+ font-weight: var(--table-td-text-weight);
4399
+ line-height: var(--table-td-text-line-height);
4400
+ }
4401
+ .table :where(.table-foot .table-cell-text) {
4402
+ color: var(--table-td-text-color);
4403
+ font-size: var(--table-td-text-size);
4404
+ font-weight: var(--table-td-text-weight);
4405
+ line-height: var(--table-td-text-line-height);
4341
4406
  }
4342
4407
 
4343
4408
  .table-scroll-wrapper {
@@ -4359,14 +4424,13 @@ figure.chip {
4359
4424
  overflow: auto;
4360
4425
  }
4361
4426
 
4362
- .table-native-cell.table-th .table-native-cell-text {
4427
+ :where(.table-native-cell):where(.table-th) .table-native-cell-text {
4363
4428
  color: var(--table-th-text-color);
4364
4429
  font-size: var(--table-th-text-size);
4365
4430
  font-weight: var(--table-th-text-weight);
4366
4431
  line-height: var(--table-th-text-line-height);
4367
4432
  }
4368
-
4369
- .table-native-cell.table-td .table-native-cell-text {
4433
+ :where(.table-native-cell):where(.table-td) .table-native-cell-text {
4370
4434
  color: var(--table-td-text-color);
4371
4435
  font-size: var(--table-td-text-size);
4372
4436
  font-weight: var(--table-td-text-weight);
@@ -4448,7 +4512,7 @@ figure.chip {
4448
4512
  margin: 0;
4449
4513
  }
4450
4514
 
4451
- .table-cell-content .table-cell-text {
4515
+ :where(.table-cell-content) :where(.table-cell-text) {
4452
4516
  color: inherit;
4453
4517
  font-size: inherit;
4454
4518
  font-weight: inherit;
@@ -4551,7 +4615,7 @@ figure.chip {
4551
4615
  align-items: baseline;
4552
4616
  }
4553
4617
 
4554
- .table-cell.table-head-cell .table-cell-text {
4618
+ :where(.table-cell):where(.table-head-cell) .table-cell-text {
4555
4619
  color: var(--table-th-text-color);
4556
4620
  font-size: var(--table-th-text-size);
4557
4621
  font-weight: var(--table-th-text-weight);
@@ -4567,31 +4631,31 @@ figure.chip {
4567
4631
  line-height: var(--table-td-text-line-height);
4568
4632
  }
4569
4633
 
4570
- .table-cell.table-head-cell .radio-label-text {
4634
+ :where(.table-cell):where(.table-head-cell) .radio-label-text {
4571
4635
  color: var(--table-th-text-color);
4572
4636
  font-size: var(--table-th-text-size);
4573
4637
  font-weight: var(--table-th-text-weight);
4574
4638
  line-height: var(--table-th-text-line-height);
4575
4639
  }
4576
-
4577
- .table-cell.table-body-cell .table-cell-text,
4578
- .table-cell.table-foot-cell .table-cell-text {
4640
+ :where(.table-cell):where(.table-body-cell) .table-cell-text {
4579
4641
  color: var(--table-td-text-color);
4580
4642
  font-size: var(--table-td-text-size);
4581
4643
  font-weight: var(--table-td-text-weight);
4582
4644
  line-height: var(--table-td-text-line-height);
4583
4645
  }
4584
-
4585
- .table.table-container .table-foot .table-cell-content,
4586
- .table.table-container .table-foot .table-cell-text {
4646
+ :where(.table-cell):where(.table-body-cell) .radio-label-text {
4587
4647
  color: var(--table-td-text-color);
4588
4648
  font-size: var(--table-td-text-size);
4589
4649
  font-weight: var(--table-td-text-weight);
4590
4650
  line-height: var(--table-td-text-line-height);
4591
4651
  }
4592
-
4593
- .table-cell.table-body-cell .radio-label-text,
4594
- .table-cell.table-foot-cell .radio-label-text {
4652
+ :where(.table-cell):where(.table-foot-cell) .table-cell-text {
4653
+ color: var(--table-td-text-color);
4654
+ font-size: var(--table-td-text-size);
4655
+ font-weight: var(--table-td-text-weight);
4656
+ line-height: var(--table-td-text-line-height);
4657
+ }
4658
+ :where(.table-cell):where(.table-foot-cell) .radio-label-text {
4595
4659
  color: var(--table-td-text-color);
4596
4660
  font-size: var(--table-td-text-size);
4597
4661
  font-weight: var(--table-td-text-weight);