@3dsource/source-ui-native 1.0.18 → 1.0.20

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 (43) hide show
  1. package/README.md +31 -19
  2. package/fesm2022/3dsource-source-ui-native.mjs +205 -136
  3. package/fesm2022/3dsource-source-ui-native.mjs.map +1 -1
  4. package/index.d.ts +80 -13
  5. package/package.json +2 -2
  6. package/styles/base.scss +3 -4
  7. package/styles/elements/_src-button.scss +391 -124
  8. package/styles/elements/_src-checkbox.scss +21 -7
  9. package/styles/elements/_src-form.scss +4 -0
  10. package/styles/elements/_src-icon-button.scss +361 -0
  11. package/styles/elements/_src-input.scss +144 -32
  12. package/styles/elements/_src-label.scss +16 -12
  13. package/styles/elements/_src-list.scss +4 -4
  14. package/styles/elements/_src-modal.scss +4 -4
  15. package/styles/elements/_src-popover.scss +5 -4
  16. package/styles/elements/_src-radio.scss +38 -21
  17. package/styles/elements/_src-select.scss +151 -26
  18. package/styles/elements/_src-textarea.scss +140 -25
  19. package/styles/elements/_src-toggle.scss +36 -10
  20. package/styles/elements/elements.scss +1 -0
  21. package/styles/mixins/button.scss +93 -0
  22. package/styles/source.ui.native.scss +2 -4
  23. package/styles/typography.scss +17 -12
  24. package/styles/variables/_form-aliases.scss +19 -13
  25. package/styles/variables/color/dark.scss +143 -0
  26. package/styles/variables/color/light.scss +143 -0
  27. package/styles/variables/index.scss +29 -6
  28. package/styles/variables/layout/_lg.scss +85 -0
  29. package/styles/variables/layout/_md.scss +85 -0
  30. package/styles/variables/layout/_sm.scss +85 -0
  31. package/styles/variables/layout/_xl.scss +85 -0
  32. package/styles/variables/primitives/primitives.scss +147 -0
  33. package/styles/variables/typeface/web.scss +35 -0
  34. package/styles/variables/ui/_lg.scss +35 -0
  35. package/styles/variables/ui/_md.scss +35 -0
  36. package/styles/variables/ui/_sm.scss +35 -0
  37. package/styles/variables/ui/_xl.scss +35 -0
  38. package/styles/variables-legacy/index.scss +6 -0
  39. /package/styles/{variables → variables-legacy}/_borders.scss +0 -0
  40. /package/styles/{variables → variables-legacy}/_colors-aliases.scss +0 -0
  41. /package/styles/{variables → variables-legacy}/_colors.scss +0 -0
  42. /package/styles/{variables → variables-legacy}/_shadows.scss +0 -0
  43. /package/styles/{variables → variables-legacy}/_typography.scss +0 -0
@@ -3,9 +3,10 @@
3
3
 
4
4
  --srcRadioSize: 20px;
5
5
  --srcRadioBgColor: var(--src-color-bg-default);
6
- --srcRadioBorderColor: var(--src-color-border-strong);
6
+ --srcRadioBorderColor: var(--src-border-input-basic, #d1d5db);
7
7
  --srcRadioBorderWidth: 2px;
8
- --srcRadioFocusRing: var(--srcFormElementFocusRing);
8
+ --srcRadioFocusRing: 0 0 0 var(--src-shadow-focused, 4px)
9
+ var(--src-shadow-accent-light, rgba(1, 123, 255, 0.16));
9
10
  display: flex;
10
11
  flex-direction: column;
11
12
  gap: var(--srcRadioGroupGap);
@@ -22,28 +23,44 @@
22
23
  align-items: center;
23
24
  gap: 4px;
24
25
  cursor: pointer;
25
- }
26
- input[type='radio'] {
27
- position: relative;
28
- appearance: none;
29
- width: var(--srcRadioSize);
30
- height: var(--srcRadioSize);
31
- border-radius: 50%;
32
- background-color: #fff;
33
- border: var(--srcRadioBorderWidth) solid var(--srcRadioBorderColor);
34
- cursor: pointer;
35
26
 
36
- &:hover {
37
- --srcRadioBorderColor: var(--src-color-border-strong-hover);
38
- }
27
+ input[type='radio'] {
28
+ position: relative;
29
+ appearance: none;
30
+ width: var(--srcRadioSize);
31
+ height: var(--srcRadioSize);
32
+ border-radius: 50%;
33
+ background-color: #fff;
34
+ border: var(--srcRadioBorderWidth) solid var(--srcRadioBorderColor);
35
+ cursor: pointer;
36
+
37
+ &:hover {
38
+ --srcRadioBorderColor: var(--src-border-input-hover, #9ca3af);
39
+ }
40
+
41
+ &:checked {
42
+ --srcRadioBorderColor: var(--src-ui-accent-default, #017bff);
43
+ box-shadow: inset 0 0 0 3px var(--srcRadioBorderColor);
44
+
45
+ &:hover {
46
+ --srcRadioBorderColor: var(--src-ui-accent-default-hover, #016fe6);
47
+ }
48
+ }
39
49
 
40
- &:checked {
41
- --srcRadioBorderColor: var(--src-color-bg-primary);
42
- box-shadow: inset 0 0 0 3px var(--srcRadioBorderColor);
50
+ &[disabled] {
51
+ --srcRadioBorderColor: var(
52
+ --src-ui-accent-disabled,
53
+ rgba(148, 163, 184, 0.24)
54
+ );
55
+ }
43
56
  }
44
57
 
45
- &[disabled] {
46
- --srcRadioBorderColor: var(--src-color-border-strong-disabled);
47
- // --srcRadioCheckedBgColor: var(--color-text-inverse);
58
+ .src-radio__label {
59
+ padding-left: var(--src-gap-lg, var(--src-space-3));
60
+ font-size: var(--src-text-fontSize, var(--src-font-size-sm));
61
+ line-height: var(--src-text-lineHeight, var(--src-font-line-sm));
62
+ letter-spacing: 0;
63
+ font-weight: 500;
64
+ color: var(--src-text-body-main, #111827);
48
65
  }
49
66
  }
@@ -1,14 +1,16 @@
1
1
  .src-select {
2
- --srcSelectFontSize: var(--srcFormElementFontSize);
3
- --srcSelectLineHeight: var(--srcFormElementLineHeight);
4
- --srcSelectFontColor: var(--srcFormElementFontColor);
5
- --srcSelectFieldBg: var(--srcFormElementBg);
6
- --srcSelectFieldBorderColor: var(--srcFormElementBorderColor);
7
- --srcSelectHeight: var(--srcFormElementHeight);
8
- --srcSelectBorderRadius: var(--srcFormElementBorderRadius);
9
- --srcSelectBoxShadow: var(--srcFormElementBoxShadow);
2
+ --srcSelectFontSize: var(--src-text-fontSize, var(--src-font-size-sm));
3
+ --srcSelectLineHeight: var(--src-text-lineHeight, var(--src-font-line-sm));
4
+ --srcSelectFontColor: var(--src-text-ui-secondary-main, #111827);
5
+ --srcSelectFieldBg: var(--src-surface-container-main, #fff);
6
+ --srcSelectFieldBorderColor: var(--src-border-input-basic, #d1d5db);
7
+ --srcSelectFieldBorder: 1px solid var(--srcSelectFieldBorderColor);
8
+ --srcSelectHeight: 36px;
9
+ --srcSelectBorderRadius: var(--src-border-rounded, var(--src-space-1-5));
10
+ // --srcSelectBoxShadow: var(--srcFormElementBoxShadow);
10
11
  // Focus ring it's a multiple box-shadow
11
- --srcSelectFocusRing: var(--srcFormElementFocusRing);
12
+ --srcSelectFocusRing: 0 0 0 var(--src-shadow-focused, 4px)
13
+ var(--src-shadow-focus, rgba(1, 123, 255, 0.16));
12
14
 
13
15
  -webkit-appearance: none;
14
16
  appearance: none;
@@ -21,29 +23,50 @@
21
23
  font-size: var(--srcSelectFontSize);
22
24
  line-height: var(--srcSelectLineHeight);
23
25
  color: var(--srcSelectFontColor);
24
- padding: 7px 28px 7px 12px;
25
- font-family: var(--src-font-family-sans);
26
+ //7px 28px 7px 12px;
27
+ padding: var(--src-padding-xs, var(--src-space-2))
28
+ var(--src-padding-xs, var(--src-space-2))
29
+ var(--src-padding-xs, var(--src-space-2))
30
+ var(--src-padding-sm, var(--src-space-3));
31
+ font-family: var(--src-font-family-body);
26
32
  font-style: normal;
27
- font-weight: var(--src-fw-regular, 400);
28
- border: 1px solid var(--srcSelectFieldBorderColor);
33
+ font-weight: var(--src-font-weight-Medium, 500);
34
+ border: var(--srcSelectFieldBorder);
29
35
  background-color: var(--srcSelectFieldBg);
30
36
  background-image: url("data:image/svg+xml,%3Csvg width='8' height='5' viewBox='0 0 8 5' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3.40573 4.3L0.805725 1.7C0.489058 1.38333 0.418392 1.021 0.593725 0.613C0.768392 0.204333 1.08073 0 1.53073 0H6.68072C7.13072 0 7.44306 0.204333 7.61772 0.613C7.79306 1.021 7.72239 1.38333 7.40573 1.7L4.80572 4.3C4.70572 4.4 4.59739 4.475 4.48073 4.525C4.36406 4.575 4.23906 4.6 4.10573 4.6C3.97239 4.6 3.84739 4.575 3.73073 4.525C3.61406 4.475 3.50573 4.4 3.40573 4.3Z' fill='%236B7280'/%3E%3C/svg%3E%0A");
31
37
  background-repeat: no-repeat;
32
38
  background-position: calc(100% - 12px) center;
33
39
 
34
- box-shadow: var(--srcSelectBoxShadow);
40
+ box-shadow: none;
41
+
42
+ &:hover {
43
+ --srcSelectFieldBorderColor: var(--src-border-input-hover, #9ca3af);
44
+ --srcSelectFieldBg: var(
45
+ --src-ui-input-secondary,
46
+ rgba(148, 163, 184, 0.08)
47
+ );
48
+ }
49
+
50
+ &:active {
51
+ --srcSelectFieldBorderColor: var(--src-border-input-active, #017bff);
52
+ }
35
53
 
36
54
  &:focus {
55
+ --srcSelectFieldBorderColor: var(--src-border-input-active, #017bff);
56
+ --srcSelectFieldBg: var(--src-surface-container-main, #fff);
57
+
37
58
  outline: none;
38
59
  box-shadow: var(--srcSelectFocusRing);
60
+ &:hover {
61
+ --srcSelectFieldBg: var(--src-ui-input-hover, rgba(1, 123, 255, 0.08));
62
+ }
39
63
  }
40
64
 
41
65
  &[disabled],
42
66
  &:disabled {
43
- --srcSelectFieldBg: var(--srcFormElementDisabledBg);
44
- --srcSelectFieldBorderColor: var(--srcFormElementDisabledBorderColor);
45
- --srcSelectBoxShadow: none;
46
- color: var(--src-color-text-default-disabled);
67
+ --srcSelectFieldBg: var(--src-ui-input-disabled, rgba(148, 163, 184, 0.16));
68
+ --srcSelectFieldBorderColor: transparent;
69
+ --srcSelectFontColor: var(--src-text-ui-secondary-secondary, #4b5563);
47
70
 
48
71
  pointer-events: none;
49
72
  }
@@ -51,24 +74,126 @@
51
74
  option {
52
75
  background-color: #fff;
53
76
  }
77
+
78
+ &[class*='--size-sm'] {
79
+ --srcSelectHeight: 28px;
80
+ }
81
+
82
+ &[class*='--size-md'] {
83
+ --srcSelectHeight: 36px;
84
+ }
85
+ &[class*='--size-lg'] {
86
+ --srcSelectHeight: 44px;
87
+ }
88
+ &[class*='--size-xl'] {
89
+ --srcSelectHeight: 56px;
90
+ }
91
+
92
+ &.src-select--secondary {
93
+ --srcSelectFieldBg: var(
94
+ --src-ui-input-secondary,
95
+ rgba(148, 163, 184, 0.08)
96
+ );
97
+ --srcSelectFieldBorder: none;
98
+ --srcSelectFontColor: var(--src-text-ui-secondary-main, #111827);
99
+
100
+ &:hover {
101
+ --srcSelectFieldBg: var(--src-ui-input-hover, rgba(1, 123, 255, 0.08));
102
+ --srcSelectFieldBorder: none;
103
+ }
104
+ }
105
+ &.src-select--ghost {
106
+ --srcSelectFieldBg: transparent;
107
+ --srcSelectFieldBorder: none;
108
+ --srcSelectFontColor: var(--src-text-ui-secondary-main, #111827);
109
+
110
+ &:hover {
111
+ --srcSelectFieldBg: var(--src-ui-input-hover, rgba(1, 123, 255, 0.08));
112
+ --srcSelectFieldBorder: none;
113
+ }
114
+ }
54
115
  }
55
116
 
56
117
  .src-select--compact {
57
118
  --srcSelectHeight: 32px;
58
- --srcSelectFontSize: var(--src-fs-small);
59
- --srcSelectLineHeight: var(--src-lh-small);
119
+ --srcSelectFontSize: var(--src-font-size-xs);
120
+ --srcSelectLineHeight: var(--src-font-line-xs);
60
121
  }
61
122
  /* Error State */
62
- .src-select--has-error {
63
- --srcSelectFieldBg: var(--src-color-bg-critical-subdued);
64
- --srcSelectFieldBorderColor: var(--src-color-border-critical-strong);
123
+ .src-select--state-error {
124
+ --srcSelectFieldBorderColor: var(--src-border-input-error, #f24122);
125
+ --srcSelectFocusRing: 0px 0px 0px var(--src-shadow-focused, 4px)
126
+ var(--src-shadow-error, rgba(239, 68, 68, 0.16));
127
+ --srcSelectFontColor: var(--src-text-ui-distruct-main, #c5280c);
128
+
129
+ &:hover {
130
+ --srcSelectFieldBorderColor: var(--src-border-input-error, #f24122);
131
+ --srcSelectFieldBg:
132
+ linear-gradient(
133
+ 0deg,
134
+ var(--src-ui-input-error-hover, rgba(239, 68, 68, 0.08)) 0%,
135
+ var(--src-ui-input-error-hover, rgba(239, 68, 68, 0.08)) 100%
136
+ ),
137
+ var(--src-surface-container-main, #fff);
138
+ }
139
+
140
+ &:active {
141
+ --srcSelectFieldBorderColor: var(--src-border-input-error, #f24122);
142
+ }
143
+
144
+ &:focus {
145
+ --srcSelectFieldBorderColor: var(--src-border-input-error, #f24122);
146
+ --srcSelectFieldBg: var(--src-surface-container-main, #fff);
147
+
148
+ &:hover {
149
+ --srcSelectFieldBg: var(
150
+ --src-ui-input-error-hover,
151
+ rgba(239, 68, 68, 0.08)
152
+ );
153
+ }
154
+ }
155
+ }
156
+
157
+ /* Success State */
158
+ .src-select--state-success {
159
+ --srcSelectFieldBorderColor: var(--src-border-input-success, #22c55e);
160
+ --srcSelectFocusRing: 0px 0px 0px var(--src-shadow-focused, 4px)
161
+ var(--src-shadow-success, rgba(22, 163, 74, 0.12));
162
+ --srcSelectFontColor: var(--src-text-ui-success-main, #16a34a);
163
+
164
+ &:hover {
165
+ --srcSelectFieldBorderColor: var(--src-border-input-success-hover, #16a34a);
166
+ --srcSelectFieldBg:
167
+ linear-gradient(
168
+ 0deg,
169
+ var(--src-ui-input-success-hover, rgba(22, 163, 74, 0.08)) 0%,
170
+ var(--src-ui-input-success-hover, rgba(22, 163, 74, 0.08)) 100%
171
+ ),
172
+ var(--src-surface-container-main, #fff);
173
+ }
174
+
175
+ &:active {
176
+ --srcSelectFieldBorderColor: var(--src-border-input-success-hover, #16a34a);
177
+ }
178
+
179
+ &:focus {
180
+ --srcSelectFieldBorderColor: var(--src-border-input-success, #22c55e);
181
+ --srcSelectFieldBg: var(--src-surface-container-main, #fff);
182
+
183
+ &:hover {
184
+ --srcSelectFieldBg: var(
185
+ --src-ui-input-success-hover,
186
+ rgba(22, 163, 74, 0.08)
187
+ );
188
+ }
189
+ }
65
190
  }
66
191
 
67
192
  /* Disabled State */
68
193
  .src-select--disabled {
69
- --srcSelectFieldBg: var(--srcFormElementDisabledBg);
70
- --srcSelectFieldBorderColor: var(--srcFormElementDisabledBorderColor);
71
- --srcSelectBoxShadow: none;
194
+ --srcSelectFieldBg: var(--src-ui-input-disabled, rgba(148, 163, 184, 0.16));
195
+ --srcSelectFieldBorder: none;
196
+ --srcSelectFontColor: var(--src-text-ui-secondary-secondary, #4b5563);
72
197
 
73
198
  pointer-events: none;
74
199
  }
@@ -1,14 +1,16 @@
1
1
  .src-textarea {
2
- --srcTexareaFontSize: var(--srcFormElementFontSize);
3
- --srcTexareaLineHeight: var(--srcFormElementLineHeight);
4
- --srcTexareaFontColor: var(--srcFormElementFontColor);
5
- --srcTexareaBg: var(--srcFormElementBg);
6
- --srcTexareaBorderColor: var(--srcFormElementBorderColor);
7
- --srcTexareaMinHeight: var(--srcFormElementHeight);
8
- --srcTexareaBorderRadius: var(--srcFormElementBorderRadius);
9
- --srcTexareaBoxShadow: var(--srcFormElementBoxShadow);
2
+ --srcTexareaFontSize: var(--src-text-fontSize, var(--src-font-size-sm));
3
+ --srcTexareaLineHeight: var(--src-text-lineHeight, var(--src-font-line-sm));
4
+ --srcTexareaFontColor: var(--src-text-ui-secondary-main, #111827);
5
+ --srcTexareaBg: var(--src-surface-container-main, #fff);
6
+ --srcTexareaBorderColor: var(--src-border-input-basic, #d1d5db);
7
+ --srcTexareaBorder: 1px solid var(--srcTexareaBorderColor);
8
+ --srcTexareaMinHeight: 36px;
9
+ --srcTexareaBorderRadius: var(--src-border-rounded, var(--src-space-1-5));
10
+ --srcTexareaBoxShadow: none;
10
11
  // Focus ring it's a multiple box-shadow
11
- --srcTextareaFocusRing: var(--srcFormElementFocusRing);
12
+ --srcTextareaFocusRing: 0 0 0 var(--src-shadow-focused, 4px)
13
+ var(--src-shadow-focus, rgba(1, 123, 255, 0.16));
12
14
 
13
15
  position: relative;
14
16
 
@@ -17,25 +19,47 @@
17
19
 
18
20
  display: flex;
19
21
  align-items: center;
20
- padding: 7px 12px;
22
+ padding: var(--src-padding-xs, var(--src-space-2))
23
+ var(--src-padding-xs, var(--src-space-2))
24
+ var(--src-padding-xs, var(--src-space-2))
25
+ var(--src-padding-sm, var(--src-space-3));
21
26
 
22
- font-family: var(--src-font-family-sans);
27
+ font-family: var(--src-font-family-body);
23
28
  font-style: normal;
24
- font-weight: var(--src-fw-regular, 400);
29
+ font-weight: var(--src-font-weight-Medium, 500);
25
30
  font-size: var(--srcTexareaFontSize);
26
31
  line-height: var(--srcTexareaLineHeight);
27
32
  color: var(--srcTexareaFontColor);
28
33
 
29
- border: 1px solid var(--srcTexareaBorderColor);
34
+ border: var(--srcTexareaBorder);
30
35
  border-radius: var(--srcTexareaBorderRadius);
31
- background-color: var(--srcTexareaBg);
36
+ background: var(--srcTexareaBg);
32
37
  box-shadow: var(--srcTexareaBoxShadow);
33
38
 
34
39
  resize: vertical;
40
+ &:hover {
41
+ --srcTexareaBorderColor: var(--src-border-input-hover, #9ca3af);
42
+ --srcTexareaBg:
43
+ linear-gradient(
44
+ 0deg,
45
+ var(--src-ui-input-secondary, rgba(148, 163, 184, 0.08)) 0%,
46
+ var(--src-ui-input-secondary, rgba(148, 163, 184, 0.08)) 100%
47
+ ),
48
+ var(--src-surface-container-main, #fff);
49
+ }
50
+ &:active {
51
+ --srcTexareaBorderColor: var(--src-border-input-active, #017bff);
52
+ }
35
53
 
36
54
  &:focus {
55
+ --srcTexareaBorderColor: var(--src-border-input-active, #017bff);
56
+ --srcTexareaBg: var(--src-surface-container-main, #fff);
57
+
37
58
  outline: none;
38
59
  box-shadow: var(--srcTextareaFocusRing);
60
+ &:hover {
61
+ --srcTexareaBg: var(--src-ui-input-hover, rgba(1, 123, 255, 0.08));
62
+ }
39
63
  }
40
64
 
41
65
  &[disabled],
@@ -47,24 +71,115 @@
47
71
 
48
72
  pointer-events: none;
49
73
  }
50
- }
51
74
 
52
- .src-textarea--compact {
53
- --srcTexareaMinHeight: 32px;
54
- --srcTexareaFontSize: var(--src-fs-small);
55
- --srcTexareaLineHeight: var(--src-lh-small);
75
+ &[class*='--size-sm'] {
76
+ --srcTexareaMinHeight: 28px;
77
+ }
78
+
79
+ &[class*='--size-md'] {
80
+ --srcTexareaMinHeight: 36px;
81
+ }
82
+ &[class*='--size-lg'] {
83
+ --srcTexareaMinHeight: 44px;
84
+ }
85
+ &[class*='--size-xl'] {
86
+ --srcTexareaMinHeight: 56px;
87
+ }
88
+
89
+ &.src-input--secondary {
90
+ --srcTexareaBg: var(--src-ui-input-secondary, rgba(148, 163, 184, 0.08));
91
+ --srcTexareaBorder: none;
92
+ --srcTexareaColor: var(--src-text-ui-secondary-main, #111827);
93
+
94
+ &:hover {
95
+ --srcTexareaBg: var(--src-ui-input-hover, rgba(1, 123, 255, 0.08));
96
+ --srcTexareaBorder: none;
97
+ }
98
+ }
99
+ &.src-input--ghost {
100
+ --srcTexareaBg: transparent;
101
+ --srcTexareaBorder: none;
102
+ --srcTexareaColor: var(--src-text-ui-secondary-main, #111827);
103
+
104
+ &:hover {
105
+ --srcTexareaBg: var(--src-ui-input-hover, rgba(1, 123, 255, 0.08));
106
+ --srcTexareaBorder: none;
107
+ }
108
+ }
56
109
  }
110
+
57
111
  /* Error State */
58
- .src-textarea--has-error {
59
- --srcTexareaBg: var(--src-color-bg-critical-subdued);
60
- --srcTexareaBorderColor: var(--src-color-border-critical-strong);
112
+ .src-textarea--state-error {
113
+ --srcTexareaBorderColor: var(--src-border-input-error, #f24122);
114
+ --srcTexareaRing: 0px 0px 0px var(--src-shadow-focused, 4px)
115
+ var(--src-shadow-error, rgba(239, 68, 68, 0.16));
116
+ --srcTexareaFontColor: var(--src-text-ui-distruct-main, #c5280c);
117
+
118
+ &:hover {
119
+ --srcTexareaBorderColor: var(--src-border-input-error, #f24122);
120
+ --srcTexareaBg:
121
+ linear-gradient(
122
+ 0deg,
123
+ var(--src-ui-input-error-hover, rgba(239, 68, 68, 0.08)) 0%,
124
+ var(--src-ui-input-error-hover, rgba(239, 68, 68, 0.08)) 100%
125
+ ),
126
+ var(--src-surface-container-main, #fff);
127
+ }
128
+
129
+ &:active {
130
+ --srcTexareaBorderColor: var(--src-border-input-error, #f24122);
131
+ }
132
+
133
+ &:focus {
134
+ --srcTexareaBorderColor: var(--src-border-input-error, #f24122);
135
+ --srcTexareaBg: var(--src-surface-container-main, #fff);
136
+
137
+ &:hover {
138
+ --srcTexareaBg: var(--src-ui-input-error-hover, rgba(239, 68, 68, 0.08));
139
+ }
140
+ }
141
+ }
142
+
143
+ /* Success State */
144
+ .src-textarea--state-success {
145
+ --srcTexareaBorderColor: var(--src-border-input-success, #22c55e);
146
+ --srcTexareaFocusRing: 0px 0px 0px var(--src-shadow-focused, 4px)
147
+ var(--src-shadow-success, rgba(22, 163, 74, 0.12));
148
+ --srcTexareaFontColor: var(--src-text-ui-success-main, #16a34a);
149
+
150
+ &:hover {
151
+ --srcTexareaBorderColor: var(--src-border-input-success-hover, #16a34a);
152
+ --srcTexareaBg:
153
+ linear-gradient(
154
+ 0deg,
155
+ var(--src-ui-input-success-hover, rgba(22, 163, 74, 0.08)) 0%,
156
+ var(--src-ui-input-success-hover, rgba(22, 163, 74, 0.08)) 100%
157
+ ),
158
+ var(--src-surface-container-main, #fff);
159
+ }
160
+
161
+ &:active {
162
+ --srcTexareaBorderColor: var(--src-border-input-success-hover, #16a34a);
163
+ }
164
+
165
+ &:focus {
166
+ --srcTexareaBorderColor: var(--src-border-input-success, #22c55e);
167
+ --srcTexareaBg: var(--src-surface-container-main, #fff);
168
+
169
+ &:hover {
170
+ --srcTexareaBg: var(
171
+ --src-ui-input-success-hover,
172
+ rgba(22, 163, 74, 0.08)
173
+ );
174
+ }
175
+ }
61
176
  }
62
177
 
63
178
  /* Disabled State */
64
179
  .src-textarea--disabled {
65
- --srcTexareaBg: var(--src-color-bg-default-disabled);
66
- --srcTexareaBorderColor: var(--src-color-border-strong-disabled);
67
- --srcTexareaBoxShadow: none;
180
+ --srcTexareaBg: var(--src-ui-input-disabled, rgba(148, 163, 184, 0.16));
181
+ --srcTexareaBorder: none;
182
+ --srcTexareaFontColor: var(--src-text-ui-secondary-secondary, #4b5563);
68
183
 
69
184
  pointer-events: none;
70
185
  }
@@ -2,7 +2,10 @@
2
2
  --srcToggleWidth: 44px;
3
3
  --srcToggleHeight: 24px;
4
4
  --srcToggleThumbSize: 20px;
5
- --srcToggleInputBg: var(--src-color-bg-strong);
5
+ --srcToggleInputBg: var(
6
+ --src-ui-secondary-default,
7
+ rgba(148, 163, 184, 0.16)
8
+ );
6
9
  --srcToggleThumbBg: var(--src-color-bg-default);
7
10
  --srcToggleThumbShadow: var(--src-shadow-large);
8
11
  --srcToggleLabelMargin: 20px;
@@ -22,8 +25,8 @@
22
25
  padding: 0;
23
26
  vertical-align: top;
24
27
  background: var(--srcToggleInputBg);
25
- border: none;
26
- border-radius: var(--src-br-full, 9999px);
28
+ border: 1px solid var(--src-border-input-basic, #d1d5db);
29
+ border-radius: var(--src-border-rounded-full, 9999px);
27
30
  outline: none;
28
31
  cursor: pointer;
29
32
  transition: all 0.3s cubic-bezier(0.2, 0.85, 0.32, 1.2);
@@ -32,9 +35,22 @@
32
35
  appearance: none;
33
36
  overflow: hidden;
34
37
 
38
+ &:hover {
39
+ --srcToggleInputBg: var(
40
+ --src-ui-secondary-default-hover,
41
+ rgba(148, 163, 184, 0.08)
42
+ );
43
+ }
44
+
45
+ &:focus {
46
+ outline: none;
47
+ box-shadow: 0 0 0 var(--src-shadow-focused, 4px)
48
+ var(--src-shadow-light, rgba(148, 163, 184, 0.16));
49
+ }
50
+
35
51
  &:disabled,
36
52
  &[disabled] {
37
- --srcToggleInputBg: var(--src-color-bg-strong-disabled);
53
+ --srcToggleInputBg: var(--src-surface-bg, rgba(71, 85, 105, 0.24));
38
54
  cursor: default;
39
55
  opacity: 1;
40
56
  pointer-events: none;
@@ -42,8 +58,8 @@
42
58
  &::after {
43
59
  content: '';
44
60
  position: absolute;
45
- top: 2px;
46
- left: 2px;
61
+ top: 1px;
62
+ left: 1px;
47
63
  width: var(--srcToggleThumbSize);
48
64
  height: var(--srcToggleThumbSize);
49
65
  background-color: var(--srcToggleThumbBg);
@@ -61,11 +77,17 @@
61
77
  }
62
78
 
63
79
  &:checked {
64
- --srcToggleInputBg: var(--src-color-bg-primary);
80
+ --srcToggleInputBg: var(--src-ui-accent-default, #017bff);
81
+ border-color: transparent;
82
+
83
+ &:focus {
84
+ box-shadow: 0 0 0 var(--src-shadow-focused, 4px)
85
+ var(--src-shadow-accent-light, rgba(1, 123, 255, 0.16));
86
+ }
65
87
 
66
88
  &:disabled,
67
89
  &[disabled] {
68
- --srcToggleInputBg: var(--src-color-bg-strong-disabled);
90
+ --srcToggleInputBg: var(--src-surface-bg, rgba(71, 85, 105, 0.24));
69
91
  cursor: default;
70
92
  opacity: 1;
71
93
  pointer-events: none;
@@ -73,8 +95,12 @@
73
95
  }
74
96
  }
75
97
 
76
- .src-label {
98
+ .src-toggle__label {
77
99
  margin-bottom: 0;
78
- font-weight: normal;
100
+ color: var(--src-text-body-main, #111827);
101
+ line-height: var(--src-text-lineHeight, var(--src-font-line-sm));
102
+ font-size: var(--src-text-fontSize, var(--src-font-size-sm));
103
+ letter-spacing: 0;
104
+ font-weight: 500;
79
105
  }
80
106
  }
@@ -1,5 +1,6 @@
1
1
  @use './src-list';
2
2
  @use './src-button';
3
+ @use './src-icon-button';
3
4
  @use './src-form';
4
5
  @use './src-input';
5
6
  @use './src-select';
@@ -0,0 +1,93 @@
1
+ @use 'sass:map';
2
+ $focus-ring-colors: (
3
+ default: var(--src-shadow-light, rgba(148, 163, 184, 0.16)),
4
+ info: var(--src-shadow-accent-light, rgba(1, 123, 255, 0.16)),
5
+ error: var(--src-shadow-error, rgba(239, 68, 68, 0.16)),
6
+ success: var(--src-shadow-success, rgba(22, 163, 74, 0.12)),
7
+ );
8
+
9
+ @mixin focusRing($type) {
10
+ $color: map.get($focus-ring-colors, $type);
11
+
12
+ @if $color {
13
+ --srcButtonFocusRing: 0 0 0 var(--src-shadow-focused, 4px) #{$color};
14
+ } @else {
15
+ @warn "srcFocusRing: type `#{$type}` is not defined!";
16
+ }
17
+ }
18
+ $font-colors: (
19
+ white: var(--src-text-ui-primary-main, #fff),
20
+ white-hover: var(--src-text-ui-primary-main, #fff),
21
+ inverted: var(--src-text-ui-secondary-secondary-invert, #d1d5db),
22
+ inverted-hover: var(--src-text-ui-secondary-main-invert, #f9fafb),
23
+ disabled: var(--src-text-ui-secondary-disabled, #9ca3af),
24
+ info: var(--src-text-ui-accent-main, #016fe6),
25
+ error: var(--src-text-ui-distruct-main, #c5280c),
26
+ success: var(--src-text-ui-success-main, #16a34a),
27
+ info-hover: var(--src-text-ui-accent-hover, #0162cc),
28
+ error-hover: var(--src-text-ui-distruct-hover, #9f200a),
29
+ success-hover: var(--src-text-ui-success-hover, #15803d),
30
+ );
31
+
32
+ @mixin buttonText($type) {
33
+ $base-color: map.get($font-colors, $type);
34
+ $hover-color: map.get($font-colors, #{$type}-hover);
35
+
36
+ @if $base-color {
37
+ --srcButtonFontColor: #{$base-color};
38
+
39
+ @if $hover-color {
40
+ &:hover {
41
+ --srcButtonFontColor: #{$hover-color};
42
+ }
43
+ }
44
+ } @else {
45
+ @warn "srcButtonText: type `#{$type}` is not defined!";
46
+ }
47
+ }
48
+ @mixin cleanShadows() {
49
+ --srcButtonBoxShadow: none;
50
+ --srcButtonBorder: none;
51
+ --srcButtonBorderColor: transparent;
52
+ }
53
+
54
+ @mixin setShadow() {
55
+ --srcButtonBoxShadow:
56
+ 0 -1px 0 0 var(--src-shadow-hard, rgba(71, 85, 105, 0.24)) inset,
57
+ 0 var(--src-shadow-ambient-outer, 1px) 0 0
58
+ var(--src-shadow-light, rgba(148, 163, 184, 0.16));
59
+ }
60
+
61
+ @mixin pressedButton($light: false) {
62
+ @include cleanShadows();
63
+
64
+ @if ($light) {
65
+ --srcButtonFontColor: var(--src-text-ui-accent-main, #016fe6);
66
+ --srcButtonIconColor: var(--src-icon-info, #017bff);
67
+ --srcButtonBgColor: var(
68
+ --src-ui-secondary-default,
69
+ rgba(148, 163, 184, 0.16)
70
+ );
71
+ } @else {
72
+ --srcButtonFontColor: var(--src-text-ui-primary-main, #fff);
73
+ --srcButtonBgColor: var(--src-ui-accent-active, #374151);
74
+ --srcButtonIconColor: var(--src-icon-main-invert, #fff);
75
+ }
76
+
77
+ @media (pointer: fine) {
78
+ &:hover {
79
+ @if ($light) {
80
+ --srcButtonBgColor: var(
81
+ --src-ui-secondary-default-hover,
82
+ rgba(148, 163, 184, 0.08)
83
+ );
84
+ --srcButtonFontColor: var(--src-text-ui-accent-hover, #0162cc);
85
+ --srcButtonIconColor: var(--src-icon-info-hover, #016fe6);
86
+ } @else {
87
+ --srcButtonBgColor: var(--src-ui-accent-active-hover, #111827);
88
+ --srcButtonFontColor: var(--src-text-ui-primary-main, #fff);
89
+ --srcButtonIconColor: var(--src-icon-main-invert, #fff);
90
+ }
91
+ }
92
+ }
93
+ }