noph-ui 0.50.0 → 0.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/app-bar/AppBar.svelte +64 -22
  2. package/dist/button/Button.svelte +4 -12
  3. package/dist/button/IconButton.svelte +3 -38
  4. package/dist/button/SegmentedButton.svelte +3 -4
  5. package/dist/button/SplitButton.svelte +1 -1
  6. package/dist/carousel/Carousel.svelte +5 -1
  7. package/dist/chip/SuggestionChip.svelte +2 -2
  8. package/dist/date-picker/DatePickerDialog.svelte +1 -0
  9. package/dist/date-picker/DateRangePicker.svelte +2 -5
  10. package/dist/dialog/Dialog.svelte +2 -3
  11. package/dist/fab/ExtendedFab.svelte +1 -5
  12. package/dist/fab/Fab.svelte +1 -6
  13. package/dist/fab/FabMenu.svelte +5 -5
  14. package/dist/list/Item.svelte +3 -0
  15. package/dist/navigation-bar/NavigationBarItem.svelte +3 -4
  16. package/dist/navigation-drawer/NavigationDrawerItem.svelte +0 -1
  17. package/dist/navigation-rail/NavigationRailItem.svelte +1 -1
  18. package/dist/progress/CircularProgress.svelte +9 -3
  19. package/dist/progress/LinearProgress.svelte +1 -1
  20. package/dist/radio/Radio.svelte +1 -1
  21. package/dist/select/NativeSelect.svelte +2 -0
  22. package/dist/select/Select.svelte +35 -16
  23. package/dist/sheet/Sheet.svelte +15 -3
  24. package/dist/slider/Slider.svelte +3 -2
  25. package/dist/snackbar/Snackbar.svelte +6 -3
  26. package/dist/switch/Switch.svelte +11 -6
  27. package/dist/tabs/Tab.svelte +1 -1
  28. package/dist/themes/defaultTheme.css +1 -0
  29. package/dist/time-picker/PeriodSelector.svelte +2 -5
  30. package/dist/time-picker/TimePickerPanel.svelte +3 -1
  31. package/dist/toolbar/Toolbar.svelte +7 -7
  32. package/dist/tooltip/RichTooltip.svelte +1 -1
  33. package/package.json +1 -1
@@ -36,7 +36,7 @@
36
36
  'np-app-bar',
37
37
  `np-app-bar-${variant}`,
38
38
  collapses && 'np-app-bar-collapsible',
39
- collapses && scroller === 'nearest' && 'np-app-bar-scroller-nearest',
39
+ scroller === 'nearest' && 'np-app-bar-scroller-nearest',
40
40
  attributes.class,
41
41
  ]}
42
42
  >
@@ -75,6 +75,11 @@
75
75
  background-color: var(--np-app-bar-container-color, var(--np-color-surface));
76
76
  color: var(--np-color-on-surface);
77
77
  --np-icon-button-icon-color: var(--np-color-on-surface-variant);
78
+ --_timeline: scroll(root block);
79
+ --_fill-range: 0 var(--np-app-bar-fill-distance, 0.5rem);
80
+ }
81
+ .np-app-bar-scroller-nearest {
82
+ --_timeline: scroll(nearest block);
78
83
  }
79
84
 
80
85
  .np-app-bar:has(:global(.np-search-expanded)) {
@@ -110,21 +115,18 @@
110
115
  }
111
116
 
112
117
  .np-app-bar-subtitle {
113
- font-size: 0.875rem;
114
- line-height: 1.25rem;
118
+ font-size: var(--_subtitle-size);
119
+ line-height: var(--_subtitle-line-height);
115
120
  font-weight: 500;
116
121
  color: var(--np-app-bar-subtitle-color, var(--np-color-on-surface-variant));
117
122
  overflow: hidden;
118
123
  text-overflow: ellipsis;
119
124
  white-space: nowrap;
120
125
  }
121
- .np-app-bar-titles-inline .np-app-bar-headline {
122
- font-size: 1.375rem;
123
- }
124
126
 
125
127
  .np-app-bar-headline {
126
128
  font-size: var(--_headline-size);
127
- line-height: 1.2;
129
+ line-height: var(--_headline-line-height);
128
130
  font-weight: 400;
129
131
  color: var(--np-app-bar-headline-color, var(--np-color-on-surface));
130
132
  overflow: hidden;
@@ -132,10 +134,22 @@
132
134
  white-space: nowrap;
133
135
  min-width: 0;
134
136
  }
137
+ .np-app-bar-second-row .np-app-bar-headline {
138
+ display: -webkit-box;
139
+ -webkit-box-orient: vertical;
140
+ -webkit-line-clamp: 2;
141
+ line-clamp: 2;
142
+ white-space: normal;
143
+ overflow-wrap: anywhere;
144
+ }
135
145
 
136
146
  .np-app-bar-small,
137
- .np-app-bar-search {
147
+ .np-app-bar-search,
148
+ .np-app-bar-inline {
138
149
  --_headline-size: 1.375rem;
150
+ --_headline-line-height: 1.75rem;
151
+ --_subtitle-size: 0.75rem;
152
+ --_subtitle-line-height: 1rem;
139
153
  }
140
154
 
141
155
  .np-app-bar-search-field {
@@ -145,17 +159,26 @@
145
159
  align-items: center;
146
160
  padding-inline: 0.25rem;
147
161
  }
162
+ .np-app-bar-search-field :global(.np-search:not(.np-search-expanded) .np-search-bar) {
163
+ background-color: var(--np-search-container-color, var(--np-color-surface-container));
164
+ }
148
165
  .np-app-bar-small .np-app-bar-titles {
149
166
  padding-inline-start: 0.75rem;
150
167
  flex: 1;
151
168
  }
152
169
 
153
170
  .np-app-bar-medium {
154
- --_headline-size: 1.5rem;
171
+ --_headline-size: 1.75rem;
172
+ --_headline-line-height: 2.25rem;
173
+ --_subtitle-size: 0.875rem;
174
+ --_subtitle-line-height: 1.25rem;
155
175
  --_second-row-height: 3rem;
156
176
  }
157
177
  .np-app-bar-large {
158
- --_headline-size: 1.75rem;
178
+ --_headline-size: 2.25rem;
179
+ --_headline-line-height: 2.75rem;
180
+ --_subtitle-size: 1rem;
181
+ --_subtitle-line-height: 1.5rem;
159
182
  --_second-row-height: 5.5rem;
160
183
  }
161
184
 
@@ -170,18 +193,15 @@
170
193
  padding-block-end: 1rem;
171
194
  overflow: hidden;
172
195
  }
196
+ .np-app-bar-medium .np-app-bar-second-row {
197
+ padding-block-end: 0.75rem;
198
+ }
173
199
 
174
200
  .np-app-bar-inline {
175
- font-size: 1.375rem;
176
- line-height: 1.2;
177
- font-weight: 400;
178
- color: var(--np-app-bar-headline-color, var(--np-color-on-surface));
179
201
  padding-inline-start: 0.75rem;
180
202
  flex: 1;
181
203
  min-width: 0;
182
204
  overflow: hidden;
183
- text-overflow: ellipsis;
184
- white-space: nowrap;
185
205
  opacity: 0;
186
206
  }
187
207
 
@@ -189,23 +209,45 @@
189
209
  :global(html:has(.np-app-bar-collapsible)) {
190
210
  overflow-anchor: none;
191
211
  }
192
- :global(:has(.np-app-bar-scroller-nearest)) {
212
+ :global(:has(.np-app-bar-collapsible.np-app-bar-scroller-nearest)) {
193
213
  overflow-anchor: none;
194
214
  }
195
215
 
216
+ .np-app-bar {
217
+ animation: np-app-bar-fill linear both;
218
+ animation-timeline: var(--_timeline);
219
+ animation-range: var(--_fill-range);
220
+ }
221
+ .np-app-bar-search-field :global(.np-search:not(.np-search-expanded) .np-search-bar) {
222
+ animation: np-app-bar-search-fill linear both;
223
+ animation-timeline: var(--_timeline);
224
+ animation-range: var(--_fill-range);
225
+ }
226
+
196
227
  .np-app-bar-collapsible .np-app-bar-second-row {
197
228
  animation: np-app-bar-collapse linear both;
198
- animation-timeline: scroll(root block);
229
+ animation-timeline: var(--_timeline);
199
230
  animation-range: 0 var(--_second-row-height);
200
231
  }
201
232
  .np-app-bar-collapsible .np-app-bar-inline {
202
233
  animation: np-app-bar-reveal linear both;
203
- animation-timeline: scroll(root block);
234
+ animation-timeline: var(--_timeline);
204
235
  animation-range: 0 var(--_second-row-height);
205
236
  }
206
- .np-app-bar-scroller-nearest .np-app-bar-second-row,
207
- .np-app-bar-scroller-nearest .np-app-bar-inline {
208
- animation-timeline: scroll(nearest block);
237
+ }
238
+
239
+ @keyframes np-app-bar-fill {
240
+ to {
241
+ background-color: var(
242
+ --np-app-bar-scrolled-container-color,
243
+ var(--np-color-surface-container)
244
+ );
245
+ }
246
+ }
247
+
248
+ @keyframes np-app-bar-search-fill {
249
+ to {
250
+ background-color: var(--np-search-container-color, var(--np-color-surface-container-highest));
209
251
  }
210
252
  }
211
253
 
@@ -149,6 +149,9 @@
149
149
  opacity: 0;
150
150
  }
151
151
  .np-button {
152
+ /* State layers take the content color of each variant and state. */
153
+ --np-ripple-hover-color: currentColor;
154
+ --np-ripple-pressed-color: currentColor;
152
155
  box-sizing: border-box;
153
156
  font: inherit;
154
157
  background-color: transparent;
@@ -279,14 +282,9 @@
279
282
  }
280
283
  }
281
284
  .text {
282
- --np-ripple-hover-color: var(--np-text-button-label-text-color, var(--np-color-primary));
283
- --np-ripple-pressed-color: var(--np-text-button-label-text-color, var(--np-color-primary));
284
285
  color: var(--np-text-button-label-text-color, var(--np-color-primary));
285
286
  }
286
287
  .filled {
287
- --np-ripple-hover-opacity: 0.12;
288
- --np-ripple-hover-color: var(--np-color-surface);
289
- --np-ripple-pressed-color: var(--np-color-surface);
290
288
  color: var(--np-filled-button-label-text-color, var(--np-color-on-primary));
291
289
  background-color: var(--np-filled-button-container-color, var(--np-color-primary));
292
290
  }
@@ -312,8 +310,6 @@
312
310
  }
313
311
 
314
312
  .tonal {
315
- --np-ripple-hover-color: var(--np-tonal-button-label-text-color, var(--np-color-primary));
316
- --np-ripple-pressed-color: var(--np-tonal-button-label-text-color, var(--np-color-primary));
317
313
  color: var(--np-tonal-button-label-text-color, var(--np-color-on-secondary-container));
318
314
  background-color: var(--np-tonal-button-container-color, var(--np-color-secondary-container));
319
315
  }
@@ -336,8 +332,6 @@
336
332
  }
337
333
 
338
334
  .elevated {
339
- --np-ripple-hover-color: var(--np-elevated-button-label-text-color, var(--np-color-primary));
340
- --np-ripple-pressed-color: var(--np-elevated-button-label-text-color, var(--np-color-primary));
341
335
  color: var(--np-elevated-button-label-text-color, var(--np-color-primary));
342
336
  background-color: var(
343
337
  --np-elevated-button-container-color,
@@ -364,9 +358,7 @@
364
358
  --np-outlined-button-outline-color,
365
359
  var(--np-color-outline-variant)
366
360
  );
367
- --np-ripple-hover-color: var(--np-outlined-button-label-text-color, var(--np-color-primary));
368
- --np-ripple-pressed-color: var(--np-outlined-button-label-text-color, var(--np-color-primary));
369
- color: var(--np-outlined-button-label-text-color, var(--np-color-primary));
361
+ color: var(--np-outlined-button-label-text-color, var(--np-color-on-surface-variant));
370
362
  }
371
363
 
372
364
  .outlined:not(.selected)::after,
@@ -123,6 +123,9 @@
123
123
 
124
124
  <style>
125
125
  .np-icon-button {
126
+ /* State layers take the content color of each variant and state. */
127
+ --np-ripple-hover-color: currentColor;
128
+ --np-ripple-pressed-color: currentColor;
126
129
  font: inherit;
127
130
  box-sizing: border-box;
128
131
  -webkit-tap-highlight-color: transparent;
@@ -281,30 +284,16 @@
281
284
  }
282
285
  }
283
286
  .text {
284
- --np-ripple-hover-color: var(--np-icon-button-icon-color, var(--np-color-on-surface-variant));
285
- --np-ripple-pressed-color: var(--np-icon-button-icon-color, var(--np-color-on-surface-variant));
286
287
  color: var(--np-icon-button-icon-color, var(--np-color-on-surface-variant));
287
288
  }
288
289
  .text.selected {
289
- --np-ripple-hover-color: var(--np-color-primary);
290
- --np-ripple-pressed-color: var(--np-color-primary);
291
290
  color: var(--np-color-primary);
292
291
  }
293
292
  .filled {
294
- --np-ripple-hover-color: var(--np-filled-icon-button-icon-color, var(--np-color-on-primary));
295
- --np-ripple-pressed-color: var(--np-filled-icon-button-icon-color, var(--np-color-on-primary));
296
293
  color: var(--np-filled-icon-button-icon-color, var(--np-color-on-primary));
297
294
  background-color: var(--np-filled-icon-button-container-color, var(--np-color-primary));
298
295
  }
299
296
  .filled.toggle {
300
- --np-ripple-hover-color: var(
301
- --np-filled-icon-button-unselected-icon-color,
302
- var(--np-color-on-surface-variant)
303
- );
304
- --np-ripple-pressed-color: var(
305
- --np-filled-icon-button-unselected-icon-color,
306
- var(--np-color-on-surface-variant)
307
- );
308
297
  color: var(--np-filled-icon-button-unselected-icon-color, var(--np-color-on-surface-variant));
309
298
  background-color: var(
310
299
  --np-filled-icon-button-unselected-container-color,
@@ -312,14 +301,6 @@
312
301
  );
313
302
  }
314
303
  .filled.selected {
315
- --np-ripple-hover-color: var(
316
- --np-filled-icon-button-selected-icon-color,
317
- var(--np-color-on-primary)
318
- );
319
- --np-ripple-pressed-color: var(
320
- --np-filled-icon-button-selected-icon-color,
321
- var(--np-color-on-primary)
322
- );
323
304
  color: var(--np-filled-icon-button-selected-icon-color, var(--np-color-on-primary));
324
305
  background-color: var(
325
306
  --np-filled-icon-button-selected-container-color,
@@ -328,14 +309,6 @@
328
309
  }
329
310
 
330
311
  .tonal {
331
- --np-ripple-hover-color: var(
332
- --np-tonal-icon-button-icon-color,
333
- var(--np-color-on-secondary-container)
334
- );
335
- --np-ripple-pressed-color: var(
336
- --np-tonal-icon-button-icon-color,
337
- var(--np-color-on-secondary-container)
338
- );
339
312
  color: var(--np-tonal-icon-button-icon-color, var(--np-color-on-secondary-container));
340
313
  background-color: var(
341
314
  --np-tonal-icon-button-container-color,
@@ -343,14 +316,10 @@
343
316
  );
344
317
  }
345
318
  .tonal.toggle {
346
- --np-ripple-hover-color: var(--np-color-on-secondary-container);
347
- --np-ripple-pressed-color: var(--np-color-on-secondary-container);
348
319
  color: var(--np-color-on-secondary-container);
349
320
  background-color: var(--np-color-secondary-container);
350
321
  }
351
322
  .tonal.selected {
352
- --np-ripple-hover-color: var(--np-color-on-secondary);
353
- --np-ripple-pressed-color: var(--np-color-on-secondary);
354
323
  color: var(--np-color-on-secondary);
355
324
  background-color: var(--np-color-secondary);
356
325
  }
@@ -360,8 +329,6 @@
360
329
  --np-outlined-icon-button-outline-color,
361
330
  var(--np-color-outline-variant)
362
331
  );
363
- --np-ripple-hover-color: var(--np-color-on-surface-variant);
364
- --np-ripple-pressed-color: var(--np-color-on-surface-variant);
365
332
  color: var(--np-color-on-surface-variant);
366
333
  }
367
334
 
@@ -376,8 +343,6 @@
376
343
  }
377
344
 
378
345
  .outlined.selected {
379
- --np-ripple-hover-color: var(--np-color-on-surface-variant);
380
- --np-ripple-pressed-color: var(--np-color-on-surface-variant);
381
346
  color: var(--np-color-inverse-on-surface);
382
347
  background-color: var(--np-color-inverse-surface);
383
348
  }
@@ -90,8 +90,9 @@
90
90
 
91
91
  <style>
92
92
  .np-segmented-buttons {
93
- --np-ripple-hover-color: var(--np-color-primary);
94
- --np-ripple-pressed-color: var(--np-color-primary);
93
+ /* State layers take the content color of each variant and state. */
94
+ --np-ripple-hover-color: currentColor;
95
+ --np-ripple-pressed-color: currentColor;
95
96
  display: grid;
96
97
  color: var(--np-color-on-surface);
97
98
  border: 1px solid var(--np-color-outline);
@@ -100,8 +101,6 @@
100
101
  }
101
102
 
102
103
  .np-segmented-buttons.np-error {
103
- --np-ripple-hover-color: var(--np-color-error);
104
- --np-ripple-pressed-color: var(--np-color-error);
105
104
  border-color: var(--np-color-error);
106
105
  color: var(--np-color-error);
107
106
  }
@@ -49,7 +49,7 @@
49
49
  aria-label={menuLabel}
50
50
  start={caret}
51
51
  />
52
- <Menu id={menuId} anchor={trigger} bind:open coverAnchor={false}>
52
+ <Menu id={menuId} anchor={trigger} bind:open coverAnchor={false} style="--np-menu-margin: 4px">
53
53
  {@render menu?.(menuId)}
54
54
  </Menu>
55
55
  </ButtonGroup>
@@ -195,6 +195,10 @@
195
195
  padding-block: var(--_cross);
196
196
  }
197
197
 
198
+ .np-carousel-uncontained.np-carousel-horizontal .np-carousel-track {
199
+ padding-inline-end: 0;
200
+ }
201
+
198
202
  .np-carousel-vertical .np-carousel-track {
199
203
  flex-direction: column;
200
204
  padding-block: var(--_pad);
@@ -208,7 +212,7 @@
208
212
 
209
213
  .np-carousel-full-screen {
210
214
  --np-carousel-padding: 0px;
211
- --_gap: 0px;
215
+ --_gap: var(--np-carousel-item-spacing, 1rem);
212
216
  --_cross: 0px;
213
217
  --np-carousel-item-container-shape: 0px;
214
218
  --np-carousel-snap-stop: always;
@@ -12,8 +12,8 @@
12
12
  </script>
13
13
 
14
14
  <Button
15
- --np-elevated-button-label-text-color="var(--np-suggestion-chip-label-text-color, var(--np-color-on-surface))"
16
- --np-outlined-button-label-text-color="var(--np-suggestion-chip-label-text-color, var(--np-color-on-surface))"
15
+ --np-elevated-button-label-text-color="var(--np-suggestion-chip-label-text-color, var(--np-color-on-surface-variant))"
16
+ --np-outlined-button-label-text-color="var(--np-suggestion-chip-label-text-color, var(--np-color-on-surface-variant))"
17
17
  --np-outlined-button-outline-color="var(--np-suggestion-chip-outline-color, var(--np-color-outline-variant))"
18
18
  --np-button-padding="1rem"
19
19
  --np-button-shape="0.5rem"
@@ -400,6 +400,7 @@
400
400
 
401
401
  .np-date-picker-dialog-headline {
402
402
  margin: 0;
403
+ color: var(--np-color-on-surface);
403
404
  font-size: 2rem;
404
405
  line-height: 2.5rem;
405
406
  font-weight: 400;
@@ -297,7 +297,7 @@
297
297
  --np-dialog-elevation: none;
298
298
  --np-dialog-container-color: var(
299
299
  --np-date-range-picker-container-color,
300
- var(--np-color-surface)
300
+ var(--np-color-surface-container-high)
301
301
  );
302
302
  --np-dialog-container-shape: var(
303
303
  --np-date-range-picker-container-shape,
@@ -368,6 +368,7 @@
368
368
 
369
369
  .np-date-range-picker-headline {
370
370
  margin: 0;
371
+ color: var(--np-color-on-surface);
371
372
  display: flex;
372
373
  gap: 0.5rem;
373
374
  font-size: 1.375rem;
@@ -419,10 +420,6 @@
419
420
  --np-dialog-inset: 2rem 1rem;
420
421
  --np-dialog-max-height: calc(100dvh - 3rem);
421
422
  --np-dialog-elevation: var(--np-elevation-3);
422
- --np-dialog-container-color: var(
423
- --np-date-range-picker-container-color,
424
- var(--np-color-surface-container-high)
425
- );
426
423
  --np-dialog-container-shape: var(
427
424
  --np-date-range-picker-container-shape,
428
425
  var(--np-shape-corner-extra-large)
@@ -40,14 +40,12 @@
40
40
  <dialog
41
41
  bind:this={element}
42
42
  {...attributes}
43
- tabindex="-1"
44
43
  closedby="any"
45
44
  aria-labelledby={ariaLabelledby ?? (headline ? `${uid}-dialog-headline` : undefined)}
46
45
  aria-describedby={supportingText ? `${uid}-dialog-supporting-text` : undefined}
47
46
  class={['np-dialog-container', !quick && 'np-animate', attributes.class]}
48
47
  ontoggle={(event) => {
49
48
  open = event.newState === 'open'
50
- if (event.newState === 'open') element?.focus()
51
49
  ontoggle?.(event)
52
50
  }}
53
51
  onclick={(event) => {
@@ -114,7 +112,7 @@
114
112
 
115
113
  .np-dialog {
116
114
  border: 0;
117
- background-color: var(--np-dialog-container-color, var(--np-color-surface));
115
+ background-color: var(--np-dialog-container-color, var(--np-color-surface-container-high));
118
116
  color: var(--np-color-on-surface);
119
117
  padding: var(--np-dialog-padding, 1.5rem);
120
118
  border-radius: var(--np-dialog-container-shape, var(--np-shape-corner-extra-large));
@@ -129,6 +127,7 @@
129
127
 
130
128
  .np-dialog-scroller {
131
129
  overflow-y: auto;
130
+ overscroll-behavior: contain;
132
131
  display: flex;
133
132
  flex: 1 1 0%;
134
133
  flex-direction: column;
@@ -228,11 +228,7 @@
228
228
 
229
229
  @media (hover: hover) {
230
230
  .np-extended-fab:not(:disabled):hover {
231
- background-color: color-mix(
232
- in srgb,
233
- var(--np-fab-icon-color, var(--_icon-color)) 8%,
234
- var(--np-fab-container-color, var(--_container-color))
235
- );
231
+ box-shadow: var(--np-fab-elevation, var(--np-elevation-4));
236
232
  }
237
233
  .np-fab-lowered:not(:disabled):hover {
238
234
  box-shadow: var(--np-fab-elevation, var(--np-elevation-2));
@@ -184,12 +184,7 @@
184
184
 
185
185
  @media (hover: hover) {
186
186
  .np-fab:not(:disabled):hover {
187
- box-shadow: var(--np-fab-elevation, var(--np-elevation-3));
188
- background-color: color-mix(
189
- in srgb,
190
- var(--np-fab-icon-color, var(--_icon-color)) 8%,
191
- var(--np-fab-container-color, var(--_container-color))
192
- );
187
+ box-shadow: var(--np-fab-elevation, var(--np-elevation-4));
193
188
  }
194
189
  .np-fab-lowered:not(:disabled):hover {
195
190
  box-shadow: var(--np-fab-elevation, var(--np-elevation-2));
@@ -158,7 +158,7 @@
158
158
  background: none;
159
159
  flex-direction: column;
160
160
  align-items: flex-end;
161
- gap: 0.5rem;
161
+ gap: 0.25rem;
162
162
  overflow: visible;
163
163
  }
164
164
 
@@ -168,22 +168,22 @@
168
168
 
169
169
  .np-fab-menu-block-start .np-fab-menu-list {
170
170
  position-area: block-start;
171
- margin-block-end: 0.75rem;
171
+ margin-block-end: 0.5rem;
172
172
  flex-direction: column-reverse;
173
173
  }
174
174
  .np-fab-menu-block-end .np-fab-menu-list {
175
175
  position-area: block-end;
176
- margin-block-start: 0.75rem;
176
+ margin-block-start: 0.5rem;
177
177
  }
178
178
  .np-fab-menu-inline-start .np-fab-menu-list {
179
179
  position-area: inline-start;
180
- margin-inline-end: 0.75rem;
180
+ margin-inline-end: 0.5rem;
181
181
  flex-direction: row-reverse;
182
182
  align-items: center;
183
183
  }
184
184
  .np-fab-menu-inline-end .np-fab-menu-list {
185
185
  position-area: inline-end;
186
- margin-inline-start: 0.75rem;
186
+ margin-inline-start: 0.5rem;
187
187
  flex-direction: row;
188
188
  align-items: center;
189
189
  }
@@ -209,4 +209,7 @@
209
209
  color: color-mix(in srgb, var(--np-color-on-surface) 38%, transparent);
210
210
  background-color: color-mix(in srgb, var(--np-color-on-surface) 10%, transparent);
211
211
  }
212
+ .np-item.disabled .np-item-supporting-text {
213
+ color: inherit;
214
+ }
212
215
  </style>
@@ -133,13 +133,12 @@
133
133
  font-weight: var(--np-navigation-bar-item-font-weight, 500);
134
134
  color: var(--np-color-on-surface-variant);
135
135
  max-width: 100%;
136
- overflow: hidden;
137
- text-overflow: ellipsis;
138
- white-space: nowrap;
136
+ text-align: center;
137
+ overflow-wrap: anywhere;
139
138
  }
140
139
  .np-navigation-bar-item-selected .np-navigation-bar-item-label {
141
140
  font-weight: var(--np-navigation-bar-item-selected-font-weight, 500);
142
- color: var(--np-color-on-surface);
141
+ color: var(--np-color-secondary);
143
142
  }
144
143
 
145
144
  .np-navigation-bar-item-label-selected .np-navigation-bar-item-label {
@@ -152,7 +152,6 @@
152
152
  font-size: 0.875rem;
153
153
  line-height: 1.25rem;
154
154
  font-weight: 500;
155
- padding-inline-end: 0.5rem;
156
155
  color: var(--np-color-on-surface-variant);
157
156
  }
158
157
  </style>
@@ -133,7 +133,7 @@
133
133
 
134
134
  .np-navigation-action-selected .np-navigation-action-label {
135
135
  font-weight: var(--np-navigation-rail-item-selected-font-weight, 500);
136
- color: var(--np-color-on-surface);
136
+ color: var(--np-color-secondary);
137
137
  }
138
138
  .np-touch {
139
139
  height: 56px;
@@ -119,6 +119,7 @@
119
119
 
120
120
  <style>
121
121
  .np-container {
122
+ --_stroke: var(--np-circular-progress-active-indicator-width, 8.3333);
122
123
  all: unset;
123
124
  display: inline-flex;
124
125
  vertical-align: middle;
@@ -155,7 +156,7 @@
155
156
  }
156
157
  circle,
157
158
  .wave {
158
- stroke-width: calc(var(--np-circular-progress-active-indicator-width, 8.3333) * 1%);
159
+ stroke-width: calc(var(--_stroke) * 1%);
159
160
  stroke-dasharray: 100;
160
161
  fill: transparent;
161
162
  }
@@ -163,16 +164,21 @@
163
164
  circle {
164
165
  cx: 50%;
165
166
  cy: 50%;
166
- r: calc(50% * (1 - var(--np-circular-progress-active-indicator-width, 8.3333) / 100));
167
+ r: calc(50% * (1 - var(--_stroke) / 100));
167
168
  transform-box: view-box;
168
169
  transform-origin: 50% 50%;
169
170
  }
170
171
 
171
172
  .progress {
172
- --_stroke: var(--np-circular-progress-active-indicator-width, 8.3333);
173
173
  --_gap: calc((0.1 + var(--_stroke) / 100) / (3.14159265 * (1 - var(--_stroke) / 100)) * 100);
174
174
  }
175
175
 
176
+ /* The flat ring is drawn 40dp wide inside the 48dp box, so the width is scaled to stay a
177
+ percentage of the full indicator size. */
178
+ .progress:not(.wavy) {
179
+ --_stroke: calc(var(--np-circular-progress-active-indicator-width, 8.3333) * 1.2);
180
+ }
181
+
176
182
  .wavy .track {
177
183
  r: calc(50% * (1 - var(--_stroke) / 100 - 0.0666667));
178
184
  }
@@ -217,7 +217,7 @@
217
217
  border-radius: var(--np-linear-progress-track-shape, var(--np-shape-corner-full));
218
218
  display: flex;
219
219
  position: relative;
220
- min-width: 80px;
220
+ min-width: 40px;
221
221
  height: var(--np-linear-progress-track-height, 0.25rem);
222
222
  content-visibility: auto;
223
223
  contain: strict;
@@ -26,7 +26,7 @@
26
26
  {#if !attributes.disabled}
27
27
  <Ripple forElement={inputEl} class="np-radio-ripple" />
28
28
  {/if}
29
- <svg class="np-radio-icon" viewBox="0 0 20 20">
29
+ <svg aria-hidden="true" class="np-radio-icon" viewBox="0 0 20 20">
30
30
  <mask id="{uid}-mask">
31
31
  <rect width="100%" height="100%" fill="white" />
32
32
  <circle cx="10" cy="10" r="8" fill="black" />
@@ -18,6 +18,7 @@
18
18
  element = $bindable(),
19
19
  'aria-describedby': ariaDescribedby,
20
20
  'aria-errormessage': ariaErrormessage,
21
+ 'aria-invalid': ariaInvalid,
21
22
  ...attributes
22
23
  }: NativeSelectProps = $props()
23
24
  const uid = $props.id()
@@ -78,6 +79,7 @@
78
79
  id={selectId}
79
80
  bind:value
80
81
  {...attributes}
82
+ aria-invalid={errorText ? 'true' : ariaInvalid}
81
83
  aria-errormessage={[errorText && `supporting-text-${uid}`, ariaErrormessage]
82
84
  .filter(Boolean)
83
85
  .join(' ') || undefined}
@@ -32,10 +32,16 @@
32
32
  multiple,
33
33
  virtualThreshold = 300,
34
34
  clampMenuWidth = false,
35
+ 'aria-invalid': ariaInvalid,
36
+ 'aria-describedby': ariaDescribedby,
37
+ 'aria-errormessage': ariaErrormessage,
35
38
  ...attributes
36
39
  }: SelectProps = $props()
37
40
 
38
41
  const uid = $props.id()
42
+ const supportingTextId = `supporting-text-${uid}`
43
+ const ids = (...values: (string | undefined | null | false)[]) =>
44
+ values.filter(Boolean).join(' ') || undefined
39
45
  $effect(() => {
40
46
  if (value === undefined) {
41
47
  if (multiple) {
@@ -59,6 +65,11 @@
59
65
  let widthProp = $derived(clampMenuWidth || useVirtualList ? 'width' : 'min-width')
60
66
 
61
67
  let errorText = $derived(issues?.map((i) => i.message).join(', '))
68
+ let ariaProps = $derived({
69
+ 'aria-invalid': errorText ? ('true' as const) : ariaInvalid,
70
+ 'aria-errormessage': ids(errorText && supportingTextId, ariaErrormessage),
71
+ 'aria-describedby': ids(supportingText && !errorText && supportingTextId, ariaDescribedby),
72
+ })
62
73
  let selectElement = $state<HTMLSelectElement>()
63
74
  let menuElement = $state<HTMLDivElement>()
64
75
  let anchorElement = $state<HTMLDivElement>()
@@ -309,6 +320,7 @@
309
320
  aria-label={attributes['aria-label'] || label}
310
321
  aria-disabled={disabled}
311
322
  aria-activedescendant={activeDescendantId}
323
+ {...ariaProps}
312
324
  data-testid={attributes['data-testid']}
313
325
  bind:this={field}
314
326
  autofocus={disabled ? false : autofocus}
@@ -408,7 +420,6 @@
408
420
  {#if multiple}
409
421
  <select
410
422
  tabindex="-1"
411
- aria-invalid={attributes['aria-invalid']}
412
423
  {disabled}
413
424
  {required}
414
425
  {name}
@@ -429,7 +440,6 @@
429
440
  {:else}
430
441
  <select
431
442
  tabindex="-1"
432
- aria-invalid={attributes['aria-invalid']}
433
443
  {disabled}
434
444
  {required}
435
445
  {name}
@@ -464,7 +474,7 @@
464
474
  </div>
465
475
  </div>
466
476
  {#if supportingText || errorText}
467
- <div class="supporting-text" role={errorText ? 'alert' : undefined}>
477
+ <div id={supportingTextId} class="supporting-text" role={errorText ? 'alert' : undefined}>
468
478
  <span>
469
479
  {errorText ?? supportingText}
470
480
  </span>
@@ -580,10 +590,10 @@
580
590
  border-bottom-color: var(--np-color-primary);
581
591
  border-bottom-width: 3px;
582
592
  }
583
- .field:has(select:is(:user-invalid, [aria-invalid='true'])) .active-indicator::before {
593
+ .field:is([aria-invalid='true'], :has(select:user-invalid)) .active-indicator::before {
584
594
  border-bottom-color: var(--np-color-error);
585
595
  }
586
- .field:has(select:is(:user-invalid, [aria-invalid='true'])) .active-indicator::after {
596
+ .field:is([aria-invalid='true'], :has(select:user-invalid)) .active-indicator::after {
587
597
  border-bottom-color: var(--np-color-error);
588
598
  }
589
599
  .disabled .active-indicator::before {
@@ -681,7 +691,7 @@
681
691
  justify-content: space-between;
682
692
  padding: 0.25rem 1rem 0;
683
693
  }
684
- .field:has(select:is(:user-invalid, [aria-invalid='true'])) .supporting-text {
694
+ .field:is([aria-invalid='true'], :has(select:user-invalid)) .supporting-text {
685
695
  color: var(--np-color-error);
686
696
  }
687
697
  .disabled .supporting-text {
@@ -810,8 +820,7 @@
810
820
  margin-inline-start: 1rem;
811
821
  margin-inline-end: 0.75rem;
812
822
  }
813
- .field:has(select:is(:user-invalid, [aria-invalid='true'])) .start,
814
- .field:has(select:is(:user-invalid, [aria-invalid='true'])) .end {
823
+ .field:is([aria-invalid='true'], :has(select:user-invalid)) .end {
815
824
  color: var(--np-color-error);
816
825
  }
817
826
  .disabled .start,
@@ -928,15 +937,13 @@
928
937
  .field:focus .label {
929
938
  color: var(--np-color-primary);
930
939
  }
931
- .field:has(select:is(:user-invalid, [aria-invalid='true'])) .label,
932
- .field:has(select:is(:user-invalid, [aria-invalid='true'])).menu-open .label,
933
- .field:has(select:is(:user-invalid, [aria-invalid='true'])):focus .label {
940
+ .field:is([aria-invalid='true'], :has(select:user-invalid)) .label,
941
+ .field:is([aria-invalid='true'], :has(select:user-invalid)).menu-open .label,
942
+ .field:is([aria-invalid='true'], :has(select:user-invalid)):focus .label {
934
943
  color: var(--np-color-error);
935
944
  }
936
945
  .disabled .label {
937
946
  color: var(--np-color-on-surface);
938
- }
939
- .disabled {
940
947
  opacity: 0.38;
941
948
  }
942
949
  .resizable:not(.disabled) .np-container {
@@ -1079,16 +1086,28 @@
1079
1086
  z-index: 1;
1080
1087
  }
1081
1088
 
1089
+ .field:not(.disabled, .menu-open, :focus):hover .np-outline {
1090
+ border-color: var(--np-color-on-surface);
1091
+ color: var(--np-color-on-surface);
1092
+ }
1082
1093
  .field.menu-open .np-outline,
1083
1094
  .field:focus .np-outline {
1084
1095
  border-color: var(--np-color-primary);
1085
1096
  color: var(--np-color-primary);
1086
1097
  }
1087
- .field:has(select:is(:user-invalid, [aria-invalid='true'])) .np-outline,
1088
- .field:has(select:is(:user-invalid, [aria-invalid='true'])).menu-open .np-outline,
1089
- .field:has(select:is(:user-invalid, [aria-invalid='true'])):focus .np-outline {
1098
+ .field:is([aria-invalid='true'], :has(select:user-invalid)) .np-outline,
1099
+ .field:is([aria-invalid='true'], :has(select:user-invalid)).menu-open .np-outline,
1100
+ .field:is([aria-invalid='true'], :has(select:user-invalid)):focus .np-outline {
1090
1101
  border-color: var(--np-color-error);
1091
1102
  }
1103
+ .field:is([aria-invalid='true'], :has(select:user-invalid)):not(
1104
+ .disabled,
1105
+ .menu-open,
1106
+ :focus
1107
+ ):hover
1108
+ .np-outline {
1109
+ border-color: var(--np-color-on-error-container);
1110
+ }
1092
1111
  .disabled .np-outline {
1093
1112
  border-color: var(--np-color-on-surface);
1094
1113
  color: var(--np-color-on-surface);
@@ -108,6 +108,8 @@
108
108
  max-height: var(--np-sheet-size, 50dvh);
109
109
  }
110
110
  .np-sheet-bottom {
111
+ max-width: var(--np-sheet-max-width, 40rem);
112
+ margin-inline: auto;
111
113
  inset-block-end: 0;
112
114
  inset-block-start: auto;
113
115
  border-start-start-radius: var(--np-sheet-shape, var(--np-shape-corner-extra-large));
@@ -139,21 +141,26 @@
139
141
  border-start-start-radius: var(--np-sheet-shape, var(--np-shape-corner-large));
140
142
  border-end-start-radius: var(--np-sheet-shape, var(--np-shape-corner-large));
141
143
  }
144
+ .np-sheet-start:not(.np-sheet-modal),
145
+ .np-sheet-end:not(.np-sheet-modal) {
146
+ background-color: var(--np-sheet-container-color, var(--np-color-surface));
147
+ border-radius: var(--np-sheet-shape, 0);
148
+ }
142
149
 
143
150
  .np-sheet-handle {
144
151
  flex: none;
145
152
  width: 2rem;
146
153
  height: 0.25rem;
147
- margin: 1rem auto 0;
154
+ margin: 1.375rem auto;
148
155
  border-radius: var(--np-shape-corner-full);
149
- background-color: var(--np-sheet-handle-color, var(--np-color-outline-variant));
156
+ background-color: var(--np-sheet-handle-color, var(--np-color-on-surface-variant));
150
157
  }
151
158
 
152
159
  .np-sheet-header {
153
160
  flex: none;
154
161
  display: flex;
155
162
  align-items: center;
156
- gap: 0.5rem;
163
+ gap: 0.75rem;
157
164
  padding: 1rem 1.5rem 0;
158
165
  }
159
166
  .np-sheet-headline {
@@ -163,6 +170,10 @@
163
170
  line-height: 2rem;
164
171
  font-weight: 400;
165
172
  }
173
+ .np-sheet-start .np-sheet-headline,
174
+ .np-sheet-end .np-sheet-headline {
175
+ color: var(--np-color-on-surface-variant);
176
+ }
166
177
  .np-sheet-action {
167
178
  flex: none;
168
179
  display: flex;
@@ -171,6 +182,7 @@
171
182
  .np-sheet-content {
172
183
  flex: 1;
173
184
  min-height: 0;
185
+ overflow-x: hidden;
174
186
  overflow-y: auto;
175
187
  overscroll-behavior: contain;
176
188
  padding: 1rem 1.5rem 1.5rem;
@@ -391,6 +391,7 @@
391
391
  }
392
392
  .np-slider.np-size-m {
393
393
  --_size-track-height: 2.5rem;
394
+ --_size-handle-height: 3.25rem;
394
395
  --_size-corner: 0.75rem;
395
396
  }
396
397
  .np-slider.np-size-l {
@@ -614,9 +615,9 @@
614
615
  flex: none;
615
616
  writing-mode: horizontal-tb;
616
617
  direction: ltr;
617
- min-inline-size: 2rem;
618
+ min-inline-size: 3rem;
618
619
  box-sizing: border-box;
619
- padding: 0.375rem 0.625rem;
620
+ padding: 0.75rem 1rem;
620
621
  border-radius: var(--np-shape-corner-full);
621
622
  background: var(--np-slider-label-container-color, var(--np-color-inverse-surface));
622
623
  color: var(--np-slider-label-text-color, var(--np-color-inverse-on-surface));
@@ -48,7 +48,7 @@
48
48
  {popover}
49
49
  class={['np-snackbar', attributes.class]}
50
50
  bind:this={element}
51
- role="alert"
51
+ role="status"
52
52
  aria-labelledby="np-snackbar-label-{uid}"
53
53
  onpointerenter={() => (hovered = true)}
54
54
  onpointerleave={() => (hovered = false)}
@@ -103,9 +103,12 @@
103
103
  padding: 0.875rem 1rem;
104
104
  }
105
105
  .np-snackbar-label {
106
+ display: -webkit-box;
107
+ -webkit-box-orient: vertical;
108
+ -webkit-line-clamp: 2;
109
+ line-clamp: 2;
106
110
  overflow: hidden;
107
- text-overflow: ellipsis;
108
- text-wrap: nowrap;
111
+ overflow-wrap: anywhere;
109
112
  }
110
113
  .np-snackbar-inner {
111
114
  display: flex;
@@ -30,7 +30,7 @@
30
30
  <div class="np-track"></div>
31
31
  <div class={['np-handle', icons === 'both' && 'both-icons']}>
32
32
  {#if icons}
33
- <svg class="np-switch-icon np-icon-selected" viewBox="0 0 24 24">
33
+ <svg aria-hidden="true" class="np-switch-icon np-icon-selected" viewBox="0 0 24 24">
34
34
  <path
35
35
  d="M20 6L9 17l-5-5"
36
36
  fill="none"
@@ -42,7 +42,7 @@
42
42
  </svg>
43
43
  {/if}
44
44
  {#if icons === 'both'}
45
- <svg class="np-switch-icon np-icon-unselected" viewBox="0 0 24 24">
45
+ <svg aria-hidden="true" class="np-switch-icon np-icon-unselected" viewBox="0 0 24 24">
46
46
  <path
47
47
  fill="currentColor"
48
48
  d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
@@ -75,6 +75,7 @@
75
75
 
76
76
  <style>
77
77
  .np-switch {
78
+ --_travel: 1.25rem;
78
79
  position: relative;
79
80
  width: 3.25rem;
80
81
  height: 2rem;
@@ -104,6 +105,10 @@
104
105
  outline-offset: -0.125rem;
105
106
  }
106
107
 
108
+ .np-switch:dir(rtl) {
109
+ --_travel: -1.25rem;
110
+ }
111
+
107
112
  .np-handle {
108
113
  position: absolute;
109
114
  color: var(--np-color-surface-container-highest);
@@ -132,7 +137,7 @@
132
137
  }
133
138
 
134
139
  .np-switch:has(input:checked) .np-state-layer {
135
- transform: translateX(1.25rem);
140
+ transform: translateX(var(--_travel));
136
141
  }
137
142
 
138
143
  .np-switch input {
@@ -160,11 +165,11 @@
160
165
  }
161
166
 
162
167
  .np-switch:not(.np-disabled):has(input:checked:active) .np-handle {
163
- transform: translateX(1.25rem) scale(1.75);
168
+ transform: translateX(var(--_travel)) scale(1.75);
164
169
  }
165
170
 
166
171
  .np-switch:has(input:checked) .np-handle {
167
- transform: translateX(1.25rem) scale(1.5);
172
+ transform: translateX(var(--_travel)) scale(1.5);
168
173
  color: var(--np-switch-selected-icon-color, var(--np-color-primary));
169
174
  background-color: var(--np-switch-selected-handle-color, var(--np-color-on-primary));
170
175
  }
@@ -196,7 +201,7 @@
196
201
  }
197
202
 
198
203
  .np-error:has(input:checked) .np-switch-icon {
199
- fill: var(--np-color-error);
204
+ color: var(--np-color-error);
200
205
  }
201
206
 
202
207
  .np-error {
@@ -166,7 +166,7 @@
166
166
  font-weight: 500;
167
167
  gap: 0.5rem;
168
168
  text-wrap: nowrap;
169
- min-width: 1.5rem;
169
+ min-width: calc(1.5rem + 2 * var(--_indicator-gap, 2px));
170
170
  }
171
171
  .np-tab-label-badge {
172
172
  margin-inline-end: 4px;
@@ -57,6 +57,7 @@
57
57
  --np-elevation-1: rgba(0, 0, 0, 0.3) 0px 1px 2px 0px, rgba(0, 0, 0, 0.15) 0px 1px 3px 1px;
58
58
  --np-elevation-2: rgba(0, 0, 0, 0.3) 0px 1px 2px 0px, rgba(0, 0, 0, 0.15) 0px 2px 6px 2px;
59
59
  --np-elevation-3: rgba(0, 0, 0, 0.3) 0px 1px 3px 0px, rgba(0, 0, 0, 0.15) 0px 4px 8px 3px;
60
+ --np-elevation-4: rgba(0, 0, 0, 0.3) 0px 2px 3px 0px, rgba(0, 0, 0, 0.15) 0px 6px 10px 4px;
60
61
 
61
62
  /* Motion: Expressive spatial */
62
63
  --np-motion-expressive-fast-spatial: 350ms cubic-bezier(0.42, 1.67, 0.21, 0.9);
@@ -60,7 +60,7 @@
60
60
  .np-period-selector.vertical {
61
61
  flex-direction: column;
62
62
  width: 3.25rem;
63
- height: 5rem;
63
+ height: var(--np-time-picker-period-selector-height, 5rem);
64
64
  flex: none;
65
65
  }
66
66
 
@@ -100,10 +100,7 @@
100
100
  font-size: 1rem;
101
101
  line-height: 1.5rem;
102
102
  font-weight: 500;
103
- color: var(
104
- --np-time-picker-period-selector-unselected-label-color,
105
- var(--np-color-on-surface-variant)
106
- );
103
+ color: var(--np-time-picker-period-selector-unselected-label-color, var(--np-color-on-surface));
107
104
  }
108
105
 
109
106
  .np-period-option.selected {
@@ -40,6 +40,8 @@
40
40
 
41
41
  // A 24-hour dial has no period selector, so its fields take the room that frees up.
42
42
  let fieldWidth = $derived(!hour12 && !horizontal ? '7.125rem' : '6rem')
43
+ // The period selector matches the 72dp input fields in input mode.
44
+ let periodHeight = $derived(mode === 'input' ? '4.5rem' : '5rem')
43
45
 
44
46
  // Bounds can put a whole half of the day out of reach, and then that half cannot be chosen.
45
47
  let amReachable = $derived([...Array(12).keys()].some((hour) => state.hourReachable(hour)))
@@ -54,7 +56,7 @@
54
56
  <div
55
57
  {...attributes}
56
58
  class={['np-time-picker', horizontal && 'np-horizontal', attributes.class]}
57
- style="--np-time-picker-time-selector-container-width: {fieldWidth}"
59
+ style="--np-time-picker-time-selector-container-width: {fieldWidth}; --np-time-picker-period-selector-height: {periodHeight}"
58
60
  >
59
61
  {#if headline}
60
62
  <div id={headlineId} class="np-time-picker-headline">{headline}</div>
@@ -46,7 +46,9 @@
46
46
  .np-toolbar {
47
47
  display: flex;
48
48
  align-items: center;
49
+ justify-content: center;
49
50
  box-sizing: border-box;
51
+ min-height: 4rem;
50
52
  gap: var(--np-toolbar-gap, 0.25rem);
51
53
  color: var(--np-toolbar-color, var(--np-color-on-surface));
52
54
  --np-icon-button-icon-color: var(--np-toolbar-color, var(--np-color-on-surface-variant));
@@ -54,6 +56,8 @@
54
56
 
55
57
  .np-toolbar-vertical {
56
58
  flex-direction: column;
59
+ min-height: 0;
60
+ min-width: 4rem;
57
61
  --np-tooltip-position-area: inline-end;
58
62
  --np-tooltip-justify-self: auto;
59
63
  --np-tooltip-align-self: anchor-center;
@@ -68,17 +72,13 @@
68
72
 
69
73
  .np-toolbar-docked {
70
74
  width: 100%;
71
- min-height: 4rem;
72
- justify-content: center;
73
- padding-inline: 0.5rem;
75
+ padding-inline: 1rem;
74
76
  background-color: var(--np-toolbar-container-color, var(--np-color-surface-container));
75
77
  padding-block-end: max(0px, env(safe-area-inset-bottom));
76
78
  }
77
79
  .np-toolbar-docked.np-toolbar-vertical {
78
80
  width: auto;
79
81
  height: 100%;
80
- min-height: 0;
81
- min-width: 4rem;
82
82
  padding-block: 0.5rem;
83
83
  padding-inline: 0;
84
84
  }
@@ -106,10 +106,10 @@
106
106
  margin-block: auto;
107
107
  }
108
108
  .np-toolbar-start {
109
- inset-inline-start: var(--np-toolbar-inset, 1rem);
109
+ inset-inline-start: var(--np-toolbar-inset, 1.5rem);
110
110
  }
111
111
  .np-toolbar-end {
112
- inset-inline-end: var(--np-toolbar-inset, 1rem);
112
+ inset-inline-end: var(--np-toolbar-inset, 1.5rem);
113
113
  margin-inline-start: auto;
114
114
  }
115
115
 
@@ -91,7 +91,7 @@
91
91
  padding-block: 0.75rem 1rem;
92
92
  }
93
93
  .np-rich-tooltip-with-actions[popover] {
94
- padding-bottom: 0.5rem;
94
+ padding-block: 0.75rem 0.5rem;
95
95
  }
96
96
  .np-rich-tooltip-subhead {
97
97
  margin-bottom: 0.25rem;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "noph-ui",
3
- "version": "0.50.0",
3
+ "version": "0.51.0",
4
4
  "license": "MIT",
5
5
  "homepage": "https://noph.dev",
6
6
  "repository": {