@happyvertical/smrt-ui 0.55.21 → 0.55.23

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 (56) hide show
  1. package/dist/components/calendar/DayView.svelte +1 -1
  2. package/dist/components/data/CollectionList.svelte +1 -1
  3. package/dist/components/data/ListSortSelect.svelte +1 -1
  4. package/dist/components/feedback/Alert.svelte +83 -22
  5. package/dist/components/feedback/LoadingOverlay.svelte +2 -2
  6. package/dist/components/feedback/PhoneSheet.svelte +1 -1
  7. package/dist/components/feedback/ToastViewport.svelte +1 -1
  8. package/dist/components/feedback/WorkingStrip.svelte +4 -4
  9. package/dist/components/forms/CameraCapture.svelte +1 -1
  10. package/dist/components/forms/Checkbox.svelte +130 -36
  11. package/dist/components/forms/Combobox.svelte +2 -2
  12. package/dist/components/forms/Fieldset.svelte +1 -1
  13. package/dist/components/forms/FilePicker.svelte +1 -1
  14. package/dist/components/forms/FormActionBar.svelte +2 -2
  15. package/dist/components/forms/Input.svelte +66 -61
  16. package/dist/components/forms/InputGroup.svelte +1 -1
  17. package/dist/components/forms/Listbox.svelte +1 -1
  18. package/dist/components/forms/MultiSelect.svelte +2 -2
  19. package/dist/components/forms/RangeSlider.svelte +1 -1
  20. package/dist/components/forms/SegmentedControl.svelte +2 -2
  21. package/dist/components/forms/Select.svelte +67 -61
  22. package/dist/components/forms/SignaturePad.svelte +1 -1
  23. package/dist/components/forms/Slider.svelte +1 -1
  24. package/dist/components/forms/StagedControlReview.svelte +4 -4
  25. package/dist/components/forms/Switch.svelte +127 -35
  26. package/dist/components/forms/TagsInput.svelte +1 -1
  27. package/dist/components/forms/ToggleButton.svelte +1 -1
  28. package/dist/components/layout/Footer.svelte +1 -1
  29. package/dist/components/layout/Masthead.svelte +1 -1
  30. package/dist/components/memberships/MembershipCard.svelte +3 -3
  31. package/dist/components/nav/FilterChips.svelte +1 -1
  32. package/dist/components/nav/Tabs.svelte +189 -190
  33. package/dist/components/nav/Tabs.svelte.d.ts.map +1 -1
  34. package/dist/components/permissions/PermissionPicker.svelte +4 -4
  35. package/dist/components/roles/RoleSelector.svelte +2 -2
  36. package/dist/components/ui/Accordion.svelte +1 -1
  37. package/dist/components/ui/AccordionItem.svelte +1 -1
  38. package/dist/components/ui/Badge.svelte +23 -25
  39. package/dist/components/ui/Button.svelte +101 -115
  40. package/dist/components/ui/Button.svelte.d.ts +1 -1
  41. package/dist/components/ui/Card.svelte +44 -57
  42. package/dist/components/ui/Chip.svelte +65 -60
  43. package/dist/components/ui/Disclosure.svelte +1 -1
  44. package/dist/components/ui/IconToggle.svelte +2 -2
  45. package/dist/styles/unstyled.css +2 -2
  46. package/dist/svelte/playground/BaseControlsPreview.svelte +2 -2
  47. package/dist/svelte/playground/CollectionsPreview.svelte +1 -1
  48. package/dist/svelte/playground/DataTablePreview.svelte +5 -5
  49. package/dist/svelte/playground/FeedbackPreview.svelte +1 -1
  50. package/dist/svelte/playground/InteractiveControlsPreview.svelte +1 -1
  51. package/dist/svelte/playground/StylelessPreview.svelte +35 -2
  52. package/dist/svelte/playground/StylelessPreview.svelte.d.ts.map +1 -1
  53. package/dist/themes/README.md +1 -1
  54. package/dist/themes/components/ColorSchemeToggle.svelte +3 -3
  55. package/dist/themes/components/ThemeSwitcher.svelte +3 -3
  56. package/package.json +2 -2
@@ -15,67 +15,65 @@ interface Props extends Omit<HTMLAttributes<HTMLSpanElement>, 'class'> {
15
15
  const { variant = 'default', size = 'md', children, ...rest }: Props = $props();
16
16
  </script>
17
17
 
18
- <span class="badge {variant} {size}" {...rest} data-smrt-component="Badge">
18
+ <span class="smrt-badge__root smrt-badge__{variant} smrt-badge__{size}" {...rest} data-smrt-component="Badge">
19
19
  {@render children?.()}
20
20
  </span>
21
21
 
22
22
  <style>
23
23
  @layer smrt.reset, smrt.structure, smrt.theme;
24
- @layer smrt.theme {
25
- .badge {
24
+ @layer smrt.structure {
25
+ .smrt-badge__root {
26
26
  display: inline-flex;
27
27
  align-items: center;
28
28
  justify-content: center;
29
+ white-space: nowrap;
30
+ }
31
+ .smrt-badge__sm {
32
+ padding: var(--smrt-spacing-1) var(--smrt-spacing-2);
33
+ }
34
+ .smrt-badge__md {
35
+ padding: var(--smrt-spacing-1) var(--smrt-spacing-3);
36
+ }
37
+ }
38
+ @layer smrt.theme {
39
+ .smrt-badge__root {
29
40
  font-weight: var(--smrt-control-weight);
30
41
  border: var(--smrt-hairline);
31
42
  border-radius: var(--smrt-radius-full);
32
- white-space: nowrap;
33
43
  }
34
-
35
- /* Sizes */
36
- .sm {
37
- padding: var(--smrt-spacing-1) var(--smrt-spacing-2);
44
+ .smrt-badge__sm {
38
45
  font-size: var(--smrt-typography-body-small-size);
39
46
  }
40
-
41
- .md {
42
- padding: var(--smrt-spacing-1) var(--smrt-spacing-3);
47
+ .smrt-badge__md {
43
48
  font-size: var(--smrt-typography-body-medium-size);
44
49
  }
45
-
46
- /* Variants */
47
- .default {
50
+ .smrt-badge__default {
48
51
  background: var(--smrt-color-surface-container-high);
49
52
  color: var(--smrt-color-on-surface);
50
53
  }
51
-
52
- .primary {
54
+ .smrt-badge__primary {
53
55
  background: var(--smrt-color-primary-container);
54
56
  color: var(--smrt-color-on-primary-container);
55
57
  }
56
-
57
- .success {
58
+ .smrt-badge__success {
58
59
  background: var(--smrt-color-success-container);
59
60
  color: var(--smrt-color-on-success-container);
60
61
  }
61
-
62
- .warning {
62
+ .smrt-badge__warning {
63
63
  background: var(--smrt-color-warning-container);
64
64
  color: var(--smrt-color-on-warning-container);
65
65
  }
66
-
67
- .error {
66
+ .smrt-badge__error {
68
67
  background: var(--smrt-color-error-container);
69
68
  color: var(--smrt-color-on-error-container);
70
69
  }
71
-
72
- .info {
70
+ .smrt-badge__info {
73
71
  background: var(--smrt-color-primary-container);
74
72
  color: var(--smrt-color-on-primary-container);
75
73
  }
76
74
  /* Forced colors (#3908): system colours where colour alone carries meaning. */
77
75
  @media (forced-colors: active) {
78
- .badge { background: Canvas; color: CanvasText; border-color: CanvasText; }
76
+ .smrt-badge__root { background: Canvas; color: CanvasText; border-color: CanvasText; }
79
77
  }
80
78
  }
81
79
  </style>
@@ -29,7 +29,7 @@ export interface Props extends Omit<HTMLButtonAttributes, 'class' | 'href'> {
29
29
  /** Loading state */
30
30
  loading?: boolean;
31
31
  /**
32
- * Extra class(es) appended after the base `button {variant} {size}` styling.
32
+ * Extra class(es) appended after the base `button smrt-button__{variant} smrt-button__{size}` styling.
33
33
  * Lets callers adopt Button for custom-styled buttons without losing their
34
34
  * own CSS (issue #1589) — the base button styling still applies.
35
35
  */
@@ -121,10 +121,10 @@ function handleClick(event: MouseEvent) {
121
121
  {target}
122
122
  {rel}
123
123
  {download}
124
- data-density={density} class="button {variant} {size} {className}"
125
- class:disabled={isDisabled}
126
- class:full-width={fullWidth}
127
- class:loading
124
+ data-density={density} class="smrt-button__root smrt-button__{variant} smrt-button__{size} {className}"
125
+ class:smrt-button__disabled={isDisabled}
126
+ class:smrt-button__full-width={fullWidth}
127
+ class:smrt-button__loading={loading}
128
128
  tabindex={isDisabled ? -1 : undefined}
129
129
  aria-disabled={isDisabled}
130
130
  aria-busy={loading}
@@ -132,9 +132,9 @@ function handleClick(event: MouseEvent) {
132
132
  {...linkProps()} data-smrt-component="Button"
133
133
  >
134
134
  {#if loading}
135
- <span class="spinner" aria-hidden="true" data-smrt-part="spinner"></span>
135
+ <span class="smrt-button__spinner" aria-hidden="true" data-smrt-part="spinner"></span>
136
136
  {/if}
137
- <span class="content" class:loading data-smrt-part="label">
137
+ <span class="smrt-button__content" class:smrt-button__loading={loading} data-smrt-part="label">
138
138
  {@render children?.()}
139
139
  </span>
140
140
  </a>
@@ -143,16 +143,16 @@ function handleClick(event: MouseEvent) {
143
143
  {type}
144
144
  disabled={isDisabled}
145
145
  aria-busy={loading}
146
- data-density={density} class="button {variant} {size} {className}"
147
- class:full-width={fullWidth}
148
- class:loading
146
+ data-density={density} class="smrt-button__root smrt-button__{variant} smrt-button__{size} {className}"
147
+ class:smrt-button__full-width={fullWidth}
148
+ class:smrt-button__loading={loading}
149
149
  onclick={handleClick}
150
150
  {...rest} data-smrt-component="Button"
151
151
  >
152
152
  {#if loading}
153
- <span class="spinner" aria-hidden="true" data-smrt-part="spinner"></span>
153
+ <span class="smrt-button__spinner" aria-hidden="true" data-smrt-part="spinner"></span>
154
154
  {/if}
155
- <span class="content" class:loading data-smrt-part="label">
155
+ <span class="smrt-button__content" class:smrt-button__loading={loading} data-smrt-part="label">
156
156
  {@render children?.()}
157
157
  </span>
158
158
  </button>
@@ -160,171 +160,157 @@ function handleClick(event: MouseEvent) {
160
160
 
161
161
  <style>
162
162
  @layer smrt.reset, smrt.structure, smrt.theme;
163
- @layer smrt.theme {
164
- .button {
163
+ @layer smrt.structure {
164
+ .smrt-button__root {
165
165
  display: inline-flex;
166
166
  align-items: center;
167
167
  justify-content: center;
168
168
  gap: var(--smrt-spacing-2);
169
169
  position: relative;
170
+ cursor: pointer;
171
+ }
172
+ .smrt-button__root::after {
173
+ content: '';
174
+ position: absolute;
175
+ inset: 0;
176
+ pointer-events: none;
177
+ }
178
+ .smrt-button__sm {
179
+ padding: var(--smrt-spacing-2) var(--smrt-spacing-3);
180
+ }
181
+ .smrt-button__md {
182
+ padding: var(--smrt-spacing-3) var(--smrt-spacing-4);
183
+ }
184
+ .smrt-button__lg {
185
+ padding: var(--smrt-spacing-4) var(--smrt-spacing-6);
186
+ }
187
+ .smrt-button__full-width {
188
+ width: 100%;
189
+ }
190
+ .smrt-button__loading {
191
+ position: relative;
192
+ }
193
+ .smrt-button__spinner {
194
+ position: absolute;
195
+ left: 50%;
196
+ top: 50%;
197
+ transform: translate(-50%, -50%);
198
+ width: 1em;
199
+ height: 1em;
200
+ }
201
+ .smrt-button__content {
202
+ display: inline-flex;
203
+ align-items: center;
204
+ justify-content: center;
205
+ gap: var(--smrt-spacing-2);
206
+ }
207
+ .smrt-button__content.smrt-button__loading {
208
+ opacity: 0;
209
+ }
210
+ .smrt-button__root:disabled,
211
+ .smrt-button__root.smrt-button__disabled {
212
+ cursor: not-allowed;
213
+ pointer-events: none;
214
+ }
215
+ @media (max-width: 48rem) {
216
+ .smrt-button__root {
217
+ min-block-size: 2.75rem;
218
+ }
219
+ }
220
+ .smrt-button__root[data-density='touch'] {
221
+ --smrt-button-target-min: var(--smrt-touch-target-min);
222
+ }
223
+ .smrt-button__root[data-density='comfortable'] {
224
+ --smrt-button-target-min: 0px;
225
+ }
226
+ .smrt-button__root {
227
+ min-height: max(var(--smrt-control-height), var(--smrt-button-target-min, var(--smrt-control-target-min)));
228
+ min-width: var(--smrt-button-target-min, var(--smrt-control-target-min));
229
+ }
230
+ .smrt-button__root.smrt-button__sm {
231
+ min-height: max(var(--smrt-control-height-small), var(--smrt-button-target-min, var(--smrt-control-target-min)));
232
+ }
233
+ }
234
+ @layer smrt.theme {
235
+ .smrt-button__root {
170
236
  font-weight: var(--smrt-control-weight);
171
237
  border-radius: var(--smrt-control-radius);
172
238
  transition: all var(--smrt-duration-short2) var(--smrt-easing-standard);
173
- cursor: pointer;
174
239
  text-decoration: none;
175
240
  border: 1px solid transparent;
176
241
  }
177
-
178
- /* One state layer for every variant: currentColor mixed at the theme's
179
- state opacity. Per-variant tweaks use --smrt-button-state-* names. */
180
- .button::after {
181
- content: '';
182
- position: absolute;
183
- inset: 0;
242
+ .smrt-button__root::after {
184
243
  border-radius: inherit;
185
244
  background: transparent;
186
- pointer-events: none;
187
245
  transition: background-color var(--smrt-duration-short2) var(--smrt-easing-standard);
188
246
  }
189
-
190
- .button:hover:not(:disabled):not(.disabled)::after {
247
+ .smrt-button__root:hover:not(:disabled):not(.smrt-button__disabled)::after {
191
248
  background: color-mix(
192
249
  in srgb,
193
250
  currentColor calc(var(--smrt-state-hover) * 100%),
194
251
  transparent
195
252
  );
196
253
  }
197
-
198
- .button:active:not(:disabled):not(.disabled)::after {
254
+ .smrt-button__root:active:not(:disabled):not(.smrt-button__disabled)::after {
199
255
  background: color-mix(
200
256
  in srgb,
201
257
  currentColor calc(var(--smrt-state-pressed) * 100%),
202
258
  transparent
203
259
  );
204
260
  }
205
-
206
- /* Sizes */
207
- .sm {
261
+ .smrt-button__sm {
208
262
  border-radius: var(--smrt-control-radius-small);
209
- padding: var(--smrt-spacing-2) var(--smrt-spacing-3);
210
263
  font-size: var(--smrt-typography-body-medium-size);
211
264
  }
212
-
213
- .md {
214
- padding: var(--smrt-spacing-3) var(--smrt-spacing-4);
265
+ .smrt-button__md {
215
266
  font-size: var(--smrt-typography-body-large-size);
216
267
  }
217
-
218
- .lg {
219
- padding: var(--smrt-spacing-4) var(--smrt-spacing-6);
268
+ .smrt-button__lg {
220
269
  font-size: var(--smrt-typography-title-medium-size);
221
270
  }
222
-
223
- /* Variants */
224
- .primary {
271
+ .smrt-button__primary {
225
272
  background: var(--smrt-color-primary);
226
273
  color: var(--smrt-color-on-primary);
227
274
  }
228
-
229
-
230
- .secondary {
275
+ .smrt-button__secondary {
231
276
  background: var(--smrt-surface-control);
232
277
  color: var(--smrt-color-primary);
233
278
  border-color: var(--smrt-color-primary);
234
279
  }
235
-
236
-
237
- .ghost {
280
+ .smrt-button__ghost {
238
281
  background: transparent;
239
282
  color: var(--smrt-color-primary);
240
283
  }
241
-
242
-
243
- .danger {
284
+ .smrt-button__danger {
244
285
  background: var(--smrt-color-error);
245
286
  color: var(--smrt-color-on-error);
246
287
  }
247
-
248
-
249
- /* Full width */
250
- .full-width {
251
- width: 100%;
252
- }
253
-
254
- /* Loading state */
255
- .loading {
256
- position: relative;
257
- }
258
-
259
- .spinner {
260
- position: absolute;
261
- left: 50%;
262
- top: 50%;
263
- transform: translate(-50%, -50%);
264
- width: 1em;
265
- height: 1em;
288
+ .smrt-button__spinner {
266
289
  border: 2px solid currentColor;
267
290
  border-right-color: transparent;
268
291
  border-radius: var(--smrt-radius-full);
269
292
  animation: spin 0.75s linear infinite;
270
293
  }
271
-
272
294
  @keyframes spin {
273
- from { transform: translate(-50%, -50%) rotate(0deg); }
274
- to { transform: translate(-50%, -50%) rotate(360deg); }
275
- }
276
-
277
- /* Lay out the button's own children. The children render inside this wrapper
278
- span, so the button-level `gap` never reaches them — without making the
279
- wrapper itself a flex row, an icon + label (`<Button><svg/>Save</Button>`)
280
- would render with no gap. Making `.content` a centered flex row lays out
281
- multi-child buttons (icon+text, label+count) correctly after the #1589
282
- migration, instead of needing per-button CSS to reach into `.content`. The
283
- wrapper is shrink-to-fit, so a caller wanting a spread layout must also give
284
- it width — e.g. a full-width button with
285
- `.x :global(.content) { width: 100%; justify-content: space-between }`. */
286
- .content {
287
- display: inline-flex;
288
- align-items: center;
289
- justify-content: center;
290
- gap: var(--smrt-spacing-2);
291
- }
292
-
293
- .content.loading {
294
- opacity: 0;
295
+ from {
296
+ transform: translate(-50%, -50%) rotate(0deg);
297
+ }
298
+ to {
299
+ transform: translate(-50%, -50%) rotate(360deg);
300
+ }
295
301
  }
296
-
297
- /* Disabled state */
298
- .button:disabled,
299
- .button.disabled {
302
+ .smrt-button__root:disabled,
303
+ .smrt-button__root.smrt-button__disabled {
300
304
  opacity: var(--smrt-state-disabled);
301
- cursor: not-allowed;
302
- pointer-events: none;
303
305
  }
304
-
305
- /* Focus state */
306
- .button:focus-visible {
306
+ .smrt-button__root:focus-visible {
307
307
  outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
308
308
  outline-offset: var(--smrt-focus-ring-offset);
309
309
  }
310
-
311
- /* Phones: every size is at least a 44px touch target. */
312
- @media (max-width: 48rem) {
313
- .button {
314
- min-block-size: 2.75rem;
315
- }
316
- }
317
-
318
- /* Reduced motion */
319
310
  @media (prefers-reduced-motion: reduce) {
320
- .spinner {
311
+ .smrt-button__spinner {
321
312
  animation: none;
322
313
  }
323
314
  }
324
-
325
- .button[data-density='touch'] { --smrt-control-target-min: var(--smrt-touch-target-min); }
326
- .button[data-density='comfortable'] { --smrt-control-target-min: 0px; }
327
- .button { min-height: max(var(--smrt-control-height), var(--smrt-control-target-min, 0px)); min-width: var(--smrt-control-target-min, 0px); }
328
- .button.sm { min-height: max(var(--smrt-control-height-small), var(--smrt-control-target-min, 0px)); }
329
315
  }
330
316
  </style>
@@ -24,7 +24,7 @@ export interface Props extends Omit<HTMLButtonAttributes, 'class' | 'href'> {
24
24
  /** Loading state */
25
25
  loading?: boolean;
26
26
  /**
27
- * Extra class(es) appended after the base `button {variant} {size}` styling.
27
+ * Extra class(es) appended after the base `button smrt-button__{variant} smrt-button__{size}` styling.
28
28
  * Lets callers adopt Button for custom-styled buttons without losing their
29
29
  * own CSS (issue #1589) — the base button styling still applies.
30
30
  */
@@ -30,22 +30,22 @@ const {
30
30
  </script>
31
31
 
32
32
  <div
33
- class="card {variant} padding-{padding}"
34
- class:hoverable
33
+ class="smrt-card__root smrt-card__{variant} smrt-card__padding-{padding}"
34
+ class:smrt-card__hoverable={hoverable}
35
35
  {...rest} data-smrt-component="Card"
36
36
  >
37
37
  {#if header}
38
- <div class="card-header" data-smrt-part="header">
38
+ <div class="smrt-card__header" data-smrt-part="header">
39
39
  {@render header()}
40
40
  </div>
41
41
  {/if}
42
42
 
43
- <div class="card-content" data-smrt-part="body">
43
+ <div class="smrt-card__content" data-smrt-part="body">
44
44
  {@render children?.()}
45
45
  </div>
46
46
 
47
47
  {#if footer}
48
- <div class="card-footer" data-smrt-part="footer">
48
+ <div class="smrt-card__footer" data-smrt-part="footer">
49
49
  {@render footer()}
50
50
  </div>
51
51
  {/if}
@@ -53,6 +53,38 @@ const {
53
53
 
54
54
  <style>
55
55
  @layer smrt.reset, smrt.structure, smrt.theme;
56
+ @layer smrt.structure {
57
+ .smrt-card__padding-none .smrt-card__content {
58
+ padding: var(--smrt-spacing-0);
59
+ }
60
+ .smrt-card__padding-sm .smrt-card__content {
61
+ padding: var(--smrt-spacing-4);
62
+ }
63
+ .smrt-card__padding-md .smrt-card__content {
64
+ padding: var(--smrt-spacing-6);
65
+ }
66
+ .smrt-card__padding-lg .smrt-card__content {
67
+ padding: var(--smrt-spacing-8);
68
+ }
69
+ .smrt-card__header {
70
+ padding: var(--smrt-spacing-6);
71
+ }
72
+ .smrt-card__padding-sm .smrt-card__header {
73
+ padding: var(--smrt-spacing-4);
74
+ }
75
+ .smrt-card__padding-lg .smrt-card__header {
76
+ padding: var(--smrt-spacing-8);
77
+ }
78
+ .smrt-card__footer {
79
+ padding: var(--smrt-spacing-6);
80
+ }
81
+ .smrt-card__padding-sm .smrt-card__footer {
82
+ padding: var(--smrt-spacing-4);
83
+ }
84
+ .smrt-card__padding-lg .smrt-card__footer {
85
+ padding: var(--smrt-spacing-8);
86
+ }
87
+ }
56
88
  @layer smrt.theme {
57
89
  /*
58
90
  * Themeable look (app-level custom properties; defaults keep the stock look):
@@ -62,80 +94,35 @@ const {
62
94
  * --smrt-card-divider rule between the header/footer and the content
63
95
  * The `outlined` variant always draws its outline.
64
96
  */
65
- .card {
97
+ .smrt-card__root {
66
98
  background: var(--smrt-card-background, var(--smrt-surface-panel));
67
99
  border-radius: var(--smrt-radius-medium);
68
100
  transition: all var(--smrt-duration-short2) var(--smrt-easing-standard);
69
101
  }
70
-
71
- /* Variants */
72
- .default {
102
+ .smrt-card__default {
73
103
  border: var(--smrt-card-border, var(--smrt-hairline));
74
104
  box-shadow: var(--smrt-card-shadow, var(--smrt-inset-highlight));
75
105
  }
76
-
77
- .outlined {
106
+ .smrt-card__outlined {
78
107
  border: var(--smrt-hairline-strong);
79
108
  box-shadow: var(--smrt-inset-highlight);
80
109
  }
81
-
82
- .elevated {
110
+ .smrt-card__elevated {
83
111
  border: var(--smrt-card-border, var(--smrt-hairline));
84
112
  box-shadow: var(--smrt-inset-highlight), var(--smrt-elevation-2);
85
113
  }
86
-
87
- /* Hoverable state */
88
- .hoverable:hover {
114
+ .smrt-card__hoverable:hover {
89
115
  box-shadow: var(--smrt-inset-highlight), var(--smrt-elevation-3);
90
116
  transform: translateY(-2px);
91
117
  }
92
-
93
- /* Padding */
94
- .padding-none .card-content {
95
- padding: var(--smrt-spacing-0);
96
- }
97
-
98
- .padding-sm .card-content {
99
- padding: var(--smrt-spacing-4);
100
- }
101
-
102
- .padding-md .card-content {
103
- padding: var(--smrt-spacing-6);
104
- }
105
-
106
- .padding-lg .card-content {
107
- padding: var(--smrt-spacing-8);
108
- }
109
-
110
- /* Header */
111
- .card-header {
112
- padding: var(--smrt-spacing-6);
118
+ .smrt-card__header {
113
119
  border-bottom: var(--smrt-card-divider, var(--smrt-hairline));
114
120
  }
115
-
116
- .padding-sm .card-header {
117
- padding: var(--smrt-spacing-4);
118
- }
119
-
120
- .padding-lg .card-header {
121
- padding: var(--smrt-spacing-8);
122
- }
123
-
124
- /* Footer */
125
- .card-footer {
126
- padding: var(--smrt-spacing-6);
121
+ .smrt-card__footer {
127
122
  border-top: var(--smrt-card-divider, var(--smrt-hairline));
128
123
  background: var(--smrt-surface-sunken);
129
124
  border-bottom-left-radius: var(--smrt-radius-medium);
130
125
  border-bottom-right-radius: var(--smrt-radius-medium);
131
126
  }
132
-
133
- .padding-sm .card-footer {
134
- padding: var(--smrt-spacing-4);
135
- }
136
-
137
- .padding-lg .card-footer {
138
- padding: var(--smrt-spacing-8);
139
- }
140
127
  }
141
128
  </style>