@digiko-npm/designsystem 0.7.2 → 0.8.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 (58) hide show
  1. package/dist/designsystem.css +6682 -4515
  2. package/dist/designsystem.min.css +2 -2
  3. package/package.json +18 -3
  4. package/src/components/accordion.css +129 -128
  5. package/src/components/alert.css +137 -134
  6. package/src/components/avatar.css +77 -77
  7. package/src/components/badge.css +52 -52
  8. package/src/components/bottom-nav.css +71 -71
  9. package/src/components/bottom-sheet.css +146 -0
  10. package/src/components/breadcrumb.css +61 -61
  11. package/src/components/button.css +162 -154
  12. package/src/components/card.css +94 -72
  13. package/src/components/chip.css +38 -38
  14. package/src/components/collapsible.css +96 -100
  15. package/src/components/color-picker.css +82 -0
  16. package/src/components/combobox.css +418 -0
  17. package/src/components/command.css +141 -140
  18. package/src/components/copy-button.css +106 -0
  19. package/src/components/datepicker.css +257 -251
  20. package/src/components/description-list.css +89 -87
  21. package/src/components/divider.css +45 -45
  22. package/src/components/drawer.css +185 -174
  23. package/src/components/drop-zone.css +85 -84
  24. package/src/components/dropdown.css +148 -140
  25. package/src/components/empty-state.css +50 -50
  26. package/src/components/field.css +35 -0
  27. package/src/components/gallery.css +257 -0
  28. package/src/components/icon-btn.css +2 -1
  29. package/src/components/index.css +14 -3
  30. package/src/components/input.css +205 -146
  31. package/src/components/kbd.css +10 -10
  32. package/src/components/modal.css +92 -90
  33. package/src/components/nav.css +140 -138
  34. package/src/components/number-input.css +163 -0
  35. package/src/components/pagination.css +152 -139
  36. package/src/components/pin-input.css +136 -0
  37. package/src/components/popover.css +72 -72
  38. package/src/components/progress.css +128 -129
  39. package/src/components/result.css +53 -57
  40. package/src/components/scroll-area.css +73 -0
  41. package/src/components/search.css +10 -4
  42. package/src/components/segmented-control.css +93 -0
  43. package/src/components/skeleton.css +58 -58
  44. package/src/components/slider.css +102 -100
  45. package/src/components/sortable.css +44 -45
  46. package/src/components/spinner.css +27 -27
  47. package/src/components/star-rating.css +121 -0
  48. package/src/components/stat-card.css +38 -25
  49. package/src/components/table.css +288 -3
  50. package/src/components/tabs.css +121 -121
  51. package/src/components/tag.css +124 -124
  52. package/src/components/timeline.css +99 -99
  53. package/src/components/toast.css +37 -38
  54. package/src/components/toggle.css +88 -88
  55. package/src/components/toolbar.css +137 -121
  56. package/src/components/tooltip.css +150 -150
  57. package/src/components/truncated-text.css +75 -0
  58. package/src/tokens/tokens.json +413 -0
@@ -37,66 +37,66 @@
37
37
  list-style: none;
38
38
  margin: 0;
39
39
  padding: 0;
40
- }
41
-
42
- /* ---------------------------------------------------------------------------
43
- Item
44
- --------------------------------------------------------------------------- */
45
-
46
- .ds-breadcrumb__item {
47
- display: flex;
48
- align-items: center;
49
- gap: var(--ds-space-1);
50
- }
51
-
52
- /* Separator — rendered via ::after on every item except the last */
53
- .ds-breadcrumb__item:not(:last-child)::after {
54
- content: "/";
55
- color: var(--ds-color-text-tertiary);
56
- flex-shrink: 0;
57
- user-select: none;
58
- pointer-events: none;
59
- }
60
-
61
- /* ---------------------------------------------------------------------------
62
- Link
63
- --------------------------------------------------------------------------- */
64
-
65
- .ds-breadcrumb__link {
66
- color: var(--ds-color-text-tertiary);
67
- text-decoration: none;
68
- transition: color var(--ds-duration-fast) var(--ds-ease-out);
69
- }
70
-
71
- .ds-breadcrumb__link:hover {
72
- color: var(--ds-color-text-secondary);
73
- }
74
-
75
- .ds-breadcrumb__link:focus-visible {
76
- outline: none;
77
- box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
78
- border-radius: var(--ds-radius-sm);
79
- scroll-margin-block: var(--ds-space-16, 4rem);
80
- }
81
-
82
- /* ---------------------------------------------------------------------------
83
- Current page (non-interactive)
84
- --------------------------------------------------------------------------- */
85
-
86
- .ds-breadcrumb__current {
87
- color: var(--ds-color-text);
88
- font-weight: var(--ds-weight-medium);
89
- }
90
-
91
- /* ---------------------------------------------------------------------------
92
- Modifier: Compact
93
- --------------------------------------------------------------------------- */
94
-
95
- .ds-breadcrumb--compact {
96
- gap: var(--ds-space-0-5, 0.125rem);
97
- font-size: var(--ds-text-xs);
98
- }
99
40
 
100
- .ds-breadcrumb--compact .ds-breadcrumb__item {
101
- gap: var(--ds-space-0-5, 0.125rem);
41
+ /* ---------------------------------------------------------------------------
42
+ Item
43
+ --------------------------------------------------------------------------- */
44
+
45
+ &__item {
46
+ display: flex;
47
+ align-items: center;
48
+ gap: var(--ds-space-1);
49
+
50
+ /* Separator — rendered via ::after on every item except the last */
51
+ &:not(:last-child)::after {
52
+ content: "/";
53
+ color: var(--ds-color-text-tertiary);
54
+ flex-shrink: 0;
55
+ user-select: none;
56
+ pointer-events: none;
57
+ }
58
+ }
59
+
60
+ /* ---------------------------------------------------------------------------
61
+ Link
62
+ --------------------------------------------------------------------------- */
63
+
64
+ &__link {
65
+ color: var(--ds-color-text-tertiary);
66
+ text-decoration: none;
67
+ transition: color var(--ds-duration-fast) var(--ds-ease-out);
68
+
69
+ &:hover {
70
+ color: var(--ds-color-text-secondary);
71
+ }
72
+
73
+ &:focus-visible {
74
+ outline: none;
75
+ box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
76
+ border-radius: var(--ds-radius-sm);
77
+ scroll-margin-block: var(--ds-space-16, 4rem);
78
+ }
79
+ }
80
+
81
+ /* ---------------------------------------------------------------------------
82
+ Current page (non-interactive)
83
+ --------------------------------------------------------------------------- */
84
+
85
+ &__current {
86
+ color: var(--ds-color-text);
87
+ font-weight: var(--ds-weight-medium);
88
+ }
89
+
90
+ /* ---------------------------------------------------------------------------
91
+ Modifier: Compact
92
+ --------------------------------------------------------------------------- */
93
+
94
+ &--compact {
95
+ gap: var(--ds-space-0-5, 0.125rem);
96
+ font-size: var(--ds-text-xs);
97
+
98
+ & .ds-breadcrumb__item {
99
+ gap: var(--ds-space-0-5, 0.125rem);
100
+ }
101
+ }
102
102
  }
@@ -30,167 +30,175 @@
30
30
  /* Default: inverted (dark bg in light mode, light bg in dark mode) */
31
31
  background-color: var(--ds-color-inverted);
32
32
  color: var(--ds-color-on-inverted);
33
- }
34
-
35
- .ds-btn:hover {
36
- opacity: 0.9;
37
- }
38
-
39
- .ds-btn:focus-visible {
40
- outline: none;
41
- box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
42
- scroll-margin-block: var(--ds-space-16, 4rem);
43
- }
44
-
45
- .ds-btn:disabled,
46
- .ds-btn[aria-disabled="true"] {
47
- opacity: var(--ds-opacity-disabled);
48
- cursor: not-allowed;
49
- pointer-events: none;
50
- }
51
-
52
- /* --- Variants --- */
53
-
54
- .ds-btn--secondary {
55
- background-color: var(--ds-color-bg-elevated);
56
- color: var(--ds-color-text);
57
- border-color: var(--ds-color-border);
58
- }
59
- .ds-btn--secondary:hover {
60
- border-color: var(--ds-color-border-hover);
61
- background-color: var(--ds-color-surface);
62
- opacity: 1;
63
- }
64
-
65
- .ds-btn--outline {
66
- background-color: transparent;
67
- color: var(--ds-color-text-secondary);
68
- border-color: var(--ds-color-border);
69
- }
70
- .ds-btn--outline:hover {
71
- color: var(--ds-color-text);
72
- border-color: var(--ds-color-border-hover);
73
- opacity: 1;
74
- }
75
-
76
- .ds-btn--ghost {
77
- background-color: transparent;
78
- color: var(--ds-color-text-secondary);
79
- }
80
- .ds-btn--ghost:hover {
81
- color: var(--ds-color-text);
82
- background-color: var(--ds-color-bg-elevated);
83
- opacity: 1;
84
- }
85
-
86
- .ds-btn--danger {
87
- background-color: var(--ds-color-error-subtle);
88
- color: var(--ds-color-error);
89
- border-color: var(--ds-color-error-border);
90
- }
91
- .ds-btn--danger:hover {
92
- background-color: var(--ds-color-error);
93
- color: var(--ds-color-on-inverted);
94
- opacity: 1;
95
- }
96
-
97
- .ds-btn--success {
98
- background-color: var(--ds-color-success-subtle);
99
- color: var(--ds-color-success);
100
- border-color: var(--ds-color-success-border);
101
- }
102
- .ds-btn--success:hover {
103
- background-color: var(--ds-color-success);
104
- color: var(--ds-color-on-inverted);
105
- opacity: 1;
106
- }
107
-
108
- /* --- Sizes --- */
109
33
 
110
- .ds-btn--xs {
111
- height: var(--ds-size-1);
112
- padding: 0 var(--ds-space-2);
113
- font-size: var(--ds-text-xs);
114
- gap: var(--ds-space-1);
115
- border-radius: var(--ds-radius-md);
116
- }
117
-
118
- .ds-btn--sm {
119
- height: var(--ds-size-2);
120
- padding: 0 var(--ds-space-3);
121
- font-size: var(--ds-text-sm);
122
- gap: var(--ds-space-1-5);
123
- border-radius: var(--ds-radius-md);
124
- }
125
-
126
- .ds-btn--lg {
127
- height: var(--ds-size-4);
128
- padding: 0 var(--ds-space-6);
129
- font-size: var(--ds-text-base);
130
- border-radius: var(--ds-radius-lg);
131
- }
132
-
133
- /* --- Pill (rounded-full, like hero CTAs) --- */
134
- .ds-btn--pill {
135
- border-radius: var(--ds-radius-full);
136
- padding: 0 var(--ds-space-6);
137
- }
138
-
139
- .ds-btn--pill.ds-btn--xs {
140
- padding: 0 var(--ds-space-3);
141
- }
142
-
143
- .ds-btn--pill.ds-btn--sm {
144
- padding: 0 var(--ds-space-5);
145
- }
146
-
147
- /* --- Full Width --- */
148
- .ds-btn--full { width: 100%; }
149
-
150
- /* --- Icon Only --- */
151
- .ds-btn--icon {
152
- padding: 0;
153
- width: var(--ds-size-3);
154
- height: var(--ds-size-3);
155
- border-radius: var(--ds-radius-md);
156
- }
157
-
158
- .ds-btn--icon.ds-btn--xs {
159
- width: var(--ds-size-1);
160
- height: var(--ds-size-1);
161
- }
162
-
163
- .ds-btn--icon.ds-btn--sm {
164
- width: var(--ds-size-2);
165
- height: var(--ds-size-2);
34
+ &:hover {
35
+ opacity: 0.9;
36
+ }
37
+
38
+ &:focus-visible {
39
+ outline: none;
40
+ box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
41
+ scroll-margin-block: var(--ds-space-16, 4rem);
42
+ }
43
+
44
+ &:disabled,
45
+ &[aria-disabled="true"] {
46
+ opacity: var(--ds-opacity-disabled);
47
+ cursor: not-allowed;
48
+ pointer-events: none;
49
+ }
50
+
51
+ /* --- Variants --- */
52
+
53
+ &--secondary {
54
+ background-color: var(--ds-color-bg-elevated);
55
+ color: var(--ds-color-text);
56
+ border-color: var(--ds-color-border);
57
+
58
+ &:hover {
59
+ border-color: var(--ds-color-border-hover);
60
+ background-color: var(--ds-color-surface);
61
+ opacity: 1;
62
+ }
63
+ }
64
+
65
+ &--outline {
66
+ background-color: transparent;
67
+ color: var(--ds-color-text-secondary);
68
+ border-color: var(--ds-color-border);
69
+
70
+ &:hover {
71
+ color: var(--ds-color-text);
72
+ border-color: var(--ds-color-border-hover);
73
+ opacity: 1;
74
+ }
75
+ }
76
+
77
+ &--ghost {
78
+ background-color: transparent;
79
+ color: var(--ds-color-text-secondary);
80
+
81
+ &:hover {
82
+ color: var(--ds-color-text);
83
+ background-color: var(--ds-color-bg-elevated);
84
+ opacity: 1;
85
+ }
86
+ }
87
+
88
+ &--danger {
89
+ background-color: var(--ds-color-error-subtle);
90
+ color: var(--ds-color-error);
91
+ border-color: var(--ds-color-error-border);
92
+
93
+ &:hover {
94
+ background-color: var(--ds-color-error);
95
+ color: var(--ds-color-on-inverted);
96
+ opacity: 1;
97
+ }
98
+ }
99
+
100
+ &--success {
101
+ background-color: var(--ds-color-success-subtle);
102
+ color: var(--ds-color-success);
103
+ border-color: var(--ds-color-success-border);
104
+
105
+ &:hover {
106
+ background-color: var(--ds-color-success);
107
+ color: var(--ds-color-on-inverted);
108
+ opacity: 1;
109
+ }
110
+ }
111
+
112
+ /* --- Sizes --- */
113
+
114
+ &--xs {
115
+ height: var(--ds-size-1);
116
+ padding: 0 var(--ds-space-2);
117
+ font-size: var(--ds-text-xs);
118
+ gap: var(--ds-space-1);
119
+ border-radius: var(--ds-radius-md);
120
+ }
121
+
122
+ &--sm {
123
+ height: var(--ds-size-2);
124
+ padding: 0 var(--ds-space-3);
125
+ font-size: var(--ds-text-sm);
126
+ gap: var(--ds-space-1-5);
127
+ border-radius: var(--ds-radius-md);
128
+ }
129
+
130
+ &--lg {
131
+ height: var(--ds-size-4);
132
+ padding: 0 var(--ds-space-6);
133
+ font-size: var(--ds-text-base);
134
+ border-radius: var(--ds-radius-lg);
135
+ }
136
+
137
+ /* --- Pill (rounded-full, like hero CTAs) --- */
138
+ &--pill {
139
+ border-radius: var(--ds-radius-full);
140
+ padding: 0 var(--ds-space-6);
141
+
142
+ &.ds-btn--xs {
143
+ padding: 0 var(--ds-space-3);
144
+ }
145
+
146
+ &.ds-btn--sm {
147
+ padding: 0 var(--ds-space-5);
148
+ }
149
+ }
150
+
151
+ /* --- Full Width --- */
152
+ &--full { width: 100%; }
153
+
154
+ /* --- Icon Only --- */
155
+ &--icon {
156
+ padding: 0;
157
+ width: var(--ds-size-3);
158
+ height: var(--ds-size-3);
159
+ border-radius: var(--ds-radius-md);
160
+
161
+ &.ds-btn--xs {
162
+ width: var(--ds-size-1);
163
+ height: var(--ds-size-1);
164
+ }
165
+
166
+ &.ds-btn--sm {
167
+ width: var(--ds-size-2);
168
+ height: var(--ds-size-2);
169
+ }
170
+ }
171
+
172
+ /* --- Loading spinner --- */
173
+ &--loading {
174
+ position: relative;
175
+ color: transparent !important;
176
+ pointer-events: none;
177
+
178
+ &::after {
179
+ content: '';
180
+ position: absolute;
181
+ width: 1em;
182
+ height: 1em;
183
+ border: 2px solid currentColor;
184
+ border-inline-end-color: transparent;
185
+ border-radius: var(--ds-radius-full);
186
+ animation: ds-btn-spin 0.6s linear infinite;
187
+ color: var(--ds-color-on-inverted);
188
+ }
189
+ }
166
190
  }
167
191
 
168
192
  /* --- Button Group --- */
169
193
  .ds-btn-group {
170
194
  display: inline-flex;
195
+
196
+ & .ds-btn { border-radius: 0; }
197
+ & .ds-btn:first-child { border-radius: var(--ds-radius-lg) 0 0 var(--ds-radius-lg); }
198
+ & .ds-btn:last-child { border-radius: 0 var(--ds-radius-lg) var(--ds-radius-lg) 0; }
199
+ & .ds-btn + .ds-btn { margin-inline-start: -1px; }
171
200
  }
172
- .ds-btn-group .ds-btn { border-radius: 0; }
173
- .ds-btn-group .ds-btn:first-child { border-radius: var(--ds-radius-lg) 0 0 var(--ds-radius-lg); }
174
- .ds-btn-group .ds-btn:last-child { border-radius: 0 var(--ds-radius-lg) var(--ds-radius-lg) 0; }
175
- .ds-btn-group .ds-btn + .ds-btn { margin-inline-start: -1px; }
176
-
177
- /* --- Loading spinner --- */
178
- .ds-btn--loading {
179
- position: relative;
180
- color: transparent !important;
181
- pointer-events: none;
182
- }
183
- .ds-btn--loading::after {
184
- content: '';
185
- position: absolute;
186
- width: 1em;
187
- height: 1em;
188
- border: 2px solid currentColor;
189
- border-inline-end-color: transparent;
190
- border-radius: var(--ds-radius-full);
191
- animation: ds-btn-spin 0.6s linear infinite;
192
- color: var(--ds-color-on-inverted);
193
- }
201
+
194
202
  @keyframes ds-btn-spin {
195
203
  to { transform: rotate(360deg); }
196
204
  }
@@ -9,87 +9,109 @@
9
9
  border-radius: var(--ds-radius-xl);
10
10
  overflow: hidden;
11
11
  transition: all var(--ds-duration-normal) var(--ds-ease-default);
12
- }
12
+ container-type: inline-size;
13
13
 
14
- /* Interactive card lifts on hover (like ProjectCard) */
15
- .ds-card--interactive {
16
- cursor: pointer;
17
- }
18
- .ds-card--interactive:hover {
19
- border-color: var(--ds-color-border-hover);
20
- box-shadow: var(--ds-shadow-lg);
21
- transform: translateY(-4px);
22
- }
23
- .ds-card--interactive:focus-visible {
24
- outline: none;
25
- box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
26
- }
27
- .ds-card--interactive:hover:focus-visible {
28
- box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color), var(--ds-shadow-lg);
29
- }
14
+ /* Container query: stack body content when card is narrow */
15
+ @container (max-width: 200px) {
16
+ & .ds-card__body {
17
+ display: flex;
18
+ flex-direction: column;
19
+ }
30
20
 
31
- /* Elevated card — visible shadow */
32
- .ds-card--elevated {
33
- background-color: var(--ds-color-bg-elevated);
34
- box-shadow: var(--ds-shadow-lg);
35
- }
21
+ & .ds-card__footer {
22
+ flex-direction: column;
23
+ align-items: stretch;
24
+ }
25
+ }
36
26
 
37
- /* Hover card — border highlight */
38
- .ds-card--hover:hover {
39
- border-color: var(--ds-color-border-active);
40
- }
27
+ /* Interactive card — lifts on hover (like ProjectCard) */
28
+ &--interactive {
29
+ cursor: pointer;
41
30
 
42
- .ds-card__header {
43
- padding: var(--ds-space-5);
44
- border-block-end: 1px solid var(--ds-color-border);
45
- }
31
+ &:hover {
32
+ border-color: var(--ds-color-border-hover);
33
+ box-shadow: var(--ds-shadow-lg);
34
+ transform: translateY(-4px);
35
+ }
46
36
 
47
- .ds-card__header h3,
48
- .ds-card__header .ds-card__title {
49
- font-family: var(--ds-font-display);
50
- font-weight: var(--ds-font-display-weight);
51
- font-size: var(--ds-text-lg);
52
- letter-spacing: var(--ds-tracking-tight);
53
- color: var(--ds-color-text);
54
- }
37
+ &:focus-visible {
38
+ outline: none;
39
+ box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
40
+ }
55
41
 
56
- .ds-card__description {
57
- font-size: var(--ds-text-sm);
58
- color: var(--ds-color-text-tertiary);
59
- margin-block-start: var(--ds-space-1);
60
- }
42
+ &:hover:focus-visible {
43
+ box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color), var(--ds-shadow-lg);
44
+ }
45
+ }
61
46
 
62
- .ds-card__body {
63
- padding: var(--ds-space-5);
64
- }
47
+ /* Elevated card — visible shadow */
48
+ &--elevated {
49
+ background-color: var(--ds-color-bg-elevated);
50
+ box-shadow: var(--ds-shadow-lg);
51
+ }
65
52
 
66
- .ds-card__footer {
67
- padding: var(--ds-space-4) var(--ds-space-5);
68
- border-block-start: 1px solid var(--ds-color-border);
69
- display: flex;
70
- align-items: center;
71
- gap: var(--ds-space-2);
72
- }
53
+ /* Hover card — border highlight */
54
+ &--hover:hover {
55
+ border-color: var(--ds-color-border-active);
56
+ }
73
57
 
74
- .ds-card__media {
75
- width: 100%;
76
- aspect-ratio: 16/10;
77
- object-fit: cover;
78
- background-color: var(--ds-color-bg-elevated);
79
- }
80
- .ds-card__media--square { aspect-ratio: 1; }
81
- .ds-card__media--video { aspect-ratio: 16/9; }
82
- .ds-card__media--auto { aspect-ratio: auto; }
83
-
84
- /* Compact */
85
- .ds-card--compact .ds-card__header,
86
- .ds-card--compact .ds-card__body,
87
- .ds-card--compact .ds-card__footer {
88
- padding: var(--ds-space-3) var(--ds-space-4);
89
- }
58
+ &__header {
59
+ padding: var(--ds-space-5);
60
+ border-block-end: 1px solid var(--ds-color-border);
61
+
62
+ & h3,
63
+ & .ds-card__title {
64
+ font-family: var(--ds-font-display);
65
+ font-weight: var(--ds-font-display-weight);
66
+ font-size: var(--ds-text-lg);
67
+ letter-spacing: var(--ds-tracking-tight);
68
+ color: var(--ds-color-text);
69
+ }
70
+ }
71
+
72
+ &__description {
73
+ font-size: var(--ds-text-sm);
74
+ color: var(--ds-color-text-tertiary);
75
+ margin-block-start: var(--ds-space-1);
76
+ }
77
+
78
+ &__body {
79
+ padding: var(--ds-space-5);
80
+ }
90
81
 
91
- /* Flush — no internal dividers */
92
- .ds-card--flush .ds-card__header { border-block-end: none; }
93
- .ds-card--flush .ds-card__footer { border-block-start: none; }
82
+ &__footer {
83
+ padding: var(--ds-space-4) var(--ds-space-5);
84
+ border-block-start: 1px solid var(--ds-color-border);
85
+ display: flex;
86
+ align-items: center;
87
+ gap: var(--ds-space-2);
88
+ }
89
+
90
+ &__media {
91
+ width: 100%;
92
+ aspect-ratio: 16/10;
93
+ object-fit: cover;
94
+ background-color: var(--ds-color-bg-elevated);
95
+
96
+ &--square { aspect-ratio: 1; }
97
+ &--video { aspect-ratio: 16/9; }
98
+ &--auto { aspect-ratio: auto; }
99
+ }
100
+
101
+ /* Compact */
102
+ &--compact {
103
+ & .ds-card__header,
104
+ & .ds-card__body,
105
+ & .ds-card__footer {
106
+ padding: var(--ds-space-3) var(--ds-space-4);
107
+ }
108
+ }
109
+
110
+ /* Flush — no internal dividers */
111
+ &--flush {
112
+ & .ds-card__header { border-block-end: none; }
113
+ & .ds-card__footer { border-block-start: none; }
114
+ }
115
+ }
94
116
 
95
117
  /* Stat card — extracted to stat-card.css */