@openreachtech/furo-vue 1.4.0 → 1.6.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 (78) hide show
  1. package/lib/assets/css/furo/0010.variables-palette-color-scale.css +277 -275
  2. package/lib/assets/css/furo/0020.variables-z-index.css +11 -9
  3. package/lib/assets/css/furo/0030.variables-semantic-color.css +180 -164
  4. package/lib/assets/css/furo/0035.variables-semantic-dimension.css +103 -98
  5. package/lib/assets/css/furo/0040.variables-component-furo.css +26 -24
  6. package/lib/components/atoms/FuroIcon/FuroIcon.vue +1 -1
  7. package/lib/components/molecules/FuroAttachment/FuroAttachment.vue +1 -1
  8. package/lib/components/molecules/FuroBreadcrumb/FuroBreadcrumb.vue +1 -1
  9. package/lib/components/molecules/FuroControlBlock/FuroControlBlock.vue +2 -2
  10. package/lib/components/molecules/FuroDropdownMenu/FuroDropdownMenu.vue +2 -2
  11. package/lib/components/molecules/FuroErrorState/FuroErrorState.vue +1 -1
  12. package/lib/components/molecules/FuroSearchField/FuroSearchField.vue +1 -1
  13. package/lib/components/molecules/FuroSelect/FuroSelect.vue +145 -142
  14. package/lib/components/molecules/FuroSelect/FuroSelectContext.js +9 -0
  15. package/lib/components/molecules/FuroToggleGroup/FuroToggleGroupContext.js +3 -1
  16. package/lib/components/organisms/FuroDialog/FuroDialog.vue +2 -2
  17. package/lib/components/organisms/FuroDrawer/FuroDrawer.vue +2 -2
  18. package/lib/components/organisms/FuroSidebar/FuroSidebar.vue +6 -3
  19. package/lib/components/organisms/FuroTable/FuroTable.vue +1 -1
  20. package/lib/components/organisms/FuroToast/FuroToast.vue +2 -2
  21. package/lib/components/organisms/FuroToast/FuroToastContext.js +12 -0
  22. package/lib/components/organisms/FuroToast/ToastQueue.js +0 -1
  23. package/package.json +26 -27
  24. package/public/furo-vue/components.json +3 -3
  25. package/types/generated/components/atoms/FuroAvatar/FuroAvatar.vue.d.ts +81 -0
  26. package/types/generated/components/atoms/FuroBadge/FuroBadge.vue.d.ts +46 -0
  27. package/types/generated/components/atoms/FuroButton/FuroButton.vue.d.ts +54 -0
  28. package/types/generated/components/atoms/FuroCheckbox/FuroCheckbox.vue.d.ts +83 -1
  29. package/types/generated/components/atoms/FuroEmailField/FuroEmailField.vue.d.ts +3 -0
  30. package/types/generated/components/atoms/FuroFileField/FuroFileField.vue.d.ts +3 -0
  31. package/types/generated/components/atoms/FuroIcon/FuroIcon.vue.d.ts +3 -0
  32. package/types/generated/components/atoms/FuroNumberField/FuroNumberField.vue.d.ts +32 -5
  33. package/types/generated/components/atoms/FuroPasswordField/FuroPasswordField.vue.d.ts +3 -0
  34. package/types/generated/components/atoms/FuroRadio/FuroRadio.vue.d.ts +106 -0
  35. package/types/generated/components/atoms/FuroSwitch/FuroSwitch.vue.d.ts +74 -1
  36. package/types/generated/components/atoms/FuroTextField/FuroTextField.vue.d.ts +3 -0
  37. package/types/generated/components/atoms/FuroTextarea/FuroTextarea.vue.d.ts +3 -0
  38. package/types/generated/components/atoms/FuroToggle/FuroToggle.vue.d.ts +26 -0
  39. package/types/generated/components/molecules/FuroAccordion/FuroAccordion.vue.d.ts +150 -1
  40. package/types/generated/components/molecules/FuroAttachment/FuroAttachment.vue.d.ts +53 -0
  41. package/types/generated/components/molecules/FuroAutocompleteField/FuroAutocompleteField.vue.d.ts +460 -4
  42. package/types/generated/components/molecules/FuroAvatarGroup/FuroAvatarGroup.vue.d.ts +25 -0
  43. package/types/generated/components/molecules/FuroBreadcrumb/FuroBreadcrumb.vue.d.ts +55 -0
  44. package/types/generated/components/molecules/FuroCollapsible/FuroCollapsible.vue.d.ts +107 -0
  45. package/types/generated/components/molecules/FuroControlBlock/FuroControlBlock.vue.d.ts +7 -0
  46. package/types/generated/components/molecules/FuroDatePicker/FuroDatePicker.vue.d.ts +39 -0
  47. package/types/generated/components/molecules/FuroDateTimePicker/FuroDateTimePicker.vue.d.ts +9 -0
  48. package/types/generated/components/molecules/FuroDropdownMenu/FuroDropdownMenu.vue.d.ts +144 -1
  49. package/types/generated/components/molecules/FuroDropdownMenu/FuroDropdownMenuOptionRows.vue.d.ts +274 -1
  50. package/types/generated/components/molecules/FuroEditableField/FuroEditableField.vue.d.ts +139 -0
  51. package/types/generated/components/molecules/FuroEmptyState/FuroEmptyState.vue.d.ts +10 -0
  52. package/types/generated/components/molecules/FuroErrorState/FuroErrorState.vue.d.ts +10 -0
  53. package/types/generated/components/molecules/FuroPagination/FuroPagination.vue.d.ts +144 -0
  54. package/types/generated/components/molecules/FuroPopover/FuroPopover.vue.d.ts +20 -0
  55. package/types/generated/components/molecules/FuroScrollArea/FuroScrollArea.vue.d.ts +120 -0
  56. package/types/generated/components/molecules/FuroSearchField/FuroSearchField.vue.d.ts +31 -0
  57. package/types/generated/components/molecules/FuroSectionHeader/FuroSectionHeader.vue.d.ts +32 -0
  58. package/types/generated/components/molecules/FuroSelect/FuroSelect.vue.d.ts +456 -4
  59. package/types/generated/components/molecules/FuroSelect/FuroSelectContext.d.ts +6 -0
  60. package/types/generated/components/molecules/FuroSeparator/FuroSeparator.vue.d.ts +7 -0
  61. package/types/generated/components/molecules/FuroSkeleton/FuroSkeleton.vue.d.ts +3 -0
  62. package/types/generated/components/molecules/FuroSplitter/FuroSplitter.vue.d.ts +154 -0
  63. package/types/generated/components/molecules/FuroTimeField/FuroTimeField.vue.d.ts +76 -0
  64. package/types/generated/components/molecules/FuroToggleGroup/FuroToggleGroup.vue.d.ts +80 -0
  65. package/types/generated/components/molecules/FuroToolBar/FuroToolBar.vue.d.ts +16 -0
  66. package/types/generated/components/molecules/FuroTooltip/FuroTooltip.vue.d.ts +24 -0
  67. package/types/generated/components/organisms/FuroAlertDialog/FuroAlertDialog.vue.d.ts +227 -0
  68. package/types/generated/components/organisms/FuroDialog/FuroDialog.vue.d.ts +215 -0
  69. package/types/generated/components/organisms/FuroDrawer/FuroDrawer.vue.d.ts +264 -5
  70. package/types/generated/components/organisms/FuroEditor/FuroEditor.vue.d.ts +84 -1
  71. package/types/generated/components/organisms/FuroEditor/FuroEditorMentionMenu.vue.d.ts +3 -0
  72. package/types/generated/components/organisms/FuroSidebar/FuroSidebar.vue.d.ts +71 -0
  73. package/types/generated/components/organisms/FuroStepper/FuroStepper.vue.d.ts +207 -0
  74. package/types/generated/components/organisms/FuroTable/FuroTable.vue.d.ts +82 -1
  75. package/types/generated/components/organisms/FuroTabs/FuroTabs.vue.d.ts +132 -1
  76. package/types/generated/components/organisms/FuroToast/FuroToast.vue.d.ts +349 -0
  77. package/types/generated/components/organisms/FuroToast/FuroToastContext.d.ts +6 -0
  78. package/types/generated/components/organisms/FuroToast/FuroToaster.vue.d.ts +7 -0
@@ -1,28 +1,30 @@
1
- :root {
2
- /* Checkbox */
3
- --furo-checkbox-size: 1.125rem;
4
- --furo-checkbox-icon-size: 1rem;
1
+ @layer furo {
2
+ :root {
3
+ /* Checkbox */
4
+ --furo-checkbox-size: 1.125rem;
5
+ --furo-checkbox-icon-size: 1rem;
5
6
 
6
- /* Dialog */
7
- --furo-dialog-overlay-background: rgba(0, 0, 0, 0.5);
7
+ /* Dialog */
8
+ --furo-dialog-overlay-background: rgba(0, 0, 0, 0.5);
8
9
 
9
- /* Toast — per-type icon accent (the toast body stays neutral) */
10
- --furo-toast-info-accent: var(--color-muted-foreground);
11
- --furo-toast-success-accent: #16a34a;
12
- --furo-toast-warning-accent: #d97706;
13
- --furo-toast-error-accent: var(--color-destructive);
10
+ /* Toast — per-type icon accent (the toast body stays neutral) */
11
+ --furo-toast-info-accent: var(--color-muted-foreground);
12
+ --furo-toast-success-accent: #16a34a;
13
+ --furo-toast-warning-accent: #d97706;
14
+ --furo-toast-error-accent: var(--color-destructive);
14
15
 
15
- /* Toast — rich colors (full type-colored surface, opt-in) */
16
- --furo-toast-info-bg: #eff6ff;
17
- --furo-toast-info-border: #bfdbfe;
18
- --furo-toast-info-foreground: #1e40af;
19
- --furo-toast-success-bg: #f0fdf4;
20
- --furo-toast-success-border: #bbf7d0;
21
- --furo-toast-success-foreground: #166534;
22
- --furo-toast-warning-bg: #fffbeb;
23
- --furo-toast-warning-border: #fde68a;
24
- --furo-toast-warning-foreground: #92400e;
25
- --furo-toast-error-bg: #fef2f2;
26
- --furo-toast-error-border: #fecaca;
27
- --furo-toast-error-foreground: #991b1b;
16
+ /* Toast — rich colors (full type-colored surface, opt-in) */
17
+ --furo-toast-info-bg: #eff6ff;
18
+ --furo-toast-info-border: #bfdbfe;
19
+ --furo-toast-info-foreground: #1e40af;
20
+ --furo-toast-success-bg: #f0fdf4;
21
+ --furo-toast-success-border: #bbf7d0;
22
+ --furo-toast-success-foreground: #166534;
23
+ --furo-toast-warning-bg: #fffbeb;
24
+ --furo-toast-warning-border: #fde68a;
25
+ --furo-toast-warning-foreground: #92400e;
26
+ --furo-toast-error-bg: #fef2f2;
27
+ --furo-toast-error-border: #fecaca;
28
+ --furo-toast-error-foreground: #991b1b;
29
+ }
28
30
  }
@@ -68,7 +68,7 @@ export default defineComponent({
68
68
  }
69
69
 
70
70
  .unit-icon.unresolved {
71
- color: var(--color-warning);
71
+ color: var(--color-warning-text);
72
72
  }
73
73
  }
74
74
  </style>
@@ -348,7 +348,7 @@ export default defineComponent({
348
348
  width: 1.5rem;
349
349
  height: 1.5rem;
350
350
 
351
- color: var(--color-info);
351
+ color: var(--color-info-text);
352
352
  }
353
353
 
354
354
  .unit-attachment .action-icon {
@@ -207,7 +207,7 @@ export default defineComponent({
207
207
  display: inline-flex;
208
208
  align-items: center;
209
209
 
210
- color: var(--color-foreground-tertiary);
210
+ color: var(--color-foreground-glyph);
211
211
  }
212
212
 
213
213
  .unit-breadcrumb .separator-icon,
@@ -125,7 +125,7 @@ export default defineComponent({
125
125
  .unit-form-control-block > .label > .required-mark {
126
126
  margin-inline-start: 0.125rem;
127
127
 
128
- color: var(--color-destructive);
128
+ color: var(--color-destructive-text);
129
129
  }
130
130
 
131
131
  .unit-form-control-block.horizontal > .control {
@@ -138,7 +138,7 @@ export default defineComponent({
138
138
 
139
139
  list-style: none;
140
140
 
141
- color: var(--color-destructive);
141
+ color: var(--color-destructive-text);
142
142
  font: var(--font-body-small);
143
143
  }
144
144
 
@@ -309,7 +309,7 @@ export default defineComponent({
309
309
  padding-block: 0.25rem;
310
310
  padding-inline: 0.375rem;
311
311
 
312
- min-height: calc(var(--size-input-height) - 0.5rem);
312
+ min-height: var(--size-option-height);
313
313
 
314
314
  user-select: none;
315
315
  cursor: default;
@@ -329,7 +329,7 @@ export default defineComponent({
329
329
  }
330
330
 
331
331
  .unit-dropdown-menu-content > .menu-option.destructive {
332
- color: var(--color-destructive);
332
+ color: var(--color-destructive-text);
333
333
  }
334
334
 
335
335
  .unit-dropdown-menu-content > .menu-option.destructive[data-highlighted]:not([data-disabled]) {
@@ -98,7 +98,7 @@ export default defineComponent({
98
98
  .unit-error-state > .icon {
99
99
  display: flex;
100
100
 
101
- color: var(--color-destructive);
101
+ color: var(--color-destructive-text);
102
102
  font-size: 2rem;
103
103
  }
104
104
 
@@ -128,7 +128,7 @@ export default defineComponent({
128
128
  display: inline-flex;
129
129
  align-items: center;
130
130
 
131
- color: var(--color-foreground-tertiary);
131
+ color: var(--color-foreground-glyph);
132
132
  }
133
133
 
134
134
  .unit-form-control.search > .leading > .leading-icon {
@@ -19,6 +19,7 @@ export default defineComponent({
19
19
  SelectTrigger: RekaSelect['Trigger'],
20
20
  SelectValue: RekaSelect['Value'],
21
21
  SelectIcon: RekaSelect['Icon'],
22
+ SelectPortal: RekaSelect['Portal'],
22
23
  SelectContent: RekaSelect['Content'],
23
24
  SelectViewport: RekaSelect['Viewport'],
24
25
  SelectScrollUpButton: RekaSelect['ScrollUpButton'],
@@ -150,163 +151,165 @@ export default defineComponent({
150
151
  </slot>
151
152
  </SelectTrigger>
152
153
 
153
- <SelectContent
154
- class="unit-select-content"
155
- :side-offset="4"
156
- v-bind="context.extractContentAttributes()"
157
- >
158
- <slot name="content-before" />
159
-
160
- <SelectScrollUpButton class="scroll-up-button">
161
- <slot name="scroll-up-button">
162
- <FuroIcon name="ph:caret-up" />
163
- </slot>
164
- </SelectScrollUpButton>
165
-
166
- <SelectViewport class="viewport">
167
- <template
168
- v-for="(option, index) in context.parcel?.options"
169
- :key="index"
170
- >
171
- <template v-if="context.shouldShowGroupOption({ option })">
172
- <SelectGroup
173
- class="group"
174
- :disabled="option.disabled"
175
- >
176
- <slot
177
- name="group"
178
- :group="option"
179
- :group-index="index"
180
- >
181
- <SelectLabel class="label">
182
- <slot
183
- name="group-label"
184
- :group="option"
185
- :group-index="index"
186
- >
187
- {{ context.resolveOptionLabel({ option }) }}
188
- </slot>
189
- </SelectLabel>
154
+ <SelectPortal v-bind="context.extractPortalAttributes()">
155
+ <SelectContent
156
+ class="unit-select-content"
157
+ :side-offset="4"
158
+ v-bind="context.extractContentAttributes()"
159
+ >
160
+ <slot name="content-before" />
161
+
162
+ <SelectScrollUpButton class="scroll-up-button">
163
+ <slot name="scroll-up-button">
164
+ <FuroIcon name="ph:caret-up" />
165
+ </slot>
166
+ </SelectScrollUpButton>
190
167
 
191
- <template
192
- v-for="(groupChildOption, groupChildIndex) in context.extractGroupOptions({ option })"
193
- :key="groupChildIndex"
168
+ <SelectViewport class="viewport">
169
+ <template
170
+ v-for="(option, index) in context.parcel?.options"
171
+ :key="index"
172
+ >
173
+ <template v-if="context.shouldShowGroupOption({ option })">
174
+ <SelectGroup
175
+ class="group"
176
+ :disabled="option.disabled"
177
+ >
178
+ <slot
179
+ name="group"
180
+ :group="option"
181
+ :group-index="index"
194
182
  >
195
- <SelectOption
196
- class="option"
197
- :value="context.resolveOptionValue({ option: groupChildOption })"
198
- :disabled="groupChildOption.disabled || option.disabled"
199
- >
183
+ <SelectLabel class="label">
200
184
  <slot
201
- name="option"
185
+ name="group-label"
202
186
  :group="option"
203
187
  :group-index="index"
204
- :option="groupChildOption"
205
- :option-index="groupChildIndex"
206
188
  >
207
- <SelectOptionText>
208
- <slot
209
- name="option-text"
210
- :option="groupChildOption"
211
- :option-index="groupChildIndex"
212
- >
213
- {{ context.resolveOptionLabel({ option: groupChildOption }) }}
214
- </slot>
215
- </SelectOptionText>
216
-
217
- <SelectOptionIndicator class="select-indicator">
218
- <slot
219
- name="option-indicator"
220
- :option="groupChildOption"
221
- :option-index="groupChildIndex"
222
- >
223
- <FuroIcon name="ph:check" />
224
- </slot>
225
- </SelectOptionIndicator>
189
+ {{ context.resolveOptionLabel({ option }) }}
226
190
  </slot>
227
- </SelectOption>
191
+ </SelectLabel>
228
192
 
229
- <slot
230
- v-if="groupChildOption.separator"
231
- name="separator"
232
- :option="groupChildOption"
233
- :option-index="groupChildIndex"
193
+ <template
194
+ v-for="(groupChildOption, groupChildIndex) in context.extractGroupOptions({ option })"
195
+ :key="groupChildIndex"
234
196
  >
235
- <SelectSeparator class="separator" />
236
- </slot>
237
- </template>
238
- </slot>
239
- </SelectGroup>
240
- </template>
197
+ <SelectOption
198
+ class="option"
199
+ :value="context.resolveOptionValue({ option: groupChildOption })"
200
+ :disabled="groupChildOption.disabled || option.disabled"
201
+ >
202
+ <slot
203
+ name="option"
204
+ :group="option"
205
+ :group-index="index"
206
+ :option="groupChildOption"
207
+ :option-index="groupChildIndex"
208
+ >
209
+ <SelectOptionText>
210
+ <slot
211
+ name="option-text"
212
+ :option="groupChildOption"
213
+ :option-index="groupChildIndex"
214
+ >
215
+ {{ context.resolveOptionLabel({ option: groupChildOption }) }}
216
+ </slot>
217
+ </SelectOptionText>
218
+
219
+ <SelectOptionIndicator class="select-indicator">
220
+ <slot
221
+ name="option-indicator"
222
+ :option="groupChildOption"
223
+ :option-index="groupChildIndex"
224
+ >
225
+ <FuroIcon name="ph:check" />
226
+ </slot>
227
+ </SelectOptionIndicator>
228
+ </slot>
229
+ </SelectOption>
241
230
 
242
- <template v-else>
243
- <SelectOption
244
- :value="context.resolveOptionValue({ option })"
245
- class="option"
246
- :disabled="option.disabled"
247
- >
248
- <slot
249
- name="option"
250
- :option="option"
251
- :option-index="index"
231
+ <slot
232
+ v-if="groupChildOption.separator"
233
+ name="separator"
234
+ :option="groupChildOption"
235
+ :option-index="groupChildIndex"
236
+ >
237
+ <SelectSeparator class="separator" />
238
+ </slot>
239
+ </template>
240
+ </slot>
241
+ </SelectGroup>
242
+ </template>
243
+
244
+ <template v-else>
245
+ <SelectOption
246
+ :value="context.resolveOptionValue({ option })"
247
+ class="option"
248
+ :disabled="option.disabled"
252
249
  >
253
- <SelectOptionText>
254
- <slot
255
- name="option-text"
256
- :option="option"
257
- :option-index="index"
258
- >
259
- {{ context.resolveOptionLabel({ option }) }}
260
- </slot>
261
- </SelectOptionText>
262
-
263
- <SelectOptionIndicator class="select-indicator">
264
- <slot
265
- name="option-indicator"
266
- :option="option"
267
- :option-index="index"
268
- >
269
- <FuroIcon
270
- name="ph:check"
271
- />
272
- </slot>
273
- </SelectOptionIndicator>
274
- </slot>
275
- </SelectOption>
250
+ <slot
251
+ name="option"
252
+ :option="option"
253
+ :option-index="index"
254
+ >
255
+ <SelectOptionText>
256
+ <slot
257
+ name="option-text"
258
+ :option="option"
259
+ :option-index="index"
260
+ >
261
+ {{ context.resolveOptionLabel({ option }) }}
262
+ </slot>
263
+ </SelectOptionText>
264
+
265
+ <SelectOptionIndicator class="select-indicator">
266
+ <slot
267
+ name="option-indicator"
268
+ :option="option"
269
+ :option-index="index"
270
+ >
271
+ <FuroIcon
272
+ name="ph:check"
273
+ />
274
+ </slot>
275
+ </SelectOptionIndicator>
276
+ </slot>
277
+ </SelectOption>
278
+ </template>
279
+
280
+ <slot
281
+ v-if="option.separator"
282
+ name="separator"
283
+ :option="option"
284
+ :option-index="index"
285
+ >
286
+ <SelectSeparator class="separator" />
287
+ </slot>
276
288
  </template>
277
289
 
278
- <slot
279
- v-if="option.separator"
280
- name="separator"
281
- :option="option"
282
- :option-index="index"
290
+ <SelectOption
291
+ v-if="context.hasEmptyOptions()"
292
+ :value="null"
293
+ class="option"
294
+ @select.stop.prevent
283
295
  >
284
- <SelectSeparator class="separator" />
296
+ <SelectOptionText class="empty-text">
297
+ <slot name="empty">
298
+ No options
299
+ </slot>
300
+ </SelectOptionText>
301
+ </SelectOption>
302
+ </SelectViewport>
303
+
304
+ <SelectScrollDownButton class="scroll-down-button">
305
+ <slot name="scroll-down-button">
306
+ <FuroIcon name="ph:caret-down" />
285
307
  </slot>
286
- </template>
308
+ </SelectScrollDownButton>
287
309
 
288
- <SelectOption
289
- v-if="context.hasEmptyOptions()"
290
- :value="null"
291
- class="option"
292
- @select.stop.prevent
293
- >
294
- <SelectOptionText class="empty-text">
295
- <slot name="empty">
296
- No options
297
- </slot>
298
- </SelectOptionText>
299
- </SelectOption>
300
- </SelectViewport>
301
-
302
- <SelectScrollDownButton class="scroll-down-button">
303
- <slot name="scroll-down-button">
304
- <FuroIcon name="ph:caret-down" />
305
- </slot>
306
- </SelectScrollDownButton>
307
-
308
- <slot name="content-after" />
309
- </SelectContent>
310
+ <slot name="content-after" />
311
+ </SelectContent>
312
+ </SelectPortal>
310
313
  </SelectRoot>
311
314
  </div>
312
315
  </template>
@@ -426,7 +429,7 @@ export default defineComponent({
426
429
  padding-block: 0.25rem;
427
430
  padding-inline: 0.375rem;
428
431
 
429
- min-height: calc(var(--size-input-height) - 0.5rem);
432
+ min-height: var(--size-option-height);
430
433
 
431
434
  font: var(--font-body-medium);
432
435
  user-select: none;
@@ -369,6 +369,15 @@ export default class FuroSelectContext extends BaseFuroContext {
369
369
  return this.triggerParcel
370
370
  }
371
371
 
372
+ /**
373
+ * Extract portal attributes.
374
+ *
375
+ * @returns {Props['portalParcel']}
376
+ */
377
+ extractPortalAttributes () {
378
+ return this.portalParcel
379
+ }
380
+
372
381
  /**
373
382
  * Extract content attributes.
374
383
  *
@@ -437,7 +437,9 @@ export default class FuroToggleGroupContext extends BaseFuroContext {
437
437
  const value = rawValue
438
438
  ?? this.resolveDefaultValue()
439
439
 
440
- this.internalValueRef.value = value
440
+ if (!this.isControlled()) {
441
+ this.internalValueRef.value = value
442
+ }
441
443
 
442
444
  const customEvent = this.buildCustomEvent({
443
445
  name: this.EMIT_EVENT_NAME.CHANGE_VALUE,
@@ -278,8 +278,8 @@ export default defineComponent({
278
278
  align-items: center;
279
279
  justify-content: center;
280
280
 
281
- width: 1.75rem;
282
- height: 1.75rem;
281
+ width: var(--size-close-button-medium);
282
+ height: var(--size-close-button-medium);
283
283
 
284
284
  border: none;
285
285
  border-radius: var(--size-border-radius-small);
@@ -479,8 +479,8 @@ export default defineComponent({
479
479
  align-items: center;
480
480
  justify-content: center;
481
481
 
482
- width: 1.75rem;
483
- height: 1.75rem;
482
+ width: var(--size-close-button-medium);
483
+ height: var(--size-close-button-medium);
484
484
 
485
485
  border: none;
486
486
  border-radius: var(--size-border-radius-small);
@@ -217,6 +217,7 @@ export default defineComponent({
217
217
  .unit-sidebar {
218
218
  border-inline-end: var(--size-thinnest) solid var(--color-border);
219
219
 
220
+ box-sizing: border-box;
220
221
  width: var(--size-sidebar-width);
221
222
  height: 100%;
222
223
 
@@ -270,7 +271,7 @@ export default defineComponent({
270
271
  padding-block: 0.5rem;
271
272
  padding-inline: 0.5rem;
272
273
 
273
- color: var(--color-foreground-tertiary);
274
+ color: var(--color-foreground-secondary);
274
275
  font: var(--font-label-tiny);
275
276
  }
276
277
 
@@ -292,6 +293,7 @@ export default defineComponent({
292
293
  border: none;
293
294
  border-radius: var(--size-border-radius-large);
294
295
 
296
+ box-sizing: border-box;
295
297
  width: 100%;
296
298
 
297
299
  display: flex;
@@ -379,7 +381,7 @@ export default defineComponent({
379
381
  width: 0.875rem;
380
382
  height: 0.875rem;
381
383
 
382
- color: var(--color-foreground-tertiary);
384
+ color: var(--color-foreground-glyph);
383
385
  }
384
386
 
385
387
  /* nested sub-rows */
@@ -425,6 +427,7 @@ export default defineComponent({
425
427
  border: none;
426
428
  border-radius: var(--size-border-radius-large);
427
429
 
430
+ box-sizing: border-box;
428
431
  width: 100%;
429
432
 
430
433
  display: flex;
@@ -435,7 +438,7 @@ export default defineComponent({
435
438
 
436
439
  background-color: transparent;
437
440
 
438
- color: var(--color-foreground-tertiary);
441
+ color: var(--color-foreground-secondary);
439
442
  font: var(--font-label-small);
440
443
  text-align: start;
441
444
 
@@ -673,7 +673,7 @@ export default defineComponent({
673
673
  }
674
674
 
675
675
  .unit-table .state-row.error > td {
676
- color: var(--color-destructive);
676
+ color: var(--color-destructive-text);
677
677
  }
678
678
 
679
679
  .unit-table .spinner-icon {
@@ -524,8 +524,8 @@ export default defineComponent({
524
524
  align-items: center;
525
525
  justify-content: center;
526
526
 
527
- width: 1.25rem;
528
- height: 1.25rem;
527
+ width: var(--size-close-button-small);
528
+ height: var(--size-close-button-small);
529
529
 
530
530
  border: none;
531
531
  border-radius: var(--size-border-radius-small);
@@ -306,6 +306,17 @@ export default class FuroToastContext extends BaseFuroContext {
306
306
  }
307
307
  }
308
308
 
309
+ /**
310
+ * get: explicitLabel
311
+ *
312
+ * @returns {string | null} Label the app set, without the default, so an unset label keeps the hotkey in the default name.
313
+ */
314
+ get explicitLabel () {
315
+ return this.props.parcel
316
+ ?.label
317
+ ?? null
318
+ }
319
+
309
320
  /**
310
321
  * Resolve the swipe-to-dismiss direction. Honors an explicit
311
322
  * `parcel.swipeDirection`; otherwise derives it from the position so a
@@ -606,6 +617,7 @@ export default class FuroToastContext extends BaseFuroContext {
606
617
  */
607
618
  extractViewportAttributes () {
608
619
  const entries = [
620
+ ['label', this.explicitLabel],
609
621
  ['hotkey', this.parcel?.hotkey ?? null],
610
622
  ]
611
623
  .filter(([, attributeValue]) => attributeValue !== null)
@@ -14,7 +14,6 @@ const DEFAULT_CONFIG = {
14
14
  position: 'bottom-right',
15
15
  durationInMilliseconds: 4000,
16
16
  maxVisible: 3,
17
- label: 'Notifications',
18
17
  hotkey: null,
19
18
  richColors: false,
20
19
  }