@openreachtech/furo-vue 1.4.0 → 1.5.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 (71) 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 +166 -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/molecules/FuroDropdownMenu/FuroDropdownMenu.vue +1 -1
  7. package/lib/components/molecules/FuroSelect/FuroSelect.vue +145 -142
  8. package/lib/components/molecules/FuroSelect/FuroSelectContext.js +9 -0
  9. package/lib/components/molecules/FuroToggleGroup/FuroToggleGroupContext.js +3 -1
  10. package/lib/components/organisms/FuroDialog/FuroDialog.vue +2 -2
  11. package/lib/components/organisms/FuroDrawer/FuroDrawer.vue +2 -2
  12. package/lib/components/organisms/FuroSidebar/FuroSidebar.vue +3 -0
  13. package/lib/components/organisms/FuroToast/FuroToast.vue +2 -2
  14. package/lib/components/organisms/FuroToast/FuroToastContext.js +12 -0
  15. package/lib/components/organisms/FuroToast/ToastQueue.js +0 -1
  16. package/package.json +23 -23
  17. package/public/furo-vue/components.json +3 -3
  18. package/types/generated/components/atoms/FuroAvatar/FuroAvatar.vue.d.ts +81 -0
  19. package/types/generated/components/atoms/FuroBadge/FuroBadge.vue.d.ts +46 -0
  20. package/types/generated/components/atoms/FuroButton/FuroButton.vue.d.ts +54 -0
  21. package/types/generated/components/atoms/FuroCheckbox/FuroCheckbox.vue.d.ts +83 -1
  22. package/types/generated/components/atoms/FuroEmailField/FuroEmailField.vue.d.ts +3 -0
  23. package/types/generated/components/atoms/FuroFileField/FuroFileField.vue.d.ts +3 -0
  24. package/types/generated/components/atoms/FuroIcon/FuroIcon.vue.d.ts +3 -0
  25. package/types/generated/components/atoms/FuroNumberField/FuroNumberField.vue.d.ts +32 -5
  26. package/types/generated/components/atoms/FuroPasswordField/FuroPasswordField.vue.d.ts +3 -0
  27. package/types/generated/components/atoms/FuroRadio/FuroRadio.vue.d.ts +106 -0
  28. package/types/generated/components/atoms/FuroSwitch/FuroSwitch.vue.d.ts +74 -1
  29. package/types/generated/components/atoms/FuroTextField/FuroTextField.vue.d.ts +3 -0
  30. package/types/generated/components/atoms/FuroTextarea/FuroTextarea.vue.d.ts +3 -0
  31. package/types/generated/components/atoms/FuroToggle/FuroToggle.vue.d.ts +26 -0
  32. package/types/generated/components/molecules/FuroAccordion/FuroAccordion.vue.d.ts +150 -1
  33. package/types/generated/components/molecules/FuroAttachment/FuroAttachment.vue.d.ts +53 -0
  34. package/types/generated/components/molecules/FuroAutocompleteField/FuroAutocompleteField.vue.d.ts +460 -4
  35. package/types/generated/components/molecules/FuroAvatarGroup/FuroAvatarGroup.vue.d.ts +25 -0
  36. package/types/generated/components/molecules/FuroBreadcrumb/FuroBreadcrumb.vue.d.ts +55 -0
  37. package/types/generated/components/molecules/FuroCollapsible/FuroCollapsible.vue.d.ts +107 -0
  38. package/types/generated/components/molecules/FuroControlBlock/FuroControlBlock.vue.d.ts +7 -0
  39. package/types/generated/components/molecules/FuroDatePicker/FuroDatePicker.vue.d.ts +39 -0
  40. package/types/generated/components/molecules/FuroDateTimePicker/FuroDateTimePicker.vue.d.ts +9 -0
  41. package/types/generated/components/molecules/FuroDropdownMenu/FuroDropdownMenu.vue.d.ts +144 -1
  42. package/types/generated/components/molecules/FuroDropdownMenu/FuroDropdownMenuOptionRows.vue.d.ts +274 -1
  43. package/types/generated/components/molecules/FuroEditableField/FuroEditableField.vue.d.ts +139 -0
  44. package/types/generated/components/molecules/FuroEmptyState/FuroEmptyState.vue.d.ts +10 -0
  45. package/types/generated/components/molecules/FuroErrorState/FuroErrorState.vue.d.ts +10 -0
  46. package/types/generated/components/molecules/FuroPagination/FuroPagination.vue.d.ts +144 -0
  47. package/types/generated/components/molecules/FuroPopover/FuroPopover.vue.d.ts +20 -0
  48. package/types/generated/components/molecules/FuroScrollArea/FuroScrollArea.vue.d.ts +120 -0
  49. package/types/generated/components/molecules/FuroSearchField/FuroSearchField.vue.d.ts +31 -0
  50. package/types/generated/components/molecules/FuroSectionHeader/FuroSectionHeader.vue.d.ts +32 -0
  51. package/types/generated/components/molecules/FuroSelect/FuroSelect.vue.d.ts +456 -4
  52. package/types/generated/components/molecules/FuroSelect/FuroSelectContext.d.ts +6 -0
  53. package/types/generated/components/molecules/FuroSeparator/FuroSeparator.vue.d.ts +7 -0
  54. package/types/generated/components/molecules/FuroSkeleton/FuroSkeleton.vue.d.ts +3 -0
  55. package/types/generated/components/molecules/FuroSplitter/FuroSplitter.vue.d.ts +154 -0
  56. package/types/generated/components/molecules/FuroTimeField/FuroTimeField.vue.d.ts +76 -0
  57. package/types/generated/components/molecules/FuroToggleGroup/FuroToggleGroup.vue.d.ts +80 -0
  58. package/types/generated/components/molecules/FuroToolBar/FuroToolBar.vue.d.ts +16 -0
  59. package/types/generated/components/molecules/FuroTooltip/FuroTooltip.vue.d.ts +24 -0
  60. package/types/generated/components/organisms/FuroAlertDialog/FuroAlertDialog.vue.d.ts +227 -0
  61. package/types/generated/components/organisms/FuroDialog/FuroDialog.vue.d.ts +215 -0
  62. package/types/generated/components/organisms/FuroDrawer/FuroDrawer.vue.d.ts +264 -5
  63. package/types/generated/components/organisms/FuroEditor/FuroEditor.vue.d.ts +84 -1
  64. package/types/generated/components/organisms/FuroEditor/FuroEditorMentionMenu.vue.d.ts +3 -0
  65. package/types/generated/components/organisms/FuroSidebar/FuroSidebar.vue.d.ts +71 -0
  66. package/types/generated/components/organisms/FuroStepper/FuroStepper.vue.d.ts +207 -0
  67. package/types/generated/components/organisms/FuroTable/FuroTable.vue.d.ts +82 -1
  68. package/types/generated/components/organisms/FuroTabs/FuroTabs.vue.d.ts +132 -1
  69. package/types/generated/components/organisms/FuroToast/FuroToast.vue.d.ts +349 -0
  70. package/types/generated/components/organisms/FuroToast/FuroToastContext.d.ts +6 -0
  71. package/types/generated/components/organisms/FuroToast/FuroToaster.vue.d.ts +7 -0
@@ -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
 
@@ -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;
@@ -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;
@@ -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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openreachtech/furo-vue",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "furo for Vue",
5
5
  "main": "index.js",
6
6
  "types": "./types/index.d.ts",
@@ -77,22 +77,22 @@
77
77
  },
78
78
  "license": "Apache-2.0",
79
79
  "dependencies": {
80
- "@iconify/vue": "^5.0.1",
81
- "@openreachtech/furo": "^1.10.1",
82
- "@tiptap/core": "^3.30.5",
83
- "@tiptap/extension-highlight": "^3.30.5",
84
- "@tiptap/extension-image": "^3.30.5",
85
- "@tiptap/extension-mention": "^3.30.5",
86
- "@tiptap/extension-text-align": "^3.30.5",
87
- "@tiptap/extension-text-style": "^3.30.5",
88
- "@tiptap/extension-typography": "^3.30.5",
89
- "@tiptap/extensions": "^3.30.5",
90
- "@tiptap/pm": "^3.30.5",
91
- "@tiptap/starter-kit": "^3.30.5",
92
- "@tiptap/vue-3": "^3.30.5",
93
- "marked": "^18.0.9",
94
- "reka-ui": "^2.10.3",
95
- "vue": "^3.5.41"
80
+ "@iconify/vue": "^5.0.3",
81
+ "@openreachtech/furo": "^1.11.0",
82
+ "@tiptap/core": "^3.31.4",
83
+ "@tiptap/extension-highlight": "^3.31.4",
84
+ "@tiptap/extension-image": "^3.31.4",
85
+ "@tiptap/extension-mention": "^3.31.4",
86
+ "@tiptap/extension-text-align": "^3.31.4",
87
+ "@tiptap/extension-text-style": "^3.31.4",
88
+ "@tiptap/extension-typography": "^3.31.4",
89
+ "@tiptap/extensions": "^3.31.4",
90
+ "@tiptap/pm": "^3.31.4",
91
+ "@tiptap/starter-kit": "^3.31.4",
92
+ "@tiptap/vue-3": "^3.31.4",
93
+ "marked": "^18.1.0",
94
+ "reka-ui": "^2.11.0",
95
+ "vue": "^3.5.43"
96
96
  },
97
97
  "peerDependencies": {
98
98
  "@nuxt/icon": "^1.0.0",
@@ -108,27 +108,27 @@
108
108
  },
109
109
  "devDependencies": {
110
110
  "@babel/core": "^7.29.7",
111
- "@babel/eslint-parser": "^7.29.7",
111
+ "@babel/eslint-parser": "^7.29.9",
112
112
  "@babel/preset-env": "^7.29.7",
113
113
  "@iconify-json/ph": "^1.2.2",
114
114
  "@nuxt/icon": "^1.15.0",
115
115
  "@openreachtech/eslint-config": "^3.0.2",
116
- "@openreachtech/jest-constructor-spy": "^1.1.0",
117
- "@openreachtech/jest-deep-containing": "^1.0.1",
116
+ "@openreachtech/jest-constructor-spy": "^1.1.2",
117
+ "@openreachtech/jest-deep-containing": "^1.0.2",
118
118
  "@types/jest": "^30.0.0",
119
- "@vue/test-utils": "^2.4.11",
119
+ "@vue/test-utils": "^2.5.1",
120
120
  "@vue/vue3-jest": "^29.2.6",
121
121
  "babel-jest": "^29.7.0",
122
122
  "core-js": "^3.50.0",
123
123
  "eslint": "^9.39.5",
124
124
  "eslint-plugin-eslint-comments": "^3.2.0",
125
125
  "eslint-plugin-vue": "^9.33.0",
126
- "globals": "^17.11.0",
126
+ "globals": "^17.13.0",
127
127
  "jest": "^29.7.0",
128
128
  "jest-environment-jsdom": "^29.7.0",
129
129
  "nuxt": "^3.21.11",
130
130
  "typescript": "^5.9.3",
131
- "vue-tsc": "^3.3.9",
131
+ "vue-tsc": "^3.3.12",
132
132
  "whatwg-fetch": "^3.6.20"
133
133
  },
134
134
  "overrides": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "library": "@openreachtech/furo-vue",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "generatedFrom": "app/docs/component-registry.js",
5
5
  "layers": [
6
6
  "foundation",
@@ -1610,7 +1610,7 @@
1610
1610
  "name": "portalParcel",
1611
1611
  "type": "object | null",
1612
1612
  "default": "null",
1613
- "description": "Extra attributes applied to the portal part."
1613
+ "description": "Attributes of the portal the option list renders in, such as to or disabled. The list renders at body by default."
1614
1614
  },
1615
1615
  {
1616
1616
  "name": "contentParcel",
@@ -4547,7 +4547,7 @@
4547
4547
  "name": "label",
4548
4548
  "type": "string",
4549
4549
  "default": "'Notifications'",
4550
- "description": "Accessible label for the region."
4550
+ "description": "Accessible name of the toast region, in the app's own language. It also prefixes the announcement of each toast. When unset, the region keeps its default name, Notifications (F8)."
4551
4551
  },
4552
4552
  {
4553
4553
  "name": "hotkey",
@@ -1,5 +1,22 @@
1
1
  declare const _default: typeof __VLS_export;
2
2
  export default _default;
3
+ export type __VLS_LocalComponents = typeof __VLS_componentsOption;
4
+ export type __VLS_GlobalComponents = import("vue").GlobalComponents;
5
+ export type __VLS_LocalDirectives = {};
6
+ export type __VLS_StyleScopedClasses = {} & {
7
+ "unit-avatar": boolean;
8
+ } & {
9
+ "circle": boolean;
10
+ } & {
11
+ "square": boolean;
12
+ } & {
13
+ "image": boolean;
14
+ } & {
15
+ "fallback": boolean;
16
+ };
17
+ export type __VLS_Slots = {} & {
18
+ fallback?: (props: typeof __VLS_18) => any;
19
+ };
3
20
  declare const __VLS_export: import("vue").DefineComponent<{
4
21
  parcel: import("./FuroAvatarContext.js").FuroAvatarParcel | null;
5
22
  }, {
@@ -71,4 +88,68 @@ declare const __VLS_export: import("vue").DefineComponent<{
71
88
  };
72
89
  });
73
90
  }, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
91
+ declare namespace __VLS_componentsOption {
92
+ let AvatarRoot: {
93
+ new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("reka-ui").AvatarRootProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {}, false, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
94
+ P: {};
95
+ B: {};
96
+ D: {};
97
+ C: {};
98
+ M: {};
99
+ Defaults: {};
100
+ }, Readonly<import("reka-ui").AvatarRootProps> & Readonly<{}>, {}, {}, {}, {}, {}>;
101
+ __isFragment?: never;
102
+ __isTeleport?: never;
103
+ __isSuspense?: never;
104
+ } & import("vue").ComponentOptionsBase<Readonly<import("reka-ui").AvatarRootProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
105
+ $slots: {
106
+ default?: (props: {}) => any;
107
+ };
108
+ });
109
+ let AvatarImage: {
110
+ new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("reka-ui").AvatarImageProps> & Readonly<{
111
+ onLoadingStatusChange?: ((value: "idle" | "loading" | "loaded" | "error") => any) | undefined;
112
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
113
+ loadingStatusChange: (value: "idle" | "loading" | "loaded" | "error") => any;
114
+ }, import("vue").PublicProps, {}, false, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
115
+ P: {};
116
+ B: {};
117
+ D: {};
118
+ C: {};
119
+ M: {};
120
+ Defaults: {};
121
+ }, Readonly<import("reka-ui").AvatarImageProps> & Readonly<{
122
+ onLoadingStatusChange?: ((value: "idle" | "loading" | "loaded" | "error") => any) | undefined;
123
+ }>, {}, {}, {}, {}, {}>;
124
+ __isFragment?: never;
125
+ __isTeleport?: never;
126
+ __isSuspense?: never;
127
+ } & import("vue").ComponentOptionsBase<Readonly<import("reka-ui").AvatarImageProps> & Readonly<{
128
+ onLoadingStatusChange?: ((value: "idle" | "loading" | "loaded" | "error") => any) | undefined;
129
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
130
+ loadingStatusChange: (value: "idle" | "loading" | "loaded" | "error") => any;
131
+ }, string, {}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
132
+ $slots: {
133
+ default?: (props: {}) => any;
134
+ };
135
+ });
136
+ let AvatarFallback: {
137
+ new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("reka-ui").AvatarFallbackProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {}, false, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
138
+ P: {};
139
+ B: {};
140
+ D: {};
141
+ C: {};
142
+ M: {};
143
+ Defaults: {};
144
+ }, Readonly<import("reka-ui").AvatarFallbackProps> & Readonly<{}>, {}, {}, {}, {}, {}>;
145
+ __isFragment?: never;
146
+ __isTeleport?: never;
147
+ __isSuspense?: never;
148
+ } & import("vue").ComponentOptionsBase<Readonly<import("reka-ui").AvatarFallbackProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
149
+ $slots: {
150
+ default?: (props: {}) => any;
151
+ };
152
+ });
153
+ }
154
+ declare var __VLS_18: {};
74
155
  import FuroAvatarContext from './FuroAvatarContext.js';