@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.
- 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
|
@@ -153,9 +153,9 @@ function handleKeydown(event: KeyboardEvent, tabId: string) {
|
|
|
153
153
|
|
|
154
154
|
{#snippet linkTab(tab: Tab)}
|
|
155
155
|
<a
|
|
156
|
-
class="
|
|
156
|
+
class="smrt-tabs__tab-link"
|
|
157
157
|
data-smrt-part="tab"
|
|
158
|
-
class:
|
|
158
|
+
class:smrt-tabs__active={tab.id === active}
|
|
159
159
|
href={tab.disabled ? undefined : tab.href}
|
|
160
160
|
aria-current={tab.id === active ? 'page' : undefined}
|
|
161
161
|
aria-disabled={tab.disabled ? 'true' : undefined}
|
|
@@ -168,40 +168,40 @@ function handleKeydown(event: KeyboardEvent, tabId: string) {
|
|
|
168
168
|
handleClick(tab.id);
|
|
169
169
|
}}
|
|
170
170
|
>
|
|
171
|
-
<span
|
|
171
|
+
<span data-smrt-part="label">{tab.label}</span>
|
|
172
172
|
{#if tab.count !== undefined}
|
|
173
|
-
<span class="
|
|
173
|
+
<span class="smrt-tabs__tab-count" data-smrt-part="count">{tab.count}</span>
|
|
174
174
|
{/if}
|
|
175
175
|
{#if hasBadge(tab)}
|
|
176
|
-
<span class="
|
|
176
|
+
<span class="smrt-tabs__tab-badge" data-smrt-part="badge">{tab.badge}</span>
|
|
177
177
|
{/if}
|
|
178
178
|
</a>
|
|
179
179
|
{/snippet}
|
|
180
180
|
|
|
181
181
|
{#if linkMode}
|
|
182
|
-
<div class="
|
|
182
|
+
<div class="smrt-tabs__container" data-smrt-component="Tabs">
|
|
183
183
|
<nav
|
|
184
|
-
class="
|
|
185
|
-
class:
|
|
186
|
-
class:
|
|
184
|
+
class="smrt-tabs__links" data-smrt-part="list"
|
|
185
|
+
class:smrt-tabs__sm={size === 'sm'}
|
|
186
|
+
class:smrt-tabs__lg={size === 'lg'}
|
|
187
187
|
aria-label={ariaLabel}
|
|
188
188
|
data-shell-tabs
|
|
189
189
|
>
|
|
190
|
-
<div class="
|
|
190
|
+
<div class="smrt-tabs__links-row" data-smrt-part="row" bind:this={linkRow}>
|
|
191
191
|
{#each split.visible as tab (tab.id)}
|
|
192
192
|
{@render linkTab(tab)}
|
|
193
193
|
{/each}
|
|
194
194
|
</div>
|
|
195
195
|
{#if split.overflow.length > 0}
|
|
196
|
-
<details class="
|
|
197
|
-
<summary class="
|
|
198
|
-
<span
|
|
196
|
+
<details class="smrt-tabs__more" data-smrt-part="overflow" bind:this={moreMenu}>
|
|
197
|
+
<summary class="smrt-tabs__tab-link" data-smrt-part="trigger">
|
|
198
|
+
<span data-smrt-part="label">{moreLabel}</span>
|
|
199
199
|
{#if overflowHasBadge}
|
|
200
|
-
<span class="
|
|
201
|
-
<span class="
|
|
200
|
+
<span class="smrt-tabs__tab-dot" data-smrt-part="marker" aria-hidden="true"></span>
|
|
201
|
+
<span class="smrt-tabs__visually-hidden" data-smrt-part="description">({moreBadgeLabel})</span>
|
|
202
202
|
{/if}
|
|
203
203
|
</summary>
|
|
204
|
-
<div class="
|
|
204
|
+
<div class="smrt-tabs__more-menu" data-smrt-part="menu">
|
|
205
205
|
{#each split.overflow as tab (tab.id)}
|
|
206
206
|
{@render linkTab(tab)}
|
|
207
207
|
{/each}
|
|
@@ -210,18 +210,18 @@ function handleKeydown(event: KeyboardEvent, tabId: string) {
|
|
|
210
210
|
{/if}
|
|
211
211
|
</nav>
|
|
212
212
|
{#if children}
|
|
213
|
-
<div class="
|
|
213
|
+
<div class="smrt-tabs__tab-panel" data-smrt-part="panel">
|
|
214
214
|
{@render children()}
|
|
215
215
|
</div>
|
|
216
216
|
{/if}
|
|
217
217
|
</div>
|
|
218
218
|
{:else}
|
|
219
|
-
<div class="
|
|
219
|
+
<div class="smrt-tabs__container" data-smrt-component="Tabs">
|
|
220
220
|
<div
|
|
221
|
-
class="
|
|
222
|
-
class:
|
|
223
|
-
class:
|
|
224
|
-
class:
|
|
221
|
+
class="smrt-tabs__nav" data-smrt-part="list"
|
|
222
|
+
class:smrt-tabs__sm={size === 'sm'}
|
|
223
|
+
class:smrt-tabs__lg={size === 'lg'}
|
|
224
|
+
class:smrt-tabs__secondary={variant === 'secondary'}
|
|
225
225
|
role="tablist"
|
|
226
226
|
aria-label={ariaLabel}
|
|
227
227
|
bind:this={tablistEl}
|
|
@@ -229,8 +229,8 @@ function handleKeydown(event: KeyboardEvent, tabId: string) {
|
|
|
229
229
|
{#each tabs as tab (tab.id)}
|
|
230
230
|
<button
|
|
231
231
|
type="button"
|
|
232
|
-
class="
|
|
233
|
-
class:
|
|
232
|
+
class="smrt-tabs__tab-button" data-smrt-part="tab"
|
|
233
|
+
class:smrt-tabs__active={tab.id === active}
|
|
234
234
|
disabled={tab.disabled}
|
|
235
235
|
role="tab"
|
|
236
236
|
id="tab-{instanceId}-{tab.id}"
|
|
@@ -242,24 +242,24 @@ function handleKeydown(event: KeyboardEvent, tabId: string) {
|
|
|
242
242
|
onkeydown={(e) => handleKeydown(e, tab.id)}
|
|
243
243
|
use:ripple
|
|
244
244
|
>
|
|
245
|
-
<span class="
|
|
246
|
-
<span
|
|
245
|
+
<span class="smrt-tabs__tab-content-wrapper" data-smrt-part="body">
|
|
246
|
+
<span data-smrt-part="label">{tab.label}</span>
|
|
247
247
|
{#if tab.count !== undefined}
|
|
248
|
-
<span class="
|
|
248
|
+
<span class="smrt-tabs__tab-count" data-smrt-part="count">{tab.count}</span>
|
|
249
249
|
{/if}
|
|
250
250
|
{#if hasBadge(tab)}
|
|
251
|
-
<span class="
|
|
251
|
+
<span class="smrt-tabs__tab-badge" data-smrt-part="badge">{tab.badge}</span>
|
|
252
252
|
{/if}
|
|
253
253
|
</span>
|
|
254
|
-
<div class="
|
|
254
|
+
<div class="smrt-tabs__active-indicator" data-smrt-part="indicator"></div>
|
|
255
255
|
</button>
|
|
256
256
|
{/each}
|
|
257
257
|
</div>
|
|
258
258
|
|
|
259
259
|
{#if children}
|
|
260
|
-
<div
|
|
261
|
-
class="
|
|
262
|
-
role="tabpanel"
|
|
260
|
+
<div
|
|
261
|
+
class="smrt-tabs__tab-panel" data-smrt-part="panel"
|
|
262
|
+
role="tabpanel"
|
|
263
263
|
id="tab-panel-{instanceId}"
|
|
264
264
|
aria-labelledby="tab-{instanceId}-{active}"
|
|
265
265
|
>
|
|
@@ -271,20 +271,17 @@ function handleKeydown(event: KeyboardEvent, tabId: string) {
|
|
|
271
271
|
|
|
272
272
|
<style>
|
|
273
273
|
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
274
|
-
@layer smrt.
|
|
275
|
-
.
|
|
274
|
+
@layer smrt.structure {
|
|
275
|
+
.smrt-tabs__container {
|
|
276
276
|
display: flex;
|
|
277
277
|
flex-direction: column;
|
|
278
278
|
width: 100%;
|
|
279
279
|
}
|
|
280
|
-
|
|
281
|
-
.tabs-nav {
|
|
280
|
+
.smrt-tabs__nav {
|
|
282
281
|
display: flex;
|
|
283
|
-
border-bottom: var(--smrt-hairline);
|
|
284
282
|
width: 100%;
|
|
285
283
|
}
|
|
286
|
-
|
|
287
|
-
.tab-button {
|
|
284
|
+
.smrt-tabs__tab-button {
|
|
288
285
|
flex: 1;
|
|
289
286
|
display: inline-flex;
|
|
290
287
|
flex-direction: column;
|
|
@@ -292,137 +289,66 @@ function handleKeydown(event: KeyboardEvent, tabId: string) {
|
|
|
292
289
|
justify-content: center;
|
|
293
290
|
padding: 0 var(--smrt-spacing-4);
|
|
294
291
|
height: 48px;
|
|
295
|
-
font: var(--smrt-typography-title-small-font);
|
|
296
|
-
font-weight: var(--smrt-control-weight);
|
|
297
|
-
color: var(--smrt-color-on-surface-variant);
|
|
298
|
-
background: transparent;
|
|
299
|
-
border: none;
|
|
300
|
-
border-radius: var(--smrt-control-radius) var(--smrt-control-radius) 0 0;
|
|
301
292
|
cursor: pointer;
|
|
302
|
-
transition: all 200ms cubic-bezier(0.2, 0, 0, 1);
|
|
303
293
|
position: relative;
|
|
304
294
|
overflow: hidden;
|
|
305
295
|
min-width: 90px;
|
|
306
296
|
}
|
|
307
|
-
|
|
308
|
-
.sm .tab-button {
|
|
297
|
+
.smrt-tabs__sm .smrt-tabs__tab-button {
|
|
309
298
|
height: 40px;
|
|
310
|
-
font: var(--smrt-typography-label-large-font);
|
|
311
299
|
}
|
|
312
|
-
|
|
313
|
-
.lg .tab-button {
|
|
300
|
+
.smrt-tabs__lg .smrt-tabs__tab-button {
|
|
314
301
|
height: 56px;
|
|
315
|
-
font: var(--smrt-typography-title-medium-font);
|
|
316
302
|
}
|
|
317
|
-
|
|
318
|
-
/* State layer: currentColor mixed at the theme's state opacity. */
|
|
319
|
-
.tab-button::after {
|
|
303
|
+
.smrt-tabs__tab-button::after {
|
|
320
304
|
content: '';
|
|
321
305
|
position: absolute;
|
|
322
306
|
inset: 0;
|
|
323
|
-
border-radius: inherit;
|
|
324
|
-
background: transparent;
|
|
325
307
|
pointer-events: none;
|
|
326
308
|
}
|
|
327
|
-
|
|
328
|
-
.tab-button:hover:not(:disabled) {
|
|
329
|
-
color: var(--smrt-color-on-surface);
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
.tab-button:hover:not(:disabled)::after {
|
|
333
|
-
background: color-mix(in srgb, currentColor calc(var(--smrt-state-hover) * 100%), transparent);
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
.tab-button:active:not(:disabled)::after {
|
|
337
|
-
background: color-mix(in srgb, currentColor calc(var(--smrt-state-pressed) * 100%), transparent);
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
.tab-button.active::after {
|
|
341
|
-
background: color-mix(in srgb, currentColor calc(var(--smrt-state-selected) * 100%), transparent);
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
.tab-button:focus-visible {
|
|
345
|
-
outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
|
|
346
|
-
outline-offset: calc(var(--smrt-focus-ring-width) * -1);
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
.tab-button.active {
|
|
350
|
-
color: var(--smrt-color-primary);
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
.tab-button:disabled {
|
|
354
|
-
opacity: var(--smrt-state-disabled);
|
|
309
|
+
.smrt-tabs__tab-button:disabled {
|
|
355
310
|
cursor: not-allowed;
|
|
356
311
|
}
|
|
357
|
-
|
|
358
|
-
.tab-content-wrapper {
|
|
312
|
+
.smrt-tabs__tab-content-wrapper {
|
|
359
313
|
display: flex;
|
|
360
314
|
align-items: center;
|
|
361
315
|
gap: var(--smrt-spacing-2);
|
|
362
316
|
height: 100%;
|
|
363
317
|
}
|
|
364
|
-
|
|
365
|
-
.tab-count {
|
|
366
|
-
font: var(--smrt-typography-label-small-font);
|
|
367
|
-
opacity: 0.7;
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
.active-indicator {
|
|
318
|
+
.smrt-tabs__active-indicator {
|
|
371
319
|
position: absolute;
|
|
372
320
|
bottom: 0;
|
|
373
321
|
height: 3px;
|
|
374
|
-
background-color: var(--smrt-color-primary);
|
|
375
|
-
border-radius: var(--smrt-radius-sm) var(--smrt-radius-sm) 0 0;
|
|
376
|
-
transition: width 200ms, opacity 200ms;
|
|
377
322
|
width: 0;
|
|
378
|
-
opacity: 0;
|
|
379
323
|
}
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
width: 40px; /* Primary variant indicator width */
|
|
383
|
-
opacity: 1;
|
|
324
|
+
.smrt-tabs__active .smrt-tabs__active-indicator {
|
|
325
|
+
width: 40px;
|
|
384
326
|
}
|
|
385
|
-
|
|
386
|
-
/* Secondary variant - full width indicator */
|
|
387
|
-
.secondary .active .active-indicator {
|
|
327
|
+
.smrt-tabs__secondary .smrt-tabs__active .smrt-tabs__active-indicator {
|
|
388
328
|
width: 100%;
|
|
389
329
|
height: 2px;
|
|
390
330
|
}
|
|
391
|
-
|
|
392
|
-
.tab-panel {
|
|
331
|
+
.smrt-tabs__tab-panel {
|
|
393
332
|
padding-top: 1.5rem;
|
|
394
333
|
}
|
|
395
|
-
|
|
396
|
-
.tab-badge {
|
|
334
|
+
.smrt-tabs__tab-badge {
|
|
397
335
|
min-width: 1.25rem;
|
|
398
336
|
padding: 0.05rem 0.4rem;
|
|
399
|
-
border-radius: 999px;
|
|
400
|
-
background: var(--smrt-surface-sunken);
|
|
401
|
-
color: var(--smrt-color-on-surface);
|
|
402
|
-
font: var(--smrt-typography-label-small-font);
|
|
403
|
-
font-weight: var(--smrt-typography-weight-bold, 700);
|
|
404
|
-
text-align: center;
|
|
405
337
|
}
|
|
406
|
-
|
|
407
|
-
/* Link tabs: a navigation row, one URL per tab. */
|
|
408
|
-
.tabs-links {
|
|
338
|
+
.smrt-tabs__links {
|
|
409
339
|
display: flex;
|
|
410
340
|
align-items: stretch;
|
|
411
341
|
gap: var(--smrt-spacing-1);
|
|
412
342
|
width: 100%;
|
|
413
|
-
border-bottom: var(--smrt-hairline);
|
|
414
343
|
}
|
|
415
|
-
|
|
416
|
-
.tabs-links-row {
|
|
344
|
+
.smrt-tabs__links-row {
|
|
417
345
|
display: flex;
|
|
418
346
|
flex: 1 1 auto;
|
|
419
347
|
min-width: 0;
|
|
420
348
|
gap: var(--smrt-spacing-1);
|
|
421
349
|
overflow-x: auto;
|
|
422
|
-
scrollbar-width: thin;
|
|
423
350
|
}
|
|
424
|
-
|
|
425
|
-
.tab-link {
|
|
351
|
+
.smrt-tabs__tab-link {
|
|
426
352
|
display: inline-flex;
|
|
427
353
|
flex: 0 0 auto;
|
|
428
354
|
align-items: center;
|
|
@@ -430,108 +356,181 @@ function handleKeydown(event: KeyboardEvent, tabId: string) {
|
|
|
430
356
|
min-height: var(--smrt-control-height);
|
|
431
357
|
padding: 0 var(--smrt-spacing-4);
|
|
432
358
|
margin-bottom: -1px;
|
|
359
|
+
white-space: nowrap;
|
|
360
|
+
cursor: pointer;
|
|
361
|
+
}
|
|
362
|
+
.smrt-tabs__links.smrt-tabs__sm .smrt-tabs__tab-link {
|
|
363
|
+
min-height: var(--smrt-control-height-small);
|
|
364
|
+
}
|
|
365
|
+
.smrt-tabs__links.smrt-tabs__lg .smrt-tabs__tab-link {
|
|
366
|
+
min-height: 56px;
|
|
367
|
+
}
|
|
368
|
+
.smrt-tabs__tab-link[aria-disabled='true'] {
|
|
369
|
+
cursor: not-allowed;
|
|
370
|
+
}
|
|
371
|
+
.smrt-tabs__tab-dot {
|
|
372
|
+
width: 0.5rem;
|
|
373
|
+
height: 0.5rem;
|
|
374
|
+
}
|
|
375
|
+
.smrt-tabs__more {
|
|
376
|
+
position: relative;
|
|
377
|
+
flex: 0 0 auto;
|
|
378
|
+
}
|
|
379
|
+
.smrt-tabs__more summary {
|
|
380
|
+
list-style: none;
|
|
381
|
+
}
|
|
382
|
+
.smrt-tabs__more summary::-webkit-details-marker {
|
|
383
|
+
display: none;
|
|
384
|
+
}
|
|
385
|
+
.smrt-tabs__more-menu {
|
|
386
|
+
position: absolute;
|
|
387
|
+
inset-inline-end: 0;
|
|
388
|
+
z-index: var(--smrt-z-index-dropdown);
|
|
389
|
+
display: grid;
|
|
390
|
+
min-width: 12rem;
|
|
391
|
+
padding: var(--smrt-spacing-1);
|
|
392
|
+
}
|
|
393
|
+
.smrt-tabs__more-menu .smrt-tabs__tab-link {
|
|
394
|
+
margin: 0;
|
|
395
|
+
}
|
|
396
|
+
.smrt-tabs__visually-hidden {
|
|
397
|
+
position: absolute;
|
|
398
|
+
width: 1px;
|
|
399
|
+
height: 1px;
|
|
400
|
+
overflow: hidden;
|
|
401
|
+
clip: rect(0 0 0 0);
|
|
402
|
+
white-space: nowrap;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
@layer smrt.theme {
|
|
406
|
+
.smrt-tabs__nav {
|
|
407
|
+
border-bottom: var(--smrt-hairline);
|
|
408
|
+
}
|
|
409
|
+
.smrt-tabs__tab-button {
|
|
410
|
+
font: var(--smrt-typography-title-small-font);
|
|
411
|
+
font-weight: var(--smrt-control-weight);
|
|
412
|
+
color: var(--smrt-color-on-surface-variant);
|
|
413
|
+
background: transparent;
|
|
414
|
+
border: none;
|
|
415
|
+
border-radius: var(--smrt-control-radius) var(--smrt-control-radius) 0 0;
|
|
416
|
+
transition: all 200ms cubic-bezier(0.2, 0, 0, 1);
|
|
417
|
+
}
|
|
418
|
+
.smrt-tabs__sm .smrt-tabs__tab-button {
|
|
419
|
+
font: var(--smrt-typography-label-large-font);
|
|
420
|
+
}
|
|
421
|
+
.smrt-tabs__lg .smrt-tabs__tab-button {
|
|
422
|
+
font: var(--smrt-typography-title-medium-font);
|
|
423
|
+
}
|
|
424
|
+
.smrt-tabs__tab-button::after {
|
|
425
|
+
border-radius: inherit;
|
|
426
|
+
background: transparent;
|
|
427
|
+
}
|
|
428
|
+
.smrt-tabs__tab-button:hover:not(:disabled) {
|
|
429
|
+
color: var(--smrt-color-on-surface);
|
|
430
|
+
}
|
|
431
|
+
.smrt-tabs__tab-button:hover:not(:disabled)::after {
|
|
432
|
+
background: color-mix(in srgb, currentColor calc(var(--smrt-state-hover) * 100%), transparent);
|
|
433
|
+
}
|
|
434
|
+
.smrt-tabs__tab-button:active:not(:disabled)::after {
|
|
435
|
+
background: color-mix(in srgb, currentColor calc(var(--smrt-state-pressed) * 100%), transparent);
|
|
436
|
+
}
|
|
437
|
+
.smrt-tabs__tab-button.smrt-tabs__active::after {
|
|
438
|
+
background: color-mix(in srgb, currentColor calc(var(--smrt-state-selected) * 100%), transparent);
|
|
439
|
+
}
|
|
440
|
+
.smrt-tabs__tab-button:focus-visible {
|
|
441
|
+
outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
|
|
442
|
+
outline-offset: calc(var(--smrt-focus-ring-width) * -1);
|
|
443
|
+
}
|
|
444
|
+
.smrt-tabs__tab-button.smrt-tabs__active {
|
|
445
|
+
color: var(--smrt-color-primary);
|
|
446
|
+
}
|
|
447
|
+
.smrt-tabs__tab-button:disabled {
|
|
448
|
+
opacity: var(--smrt-state-disabled);
|
|
449
|
+
}
|
|
450
|
+
.smrt-tabs__tab-count {
|
|
451
|
+
font: var(--smrt-typography-label-small-font);
|
|
452
|
+
opacity: 0.7;
|
|
453
|
+
}
|
|
454
|
+
.smrt-tabs__active-indicator {
|
|
455
|
+
background-color: var(--smrt-color-primary);
|
|
456
|
+
border-radius: var(--smrt-radius-sm) var(--smrt-radius-sm) 0 0;
|
|
457
|
+
transition: width 200ms, opacity 200ms;
|
|
458
|
+
opacity: 0;
|
|
459
|
+
}
|
|
460
|
+
.smrt-tabs__active .smrt-tabs__active-indicator {
|
|
461
|
+
opacity: 1;
|
|
462
|
+
}
|
|
463
|
+
.smrt-tabs__tab-badge {
|
|
464
|
+
border-radius: 999px;
|
|
465
|
+
background: var(--smrt-surface-sunken);
|
|
466
|
+
color: var(--smrt-color-on-surface);
|
|
467
|
+
font: var(--smrt-typography-label-small-font);
|
|
468
|
+
font-weight: var(--smrt-typography-weight-bold);
|
|
469
|
+
text-align: center;
|
|
470
|
+
}
|
|
471
|
+
.smrt-tabs__links {
|
|
472
|
+
border-bottom: var(--smrt-hairline);
|
|
473
|
+
}
|
|
474
|
+
.smrt-tabs__links-row {
|
|
475
|
+
scrollbar-width: thin;
|
|
476
|
+
}
|
|
477
|
+
.smrt-tabs__tab-link {
|
|
433
478
|
border-radius: var(--smrt-control-radius) var(--smrt-control-radius) 0 0;
|
|
434
479
|
border-bottom: 2px solid transparent;
|
|
435
480
|
color: var(--smrt-color-on-surface-variant);
|
|
436
481
|
font: var(--smrt-typography-title-small-font);
|
|
437
482
|
font-weight: var(--smrt-control-weight);
|
|
438
483
|
text-decoration: none;
|
|
439
|
-
white-space: nowrap;
|
|
440
|
-
cursor: pointer;
|
|
441
484
|
}
|
|
442
|
-
|
|
443
|
-
.tabs-links.sm .tab-link {
|
|
444
|
-
min-height: var(--smrt-control-height-small);
|
|
485
|
+
.smrt-tabs__links.smrt-tabs__sm .smrt-tabs__tab-link {
|
|
445
486
|
border-radius: var(--smrt-control-radius-small) var(--smrt-control-radius-small) 0 0;
|
|
446
487
|
font: var(--smrt-typography-label-large-font);
|
|
447
488
|
}
|
|
448
|
-
|
|
449
|
-
.tabs-links.lg .tab-link {
|
|
450
|
-
min-height: 56px;
|
|
489
|
+
.smrt-tabs__links.smrt-tabs__lg .smrt-tabs__tab-link {
|
|
451
490
|
font: var(--smrt-typography-title-medium-font);
|
|
452
491
|
}
|
|
453
|
-
|
|
454
|
-
.tab-link:hover {
|
|
492
|
+
.smrt-tabs__tab-link:hover {
|
|
455
493
|
color: var(--smrt-color-on-surface);
|
|
456
494
|
background: color-mix(in srgb, currentColor calc(var(--smrt-state-hover) * 100%), transparent);
|
|
457
495
|
}
|
|
458
|
-
|
|
459
|
-
.tab-link:active {
|
|
496
|
+
.smrt-tabs__tab-link:active {
|
|
460
497
|
background: color-mix(in srgb, currentColor calc(var(--smrt-state-pressed) * 100%), transparent);
|
|
461
498
|
}
|
|
462
|
-
|
|
463
|
-
.tab-link.active {
|
|
499
|
+
.smrt-tabs__tab-link.smrt-tabs__active {
|
|
464
500
|
border-bottom-color: var(--smrt-color-primary);
|
|
465
501
|
color: var(--smrt-color-primary);
|
|
466
502
|
}
|
|
467
|
-
|
|
468
|
-
.tab-link[aria-disabled='true'] {
|
|
503
|
+
.smrt-tabs__tab-link[aria-disabled='true'] {
|
|
469
504
|
opacity: var(--smrt-state-disabled);
|
|
470
|
-
cursor: not-allowed;
|
|
471
505
|
}
|
|
472
|
-
|
|
473
|
-
.tab-link:focus-visible {
|
|
506
|
+
.smrt-tabs__tab-link:focus-visible {
|
|
474
507
|
outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
|
|
475
508
|
outline-offset: calc(var(--smrt-focus-ring-width) * -1);
|
|
476
509
|
}
|
|
477
|
-
|
|
478
|
-
.tab-dot {
|
|
479
|
-
width: 0.5rem;
|
|
480
|
-
height: 0.5rem;
|
|
510
|
+
.smrt-tabs__tab-dot {
|
|
481
511
|
border-radius: 999px;
|
|
482
512
|
background: var(--smrt-color-primary);
|
|
483
513
|
}
|
|
484
|
-
|
|
485
|
-
.tabs-more {
|
|
486
|
-
position: relative;
|
|
487
|
-
flex: 0 0 auto;
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
.tabs-more summary {
|
|
491
|
-
list-style: none;
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
.tabs-more summary::-webkit-details-marker {
|
|
495
|
-
display: none;
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
.tabs-more-menu {
|
|
499
|
-
position: absolute;
|
|
500
|
-
inset-inline-end: 0;
|
|
501
|
-
z-index: var(--smrt-z-index-dropdown, 20);
|
|
502
|
-
display: grid;
|
|
503
|
-
min-width: 12rem;
|
|
504
|
-
padding: var(--smrt-spacing-1);
|
|
514
|
+
.smrt-tabs__more-menu {
|
|
505
515
|
border: var(--smrt-hairline);
|
|
506
|
-
border-radius: var(--smrt-radius-small
|
|
516
|
+
border-radius: var(--smrt-radius-small);
|
|
507
517
|
background: var(--smrt-glass-surface-strong);
|
|
508
518
|
backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
509
519
|
box-shadow: var(--smrt-inset-highlight), var(--smrt-elevation-3);
|
|
510
520
|
}
|
|
511
|
-
|
|
512
|
-
.tabs-more-menu .tab-link {
|
|
513
|
-
margin: 0;
|
|
521
|
+
.smrt-tabs__more-menu .smrt-tabs__tab-link {
|
|
514
522
|
border-bottom: 0;
|
|
515
|
-
border-radius: var(--smrt-radius-extra-small
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
.visually-hidden {
|
|
519
|
-
position: absolute;
|
|
520
|
-
width: 1px;
|
|
521
|
-
height: 1px;
|
|
522
|
-
overflow: hidden;
|
|
523
|
-
clip: rect(0 0 0 0);
|
|
524
|
-
white-space: nowrap;
|
|
523
|
+
border-radius: var(--smrt-radius-extra-small);
|
|
525
524
|
}
|
|
526
525
|
/* Forced colors (#3908): system colours where colour alone carries meaning. */
|
|
527
526
|
@media (forced-colors: active) {
|
|
528
|
-
.
|
|
529
|
-
.
|
|
530
|
-
.
|
|
531
|
-
.
|
|
532
|
-
.
|
|
533
|
-
.
|
|
534
|
-
.
|
|
527
|
+
.smrt-tabs__active-indicator { background-color: Highlight; }
|
|
528
|
+
.smrt-tabs__tab-button.smrt-tabs__active, .smrt-tabs__tab-link.smrt-tabs__active { color: Highlight; }
|
|
529
|
+
.smrt-tabs__tab-link { border-bottom-color: Canvas; }
|
|
530
|
+
.smrt-tabs__tab-link.smrt-tabs__active { border-bottom-color: Highlight; }
|
|
531
|
+
.smrt-tabs__tab-dot { background: CanvasText; }
|
|
532
|
+
.smrt-tabs__tab-badge { background: Canvas; border: var(--smrt-hairline-strong); }
|
|
533
|
+
.smrt-tabs__tab-button:disabled, .smrt-tabs__tab-link[aria-disabled='true'] { opacity: 1; color: GrayText; }
|
|
535
534
|
}
|
|
536
535
|
}
|
|
537
|
-
</style>
|
|
536
|
+
</style>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/nav/Tabs.svelte.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAGtC,MAAM,WAAW,KAAK;IACpB,qBAAqB;IACrB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,mBAAmB;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,qBAAqB;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IAClC,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"Tabs.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/nav/Tabs.svelte.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAGtC,MAAM,WAAW,KAAK;IACpB,qBAAqB;IACrB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,mBAAmB;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,qBAAqB;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IAClC,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAgMD,QAAA,MAAM,IAAI,2CAAwC,CAAC;AACnD,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;AACpC,eAAe,IAAI,CAAC"}
|
|
@@ -199,14 +199,14 @@ function matches(permission: PermissionPickerItem, category: string): boolean {
|
|
|
199
199
|
.search { display: grid; flex: 1 1 16rem; max-inline-size: 28rem; gap: var(--smrt-spacing-1); color: var(--smrt-color-on-surface); font: var(--smrt-typography-label-medium-font); }
|
|
200
200
|
fieldset { min-inline-size: 0; margin: 0; padding: 0; border: 0; }
|
|
201
201
|
.groups { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(20rem, 100%), 1fr)); gap: var(--smrt-spacing-4); align-items: start; }
|
|
202
|
-
.group { min-inline-size: 0; border:
|
|
202
|
+
.group { min-inline-size: 0; border: var(--smrt-hairline); border-radius: var(--smrt-radius-medium); background: var(--smrt-color-surface); }
|
|
203
203
|
summary { display: flex; min-block-size: 2.75rem; align-items: center; justify-content: space-between; gap: var(--smrt-spacing-3); padding: var(--smrt-spacing-3) var(--smrt-spacing-4); color: var(--smrt-color-on-surface); font: var(--smrt-typography-title-medium-font); cursor: pointer; }
|
|
204
204
|
summary:focus-visible { outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color); outline-offset: var(--smrt-focus-ring-offset); }
|
|
205
205
|
.selected-count { flex: 0 0 auto; color: var(--smrt-color-on-surface-variant); font: var(--smrt-typography-label-medium-font); }
|
|
206
|
-
.choices { display: grid; gap: var(--smrt-spacing-4); padding: 0 var(--smrt-spacing-4) var(--smrt-spacing-4); border-block-start:
|
|
206
|
+
.choices { display: grid; gap: var(--smrt-spacing-4); padding: 0 var(--smrt-spacing-4) var(--smrt-spacing-4); border-block-start: var(--smrt-hairline); padding-block-start: var(--smrt-spacing-4); }
|
|
207
207
|
.choice { display: grid; min-inline-size: 0; gap: var(--smrt-spacing-1); }
|
|
208
|
-
.choice :global(
|
|
209
|
-
.choice :global(
|
|
208
|
+
.choice :global([data-smrt-component="Checkbox"]) { min-inline-size: 0; }
|
|
209
|
+
.choice :global([data-smrt-component="Checkbox"] [data-smrt-part="label"]), code, .choice p { overflow-wrap: anywhere; }
|
|
210
210
|
code { padding-inline-start: calc(1.125rem + var(--smrt-spacing-2)); }
|
|
211
211
|
.choice p { padding-inline-start: calc(1.125rem + var(--smrt-spacing-2)); }
|
|
212
212
|
.no-results { padding: var(--smrt-spacing-4); border-radius: var(--smrt-radius-medium); background: var(--smrt-color-surface-container-low); }
|
|
@@ -207,7 +207,7 @@ $effect(() => {
|
|
|
207
207
|
width: 100%;
|
|
208
208
|
padding: 0.5rem 0.75rem;
|
|
209
209
|
background: var(--smrt-color-surface, white);
|
|
210
|
-
border:
|
|
210
|
+
border: var(--smrt-hairline-strong);
|
|
211
211
|
border-radius: var(--smrt-radius-small, 0.375rem);
|
|
212
212
|
font-size: var(--smrt-typography-body-medium-size, 0.875rem);
|
|
213
213
|
cursor: pointer;
|
|
@@ -257,7 +257,7 @@ $effect(() => {
|
|
|
257
257
|
right: 0;
|
|
258
258
|
margin-top: 0.25rem;
|
|
259
259
|
background: var(--smrt-color-surface, white);
|
|
260
|
-
border:
|
|
260
|
+
border: var(--smrt-hairline);
|
|
261
261
|
border-radius: var(--smrt-radius-small, 0.375rem);
|
|
262
262
|
box-shadow: var(--smrt-elevation-2, 0 4px 6px -1px rgba(0, 0, 0, 0.1));
|
|
263
263
|
z-index: var(--smrt-z-index-dropdown, 1000);
|
|
@@ -47,6 +47,6 @@ setAccordionContext({ isOpen, toggle });
|
|
|
47
47
|
<style>
|
|
48
48
|
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
49
49
|
@layer smrt.theme {
|
|
50
|
-
.accordion { overflow: hidden; border:
|
|
50
|
+
.accordion { overflow: hidden; border: var(--smrt-hairline); border-radius: var(--smrt-radius-large); background: var(--smrt-color-surface); }
|
|
51
51
|
}
|
|
52
52
|
</style>
|
|
@@ -34,7 +34,7 @@ const open = $derived(context.isOpen(value));
|
|
|
34
34
|
<style>
|
|
35
35
|
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
36
36
|
@layer smrt.theme {
|
|
37
|
-
.item { border-bottom:
|
|
37
|
+
.item { border-bottom: var(--smrt-hairline); }
|
|
38
38
|
.item:last-child { border-bottom: 0; }
|
|
39
39
|
h3 { margin: 0; }
|
|
40
40
|
button { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: var(--smrt-spacing-3); padding: var(--smrt-spacing-4); border: 0; background: transparent; color: var(--smrt-color-on-surface); font: var(--smrt-typography-title-small-font); text-align: left; cursor: pointer; }
|