@denisluyo/react-web 0.1.0

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 (45) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +27 -0
  3. package/dist/Button.d.ts +19 -0
  4. package/dist/Button.d.ts.map +1 -0
  5. package/dist/Button.js +7 -0
  6. package/dist/Checkbox.d.ts +13 -0
  7. package/dist/Checkbox.d.ts.map +1 -0
  8. package/dist/Checkbox.js +11 -0
  9. package/dist/Chip.d.ts +21 -0
  10. package/dist/Chip.d.ts.map +1 -0
  11. package/dist/Chip.js +24 -0
  12. package/dist/RadioButton.d.ts +14 -0
  13. package/dist/RadioButton.d.ts.map +1 -0
  14. package/dist/RadioButton.js +10 -0
  15. package/dist/TextArea.d.ts +23 -0
  16. package/dist/TextArea.d.ts.map +1 -0
  17. package/dist/TextArea.js +19 -0
  18. package/dist/TextField.d.ts +44 -0
  19. package/dist/TextField.d.ts.map +1 -0
  20. package/dist/TextField.js +23 -0
  21. package/dist/Toast.d.ts +20 -0
  22. package/dist/Toast.d.ts.map +1 -0
  23. package/dist/Toast.js +14 -0
  24. package/dist/assets/checkbox-check.svg +5 -0
  25. package/dist/assets/chip-info-mark.svg +3 -0
  26. package/dist/assets/chip-info-ring.svg +3 -0
  27. package/dist/assets/password-eye-slash.svg +3 -0
  28. package/dist/assets/toast-close-backward.svg +1 -0
  29. package/dist/assets/toast-close-forward.svg +1 -0
  30. package/dist/assets/toast-error.svg +1 -0
  31. package/dist/assets/toast-information.svg +1 -0
  32. package/dist/assets/toast-success.svg +1 -0
  33. package/dist/assets/toast-warning.svg +1 -0
  34. package/dist/button.css +204 -0
  35. package/dist/checkbox.css +79 -0
  36. package/dist/chip.css +106 -0
  37. package/dist/index.d.ts +15 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +7 -0
  40. package/dist/radio-button.css +138 -0
  41. package/dist/styles.css +7 -0
  42. package/dist/text-area.css +119 -0
  43. package/dist/text-field.css +181 -0
  44. package/dist/toast.css +152 -0
  45. package/package.json +39 -0
@@ -0,0 +1,204 @@
1
+ .ds-button {
2
+ appearance: none;
3
+ display: inline-flex;
4
+ position: relative;
5
+ align-items: center;
6
+ justify-content: center;
7
+ min-width: 100px;
8
+ gap: 8px;
9
+ margin: 0;
10
+ border: 0;
11
+ border-radius: var(--ds-semantic-units-border-radius-l, 16px);
12
+ font-family: var(--ds-primitive-typography-family-inter, Inter), ui-sans-serif, system-ui, sans-serif;
13
+ font-weight: var(--ds-primitive-typography-weight-semi-bold, 600);
14
+ letter-spacing: 0;
15
+ text-align: center;
16
+ text-decoration: none;
17
+ white-space: nowrap;
18
+ cursor: pointer;
19
+ transition:
20
+ color var(--ds-semantic-motion-duration-fast, 120ms) var(--ds-semantic-motion-easing-standard, ease),
21
+ background-color var(--ds-semantic-motion-duration-fast, 120ms) var(--ds-semantic-motion-easing-standard, ease),
22
+ border-color var(--ds-semantic-motion-duration-fast, 120ms) var(--ds-semantic-motion-easing-standard, ease);
23
+ }
24
+
25
+ .ds-button:focus-visible {
26
+ outline: var(--ds-semantic-border-width-s, 2px) solid var(--ds-semantic-color-border-brand-default, #7d5df3);
27
+ outline-offset: 2px;
28
+ }
29
+
30
+ .ds-button:disabled {
31
+ cursor: not-allowed;
32
+ }
33
+
34
+ .ds-button--large {
35
+ height: 56px;
36
+ padding: 16px;
37
+ font-size: var(--ds-semantic-typography-large-buttons-button1-size, 16px);
38
+ line-height: var(--ds-semantic-typography-large-buttons-button1-line-height, 24px);
39
+ }
40
+
41
+ .ds-button--medium {
42
+ height: 48px;
43
+ padding: 12px 16px;
44
+ font-size: var(--ds-semantic-typography-large-buttons-button2-size, 14px);
45
+ line-height: var(--ds-semantic-typography-large-buttons-button2-line-height, 20px);
46
+ }
47
+
48
+ .ds-button--small {
49
+ height: 40px;
50
+ padding: 8px 16px;
51
+ font-size: var(--ds-semantic-typography-large-buttons-button2-size, 14px);
52
+ line-height: var(--ds-semantic-typography-large-buttons-button2-line-height, 20px);
53
+ }
54
+
55
+ .ds-button__label {
56
+ min-width: 0;
57
+ }
58
+
59
+ .ds-button__icon {
60
+ display: inline-flex;
61
+ flex: 0 0 24px;
62
+ align-items: center;
63
+ justify-content: center;
64
+ width: 24px;
65
+ height: 24px;
66
+ }
67
+
68
+ .ds-button__icon > svg,
69
+ .ds-button__icon > img,
70
+ .ds-button__icon > span {
71
+ display: block;
72
+ width: 100%;
73
+ height: 100%;
74
+ }
75
+
76
+ .ds-button--contained-contrast {
77
+ color: var(--ds-semantic-color-text-neutral-invert, #fff);
78
+ background: var(--ds-semantic-color-background-brand-default, #7d5df3);
79
+ }
80
+
81
+ .ds-button--contained-contrast:hover:not(:disabled),
82
+ .ds-button--contained-contrast[data-preview-state='hover'] {
83
+ background: var(--ds-semantic-color-background-brand-hover, #977df5);
84
+ }
85
+
86
+ .ds-button--contained-contrast:active:not(:disabled),
87
+ .ds-button--contained-contrast[data-preview-state='pressed'] {
88
+ background: var(--ds-semantic-color-background-brand-pressed, #b19ef8);
89
+ }
90
+
91
+ .ds-button--contained {
92
+ color: var(--ds-semantic-color-text-neutral-invert, #fff);
93
+ background: var(--ds-semantic-color-background-neutral-inverse, #000);
94
+ }
95
+
96
+ .ds-button--contained:hover:not(:disabled),
97
+ .ds-button--contained[data-preview-state='hover'] {
98
+ background: var(--ds-semantic-color-background-neutral-inverse2, #404040);
99
+ }
100
+
101
+ .ds-button--contained:active:not(:disabled),
102
+ .ds-button--contained[data-preview-state='pressed'] {
103
+ background: var(--ds-semantic-color-background-neutral-terciary, #d3d3d3);
104
+ }
105
+
106
+ .ds-button--outlined {
107
+ border: var(--ds-semantic-border-width-xs, 1px) solid var(--ds-semantic-color-border-neutral-primary, #000);
108
+ color: var(--ds-semantic-color-text-neutral-primary, #000);
109
+ background: var(--ds-semantic-color-background-neutral-primary, #fafafa);
110
+ }
111
+
112
+ .ds-button--outlined:hover:not(:disabled),
113
+ .ds-button--outlined[data-preview-state='hover'] {
114
+ background: var(--ds-semantic-color-background-neutral-secondary, #ededed);
115
+ }
116
+
117
+ .ds-button--outlined:active:not(:disabled),
118
+ .ds-button--outlined[data-preview-state='pressed'] {
119
+ background: var(--ds-semantic-color-background-neutral-terciary, #d3d3d3);
120
+ }
121
+
122
+ .ds-button--text {
123
+ border-radius: var(--ds-semantic-units-border-radius-s, 8px);
124
+ color: var(--ds-semantic-color-text-brand-primary, #7d5df3);
125
+ background: transparent;
126
+ text-decoration: underline;
127
+ text-underline-position: from-font;
128
+ }
129
+
130
+ .ds-button--text:hover:not(:disabled),
131
+ .ds-button--text[data-preview-state='hover'] {
132
+ color: var(--ds-semantic-color-text-brand-secondary, #977df5);
133
+ }
134
+
135
+ .ds-button--text:active:not(:disabled),
136
+ .ds-button--text[data-preview-state='pressed'] {
137
+ color: var(--ds-semantic-color-text-brand-tertiary, #b19ef8);
138
+ }
139
+
140
+ .ds-button--text.ds-button--large {
141
+ font-size: var(--ds-semantic-typography-large-links-link-l-size, 16px);
142
+ line-height: var(--ds-semantic-typography-large-links-link-l-line-height, 24px);
143
+ }
144
+
145
+ .ds-button--text.ds-button--medium {
146
+ font-size: var(--ds-semantic-typography-large-links-link-m-size, 14px);
147
+ line-height: var(--ds-semantic-typography-large-links-link-m-line-height, 20px);
148
+ }
149
+
150
+ .ds-button--text.ds-button--small {
151
+ font-size: var(--ds-semantic-typography-large-links-link-s-size, 12px);
152
+ line-height: var(--ds-semantic-typography-large-links-link-s-line-height, 16px);
153
+ }
154
+
155
+ .ds-button--text.ds-button--small .ds-button__icon {
156
+ flex-basis: 16px;
157
+ width: 16px;
158
+ height: 16px;
159
+ }
160
+
161
+ .ds-button:disabled:not([data-loading='true']) {
162
+ color: var(--ds-semantic-color-text-neutral-tertiary, #a0a0a0);
163
+ background: var(--ds-semantic-color-background-neutral-disabled, #e1e1e1);
164
+ }
165
+
166
+ .ds-button--outlined:disabled:not([data-loading='true']) {
167
+ border-color: var(--ds-semantic-color-border-neutral-tertiary, #b3b3b3);
168
+ }
169
+
170
+ .ds-button--text:disabled:not([data-loading='true']) {
171
+ color: var(--ds-semantic-color-text-brand-disabled, #cbbefa);
172
+ background: transparent;
173
+ }
174
+
175
+ .ds-button[data-loading='true'] {
176
+ border-color: var(--ds-semantic-color-border-neutral-disabled, #e1e1e1);
177
+ color: transparent;
178
+ background: var(--ds-semantic-color-background-neutral-disabled, #e1e1e1);
179
+ }
180
+
181
+ .ds-button__skeleton {
182
+ display: block;
183
+ width: 119px;
184
+ height: 24px;
185
+ border-radius: var(--ds-semantic-units-border-radius-xs, 4px);
186
+ background: var(--ds-semantic-color-background-neutral-skeleton, #b3b3b3);
187
+ }
188
+
189
+ .ds-button--medium .ds-button__skeleton,
190
+ .ds-button--small .ds-button__skeleton {
191
+ width: 112px;
192
+ }
193
+
194
+ .ds-visually-hidden {
195
+ position: absolute;
196
+ width: 1px;
197
+ height: 1px;
198
+ padding: 0;
199
+ margin: -1px;
200
+ overflow: hidden;
201
+ clip: rect(0, 0, 0, 0);
202
+ white-space: nowrap;
203
+ border: 0;
204
+ }
@@ -0,0 +1,79 @@
1
+ .ds-checkbox {
2
+ display: inline-flex;
3
+ position: relative;
4
+ align-items: center;
5
+ width: fit-content;
6
+ min-height: 24px;
7
+ gap: var(--ds-semantic-units-base-spacing-m, 12px);
8
+ color: var(--ds-semantic-color-text-neutral-primary, #000);
9
+ font-family: var(--ds-primitive-typography-family-inter, Inter), ui-sans-serif, system-ui, sans-serif;
10
+ font-size: var(--ds-semantic-typography-large-bodies-body1-semibold-size, 16px);
11
+ font-weight: var(--ds-semantic-typography-large-bodies-body1-semibold-weight, 600);
12
+ line-height: var(--ds-semantic-typography-large-bodies-body1-semibold-line-height, 24px);
13
+ letter-spacing: var(--ds-semantic-typography-large-bodies-body1-semibold-letter-spacing, 0);
14
+ cursor: pointer;
15
+ }
16
+
17
+ .ds-checkbox__input {
18
+ position: absolute;
19
+ width: 1px;
20
+ height: 1px;
21
+ margin: -1px;
22
+ padding: 0;
23
+ overflow: hidden;
24
+ clip: rect(0, 0, 0, 0);
25
+ white-space: nowrap;
26
+ border: 0;
27
+ }
28
+
29
+ .ds-checkbox__control {
30
+ display: inline-flex;
31
+ flex: 0 0 24px;
32
+ align-items: center;
33
+ justify-content: center;
34
+ width: 24px;
35
+ height: 24px;
36
+ overflow: hidden;
37
+ border: var(--ds-semantic-border-width-xs, 1px) solid var(--ds-semantic-color-border-neutral-primary, #000);
38
+ border-radius: var(--ds-semantic-units-border-radius-s, 8px);
39
+ background: transparent;
40
+ }
41
+
42
+ .ds-checkbox__check {
43
+ display: block;
44
+ width: 14px;
45
+ height: 11px;
46
+ }
47
+
48
+ .ds-checkbox__input:checked + .ds-checkbox__control {
49
+ border-color: var(--ds-semantic-color-background-neutral-inverse, #000);
50
+ background: var(--ds-semantic-color-background-neutral-inverse, #000);
51
+ }
52
+
53
+ .ds-checkbox[data-empty='true'] .ds-checkbox__control {
54
+ border-color: var(--ds-semantic-color-border-feedback-bold-informative, #0088ff);
55
+ background: var(--ds-semantic-color-background-feedback-light-informative, #e7f5fd);
56
+ }
57
+
58
+ .ds-checkbox__input:focus-visible + .ds-checkbox__control {
59
+ outline: var(--ds-semantic-border-width-s, 2px) solid var(--ds-semantic-color-border-brand-default, #7d5df3);
60
+ outline-offset: 2px;
61
+ }
62
+
63
+ .ds-checkbox:has(.ds-checkbox__input:disabled) {
64
+ cursor: not-allowed;
65
+ }
66
+
67
+ .ds-checkbox__input:disabled + .ds-checkbox__control {
68
+ border-color: var(--ds-semantic-color-border-neutral-primary, #000);
69
+ background: var(--ds-semantic-color-background-neutral-disabled, #e1e1e1);
70
+ }
71
+
72
+ .ds-checkbox[data-selected='true']:has(.ds-checkbox__input:disabled) {
73
+ color: var(--ds-semantic-color-text-neutral-disabled, #e1e1e1);
74
+ }
75
+
76
+ .ds-checkbox__input:checked:disabled + .ds-checkbox__control {
77
+ border-color: var(--ds-semantic-color-background-neutral-disabled, #e1e1e1);
78
+ background: var(--ds-semantic-color-background-neutral-disabled, #e1e1e1);
79
+ }
package/dist/chip.css ADDED
@@ -0,0 +1,106 @@
1
+ .ds-chip {
2
+ box-sizing: border-box;
3
+ display: inline-flex;
4
+ min-width: 0;
5
+ min-height: 24px;
6
+ align-items: center;
7
+ justify-content: center;
8
+ gap: var(--ds-semantic-units-base-spacing-xs, 4px);
9
+ margin: 0;
10
+ padding: var(--ds-semantic-units-base-spacing-xs, 4px) var(--ds-semantic-units-base-spacing-s, 8px);
11
+ border: 0;
12
+ border-radius: var(--ds-semantic-units-border-radius-full, 9999px);
13
+ color: var(--ds-semantic-color-text-neutral-secondary, #6c6c6c);
14
+ background: transparent;
15
+ box-shadow: inset 0 0 0 var(--ds-semantic-border-width-xs, 1px) var(--ds-semantic-color-border-neutral-secondary, #404040);
16
+ font-family: Inter, ui-sans-serif, system-ui, sans-serif;
17
+ font-size: var(--ds-semantic-typography-large-bodies-body3-semibold-size, 12px);
18
+ font-weight: var(--ds-semantic-typography-large-bodies-body3-semibold-weight, 600);
19
+ line-height: var(--ds-semantic-typography-large-bodies-body3-semibold-line-height, 16px);
20
+ letter-spacing: var(--ds-semantic-typography-large-bodies-body3-semibold-letter-spacing, 0);
21
+ white-space: nowrap;
22
+ cursor: pointer;
23
+ transition:
24
+ color var(--ds-semantic-motion-duration-fast, 120ms) var(--ds-semantic-motion-easing-standard, ease),
25
+ background-color var(--ds-semantic-motion-duration-fast, 120ms) var(--ds-semantic-motion-easing-standard, ease),
26
+ box-shadow var(--ds-semantic-motion-duration-fast, 120ms) var(--ds-semantic-motion-easing-standard, ease);
27
+ }
28
+
29
+ .ds-chip[data-selected='true'] {
30
+ color: var(--ds-semantic-color-text-neutral-invert, #fff);
31
+ background: var(--ds-semantic-color-background-neutral-inverse, #000);
32
+ box-shadow: none;
33
+ }
34
+
35
+ .ds-chip:not([data-selected='true'])[data-has-start-icon='true'][data-has-end-icon='true'] {
36
+ min-width: 92px;
37
+ }
38
+
39
+ .ds-chip:focus-visible {
40
+ outline: var(--ds-semantic-border-width-s, 2px) solid var(--ds-semantic-color-border-brand-default, #7d5df3);
41
+ outline-offset: 2px;
42
+ }
43
+
44
+ .ds-chip:disabled {
45
+ opacity: .45;
46
+ cursor: not-allowed;
47
+ }
48
+
49
+ .ds-chip__label {
50
+ min-width: 0;
51
+ overflow: hidden;
52
+ text-align: center;
53
+ text-overflow: ellipsis;
54
+ }
55
+
56
+ .ds-chip__icon,
57
+ .ds-chip__info {
58
+ display: block;
59
+ position: relative;
60
+ width: 16px;
61
+ height: 16px;
62
+ flex: 0 0 16px;
63
+ }
64
+
65
+ .ds-chip__icon {
66
+ color: var(--ds-semantic-color-border-neutral-secondary, #404040);
67
+ }
68
+
69
+ .ds-chip[data-selected='true'] .ds-chip__icon {
70
+ color: var(--ds-semantic-color-background-neutral-primary, #fafafa);
71
+ }
72
+
73
+ .ds-chip__info-ring,
74
+ .ds-chip__info-mark {
75
+ display: block;
76
+ position: absolute;
77
+ background: currentColor;
78
+ -webkit-mask-position: center;
79
+ mask-position: center;
80
+ -webkit-mask-repeat: no-repeat;
81
+ mask-repeat: no-repeat;
82
+ -webkit-mask-size: 100% 100%;
83
+ mask-size: 100% 100%;
84
+ }
85
+
86
+ .ds-chip__info-ring {
87
+ top: 1.5px;
88
+ left: 1.67px;
89
+ width: 13px;
90
+ height: 13px;
91
+ -webkit-mask-image: url('./assets/chip-info-ring.svg');
92
+ mask-image: url('./assets/chip-info-ring.svg');
93
+ }
94
+
95
+ .ds-chip__info-mark {
96
+ top: 5.03px;
97
+ left: 7.67px;
98
+ width: 1px;
99
+ height: 5.94px;
100
+ -webkit-mask-image: url('./assets/chip-info-mark.svg');
101
+ mask-image: url('./assets/chip-info-mark.svg');
102
+ }
103
+
104
+ @media (prefers-reduced-motion: reduce) {
105
+ .ds-chip { transition: none; }
106
+ }
@@ -0,0 +1,15 @@
1
+ export { Button } from './Button.js';
2
+ export type { ButtonProps, ButtonSize, ButtonVariant } from './Button.js';
3
+ export { RadioButton } from './RadioButton.js';
4
+ export type { RadioButtonProps, RadioButtonSize } from './RadioButton.js';
5
+ export { Checkbox } from './Checkbox.js';
6
+ export type { CheckboxProps } from './Checkbox.js';
7
+ export { TextField } from './TextField.js';
8
+ export type { TextFieldProps, TextFieldPreviewState } from './TextField.js';
9
+ export { TextArea } from './TextArea.js';
10
+ export type { TextAreaProps, TextAreaPreviewState, TextAreaResize } from './TextArea.js';
11
+ export { Chip } from './Chip.js';
12
+ export type { ChipProps } from './Chip.js';
13
+ export { Toast } from './Toast.js';
14
+ export type { ToastProps, ToastState } from './Toast.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export { Button } from './Button.js';
2
+ export { RadioButton } from './RadioButton.js';
3
+ export { Checkbox } from './Checkbox.js';
4
+ export { TextField } from './TextField.js';
5
+ export { TextArea } from './TextArea.js';
6
+ export { Chip } from './Chip.js';
7
+ export { Toast } from './Toast.js';
@@ -0,0 +1,138 @@
1
+ .ds-radio {
2
+ display: inline-flex;
3
+ position: relative;
4
+ align-items: center;
5
+ width: fit-content;
6
+ gap: 8px;
7
+ color: var(--ds-semantic-color-text-neutral-primary, #000);
8
+ font-family: var(--ds-primitive-typography-family-inter, Inter), ui-sans-serif, system-ui, sans-serif;
9
+ font-weight: var(--ds-primitive-typography-weight-regular, 400);
10
+ cursor: pointer;
11
+ }
12
+
13
+ .ds-radio__input {
14
+ position: absolute;
15
+ width: 1px;
16
+ height: 1px;
17
+ margin: -1px;
18
+ padding: 0;
19
+ overflow: hidden;
20
+ clip: rect(0, 0, 0, 0);
21
+ white-space: nowrap;
22
+ border: 0;
23
+ }
24
+
25
+ .ds-radio__control {
26
+ display: inline-flex;
27
+ position: relative;
28
+ z-index: 0;
29
+ flex: 0 0 auto;
30
+ align-items: center;
31
+ justify-content: center;
32
+ border: var(--ds-semantic-border-width-xs, 1px) solid var(--ds-semantic-color-border-neutral-tertiary, #b3b3b3);
33
+ border-radius: 50%;
34
+ background: var(--ds-semantic-color-background-neutral-primary, #fafafa);
35
+ transition:
36
+ background-color var(--ds-semantic-motion-duration-fast, 120ms) var(--ds-semantic-motion-easing-standard, ease),
37
+ border-color var(--ds-semantic-motion-duration-fast, 120ms) var(--ds-semantic-motion-easing-standard, ease);
38
+ }
39
+
40
+ .ds-radio__control::before {
41
+ position: absolute;
42
+ z-index: -1;
43
+ width: calc(100% + 8px);
44
+ height: calc(100% + 8px);
45
+ border-radius: 50%;
46
+ background: transparent;
47
+ content: '';
48
+ transition: background-color var(--ds-semantic-motion-duration-fast, 120ms) var(--ds-semantic-motion-easing-standard, ease);
49
+ }
50
+
51
+ .ds-radio__dot {
52
+ width: 62.5%;
53
+ height: 62.5%;
54
+ border-radius: 50%;
55
+ background: var(--ds-semantic-color-text-neutral-primary, #000);
56
+ opacity: 0;
57
+ transform: scale(.65);
58
+ transition:
59
+ opacity var(--ds-semantic-motion-duration-fast, 120ms) var(--ds-semantic-motion-easing-standard, ease),
60
+ transform var(--ds-semantic-motion-duration-fast, 120ms) var(--ds-semantic-motion-easing-standard, ease);
61
+ }
62
+
63
+ .ds-radio--medium .ds-radio__control {
64
+ width: 24px;
65
+ height: 24px;
66
+ }
67
+
68
+ .ds-radio--medium .ds-radio__label {
69
+ font-size: var(--ds-semantic-typography-large-bodies-body2-regular-size, 14px);
70
+ line-height: var(--ds-semantic-typography-large-bodies-body2-regular-line-height, 20px);
71
+ }
72
+
73
+ .ds-radio--small .ds-radio__control {
74
+ width: 16px;
75
+ height: 16px;
76
+ border-width: .8px;
77
+ }
78
+
79
+ .ds-radio--small .ds-radio__label {
80
+ font-size: var(--ds-semantic-typography-large-bodies-body3-regular-size, 12px);
81
+ line-height: var(--ds-semantic-typography-large-bodies-body3-regular-line-height, 16px);
82
+ }
83
+
84
+ .ds-radio__input:checked + .ds-radio__control {
85
+ border-color: var(--ds-semantic-color-border-neutral-primary, #000);
86
+ }
87
+
88
+ .ds-radio__input:checked + .ds-radio__control .ds-radio__dot {
89
+ opacity: 1;
90
+ transform: scale(1);
91
+ }
92
+
93
+ .ds-radio:hover .ds-radio__input:not(:disabled) + .ds-radio__control,
94
+ .ds-radio__input[data-preview-state='hover']:not(:disabled) + .ds-radio__control {
95
+ background: var(--ds-semantic-color-background-neutral-secondary, #ededed);
96
+ }
97
+
98
+ .ds-radio:hover .ds-radio__input:not(:disabled) + .ds-radio__control::before,
99
+ .ds-radio__input[data-preview-state='hover']:not(:disabled) + .ds-radio__control::before {
100
+ background: var(--ds-semantic-color-background-neutral-secondary, #ededed);
101
+ }
102
+
103
+ .ds-radio:active .ds-radio__input:not(:disabled) + .ds-radio__control,
104
+ .ds-radio__input[data-preview-state='pressed']:not(:disabled) + .ds-radio__control {
105
+ background: var(--ds-semantic-color-background-neutral-primary, #fafafa);
106
+ }
107
+
108
+ .ds-radio:active .ds-radio__input:not(:disabled) + .ds-radio__control::before,
109
+ .ds-radio__input[data-preview-state='pressed']:not(:disabled) + .ds-radio__control::before {
110
+ background: var(--ds-semantic-color-background-neutral-terciary, #d3d3d3);
111
+ }
112
+
113
+ .ds-radio__input:focus-visible + .ds-radio__control {
114
+ outline: var(--ds-semantic-border-width-s, 2px) solid var(--ds-semantic-color-border-brand-default, #7d5df3);
115
+ outline-offset: 2px;
116
+ }
117
+
118
+ .ds-radio:has(.ds-radio__input:disabled) {
119
+ color: var(--ds-semantic-color-text-neutral-disabled, #e1e1e1);
120
+ cursor: not-allowed;
121
+ }
122
+
123
+ .ds-radio__input:disabled + .ds-radio__control {
124
+ border-color: var(--ds-semantic-color-border-neutral-tertiary, #b3b3b3);
125
+ background: var(--ds-semantic-color-background-neutral-disabled, #e1e1e1);
126
+ }
127
+
128
+ .ds-radio__input:checked:disabled + .ds-radio__control {
129
+ border-color: var(--ds-semantic-color-border-neutral-disabled, #e1e1e1);
130
+ }
131
+
132
+ .ds-radio__input:checked:disabled + .ds-radio__control .ds-radio__dot {
133
+ background: var(--ds-semantic-color-background-neutral-skeleton, #b3b3b3);
134
+ }
135
+
136
+ .ds-radio[data-loading='true'] {
137
+ color: var(--ds-semantic-color-text-neutral-secondary, #6c6c6c);
138
+ }
@@ -0,0 +1,7 @@
1
+ @import './button.css';
2
+ @import './radio-button.css';
3
+ @import './checkbox.css';
4
+ @import './text-field.css';
5
+ @import './text-area.css';
6
+ @import './chip.css';
7
+ @import './toast.css';
@@ -0,0 +1,119 @@
1
+ .ds-text-area {
2
+ display: inline-flex;
3
+ width: 328px;
4
+ max-width: 100%;
5
+ flex-direction: column;
6
+ gap: var(--ds-semantic-units-base-spacing-xs, 4px);
7
+ color: var(--ds-semantic-color-text-neutral-primary, #000);
8
+ font-family: Inter, ui-sans-serif, system-ui, sans-serif;
9
+ }
10
+
11
+ .ds-text-area__label,
12
+ .ds-text-area__help {
13
+ min-height: 16px;
14
+ font-size: var(--ds-semantic-typography-large-bodies-body3-semibold-size, 12px);
15
+ font-weight: var(--ds-semantic-typography-large-bodies-body3-semibold-weight, 600);
16
+ line-height: var(--ds-semantic-typography-large-bodies-body3-semibold-line-height, 16px);
17
+ letter-spacing: var(--ds-semantic-typography-large-bodies-body3-semibold-letter-spacing, 0);
18
+ }
19
+
20
+ .ds-text-area__control {
21
+ display: block;
22
+ position: relative;
23
+ width: 100%;
24
+ height: 120px;
25
+ }
26
+
27
+ .ds-text-area__input {
28
+ box-sizing: border-box;
29
+ display: block;
30
+ width: 100%;
31
+ height: 120px;
32
+ margin: 0;
33
+ padding: var(--ds-semantic-units-base-spacing-l, 16px);
34
+ overflow: auto;
35
+ border: var(--ds-semantic-border-width-xs, 1px) solid var(--ds-semantic-color-border-neutral-tertiary, #b3b3b3);
36
+ border-radius: var(--ds-semantic-units-border-radius-s, 8px);
37
+ outline: 0;
38
+ color: var(--ds-semantic-color-text-neutral-primary, #000);
39
+ background: transparent;
40
+ font-family: inherit;
41
+ font-size: var(--ds-semantic-typography-large-bodies-body1-regular-size, 16px);
42
+ font-weight: var(--ds-semantic-typography-large-bodies-body1-regular-weight, 400);
43
+ line-height: var(--ds-semantic-typography-large-bodies-body1-regular-line-height, 24px);
44
+ letter-spacing: var(--ds-semantic-typography-large-bodies-body1-regular-letter-spacing, 0);
45
+ transition: border-color var(--ds-semantic-motion-duration-fast, 120ms) var(--ds-semantic-motion-easing-standard, ease);
46
+ }
47
+
48
+ .ds-text-area__input::placeholder {
49
+ color: var(--ds-semantic-color-text-neutral-disabled, #e1e1e1);
50
+ opacity: 1;
51
+ }
52
+
53
+ .ds-text-area__input:focus,
54
+ .ds-text-area[data-preview-state='focus'] .ds-text-area__input,
55
+ .ds-text-area[data-preview-state='writing'] .ds-text-area__input,
56
+ .ds-text-area[data-has-value='true'] .ds-text-area__input {
57
+ padding-block: var(--ds-semantic-units-base-spacing-m, 12px);
58
+ }
59
+
60
+ .ds-text-area__input:focus,
61
+ .ds-text-area[data-preview-state='focus'] .ds-text-area__input,
62
+ .ds-text-area[data-preview-state='writing'] .ds-text-area__input {
63
+ border-color: var(--ds-semantic-color-border-neutral-primary, #000);
64
+ }
65
+
66
+ .ds-text-area__help {
67
+ padding-inline: var(--ds-semantic-units-base-spacing-s, 8px);
68
+ }
69
+
70
+ .ds-text-area[data-error='true'] .ds-text-area__label,
71
+ .ds-text-area[data-error='true'] .ds-text-area__help {
72
+ color: var(--ds-semantic-color-text-feedback-bold-error, #f22418);
73
+ }
74
+
75
+ .ds-text-area[data-error='true'] .ds-text-area__input,
76
+ .ds-text-area[data-preview-state='error-writing'] .ds-text-area__input {
77
+ border-color: var(--ds-semantic-color-border-feedback-bold-error, #f22418);
78
+ }
79
+
80
+ .ds-text-area[data-disabled='true'] .ds-text-area__label,
81
+ .ds-text-area[data-disabled='true'] .ds-text-area__help {
82
+ color: var(--ds-semantic-color-text-neutral-disabled, #e1e1e1);
83
+ }
84
+
85
+ .ds-text-area[data-disabled='true'] .ds-text-area__input {
86
+ padding: var(--ds-semantic-units-base-spacing-l, 16px);
87
+ border-color: transparent;
88
+ color: var(--ds-semantic-color-text-neutral-tertiary, #a0a0a0);
89
+ background: var(--ds-semantic-color-background-neutral-disabled, #e1e1e1);
90
+ cursor: not-allowed;
91
+ opacity: 1;
92
+ -webkit-text-fill-color: currentColor;
93
+ }
94
+
95
+ .ds-text-area__preview {
96
+ display: inline-flex;
97
+ position: absolute;
98
+ inset: var(--ds-semantic-units-base-spacing-m, 12px) auto auto var(--ds-semantic-units-base-spacing-l, 16px);
99
+ max-width: calc(100% - 32px);
100
+ align-items: flex-start;
101
+ pointer-events: none;
102
+ visibility: hidden;
103
+ white-space: pre-wrap;
104
+ font-size: var(--ds-semantic-typography-large-bodies-body1-regular-size, 16px);
105
+ font-weight: var(--ds-semantic-typography-large-bodies-body1-regular-weight, 400);
106
+ line-height: var(--ds-semantic-typography-large-bodies-body1-regular-line-height, 24px);
107
+ }
108
+
109
+ .ds-text-area__preview-caret {
110
+ width: 1px;
111
+ height: 20px;
112
+ flex: 0 0 auto;
113
+ background: var(--ds-semantic-color-text-neutral-primary, #000);
114
+ visibility: visible;
115
+ }
116
+
117
+ @media (prefers-reduced-motion: reduce) {
118
+ .ds-text-area__input { transition: none; }
119
+ }