@happyvertical/smrt-ui 0.55.21 → 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/ListSortSelect.svelte +1 -1
- package/dist/components/feedback/Alert.svelte +83 -22
- package/dist/components/feedback/LoadingOverlay.svelte +2 -2
- package/dist/components/feedback/PhoneSheet.svelte +1 -1
- 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 +130 -36
- 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/RangeSlider.svelte +1 -1
- package/dist/components/forms/SegmentedControl.svelte +2 -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 +127 -35
- package/dist/components/forms/TagsInput.svelte +1 -1
- package/dist/components/forms/ToggleButton.svelte +1 -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 +1 -1
- package/dist/components/nav/Tabs.svelte +189 -190
- 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 +23 -25
- 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 +65 -60
- package/dist/components/ui/Disclosure.svelte +1 -1
- package/dist/components/ui/IconToggle.svelte +2 -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 +1 -1
- package/dist/themes/components/ColorSchemeToggle.svelte +3 -3
- package/dist/themes/components/ThemeSwitcher.svelte +3 -3
- package/package.json +2 -2
|
@@ -45,16 +45,16 @@ const {
|
|
|
45
45
|
</script>
|
|
46
46
|
|
|
47
47
|
<span
|
|
48
|
-
class="
|
|
49
|
-
class:selected
|
|
50
|
-
class:disabled
|
|
51
|
-
class:selectable
|
|
52
|
-
class:closeable data-smrt-component="Chip"
|
|
48
|
+
class="smrt-chip__root smrt-chip__{size}"
|
|
49
|
+
class:smrt-chip__selected={selected}
|
|
50
|
+
class:smrt-chip__disabled={disabled}
|
|
51
|
+
class:smrt-chip__selectable={selectable}
|
|
52
|
+
class:smrt-chip__closeable={closeable} data-smrt-component="Chip"
|
|
53
53
|
>
|
|
54
54
|
{#if selectable}
|
|
55
55
|
<button
|
|
56
56
|
type="button"
|
|
57
|
-
class="chip__body"
|
|
57
|
+
class="smrt-chip__body" data-smrt-part="body"
|
|
58
58
|
aria-pressed={selected}
|
|
59
59
|
{disabled}
|
|
60
60
|
onclick={() => onselect?.()}
|
|
@@ -62,7 +62,7 @@ const {
|
|
|
62
62
|
{#if children}{@render children()}{:else}{label}{/if}
|
|
63
63
|
</button>
|
|
64
64
|
{:else}
|
|
65
|
-
<span class="chip__body">
|
|
65
|
+
<span class="smrt-chip__body" data-smrt-part="body">
|
|
66
66
|
{#if children}{@render children()}{:else}{label}{/if}
|
|
67
67
|
</span>
|
|
68
68
|
{/if}
|
|
@@ -70,7 +70,7 @@ const {
|
|
|
70
70
|
{#if closeable}
|
|
71
71
|
<button
|
|
72
72
|
type="button"
|
|
73
|
-
class="chip__close"
|
|
73
|
+
class="smrt-chip__close" data-smrt-part="close"
|
|
74
74
|
aria-label={label ? `Remove ${label}` : 'Remove'}
|
|
75
75
|
{disabled}
|
|
76
76
|
onclick={() => onclose?.()}
|
|
@@ -94,106 +94,111 @@ const {
|
|
|
94
94
|
|
|
95
95
|
<style>
|
|
96
96
|
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
97
|
-
@layer smrt.
|
|
98
|
-
.
|
|
97
|
+
@layer smrt.structure {
|
|
98
|
+
.smrt-chip__root {
|
|
99
99
|
position: relative;
|
|
100
100
|
display: inline-flex;
|
|
101
101
|
align-items: center;
|
|
102
102
|
gap: var(--smrt-spacing-1);
|
|
103
|
+
max-width: 100%;
|
|
104
|
+
}
|
|
105
|
+
.smrt-chip__root::after {
|
|
106
|
+
content: '';
|
|
107
|
+
position: absolute;
|
|
108
|
+
inset: 0;
|
|
109
|
+
pointer-events: none;
|
|
110
|
+
}
|
|
111
|
+
.smrt-chip__root.smrt-chip__sm {
|
|
112
|
+
padding: 0 var(--smrt-spacing-1);
|
|
113
|
+
}
|
|
114
|
+
.smrt-chip__root.smrt-chip__md {
|
|
115
|
+
min-block-size: var(--smrt-control-height-small);
|
|
116
|
+
padding: 0 var(--smrt-spacing-2);
|
|
117
|
+
}
|
|
118
|
+
.smrt-chip__root.smrt-chip__disabled {
|
|
119
|
+
pointer-events: none;
|
|
120
|
+
}
|
|
121
|
+
.smrt-chip__body {
|
|
122
|
+
padding: var(--smrt-spacing-1) var(--smrt-spacing-1);
|
|
123
|
+
cursor: default;
|
|
124
|
+
white-space: nowrap;
|
|
125
|
+
overflow: hidden;
|
|
126
|
+
text-overflow: ellipsis;
|
|
127
|
+
}
|
|
128
|
+
.smrt-chip__root.smrt-chip__selectable .smrt-chip__body {
|
|
129
|
+
cursor: pointer;
|
|
130
|
+
}
|
|
131
|
+
.smrt-chip__close {
|
|
132
|
+
display: inline-flex;
|
|
133
|
+
align-items: center;
|
|
134
|
+
justify-content: center;
|
|
135
|
+
cursor: pointer;
|
|
136
|
+
padding: var(--smrt-spacing-1);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
@layer smrt.theme {
|
|
140
|
+
.smrt-chip__root {
|
|
103
141
|
border-radius: var(--smrt-control-radius);
|
|
104
142
|
background: var(--smrt-surface-control);
|
|
105
143
|
color: var(--smrt-color-on-surface);
|
|
106
144
|
border: var(--smrt-hairline);
|
|
107
145
|
font-weight: var(--smrt-control-weight);
|
|
108
|
-
max-width: 100%;
|
|
109
146
|
}
|
|
110
|
-
|
|
111
|
-
/* State layer: currentColor mixed at the theme's state opacity. */
|
|
112
|
-
.chip::after {
|
|
113
|
-
content: '';
|
|
114
|
-
position: absolute;
|
|
115
|
-
inset: 0;
|
|
147
|
+
.smrt-chip__root::after {
|
|
116
148
|
border-radius: inherit;
|
|
117
149
|
background: transparent;
|
|
118
|
-
pointer-events: none;
|
|
119
150
|
}
|
|
120
|
-
|
|
121
|
-
.chip.selectable:hover::after {
|
|
151
|
+
.smrt-chip__root.smrt-chip__selectable:hover::after {
|
|
122
152
|
background: color-mix(in srgb, currentColor calc(var(--smrt-state-hover) * 100%), transparent);
|
|
123
153
|
}
|
|
124
|
-
|
|
125
|
-
.chip.selectable:active::after {
|
|
154
|
+
.smrt-chip__root.smrt-chip__selectable:active::after {
|
|
126
155
|
background: color-mix(in srgb, currentColor calc(var(--smrt-state-pressed) * 100%), transparent);
|
|
127
156
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
padding: 0 var(--smrt-spacing-1);
|
|
131
|
-
font-size: var(--smrt-typography-label-small-size, 0.6875rem);
|
|
157
|
+
.smrt-chip__root.smrt-chip__sm {
|
|
158
|
+
font-size: var(--smrt-typography-label-small-size);
|
|
132
159
|
}
|
|
133
|
-
.
|
|
160
|
+
.smrt-chip__root.smrt-chip__sm {
|
|
134
161
|
border-radius: var(--smrt-control-radius-small);
|
|
135
162
|
}
|
|
136
|
-
.
|
|
137
|
-
|
|
138
|
-
padding: 0 var(--smrt-spacing-2);
|
|
139
|
-
font-size: var(--smrt-typography-label-large-size, 0.875rem);
|
|
163
|
+
.smrt-chip__root.smrt-chip__md {
|
|
164
|
+
font-size: var(--smrt-typography-label-large-size);
|
|
140
165
|
}
|
|
141
|
-
|
|
142
|
-
.chip.selected {
|
|
166
|
+
.smrt-chip__root.smrt-chip__selected {
|
|
143
167
|
background: var(--smrt-color-primary-container);
|
|
144
168
|
color: var(--smrt-color-on-primary-container);
|
|
145
169
|
border-color: var(--smrt-color-primary);
|
|
146
170
|
}
|
|
147
|
-
|
|
148
|
-
.chip.disabled {
|
|
171
|
+
.smrt-chip__root.smrt-chip__disabled {
|
|
149
172
|
opacity: var(--smrt-state-disabled);
|
|
150
|
-
pointer-events: none;
|
|
151
173
|
}
|
|
152
|
-
|
|
153
|
-
.chip__body {
|
|
174
|
+
.smrt-chip__body {
|
|
154
175
|
appearance: none;
|
|
155
176
|
background: none;
|
|
156
177
|
border: none;
|
|
157
178
|
color: inherit;
|
|
158
179
|
font: inherit;
|
|
159
|
-
padding: var(--smrt-spacing-1) var(--smrt-spacing-1);
|
|
160
|
-
cursor: default;
|
|
161
|
-
white-space: nowrap;
|
|
162
|
-
overflow: hidden;
|
|
163
|
-
text-overflow: ellipsis;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
.chip.selectable .chip__body {
|
|
167
|
-
cursor: pointer;
|
|
168
180
|
}
|
|
169
|
-
|
|
170
|
-
.chip__close {
|
|
181
|
+
.smrt-chip__close {
|
|
171
182
|
appearance: none;
|
|
172
|
-
display: inline-flex;
|
|
173
|
-
align-items: center;
|
|
174
|
-
justify-content: center;
|
|
175
183
|
background: none;
|
|
176
184
|
border: none;
|
|
177
185
|
color: inherit;
|
|
178
|
-
cursor: pointer;
|
|
179
|
-
padding: var(--smrt-spacing-1);
|
|
180
186
|
border-radius: var(--smrt-radius-full);
|
|
181
187
|
opacity: 0.7;
|
|
182
188
|
}
|
|
183
|
-
.chip__close:hover {
|
|
189
|
+
.smrt-chip__close:hover {
|
|
184
190
|
opacity: 1;
|
|
185
191
|
background: color-mix(in srgb, currentColor calc(var(--smrt-state-hover) * 100%), transparent);
|
|
186
192
|
}
|
|
187
|
-
|
|
188
|
-
.
|
|
189
|
-
.chip__close:focus-visible {
|
|
193
|
+
.smrt-chip__body:focus-visible,
|
|
194
|
+
.smrt-chip__close:focus-visible {
|
|
190
195
|
outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
|
|
191
196
|
outline-offset: var(--smrt-focus-ring-offset);
|
|
192
197
|
}
|
|
193
198
|
/* Forced colors (#3908): system colours where colour alone carries meaning. */
|
|
194
199
|
@media (forced-colors: active) {
|
|
195
|
-
.
|
|
196
|
-
.
|
|
200
|
+
.smrt-chip__root.smrt-chip__selected { border-color: Highlight; outline: var(--smrt-focus-ring-width) solid Highlight; outline-offset: calc(-1 * var(--smrt-focus-ring-width)); }
|
|
201
|
+
.smrt-chip__root.smrt-chip__disabled, .smrt-chip__root.smrt-chip__selected.smrt-chip__disabled { opacity: 1; color: GrayText; border-color: GrayText; outline-color: GrayText; }
|
|
197
202
|
}
|
|
198
203
|
}
|
|
199
204
|
</style>
|
|
@@ -46,7 +46,7 @@ function handleToggle(event: Event) {
|
|
|
46
46
|
<style>
|
|
47
47
|
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
48
48
|
@layer smrt.theme {
|
|
49
|
-
.disclosure { border-bottom:
|
|
49
|
+
.disclosure { border-bottom: var(--smrt-hairline); color: var(--smrt-color-on-surface); }
|
|
50
50
|
summary { display: flex; justify-content: space-between; gap: var(--smrt-spacing-3); padding: var(--smrt-spacing-3) 0; font: var(--smrt-typography-title-small-font); cursor: pointer; list-style: none; }
|
|
51
51
|
summary::-webkit-details-marker { display: none; }
|
|
52
52
|
summary:focus-visible { outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color); outline-offset: var(--smrt-focus-ring-offset); }
|
|
@@ -79,7 +79,7 @@ const name = $derived(count === undefined ? label : `${label} (${count})`);
|
|
|
79
79
|
min-width: 2.75rem;
|
|
80
80
|
min-height: 2.75rem;
|
|
81
81
|
padding: 0;
|
|
82
|
-
border:
|
|
82
|
+
border: var(--smrt-hairline);
|
|
83
83
|
border-radius: var(--smrt-radius-full);
|
|
84
84
|
background: var(--smrt-color-surface-container, var(--smrt-color-surface));
|
|
85
85
|
color: var(--smrt-color-on-surface);
|
|
@@ -129,7 +129,7 @@ const name = $derived(count === undefined ? label : `${label} (${count})`);
|
|
|
129
129
|
/* Outlined, not filled: a surface-coloured face (so the button's edge does
|
|
130
130
|
not show through where the badge overlaps it), a 1px theme outline and
|
|
131
131
|
neutral text, readable on light and dark themes alike. */
|
|
132
|
-
border:
|
|
132
|
+
border: var(--smrt-hairline-strong);
|
|
133
133
|
background: var(--smrt-color-surface);
|
|
134
134
|
color: var(--smrt-color-on-surface-variant);
|
|
135
135
|
font-size: 0.68rem;
|
package/dist/styles/unstyled.css
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* CSS, the --smrt-* tokens, or the data-smrt-component / data-smrt-part hooks.
|
|
11
11
|
*
|
|
12
12
|
* The reverted property list is explicit on purpose. `all: revert-layer` would
|
|
13
|
-
* also drop layout
|
|
14
|
-
*
|
|
13
|
+
* also drop layout from unsorted components, including those nested inside
|
|
14
|
+
* the ten wave-2 pilot primitives. Keep this list in
|
|
15
15
|
* step with the "Styleless mode" section of agents/styling.md.
|
|
16
16
|
*/
|
|
17
17
|
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
@@ -133,7 +133,7 @@ function handleSubmit() {
|
|
|
133
133
|
|
|
134
134
|
.workbench__header {
|
|
135
135
|
padding-bottom: var(--smrt-spacing-4);
|
|
136
|
-
border-bottom:
|
|
136
|
+
border-bottom: var(--smrt-hairline);
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
h4,
|
|
@@ -193,7 +193,7 @@ function handleSubmit() {
|
|
|
193
193
|
.actions {
|
|
194
194
|
align-items: flex-start;
|
|
195
195
|
padding-top: var(--smrt-spacing-5);
|
|
196
|
-
border-top:
|
|
196
|
+
border-top: var(--smrt-hairline);
|
|
197
197
|
}
|
|
198
198
|
|
|
199
199
|
.save-status {
|
|
@@ -55,7 +55,7 @@ const filtered = $derived(
|
|
|
55
55
|
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
56
56
|
@layer smrt.theme {
|
|
57
57
|
.workbench { display: grid; gap: var(--smrt-spacing-4); color: var(--smrt-color-on-surface); }
|
|
58
|
-
header { padding-bottom: var(--smrt-spacing-4); border-bottom:
|
|
58
|
+
header { padding-bottom: var(--smrt-spacing-4); border-bottom: var(--smrt-hairline); } h4, p { margin: 0; } h4 { font: var(--smrt-typography-headline-small-font); } header > p:last-child { max-width: 48rem; margin-top: var(--smrt-spacing-1); color: var(--smrt-color-on-surface-variant); }
|
|
59
59
|
.eyebrow { color: var(--smrt-color-primary); font: var(--smrt-typography-label-small-font); letter-spacing: .1em; text-transform: uppercase; }
|
|
60
60
|
.status { padding: var(--smrt-spacing-1) var(--smrt-spacing-2); border-radius: var(--smrt-radius-full); background: var(--smrt-color-secondary-container); color: var(--smrt-color-on-secondary-container); font: var(--smrt-typography-label-small-font); }
|
|
61
61
|
}
|
|
@@ -514,7 +514,7 @@ function selectAllMatching() {
|
|
|
514
514
|
justify-content: space-between;
|
|
515
515
|
gap: var(--smrt-spacing-4);
|
|
516
516
|
padding-bottom: var(--smrt-spacing-4);
|
|
517
|
-
border-bottom:
|
|
517
|
+
border-bottom: var(--smrt-hairline);
|
|
518
518
|
}
|
|
519
519
|
|
|
520
520
|
h4,
|
|
@@ -561,7 +561,7 @@ function selectAllMatching() {
|
|
|
561
561
|
.table-frame {
|
|
562
562
|
overflow: auto;
|
|
563
563
|
max-width: 100%;
|
|
564
|
-
border:
|
|
564
|
+
border: var(--smrt-hairline);
|
|
565
565
|
border-radius: var(--smrt-radius-medium);
|
|
566
566
|
}
|
|
567
567
|
|
|
@@ -569,14 +569,14 @@ function selectAllMatching() {
|
|
|
569
569
|
display: grid;
|
|
570
570
|
gap: var(--smrt-spacing-3);
|
|
571
571
|
padding-top: var(--smrt-spacing-4);
|
|
572
|
-
border-top:
|
|
572
|
+
border-top: var(--smrt-hairline);
|
|
573
573
|
}
|
|
574
574
|
|
|
575
575
|
.report-fixture {
|
|
576
576
|
display: grid;
|
|
577
577
|
gap: var(--smrt-spacing-3);
|
|
578
578
|
padding-top: var(--smrt-spacing-4);
|
|
579
|
-
border-top:
|
|
579
|
+
border-top: var(--smrt-hairline);
|
|
580
580
|
}
|
|
581
581
|
|
|
582
582
|
.manual-fixture,
|
|
@@ -585,7 +585,7 @@ function selectAllMatching() {
|
|
|
585
585
|
display: grid;
|
|
586
586
|
gap: var(--smrt-spacing-3);
|
|
587
587
|
padding-top: var(--smrt-spacing-4);
|
|
588
|
-
border-top:
|
|
588
|
+
border-top: var(--smrt-hairline);
|
|
589
589
|
}
|
|
590
590
|
|
|
591
591
|
.table-frame--virtual {
|
|
@@ -41,7 +41,7 @@ const menu = [
|
|
|
41
41
|
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
42
42
|
@layer smrt.theme {
|
|
43
43
|
.workbench { display: grid; gap: var(--smrt-spacing-6); color: var(--smrt-color-on-surface); }
|
|
44
|
-
header, .actions, .interaction-row { display: flex; align-items: center; gap: var(--smrt-spacing-3); } header { justify-content: space-between; padding-bottom: var(--smrt-spacing-4); border-bottom:
|
|
44
|
+
header, .actions, .interaction-row { display: flex; align-items: center; gap: var(--smrt-spacing-3); } header { justify-content: space-between; padding-bottom: var(--smrt-spacing-4); border-bottom: var(--smrt-hairline); }
|
|
45
45
|
h4, h5, p { margin: 0; } h4 { font: var(--smrt-typography-headline-small-font); } h5 { margin-bottom: var(--smrt-spacing-3); font: var(--smrt-typography-title-medium-font); }
|
|
46
46
|
.eyebrow { color: var(--smrt-color-primary); font: var(--smrt-typography-label-small-font); letter-spacing: .1em; text-transform: uppercase; }
|
|
47
47
|
.stack { display: grid; gap: var(--smrt-spacing-2); }
|
|
@@ -118,7 +118,7 @@ const identity = (controlId: string) => ({
|
|
|
118
118
|
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
119
119
|
@layer smrt.theme {
|
|
120
120
|
.workbench { display: grid; gap: var(--smrt-spacing-5); color: var(--smrt-color-on-surface); }
|
|
121
|
-
header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--smrt-spacing-5); padding-bottom: var(--smrt-spacing-4); border-bottom:
|
|
121
|
+
header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--smrt-spacing-5); padding-bottom: var(--smrt-spacing-4); border-bottom: var(--smrt-hairline); }
|
|
122
122
|
h4, h5, p { margin: 0; } h4 { font: var(--smrt-typography-headline-small-font); } h5 { margin-bottom: var(--smrt-spacing-3); font: var(--smrt-typography-title-medium-font); }
|
|
123
123
|
header p:not(.eyebrow) { max-width: 40rem; color: var(--smrt-color-on-surface-variant); }
|
|
124
124
|
.eyebrow { color: var(--smrt-color-primary); font: var(--smrt-typography-label-small-font); letter-spacing: .1em; text-transform: uppercase; }
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import Alert from '../../components/feedback/Alert.svelte';
|
|
3
|
+
import Checkbox from '../../components/forms/Checkbox.svelte';
|
|
3
4
|
import Input from '../../components/forms/Input.svelte';
|
|
4
5
|
import Select from '../../components/forms/Select.svelte';
|
|
6
|
+
import Switch from '../../components/forms/Switch.svelte';
|
|
5
7
|
import Tabs from '../../components/nav/Tabs.svelte';
|
|
6
8
|
import Badge from '../../components/ui/Badge.svelte';
|
|
7
9
|
import Button from '../../components/ui/Button.svelte';
|
|
@@ -11,6 +13,30 @@ import unstyledCss from '../../styles/unstyled.css?inline';
|
|
|
11
13
|
|
|
12
14
|
// Native checkbox, outside the catalogue, so the toggle itself is never stripped.
|
|
13
15
|
let styleless = $state(false);
|
|
16
|
+
let allProperties = $state(false);
|
|
17
|
+
// Experimental wave-2 reset. Keep production unstyled.css on its explicit
|
|
18
|
+
// property list until unsorted components nested inside these roots migrate.
|
|
19
|
+
const pilotRoots = [
|
|
20
|
+
'Button',
|
|
21
|
+
'Badge',
|
|
22
|
+
'Chip',
|
|
23
|
+
'Card',
|
|
24
|
+
'Alert',
|
|
25
|
+
'Input',
|
|
26
|
+
'Select',
|
|
27
|
+
'Checkbox',
|
|
28
|
+
'Switch',
|
|
29
|
+
'Tabs',
|
|
30
|
+
]
|
|
31
|
+
.map((name) => `[data-smrt-component="${name}"]`)
|
|
32
|
+
.join(', ');
|
|
33
|
+
const pilotScope = `:is(${pilotRoots})`;
|
|
34
|
+
const pilotSelector = `:is(${pilotScope}, ${pilotScope} *):not(#\\#):not(#\\#):not(#\\#)`;
|
|
35
|
+
const pilotCss = `@layer smrt.theme {
|
|
36
|
+
${pilotSelector}, ${pilotSelector}::before, ${pilotSelector}::after {
|
|
37
|
+
all: revert-layer;
|
|
38
|
+
}
|
|
39
|
+
}`;
|
|
14
40
|
let active = $state('overview');
|
|
15
41
|
|
|
16
42
|
// Svelte does not interpolate text inside a style element, so the stylesheet is
|
|
@@ -19,7 +45,7 @@ $effect(() => {
|
|
|
19
45
|
if (!styleless) return;
|
|
20
46
|
const style = document.createElement('style');
|
|
21
47
|
style.setAttribute('data-smrt-styleless', '');
|
|
22
|
-
style.textContent = unstyledCss;
|
|
48
|
+
style.textContent = unstyledCss + (allProperties ? pilotCss : '');
|
|
23
49
|
document.head.appendChild(style);
|
|
24
50
|
return () => style.remove();
|
|
25
51
|
});
|
|
@@ -49,6 +75,11 @@ const tabs = [
|
|
|
49
75
|
themed look. The page chrome is not a smrt component, so it is unaffected.
|
|
50
76
|
</p>
|
|
51
77
|
|
|
78
|
+
<label class="toggle">
|
|
79
|
+
<input type="checkbox" bind:checked={allProperties} />
|
|
80
|
+
Try all: revert-layer on the ten pilot primitives
|
|
81
|
+
</label>
|
|
82
|
+
|
|
52
83
|
<div class="catalogue">
|
|
53
84
|
<section>
|
|
54
85
|
<h5>Buttons and badges</h5>
|
|
@@ -82,6 +113,8 @@ const tabs = [
|
|
|
82
113
|
<option value="owner">Owner</option>
|
|
83
114
|
<option value="member">Member</option>
|
|
84
115
|
</Select>
|
|
116
|
+
<Checkbox label="Send updates" />
|
|
117
|
+
<Switch label="Enable alerts" />
|
|
85
118
|
</div>
|
|
86
119
|
</section>
|
|
87
120
|
|
|
@@ -96,7 +129,7 @@ const tabs = [
|
|
|
96
129
|
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
97
130
|
@layer smrt.theme {
|
|
98
131
|
.workbench { display: grid; gap: var(--smrt-spacing-6); color: var(--smrt-color-on-surface); }
|
|
99
|
-
header { display: flex; align-items: center; justify-content: space-between; gap: var(--smrt-spacing-3); padding-bottom: var(--smrt-spacing-4); border-bottom:
|
|
132
|
+
header { display: flex; align-items: center; justify-content: space-between; gap: var(--smrt-spacing-3); padding-bottom: var(--smrt-spacing-4); border-bottom: var(--smrt-hairline); }
|
|
100
133
|
h4, h5, p { margin: 0; }
|
|
101
134
|
h4 { font: var(--smrt-typography-headline-small-font); }
|
|
102
135
|
h5 { margin-bottom: var(--smrt-spacing-3); font: var(--smrt-typography-title-medium-font); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StylelessPreview.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/playground/StylelessPreview.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StylelessPreview.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/playground/StylelessPreview.svelte.ts"],"names":[],"mappings":"AAkJA,QAAA,MAAM,gBAAgB,2DAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
|
package/dist/themes/README.md
CHANGED
|
@@ -727,7 +727,7 @@ calc(var(--smrt-button-state-hover, var(--smrt-state-hover)) * 100%), transparen
|
|
|
727
727
|
| `--smrt-surface-overlay` | Modal scrim | `background` of Modal/Drawer backdrops |
|
|
728
728
|
| `--smrt-hairline-color` / `-strong-color` | Quiet and strong edge colours | `border-color`, `outline-color`, dividers |
|
|
729
729
|
| `--smrt-hairline` / `--smrt-hairline-strong` | `1px solid` edge shorthands | `border`, `border-top` etc. on panels (quiet) and controls (strong) |
|
|
730
|
-
| `--smrt-inset-highlight` | Top inner light line (`none`
|
|
730
|
+
| `--smrt-inset-highlight` | Top inner light line (transparent shadow on light, never `none` in a shadow list) | `box-shadow` (layer with an elevation) on raised dark surfaces |
|
|
731
731
|
| `--smrt-state-{hover,pressed,selected,focus,dragged,disabled}` | Unitless state-layer opacities, 0 to 1 | Mix percentage of a state overlay (`calc(var(--smrt-state-hover) * 100%)`); `disabled` as `opacity` |
|
|
732
732
|
| `--smrt-shadow-color` | `rgb(r g b)` shadow base, per scheme | `box-shadow` colour: `rgb(from var(--smrt-shadow-color) r g b / 0.2)` |
|
|
733
733
|
| `--smrt-elevation-0..5` | Existing shadow scale | `box-shadow` |
|
|
@@ -122,7 +122,7 @@ const labels = {
|
|
|
122
122
|
align-items: center;
|
|
123
123
|
gap: var(--smrt-spacing-2, 0.5rem);
|
|
124
124
|
padding: var(--smrt-spacing-2, 0.5rem) var(--smrt-spacing-3, 0.75rem);
|
|
125
|
-
border:
|
|
125
|
+
border: var(--smrt-hairline-strong);
|
|
126
126
|
border-radius: var(--smrt-radius-full);
|
|
127
127
|
background: var(--smrt-color-surface-container-low);
|
|
128
128
|
color: var(--smrt-color-on-surface, inherit);
|
|
@@ -145,7 +145,7 @@ const labels = {
|
|
|
145
145
|
align-items: center;
|
|
146
146
|
gap: var(--smrt-spacing-1, 0.25rem);
|
|
147
147
|
padding: var(--smrt-spacing-1_5, 0.375rem) var(--smrt-spacing-3, 0.75rem);
|
|
148
|
-
border:
|
|
148
|
+
border: var(--smrt-hairline-strong);
|
|
149
149
|
border-radius: var(--smrt-radius-md, 0.5rem);
|
|
150
150
|
background: var(--smrt-color-surface-container-low);
|
|
151
151
|
color: var(--smrt-color-on-surface, inherit);
|
|
@@ -167,7 +167,7 @@ const labels = {
|
|
|
167
167
|
.smrt-color-scheme-toggle__segmented {
|
|
168
168
|
display: inline-flex;
|
|
169
169
|
background: var(--smrt-color-surface-container-lowest);
|
|
170
|
-
border:
|
|
170
|
+
border: var(--smrt-hairline-strong);
|
|
171
171
|
border-radius: var(--smrt-radius-lg, 0.75rem);
|
|
172
172
|
padding: var(--smrt-spacing-0_5, 0.125rem);
|
|
173
173
|
}
|
|
@@ -118,7 +118,7 @@ const themeIcons: Record<ThemePreset, string> = {
|
|
|
118
118
|
.smrt-theme-switcher__select {
|
|
119
119
|
padding: var(--smrt-spacing-1_5, 0.375rem) var(--smrt-spacing-3, 0.75rem);
|
|
120
120
|
border-radius: var(--smrt-radius-md, 0.5rem);
|
|
121
|
-
border:
|
|
121
|
+
border: var(--smrt-hairline-strong);
|
|
122
122
|
background: var(--smrt-color-surface, white);
|
|
123
123
|
color: var(--smrt-color-on-surface, inherit);
|
|
124
124
|
font-size: var(--smrt-typography-body-medium-size, 0.875rem);
|
|
@@ -135,7 +135,7 @@ const themeIcons: Record<ThemePreset, string> = {
|
|
|
135
135
|
align-items: center;
|
|
136
136
|
gap: var(--smrt-spacing-1, 0.25rem);
|
|
137
137
|
padding: var(--smrt-spacing-1_5, 0.375rem) var(--smrt-spacing-3, 0.75rem);
|
|
138
|
-
border:
|
|
138
|
+
border: var(--smrt-hairline-strong);
|
|
139
139
|
border-radius: var(--smrt-radius-md, 0.5rem);
|
|
140
140
|
background: var(--smrt-color-surface-container-low);
|
|
141
141
|
color: var(--smrt-color-on-surface, inherit);
|
|
@@ -157,7 +157,7 @@ const themeIcons: Record<ThemePreset, string> = {
|
|
|
157
157
|
.smrt-theme-switcher__segmented {
|
|
158
158
|
display: inline-flex;
|
|
159
159
|
background: var(--smrt-color-surface-container-lowest);
|
|
160
|
-
border:
|
|
160
|
+
border: var(--smrt-hairline-strong);
|
|
161
161
|
border-radius: var(--smrt-radius-lg, 0.75rem);
|
|
162
162
|
padding: var(--smrt-spacing-0_5, 0.125rem);
|
|
163
163
|
}
|
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": {
|