@happyvertical/smrt-ui 0.55.20 → 0.55.22
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/dist/components/calendar/DayView.svelte +1 -1
- package/dist/components/data/CollectionList.svelte +1 -1
- package/dist/components/data/DataTable.svelte +5 -0
- package/dist/components/data/ListSortSelect.svelte +1 -1
- package/dist/components/feedback/Alert.svelte +86 -20
- package/dist/components/feedback/LoadingOverlay.svelte +2 -2
- package/dist/components/feedback/PhoneSheet.svelte +1 -1
- package/dist/components/feedback/Progress.svelte +7 -0
- package/dist/components/feedback/ToastViewport.svelte +1 -1
- package/dist/components/feedback/WorkingStrip.svelte +4 -4
- package/dist/components/forms/CameraCapture.svelte +1 -1
- package/dist/components/forms/Checkbox.svelte +133 -30
- package/dist/components/forms/Combobox.svelte +2 -2
- package/dist/components/forms/Fieldset.svelte +1 -1
- package/dist/components/forms/FilePicker.svelte +1 -1
- package/dist/components/forms/FormActionBar.svelte +2 -2
- package/dist/components/forms/Input.svelte +66 -61
- package/dist/components/forms/InputGroup.svelte +1 -1
- package/dist/components/forms/Listbox.svelte +1 -1
- package/dist/components/forms/MultiSelect.svelte +2 -2
- package/dist/components/forms/Radio.svelte +9 -0
- package/dist/components/forms/RangeSlider.svelte +1 -1
- package/dist/components/forms/SegmentedControl.svelte +7 -2
- package/dist/components/forms/Select.svelte +67 -61
- package/dist/components/forms/SignaturePad.svelte +1 -1
- package/dist/components/forms/Slider.svelte +1 -1
- package/dist/components/forms/StagedControlReview.svelte +4 -4
- package/dist/components/forms/Switch.svelte +130 -28
- package/dist/components/forms/TagsInput.svelte +1 -1
- package/dist/components/forms/Toggle.svelte +12 -0
- package/dist/components/forms/ToggleButton.svelte +6 -1
- package/dist/components/layout/Footer.svelte +1 -1
- package/dist/components/layout/Masthead.svelte +1 -1
- package/dist/components/memberships/MembershipCard.svelte +3 -3
- package/dist/components/nav/FilterChips.svelte +6 -1
- package/dist/components/nav/Tabs.svelte +192 -183
- package/dist/components/nav/Tabs.svelte.d.ts.map +1 -1
- package/dist/components/permissions/PermissionPicker.svelte +4 -4
- package/dist/components/roles/RoleSelector.svelte +2 -2
- package/dist/components/ui/Accordion.svelte +1 -1
- package/dist/components/ui/AccordionItem.svelte +1 -1
- package/dist/components/ui/Badge.svelte +26 -24
- package/dist/components/ui/Button.svelte +101 -115
- package/dist/components/ui/Button.svelte.d.ts +1 -1
- package/dist/components/ui/Card.svelte +44 -57
- package/dist/components/ui/Chip.svelte +68 -58
- package/dist/components/ui/Disclosure.svelte +1 -1
- package/dist/components/ui/IconToggle.svelte +8 -2
- package/dist/styles/unstyled.css +2 -2
- package/dist/svelte/playground/BaseControlsPreview.svelte +2 -2
- package/dist/svelte/playground/CollectionsPreview.svelte +1 -1
- package/dist/svelte/playground/DataTablePreview.svelte +5 -5
- package/dist/svelte/playground/FeedbackPreview.svelte +1 -1
- package/dist/svelte/playground/InteractiveControlsPreview.svelte +1 -1
- package/dist/svelte/playground/StylelessPreview.svelte +35 -2
- package/dist/svelte/playground/StylelessPreview.svelte.d.ts.map +1 -1
- package/dist/themes/README.md +58 -4
- package/dist/themes/ThemeProvider.svelte +9 -0
- package/dist/themes/ThemeProvider.svelte.d.ts.map +1 -1
- package/dist/themes/components/ColorSchemeToggle.svelte +3 -3
- package/dist/themes/components/ThemeSwitcher.svelte +3 -3
- package/dist/themes/forced-colors.d.ts +2 -0
- package/dist/themes/forced-colors.d.ts.map +1 -0
- package/dist/themes/forced-colors.js +49 -0
- package/dist/themes/styles/base.css +80 -1
- package/dist/themes/styles/forced-colors.css +42 -0
- package/package.json +2 -2
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
@layer smrt.reset, smrt.structure, smrt.theme
|
|
2
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
3
|
+
@import url('./forced-colors.css') (forced-colors: active);
|
|
4
|
+
|
|
5
|
+
/**
|
|
3
6
|
* Application baseline for SMRT interfaces.
|
|
4
7
|
*
|
|
5
8
|
* Import this once at an application entry point, alongside the selected
|
|
@@ -257,3 +260,79 @@ time,
|
|
|
257
260
|
}
|
|
258
261
|
}
|
|
259
262
|
}
|
|
263
|
+
|
|
264
|
+
/*
|
|
265
|
+
* Forced colors (#3908). Token level: Windows High Contrast / `forced-colors:
|
|
266
|
+
* active` maps the theme onto the system palette. These two token blocks are
|
|
267
|
+
* deliberately UNLAYERED: preset stylesheets declare their tokens unlayered on
|
|
268
|
+
* `[data-theme][data-color-scheme]`, and an unlayered rule always beats a
|
|
269
|
+
* layered one, so a layered override would never apply. The selectors match
|
|
270
|
+
* whichever element carries the theme attributes (document root, ThemeProvider
|
|
271
|
+
* root or a consumer wrapper) with one more attribute selector than the preset
|
|
272
|
+
* block. The `forced-colors: active` media case is the conditional `@import`
|
|
273
|
+
* at the top of this file (forced-colors.css); the attribute case is the
|
|
274
|
+
* block below. The same values ship as
|
|
275
|
+
* `FORCED_COLORS_TOKENS` (src/themes/forced-colors.ts): ThemeProvider appends
|
|
276
|
+
* them inline so runtime themes cannot win; a unit test keeps both in step.
|
|
277
|
+
* `[data-forced-colors]` is stamped by ThemeProvider and `themeScript()`;
|
|
278
|
+
* tests can set it without media emulation. Components only consume tokens.
|
|
279
|
+
*/
|
|
280
|
+
|
|
281
|
+
[data-forced-colors][data-theme][data-color-scheme] {
|
|
282
|
+
--smrt-hairline-color: CanvasText;
|
|
283
|
+
--smrt-hairline-strong-color: CanvasText;
|
|
284
|
+
--smrt-hairline: 1px solid CanvasText;
|
|
285
|
+
--smrt-hairline-strong: 1px solid CanvasText;
|
|
286
|
+
--smrt-inset-highlight: inset 0 0 0 0 transparent;
|
|
287
|
+
--smrt-elevation-0: 0 0 0 0 transparent;
|
|
288
|
+
--smrt-elevation-1: 0 0 0 0 transparent;
|
|
289
|
+
--smrt-elevation-2: 0 0 0 0 transparent;
|
|
290
|
+
--smrt-elevation-3: 0 0 0 0 transparent;
|
|
291
|
+
--smrt-elevation-4: 0 0 0 0 transparent;
|
|
292
|
+
--smrt-elevation-5: 0 0 0 0 transparent;
|
|
293
|
+
--smrt-focus-ring-color: Highlight;
|
|
294
|
+
--smrt-focus-ring-width: 3px;
|
|
295
|
+
--smrt-focus-ring-offset: 2px;
|
|
296
|
+
--smrt-glass-blur: 0px;
|
|
297
|
+
--smrt-glass-saturation: 100%;
|
|
298
|
+
--smrt-glass-surface: Canvas;
|
|
299
|
+
--smrt-glass-surface-strong: Canvas;
|
|
300
|
+
--smrt-glass-border: CanvasText;
|
|
301
|
+
--smrt-surface-overlay: Canvas;
|
|
302
|
+
--smrt-state-hover: 0;
|
|
303
|
+
--smrt-state-pressed: 0;
|
|
304
|
+
--smrt-state-selected: 0;
|
|
305
|
+
--smrt-state-focus: 0;
|
|
306
|
+
--smrt-state-dragged: 0;
|
|
307
|
+
--smrt-accent-color: Highlight;
|
|
308
|
+
--smrt-caret-color: CanvasText;
|
|
309
|
+
--smrt-selection-background: Highlight;
|
|
310
|
+
--smrt-selection-color: HighlightText;
|
|
311
|
+
--smrt-scrollbar-thumb: CanvasText;
|
|
312
|
+
--smrt-scrollbar-track: Canvas;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/*
|
|
316
|
+
* A translucent state-layer fill cannot be seen in forced colors, so hover is
|
|
317
|
+
* an outline instead. :where() keeps specificity at zero: every component's own
|
|
318
|
+
* focus, selected or outline rule still wins.
|
|
319
|
+
*/
|
|
320
|
+
@layer smrt.theme {
|
|
321
|
+
@media (forced-colors: active) {
|
|
322
|
+
:where(button, [role="button"], [role="tab"], [role="menuitem"], [role="option"], a[href], summary, label):where(:hover):where(:not(:disabled, [aria-disabled="true"])) {
|
|
323
|
+
outline: 1px solid Highlight;
|
|
324
|
+
outline-offset: -1px;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
:where(:disabled, [aria-disabled="true"]) {
|
|
328
|
+
color: GrayText;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/* Elements that rely on the UA focus ring get the token ring instead (a
|
|
332
|
+
solid Highlight ring of a stated width); component rules still win. */
|
|
333
|
+
:where(a[href], button, summary, input, select, textarea, [tabindex], [role="tab"], [role="menuitem"], [role="option"]):where(:focus-visible) {
|
|
334
|
+
outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
|
|
335
|
+
outline-offset: var(--smrt-focus-ring-offset);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Forced colors token layer (#3908), loaded by base.css as
|
|
3
|
+
* `@import url('./forced-colors.css') (forced-colors: active)`. Deliberately
|
|
4
|
+
* UNLAYERED (and a declaration-only block): preset stylesheets declare their
|
|
5
|
+
* tokens unlayered on `[data-theme][data-color-scheme]`, and an unlayered rule
|
|
6
|
+
* always beats a layered one. The repeated `[data-theme]` out-ranks that block
|
|
7
|
+
* by one attribute. Values mirror `FORCED_COLORS_TOKENS`
|
|
8
|
+
* (src/themes/forced-colors.ts); a unit test keeps the copies in step.
|
|
9
|
+
*/
|
|
10
|
+
[data-theme][data-theme][data-color-scheme] {
|
|
11
|
+
--smrt-hairline-color: CanvasText;
|
|
12
|
+
--smrt-hairline-strong-color: CanvasText;
|
|
13
|
+
--smrt-hairline: 1px solid CanvasText;
|
|
14
|
+
--smrt-hairline-strong: 1px solid CanvasText;
|
|
15
|
+
--smrt-inset-highlight: inset 0 0 0 0 transparent;
|
|
16
|
+
--smrt-elevation-0: 0 0 0 0 transparent;
|
|
17
|
+
--smrt-elevation-1: 0 0 0 0 transparent;
|
|
18
|
+
--smrt-elevation-2: 0 0 0 0 transparent;
|
|
19
|
+
--smrt-elevation-3: 0 0 0 0 transparent;
|
|
20
|
+
--smrt-elevation-4: 0 0 0 0 transparent;
|
|
21
|
+
--smrt-elevation-5: 0 0 0 0 transparent;
|
|
22
|
+
--smrt-focus-ring-color: Highlight;
|
|
23
|
+
--smrt-focus-ring-width: 3px;
|
|
24
|
+
--smrt-focus-ring-offset: 2px;
|
|
25
|
+
--smrt-glass-blur: 0px;
|
|
26
|
+
--smrt-glass-saturation: 100%;
|
|
27
|
+
--smrt-glass-surface: Canvas;
|
|
28
|
+
--smrt-glass-surface-strong: Canvas;
|
|
29
|
+
--smrt-glass-border: CanvasText;
|
|
30
|
+
--smrt-surface-overlay: Canvas;
|
|
31
|
+
--smrt-state-hover: 0;
|
|
32
|
+
--smrt-state-pressed: 0;
|
|
33
|
+
--smrt-state-selected: 0;
|
|
34
|
+
--smrt-state-focus: 0;
|
|
35
|
+
--smrt-state-dragged: 0;
|
|
36
|
+
--smrt-accent-color: Highlight;
|
|
37
|
+
--smrt-caret-color: CanvasText;
|
|
38
|
+
--smrt-selection-background: Highlight;
|
|
39
|
+
--smrt-selection-color: HighlightText;
|
|
40
|
+
--smrt-scrollbar-thumb: CanvasText;
|
|
41
|
+
--smrt-scrollbar-track: Canvas;
|
|
42
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-ui",
|
|
3
|
-
"version": "0.55.
|
|
3
|
+
"version": "0.55.22",
|
|
4
4
|
"smrtJsdoc": "strict",
|
|
5
5
|
"description": "Domain-agnostic Svelte 5 UI runtime for SMRT: primitives, i18n client, theme system, and module UI registry",
|
|
6
6
|
"type": "module",
|
|
@@ -155,7 +155,7 @@
|
|
|
155
155
|
"access": "public"
|
|
156
156
|
},
|
|
157
157
|
"dependencies": {
|
|
158
|
-
"@happyvertical/smrt-types": "0.55.
|
|
158
|
+
"@happyvertical/smrt-types": "0.55.22",
|
|
159
159
|
"esm-env": "^1.2.2"
|
|
160
160
|
},
|
|
161
161
|
"peerDependencies": {
|