@digdir/designsystemet-css 0.0.0-next-20240724125515

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/switch.css ADDED
@@ -0,0 +1,242 @@
1
+ .ds-switch {
2
+ --dsc-switch--transition: 200ms;
3
+ --dsc-switch-height: 1.75rem;
4
+ --dsc-switch-focus-border-width: 3px;
5
+ --dsc-switch-check_color: transparent;
6
+ --dsc-switch-thumb-background-color: var(--ds-color-neutral-background-default);
7
+
8
+ position: relative;
9
+ }
10
+
11
+ @media (prefers-reduced-motion) {
12
+ .switch {
13
+ --dsc-switch--transition: 0;
14
+ }
15
+ }
16
+
17
+ .ds-switch__label {
18
+ min-height: var(--ds-sizing-10);
19
+ min-width: min-content;
20
+ display: grid;
21
+ grid-template-columns: auto 1fr;
22
+ gap: var(--ds-spacing-1);
23
+ align-items: center;
24
+ cursor: pointer;
25
+ }
26
+
27
+ .ds-switch__track {
28
+ position: relative;
29
+ display: inline-block;
30
+ pointer-events: none;
31
+ width: var(--dsc-switch-width);
32
+ height: var(--dsc-switch-height);
33
+ margin: auto;
34
+ overflow: visible;
35
+ border-radius: var(--ds-border-radius-full);
36
+ background-color: var(--ds-color-neutral-border-default);
37
+ transition: background-color var(--dsc-switch--transition) ease;
38
+ margin-right: var(--ds-spacing-1);
39
+ }
40
+
41
+ .ds-switch__description {
42
+ padding-left: calc(var(--dsc-switch-width) + var(--ds-spacing-2));
43
+ margin-top: var(--ds-spacing-1);
44
+ color: var(--ds-color-neutral-text-subtle);
45
+ width: fit-content;
46
+ }
47
+
48
+ .ds-switch__readonly__icon {
49
+ height: 1.2em;
50
+ width: 1.2em;
51
+ }
52
+
53
+ .ds-switch__label--right {
54
+ grid-template-columns: 1fr auto;
55
+ grid-auto-flow: dense;
56
+ }
57
+
58
+ .ds-switch__label--right .ds-switch__track {
59
+ order: 1;
60
+ margin-right: 0;
61
+ }
62
+
63
+ .ds-switch__label--right + .ds-switch__description {
64
+ padding-left: 0;
65
+ }
66
+
67
+ .ds-switch__input {
68
+ position: absolute;
69
+ width: 2.75rem;
70
+ height: 2.75rem;
71
+ z-index: 1;
72
+ opacity: 0;
73
+ cursor: pointer;
74
+ margin: 0;
75
+ }
76
+
77
+ .ds-switch--readonly > .ds-switch__label {
78
+ grid-template-columns: auto min-content 1fr;
79
+ }
80
+
81
+ .ds-switch--readonly > .ds-switch__label:where(.ds-switch__label--right) {
82
+ grid-template-columns: min-content 1fr auto;
83
+ }
84
+
85
+ .ds-switch--readonly > .ds-switch__input,
86
+ .ds-switch--readonly > .ds-switch__label {
87
+ cursor: default;
88
+ }
89
+
90
+ .ds-switch--readonly > .ds-switch__description {
91
+ margin-left: var(--ds-spacing-1);
92
+ }
93
+
94
+ .ds-switch--sm,
95
+ .ds-switch--sm .ds-switch__label {
96
+ min-height: var(--ds-sizing-6);
97
+ }
98
+
99
+ .ds-switch--md,
100
+ .ds-switch--md .ds-switch__label {
101
+ min-height: var(--ds-sizing-7);
102
+ }
103
+
104
+ .ds-switch--lg,
105
+ .ds-switch--lg .ds-switch__label {
106
+ min-height: var(--ds-sizing-8);
107
+ }
108
+
109
+ .ds-switch--sm {
110
+ --dsc-switch-height: var(--ds-sizing-6);
111
+ --dsc-switch-width: var(--ds-sizing-11);
112
+ }
113
+
114
+ .ds-switch--sm .ds-switch__input {
115
+ left: -0.25rem;
116
+ top: -0.25rem;
117
+ }
118
+
119
+ .ds-switch--md {
120
+ --dsc-switch-height: var(--ds-sizing-7);
121
+ --dsc-switch-width: var(--ds-sizing-13);
122
+ }
123
+
124
+ .ds-switch--md .ds-switch__input {
125
+ left: 0;
126
+ top: 0;
127
+ }
128
+
129
+ .ds-switch--lg {
130
+ --dsc-switch-height: var(--ds-sizing-8);
131
+ --dsc-switch-width: var(--ds-sizing-15);
132
+ }
133
+
134
+ .ds-switch--lg .ds-switch__input {
135
+ left: 0;
136
+ top: 0.25rem;
137
+ }
138
+
139
+ .ds-switch__label:has(.ds-switch__track:only-child) {
140
+ grid-template-columns: auto;
141
+ }
142
+
143
+ .ds-switch__label:has(.ds-switch__track:only-child) .ds-switch__track {
144
+ margin-right: 0;
145
+ }
146
+
147
+ .ds-switch__input:disabled,
148
+ .ds-switch:has(.ds-switch__input:disabled) > .ds-switch__label {
149
+ cursor: not-allowed;
150
+ }
151
+
152
+ .ds-switch:has(.ds-switch__input:disabled) > .ds-switch__label,
153
+ .ds-switch:has(.ds-switch__input:disabled) > .ds-switch__description {
154
+ opacity: var(--ds-disabled-opacity);
155
+ }
156
+
157
+ /* .ds-switch__input:focus-visible + .ds-switch__label .ds-switch__track {
158
+ outline: var(--dsc-switch-focus-border-width) solid var(--ds-color-focus-outer);
159
+ outline-offset: var(--dsc-switch-focus-border-width);
160
+ box-shadow: 0 0 0 var(--dsc-switch-focus-border-width) var(--ds-color-focus-inner);
161
+ } */
162
+
163
+ /**
164
+ * Apply a focus outline on an element when it is focused with keyboard
165
+ */
166
+ .ds-switch:has(.ds-switch__input:focus-visible) {
167
+ --dsc-focus-border-width: 3px;
168
+
169
+ outline: var(--dsc-focus-border-width) solid var(--ds-color-focus-outer);
170
+ outline-offset: var(--dsc-focus-border-width);
171
+ box-shadow: 0 0 0 var(--dsc-focus-border-width) var(--ds-color-focus-inner);
172
+ border-radius: var(--ds-border-radius-md);
173
+ }
174
+
175
+ .ds-switch__input:not([readonly]):checked + .ds-switch__label .ds-switch__track {
176
+ background-color: var(--ds-color-accent-base-default);
177
+ }
178
+
179
+ .ds-switch__thumb {
180
+ scale: 0.8;
181
+ position: absolute;
182
+ height: var(--dsc-switch-height);
183
+ width: var(--dsc-switch-height);
184
+ border-radius: var(--ds-border-radius-full);
185
+ background-color: var(--dsc-switch-thumb-background-color);
186
+ transition: transform var(--dsc-switch--transition) ease;
187
+ }
188
+
189
+ .ds-switch__input:checked + .ds-switch__label .ds-switch__track .ds-switch__thumb {
190
+ --dsc-switch-check_color: var(--ds-color-accent-base-default);
191
+ --dsc-switch-thumb-background-color: var(--ds-color-accent-contrast-default);
192
+
193
+ transform: translateX(calc((var(--dsc-switch-width) - var(--dsc-switch-height)) * 1.2));
194
+ }
195
+
196
+ .ds-switch__thumb::after {
197
+ content: '';
198
+ width: 100%;
199
+ height: 100%;
200
+ position: absolute;
201
+ top: 50%;
202
+ left: 50%;
203
+ transform: translate(-50%, -50%);
204
+ background-color: var(--dsc-switch-check_color);
205
+ mask-image: url("data:image/svg+xml,%3Csvg viewBox='-3 -3 17 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.1339 2.86612C10.622 3.35427 10.622 4.14573 10.1339 4.63388L5.88388 8.88388C5.39573 9.37204 4.60427 9.37204 4.11612 8.88388L1.86612 6.63388C1.37796 6.14573 1.37796 5.35427 1.86612 4.86612C2.35427 4.37796 3.14573 4.37796 3.63388 4.86612L5 6.23223L8.36612 2.86612C8.85427 2.37796 9.64573 2.37796 10.1339 2.86612Z' fill='%23118849' /%3E%3C/svg%3E");
206
+ transition: background-color var(--dsc-switch--transition) ease;
207
+ }
208
+
209
+ .ds-switch--readonly .ds-switch__input[readonly] + .ds-switch__label .ds-switch__track {
210
+ box-shadow: inset 0 0 0 2px var(--ds-color-neutral-border-subtle);
211
+ background-color: var(--ds-color-neutral-background-subtle);
212
+ }
213
+
214
+ .ds-switch--readonly .ds-switch__input[readonly] + .ds-switch__label .ds-switch__track > .ds-switch__thumb {
215
+ --dsc-switch-check_color: var(--ds-color-neutral-background-subtle);
216
+
217
+ background-color: var(--ds-color-neutral-border-strong);
218
+ }
219
+
220
+ @media (hover: hover) and (pointer: fine) {
221
+ .ds-switch__input:not([readonly], :disabled):hover + .ds-switch__label .ds-switch__track > .ds-switch__thumb {
222
+ transform: translateX(calc((var(--dsc-switch-width) - var(--dsc-switch-height)) * 0.2));
223
+ }
224
+
225
+ .ds-switch__input:not([readonly], :disabled):hover + .ds-switch__label {
226
+ color: var(--ds-color-accent-text-subtle);
227
+ }
228
+
229
+ .ds-switch__input:not(:disabled, [readonly]):checked:hover + .ds-switch__label .ds-switch__track > .ds-switch__thumb {
230
+ --dsc-switch-check_color: var(--ds-color-accent-base-hover);
231
+
232
+ transform: translateX(calc((var(--dsc-switch-width) - var(--dsc-switch-height))));
233
+ }
234
+
235
+ .ds-switch__input:not(:checked, :disabled, [readonly]):hover + .ds-switch__label .ds-switch__track {
236
+ background-color: var(--ds-color-neutral-border-strong);
237
+ }
238
+
239
+ .ds-switch__input:not(:disabled, [readonly]):checked:hover + .ds-switch__label .ds-switch__track {
240
+ background-color: var(--ds-color-accent-base-hover);
241
+ }
242
+ }
package/table.css ADDED
@@ -0,0 +1,142 @@
1
+ .ds-table {
2
+ --dsc-table-padding: 0;
3
+ --dsc-table-border-radius: min(1rem, var(--ds-border-radius-md));
4
+ --dsc-table-border-color: var(--ds-color-neutral-border-subtle);
5
+ --dsc-table-color: var(--ds-color-neutral-text-default);
6
+ --dsc-table-header-cell-background: var(--ds-color-neutral-background-default);
7
+ --dsc-table-header-sorted-background: var(--ds-color-neutral-background-subtle);
8
+ --dsc-table-header-sorted-hover: var(--ds-color-neutral-surface-default);
9
+ --dsc-table-cell-backround: var(--ds-color-neutral-background-default);
10
+ --dsc-table-cell-zebra-background: var(--ds-color-neutral-background-subtle);
11
+ --dsc-table-cell-hover-backround: var(--ds-color-neutral-surface-default);
12
+
13
+ position: relative;
14
+ border-collapse: separate;
15
+ border-spacing: 0;
16
+ text-align: left;
17
+ color: var(--dsc-table-color);
18
+ }
19
+
20
+ .ds-table--sticky-header {
21
+ overflow: auto;
22
+ }
23
+
24
+ .ds-table--border .ds-table__row:last-of-type td {
25
+ border-bottom: 0;
26
+ }
27
+
28
+ .ds-table--sm {
29
+ --dsc-table-padding: var(--ds-spacing-1) var(--ds-spacing-3);
30
+ }
31
+
32
+ .ds-table--md {
33
+ --dsc-table-padding: var(--ds-spacing-2) var(--ds-spacing-3);
34
+ }
35
+
36
+ .ds-table--lg {
37
+ --dsc-table-padding: var(--ds-spacing-3) var(--ds-spacing-3);
38
+ }
39
+
40
+ .ds-table__head {
41
+ z-index: 0;
42
+ box-sizing: border-box;
43
+ font-family: inherit;
44
+ border-spacing: 0;
45
+ border-bottom: 2px solid var(--dsc-table-border-color);
46
+ }
47
+
48
+ .ds-table__header__cell {
49
+ padding: var(--dsc-table-padding);
50
+ font-family: inherit;
51
+ background-color: var(--dsc-table-header-cell-background);
52
+ border-spacing: 0;
53
+ border-bottom: 2px solid var(--dsc-table-border-color);
54
+ }
55
+
56
+ .ds-table--sticky-header .ds-table__head .ds-table__header__cell {
57
+ position: sticky;
58
+ top: 0;
59
+ z-index: 1;
60
+ }
61
+
62
+ .ds-table__header__cell--sortable {
63
+ padding: 0;
64
+ }
65
+
66
+ .ds-table__header__cell--sortable button {
67
+ position: relative;
68
+ width: 100%;
69
+ border: none;
70
+ font-family: inherit;
71
+ display: flex;
72
+ cursor: pointer;
73
+ gap: var(--ds-spacing-1);
74
+ align-items: center;
75
+ padding: var(--dsc-table-padding);
76
+ background-color: transparent;
77
+ color: var(--dsc-table-color);
78
+ z-index: 2;
79
+ }
80
+
81
+ .ds-table__header__cell--sorted button {
82
+ background-color: var(--dsc-table-header-sorted-background);
83
+ }
84
+
85
+ .ds-table__header__cell--sortable button:focus-visible {
86
+ z-index: 3;
87
+ outline-offset: -3px;
88
+ box-shadow: unset;
89
+ }
90
+
91
+ .ds-table__header__cell--sortable button svg {
92
+ font-size: 1.2em;
93
+ }
94
+
95
+ .ds-table__cell {
96
+ padding: var(--dsc-table-padding);
97
+ border-bottom: 1px solid var(--dsc-table-border-color);
98
+ background-color: var(--dsc-table-cell-backround);
99
+ }
100
+
101
+ .ds-table--zebra .ds-table__row {
102
+ border-bottom: 0;
103
+ }
104
+
105
+ .ds-table--zebra tr:nth-child(even):not(:hover) .ds-table__cell {
106
+ background-color: var(--dsc-table-cell-zebra-background);
107
+ }
108
+
109
+ .ds-table--border {
110
+ border-radius: var(--dsc-table-border-radius);
111
+ border: 1px solid var(--dsc-table-border-color);
112
+ }
113
+
114
+ .ds-table--border .ds-table__head .ds-table__header__cell:first-of-type {
115
+ border-top-left-radius: var(--dsc-table-border-radius);
116
+ overflow: hidden;
117
+ }
118
+
119
+ .ds-table--border .ds-table__head .ds-table__header__cell:last-of-type {
120
+ border-top-right-radius: var(--dsc-table-border-radius);
121
+ overflow: hidden;
122
+ }
123
+
124
+ .ds-table--border .ds-table__row:last-of-type .ds-table__cell:first-of-type {
125
+ border-bottom-left-radius: var(--dsc-table-border-radius);
126
+ overflow: hidden;
127
+ }
128
+
129
+ .ds-table--border .ds-table__row:last-of-type .ds-table__cell:last-of-type {
130
+ border-bottom-right-radius: var(--dsc-table-border-radius);
131
+ overflow: hidden;
132
+ }
133
+
134
+ @media (hover: hover) and (pointer: fine) {
135
+ .ds-table__row:hover .ds-table__cell {
136
+ background-color: var(--dsc-table-cell-hover-backround);
137
+ }
138
+
139
+ .ds-table__header__cell--sortable button:hover {
140
+ background-color: var(--dsc-table-header-sorted-hover);
141
+ }
142
+ }
package/tabs.css ADDED
@@ -0,0 +1,81 @@
1
+ .ds-tabs {
2
+ --dsc-tabs__tab-bottom-border-color: transparent;
3
+ --dsc-tabs-tab-padding: var(--ds-spacing-3) var(--ds-spacing-5);
4
+ --dsc-tabs-tab-color: var(--ds-color-neutral-text-subtle);
5
+ --dsc-tabs-content-padding: var(--ds-spacing-5);
6
+ --dsc-tabs-content-color: var(--ds-color-neutral-text-default);
7
+ --dsc-tabs-list-border-color: var(--ds-color-neutral-border-subtle);
8
+ }
9
+
10
+ .ds-tabs__tab {
11
+ display: flex;
12
+ flex-direction: row;
13
+ box-sizing: border-box;
14
+ gap: var(--ds-spacing-1);
15
+ justify-content: center;
16
+ text-align: center;
17
+ align-items: center;
18
+ padding: var(--dsc-tabs-tab-padding);
19
+ border: none;
20
+ border-radius: 0;
21
+ background-color: transparent;
22
+ cursor: pointer;
23
+ color: var(--dsc-tabs-tab-color);
24
+ position: relative;
25
+ font-family: inherit;
26
+ }
27
+
28
+ .ds-tabs__content {
29
+ padding: var(--dsc-tabs-content-padding);
30
+ color: var(--dsc-tabs-content-color);
31
+ }
32
+
33
+ .ds-tabs--sm {
34
+ --dsc-tabs-tab-padding: var(--ds-spacing-2) var(--ds-spacing-4);
35
+ --dsc-tabs-content-padding: var(--ds-spacing-4);
36
+ }
37
+
38
+ .ds-tabs--md {
39
+ --dsc-tabs-tab-padding: var(--ds-spacing-3) var(--ds-spacing-5);
40
+ --dsc-tabs-content-padding: var(--ds-spacing-5);
41
+ }
42
+
43
+ .ds-tabs--lg {
44
+ --dsc-tabs-tab-padding: var(--ds-spacing-4) var(--ds-spacing-6);
45
+ --dsc-tabs-content-padding: var(--ds-spacing-6);
46
+ }
47
+
48
+ @media (hover: hover) and (pointer: fine) {
49
+ .ds-tabs__tab:hover:not([aria-selected='true']) {
50
+ --dsc-tabs__tab-bottom-border-color: var(--ds-color-neutral-border-subtle);
51
+ --dsc-tabs-tab-color: var(--ds-color-neutral-text-default);
52
+ }
53
+ }
54
+
55
+ .ds-tabs__tab[aria-selected='true'] {
56
+ --dsc-tabs__tab-bottom-border-color: var(--ds-color-accent-base-default);
57
+ --dsc-tabs-tab-color: var(--ds-color-accent-text-subtle);
58
+ }
59
+
60
+ .ds-tabs__tab:focus {
61
+ z-index: 2;
62
+ }
63
+
64
+ .ds-tabs__tab::after {
65
+ content: '';
66
+ display: block;
67
+ height: 3px;
68
+ width: 100%;
69
+ border-radius: var(--dsc-border-radius-full);
70
+ background-color: var(--dsc-tabs__tab-bottom-border-color);
71
+ position: absolute;
72
+ bottom: 0;
73
+ left: 0;
74
+ }
75
+
76
+ .ds-tabs__tablist {
77
+ display: flex;
78
+ flex-direction: row;
79
+ border-bottom: var(--ds-border-width-default) solid var(--dsc-tabs-list-border-color);
80
+ position: relative;
81
+ }
package/tag.css ADDED
@@ -0,0 +1,70 @@
1
+ .ds-tag {
2
+ --dsc-tag-background: var(--ds-color-neutral-background-subtle);
3
+ --dsc-tag-color: var(--ds-color-neutral-text-default);
4
+
5
+ color: var(--dsc-tag-color);
6
+ padding: 0 var(--ds-spacing-2);
7
+ min-height: var(--ds-sizing-8);
8
+ background-color: var(--dsc-tag-background);
9
+ border-radius: min(1rem, var(--ds-border-radius-sm));
10
+ display: flex;
11
+ align-items: center;
12
+ box-sizing: border-box;
13
+ word-break: break-word;
14
+ width: max-content;
15
+ }
16
+
17
+ .ds-tag--sm {
18
+ padding: 0 var(--ds-spacing-2);
19
+ min-height: var(--ds-sizing-7);
20
+ }
21
+
22
+ .ds-tag--md {
23
+ padding: 0 var(--ds-spacing-2);
24
+ min-height: var(--ds-sizing-8);
25
+ }
26
+
27
+ .ds-tag--lg {
28
+ padding: 0 var(--ds-spacing-3);
29
+ min-height: var(--ds-sizing-9);
30
+ }
31
+
32
+ .ds-tag--neutral {
33
+ --dsc-tag-background: var(--ds-color-neutral-surface-default);
34
+ --dsc-tag-color: var(--ds-color-neutral-text-default);
35
+ }
36
+
37
+ .ds-tag--info {
38
+ --dsc-tag-background: var(--ds-color-info-surface-default);
39
+ --dsc-tag-color: var(--ds-color-info-text-default);
40
+ }
41
+
42
+ .ds-tag--success {
43
+ --dsc-tag-background: var(--ds-color-success-surface-default);
44
+ --dsc-tag-color: var(--ds-color-success-text-default);
45
+ }
46
+
47
+ .ds-tag--warning {
48
+ --dsc-tag-background: var(--ds-color-warning-surface-default);
49
+ --dsc-tag-color: var(--ds-color-warning-text-default);
50
+ }
51
+
52
+ .ds-tag--danger {
53
+ --dsc-tag-background: var(--ds-color-danger-surface-default);
54
+ --dsc-tag-color: var(--ds-color-danger-text-default);
55
+ }
56
+
57
+ .ds-tag--brand1 {
58
+ --dsc-tag-background: var(--ds-color-brand1-surface-default);
59
+ --dsc-tag-color: var(--ds-color-brand1-text-default);
60
+ }
61
+
62
+ .ds-tag--brand2 {
63
+ --dsc-tag-background: var(--ds-color-brand2-surface-default);
64
+ --dsc-tag-color: var(--ds-color-brand2-text-default);
65
+ }
66
+
67
+ .ds-tag--brand3 {
68
+ --dsc-tag-background: var(--ds-color-brand3-surface-default);
69
+ --dsc-tag-color: var(--ds-color-brand3-text-default);
70
+ }
package/textarea.css ADDED
@@ -0,0 +1,79 @@
1
+ .ds-textarea {
2
+ display: grid;
3
+ gap: var(--ds-spacing-2);
4
+ }
5
+
6
+ .ds-textarea__readonly-icon {
7
+ height: 1.2em;
8
+ width: 1.2em;
9
+ }
10
+
11
+ .ds-textarea__error-message:empty {
12
+ display: none;
13
+ }
14
+
15
+ .ds-textarea__label {
16
+ min-width: min-content;
17
+ display: inline-flex;
18
+ flex-direction: row;
19
+ gap: var(--ds-spacing-1);
20
+ align-items: center;
21
+ }
22
+
23
+ .ds-textarea__description {
24
+ color: var(--ds-color-neutral-text-subtle);
25
+ margin-top: calc(var(--ds-spacing-2) * -1);
26
+ }
27
+
28
+ .ds-textarea__input {
29
+ font-family: inherit;
30
+ position: relative;
31
+ box-sizing: border-box;
32
+ flex: 0 1 auto;
33
+ min-height: 2.5em;
34
+ width: 100%;
35
+ appearance: none;
36
+ padding: var(--ds-spacing-3);
37
+ border: solid 1px var(--ds-color-neutral-border-default);
38
+ border-radius: min(1rem, var(--ds-border-radius-md));
39
+ resize: vertical;
40
+ background: var(--ds-color-neutral-background-default);
41
+ color: var(--ds-color-neutral-text-default);
42
+ }
43
+
44
+ .ds-textarea--sm .ds-textarea__input {
45
+ padding: var(--ds-spacing-2);
46
+ }
47
+
48
+ .ds-textarea--md .ds-textarea__input {
49
+ padding: var(--ds-spacing-3);
50
+ }
51
+
52
+ .ds-textarea--lg .ds-textarea__input {
53
+ padding: var(--ds-spacing-4);
54
+ }
55
+
56
+ .ds-textarea:has(.ds-textarea__input:disabled) {
57
+ opacity: var(--ds-disabled-opacity);
58
+ }
59
+
60
+ .ds-textarea__input:disabled {
61
+ cursor: not-allowed;
62
+ }
63
+
64
+ .ds-textarea__input:read-only {
65
+ background: var(--ds-color-neutral-background-subtle);
66
+ border-color: var(--ds-color-neutral-border-strong);
67
+ }
68
+
69
+ .ds-textarea--error > .ds-textarea__input:not(:focus-visible) {
70
+ border-color: var(--ds-color-danger-border-default);
71
+ box-shadow: inset 0 0 0 1px var(--ds-color-danger-border-default);
72
+ }
73
+
74
+ @media (hover: hover) and (pointer: fine) {
75
+ .ds-textarea__input:not(:focus-visible, :disabled, [aria-disabled]):hover {
76
+ border-color: var(--ds-color-accent-border-strong);
77
+ box-shadow: inset 0 0 0 1px var(--ds-color-accent-border-strong);
78
+ }
79
+ }