@db-ux/core-components 4.4.2 → 4.5.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 (63) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/build/components/accordion/accordion.css +0 -14
  3. package/build/components/accordion-item/accordion-item.css +38 -29
  4. package/build/components/accordion-item/accordion-item.scss +1 -1
  5. package/build/components/badge/badge.css +75 -33
  6. package/build/components/badge/badge.scss +6 -1
  7. package/build/components/brand/brand.css +2 -18
  8. package/build/components/brand/brand.scss +2 -0
  9. package/build/components/button/button.css +245 -82
  10. package/build/components/button/button.scss +1 -105
  11. package/build/components/card/card.css +88 -30
  12. package/build/components/checkbox/checkbox.css +1 -22
  13. package/build/components/custom-button/custom-button.css +892 -0
  14. package/build/components/custom-button/custom-button.scss +78 -0
  15. package/build/components/custom-select/custom-select.css +19 -25
  16. package/build/components/custom-select-dropdown/custom-select-dropdown.css +1 -22
  17. package/build/components/custom-select-dropdown/custom-select-dropdown.scss +1 -0
  18. package/build/components/custom-select-form-field/custom-select-form-field.css +0 -22
  19. package/build/components/custom-select-list/custom-select-list.css +0 -22
  20. package/build/components/custom-select-list-item/custom-select-list-item.css +36 -28
  21. package/build/components/divider/divider.css +0 -10
  22. package/build/components/drawer/drawer.css +4 -14
  23. package/build/components/drawer/drawer.scss +4 -0
  24. package/build/components/header/header.css +0 -22
  25. package/build/components/icon/icon.css +0 -10
  26. package/build/components/infotext/infotext.css +4 -18
  27. package/build/components/infotext/infotext.scss +4 -0
  28. package/build/components/input/input.css +19 -25
  29. package/build/components/link/link.css +73 -34
  30. package/build/components/navigation/navigation.css +0 -22
  31. package/build/components/navigation-item/navigation-item.css +111 -43
  32. package/build/components/navigation-item/navigation-item.scss +2 -1
  33. package/build/components/notification/notification.css +37 -28
  34. package/build/components/page/page.css +0 -10
  35. package/build/components/popover/popover.css +26 -14
  36. package/build/components/radio/radio.css +0 -22
  37. package/build/components/section/section.css +0 -14
  38. package/build/components/select/select.css +19 -25
  39. package/build/components/stack/stack-web-component.css +0 -10
  40. package/build/components/stack/stack.css +0 -10
  41. package/build/components/switch/switch.css +1 -22
  42. package/build/components/tab-item/tab-item.css +52 -32
  43. package/build/components/tab-list/tab-list.css +0 -22
  44. package/build/components/tab-panel/tab-panel.css +0 -10
  45. package/build/components/tabs/tabs.css +2 -22
  46. package/build/components/tabs/tabs.scss +2 -0
  47. package/build/components/tag/tag.css +859 -150
  48. package/build/components/textarea/textarea.css +18 -25
  49. package/build/components/tooltip/tooltip.css +30 -23
  50. package/build/components/tooltip/tooltip.scss +12 -10
  51. package/build/styles/absolute.css +10 -10
  52. package/build/styles/index.css +9 -9
  53. package/build/styles/index.scss +1 -0
  54. package/build/styles/internal/_button-components.scss +140 -2
  55. package/build/styles/internal/_custom-elements.scss +1 -1
  56. package/build/styles/internal/_icon-passing.scss +23 -3
  57. package/build/styles/internal/_popover-component.scss +19 -9
  58. package/build/styles/internal/_tag-components.scss +1 -0
  59. package/build/styles/relative.css +10 -10
  60. package/build/styles/rollup.css +10 -10
  61. package/build/styles/wc-workarounds.css +1 -1
  62. package/build/styles/webpack.css +10 -10
  63. package/package.json +10 -9
@@ -1,13 +1,3 @@
1
- /* Use sizing's for fixed heights/widths e.g. the db-button has always a fixed height */
2
- /* Use fixed spacings for all kind of distances (margin, padding, ...) */
3
- /* The primary use-case for responsive spacings are
4
- paddings/gaps in an application e.g. the <main> should have a responsive padding. */
5
- /* Elevation */
6
- /* Border */
7
- /* Opacity */
8
- /* Transitions */
9
- /* Screen sizes */
10
- /* Container sizes */
11
1
  /* Variants for adaptive components like input, select, notification, ... */
12
2
  @layer variables {}
13
3
 
@@ -43,12 +33,6 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
43
33
 
44
34
  @layer variables {}
45
35
 
46
- /**
47
- Generates 3 types of placeholders, e.g:
48
- - %db-component-variables-md
49
- - %db-font-size-md
50
- - %db-overwrite-font-size-md
51
- */
52
36
  @layer variables {}
53
37
 
54
38
  @layer variables {}
@@ -123,12 +107,6 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
123
107
 
124
108
  @layer variables {}
125
109
 
126
- /* Use for body tags like <p> */
127
- /* Use for headline tags like <h1> */
128
- /**
129
- * @mixin screen-min-max
130
- * @param $data an object like (min:"sm", max:"lg") or (min: "sm")
131
- */
132
110
  .db-button {
133
111
  border: var(--db-border-width-3xs) solid var(--db-adaptive-on-bg-basic-emphasis-100-default);
134
112
  }
@@ -154,118 +132,303 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
154
132
  display: inline-flex;
155
133
  }
156
134
 
157
- .db-button {
158
- max-inline-size: 100%;
159
- color: var(--db-adaptive-on-bg-basic-emphasis-100-default);
160
- min-block-size: var(--db-sizing-md);
161
- block-size: max-content;
162
- inline-size: fit-content;
163
- padding: var(--db-spacing-fixed-2xs) var(--db-spacing-fixed-md);
164
- text-decoration: none;
165
- }
166
- .db-button[data-no-text=true] {
167
- font-size: 0 !important;
168
- /* stylelint-disable-next-line at-rule-empty-line-before */
169
- padding: 0;
170
- aspect-ratio: 1;
171
- inline-size: var(--db-sizing-md);
172
- }
173
- .db-button[data-no-text=true]::before {
174
- --db-icon-margin-end: 0;
135
+ .db-button[data-variant=outlined], .db-button:not([data-variant]), .db-button[data-variant=""], .db-button[data-variant=ghost] {
136
+ background-color: var(--db-adaptive-bg-basic-transparent-full-default);
137
+ /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
175
138
  }
176
- .db-button[data-no-text=true]::before {
177
- margin: auto;
139
+ .db-button[data-variant=outlined]:hover:not(:disabled,
140
+ [aria-disabled=true],
141
+ [tabindex="-1"],
142
+ :has(:disabled)), .db-button:hover:not(:disabled,
143
+ [aria-disabled=true],
144
+ [tabindex="-1"],
145
+ :has(:disabled)):not([data-variant]), .db-button[data-variant=""]:hover:not(:disabled,
146
+ [aria-disabled=true],
147
+ [tabindex="-1"],
148
+ :has(:disabled)), .db-button[data-variant=ghost]:hover:not(:disabled,
149
+ [aria-disabled=true],
150
+ [tabindex="-1"],
151
+ :has(:disabled)) {
152
+ cursor: var(--db-overwrite-cursor, pointer);
153
+ background-color: var(--db-adaptive-bg-basic-transparent-full-hovered);
178
154
  }
179
- .db-button[data-size=small] {
180
- font-weight: 700;
181
- min-block-size: var(--db-sizing-sm);
155
+ .db-button[data-variant=outlined]:hover:not(:disabled,
156
+ [aria-disabled=true],
157
+ [tabindex="-1"],
158
+ :has(:disabled)):is(textarea), .db-button:hover:not(:disabled,
159
+ [aria-disabled=true],
160
+ [tabindex="-1"],
161
+ :has(:disabled)):is(textarea):not([data-variant]), .db-button[data-variant=""]:hover:not(:disabled,
162
+ [aria-disabled=true],
163
+ [tabindex="-1"],
164
+ :has(:disabled)):is(textarea), .db-button[data-variant=ghost]:hover:not(:disabled,
165
+ [aria-disabled=true],
166
+ [tabindex="-1"],
167
+ :has(:disabled)):is(textarea), .db-button[data-variant=outlined]:hover:not(:disabled,
168
+ [aria-disabled=true],
169
+ [tabindex="-1"],
170
+ :has(:disabled)):is(input), .db-button:hover:not(:disabled,
171
+ [aria-disabled=true],
172
+ [tabindex="-1"],
173
+ :has(:disabled)):is(input):not([data-variant]), .db-button[data-variant=""]:hover:not(:disabled,
174
+ [aria-disabled=true],
175
+ [tabindex="-1"],
176
+ :has(:disabled)):is(input), .db-button[data-variant=ghost]:hover:not(:disabled,
177
+ [aria-disabled=true],
178
+ [tabindex="-1"],
179
+ :has(:disabled)):is(input) {
180
+ cursor: initial;
182
181
  }
183
- .db-button[data-size=small]:not([data-no-text=true]) {
184
- padding: 1px var(--db-spacing-fixed-sm);
182
+ .db-button[data-variant=outlined]:hover:not(:disabled,
183
+ [aria-disabled=true],
184
+ [tabindex="-1"],
185
+ :has(:disabled)):is(input[type=checkbox]), .db-button:hover:not(:disabled,
186
+ [aria-disabled=true],
187
+ [tabindex="-1"],
188
+ :has(:disabled)):is(input[type=checkbox]):not([data-variant]), .db-button[data-variant=""]:hover:not(:disabled,
189
+ [aria-disabled=true],
190
+ [tabindex="-1"],
191
+ :has(:disabled)):is(input[type=checkbox]), .db-button[data-variant=ghost]:hover:not(:disabled,
192
+ [aria-disabled=true],
193
+ [tabindex="-1"],
194
+ :has(:disabled)):is(input[type=checkbox]), .db-button[data-variant=outlined]:hover:not(:disabled,
195
+ [aria-disabled=true],
196
+ [tabindex="-1"],
197
+ :has(:disabled)):is(input[type=radio]:not(:checked)), .db-button:hover:not(:disabled,
198
+ [aria-disabled=true],
199
+ [tabindex="-1"],
200
+ :has(:disabled)):is(input[type=radio]:not(:checked)):not([data-variant]), .db-button[data-variant=""]:hover:not(:disabled,
201
+ [aria-disabled=true],
202
+ [tabindex="-1"],
203
+ :has(:disabled)):is(input[type=radio]:not(:checked)), .db-button[data-variant=ghost]:hover:not(:disabled,
204
+ [aria-disabled=true],
205
+ [tabindex="-1"],
206
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
207
+ cursor: pointer;
185
208
  }
186
- .db-button[data-size=small]:not([data-no-text=true])::before {
187
- margin-inline-end: var(--db-spacing-fixed-2xs);
209
+ .db-button[data-variant=outlined]:active:not(:disabled,
210
+ [aria-disabled=true],
211
+ [tabindex="-1"],
212
+ :has(:disabled)), .db-button:active:not(:disabled,
213
+ [aria-disabled=true],
214
+ [tabindex="-1"],
215
+ :has(:disabled)):not([data-variant]), .db-button[data-variant=""]:active:not(:disabled,
216
+ [aria-disabled=true],
217
+ [tabindex="-1"],
218
+ :has(:disabled)), .db-button[data-variant=ghost]:active:not(:disabled,
219
+ [aria-disabled=true],
220
+ [tabindex="-1"],
221
+ :has(:disabled)) {
222
+ cursor: var(--db-overwrite-cursor, pointer);
223
+ background-color: var(--db-adaptive-bg-basic-transparent-full-pressed);
188
224
  }
189
- .db-button[data-size=small][data-no-text=true] {
190
- inline-size: var(--db-sizing-sm);
225
+ .db-button[data-variant=outlined]:active:not(:disabled,
226
+ [aria-disabled=true],
227
+ [tabindex="-1"],
228
+ :has(:disabled)):is(textarea), .db-button:active:not(:disabled,
229
+ [aria-disabled=true],
230
+ [tabindex="-1"],
231
+ :has(:disabled)):is(textarea):not([data-variant]), .db-button[data-variant=""]:active:not(:disabled,
232
+ [aria-disabled=true],
233
+ [tabindex="-1"],
234
+ :has(:disabled)):is(textarea), .db-button[data-variant=ghost]:active:not(:disabled,
235
+ [aria-disabled=true],
236
+ [tabindex="-1"],
237
+ :has(:disabled)):is(textarea), .db-button[data-variant=outlined]:active:not(:disabled,
238
+ [aria-disabled=true],
239
+ [tabindex="-1"],
240
+ :has(:disabled)):is(input), .db-button:active:not(:disabled,
241
+ [aria-disabled=true],
242
+ [tabindex="-1"],
243
+ :has(:disabled)):is(input):not([data-variant]), .db-button[data-variant=""]:active:not(:disabled,
244
+ [aria-disabled=true],
245
+ [tabindex="-1"],
246
+ :has(:disabled)):is(input), .db-button[data-variant=ghost]:active:not(:disabled,
247
+ [aria-disabled=true],
248
+ [tabindex="-1"],
249
+ :has(:disabled)):is(input) {
250
+ cursor: initial;
191
251
  }
192
- .db-button[data-width=full] {
193
- inline-size: 100%;
252
+ .db-button[data-variant=outlined]:active:not(:disabled,
253
+ [aria-disabled=true],
254
+ [tabindex="-1"],
255
+ :has(:disabled)):is(input[type=checkbox]), .db-button:active:not(:disabled,
256
+ [aria-disabled=true],
257
+ [tabindex="-1"],
258
+ :has(:disabled)):is(input[type=checkbox]):not([data-variant]), .db-button[data-variant=""]:active:not(:disabled,
259
+ [aria-disabled=true],
260
+ [tabindex="-1"],
261
+ :has(:disabled)):is(input[type=checkbox]), .db-button[data-variant=ghost]:active:not(:disabled,
262
+ [aria-disabled=true],
263
+ [tabindex="-1"],
264
+ :has(:disabled)):is(input[type=checkbox]), .db-button[data-variant=outlined]:active:not(:disabled,
265
+ [aria-disabled=true],
266
+ [tabindex="-1"],
267
+ :has(:disabled)):is(input[type=radio]:not(:checked)), .db-button:active:not(:disabled,
268
+ [aria-disabled=true],
269
+ [tabindex="-1"],
270
+ :has(:disabled)):is(input[type=radio]:not(:checked)):not([data-variant]), .db-button[data-variant=""]:active:not(:disabled,
271
+ [aria-disabled=true],
272
+ [tabindex="-1"],
273
+ :has(:disabled)):is(input[type=radio]:not(:checked)), .db-button[data-variant=ghost]:active:not(:disabled,
274
+ [aria-disabled=true],
275
+ [tabindex="-1"],
276
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
277
+ cursor: pointer;
194
278
  }
279
+
195
280
  .db-button[data-variant=brand] {
196
281
  background-color: var(--db-brand-origin-default);
197
282
  color: var(--db-brand-on-origin-default);
198
283
  border-color: var(--db-brand-on-bg-basic-emphasis-70-default);
199
284
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
200
285
  }
201
- .db-button[data-variant=brand]:hover:not(:disabled, [aria-disabled=true]) {
286
+ .db-button[data-variant=brand]:hover:not(:disabled,
287
+ [aria-disabled=true],
288
+ [tabindex="-1"],
289
+ :has(:disabled)) {
202
290
  cursor: var(--db-overwrite-cursor, pointer);
203
291
  background-color: var(--db-brand-origin-hovered);
204
292
  border-color: var(--db-brand-on-bg-basic-emphasis-70-default);
205
293
  }
206
- .db-button[data-variant=brand]:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-button[data-variant=brand]:hover:not(:disabled, [aria-disabled=true]):is(input) {
294
+ .db-button[data-variant=brand]:hover:not(:disabled,
295
+ [aria-disabled=true],
296
+ [tabindex="-1"],
297
+ :has(:disabled)):is(textarea), .db-button[data-variant=brand]:hover:not(:disabled,
298
+ [aria-disabled=true],
299
+ [tabindex="-1"],
300
+ :has(:disabled)):is(input) {
207
301
  cursor: initial;
208
302
  }
209
- .db-button[data-variant=brand]:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-button[data-variant=brand]:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
303
+ .db-button[data-variant=brand]:hover:not(:disabled,
304
+ [aria-disabled=true],
305
+ [tabindex="-1"],
306
+ :has(:disabled)):is(input[type=checkbox]), .db-button[data-variant=brand]:hover:not(:disabled,
307
+ [aria-disabled=true],
308
+ [tabindex="-1"],
309
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
210
310
  cursor: pointer;
211
311
  }
212
- .db-button[data-variant=brand]:active:not(:disabled, [aria-disabled=true]) {
312
+ .db-button[data-variant=brand]:active:not(:disabled,
313
+ [aria-disabled=true],
314
+ [tabindex="-1"],
315
+ :has(:disabled)) {
213
316
  cursor: var(--db-overwrite-cursor, pointer);
214
317
  background-color: var(--db-brand-origin-pressed);
215
318
  border-color: var(--db-brand-on-bg-basic-emphasis-70-default);
216
319
  }
217
- .db-button[data-variant=brand]:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-button[data-variant=brand]:active:not(:disabled, [aria-disabled=true]):is(input) {
320
+ .db-button[data-variant=brand]:active:not(:disabled,
321
+ [aria-disabled=true],
322
+ [tabindex="-1"],
323
+ :has(:disabled)):is(textarea), .db-button[data-variant=brand]:active:not(:disabled,
324
+ [aria-disabled=true],
325
+ [tabindex="-1"],
326
+ :has(:disabled)):is(input) {
218
327
  cursor: initial;
219
328
  }
220
- .db-button[data-variant=brand]:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-button[data-variant=brand]:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
329
+ .db-button[data-variant=brand]:active:not(:disabled,
330
+ [aria-disabled=true],
331
+ [tabindex="-1"],
332
+ :has(:disabled)):is(input[type=checkbox]), .db-button[data-variant=brand]:active:not(:disabled,
333
+ [aria-disabled=true],
334
+ [tabindex="-1"],
335
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
221
336
  cursor: pointer;
222
337
  }
223
- .db-button[data-variant=outlined], .db-button:not([data-variant]), .db-button[data-variant=""], .db-button[data-variant=ghost] {
224
- background-color: var(--db-adaptive-bg-basic-transparent-full-default);
225
- /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
338
+
339
+ .db-button {
340
+ max-inline-size: 100%;
341
+ color: var(--db-adaptive-on-bg-basic-emphasis-100-default);
342
+ min-block-size: var(--db-sizing-md);
343
+ block-size: max-content;
344
+ inline-size: fit-content;
345
+ padding: var(--db-spacing-fixed-2xs) var(--db-spacing-fixed-md);
346
+ text-decoration: none;
226
347
  }
227
- .db-button[data-variant=outlined]:hover:not(:disabled, [aria-disabled=true]), .db-button:not([data-variant]):hover:not(:disabled, [aria-disabled=true]), .db-button[data-variant=""]:hover:not(:disabled, [aria-disabled=true]), .db-button[data-variant=ghost]:hover:not(:disabled, [aria-disabled=true]) {
228
- cursor: var(--db-overwrite-cursor, pointer);
229
- background-color: var(--db-adaptive-bg-basic-transparent-full-hovered);
348
+ .db-button[data-no-text=true] {
349
+ padding: 0;
350
+ aspect-ratio: 1;
351
+ inline-size: var(--db-sizing-md);
352
+ font-size: 0 !important;
353
+ /* stylelint-disable-next-line at-rule-empty-line-before */
230
354
  }
231
- .db-button[data-variant=outlined]:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-button[data-variant=outlined]:hover:not(:disabled, [aria-disabled=true]):is(input), .db-button:not([data-variant]):hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-button:not([data-variant]):hover:not(:disabled, [aria-disabled=true]):is(input), .db-button[data-variant=""]:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-button[data-variant=""]:hover:not(:disabled, [aria-disabled=true]):is(input), .db-button[data-variant=ghost]:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-button[data-variant=ghost]:hover:not(:disabled, [aria-disabled=true]):is(input) {
232
- cursor: initial;
355
+ .db-button[data-no-text=true]::before {
356
+ --db-icon-margin-end: 0;
233
357
  }
234
- .db-button[data-variant=outlined]:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-button[data-variant=outlined]:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)), .db-button:not([data-variant]):hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-button:not([data-variant]):hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)), .db-button[data-variant=""]:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-button[data-variant=""]:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)), .db-button[data-variant=ghost]:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-button[data-variant=ghost]:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
235
- cursor: pointer;
358
+ .db-button[data-no-text=true]::before {
359
+ margin: auto;
236
360
  }
237
- .db-button[data-variant=outlined]:active:not(:disabled, [aria-disabled=true]), .db-button:not([data-variant]):active:not(:disabled, [aria-disabled=true]), .db-button[data-variant=""]:active:not(:disabled, [aria-disabled=true]), .db-button[data-variant=ghost]:active:not(:disabled, [aria-disabled=true]) {
238
- cursor: var(--db-overwrite-cursor, pointer);
239
- background-color: var(--db-adaptive-bg-basic-transparent-full-pressed);
361
+ .db-button[data-wrap=false] {
362
+ white-space: nowrap;
240
363
  }
241
- .db-button[data-variant=outlined]:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-button[data-variant=outlined]:active:not(:disabled, [aria-disabled=true]):is(input), .db-button:not([data-variant]):active:not(:disabled, [aria-disabled=true]):is(textarea), .db-button:not([data-variant]):active:not(:disabled, [aria-disabled=true]):is(input), .db-button[data-variant=""]:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-button[data-variant=""]:active:not(:disabled, [aria-disabled=true]):is(input), .db-button[data-variant=ghost]:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-button[data-variant=ghost]:active:not(:disabled, [aria-disabled=true]):is(input) {
242
- cursor: initial;
364
+ .db-button[data-size=small] {
365
+ font-weight: 700;
366
+ min-block-size: var(--db-sizing-sm);
243
367
  }
244
- .db-button[data-variant=outlined]:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-button[data-variant=outlined]:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)), .db-button:not([data-variant]):active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-button:not([data-variant]):active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)), .db-button[data-variant=""]:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-button[data-variant=""]:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)), .db-button[data-variant=ghost]:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-button[data-variant=ghost]:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
245
- cursor: pointer;
368
+ .db-button[data-size=small]:not([data-no-text=true]) {
369
+ padding: 1px var(--db-spacing-fixed-sm);
370
+ }
371
+ .db-button[data-size=small]:not([data-no-text=true])::before {
372
+ margin-inline-end: var(--db-spacing-fixed-2xs);
373
+ }
374
+ .db-button[data-size=small][data-no-text=true] {
375
+ inline-size: var(--db-sizing-sm);
376
+ }
377
+ .db-button[data-width=full] {
378
+ inline-size: 100%;
246
379
  }
247
380
  .db-button[data-variant=filled] {
248
381
  background-color: var(--db-adaptive-bg-basic-transparent-semi-default);
249
382
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
250
383
  }
251
- .db-button[data-variant=filled]:hover:not(:disabled, [aria-disabled=true]) {
384
+ .db-button[data-variant=filled]:hover:not(:disabled,
385
+ [aria-disabled=true],
386
+ [tabindex="-1"],
387
+ :has(:disabled)) {
252
388
  cursor: var(--db-overwrite-cursor, pointer);
253
389
  background-color: var(--db-adaptive-bg-basic-transparent-semi-hovered);
254
390
  }
255
- .db-button[data-variant=filled]:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-button[data-variant=filled]:hover:not(:disabled, [aria-disabled=true]):is(input) {
391
+ .db-button[data-variant=filled]:hover:not(:disabled,
392
+ [aria-disabled=true],
393
+ [tabindex="-1"],
394
+ :has(:disabled)):is(textarea), .db-button[data-variant=filled]:hover:not(:disabled,
395
+ [aria-disabled=true],
396
+ [tabindex="-1"],
397
+ :has(:disabled)):is(input) {
256
398
  cursor: initial;
257
399
  }
258
- .db-button[data-variant=filled]:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-button[data-variant=filled]:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
400
+ .db-button[data-variant=filled]:hover:not(:disabled,
401
+ [aria-disabled=true],
402
+ [tabindex="-1"],
403
+ :has(:disabled)):is(input[type=checkbox]), .db-button[data-variant=filled]:hover:not(:disabled,
404
+ [aria-disabled=true],
405
+ [tabindex="-1"],
406
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
259
407
  cursor: pointer;
260
408
  }
261
- .db-button[data-variant=filled]:active:not(:disabled, [aria-disabled=true]) {
409
+ .db-button[data-variant=filled]:active:not(:disabled,
410
+ [aria-disabled=true],
411
+ [tabindex="-1"],
412
+ :has(:disabled)) {
262
413
  cursor: var(--db-overwrite-cursor, pointer);
263
414
  background-color: var(--db-adaptive-bg-basic-transparent-semi-pressed);
264
415
  }
265
- .db-button[data-variant=filled]:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-button[data-variant=filled]:active:not(:disabled, [aria-disabled=true]):is(input) {
416
+ .db-button[data-variant=filled]:active:not(:disabled,
417
+ [aria-disabled=true],
418
+ [tabindex="-1"],
419
+ :has(:disabled)):is(textarea), .db-button[data-variant=filled]:active:not(:disabled,
420
+ [aria-disabled=true],
421
+ [tabindex="-1"],
422
+ :has(:disabled)):is(input) {
266
423
  cursor: initial;
267
424
  }
268
- .db-button[data-variant=filled]:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-button[data-variant=filled]:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
425
+ .db-button[data-variant=filled]:active:not(:disabled,
426
+ [aria-disabled=true],
427
+ [tabindex="-1"],
428
+ :has(:disabled)):is(input[type=checkbox]), .db-button[data-variant=filled]:active:not(:disabled,
429
+ [aria-disabled=true],
430
+ [tabindex="-1"],
431
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
269
432
  cursor: pointer;
270
433
  }
271
434
  .db-button:is(:disabled, [aria-disabled=true]) {
@@ -1,113 +1,9 @@
1
- @charset "utf-8";
2
- @use "@db-ux/core-foundations/build/styles/fonts";
3
1
  @use "@db-ux/core-foundations/build/styles/variables";
4
- @use "@db-ux/core-foundations/build/styles/colors";
5
- @use "@db-ux/core-foundations/build/styles/icons";
6
- @use "@db-ux/core-foundations/build/styles/helpers";
7
- @use "../../styles/internal/component";
8
2
  @use "../../styles/internal/button-components";
9
3
 
10
4
  // generic styles can be found in _button-components.scss
11
5
  .db-button {
12
- @extend %default-interactive-component;
13
- @extend %default-button;
14
- @extend %db-overwrite-font-size-md;
15
-
16
- max-inline-size: 100%;
17
- color: colors.$db-adaptive-on-bg-basic-emphasis-100-default;
18
- min-block-size: variables.$db-sizing-md;
19
- block-size: max-content;
20
- inline-size: fit-content;
21
- padding: variables.$db-spacing-fixed-2xs variables.$db-spacing-fixed-md;
22
-
23
- // disable text-decoration if someone wants to use the button for an <a> tag
24
- text-decoration: none;
25
-
26
- // Square icon only buttons
27
- &[data-no-text="true"] {
28
- @include icons.is-icon-text-replace;
29
-
30
- padding: 0;
31
- aspect-ratio: 1;
32
- inline-size: variables.$db-sizing-md;
33
-
34
- &::before {
35
- margin: auto;
36
- }
37
- }
38
-
39
- &[data-size="small"] {
40
- @extend %db-overwrite-font-size-sm;
41
-
42
- font-weight: 700;
43
- min-block-size: variables.$db-sizing-sm;
44
-
45
- &:not([data-no-text="true"]) {
46
- // stylelint-disable-next-line db-ux/use-spacings
47
- padding: 1px variables.$db-spacing-fixed-sm;
48
-
49
- &::before {
50
- margin-inline-end: variables.$db-spacing-fixed-2xs;
51
- }
52
- }
53
-
54
- // Square icon only buttons
55
- &[data-no-text="true"] {
56
- inline-size: variables.$db-sizing-sm;
57
- }
58
- }
59
-
60
- &[data-width="full"] {
61
- inline-size: 100%;
62
- }
63
-
64
- &[data-variant="brand"] {
65
- background-color: colors.$db-brand-origin-default;
66
- color: colors.$db-brand-on-origin-default;
67
- border-color: colors.$db-brand-on-bg-basic-emphasis-70-default;
68
-
69
- @include helpers.hover {
70
- background-color: colors.$db-brand-origin-hovered;
71
- border-color: colors.$db-brand-on-bg-basic-emphasis-70-default;
72
- }
73
-
74
- @include helpers.active {
75
- background-color: colors.$db-brand-origin-pressed;
76
- border-color: colors.$db-brand-on-bg-basic-emphasis-70-default;
77
- }
78
- }
79
-
80
- &[data-variant="filled"],
81
- &[data-variant="ghost"] {
82
- @extend %transparent-border;
83
- }
84
-
85
- &[data-variant="outlined"],
86
- &:not([data-variant]),
87
- &[data-variant=""],
88
- &[data-variant="ghost"] {
89
- background-color: colors.$db-adaptive-bg-basic-transparent-full-default;
90
-
91
- @include helpers.hover {
92
- background-color: colors.$db-adaptive-bg-basic-transparent-full-hovered;
93
- }
94
-
95
- @include helpers.active {
96
- background-color: colors.$db-adaptive-bg-basic-transparent-full-pressed;
97
- }
98
- }
99
-
100
- &[data-variant="filled"] {
101
- background-color: colors.$db-adaptive-bg-basic-transparent-semi-default;
102
-
103
- @include helpers.hover {
104
- background-color: colors.$db-adaptive-bg-basic-transparent-semi-hovered;
105
- }
106
-
107
- @include helpers.active {
108
- background-color: colors.$db-adaptive-bg-basic-transparent-semi-pressed;
109
- }
110
- }
6
+ @include button-components.set-basic-button;
111
7
 
112
8
  &:is(:disabled, [aria-disabled="true"]) {
113
9
  opacity: variables.$db-opacity-md;