@happyvertical/smrt-ui 0.55.16 → 0.55.18
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/AGENTS.md +14 -0
- package/README.md +75 -0
- package/dist/components/calendar/Calendar.svelte +59 -56
- package/dist/components/calendar/CalendarView.svelte +80 -77
- package/dist/components/calendar/DayView.svelte +39 -36
- package/dist/components/chat/MessageBubble.svelte +26 -23
- package/dist/components/chat/ReactionPicker.svelte +12 -9
- package/dist/components/chat/TypingIndicator.svelte +12 -9
- package/dist/components/data/CollectionList.svelte +11 -8
- package/dist/components/data/CollectionToolbar.svelte +5 -2
- package/dist/components/data/DataTable.svelte +74 -59
- package/dist/components/data/ListSortSelect.svelte +8 -5
- package/dist/components/data/SortableHeader.svelte +10 -7
- package/dist/components/display/ConfidenceBadge.svelte +11 -8
- package/dist/components/display/CurrencyDisplay.svelte +7 -4
- package/dist/components/display/DateDisplay.svelte +6 -3
- package/dist/components/display/Icon.svelte +4 -1
- package/dist/components/display/StatusBadge.svelte +9 -6
- package/dist/components/feedback/Alert.svelte +12 -8
- package/dist/components/feedback/ConfirmDialog.svelte +13 -10
- package/dist/components/feedback/LoadingOverlay.svelte +37 -34
- package/dist/components/feedback/Meter.svelte +4 -1
- package/dist/components/feedback/Modal.svelte +26 -21
- package/dist/components/feedback/PhoneSheet.svelte +6 -3
- package/dist/components/feedback/Progress.svelte +8 -5
- package/dist/components/feedback/ProgressBar.svelte +13 -10
- package/dist/components/feedback/Spinner.svelte +4 -1
- package/dist/components/feedback/ToastViewport.svelte +18 -15
- package/dist/components/feedback/WorkingStrip.svelte +6 -3
- package/dist/components/forms/CameraCapture.svelte +8 -5
- package/dist/components/forms/Checkbox.svelte +11 -8
- package/dist/components/forms/Combobox.svelte +5 -2
- package/dist/components/forms/DatePicker.svelte +7 -2
- package/dist/components/forms/DictationButton.svelte +17 -14
- package/dist/components/forms/DictationStatus.svelte +12 -9
- package/dist/components/forms/ErrorSummary.svelte +4 -1
- package/dist/components/forms/FieldLabel.svelte +9 -6
- package/dist/components/forms/Fieldset.svelte +4 -1
- package/dist/components/forms/FilePicker.svelte +5 -2
- package/dist/components/forms/Form.svelte +1 -1
- package/dist/components/forms/FormActionBar.svelte +4 -1
- package/dist/components/forms/FormGroup.svelte +6 -3
- package/dist/components/forms/Input.svelte +22 -15
- package/dist/components/forms/InputGroup.svelte +6 -3
- package/dist/components/forms/Listbox.svelte +5 -2
- package/dist/components/forms/MultiSelect.svelte +4 -1
- package/dist/components/forms/Radio.svelte +9 -6
- package/dist/components/forms/RadioGroup.svelte +5 -2
- package/dist/components/forms/RangeSlider.svelte +5 -2
- package/dist/components/forms/RelationInput.svelte +7 -4
- package/dist/components/forms/SearchInput.svelte +7 -4
- package/dist/components/forms/SegmentedControl.svelte +6 -3
- package/dist/components/forms/Select.svelte +20 -13
- package/dist/components/forms/SignaturePad.svelte +8 -5
- package/dist/components/forms/Slider.svelte +5 -2
- package/dist/components/forms/StagedControlReview.svelte +15 -12
- package/dist/components/forms/Switch.svelte +8 -5
- package/dist/components/forms/TagsInput.svelte +5 -2
- package/dist/components/forms/Textarea.svelte +20 -13
- package/dist/components/forms/TimePicker.svelte +7 -2
- package/dist/components/forms/Toggle.svelte +14 -11
- package/dist/components/forms/ToggleButton.svelte +5 -2
- package/dist/components/layout/ActionGroup.svelte +4 -1
- package/dist/components/layout/Container.svelte +4 -1
- package/dist/components/layout/EmptyState.svelte +11 -8
- package/dist/components/layout/Footer.svelte +4 -1
- package/dist/components/layout/Grid.svelte +13 -10
- package/dist/components/layout/Header.svelte +4 -1
- package/dist/components/layout/Masthead.svelte +4 -1
- package/dist/components/layout/PageHeader.svelte +12 -9
- package/dist/components/layout/PageLayout.svelte +3 -0
- package/dist/components/layout/SummaryCard.svelte +9 -6
- package/dist/components/memberships/MembershipCard.svelte +5 -2
- package/dist/components/memberships/MembershipList.svelte +5 -2
- package/dist/components/nav/FilterChips.svelte +13 -10
- package/dist/components/nav/Tabs.svelte +75 -41
- package/dist/components/permissions/PermissionPicker.svelte +5 -2
- package/dist/components/roles/RoleBadge.svelte +8 -5
- package/dist/components/roles/RoleSelector.svelte +22 -19
- package/dist/components/theme/ThemeProvider.svelte +7 -4
- package/dist/components/ui/Accordion.svelte +4 -1
- package/dist/components/ui/AccordionItem.svelte +5 -2
- package/dist/components/ui/Avatar.svelte +10 -7
- package/dist/components/ui/Badge.svelte +6 -2
- package/dist/components/ui/Button.svelte +49 -37
- package/dist/components/ui/Card.svelte +18 -14
- package/dist/components/ui/Chip.svelte +41 -14
- package/dist/components/ui/Disclosure.svelte +5 -2
- package/dist/components/ui/Dropdown.svelte +33 -25
- package/dist/components/ui/IconToggle.svelte +12 -9
- package/dist/components/ui/IconToggle.svelte.d.ts +1 -1
- package/dist/components/ui/IconToggle.svelte.d.ts.map +1 -1
- package/dist/components/ui/IconToggleGroup.svelte +8 -5
- package/dist/components/ui/Pagination.svelte +11 -8
- package/dist/components/ui/Popover.svelte +9 -6
- package/dist/components/ui/Skeleton.svelte +10 -7
- package/dist/components/ui/Tooltip.svelte +13 -9
- package/dist/components/ui/Tree.svelte +12 -9
- package/dist/styles/layers.css +8 -0
- package/dist/styles/layers.d.ts +9 -0
- package/dist/styles/layers.d.ts.map +1 -0
- package/dist/styles/layers.js +8 -0
- package/dist/styles/tokens.css +27 -69
- package/dist/styles/unstyled.css +65 -0
- package/dist/svelte/playground/BaseControlsPreview.svelte +3 -0
- package/dist/svelte/playground/CalendarPreview.svelte +5 -2
- package/dist/svelte/playground/CapturePreview.svelte +3 -0
- package/dist/svelte/playground/CodeSelectorsPreview.svelte +3 -0
- package/dist/svelte/playground/CollectionsPreview.svelte +3 -0
- package/dist/svelte/playground/DataTablePreview.svelte +3 -0
- package/dist/svelte/playground/FeedbackPreview.svelte +3 -0
- package/dist/svelte/playground/InteractiveControlsPreview.svelte +3 -0
- package/dist/svelte/playground/StylelessPreview.svelte +110 -0
- package/dist/svelte/playground/StylelessPreview.svelte.d.ts +4 -0
- package/dist/svelte/playground/StylelessPreview.svelte.d.ts.map +1 -0
- package/dist/svelte/playground.d.ts.map +1 -1
- package/dist/svelte/playground.js +10 -0
- package/dist/test-support/setup.js +9 -0
- package/dist/theme/ThemeProvider.svelte +3 -0
- package/dist/themes/CUSTOM_THEME_GUIDE.md +40 -0
- package/dist/themes/README.md +151 -0
- package/dist/themes/ThemeProvider.svelte +181 -12
- package/dist/themes/ThemeProvider.svelte.d.ts +7 -2
- package/dist/themes/ThemeProvider.svelte.d.ts.map +1 -1
- package/dist/themes/components/ColorSchemeToggle.svelte +17 -14
- package/dist/themes/components/ThemeSwitcher.svelte +14 -11
- package/dist/themes/create-theme.d.ts +22 -1
- package/dist/themes/create-theme.d.ts.map +1 -1
- package/dist/themes/create-theme.js +100 -9
- package/dist/themes/css-generator.d.ts.map +1 -1
- package/dist/themes/css-generator.js +20 -20
- package/dist/themes/derive.d.ts +31 -0
- package/dist/themes/derive.d.ts.map +1 -0
- package/dist/themes/derive.js +183 -0
- package/dist/themes/glass/index.d.ts.map +1 -1
- package/dist/themes/glass/index.js +127 -14
- package/dist/themes/happyvertical/index.d.ts.map +1 -1
- package/dist/themes/happyvertical/index.js +101 -20
- package/dist/themes/index.d.ts +2 -2
- package/dist/themes/index.d.ts.map +1 -1
- package/dist/themes/index.js +1 -1
- package/dist/themes/material/index.d.ts.map +1 -1
- package/dist/themes/material/index.js +129 -28
- package/dist/themes/required-tokens.generated.json +201 -0
- package/dist/themes/shared.d.ts +35 -0
- package/dist/themes/shared.d.ts.map +1 -1
- package/dist/themes/shared.js +32 -0
- package/dist/themes/smrt/index.d.ts +3 -0
- package/dist/themes/smrt/index.d.ts.map +1 -1
- package/dist/themes/smrt/index.js +108 -26
- package/dist/themes/studio/index.d.ts.map +1 -1
- package/dist/themes/studio/index.js +116 -40
- package/dist/themes/styles/base.css +229 -1
- package/dist/themes/styles/glass.css +107 -20
- package/dist/themes/styles/happyvertical.css +111 -15
- package/dist/themes/styles/material.css +127 -35
- package/dist/themes/styles/smrt.css +126 -31
- package/dist/themes/styles/studio.css +132 -37
- package/dist/themes/theme-script.d.ts +3 -1
- package/dist/themes/theme-script.d.ts.map +1 -1
- package/dist/themes/theme-script.js +7 -2
- package/dist/themes/types.d.ts +118 -6
- package/dist/themes/types.d.ts.map +1 -1
- package/dist/utils/theme/typography.d.ts +21 -21
- package/dist/utils/theme/typography.js +21 -21
- package/package.json +8 -2
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* Minimal shadows, monochromatic base with vibrant accents,
|
|
6
6
|
* clean lines, and a focus on content clarity.
|
|
7
7
|
*/
|
|
8
|
-
import {
|
|
8
|
+
import { baselineTokens, opaqueGlass } from '../derive.js';
|
|
9
|
+
import { borderRadiusScale, darkInsetHighlight, durationScale, hairlineInset, hairlineMix, noInsetHighlight, noShadow, shadow, spacingScale, studioEasing, } from '../shared.js';
|
|
9
10
|
/**
|
|
10
11
|
* Studio light color palette
|
|
11
12
|
* Monochromatic base with vibrant accent colors
|
|
@@ -26,6 +27,11 @@ const lightColors = {
|
|
|
26
27
|
onTertiary: '#ffffff',
|
|
27
28
|
tertiaryContainer: '#f3e8fd',
|
|
28
29
|
onTertiaryContainer: '#6b12b8',
|
|
30
|
+
// Info - Shares the tertiary hue (no distinct info hue in this preset)
|
|
31
|
+
info: '#9334e6',
|
|
32
|
+
onInfo: '#ffffff',
|
|
33
|
+
infoContainer: '#f3e8fd',
|
|
34
|
+
onInfoContainer: '#6b12b8',
|
|
29
35
|
// Error - Google red
|
|
30
36
|
error: '#d93025',
|
|
31
37
|
onError: '#ffffff',
|
|
@@ -91,6 +97,11 @@ const darkColors = {
|
|
|
91
97
|
onTertiary: '#3e1385',
|
|
92
98
|
tertiaryContainer: '#6b12b8',
|
|
93
99
|
onTertiaryContainer: '#f3e8fd',
|
|
100
|
+
// Info - Shares the tertiary hue (no distinct info hue in this preset)
|
|
101
|
+
info: '#c58af9',
|
|
102
|
+
onInfo: '#3e1385',
|
|
103
|
+
infoContainer: '#6b12b8',
|
|
104
|
+
onInfoContainer: '#f3e8fd',
|
|
94
105
|
// Error
|
|
95
106
|
error: '#f28b82',
|
|
96
107
|
onError: '#5c150c',
|
|
@@ -106,20 +117,20 @@ const darkColors = {
|
|
|
106
117
|
onSuccess: '#0d3b1f',
|
|
107
118
|
successContainer: '#137333',
|
|
108
119
|
onSuccessContainer: '#e6f4ea',
|
|
109
|
-
// Surface -
|
|
110
|
-
surface: '#
|
|
120
|
+
// Surface - Cool flat greys; panel equals ground and is separated by a hairline
|
|
121
|
+
surface: '#131416',
|
|
111
122
|
onSurface: '#e8eaed',
|
|
112
|
-
surfaceVariant: '#
|
|
123
|
+
surfaceVariant: '#1c1d20',
|
|
113
124
|
onSurfaceVariant: '#9aa0a6',
|
|
114
|
-
surfaceContainer: '#
|
|
115
|
-
surfaceContainerLow: '#
|
|
116
|
-
surfaceContainerHigh: '#
|
|
117
|
-
surfaceContainerHighest: '#
|
|
118
|
-
surfaceContainerLowest: '#
|
|
119
|
-
surfaceDim: '#
|
|
120
|
-
surfaceBright: '#
|
|
125
|
+
surfaceContainer: '#1a1b1e',
|
|
126
|
+
surfaceContainerLow: '#16171a',
|
|
127
|
+
surfaceContainerHigh: '#202124',
|
|
128
|
+
surfaceContainerHighest: '#292a2d',
|
|
129
|
+
surfaceContainerLowest: '#0e0f10',
|
|
130
|
+
surfaceDim: '#0e0f10',
|
|
131
|
+
surfaceBright: '#2b2c2f',
|
|
121
132
|
// Background
|
|
122
|
-
background: '#
|
|
133
|
+
background: '#131416',
|
|
123
134
|
onBackground: '#e8eaed',
|
|
124
135
|
// Outline
|
|
125
136
|
outline: '#8c8e92',
|
|
@@ -141,35 +152,35 @@ const typography = {
|
|
|
141
152
|
size: '3rem',
|
|
142
153
|
lineHeight: '1.1',
|
|
143
154
|
weight: '400',
|
|
144
|
-
tracking: '-0.
|
|
155
|
+
tracking: '-0.02em',
|
|
145
156
|
fontFamily: 'var(--smrt-font-family)',
|
|
146
157
|
},
|
|
147
158
|
displayMedium: {
|
|
148
159
|
size: '2.5rem',
|
|
149
160
|
lineHeight: '1.15',
|
|
150
161
|
weight: '400',
|
|
151
|
-
tracking: '-0.
|
|
162
|
+
tracking: '-0.015em',
|
|
152
163
|
fontFamily: 'var(--smrt-font-family)',
|
|
153
164
|
},
|
|
154
165
|
displaySmall: {
|
|
155
166
|
size: '2rem',
|
|
156
167
|
lineHeight: '1.2',
|
|
157
168
|
weight: '400',
|
|
158
|
-
tracking: '-0.
|
|
169
|
+
tracking: '-0.01em',
|
|
159
170
|
fontFamily: 'var(--smrt-font-family)',
|
|
160
171
|
},
|
|
161
172
|
headlineLarge: {
|
|
162
173
|
size: '1.75rem',
|
|
163
174
|
lineHeight: '1.25',
|
|
164
175
|
weight: '400',
|
|
165
|
-
tracking: '0',
|
|
176
|
+
tracking: '-0.01em',
|
|
166
177
|
fontFamily: 'var(--smrt-font-family)',
|
|
167
178
|
},
|
|
168
179
|
headlineMedium: {
|
|
169
180
|
size: '1.5rem',
|
|
170
181
|
lineHeight: '1.3',
|
|
171
182
|
weight: '400',
|
|
172
|
-
tracking: '0',
|
|
183
|
+
tracking: '-0.005em',
|
|
173
184
|
fontFamily: 'var(--smrt-font-family)',
|
|
174
185
|
},
|
|
175
186
|
headlineSmall: {
|
|
@@ -225,14 +236,14 @@ const typography = {
|
|
|
225
236
|
size: '0.875rem',
|
|
226
237
|
lineHeight: '1.5',
|
|
227
238
|
weight: '500',
|
|
228
|
-
tracking: '0.
|
|
239
|
+
tracking: '0.01em',
|
|
229
240
|
fontFamily: 'var(--smrt-font-family)',
|
|
230
241
|
},
|
|
231
242
|
labelMedium: {
|
|
232
243
|
size: '0.75rem',
|
|
233
244
|
lineHeight: '1.5',
|
|
234
245
|
weight: '500',
|
|
235
|
-
tracking: '0.
|
|
246
|
+
tracking: '0.02em',
|
|
236
247
|
fontFamily: 'var(--smrt-font-family)',
|
|
237
248
|
},
|
|
238
249
|
labelSmall: {
|
|
@@ -244,33 +255,55 @@ const typography = {
|
|
|
244
255
|
},
|
|
245
256
|
};
|
|
246
257
|
/**
|
|
247
|
-
* Studio elevation (light)
|
|
248
|
-
*
|
|
258
|
+
* Studio elevation (light) — flat. Level 1 is the hairline itself; the rest are
|
|
259
|
+
* crisp two-layer shadows (tight contact, short ambient) so overlays separate
|
|
260
|
+
* without softness.
|
|
249
261
|
*/
|
|
250
262
|
const elevation = {
|
|
251
|
-
0:
|
|
252
|
-
1:
|
|
253
|
-
2:
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
263
|
+
0: noShadow,
|
|
264
|
+
1: hairlineInset,
|
|
265
|
+
2: shadow([
|
|
266
|
+
[1, 2, 0, 10],
|
|
267
|
+
[2, 4, -2, 8],
|
|
268
|
+
]),
|
|
269
|
+
3: shadow([
|
|
270
|
+
[1, 2, 0, 12],
|
|
271
|
+
[4, 8, -3, 10],
|
|
272
|
+
]),
|
|
273
|
+
4: shadow([
|
|
274
|
+
[2, 3, 0, 12],
|
|
275
|
+
[8, 16, -4, 12],
|
|
276
|
+
]),
|
|
277
|
+
5: shadow([
|
|
278
|
+
[2, 4, 0, 14],
|
|
279
|
+
[16, 32, -8, 16],
|
|
280
|
+
]),
|
|
257
281
|
};
|
|
258
282
|
/**
|
|
259
|
-
* Studio elevation (dark)
|
|
260
|
-
*
|
|
261
|
-
*
|
|
262
|
-
*
|
|
263
|
-
* at level 1 and deeper black shadows above it. Defining this here — rather than
|
|
264
|
-
* only in the static `styles/studio.css` — keeps the JS ThemeProvider output and
|
|
265
|
-
* the static dark CSS in lockstep (#1586).
|
|
283
|
+
* Studio elevation (dark) — the hairline at level 1, tighter shadows above it
|
|
284
|
+
* with the inset top highlight. Defined here (not only in the static
|
|
285
|
+
* `styles/studio.css`) so the JS ThemeProvider output and the static dark CSS
|
|
286
|
+
* stay in lockstep (#1586).
|
|
266
287
|
*/
|
|
267
288
|
const darkElevation = {
|
|
268
|
-
0:
|
|
269
|
-
1:
|
|
270
|
-
2:
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
289
|
+
0: noShadow,
|
|
290
|
+
1: hairlineInset,
|
|
291
|
+
2: shadow([
|
|
292
|
+
[1, 2, 0, 28],
|
|
293
|
+
[2, 4, -2, 20],
|
|
294
|
+
], 'var(--smrt-inset-highlight)'),
|
|
295
|
+
3: shadow([
|
|
296
|
+
[1, 2, 0, 30],
|
|
297
|
+
[4, 8, -3, 24],
|
|
298
|
+
], 'var(--smrt-inset-highlight)'),
|
|
299
|
+
4: shadow([
|
|
300
|
+
[2, 3, 0, 32],
|
|
301
|
+
[8, 16, -4, 28],
|
|
302
|
+
], 'var(--smrt-inset-highlight)'),
|
|
303
|
+
5: shadow([
|
|
304
|
+
[2, 4, 0, 34],
|
|
305
|
+
[16, 32, -8, 32],
|
|
306
|
+
], 'var(--smrt-inset-highlight)'),
|
|
274
307
|
};
|
|
275
308
|
/**
|
|
276
309
|
* Studio theme definition
|
|
@@ -287,6 +320,49 @@ export const studioTheme = {
|
|
|
287
320
|
borderRadius: borderRadiusScale,
|
|
288
321
|
duration: durationScale,
|
|
289
322
|
easing: studioEasing,
|
|
323
|
+
glass: { ...opaqueGlass },
|
|
324
|
+
...baselineTokens(lightColors, darkColors),
|
|
325
|
+
shadowColor: { light: 'rgb(60 64 67)', dark: 'rgb(0 0 0)' },
|
|
326
|
+
// Flat: panel equals ground (a hairline separates them); controls sit a hair
|
|
327
|
+
// darker in light and a step lighter in dark; overlays are the highest tier.
|
|
328
|
+
surfaces: {
|
|
329
|
+
light: {
|
|
330
|
+
ground: lightColors.background,
|
|
331
|
+
panel: lightColors.surface,
|
|
332
|
+
control: '#f6f7f8',
|
|
333
|
+
raised: lightColors.surfaceContainerLowest,
|
|
334
|
+
sunken: lightColors.surfaceContainer,
|
|
335
|
+
overlay: lightColors.scrim,
|
|
336
|
+
},
|
|
337
|
+
dark: {
|
|
338
|
+
ground: darkColors.background,
|
|
339
|
+
panel: darkColors.surface,
|
|
340
|
+
control: '#1c1d20',
|
|
341
|
+
raised: darkColors.surfaceContainerHighest,
|
|
342
|
+
sunken: darkColors.surfaceContainerLowest,
|
|
343
|
+
overlay: darkColors.scrim,
|
|
344
|
+
},
|
|
345
|
+
},
|
|
346
|
+
hairlines: {
|
|
347
|
+
light: hairlineMix(12, 32, noInsetHighlight),
|
|
348
|
+
dark: hairlineMix(14, 32, darkInsetHighlight(0.05)),
|
|
349
|
+
},
|
|
350
|
+
states: {
|
|
351
|
+
hover: '0.06',
|
|
352
|
+
pressed: '0.10',
|
|
353
|
+
selected: '0.10',
|
|
354
|
+
focus: '0.10',
|
|
355
|
+
dragged: '0.14',
|
|
356
|
+
disabled: '0.38',
|
|
357
|
+
},
|
|
358
|
+
// Crisp: a 6px radius and a denser control height.
|
|
359
|
+
controls: {
|
|
360
|
+
radius: '0.375rem',
|
|
361
|
+
radiusSmall: 'var(--smrt-radius-sm)',
|
|
362
|
+
height: '2.5rem',
|
|
363
|
+
heightSmall: '2rem',
|
|
364
|
+
weight: '500',
|
|
365
|
+
},
|
|
290
366
|
fontFamily: '"Google Sans Text", "Roboto", "Segoe UI", system-ui, sans-serif',
|
|
291
367
|
};
|
|
292
368
|
export default studioTheme;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
|
+
@layer smrt.reset, smrt.structure, smrt.theme;/**
|
|
2
3
|
* Application baseline for SMRT interfaces.
|
|
3
4
|
*
|
|
4
5
|
* Import this once at an application entry point, alongside the selected
|
|
5
6
|
* theme stylesheet. Components remain independently usable without it.
|
|
6
7
|
*/
|
|
7
8
|
|
|
9
|
+
@layer smrt.reset {
|
|
8
10
|
*,
|
|
9
11
|
*::before,
|
|
10
12
|
*::after {
|
|
@@ -29,3 +31,229 @@ select,
|
|
|
29
31
|
textarea {
|
|
30
32
|
font: inherit;
|
|
31
33
|
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/*
|
|
37
|
+
* Typography (#3868). Headings and utilities consume the theme's type roles,
|
|
38
|
+
* so a preset's display face, tracking and weight reach plain markup. Hosts
|
|
39
|
+
* restyle with unlayered CSS; component styles in smrt.theme still win.
|
|
40
|
+
*/
|
|
41
|
+
@layer smrt.structure {
|
|
42
|
+
:is(body, .smrt-theme-root) {
|
|
43
|
+
font-feature-settings: var(--smrt-font-feature-settings);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
:is(body, .smrt-theme-root) h1 {
|
|
47
|
+
font-family: var(--smrt-typography-display-small-font-family);
|
|
48
|
+
font-size: var(--smrt-typography-display-small-size);
|
|
49
|
+
line-height: var(--smrt-typography-display-small-line-height);
|
|
50
|
+
font-weight: var(--smrt-typography-display-small-weight);
|
|
51
|
+
letter-spacing: var(--smrt-typography-display-small-tracking);
|
|
52
|
+
margin-block: var(--smrt-spacing-5) var(--smrt-spacing-3);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
:is(body, .smrt-theme-root) h2 {
|
|
56
|
+
font-family: var(--smrt-typography-headline-large-font-family);
|
|
57
|
+
font-size: var(--smrt-typography-headline-large-size);
|
|
58
|
+
line-height: var(--smrt-typography-headline-large-line-height);
|
|
59
|
+
font-weight: var(--smrt-typography-headline-large-weight);
|
|
60
|
+
letter-spacing: var(--smrt-typography-headline-large-tracking);
|
|
61
|
+
margin-block: var(--smrt-spacing-5) var(--smrt-spacing-3);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
:is(body, .smrt-theme-root) h3 {
|
|
65
|
+
font-family: var(--smrt-typography-headline-medium-font-family);
|
|
66
|
+
font-size: var(--smrt-typography-headline-medium-size);
|
|
67
|
+
line-height: var(--smrt-typography-headline-medium-line-height);
|
|
68
|
+
font-weight: var(--smrt-typography-headline-medium-weight);
|
|
69
|
+
letter-spacing: var(--smrt-typography-headline-medium-tracking);
|
|
70
|
+
margin-block: var(--smrt-spacing-4) var(--smrt-spacing-2);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
:is(body, .smrt-theme-root) h4 {
|
|
74
|
+
font-family: var(--smrt-typography-headline-small-font-family);
|
|
75
|
+
font-size: var(--smrt-typography-headline-small-size);
|
|
76
|
+
line-height: var(--smrt-typography-headline-small-line-height);
|
|
77
|
+
font-weight: var(--smrt-typography-headline-small-weight);
|
|
78
|
+
letter-spacing: var(--smrt-typography-headline-small-tracking);
|
|
79
|
+
margin-block: var(--smrt-spacing-4) var(--smrt-spacing-2);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
:is(body, .smrt-theme-root) h5 {
|
|
83
|
+
font-family: var(--smrt-typography-title-large-font-family);
|
|
84
|
+
font-size: var(--smrt-typography-title-large-size);
|
|
85
|
+
line-height: var(--smrt-typography-title-large-line-height);
|
|
86
|
+
font-weight: var(--smrt-typography-title-large-weight);
|
|
87
|
+
letter-spacing: var(--smrt-typography-title-large-tracking);
|
|
88
|
+
margin-block: var(--smrt-spacing-4) var(--smrt-spacing-2);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
:is(body, .smrt-theme-root) h6 {
|
|
92
|
+
font-family: var(--smrt-typography-title-medium-font-family);
|
|
93
|
+
font-size: var(--smrt-typography-title-medium-size);
|
|
94
|
+
line-height: var(--smrt-typography-title-medium-line-height);
|
|
95
|
+
font-weight: var(--smrt-typography-title-medium-weight);
|
|
96
|
+
letter-spacing: var(--smrt-typography-title-medium-tracking);
|
|
97
|
+
margin-block: var(--smrt-spacing-4) var(--smrt-spacing-2);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
:is(body, .smrt-theme-root) :is(h1, h2, h3, h4, h5, h6):first-child {
|
|
101
|
+
margin-block-start: 0;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.smrt-display-large {
|
|
105
|
+
font-family: var(--smrt-typography-display-large-font-family);
|
|
106
|
+
font-size: var(--smrt-typography-display-large-size);
|
|
107
|
+
line-height: var(--smrt-typography-display-large-line-height);
|
|
108
|
+
font-weight: var(--smrt-typography-display-large-weight);
|
|
109
|
+
letter-spacing: var(--smrt-typography-display-large-tracking);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.smrt-display-medium {
|
|
113
|
+
font-family: var(--smrt-typography-display-medium-font-family);
|
|
114
|
+
font-size: var(--smrt-typography-display-medium-size);
|
|
115
|
+
line-height: var(--smrt-typography-display-medium-line-height);
|
|
116
|
+
font-weight: var(--smrt-typography-display-medium-weight);
|
|
117
|
+
letter-spacing: var(--smrt-typography-display-medium-tracking);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.smrt-display-small {
|
|
121
|
+
font-family: var(--smrt-typography-display-small-font-family);
|
|
122
|
+
font-size: var(--smrt-typography-display-small-size);
|
|
123
|
+
line-height: var(--smrt-typography-display-small-line-height);
|
|
124
|
+
font-weight: var(--smrt-typography-display-small-weight);
|
|
125
|
+
letter-spacing: var(--smrt-typography-display-small-tracking);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.smrt-headline-large {
|
|
129
|
+
font-family: var(--smrt-typography-headline-large-font-family);
|
|
130
|
+
font-size: var(--smrt-typography-headline-large-size);
|
|
131
|
+
line-height: var(--smrt-typography-headline-large-line-height);
|
|
132
|
+
font-weight: var(--smrt-typography-headline-large-weight);
|
|
133
|
+
letter-spacing: var(--smrt-typography-headline-large-tracking);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.smrt-headline-medium {
|
|
137
|
+
font-family: var(--smrt-typography-headline-medium-font-family);
|
|
138
|
+
font-size: var(--smrt-typography-headline-medium-size);
|
|
139
|
+
line-height: var(--smrt-typography-headline-medium-line-height);
|
|
140
|
+
font-weight: var(--smrt-typography-headline-medium-weight);
|
|
141
|
+
letter-spacing: var(--smrt-typography-headline-medium-tracking);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.smrt-headline-small {
|
|
145
|
+
font-family: var(--smrt-typography-headline-small-font-family);
|
|
146
|
+
font-size: var(--smrt-typography-headline-small-size);
|
|
147
|
+
line-height: var(--smrt-typography-headline-small-line-height);
|
|
148
|
+
font-weight: var(--smrt-typography-headline-small-weight);
|
|
149
|
+
letter-spacing: var(--smrt-typography-headline-small-tracking);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.smrt-title-large {
|
|
153
|
+
font-family: var(--smrt-typography-title-large-font-family);
|
|
154
|
+
font-size: var(--smrt-typography-title-large-size);
|
|
155
|
+
line-height: var(--smrt-typography-title-large-line-height);
|
|
156
|
+
font-weight: var(--smrt-typography-title-large-weight);
|
|
157
|
+
letter-spacing: var(--smrt-typography-title-large-tracking);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.smrt-title-medium {
|
|
161
|
+
font-family: var(--smrt-typography-title-medium-font-family);
|
|
162
|
+
font-size: var(--smrt-typography-title-medium-size);
|
|
163
|
+
line-height: var(--smrt-typography-title-medium-line-height);
|
|
164
|
+
font-weight: var(--smrt-typography-title-medium-weight);
|
|
165
|
+
letter-spacing: var(--smrt-typography-title-medium-tracking);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.smrt-title-small {
|
|
169
|
+
font-family: var(--smrt-typography-title-small-font-family);
|
|
170
|
+
font-size: var(--smrt-typography-title-small-size);
|
|
171
|
+
line-height: var(--smrt-typography-title-small-line-height);
|
|
172
|
+
font-weight: var(--smrt-typography-title-small-weight);
|
|
173
|
+
letter-spacing: var(--smrt-typography-title-small-tracking);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.smrt-body-large {
|
|
177
|
+
font-family: var(--smrt-typography-body-large-font-family);
|
|
178
|
+
font-size: var(--smrt-typography-body-large-size);
|
|
179
|
+
line-height: var(--smrt-typography-body-large-line-height);
|
|
180
|
+
font-weight: var(--smrt-typography-body-large-weight);
|
|
181
|
+
letter-spacing: var(--smrt-typography-body-large-tracking);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.smrt-body-medium {
|
|
185
|
+
font-family: var(--smrt-typography-body-medium-font-family);
|
|
186
|
+
font-size: var(--smrt-typography-body-medium-size);
|
|
187
|
+
line-height: var(--smrt-typography-body-medium-line-height);
|
|
188
|
+
font-weight: var(--smrt-typography-body-medium-weight);
|
|
189
|
+
letter-spacing: var(--smrt-typography-body-medium-tracking);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.smrt-body-small {
|
|
193
|
+
font-family: var(--smrt-typography-body-small-font-family);
|
|
194
|
+
font-size: var(--smrt-typography-body-small-size);
|
|
195
|
+
line-height: var(--smrt-typography-body-small-line-height);
|
|
196
|
+
font-weight: var(--smrt-typography-body-small-weight);
|
|
197
|
+
letter-spacing: var(--smrt-typography-body-small-tracking);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.smrt-label-large {
|
|
201
|
+
font-family: var(--smrt-typography-label-large-font-family);
|
|
202
|
+
font-size: var(--smrt-typography-label-large-size);
|
|
203
|
+
line-height: var(--smrt-typography-label-large-line-height);
|
|
204
|
+
font-weight: var(--smrt-typography-label-large-weight);
|
|
205
|
+
letter-spacing: var(--smrt-typography-label-large-tracking);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.smrt-label-medium {
|
|
209
|
+
font-family: var(--smrt-typography-label-medium-font-family);
|
|
210
|
+
font-size: var(--smrt-typography-label-medium-size);
|
|
211
|
+
line-height: var(--smrt-typography-label-medium-line-height);
|
|
212
|
+
font-weight: var(--smrt-typography-label-medium-weight);
|
|
213
|
+
letter-spacing: var(--smrt-typography-label-medium-tracking);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.smrt-label-small {
|
|
217
|
+
font-family: var(--smrt-typography-label-small-font-family);
|
|
218
|
+
font-size: var(--smrt-typography-label-small-size);
|
|
219
|
+
line-height: var(--smrt-typography-label-small-line-height);
|
|
220
|
+
font-weight: var(--smrt-typography-label-small-weight);
|
|
221
|
+
letter-spacing: var(--smrt-typography-label-small-tracking);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
table,
|
|
225
|
+
time,
|
|
226
|
+
[data-smrt-component="DataTable"],
|
|
227
|
+
[data-smrt-component="Badge"],
|
|
228
|
+
.smrt-tabular {
|
|
229
|
+
font-variant-numeric: tabular-nums;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/* Native chrome and scheme crossfade (premium baseline, #3867). */
|
|
234
|
+
@layer smrt.theme {
|
|
235
|
+
:root,
|
|
236
|
+
.smrt-theme-root {
|
|
237
|
+
accent-color: var(--smrt-accent-color);
|
|
238
|
+
caret-color: var(--smrt-caret-color);
|
|
239
|
+
scrollbar-color: var(--smrt-scrollbar-thumb) var(--smrt-scrollbar-track);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
::selection {
|
|
243
|
+
background: var(--smrt-selection-background);
|
|
244
|
+
color: var(--smrt-selection-color);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/* ThemeProvider sets data-smrt-theme-changing for the length of a scheme switch. */
|
|
248
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
249
|
+
.smrt-theme-root[data-smrt-theme-changing],
|
|
250
|
+
.smrt-theme-root[data-smrt-theme-changing] * {
|
|
251
|
+
transition:
|
|
252
|
+
background-color var(--smrt-duration-scheme) var(--smrt-easing-standard),
|
|
253
|
+
color var(--smrt-duration-scheme) var(--smrt-easing-standard),
|
|
254
|
+
border-color var(--smrt-duration-scheme) var(--smrt-easing-standard),
|
|
255
|
+
fill var(--smrt-duration-scheme) var(--smrt-easing-standard),
|
|
256
|
+
stroke var(--smrt-duration-scheme) var(--smrt-easing-standard);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|