@uniai-fe/uds-primitives 0.3.57 → 0.3.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/styles.css CHANGED
@@ -2556,34 +2556,34 @@ figure.chip {
2556
2556
  flex: var(--input-flex);
2557
2557
  min-width: 0;
2558
2558
  }
2559
- .input[data-width=auto] {
2559
+ .input:where([data-width=auto]) {
2560
2560
  --input-width: auto;
2561
2561
  --input-flex: 0 1 auto;
2562
2562
  }
2563
- .input[data-width=fill] {
2563
+ .input:where([data-width=fill]) {
2564
2564
  --input-width: auto;
2565
2565
  --input-flex: 1 1 0%;
2566
2566
  }
2567
- .input[data-width=full], .input[data-block=true] {
2567
+ .input:where([data-width=full]), .input:where([data-block=true]) {
2568
2568
  --input-width: 100%;
2569
2569
  --input-flex: 0 0 100%;
2570
2570
  }
2571
- .input[data-width=fit] {
2571
+ .input:where([data-width=fit]) {
2572
2572
  --input-width: fit-content;
2573
2573
  --input-flex: 0 0 auto;
2574
2574
  }
2575
- .input[data-width=custom] {
2575
+ .input:where([data-width=custom]) {
2576
2576
  --input-flex: 0 0 auto;
2577
2577
  }
2578
2578
  .input--block {
2579
2579
  width: 100%;
2580
2580
  }
2581
- .input[data-priority=table] {
2581
+ .input:where([data-priority=table]) {
2582
2582
  display: block;
2583
2583
  --input-width: 100%;
2584
2584
  height: 100%;
2585
2585
  }
2586
- .input[data-priority=table] .input-box {
2586
+ .input:where([data-priority=table]) .input-box {
2587
2587
  height: 100%;
2588
2588
  }
2589
2589
 
@@ -2626,21 +2626,21 @@ figure.chip {
2626
2626
  outline: none;
2627
2627
  box-shadow: none;
2628
2628
  }
2629
- .input-field[data-size=small] {
2629
+ .input-field:where([data-size=small]) {
2630
2630
  min-height: var(--input-default-height-small);
2631
2631
  --input-font-size: var(--input-text-small-size);
2632
2632
  --input-line-height: var(--input-text-small-line-height);
2633
2633
  --input-font-weight: var(--input-text-small-weight);
2634
2634
  --input-letter-spacing: var(--input-text-small-letter-spacing);
2635
2635
  }
2636
- .input-field[data-size=large] {
2636
+ .input-field:where([data-size=large]) {
2637
2637
  min-height: var(--input-default-height-large);
2638
2638
  --input-font-size: var(--input-text-large-size);
2639
2639
  --input-line-height: var(--input-text-large-line-height);
2640
2640
  --input-font-weight: var(--input-text-large-weight);
2641
2641
  --input-letter-spacing: var(--input-text-large-letter-spacing);
2642
2642
  }
2643
- .input-field[data-priority=secondary] {
2643
+ .input-field:where([data-priority=secondary]) {
2644
2644
  border: none;
2645
2645
  border-bottom: var(--input-border-width-default) solid var(--input-border-color);
2646
2646
  border-radius: 0;
@@ -2648,23 +2648,23 @@ figure.chip {
2648
2648
  padding-block: var(--input-secondary-padding-block);
2649
2649
  background-color: var(--input-secondary-surface-color);
2650
2650
  }
2651
- .input-field[data-priority=secondary][data-state=active], .input-field[data-priority=secondary][data-state=focused] {
2651
+ .input-field:where([data-priority=secondary]):where([data-state=active]), .input-field:where([data-priority=secondary]):where([data-state=focused]) {
2652
2652
  border-bottom-color: var(--input-border-active-color);
2653
2653
  border-bottom-width: var(--input-border-width-emphasis);
2654
2654
  }
2655
- .input-field[data-priority=secondary][data-state=success] {
2655
+ .input-field:where([data-priority=secondary]):where([data-state=success]) {
2656
2656
  border-bottom-color: var(--input-border-success-color);
2657
2657
  border-bottom-width: var(--input-border-width-emphasis);
2658
2658
  }
2659
- .input-field[data-priority=secondary][data-state=error] {
2659
+ .input-field:where([data-priority=secondary]):where([data-state=error]) {
2660
2660
  border-bottom-color: var(--input-border-error-color);
2661
2661
  border-bottom-width: var(--input-border-width-emphasis);
2662
2662
  }
2663
- .input-field[data-priority=secondary][data-state=disabled] {
2663
+ .input-field:where([data-priority=secondary]):where([data-state=disabled]) {
2664
2664
  border-bottom-color: var(--input-border-underline-disabled-color);
2665
2665
  border-bottom-width: var(--input-border-width-default);
2666
2666
  }
2667
- .input-field[data-priority=tertiary] {
2667
+ .input-field:where([data-priority=tertiary]) {
2668
2668
  border-radius: var(--input-tertiary-radius-base);
2669
2669
  background-color: var(--input-surface-color);
2670
2670
  min-height: var(--input-tertiary-height-base);
@@ -2677,7 +2677,7 @@ figure.chip {
2677
2677
  flex-wrap: wrap;
2678
2678
  align-items: center;
2679
2679
  }
2680
- .input-field[data-priority=tertiary] .input-field-control {
2680
+ .input-field:where([data-priority=tertiary]) .input-field-control {
2681
2681
  display: grid;
2682
2682
  grid-template-columns: auto minmax(0, 1fr);
2683
2683
  column-gap: var(--input-default-gap);
@@ -2686,57 +2686,57 @@ figure.chip {
2686
2686
  flex: 1 1 auto;
2687
2687
  min-width: 0;
2688
2688
  }
2689
- .input-field[data-priority=tertiary] .input-inline-label {
2689
+ .input-field:where([data-priority=tertiary]) .input-inline-label {
2690
2690
  grid-column: 1/-1;
2691
2691
  margin: 0;
2692
2692
  align-self: flex-start;
2693
2693
  }
2694
- .input-field[data-priority=tertiary] .input-element {
2694
+ .input-field:where([data-priority=tertiary]) .input-element {
2695
2695
  min-height: var(--input-tertiary-element-min-height);
2696
2696
  width: auto;
2697
2697
  flex: 1 1 auto;
2698
2698
  }
2699
- .input-field[data-priority=tertiary] .input-field-utilities {
2699
+ .input-field:where([data-priority=tertiary]) .input-field-utilities {
2700
2700
  align-self: center;
2701
2701
  margin-left: 0;
2702
2702
  }
2703
- .input-field[data-priority=table] {
2703
+ .input-field:where([data-priority=table]) {
2704
2704
  height: 100%;
2705
2705
  border-radius: var(--input-table-radius-base);
2706
2706
  border-color: var(--input-border-table-default-color);
2707
2707
  background-color: var(--input-table-surface-color);
2708
2708
  }
2709
- .input-field[data-priority=table][data-state=disabled] {
2709
+ .input-field:where([data-priority=table]):where([data-state=disabled]) {
2710
2710
  border-color: var(--input-border-table-disabled-color);
2711
2711
  background-color: var(--input-table-surface-disabled-color);
2712
2712
  }
2713
- .input-field[data-priority=table][data-readonly=true] {
2713
+ .input-field:where([data-priority=table]):where([data-readonly=true]) {
2714
2714
  border-color: var(--input-border-table-readonly-color);
2715
2715
  background-color: var(--input-table-surface-readonly-color);
2716
2716
  }
2717
- .input-field:not([data-priority=secondary])[data-state=active], .input-field:not([data-priority=secondary])[data-state=focused] {
2717
+ .input-field:not([data-priority=secondary]):where([data-state=active]), .input-field:not([data-priority=secondary]):where([data-state=focused]) {
2718
2718
  border-color: var(--input-border-active-color);
2719
2719
  border-width: var(--input-border-width-emphasis);
2720
2720
  }
2721
- .input-field:not([data-priority=secondary])[data-state=success] {
2721
+ .input-field:not([data-priority=secondary]):where([data-state=success]) {
2722
2722
  border-color: var(--input-border-success-color);
2723
2723
  border-width: var(--input-border-width-emphasis);
2724
2724
  }
2725
- .input-field:not([data-priority=secondary])[data-state=error] {
2725
+ .input-field:not([data-priority=secondary]):where([data-state=error]) {
2726
2726
  border-color: var(--input-border-error-color);
2727
2727
  border-width: var(--input-border-width-emphasis);
2728
2728
  }
2729
- .input-field:not([data-priority=secondary])[data-state=disabled] {
2729
+ .input-field:not([data-priority=secondary]):where([data-state=disabled]) {
2730
2730
  border-color: var(--input-border-disabled-color);
2731
2731
  border-width: var(--input-border-width-default);
2732
2732
  background-color: var(--input-surface-disabled-color); /* disabled 배경 토큰 */
2733
2733
  }
2734
- .input-field:not([data-priority=secondary])[data-readonly=true] {
2734
+ .input-field:not([data-priority=secondary]):where([data-readonly=true]) {
2735
2735
  border-color: var(--input-border-disabled-color);
2736
2736
  border-width: var(--input-border-width-default);
2737
2737
  background-color: var(--input-surface-disabled-color);
2738
2738
  }
2739
- .input-field:not([data-priority=secondary])[data-state=error][data-readonly=true] {
2739
+ .input-field:not([data-priority=secondary]):where([data-state=error][data-readonly=true]) {
2740
2740
  border-color: var(--input-border-error-color);
2741
2741
  border-width: var(--input-border-width-emphasis);
2742
2742
  }
@@ -2777,7 +2777,7 @@ figure.chip {
2777
2777
  box-shadow: none;
2778
2778
  }
2779
2779
 
2780
- .input-field[data-has-value=true] .input-element:not(:disabled) {
2780
+ .input-field:where([data-has-value=true]) .input-element:not(:disabled) {
2781
2781
  color: var(--input-text-color);
2782
2782
  caret-color: var(--input-text-color);
2783
2783
  }
@@ -2790,7 +2790,7 @@ figure.chip {
2790
2790
  min-width: 0;
2791
2791
  }
2792
2792
 
2793
- .input[data-input-type=textarea] .input-field {
2793
+ .input:where([data-input-type=textarea]) .input-field {
2794
2794
  --input-textarea-radius: var(--input-textarea-radius-medium);
2795
2795
  --input-textarea-padding-inline: var(--input-textarea-padding-inline-medium);
2796
2796
  --input-textarea-padding-block: var(--input-textarea-padding-block-medium);
@@ -2801,29 +2801,29 @@ figure.chip {
2801
2801
  border-radius: var(--input-textarea-radius);
2802
2802
  padding: var(--input-textarea-padding-block) var(--input-textarea-padding-inline);
2803
2803
  }
2804
- .input[data-input-type=textarea] .input-field[data-size=small] {
2804
+ .input:where([data-input-type=textarea]) .input-field:where([data-size=small]) {
2805
2805
  --input-textarea-radius: var(--input-textarea-radius-small);
2806
2806
  --input-textarea-padding-inline: var(--input-textarea-padding-inline-small);
2807
2807
  --input-textarea-padding-block: var(--input-textarea-padding-block-small);
2808
2808
  --input-textarea-gap: var(--input-textarea-gap-small);
2809
2809
  }
2810
- .input[data-input-type=textarea] .input-field[data-size=large] {
2810
+ .input:where([data-input-type=textarea]) .input-field:where([data-size=large]) {
2811
2811
  --input-textarea-radius: var(--input-textarea-radius-large);
2812
2812
  --input-textarea-padding-inline: var(--input-textarea-padding-inline-large);
2813
2813
  --input-textarea-padding-block: var(--input-textarea-padding-block-large);
2814
2814
  --input-textarea-gap: var(--input-textarea-gap-large);
2815
2815
  }
2816
2816
 
2817
- .input[data-input-type=textarea] {
2817
+ .input:where([data-input-type=textarea]) {
2818
2818
  min-height: var(--input-textarea-height);
2819
2819
  }
2820
- .input[data-input-type=textarea] .input-box {
2820
+ .input:where([data-input-type=textarea]) .input-box {
2821
2821
  height: 100%;
2822
2822
  }
2823
- .input[data-input-type=textarea] .input-field {
2823
+ .input:where([data-input-type=textarea]) .input-field {
2824
2824
  height: 100%;
2825
2825
  }
2826
- .input[data-input-type=textarea] .input-field-control {
2826
+ .input:where([data-input-type=textarea]) .input-field-control {
2827
2827
  flex: 1 1 auto;
2828
2828
  width: 100%;
2829
2829
  align-items: stretch;
@@ -2865,27 +2865,27 @@ figure.chip {
2865
2865
  color: var(--input-label-color);
2866
2866
  }
2867
2867
 
2868
- .input-field[data-priority=secondary] .input-element {
2868
+ .input-field:where([data-priority=secondary]) .input-element {
2869
2869
  padding-inline: 0;
2870
2870
  }
2871
2871
 
2872
- .input-field[data-priority=tertiary] .input-element {
2872
+ .input-field:where([data-priority=tertiary]) .input-element {
2873
2873
  min-height: var(--input-tertiary-element-min-height);
2874
2874
  }
2875
2875
 
2876
- .input-field[data-priority=table][data-size=small] .input-element {
2876
+ .input-field:where([data-priority=table]):where([data-size=small]) .input-element {
2877
2877
  font-size: var(--input-table-text-small-size);
2878
2878
  line-height: var(--input-table-text-small-line-height);
2879
2879
  font-weight: var(--input-table-text-small-weight);
2880
2880
  }
2881
2881
 
2882
- .input-field[data-priority=table][data-size=medium] .input-element {
2882
+ .input-field:where([data-priority=table]):where([data-size=medium]) .input-element {
2883
2883
  font-size: var(--input-table-text-medium-size);
2884
2884
  line-height: var(--input-table-text-medium-line-height);
2885
2885
  font-weight: var(--input-table-text-medium-weight);
2886
2886
  }
2887
2887
 
2888
- .input-field[data-priority=table][data-size=large] .input-element {
2888
+ .input-field:where([data-priority=table]):where([data-size=large]) .input-element {
2889
2889
  font-size: var(--input-table-text-large-size);
2890
2890
  line-height: var(--input-table-text-large-line-height);
2891
2891
  font-weight: var(--input-table-text-large-weight);
@@ -2896,10 +2896,10 @@ figure.chip {
2896
2896
  font-size: var(--input-helper-font-size);
2897
2897
  line-height: var(--input-helper-line-height);
2898
2898
  }
2899
- [data-state=error] .input-helper-text {
2899
+ :where([data-state=error]) .input-helper-text {
2900
2900
  color: var(--input-border-error-color);
2901
2901
  }
2902
- [data-state=disabled] .input-helper-text {
2902
+ :where([data-state=disabled]) .input-helper-text {
2903
2903
  color: var(--input-helper-disabled-color);
2904
2904
  }
2905
2905
 
@@ -2920,77 +2920,78 @@ figure.chip {
2920
2920
  .input-affix-clear, .input-affix-status {
2921
2921
  color: var(--input-text-color);
2922
2922
  }
2923
- .input-affix-status[data-state=error] {
2923
+ .input-affix-status:where([data-state=error]) {
2924
2924
  color: var(--input-status-error-color);
2925
2925
  }
2926
- .input-affix-status[data-state=success] {
2926
+ .input-affix-status:where([data-state=success]) {
2927
2927
  color: var(--input-status-success-color);
2928
2928
  }
2929
2929
 
2930
- .input-field[data-priority=secondary] {
2930
+ .input-field:where([data-priority=secondary]) {
2931
2931
  border-bottom-width: var(--input-border-width-default);
2932
2932
  }
2933
- .input-field[data-priority=secondary][data-state=active], .input-field[data-priority=secondary][data-state=focused] {
2933
+ .input-field:where([data-priority=secondary]) :where([data-state=active]),
2934
+ .input-field:where([data-priority=secondary]) :where([data-state=focused]) {
2934
2935
  border-bottom-color: var(--input-border-active-color);
2935
2936
  border-bottom-width: var(--input-border-width-emphasis);
2936
2937
  }
2937
- .input-field[data-priority=secondary][data-state=success] {
2938
+ .input-field:where([data-priority=secondary]) :where([data-state=success]) {
2938
2939
  border-bottom-color: var(--input-border-success-color);
2939
2940
  border-bottom-width: var(--input-border-width-emphasis);
2940
2941
  }
2941
- .input-field[data-priority=secondary][data-state=error] {
2942
+ .input-field:where([data-priority=secondary]) :where([data-state=error]) {
2942
2943
  border-bottom-color: var(--input-border-error-color);
2943
2944
  border-bottom-width: var(--input-border-width-emphasis);
2944
2945
  }
2945
- .input-field[data-priority=secondary][data-state=disabled] {
2946
+ .input-field:where([data-priority=secondary]) :where([data-state=disabled]) {
2946
2947
  border-bottom-color: var(--input-border-underline-disabled-color);
2947
2948
  border-bottom-width: var(--input-border-width-default);
2948
2949
  }
2949
- .input-field[data-priority=secondary][data-readonly=true] {
2950
+ .input-field:where([data-priority=secondary]) :where([data-readonly=true]) {
2950
2951
  border-bottom-color: var(--input-border-underline-disabled-color);
2951
2952
  border-bottom-width: var(--input-border-width-default);
2952
2953
  }
2953
2954
 
2954
- .input[data-state=active] .input-label,
2955
- .input[data-state=active] .input-inline-label,
2956
- .input[data-state=focused] .input-label,
2957
- .input[data-state=focused] .input-inline-label,
2958
- .input[data-state=success] .input-label,
2959
- .input[data-state=success] .input-inline-label {
2955
+ .input:where([data-state=active]) .input-label,
2956
+ .input:where([data-state=active]) .input-inline-label,
2957
+ .input:where([data-state=focused]) .input-label,
2958
+ .input:where([data-state=focused]) .input-inline-label,
2959
+ .input:where([data-state=success]) .input-label,
2960
+ .input:where([data-state=success]) .input-inline-label {
2960
2961
  color: var(--input-label-accent-color);
2961
2962
  }
2962
2963
 
2963
- .input[data-state=error] .input-label,
2964
- .input[data-state=error] .input-inline-label {
2964
+ .input:where([data-state=error]) .input-label,
2965
+ .input:where([data-state=error]) .input-inline-label {
2965
2966
  color: var(--input-label-error-color);
2966
2967
  }
2967
- .input[data-state=error] .input-helper-text {
2968
+ .input:where([data-state=error]) .input-helper-text {
2968
2969
  color: var(--input-label-error-color);
2969
2970
  }
2970
- .input[data-state=error] .input-textarea-length {
2971
+ .input:where([data-state=error]) .input-textarea-length {
2971
2972
  color: var(--input-label-error-color);
2972
2973
  }
2973
2974
 
2974
- .input[data-state=disabled] .input-label,
2975
- .input[data-state=disabled] .input-inline-label,
2976
- .input[data-state=disabled] .input-helper-text,
2977
- .input[data-state=disabled] .input-affix,
2978
- .input[data-state=disabled] .input-textarea-length {
2975
+ .input:where([data-state=disabled]) .input-label,
2976
+ .input:where([data-state=disabled]) .input-inline-label,
2977
+ .input:where([data-state=disabled]) .input-helper-text,
2978
+ .input:where([data-state=disabled]) .input-affix,
2979
+ .input:where([data-state=disabled]) .input-textarea-length {
2979
2980
  color: var(--input-helper-disabled-color);
2980
2981
  }
2981
- .input[data-state=disabled] .input-field {
2982
+ .input:where([data-state=disabled]) .input-field {
2982
2983
  border-color: var(--input-border-color);
2983
2984
  background-color: var(--input-surface-disabled-color);
2984
2985
  }
2985
- .input[data-state=disabled] .input-field[data-priority=secondary] {
2986
+ .input:where([data-state=disabled]) .input-field[data-priority=secondary] {
2986
2987
  background-color: var(--input-secondary-surface-color);
2987
2988
  }
2988
- .input[data-state=disabled] .input-field[data-priority=table] {
2989
+ .input:where([data-state=disabled]) .input-field[data-priority=table] {
2989
2990
  background-color: var(--input-table-surface-disabled-color);
2990
2991
  border-color: var(--input-border-table-disabled-color);
2991
2992
  }
2992
2993
 
2993
- .input[data-readonly=true] .input-field[data-priority=table] {
2994
+ .input:where([data-readonly=true]) .input-field:where([data-priority=table]) {
2994
2995
  background-color: var(--input-table-surface-readonly-color);
2995
2996
  border-color: var(--input-border-table-readonly-color);
2996
2997
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniai-fe/uds-primitives",
3
- "version": "0.3.57",
3
+ "version": "0.3.60",
4
4
  "description": "UNIAI Design System; Primitives Components Package",
5
5
  "type": "module",
6
6
  "private": false,
@@ -6,28 +6,28 @@
6
6
  flex: var(--input-flex);
7
7
  min-width: 0;
8
8
 
9
- &[data-width="auto"] {
9
+ &:where([data-width="auto"]) {
10
10
  --input-width: auto;
11
11
  --input-flex: 0 1 auto;
12
12
  }
13
13
 
14
- &[data-width="fill"] {
14
+ &:where([data-width="fill"]) {
15
15
  --input-width: auto;
16
16
  --input-flex: 1 1 0%;
17
17
  }
18
18
 
19
- &[data-width="full"],
20
- &[data-block="true"] {
19
+ &:where([data-width="full"]),
20
+ &:where([data-block="true"]) {
21
21
  --input-width: 100%;
22
22
  --input-flex: 0 0 100%;
23
23
  }
24
24
 
25
- &[data-width="fit"] {
25
+ &:where([data-width="fit"]) {
26
26
  --input-width: fit-content;
27
27
  --input-flex: 0 0 auto;
28
28
  }
29
29
 
30
- &[data-width="custom"] {
30
+ &:where([data-width="custom"]) {
31
31
  --input-flex: 0 0 auto;
32
32
  }
33
33
 
@@ -35,7 +35,7 @@
35
35
  width: 100%;
36
36
  }
37
37
 
38
- &[data-priority="table"] {
38
+ &:where([data-priority="table"]) {
39
39
  display: block;
40
40
  --input-width: 100%;
41
41
  height: 100%;
@@ -87,7 +87,7 @@
87
87
  outline: none;
88
88
  box-shadow: none;
89
89
 
90
- &[data-size="small"] {
90
+ &:where([data-size="small"]) {
91
91
  min-height: var(--input-default-height-small);
92
92
  // Figma small 규격(40px/15px/1.4/0.2px)을 size token으로 고정한다.
93
93
  --input-font-size: var(--input-text-small-size);
@@ -96,7 +96,7 @@
96
96
  --input-letter-spacing: var(--input-text-small-letter-spacing);
97
97
  }
98
98
 
99
- &[data-size="large"] {
99
+ &:where([data-size="large"]) {
100
100
  min-height: var(--input-default-height-large);
101
101
  // Figma large 규격(56px/19px)을 size token으로 고정한다.
102
102
  --input-font-size: var(--input-text-large-size);
@@ -105,7 +105,7 @@
105
105
  --input-letter-spacing: var(--input-text-large-letter-spacing);
106
106
  }
107
107
 
108
- &[data-priority="secondary"] {
108
+ &:where([data-priority="secondary"]) {
109
109
  border: none;
110
110
  border-bottom: var(--input-border-width-default) solid
111
111
  var(--input-border-color);
@@ -114,29 +114,29 @@
114
114
  padding-block: var(--input-secondary-padding-block);
115
115
  background-color: var(--input-secondary-surface-color);
116
116
 
117
- &[data-state="active"],
118
- &[data-state="focused"] {
117
+ &:where([data-state="active"]),
118
+ &:where([data-state="focused"]) {
119
119
  border-bottom-color: var(--input-border-active-color);
120
120
  border-bottom-width: var(--input-border-width-emphasis);
121
121
  }
122
122
 
123
- &[data-state="success"] {
123
+ &:where([data-state="success"]) {
124
124
  border-bottom-color: var(--input-border-success-color);
125
125
  border-bottom-width: var(--input-border-width-emphasis);
126
126
  }
127
127
 
128
- &[data-state="error"] {
128
+ &:where([data-state="error"]) {
129
129
  border-bottom-color: var(--input-border-error-color);
130
130
  border-bottom-width: var(--input-border-width-emphasis);
131
131
  }
132
132
 
133
- &[data-state="disabled"] {
133
+ &:where([data-state="disabled"]) {
134
134
  border-bottom-color: var(--input-border-underline-disabled-color);
135
135
  border-bottom-width: var(--input-border-width-default);
136
136
  }
137
137
  }
138
138
 
139
- &[data-priority="tertiary"] {
139
+ &:where([data-priority="tertiary"]) {
140
140
  border-radius: var(--input-tertiary-radius-base);
141
141
  background-color: var(--input-surface-color);
142
142
  min-height: var(--input-tertiary-height-base);
@@ -178,42 +178,42 @@
178
178
  }
179
179
  }
180
180
 
181
- &[data-priority="table"] {
181
+ &:where([data-priority="table"]) {
182
182
  height: 100%;
183
183
 
184
184
  border-radius: var(--input-table-radius-base);
185
185
  border-color: var(--input-border-table-default-color);
186
186
  background-color: var(--input-table-surface-color);
187
187
 
188
- &[data-state="disabled"] {
188
+ &:where([data-state="disabled"]) {
189
189
  border-color: var(--input-border-table-disabled-color);
190
190
  background-color: var(--input-table-surface-disabled-color);
191
191
  }
192
192
 
193
- &[data-readonly="true"] {
193
+ &:where([data-readonly="true"]) {
194
194
  border-color: var(--input-border-table-readonly-color);
195
195
  background-color: var(--input-table-surface-readonly-color);
196
196
  }
197
197
  }
198
198
 
199
199
  &:not([data-priority="secondary"]) {
200
- &[data-state="active"],
201
- &[data-state="focused"] {
200
+ &:where([data-state="active"]),
201
+ &:where([data-state="focused"]) {
202
202
  border-color: var(--input-border-active-color);
203
203
  border-width: var(--input-border-width-emphasis);
204
204
  }
205
205
 
206
- &[data-state="success"] {
206
+ &:where([data-state="success"]) {
207
207
  border-color: var(--input-border-success-color);
208
208
  border-width: var(--input-border-width-emphasis);
209
209
  }
210
210
 
211
- &[data-state="error"] {
211
+ &:where([data-state="error"]) {
212
212
  border-color: var(--input-border-error-color);
213
213
  border-width: var(--input-border-width-emphasis);
214
214
  }
215
215
 
216
- &[data-state="disabled"] {
216
+ &:where([data-state="disabled"]) {
217
217
  border-color: var(--input-border-disabled-color);
218
218
  border-width: var(--input-border-width-default);
219
219
  background-color: var(
@@ -221,13 +221,13 @@
221
221
  ); /* disabled 배경 토큰 */
222
222
  }
223
223
 
224
- &[data-readonly="true"] {
224
+ &:where([data-readonly="true"]) {
225
225
  border-color: var(--input-border-disabled-color);
226
226
  border-width: var(--input-border-width-default);
227
227
  background-color: var(--input-surface-disabled-color);
228
228
  }
229
229
 
230
- &[data-state="error"][data-readonly="true"] {
230
+ &:where([data-state="error"][data-readonly="true"]) {
231
231
  // 변경: calendar trigger처럼 readOnly input에서도 error state를 우선 노출한다.
232
232
  border-color: var(--input-border-error-color);
233
233
  border-width: var(--input-border-width-emphasis);
@@ -279,7 +279,7 @@
279
279
  }
280
280
  }
281
281
 
282
- .input-field[data-has-value="true"] .input-element:not(:disabled) {
282
+ .input-field:where([data-has-value="true"]) .input-element:not(:disabled) {
283
283
  color: var(--input-text-color);
284
284
  caret-color: var(--input-text-color);
285
285
  }
@@ -292,7 +292,7 @@
292
292
  min-width: 0;
293
293
  }
294
294
 
295
- .input[data-input-type="textarea"] .input-field {
295
+ .input:where([data-input-type="textarea"]) .input-field {
296
296
  // TextArea는 size별로 radius/spacing을 분기해 input과 동일한 스케일 감각을 유지한다.
297
297
  --input-textarea-radius: var(--input-textarea-radius-medium);
298
298
  --input-textarea-padding-inline: var(--input-textarea-padding-inline-medium);
@@ -305,14 +305,14 @@
305
305
  padding: var(--input-textarea-padding-block)
306
306
  var(--input-textarea-padding-inline);
307
307
 
308
- &[data-size="small"] {
308
+ &:where([data-size="small"]) {
309
309
  --input-textarea-radius: var(--input-textarea-radius-small);
310
310
  --input-textarea-padding-inline: var(--input-textarea-padding-inline-small);
311
311
  --input-textarea-padding-block: var(--input-textarea-padding-block-small);
312
312
  --input-textarea-gap: var(--input-textarea-gap-small);
313
313
  }
314
314
 
315
- &[data-size="large"] {
315
+ &:where([data-size="large"]) {
316
316
  --input-textarea-radius: var(--input-textarea-radius-large);
317
317
  --input-textarea-padding-inline: var(--input-textarea-padding-inline-large);
318
318
  --input-textarea-padding-block: var(--input-textarea-padding-block-large);
@@ -321,7 +321,7 @@
321
321
  }
322
322
 
323
323
  // 변경: textarea 높이 토큰은 native element가 아니라 root layout이 소유하고 내부는 남은 높이를 채운다.
324
- .input[data-input-type="textarea"] {
324
+ .input:where([data-input-type="textarea"]) {
325
325
  min-height: var(--input-textarea-height);
326
326
 
327
327
  .input-box {
@@ -376,27 +376,30 @@
376
376
  color: var(--input-label-color);
377
377
  }
378
378
 
379
- .input-field[data-priority="secondary"] .input-element {
379
+ .input-field:where([data-priority="secondary"]) .input-element {
380
380
  padding-inline: 0;
381
381
  }
382
382
 
383
- .input-field[data-priority="tertiary"] .input-element {
383
+ .input-field:where([data-priority="tertiary"]) .input-element {
384
384
  min-height: var(--input-tertiary-element-min-height);
385
385
  }
386
386
 
387
- .input-field[data-priority="table"][data-size="small"] .input-element {
387
+ .input-field:where([data-priority="table"]):where([data-size="small"])
388
+ .input-element {
388
389
  font-size: var(--input-table-text-small-size);
389
390
  line-height: var(--input-table-text-small-line-height);
390
391
  font-weight: var(--input-table-text-small-weight);
391
392
  }
392
393
 
393
- .input-field[data-priority="table"][data-size="medium"] .input-element {
394
+ .input-field:where([data-priority="table"]):where([data-size="medium"])
395
+ .input-element {
394
396
  font-size: var(--input-table-text-medium-size);
395
397
  line-height: var(--input-table-text-medium-line-height);
396
398
  font-weight: var(--input-table-text-medium-weight);
397
399
  }
398
400
 
399
- .input-field[data-priority="table"][data-size="large"] .input-element {
401
+ .input-field:where([data-priority="table"]):where([data-size="large"])
402
+ .input-element {
400
403
  font-size: var(--input-table-text-large-size);
401
404
  line-height: var(--input-table-text-large-line-height);
402
405
  font-weight: var(--input-table-text-large-weight);
@@ -407,7 +410,7 @@
407
410
  font-size: var(--input-helper-font-size);
408
411
  line-height: var(--input-helper-line-height);
409
412
 
410
- [data-state="error"] & {
413
+ :where([data-state="error"]) & {
411
414
  color: var(--input-border-error-color);
412
415
  }
413
416
 
@@ -415,7 +418,7 @@
415
418
  // color: var(--input-helper-success-color);
416
419
  // }
417
420
 
418
- [data-state="disabled"] & {
421
+ :where([data-state="disabled"]) & {
419
422
  color: var(--input-helper-disabled-color);
420
423
  }
421
424
  }
@@ -444,54 +447,54 @@
444
447
  }
445
448
 
446
449
  // 상태별 아이콘 컬러는 디자인 토큰으로 직접 지정한다.
447
- &-status[data-state="error"] {
450
+ &-status:where([data-state="error"]) {
448
451
  color: var(--input-status-error-color);
449
452
  }
450
453
 
451
- &-status[data-state="success"] {
454
+ &-status:where([data-state="success"]) {
452
455
  color: var(--input-status-success-color);
453
456
  }
454
457
  }
455
- .input-field[data-priority="secondary"] {
458
+ .input-field:where([data-priority="secondary"]) {
456
459
  border-bottom-width: var(--input-border-width-default);
457
460
 
458
- &[data-state="active"],
459
- &[data-state="focused"] {
461
+ :where([data-state="active"]),
462
+ :where([data-state="focused"]) {
460
463
  border-bottom-color: var(--input-border-active-color);
461
464
  border-bottom-width: var(--input-border-width-emphasis);
462
465
  }
463
466
 
464
- &[data-state="success"] {
467
+ :where([data-state="success"]) {
465
468
  border-bottom-color: var(--input-border-success-color);
466
469
  border-bottom-width: var(--input-border-width-emphasis);
467
470
  }
468
471
 
469
- &[data-state="error"] {
472
+ :where([data-state="error"]) {
470
473
  border-bottom-color: var(--input-border-error-color);
471
474
  border-bottom-width: var(--input-border-width-emphasis);
472
475
  }
473
476
 
474
- &[data-state="disabled"] {
477
+ :where([data-state="disabled"]) {
475
478
  border-bottom-color: var(--input-border-underline-disabled-color);
476
479
  border-bottom-width: var(--input-border-width-default);
477
480
  }
478
481
 
479
- &[data-readonly="true"] {
482
+ :where([data-readonly="true"]) {
480
483
  border-bottom-color: var(--input-border-underline-disabled-color);
481
484
  border-bottom-width: var(--input-border-width-default);
482
485
  }
483
486
  }
484
487
 
485
- .input[data-state="active"],
486
- .input[data-state="focused"],
487
- .input[data-state="success"] {
488
+ .input:where([data-state="active"]),
489
+ .input:where([data-state="focused"]),
490
+ .input:where([data-state="success"]) {
488
491
  .input-label,
489
492
  .input-inline-label {
490
493
  color: var(--input-label-accent-color);
491
494
  }
492
495
  }
493
496
 
494
- .input[data-state="error"] {
497
+ .input:where([data-state="error"]) {
495
498
  .input-label,
496
499
  .input-inline-label {
497
500
  color: var(--input-label-error-color);
@@ -506,7 +509,7 @@
506
509
  }
507
510
  }
508
511
 
509
- .input[data-state="disabled"] {
512
+ .input:where([data-state="disabled"]) {
510
513
  .input-label,
511
514
  .input-inline-label,
512
515
  .input-helper-text,
@@ -532,8 +535,8 @@
532
535
  }
533
536
  }
534
537
 
535
- .input[data-readonly="true"] {
536
- .input-field[data-priority="table"] {
538
+ .input:where([data-readonly="true"]) {
539
+ .input-field:where([data-priority="table"]) {
537
540
  // 변경: table readonly는 disabled와 동일한 박스 스타일을 사용하고 텍스트 색만 분리한다.
538
541
  background-color: var(--input-table-surface-readonly-color);
539
542
  border-color: var(--input-border-table-readonly-color);