@vuetify/v0 1.0.0-alpha.1 → 1.0.0-alpha.3

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 (158) hide show
  1. package/README.md +3 -1
  2. package/dist/{adapter-T7AedXkz.d.mts → adapter-58IvIfAZ.d.mts} +1 -1
  3. package/dist/{adapter-DtgIrQsG.mjs → adapter-Be9zUc-n.mjs} +1 -1
  4. package/dist/{adapter-DoziXEzS.d.mts → adapter-BvWEd9w-.d.mts} +2 -2
  5. package/dist/{adapter-J7ude3gO.d.mts → adapter-DlX3FA3A.d.mts} +1 -1
  6. package/dist/{adapter-CDpOQ8sn.mjs → adapter-gQ2SNKZq.mjs} +3 -3
  7. package/dist/{adapters-Da2twiUn.mjs → adapters-BSiqsTZN.mjs} +1 -1
  8. package/dist/adapters-C3QXhf4I.mjs +2 -0
  9. package/dist/adapters-CMJGA1k7.mjs +2 -0
  10. package/dist/adapters-Dse4bPxk.mjs +5 -0
  11. package/dist/adapters-_ZqxCD8f.mjs +4 -0
  12. package/dist/browser/index.js +3880 -425
  13. package/dist/components/index.d.mts +3 -3
  14. package/dist/components/index.mjs +2 -2
  15. package/dist/{components-CaPQCjo5.mjs → components-C4jI-78d.mjs} +3706 -365
  16. package/dist/composables/index.d.mts +19 -19
  17. package/dist/composables/index.mjs +27 -25
  18. package/dist/{consola-Byg0ybzh.d.mts → consola-BdgyPEfx.d.mts} +1 -1
  19. package/dist/constants/index.d.mts +2 -2
  20. package/dist/constants/index.mjs +3 -3
  21. package/dist/{createDataTable-B4UflKnT.mjs → createDataTable-iODP6aKB.mjs} +15 -12
  22. package/dist/{createGroup-BC2nfttd.mjs → createGroup-CGk6hY_Y.mjs} +7 -7
  23. package/dist/{createTokens-oJAeh262.mjs → createRegistry-BXzdXAjq.mjs} +6 -299
  24. package/dist/{createSelection-BA9guLah.mjs → createSelection-B3HJEPNg.mjs} +1 -1
  25. package/dist/{createSingle-BHxHLZeg.mjs → createSingle-Dql8mRi-.mjs} +1 -1
  26. package/dist/createTokens-DgFYsOrv.mjs +302 -0
  27. package/dist/data-table/adapters/client/index.d.mts +1 -1
  28. package/dist/data-table/adapters/client/index.mjs +1 -1
  29. package/dist/data-table/adapters/index.d.mts +4 -4
  30. package/dist/data-table/adapters/index.mjs +5 -5
  31. package/dist/data-table/adapters/server/index.d.mts +1 -1
  32. package/dist/data-table/adapters/server/index.mjs +1 -1
  33. package/dist/data-table/adapters/virtual/index.d.mts +1 -1
  34. package/dist/data-table/adapters/virtual/index.mjs +1 -1
  35. package/dist/data-table/index.d.mts +5 -5
  36. package/dist/data-table/index.mjs +5 -5
  37. package/dist/date/index.d.mts +2 -2
  38. package/dist/date/index.mjs +4 -4
  39. package/dist/features/adapters/flagsmith/index.d.mts +1 -1
  40. package/dist/features/adapters/flagsmith/index.mjs +1 -1
  41. package/dist/features/adapters/launchdarkly/index.d.mts +1 -1
  42. package/dist/features/adapters/launchdarkly/index.mjs +1 -1
  43. package/dist/features/adapters/posthog/index.d.mts +1 -1
  44. package/dist/features/adapters/posthog/index.mjs +1 -1
  45. package/dist/features/index.d.mts +2 -2
  46. package/dist/features/index.mjs +1 -1
  47. package/dist/{globals-Berkg6mP.mjs → globals-zEjWBKCr.mjs} +1 -1
  48. package/dist/htmlElements-D4oMQZPJ.mjs +28 -0
  49. package/dist/{index-M8EpGjjA.d.mts → index-1XdASTjp.d.mts} +1 -1
  50. package/dist/{index-DFvLSoto.d.mts → index-B76iGRE3.d.mts} +164 -15
  51. package/dist/{index-DVPq3_Fz.d.mts → index-BJGcVy7e.d.mts} +4 -4
  52. package/dist/index-BgCkepP_.d.mts +31 -0
  53. package/dist/{index-tyzwWFHS.d.mts → index-BzFHTW59.d.mts} +1 -1
  54. package/dist/{index-CDcl4wPo.d.mts → index-CT5SCLzW.d.mts} +1 -1
  55. package/dist/{index-TtSSvHY6.d.mts → index-DE3bWw11.d.mts} +2 -2
  56. package/dist/{index-Gk3x_7zD.d.mts → index-DNDuacmH.d.mts} +498 -275
  57. package/dist/{index-F2Fmxnzi.d.mts → index-Dp1HjBxJ.d.mts} +1 -1
  58. package/dist/{index-B_AlCD7t.d.mts → index-DuddF-NR.d.mts} +2 -9
  59. package/dist/{index-Dxx0eMLi.d.mts → index-GOpjKzaJ.d.mts} +1 -1
  60. package/dist/index.d.mts +23 -23
  61. package/dist/index.mjs +30 -28
  62. package/dist/json/attributes.json +60 -4
  63. package/dist/json/importMap.json +16 -0
  64. package/dist/json/tags.json +29 -0
  65. package/dist/json/web-types.json +184 -6
  66. package/dist/locale/adapters/index.d.mts +2 -2
  67. package/dist/locale/adapters/index.mjs +2 -2
  68. package/dist/locale/adapters/v0/index.d.mts +1 -1
  69. package/dist/locale/adapters/v0/index.mjs +1 -1
  70. package/dist/locale/adapters/vue-i18n/index.d.mts +1 -1
  71. package/dist/locale/index.d.mts +3 -3
  72. package/dist/locale/index.mjs +2 -2
  73. package/dist/logger/adapters/consola/index.d.mts +1 -1
  74. package/dist/logger/adapters/index.d.mts +4 -4
  75. package/dist/logger/adapters/index.mjs +2 -2
  76. package/dist/logger/adapters/pino/index.d.mts +1 -1
  77. package/dist/logger/adapters/v0/index.d.mts +1 -1
  78. package/dist/logger/adapters/v0/index.mjs +1 -1
  79. package/dist/logger/index.d.mts +5 -5
  80. package/dist/logger/index.mjs +2 -2
  81. package/dist/notifications/index.d.mts +2 -2
  82. package/dist/notifications/index.mjs +3 -54
  83. package/dist/palettes/ant/generate/index.mjs +1 -0
  84. package/dist/palettes/ant/index.d.mts +1 -1
  85. package/dist/palettes/index.d.mts +3 -3
  86. package/dist/palettes/leonardo/generate/index.mjs +3 -1
  87. package/dist/palettes/material/generate/index.mjs +1 -0
  88. package/dist/palettes/material/index.d.mts +1 -1
  89. package/dist/palettes/md1/index.d.mts +1 -1
  90. package/dist/palettes/md2/index.d.mts +1 -1
  91. package/dist/palettes/radix/index.d.mts +1 -1
  92. package/dist/palettes/tailwind/index.d.mts +1 -1
  93. package/dist/permissions/adapters/index.d.mts +1 -1
  94. package/dist/permissions/adapters/index.mjs +2 -2
  95. package/dist/permissions/adapters/v0/index.d.mts +1 -1
  96. package/dist/permissions/adapters/v0/index.mjs +1 -1
  97. package/dist/permissions/index.d.mts +1 -1
  98. package/dist/permissions/index.mjs +2 -2
  99. package/dist/{pino-BxddSW2l.d.mts → pino-DNfCEb0p.d.mts} +1 -1
  100. package/dist/{posthog-CPvNHMUb.mjs → posthog-DmuyycaR.mjs} +1 -1
  101. package/dist/rules/index.d.mts +1 -1
  102. package/dist/rules/index.mjs +1 -1
  103. package/dist/{server-ZiHJ4tfq.d.mts → server-3ilWFwqe.d.mts} +1 -1
  104. package/dist/{server-B6OtHgBT.mjs → server-y7zLSCSx.mjs} +1 -1
  105. package/dist/storage/adapters/index.d.mts +2 -2
  106. package/dist/storage/adapters/index.mjs +1 -1
  107. package/dist/storage/adapters/memory/index.d.mts +1 -1
  108. package/dist/storage/adapters/memory/index.mjs +1 -1
  109. package/dist/storage/index.d.mts +3 -3
  110. package/dist/storage/index.mjs +2 -2
  111. package/dist/theme/adapters/index.d.mts +1 -1
  112. package/dist/theme/adapters/index.mjs +4 -4
  113. package/dist/theme/adapters/unhead/index.d.mts +1 -1
  114. package/dist/theme/adapters/unhead/index.mjs +1 -1
  115. package/dist/theme/adapters/v0/index.d.mts +1 -1
  116. package/dist/theme/adapters/v0/index.mjs +1 -1
  117. package/dist/theme/index.d.mts +1 -1
  118. package/dist/theme/index.mjs +3 -3
  119. package/dist/{toArray-BA_JxFPv.mjs → toArray-as9BWxBK.mjs} +1 -0
  120. package/dist/types/index.d.mts +2 -2
  121. package/dist/{unhead-D2YqAcmF.mjs → unhead-B-I2OS6i.mjs} +2 -2
  122. package/dist/{useClickOutside-B9a6Jext.mjs → useClickOutside-CY4U2J9W.mjs} +176 -914
  123. package/dist/{useFeatures-wgMwaQ5W.mjs → useFeatures-BPOke6iP.mjs} +8 -7
  124. package/dist/{useLocale-qMmVnAwS.mjs → useLocale-BV8e3imF.mjs} +10 -7
  125. package/dist/{useLogger-DFIRqm-N.mjs → useLogger-DvdRTrqC.mjs} +3 -3
  126. package/dist/useNotifications-vSJE6z6t.mjs +880 -0
  127. package/dist/{usePermissions-tZhkBJmq.mjs → usePermissions-D3zPwKQc.mjs} +6 -6
  128. package/dist/{useRules-D3UXEtu7.mjs → useRules-BT6cgoTj.mjs} +7 -5
  129. package/dist/{useTheme-BeD__R8t.mjs → useTheme-cUZb2A9O.mjs} +11 -8
  130. package/dist/utilities/index.d.mts +1 -1
  131. package/dist/utilities/index.mjs +11 -5
  132. package/dist/{v0-I2mHxD9T.mjs → v0-C49OI_wc.mjs} +1 -1
  133. package/dist/{v0-CNitYI9N.mjs → v0-CHZpnMeP.mjs} +1 -1
  134. package/dist/{v0-Dzw5OwNo.d.mts → v0-CdusXjY_.d.mts} +1 -1
  135. package/dist/{v0-CWXUkMY0.d.mts → v0-D7Fm2C3Y.d.mts} +1 -1
  136. package/dist/{v0-BG7RhKBv.mjs → v0-Dq3zhexO.mjs} +2 -2
  137. package/dist/{v0-C2UMaHUa.d.mts → v0-DrOub-e1.d.mts} +1 -1
  138. package/dist/{v0-6XptGYVx.mjs → v0-gpExNexS.mjs} +2 -2
  139. package/dist/{virtual-To-dSw2_.mjs → virtual-C0yHf1DC.mjs} +2 -2
  140. package/dist/{virtual-BCOfxnRS.d.mts → virtual-D4fckewC.d.mts} +1 -1
  141. package/package.json +10 -10
  142. package/dist/adapters-BhNTUuxE.mjs +0 -2
  143. package/dist/adapters-CFjrKxA2.mjs +0 -5
  144. package/dist/adapters-CiCexgsk.mjs +0 -4
  145. package/dist/adapters-DegUcfkd.mjs +0 -2
  146. package/dist/htmlElements-CIePKaTX.mjs +0 -75
  147. package/dist/index-D6mQAEs2.d.mts +0 -79
  148. /package/dist/{adapter-DNKjooxI.d.mts → adapter-Dhq68tz0.d.mts} +0 -0
  149. /package/dist/{createPagination-qvJkcTUY.mjs → createPagination-CHF7SmmK.mjs} +0 -0
  150. /package/dist/{flagsmith-DQnnahG5.mjs → flagsmith-Dbh1h8WF.mjs} +0 -0
  151. /package/dist/{index-DxruGeVY.d.mts → index-C6rdXZ7j.d.mts} +0 -0
  152. /package/dist/{index-DvuJXuAN.d.mts → index-CFhUdAHM.d.mts} +0 -0
  153. /package/dist/{index-PWQavSPf.d.mts → index-CROz1VSV.d.mts} +0 -0
  154. /package/dist/{index-D4odwkZg.d.mts → index-DTvqw22G.d.mts} +0 -0
  155. /package/dist/{launchdarkly-2_48EJ1_.mjs → launchdarkly-BKtW-idu.mjs} +0 -0
  156. /package/dist/{memory-DUyWthic.d.mts → memory-CeSQE-QV.d.mts} +0 -0
  157. /package/dist/{memory-XCMtkld1.mjs → memory-oYBvtkgx.mjs} +0 -0
  158. /package/dist/{v0-4OQBCeda.mjs → v0-Bmow1q_x.mjs} +0 -0
@@ -1,21 +1,23 @@
1
- import { a as SUPPORTS_OBSERVER, i as SUPPORTS_MUTATION_OBSERVER, n as SUPPORTS_INTERSECTION_OBSERVER, r as SUPPORTS_MATCH_MEDIA, t as IN_BROWSER } from "./globals-Berkg6mP.mjs";
1
+ import { a as SUPPORTS_OBSERVER, i as SUPPORTS_MUTATION_OBSERVER, n as SUPPORTS_INTERSECTION_OBSERVER, r as SUPPORTS_MATCH_MEDIA, t as IN_BROWSER } from "./globals-zEjWBKCr.mjs";
2
2
  import { clamp, instanceExists, isArray, isElement, isFunction, isNull, isNullOrUndefined, isNumber, isObject, isString, isUndefined, mergeDeep, range, resolveIds, resolveIndexes, useId as useId$1 } from "./utilities/index.mjs";
3
3
  import { i as useContext, t as createTrinity } from "./createTrinity-BTCs1pYx.mjs";
4
- import { a as createPlugin, i as useLogger, o as createPluginContext } from "./useLogger-DFIRqm-N.mjs";
5
- import { a as createRegistry } from "./createTokens-oJAeh262.mjs";
6
- import { i as createModel, t as createSelection } from "./createSelection-BA9guLah.mjs";
7
- import { t as createSingle } from "./createSingle-BHxHLZeg.mjs";
8
- import { a as useLocale } from "./useLocale-qMmVnAwS.mjs";
9
- import { t as toArray } from "./toArray-BA_JxFPv.mjs";
10
- import { n as createFilter } from "./adapter-CDpOQ8sn.mjs";
11
- import { t as createGroup } from "./createGroup-BC2nfttd.mjs";
12
- import "./createPagination-qvJkcTUY.mjs";
13
- import "./createDataTable-B4UflKnT.mjs";
14
- import { a as useRules, o as isStandardSchema } from "./useRules-D3UXEtu7.mjs";
15
- import "./useFeatures-wgMwaQ5W.mjs";
16
- import "./usePermissions-tZhkBJmq.mjs";
17
- import { t as MemoryAdapter } from "./memory-XCMtkld1.mjs";
18
- import "./useTheme-BeD__R8t.mjs";
4
+ import { a as createPlugin, i as useLogger, o as createPluginContext } from "./useLogger-DvdRTrqC.mjs";
5
+ import { t as createRegistry } from "./createRegistry-BXzdXAjq.mjs";
6
+ import { i as createModel, t as createSelection } from "./createSelection-B3HJEPNg.mjs";
7
+ import { t as createSingle } from "./createSingle-Dql8mRi-.mjs";
8
+ import "./createTokens-DgFYsOrv.mjs";
9
+ import { a as useLocale } from "./useLocale-BV8e3imF.mjs";
10
+ import { c as useTimer } from "./useNotifications-vSJE6z6t.mjs";
11
+ import { t as toArray } from "./toArray-as9BWxBK.mjs";
12
+ import { n as createFilter } from "./adapter-gQ2SNKZq.mjs";
13
+ import { t as createGroup } from "./createGroup-CGk6hY_Y.mjs";
14
+ import "./createPagination-CHF7SmmK.mjs";
15
+ import "./createDataTable-iODP6aKB.mjs";
16
+ import { a as useRules, o as isStandardSchema } from "./useRules-BT6cgoTj.mjs";
17
+ import "./useFeatures-BPOke6iP.mjs";
18
+ import "./usePermissions-D3zPwKQc.mjs";
19
+ import { t as MemoryAdapter } from "./memory-oYBvtkgx.mjs";
20
+ import "./useTheme-cUZb2A9O.mjs";
19
21
  import { computed, effectScope, hasInjectionContext, isRef, nextTick, onMounted, onScopeDispose, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, toRef, toValue, unref, watch, watchEffect } from "vue";
20
22
  //#region src/composables/createBreadcrumbs/index.ts
21
23
  /**
@@ -169,142 +171,6 @@ function useBreadcrumbs(namespace = "v0:breadcrumbs") {
169
171
  return useContext(namespace);
170
172
  }
171
173
  //#endregion
172
- //#region src/composables/useTimer/index.ts
173
- /**
174
- * @module useTimer
175
- *
176
- * @see https://0.vuetifyjs.com/composables/system/use-timer
177
- *
178
- * @remarks
179
- * A reactive timer composable with pause/resume support.
180
- *
181
- * Key features:
182
- * - Start/stop/pause/resume controls
183
- * - Reactive remaining time tracking
184
- * - One-shot (default) or repeating mode
185
- * - Automatic cleanup on scope disposal
186
- * - SSR-safe
187
- *
188
- * @example
189
- * ```ts
190
- * import { useTimer } from '@vuetify/v0'
191
- *
192
- * const timer = useTimer(() => console.log('fired'), { duration: 5000 })
193
- * timer.start()
194
- * ```
195
- */
196
- /**
197
- * Creates a reactive timer with pause/resume support.
198
- *
199
- * @param handler Callback invoked when the timer fires.
200
- * @param options Timer configuration.
201
- * @returns Timer controls and reactive state.
202
- *
203
- * @see https://0.vuetifyjs.com/composables/system/use-timer
204
- *
205
- * @example
206
- * ```ts
207
- * const timer = useTimer(() => console.log('fired'), { duration: 5000 })
208
- *
209
- * timer.start()
210
- * timer.pause()
211
- * timer.resume()
212
- * timer.stop()
213
- * ```
214
- */
215
- function useTimer(handler, options = {}) {
216
- const { duration = 1e3, repeat = false } = options;
217
- const remaining = shallowRef(duration);
218
- const isActive = shallowRef(false);
219
- const isPaused = shallowRef(false);
220
- let timeoutId;
221
- let trackingId;
222
- let startedAt = 0;
223
- let budget = duration;
224
- function clearTimer() {
225
- if (!/* @__PURE__ */ isUndefined(timeoutId)) {
226
- globalThis.clearTimeout(timeoutId);
227
- timeoutId = void 0;
228
- }
229
- }
230
- function startTracking() {
231
- stopTracking();
232
- if (!IN_BROWSER) return;
233
- trackingId = globalThis.setInterval(() => {
234
- if (!isActive.value || isPaused.value) return;
235
- const elapsed = Date.now() - startedAt;
236
- remaining.value = Math.max(0, budget - elapsed);
237
- }, 100);
238
- }
239
- function stopTracking() {
240
- if (!/* @__PURE__ */ isUndefined(trackingId)) {
241
- globalThis.clearInterval(trackingId);
242
- trackingId = void 0;
243
- }
244
- }
245
- function fire() {
246
- clearTimer();
247
- stopTracking();
248
- handler();
249
- if (repeat) begin(duration);
250
- else {
251
- isActive.value = false;
252
- remaining.value = 0;
253
- }
254
- }
255
- function begin(ms) {
256
- clearTimer();
257
- stopTracking();
258
- budget = ms;
259
- startedAt = Date.now();
260
- remaining.value = ms;
261
- isActive.value = true;
262
- isPaused.value = false;
263
- timeoutId = globalThis.setTimeout(fire, ms);
264
- startTracking();
265
- }
266
- function start() {
267
- if (duration < 0) return;
268
- begin(duration);
269
- }
270
- function stop() {
271
- clearTimer();
272
- stopTracking();
273
- isActive.value = false;
274
- isPaused.value = false;
275
- remaining.value = duration;
276
- }
277
- function pause() {
278
- if (!isActive.value || isPaused.value) return;
279
- const elapsed = Date.now() - startedAt;
280
- budget = Math.max(0, budget - elapsed);
281
- remaining.value = budget;
282
- clearTimer();
283
- stopTracking();
284
- isPaused.value = true;
285
- }
286
- function resume() {
287
- if (!isPaused.value) return;
288
- isPaused.value = false;
289
- startedAt = Date.now();
290
- timeoutId = globalThis.setTimeout(fire, budget);
291
- startTracking();
292
- }
293
- onScopeDispose(() => {
294
- clearTimer();
295
- stopTracking();
296
- }, true);
297
- return {
298
- start,
299
- stop,
300
- pause,
301
- resume,
302
- remaining,
303
- isActive,
304
- isPaused
305
- };
306
- }
307
- //#endregion
308
174
  //#region src/composables/usePopover/index.ts
309
175
  /**
310
176
  * @module usePopover
@@ -797,7 +663,7 @@ function createCombobox(options = {}) {
797
663
  const hasError = shallowRef(false);
798
664
  const errors = computed(() => {
799
665
  const messages = toValue(errorMessages);
800
- return messages ? toArray(messages) : [];
666
+ return messages ? /* @__PURE__ */ toArray(messages) : [];
801
667
  });
802
668
  const isValid = toRef(() => {
803
669
  if (toValue(error)) return false;
@@ -1043,7 +909,7 @@ function createForm(options = {}) {
1043
909
  for (const ticket of registry.values()) ticket.value.reset();
1044
910
  }
1045
911
  async function submit(id) {
1046
- const ids = id ? toArray(id) : [...registry.keys()];
912
+ const ids = id ? /* @__PURE__ */ toArray(id) : [...registry.keys()];
1047
913
  return (await Promise.all(ids.map(async (key) => {
1048
914
  const ticket = registry.get(key);
1049
915
  if (!ticket) return true;
@@ -1182,7 +1048,7 @@ function createValidation(_options = {}) {
1182
1048
  const isValidating = shallowRef(false);
1183
1049
  let generation = 0;
1184
1050
  function register(input) {
1185
- if (/* @__PURE__ */ isFunction(input) || /* @__PURE__ */ isString(input) || isStandardSchema(input)) {
1051
+ if (/* @__PURE__ */ isFunction(input) || /* @__PURE__ */ isString(input) || /* @__PURE__ */ isStandardSchema(input)) {
1186
1052
  const resolved = rulesContext.resolve([input]);
1187
1053
  return group.register({ value: resolved[0] ?? (() => true) });
1188
1054
  }
@@ -1203,7 +1069,7 @@ function createValidation(_options = {}) {
1203
1069
  if (!silent) isValidating.value = true;
1204
1070
  try {
1205
1071
  const results = await Promise.all(activeRules.map((rule) => rule(val)));
1206
- if (gen !== generation) return isValid.value ?? false;
1072
+ if (gen !== generation) return false;
1207
1073
  const errorMessages = results.filter((result) => /* @__PURE__ */ isString(result) || result === false).map((result) => result === false ? "Validation failed" : result);
1208
1074
  if (!silent) {
1209
1075
  errors.value = errorMessages;
@@ -1211,7 +1077,7 @@ function createValidation(_options = {}) {
1211
1077
  }
1212
1078
  return errorMessages.length === 0;
1213
1079
  } catch (error) {
1214
- if (gen !== generation) return isValid.value ?? false;
1080
+ if (gen !== generation) return false;
1215
1081
  if (!silent) {
1216
1082
  errors.value = [error instanceof Error ? error.message : "Validation error"];
1217
1083
  isValid.value = false;
@@ -1300,7 +1166,7 @@ function createInput(options) {
1300
1166
  }, { flush: "sync" });
1301
1167
  const errors = computed(() => {
1302
1168
  const manual = toValue(errorMessages);
1303
- return [...manual ? toArray(manual) : [], ...validation.errors.value];
1169
+ return [...manual ? /* @__PURE__ */ toArray(manual) : [], ...validation.errors.value];
1304
1170
  });
1305
1171
  const isValid = toRef(() => {
1306
1172
  if (toValue(error)) return false;
@@ -1443,7 +1309,7 @@ function createNested(_options = {}) {
1443
1309
  }
1444
1310
  function open(ids) {
1445
1311
  if (toValue(group.disabled)) return;
1446
- for (const id of toArray(ids)) {
1312
+ for (const id of /* @__PURE__ */ toArray(ids)) {
1447
1313
  if (!group.has(id)) continue;
1448
1314
  const item = group.get(id);
1449
1315
  if (!item || toValue(item.disabled)) continue;
@@ -1462,7 +1328,7 @@ function createNested(_options = {}) {
1462
1328
  }
1463
1329
  function close(ids) {
1464
1330
  if (toValue(group.disabled)) return;
1465
- for (const id of toArray(ids)) {
1331
+ for (const id of /* @__PURE__ */ toArray(ids)) {
1466
1332
  if (!group.has(id)) continue;
1467
1333
  const item = group.get(id);
1468
1334
  if (!item || toValue(item.disabled)) continue;
@@ -1471,7 +1337,7 @@ function createNested(_options = {}) {
1471
1337
  }
1472
1338
  function flip(ids) {
1473
1339
  if (toValue(group.disabled)) return;
1474
- for (const id of toArray(ids)) {
1340
+ for (const id of /* @__PURE__ */ toArray(ids)) {
1475
1341
  if (!group.has(id)) continue;
1476
1342
  const item = group.get(id);
1477
1343
  if (!item || toValue(item.disabled)) continue;
@@ -1484,7 +1350,7 @@ function createNested(_options = {}) {
1484
1350
  * Useful for expanding a section with its immediate subcategories.
1485
1351
  */
1486
1352
  function unfold(ids) {
1487
- for (const id of toArray(ids)) {
1353
+ for (const id of /* @__PURE__ */ toArray(ids)) {
1488
1354
  if (!group.has(id)) continue;
1489
1355
  open(id);
1490
1356
  const childIds = children.get(id) ?? [];
@@ -1496,7 +1362,7 @@ function createNested(_options = {}) {
1496
1362
  * Makes the node visible in a collapsed tree without opening the node itself.
1497
1363
  */
1498
1364
  function reveal(ids) {
1499
- for (const id of toArray(ids)) {
1365
+ for (const id of /* @__PURE__ */ toArray(ids)) {
1500
1366
  if (!group.has(id)) continue;
1501
1367
  const ancestorIds = getAncestors(id);
1502
1368
  if (ancestorIds.length > 0) open(ancestorIds);
@@ -1507,7 +1373,7 @@ function createNested(_options = {}) {
1507
1373
  * Opens the entire subtree rooted at the given node.
1508
1374
  */
1509
1375
  function expand(ids) {
1510
- for (const id of toArray(ids)) {
1376
+ for (const id of /* @__PURE__ */ toArray(ids)) {
1511
1377
  if (!group.has(id)) continue;
1512
1378
  if (!isLeaf(id)) open(id);
1513
1379
  for (const descendantId of getDescendants(id)) if (!isLeaf(descendantId)) open(descendantId);
@@ -1533,7 +1399,7 @@ function createNested(_options = {}) {
1533
1399
  return activeIds.has(id);
1534
1400
  }
1535
1401
  function activate(ids) {
1536
- for (const id of toArray(ids)) {
1402
+ for (const id of /* @__PURE__ */ toArray(ids)) {
1537
1403
  if (!group.has(id)) continue;
1538
1404
  if (activeMode === "single") {
1539
1405
  for (const activeId of activeIds) if (activeId !== id) activeIds.delete(activeId);
@@ -1542,7 +1408,7 @@ function createNested(_options = {}) {
1542
1408
  }
1543
1409
  }
1544
1410
  function deactivate(ids) {
1545
- for (const id of toArray(ids)) activeIds.delete(id);
1411
+ for (const id of /* @__PURE__ */ toArray(ids)) activeIds.delete(id);
1546
1412
  }
1547
1413
  function deactivateAll() {
1548
1414
  activeIds.clear();
@@ -1674,7 +1540,7 @@ function createNested(_options = {}) {
1674
1540
  }
1675
1541
  function select(ids) {
1676
1542
  if (toValue(group.disabled)) return;
1677
- for (const id of toArray(ids)) {
1543
+ for (const id of /* @__PURE__ */ toArray(ids)) {
1678
1544
  if (!group.has(id)) continue;
1679
1545
  const item = group.get(id);
1680
1546
  if (!item || toValue(item.disabled)) continue;
@@ -1701,7 +1567,7 @@ function createNested(_options = {}) {
1701
1567
  }
1702
1568
  function unselect(ids) {
1703
1569
  if (toValue(group.disabled)) return;
1704
- for (const id of toArray(ids)) {
1570
+ for (const id of /* @__PURE__ */ toArray(ids)) {
1705
1571
  if (!group.has(id)) continue;
1706
1572
  const item = group.get(id);
1707
1573
  if (!item || toValue(item.disabled)) continue;
@@ -1728,7 +1594,7 @@ function createNested(_options = {}) {
1728
1594
  }
1729
1595
  function toggle(ids) {
1730
1596
  if (toValue(group.disabled)) return;
1731
- for (const id of toArray(ids)) {
1597
+ for (const id of /* @__PURE__ */ toArray(ids)) {
1732
1598
  const item = group.get(id);
1733
1599
  if (!item || toValue(item.disabled)) continue;
1734
1600
  if (selectionMode === "independent") group.toggle(id);
@@ -2150,7 +2016,7 @@ function createNumberField(options = {}) {
2150
2016
  }
2151
2017
  function increment(multiplier) {
2152
2018
  if (isLocked()) return;
2153
- if (/* @__PURE__ */ isNull(value.value)) {
2019
+ if (/* @__PURE__ */ isNull(value.value) || !Number.isFinite(value.value)) {
2154
2020
  value.value = initialize();
2155
2021
  return;
2156
2022
  }
@@ -2158,7 +2024,7 @@ function createNumberField(options = {}) {
2158
2024
  }
2159
2025
  function decrement(multiplier) {
2160
2026
  if (isLocked()) return;
2161
- if (/* @__PURE__ */ isNull(value.value)) {
2027
+ if (/* @__PURE__ */ isNull(value.value) || !Number.isFinite(value.value)) {
2162
2028
  value.value = initialize();
2163
2029
  return;
2164
2030
  }
@@ -2365,10 +2231,12 @@ const [createHydrationContext, createHydrationPlugin, useHydration] = createPlug
2365
2231
  */
2366
2232
  /* @__NO_SIDE_EFFECTS__ */
2367
2233
  function toElement(target) {
2368
- const raw = /* @__PURE__ */ isFunction(target) ? target() : target && /* @__PURE__ */ isObject(target) && "value" in target ? target.value : target;
2234
+ if (!target) return void 0;
2235
+ if (/* @__PURE__ */ isElement(target)) return target;
2236
+ const raw = /* @__PURE__ */ isFunction(target) ? target() : /* @__PURE__ */ isObject(target) && "value" in target ? target.value : target;
2369
2237
  if (!raw) return void 0;
2370
2238
  if (/* @__PURE__ */ isElement(raw)) return raw;
2371
- if ("$el" in raw) return raw.$el;
2239
+ if (/* @__PURE__ */ isObject(raw) && "$el" in raw) return raw.$el;
2372
2240
  }
2373
2241
  //#endregion
2374
2242
  //#region src/composables/createObserver/index.ts
@@ -2947,205 +2815,6 @@ function useProgress(namespace = "v0:progress") {
2947
2815
  return useContext(namespace);
2948
2816
  }
2949
2817
  //#endregion
2950
- //#region src/composables/createQueue/index.ts
2951
- /**
2952
- * @module createQueue
2953
- *
2954
- * @see https://0.vuetifyjs.com/composables/registration/create-queue
2955
- *
2956
- * @remarks
2957
- * A queue composable for managing time-based collections with:
2958
- * - Automatic timeout-based removal
2959
- * - Pause/resume functionality
2960
- * - FIFO (First In, First Out) ordering
2961
- * - Manual dismissal support
2962
- * - Queue progression management
2963
- *
2964
- * Built on top of createRegistry, the queue automatically manages timeouts for tickets,
2965
- * ensuring only the first ticket in the queue is active at any time. When a ticket
2966
- * expires or is removed, the next ticket in the queue automatically becomes active.
2967
- *
2968
- * @example
2969
- * ```ts
2970
- * import { createQueue } from '@vuetify/v0'
2971
- *
2972
- * const queue = createQueue()
2973
- * queue.register({ value: 'Notification 1', timeout: 3000 })
2974
- * queue.register({ value: 'Notification 2', timeout: 3000 })
2975
- * ```
2976
- */
2977
- /**
2978
- * Creates a new queue instance
2979
- *
2980
- * @param options The options for the queue instance
2981
- * @returns A new queue instance
2982
- *
2983
- * @see https://0.vuetifyjs.com/composables/registration/create-queue
2984
- *
2985
- * @example
2986
- * ```ts
2987
- * import { useQueue } from '@vuetify/v0'
2988
- *
2989
- * const queue = useQueue()
2990
- *
2991
- * // Register an ticket with default timeout (3000ms)
2992
- * const ticket1 = queue.register({ value: 'Ticket 1' })
2993
- *
2994
- * // Register an ticket with custom timeout
2995
- * const ticket2 = queue.register({ value: 'Ticket 2', timeout: 5000 })
2996
- *
2997
- * // Register a persistent ticket that must be manually dismissed
2998
- * const ticket3 = queue.register({ value: 'Ticket 3', timeout: -1 })
2999
- *
3000
- * // Dismiss an ticket using the convenience method
3001
- * ticket3.dismiss()
3002
- *
3003
- * console.log(queue.size) // 2
3004
- * ```
3005
- */
3006
- function createQueue(_options = {}) {
3007
- const { timeout: _timeout = 3e3, ...options } = _options;
3008
- const registry = createRegistry({
3009
- ...options,
3010
- events: true
3011
- });
3012
- const timers = /* @__PURE__ */ new Map();
3013
- function createTicketTimer(ticket) {
3014
- if (/* @__PURE__ */ isUndefined(ticket.timeout) || ticket.timeout < 0 || ticket.isPaused) return;
3015
- const timer = useTimer(() => {
3016
- timers.delete(ticket.id);
3017
- registry.unregister(ticket.id);
3018
- resume();
3019
- }, { duration: ticket.timeout });
3020
- timers.set(ticket.id, timer);
3021
- timer.start();
3022
- }
3023
- function stopTimer(id) {
3024
- const timer = timers.get(id);
3025
- if (timer) {
3026
- timer.stop();
3027
- timers.delete(id);
3028
- }
3029
- }
3030
- function register(registration = {}) {
3031
- const id = registration.id ?? /* @__PURE__ */ useId$1();
3032
- const timeout = Object.prototype.hasOwnProperty.call(registration, "timeout") ? registration.timeout : _timeout;
3033
- const ticket = {
3034
- ...registration,
3035
- id,
3036
- timeout,
3037
- isPaused: registry.size > 0,
3038
- dismiss: () => unregister(id)
3039
- };
3040
- const registered = registry.register(ticket);
3041
- createTicketTimer(registered);
3042
- return registered;
3043
- }
3044
- function unregister(id) {
3045
- const ticket = /* @__PURE__ */ isUndefined(id) ? registry.seek("first") : registry.get(id);
3046
- if (!ticket) return void 0;
3047
- const wasFirst = ticket.index === 0;
3048
- stopTimer(ticket.id);
3049
- registry.unregister(ticket.id);
3050
- if (wasFirst) resume();
3051
- return ticket;
3052
- }
3053
- function offboard(ids) {
3054
- let hadFirst = false;
3055
- for (const id of ids) {
3056
- const ticket = registry.get(id);
3057
- if (!ticket) continue;
3058
- if (ticket.index === 0) hadFirst = true;
3059
- stopTimer(ticket.id);
3060
- }
3061
- registry.offboard(ids);
3062
- if (hadFirst) resume();
3063
- }
3064
- function pause() {
3065
- const ticket = registry.seek("first");
3066
- if (!ticket || ticket.isPaused) return void 0;
3067
- timers.get(ticket.id)?.pause();
3068
- return registry.upsert(ticket.id, { isPaused: true });
3069
- }
3070
- function resume() {
3071
- const ticket = registry.seek("first");
3072
- if (!ticket || ticket.index !== 0 || !ticket.isPaused) return void 0;
3073
- const updated = registry.upsert(ticket.id, { isPaused: false });
3074
- const timer = timers.get(updated.id);
3075
- if (timer) timer.start();
3076
- else createTicketTimer(updated);
3077
- return updated;
3078
- }
3079
- function clear() {
3080
- for (const timer of timers.values()) timer.stop();
3081
- timers.clear();
3082
- registry.clear();
3083
- }
3084
- function dispose() {
3085
- clear();
3086
- registry.dispose();
3087
- }
3088
- onScopeDispose(dispose, true);
3089
- function onboard(registrations) {
3090
- return registry.batch(() => registrations.map((registration) => register(registration)));
3091
- }
3092
- return {
3093
- ...registry,
3094
- register,
3095
- unregister,
3096
- onboard,
3097
- offboard,
3098
- pause,
3099
- resume,
3100
- clear,
3101
- dispose,
3102
- get size() {
3103
- return registry.size;
3104
- }
3105
- };
3106
- }
3107
- /**
3108
- * Creates a new queue context.
3109
- *
3110
- * @param options The options for the queue context.
3111
- * @returns A new queue context.
3112
- *
3113
- * @see https://0.vuetifyjs.com/composables/registration/create-queue
3114
- *
3115
- * @example
3116
- * ```ts
3117
- * import { createQueueContext } from '@vuetify/v0'
3118
- *
3119
- * export const [useQueue, provideQueue, context] = createQueueContext({
3120
- * timeout: 5000,
3121
- * })
3122
- * ```
3123
- */
3124
- function createQueueContext(_options = {}) {
3125
- const { namespace = "v0:queue", ...options } = _options;
3126
- return createTrinity(namespace, createQueue(options));
3127
- }
3128
- /**
3129
- * Returns the current queue instance.
3130
- *
3131
- * @param namespace The namespace for the queue context. Defaults to `'v0:queue'`.
3132
- * @returns The current queue instance.
3133
- *
3134
- * @see https://0.vuetifyjs.com/composables/registration/create-queue
3135
- *
3136
- * @example
3137
- * ```vue
3138
- * <script setup lang="ts">
3139
- * import { useQueue } from '@vuetify/v0'
3140
- *
3141
- * const queue = useQueue()
3142
- * <\/script>
3143
- * ```
3144
- */
3145
- function useQueue(namespace = "v0:queue") {
3146
- return useContext(namespace);
3147
- }
3148
- //#endregion
3149
2818
  //#region src/composables/createRating/index.ts
3150
2819
  /**
3151
2820
  * @module createRating
@@ -3404,8 +3073,8 @@ function createSlider(options = {}) {
3404
3073
  return inverted.value ? 100 - p : p;
3405
3074
  }
3406
3075
  function fromPercent(p) {
3407
- const adjusted = inverted.value ? 100 - p : p;
3408
- return numeric.fromPercent(adjusted);
3076
+ const value = numeric.fromPercent(p);
3077
+ return inverted.value ? numeric.max - (value - numeric.min) : value;
3409
3078
  }
3410
3079
  function register(input) {
3411
3080
  const initialValue = /* @__PURE__ */ isObject(input) ? input.value : input;
@@ -4697,7 +4366,7 @@ function createDate(options) {
4697
4366
  const { locales = defaultLocales, adapter, locale: initialLocale, firstDayOfWeek: explicitFirstDay } = options;
4698
4367
  let selectedId;
4699
4368
  try {
4700
- if (instanceExists()) selectedId = useLocale().selectedId;
4369
+ if (/* @__PURE__ */ instanceExists()) selectedId = useLocale().selectedId;
4701
4370
  } catch {}
4702
4371
  const locale = computed(() => {
4703
4372
  const selected = selectedId?.value;
@@ -4713,7 +4382,7 @@ function createDate(options) {
4713
4382
  const loc = locale.value;
4714
4383
  return loc ? deriveFirstDayOfWeek(loc) : 0;
4715
4384
  });
4716
- if (instanceExists()) onScopeDispose(watchEffect(() => {
4385
+ if (/* @__PURE__ */ instanceExists()) onScopeDispose(watchEffect(() => {
4717
4386
  const loc = locale.value;
4718
4387
  if (loc && adapter.locale !== loc) adapter.locale = loc;
4719
4388
  const fdow = firstDayOfWeek.value;
@@ -4825,10 +4494,127 @@ function createDatePlugin(options) {
4825
4494
  * ```
4826
4495
  */
4827
4496
  function useDate(namespace = "v0:date") {
4828
- if (!instanceExists()) throw new Error("[v0] useDate() must be called inside a Vue component with createDatePlugin installed.\n\nExample:\n import { Vuetify0DateAdapter } from '@vuetify/v0/date'\n import { createDatePlugin } from '@vuetify/v0'\n\n app.use(createDatePlugin({ adapter: new Vuetify0DateAdapter() }))");
4497
+ if (!/* @__PURE__ */ instanceExists()) throw new Error("[v0] useDate() must be called inside a Vue component with createDatePlugin installed.\n\nExample:\n import { Vuetify0DateAdapter } from '@vuetify/v0/date'\n import { createDatePlugin } from '@vuetify/v0'\n\n app.use(createDatePlugin({ adapter: new Vuetify0DateAdapter() }))");
4829
4498
  return useContext(namespace);
4830
4499
  }
4831
4500
  //#endregion
4501
+ //#region src/composables/useDelay/index.ts
4502
+ /**
4503
+ * @module useDelay
4504
+ *
4505
+ * @see https://0.vuetifyjs.com/composables/system/use-delay
4506
+ *
4507
+ * @remarks
4508
+ * Schedule open and close transitions with configurable delays.
4509
+ *
4510
+ * Composes `useTimer` for the underlying lifecycle (start / stop / pause / resume,
4511
+ * plus reactive `isActive`, `isPaused`, `remaining`) and adds direction tracking
4512
+ * (`isOpening`) and promise-based resolution.
4513
+ *
4514
+ * Key features:
4515
+ * - Reactive `openDelay` and `closeDelay` via `MaybeRefOrGetter`
4516
+ * - `start(isOpening)` returns a `Promise<boolean>` that resolves once the delay elapses
4517
+ * - Per-call `minDelay` floor enforces a minimum delay
4518
+ * - Automatic cleanup on scope disposal (timer cleared, pending promise settled with current direction)
4519
+ * - SSR-safe
4520
+ *
4521
+ * @example
4522
+ * ```ts
4523
+ * import { useDelay } from '@vuetify/v0'
4524
+ *
4525
+ * const delay = useDelay(isOpening => isVisible.value = isOpening, {
4526
+ * openDelay: 300,
4527
+ * closeDelay: 200,
4528
+ * })
4529
+ *
4530
+ * delay.start(true)
4531
+ * delay.start(false, { minDelay: 500 })
4532
+ * ```
4533
+ */
4534
+ /**
4535
+ * Schedule open and close transitions with configurable delays.
4536
+ *
4537
+ * Composes `useTimer` for the lifecycle (`start` / `stop` / `pause` / `resume` plus
4538
+ * reactive `isActive`, `isPaused`, `remaining`) and adds direction tracking
4539
+ * (`isOpening`) and promise-based resolution.
4540
+ *
4541
+ * @param callback Optional callback invoked once a started delay elapses; receives the resolved direction.
4542
+ * @param options Reactive delay settings.
4543
+ * @returns Lifecycle controls and reactive state.
4544
+ *
4545
+ * @see https://0.vuetifyjs.com/composables/system/use-delay
4546
+ *
4547
+ * @example
4548
+ * ```ts
4549
+ * const delay = useDelay(isOpening => isVisible.value = isOpening, {
4550
+ * openDelay: 300,
4551
+ * closeDelay: 200,
4552
+ * })
4553
+ *
4554
+ * delay.start(true)
4555
+ * delay.start(false, { minDelay: 500 })
4556
+ * delay.pause()
4557
+ * delay.resume()
4558
+ * delay.stop()
4559
+ * ```
4560
+ */
4561
+ function useDelay(callback, options = {}) {
4562
+ const { openDelay, closeDelay } = options;
4563
+ const isOpening = shallowRef(false);
4564
+ let minDelay = 0;
4565
+ let resolver;
4566
+ function fire() {
4567
+ const direction = isOpening.value;
4568
+ const resolve = resolver;
4569
+ resolver = void 0;
4570
+ resolve?.(direction);
4571
+ callback?.(direction);
4572
+ }
4573
+ function duration() {
4574
+ const raw = isOpening.value ? toValue(openDelay) : toValue(closeDelay);
4575
+ return Math.max(minDelay, raw ?? 0);
4576
+ }
4577
+ const timer = useTimer(fire, { duration });
4578
+ function start(direction, options = {}) {
4579
+ const previous = resolver;
4580
+ resolver = void 0;
4581
+ isOpening.value = direction;
4582
+ minDelay = options.minDelay ?? 0;
4583
+ previous?.(direction);
4584
+ const ms = duration();
4585
+ return new Promise((resolve) => {
4586
+ resolver = resolve;
4587
+ if (ms <= 0) {
4588
+ timer.stop();
4589
+ fire();
4590
+ return;
4591
+ }
4592
+ timer.start();
4593
+ });
4594
+ }
4595
+ function stop() {
4596
+ const resolve = resolver;
4597
+ resolver = void 0;
4598
+ timer.stop();
4599
+ resolve?.(isOpening.value);
4600
+ }
4601
+ onScopeDispose(() => {
4602
+ const resolve = resolver;
4603
+ resolver = void 0;
4604
+ resolve?.(isOpening.value);
4605
+ }, true);
4606
+ return {
4607
+ start,
4608
+ stop,
4609
+ pause: timer.pause,
4610
+ resume: timer.resume,
4611
+ isActive: shallowReadonly(timer.isActive),
4612
+ isPaused: shallowReadonly(timer.isPaused),
4613
+ remaining: shallowReadonly(timer.remaining),
4614
+ isOpening: shallowReadonly(isOpening)
4615
+ };
4616
+ }
4617
+ //#endregion
4832
4618
  //#region src/composables/useHotkey/aliases.ts
4833
4619
  /**
4834
4620
  * Key alias mapping for consistent key normalization across the hotkey system.
@@ -4855,6 +4641,7 @@ const keyAliasMap = {
4855
4641
  minus: "-",
4856
4642
  hyphen: "-"
4857
4643
  };
4644
+ /* @__NO_SIDE_EFFECTS__ */
4858
4645
  function normalizeKey(key) {
4859
4646
  const lowerKey = key.toLowerCase();
4860
4647
  return keyAliasMap[lowerKey] ?? lowerKey;
@@ -4906,7 +4693,7 @@ function splitKeyCombination(combination, isInternal = false) {
4906
4693
  function flushBuffer(separator) {
4907
4694
  if (buffer) {
4908
4695
  if (separator) separators.push(separator);
4909
- keys.push(normalizeKey(buffer));
4696
+ keys.push(/* @__PURE__ */ normalizeKey(buffer));
4910
4697
  buffer = "";
4911
4698
  }
4912
4699
  }
@@ -4939,7 +4726,7 @@ function splitKeyCombination(combination, isInternal = false) {
4939
4726
  return emptyResult;
4940
4727
  }
4941
4728
  if (keys.length === 0 && combination) return {
4942
- keys: [normalizeKey(combination)],
4729
+ keys: [/* @__PURE__ */ normalizeKey(combination)],
4943
4730
  separators
4944
4731
  };
4945
4732
  /* v8 ignore stop */
@@ -5849,533 +5636,6 @@ function useMutationObserver(target, callback, options = {}) {
5849
5636
  });
5850
5637
  }
5851
5638
  //#endregion
5852
- //#region src/composables/useNotifications/index.ts
5853
- /**
5854
- * @module useNotifications
5855
- * @see https://0.vuetifyjs.com/composables/plugins/use-notifications
5856
- *
5857
- * @remarks
5858
- * Notification management composable built on createRegistry and createQueue.
5859
- * Registry stores the full notification lifecycle (permanent record).
5860
- * Queue manages the display surface (toasts) with FIFO ordering and auto-dismiss.
5861
- *
5862
- * Supports:
5863
- * - Push notifications with severity levels and configurable timeouts
5864
- * - State mutations: read, seen, archived, snoozed
5865
- * - Bulk operations: readAll, archiveAll, clear
5866
- * - Toast queue with pause/resume and auto-dismiss
5867
- * - Adapter integration via event system
5868
- * - Plugin installation via createNotificationsPlugin
5869
- *
5870
- * @example
5871
- * ```ts
5872
- * import { useNotifications } from '@vuetify/v0'
5873
- *
5874
- * const notifications = useNotifications()
5875
- * notifications.send({ subject: 'Saved', severity: 'success' })
5876
- * ```
5877
- */
5878
- function createNotifications(options = {}) {
5879
- const { timeout = 3e3, ...registryOptions } = options;
5880
- const registry = createRegistry({
5881
- ...registryOptions,
5882
- events: true,
5883
- reactive: true
5884
- });
5885
- const queue = createQueue({
5886
- timeout,
5887
- events: true,
5888
- reactive: true
5889
- });
5890
- registry.on("unregister:ticket", (ticket) => {
5891
- if (queue.has(ticket.id)) queue.unregister(ticket.id);
5892
- });
5893
- /**
5894
- * Build a full {@link NotificationTicket} from raw input
5895
- *
5896
- * @param input The notification input to hydrate.
5897
- * @returns A partial ticket with timestamps, lifecycle methods, and an ID.
5898
- * @internal Used by {@link send}, {@link register}, and {@link onboard}.
5899
- */
5900
- function hydrate(input) {
5901
- const id = input.id ?? /* @__PURE__ */ useId$1();
5902
- const now = /* @__PURE__ */ new Date();
5903
- return {
5904
- ...input,
5905
- id,
5906
- createdAt: now,
5907
- readAt: null,
5908
- seenAt: null,
5909
- archivedAt: null,
5910
- snoozedUntil: null,
5911
- read: () => read(id),
5912
- unread: () => unread(id),
5913
- seen: () => seen(id),
5914
- archive: () => archive(id),
5915
- unarchive: () => unarchive(id),
5916
- snooze: (until) => snooze(id, until),
5917
- wake: () => wake(id),
5918
- dismiss: () => queue.unregister(id)
5919
- };
5920
- }
5921
- /**
5922
- * Create a notification and enqueue it for toast display
5923
- *
5924
- * @param input The notification input to create.
5925
- * @returns The hydrated notification ticket.
5926
- * @remarks Hydrates the input with timestamps and lifecycle methods, registers
5927
- * it in the registry, adds it to the display queue, and emits
5928
- * `notification:received`. The ticket auto-dismisses after the configured
5929
- * timeout unless paused.
5930
- *
5931
- * @see https://0.vuetifyjs.com/composables/plugins/use-notifications
5932
- *
5933
- * @example
5934
- * ```ts
5935
- * import { useNotifications } from '@vuetify/v0'
5936
- *
5937
- * const notifications = useNotifications()
5938
- *
5939
- * // Basic toast
5940
- * notifications.send({ subject: 'Changes saved', severity: 'success' })
5941
- *
5942
- * // With custom timeout
5943
- * const ticket = notifications.send({ subject: 'Connection lost', severity: 'error', timeout: 10000 })
5944
- *
5945
- * console.log(ticket.id) // 'generated-id'
5946
- * console.log(ticket.createdAt) // Date
5947
- * console.log(ticket.readAt) // null
5948
- *
5949
- * // Ticket convenience methods
5950
- * ticket.read() // marks as read
5951
- * ticket.dismiss() // removes from toast queue, keeps in registry
5952
- * ```
5953
- */
5954
- function send(input) {
5955
- const ticket = registry.register(hydrate(input));
5956
- queue.register(/* @__PURE__ */ isUndefined(input.timeout) ? { id: ticket.id } : {
5957
- id: ticket.id,
5958
- timeout: input.timeout
5959
- });
5960
- registry.emit("notification:received", ticket);
5961
- return ticket;
5962
- }
5963
- /**
5964
- * Register a notification in the registry without adding it to the toast queue
5965
- *
5966
- * @param input The notification input to register.
5967
- * @returns The hydrated notification ticket.
5968
- * @remarks Overrides the base registry `register` to hydrate the input with
5969
- * timestamps and lifecycle methods. Use for historical or pre-existing items
5970
- * that should appear in an inbox but not pop up as toasts.
5971
- *
5972
- * @see https://0.vuetifyjs.com/composables/plugins/use-notifications
5973
- *
5974
- * @example
5975
- * ```ts
5976
- * import { useNotifications } from '@vuetify/v0'
5977
- *
5978
- * const notifications = useNotifications()
5979
- *
5980
- * // Register a historical item (appears in inbox, not as toast)
5981
- * const ticket = notifications.register({ id: 'old-1', subject: 'Deployed v2.1' })
5982
- *
5983
- * console.log(ticket.createdAt) // Date
5984
- * console.log(ticket.readAt) // null
5985
- *
5986
- * // Lifecycle methods work the same as send()
5987
- * ticket.read()
5988
- * ticket.archive()
5989
- * ```
5990
- */
5991
- function register(input) {
5992
- return registry.register(hydrate(input));
5993
- }
5994
- /**
5995
- * Bulk version of {@link register}
5996
- *
5997
- * @param inputs Array of notification inputs to register.
5998
- * @returns Array of hydrated notification tickets.
5999
- * @remarks Registers multiple notifications into the registry without toast
6000
- * display. Wraps all registrations in a single `registry.batch()` call so
6001
- * reactive updates are deferred until the entire batch completes.
6002
- *
6003
- * @see https://0.vuetifyjs.com/composables/plugins/use-notifications
6004
- *
6005
- * @example
6006
- * ```ts
6007
- * import { useNotifications } from '@vuetify/v0'
6008
- *
6009
- * const notifications = useNotifications()
6010
- *
6011
- * // Load historical items on mount
6012
- * const tickets = notifications.onboard([
6013
- * { id: 'n1', subject: 'Welcome to the team' },
6014
- * { id: 'n2', subject: 'Setup complete', severity: 'success' },
6015
- * ])
6016
- *
6017
- * console.log(tickets.length) // 2
6018
- * console.log(notifications.queue.values()) // [] (no toasts)
6019
- * console.log(notifications.values().length) // 2 (in registry)
6020
- * ```
6021
- */
6022
- function onboard(inputs) {
6023
- return registry.batch(() => inputs.map((input) => register(input)));
6024
- }
6025
- /**
6026
- * Mark a notification as read
6027
- *
6028
- * @param id The ID of the notification to mark as read.
6029
- * @remarks Sets `readAt` to the current time and emits `notification:read`.
6030
- * Adapters listen to this event for outbound sync.
6031
- *
6032
- * @see https://0.vuetifyjs.com/composables/plugins/use-notifications
6033
- *
6034
- * @example
6035
- * ```ts
6036
- * import { useNotifications } from '@vuetify/v0'
6037
- *
6038
- * const notifications = useNotifications()
6039
- *
6040
- * const ticket = notifications.send({ subject: 'New message' })
6041
- *
6042
- * notifications.read(ticket.id)
6043
- * console.log(ticket.readAt) // Date
6044
- *
6045
- * // Or via ticket convenience method
6046
- * ticket.read()
6047
- * ```
6048
- */
6049
- function read(id) {
6050
- registry.upsert(id, { readAt: /* @__PURE__ */ new Date() }, "notification:read");
6051
- }
6052
- /**
6053
- * Mark a notification as unread
6054
- *
6055
- * @param id The ID of the notification to mark as unread.
6056
- * @remarks Clears `readAt` and emits `notification:unread`.
6057
- *
6058
- * @see https://0.vuetifyjs.com/composables/plugins/use-notifications
6059
- *
6060
- * @example
6061
- * ```ts
6062
- * import { useNotifications } from '@vuetify/v0'
6063
- *
6064
- * const notifications = useNotifications()
6065
- *
6066
- * notifications.unread('notif-1')
6067
- * ```
6068
- */
6069
- function unread(id) {
6070
- registry.upsert(id, { readAt: null }, "notification:unread");
6071
- }
6072
- /**
6073
- * Mark a notification as seen
6074
- *
6075
- * @param id The ID of the notification to mark as seen.
6076
- * @remarks Sets `seenAt` to the current time and emits `notification:seen`.
6077
- * Distinct from read — seen tracks whether the notification appeared in the
6078
- * user's viewport, while read indicates the user actively engaged with it.
6079
- *
6080
- * @see https://0.vuetifyjs.com/composables/plugins/use-notifications
6081
- *
6082
- * @example
6083
- * ```ts
6084
- * import { useNotifications } from '@vuetify/v0'
6085
- *
6086
- * const notifications = useNotifications()
6087
- *
6088
- * // Mark as seen when visible in inbox viewport
6089
- * notifications.seen('notif-1')
6090
- * ```
6091
- */
6092
- function seen(id) {
6093
- registry.upsert(id, { seenAt: /* @__PURE__ */ new Date() }, "notification:seen");
6094
- }
6095
- /**
6096
- * Archive a notification
6097
- *
6098
- * @param id The ID of the notification to archive.
6099
- * @remarks Sets `archivedAt` to the current time and emits `notification:archived`.
6100
- *
6101
- * @see https://0.vuetifyjs.com/composables/plugins/use-notifications
6102
- *
6103
- * @example
6104
- * ```ts
6105
- * import { useNotifications } from '@vuetify/v0'
6106
- *
6107
- * const notifications = useNotifications()
6108
- *
6109
- * notifications.archive('notif-1')
6110
- * ```
6111
- */
6112
- function archive(id) {
6113
- registry.upsert(id, { archivedAt: /* @__PURE__ */ new Date() }, "notification:archived");
6114
- }
6115
- /**
6116
- * Restore an archived notification
6117
- *
6118
- * @param id The ID of the notification to unarchive.
6119
- * @remarks Clears `archivedAt` and emits `notification:unarchived`.
6120
- *
6121
- * @see https://0.vuetifyjs.com/composables/plugins/use-notifications
6122
- *
6123
- * @example
6124
- * ```ts
6125
- * import { useNotifications } from '@vuetify/v0'
6126
- *
6127
- * const notifications = useNotifications()
6128
- *
6129
- * notifications.unarchive('notif-1')
6130
- * ```
6131
- */
6132
- function unarchive(id) {
6133
- registry.upsert(id, { archivedAt: null }, "notification:unarchived");
6134
- }
6135
- /**
6136
- * Snooze a notification until a given time
6137
- *
6138
- * @param id The ID of the notification to snooze.
6139
- * @param until The time at which the snooze expires.
6140
- * @remarks Sets `snoozedUntil` and emits `notification:snoozed`. The composable
6141
- * does not auto-wake — consumers are responsible for calling {@link wake} when
6142
- * the snooze expires (e.g., via a timer or server push).
6143
- *
6144
- * @see https://0.vuetifyjs.com/composables/plugins/use-notifications
6145
- *
6146
- * @example
6147
- * ```ts
6148
- * import { useNotifications } from '@vuetify/v0'
6149
- *
6150
- * const notifications = useNotifications()
6151
- *
6152
- * const tomorrow = new Date(Date.now() + 86_400_000)
6153
- * notifications.snooze('notif-1', tomorrow)
6154
- * ```
6155
- */
6156
- function snooze(id, until) {
6157
- registry.upsert(id, { snoozedUntil: until }, "notification:snoozed");
6158
- }
6159
- /**
6160
- * Cancel a snooze
6161
- *
6162
- * @param id The ID of the notification to wake.
6163
- * @remarks Clears `snoozedUntil` and emits `notification:unsnoozed`.
6164
- *
6165
- * @see https://0.vuetifyjs.com/composables/plugins/use-notifications
6166
- *
6167
- * @example
6168
- * ```ts
6169
- * import { useNotifications } from '@vuetify/v0'
6170
- *
6171
- * const notifications = useNotifications()
6172
- *
6173
- * notifications.wake('notif-1')
6174
- * ```
6175
- */
6176
- function wake(id) {
6177
- registry.upsert(id, { snoozedUntil: null }, "notification:unsnoozed");
6178
- }
6179
- /**
6180
- * Mark all unread notifications as read
6181
- *
6182
- * @remarks Iterates all notifications and marks unread ones as read in a single
6183
- * batch. Skips already-read notifications to preserve their original `readAt`
6184
- * timestamp. Emits `notification:read` for each affected notification.
6185
- *
6186
- * @see https://0.vuetifyjs.com/composables/plugins/use-notifications
6187
- *
6188
- * @example
6189
- * ```ts
6190
- * import { useNotifications } from '@vuetify/v0'
6191
- *
6192
- * const notifications = useNotifications()
6193
- *
6194
- * notifications.send({ subject: 'Message 1' })
6195
- * notifications.send({ subject: 'Message 2' })
6196
- *
6197
- * notifications.readAll()
6198
- *
6199
- * console.log(notifications.values().every(t => t.readAt !== null)) // true
6200
- * ```
6201
- */
6202
- function readAll() {
6203
- const now = /* @__PURE__ */ new Date();
6204
- registry.batch(() => {
6205
- for (const ticket of registry.values()) if (/* @__PURE__ */ isNull(ticket.readAt)) registry.upsert(ticket.id, { readAt: now }, "notification:read");
6206
- });
6207
- }
6208
- /**
6209
- * Archive all unarchived notifications
6210
- *
6211
- * @remarks Iterates all notifications and archives unarchived ones in a single
6212
- * batch. Skips already-archived notifications to preserve their original
6213
- * `archivedAt` timestamp. Emits `notification:archived` for each affected notification.
6214
- *
6215
- * @see https://0.vuetifyjs.com/composables/plugins/use-notifications
6216
- *
6217
- * @example
6218
- * ```ts
6219
- * import { useNotifications } from '@vuetify/v0'
6220
- *
6221
- * const notifications = useNotifications()
6222
- *
6223
- * notifications.send({ subject: 'Alert 1' })
6224
- * notifications.send({ subject: 'Alert 2' })
6225
- *
6226
- * notifications.archiveAll()
6227
- *
6228
- * console.log(notifications.values().every(t => t.archivedAt !== null)) // true
6229
- * ```
6230
- */
6231
- function archiveAll() {
6232
- const now = /* @__PURE__ */ new Date();
6233
- registry.batch(() => {
6234
- for (const ticket of registry.values()) if (/* @__PURE__ */ isNull(ticket.archivedAt)) registry.upsert(ticket.id, { archivedAt: now }, "notification:archived");
6235
- });
6236
- }
6237
- return {
6238
- ...registry,
6239
- send,
6240
- register,
6241
- onboard,
6242
- queue,
6243
- read,
6244
- unread,
6245
- seen,
6246
- archive,
6247
- unarchive,
6248
- snooze,
6249
- wake,
6250
- readAll,
6251
- archiveAll,
6252
- get size() {
6253
- return registry.size;
6254
- }
6255
- };
6256
- }
6257
- function noop() {}
6258
- const EMPTY = [];
6259
- function createNotificationsFallback() {
6260
- const stub = {
6261
- id: "",
6262
- index: 0,
6263
- value: 0,
6264
- valueIsIndex: true,
6265
- createdAt: /* @__PURE__ */ new Date(0),
6266
- readAt: null,
6267
- seenAt: null,
6268
- archivedAt: null,
6269
- snoozedUntil: null,
6270
- read: noop,
6271
- unread: noop,
6272
- seen: noop,
6273
- archive: noop,
6274
- unarchive: noop,
6275
- snooze: noop,
6276
- wake: noop,
6277
- dismiss: noop,
6278
- unregister: noop
6279
- };
6280
- return {
6281
- collection: /* @__PURE__ */ new Map(),
6282
- size: 0,
6283
- send: () => stub,
6284
- queue: {
6285
- collection: /* @__PURE__ */ new Map(),
6286
- size: 0,
6287
- register: () => ({}),
6288
- unregister: () => void 0,
6289
- has: () => false,
6290
- get: () => void 0,
6291
- keys: () => EMPTY,
6292
- values: () => EMPTY,
6293
- entries: () => EMPTY,
6294
- browse: () => void 0,
6295
- lookup: () => void 0,
6296
- upsert: () => ({}),
6297
- seek: () => void 0,
6298
- move: () => void 0,
6299
- on: noop,
6300
- off: noop,
6301
- emit: noop,
6302
- dispose: noop,
6303
- clear: noop,
6304
- reindex: noop,
6305
- batch: (fn) => fn(),
6306
- onboard: () => EMPTY,
6307
- offboard: noop,
6308
- pause: () => void 0,
6309
- resume: () => void 0
6310
- },
6311
- read: noop,
6312
- unread: noop,
6313
- seen: noop,
6314
- archive: noop,
6315
- unarchive: noop,
6316
- snooze: noop,
6317
- wake: noop,
6318
- readAll: noop,
6319
- archiveAll: noop,
6320
- clear: noop,
6321
- has: () => false,
6322
- get: () => void 0,
6323
- keys: () => EMPTY,
6324
- values: () => EMPTY,
6325
- entries: () => EMPTY,
6326
- browse: () => void 0,
6327
- lookup: () => void 0,
6328
- upsert: () => stub,
6329
- register: () => stub,
6330
- unregister: noop,
6331
- reindex: noop,
6332
- move: () => void 0,
6333
- seek: () => void 0,
6334
- on: noop,
6335
- off: noop,
6336
- emit: noop,
6337
- dispose: noop,
6338
- batch: (fn) => fn(),
6339
- onboard: () => EMPTY,
6340
- offboard: noop
6341
- };
6342
- }
6343
- /**
6344
- * Notification management with registry, event system, and optional adapters.
6345
- *
6346
- * @see https://0.vuetifyjs.com/composables/plugins/use-notifications
6347
- *
6348
- * @example
6349
- * ```ts
6350
- * import { createNotificationsPlugin, useNotifications } from '@vuetify/v0'
6351
- *
6352
- * // Install as plugin
6353
- * app.use(createNotificationsPlugin())
6354
- *
6355
- * // Use in components
6356
- * const notifications = useNotifications()
6357
- * notifications.send({ subject: 'Saved', severity: 'success' })
6358
- * ```
6359
- */
6360
- const [createNotificationsContext, createNotificationsPlugin, useNotifications] = createPluginContext("v0:notifications", (options) => createNotifications(options), {
6361
- fallback: () => createNotificationsFallback(),
6362
- setup: (context, app, options) => {
6363
- app.onUnmount(() => {
6364
- context.dispose();
6365
- context.queue.dispose();
6366
- });
6367
- const { adapter } = options;
6368
- if (!adapter) return;
6369
- adapter.setup({
6370
- send: context.send,
6371
- register: context.register,
6372
- on: context.on,
6373
- off: context.off
6374
- });
6375
- if (/* @__PURE__ */ isFunction(adapter.dispose)) app.onUnmount(() => adapter.dispose());
6376
- }
6377
- });
6378
- //#endregion
6379
5639
  //#region src/composables/usePresence/index.ts
6380
5640
  /**
6381
5641
  * @module usePresence
@@ -6556,7 +5816,7 @@ function useProxyModel(context, model, options) {
6556
5816
  const _transformOut = options?.transformOut;
6557
5817
  function transformIn(val) {
6558
5818
  const value = toValue(val);
6559
- return toArray(/* @__PURE__ */ isFunction(_transformIn) ? _transformIn(value) : value);
5819
+ return /* @__PURE__ */ toArray(/* @__PURE__ */ isFunction(_transformIn) ? _transformIn(value) : value);
6560
5820
  }
6561
5821
  function transformOut(val) {
6562
5822
  if (/* @__PURE__ */ isFunction(_transformOut)) return _transformOut(val);
@@ -6935,7 +6195,7 @@ function createStack(_options = {}) {
6935
6195
  ...input,
6936
6196
  id
6937
6197
  });
6938
- if (instanceExists()) onScopeDispose(() => {
6198
+ if (/* @__PURE__ */ instanceExists()) onScopeDispose(() => {
6939
6199
  selection.unregister(id);
6940
6200
  }, true);
6941
6201
  return ticket;
@@ -7059,7 +6319,7 @@ function getStackFallback() {
7059
6319
  */
7060
6320
  function useStack(namespace = "v0:stack") {
7061
6321
  const fallback = getStackFallback();
7062
- if (!instanceExists()) return fallback;
6322
+ if (!/* @__PURE__ */ instanceExists()) return fallback;
7063
6323
  try {
7064
6324
  return useContext(namespace);
7065
6325
  } catch {
@@ -7386,8 +6646,8 @@ function useEventListener(target, event, listener, options) {
7386
6646
  ], ([el, events, listeners, opts]) => {
7387
6647
  cleanup();
7388
6648
  if (!el) return;
7389
- const eventList = toArray(events);
7390
- const listenerList = toArray(listeners);
6649
+ const eventList = /* @__PURE__ */ toArray(events);
6650
+ const listenerList = /* @__PURE__ */ toArray(listeners);
7391
6651
  for (const event of eventList) for (const listenerFn of listenerList) cleanups.push(register(el, event, listenerFn, opts));
7392
6652
  }, {
7393
6653
  immediate: true,
@@ -7534,6 +6794,7 @@ function useClickOutside(target, handler, options = {}) {
7534
6794
  x: 0,
7535
6795
  y: 0
7536
6796
  };
6797
+ let startedOutsideBounds = false;
7537
6798
  let cleanupPointerDown;
7538
6799
  let cleanupPointerUp;
7539
6800
  let cleanupBlur;
@@ -7541,7 +6802,7 @@ function useClickOutside(target, handler, options = {}) {
7541
6802
  * Resolve target(s) to an array of HTMLElements.
7542
6803
  */
7543
6804
  function getTargets() {
7544
- return toArray(target).map((source) => toValue(source)).filter((el) => !!el && /* @__PURE__ */ isFunction(el.contains));
6805
+ return (/* @__PURE__ */ toArray(target)).map((source) => toValue(source)).filter((el) => !!el && /* @__PURE__ */ isFunction(el.contains));
7545
6806
  }
7546
6807
  /**
7547
6808
  * Resolve ignore targets to a tuple of [selectors, elements].
@@ -7624,6 +6885,7 @@ function useClickOutside(target, handler, options = {}) {
7624
6885
  x: event.clientX,
7625
6886
  y: event.clientY
7626
6887
  };
6888
+ startedOutsideBounds = bounds ? isOutsideBounds(event.clientX, event.clientY) : false;
7627
6889
  }
7628
6890
  /**
7629
6891
  * Handle pointerup - check if it's an outside click.
@@ -7642,7 +6904,7 @@ function useClickOutside(target, handler, options = {}) {
7642
6904
  const dy = Math.abs(event.clientY - startPosition.y);
7643
6905
  if (dx >= touchScrollThreshold || dy >= touchScrollThreshold) return;
7644
6906
  }
7645
- if ((bounds ? isOutsideBounds(startPosition.x, startPosition.y) && isOutsideBounds(event.clientX, event.clientY) : isOutside(pointerdownTarget) && isOutside(pointerupTarget)) && !shouldIgnore(path)) handler(event);
6907
+ if ((bounds ? startedOutsideBounds && isOutsideBounds(event.clientX, event.clientY) : isOutside(pointerdownTarget) && isOutside(pointerupTarget)) && !shouldIgnore(path)) handler(event);
7646
6908
  }
7647
6909
  /**
7648
6910
  * Handle window blur - detect focus moving to iframe.
@@ -7699,4 +6961,4 @@ function useClickOutside(target, handler, options = {}) {
7699
6961
  };
7700
6962
  }
7701
6963
  //#endregion
7702
- export { createStep as $, usePrefersContrast as A, createForm as At, createDatePlugin as B, useTimer as Bt, usePresence as C, createNumberField as Ct, useNotifications as D, useNested as Dt, createNotificationsPlugin as E, createNestedContext as Et, useIntersectionObserver as F, useCombobox as Ft, useBreakpoints as G, createBreakpoints as H, createBreadcrumbsContext as Ht, useImage as I, ServerAdapter as It, createVirtualContext as J, toReactive as K, useHotkey as L, ClientAdapter as Lt, usePrefersReducedMotion as M, useForm as Mt, useLazy as N, createCombobox as Nt, useMutationObserver as O, createInput as Ot, useElementIntersection as P, createComboboxContext as Pt, useTimeline as Q, createDate as R, useVirtualFocus as Rt, useProxyModel as S, useHydration as St, createNotificationsContext as T, createNested as Tt, createBreakpointsContext as U, useBreadcrumbs as Ut, useDate as V, createBreadcrumbs as Vt, createBreakpointsPlugin as W, createTimeline as X, useVirtual as Y, createTimelineContext as Z, createRtlPlugin as _, toElement as _t, useToggleScope as a, useRating as at, useRovingFocus as b, createHydrationContext as bt, createStoragePlugin as c, useQueue as ct, createStackContext as d, useProgress as dt, createStepContext as et, createStackPlugin as f, createOverflow as ft, createRtlFallback as g, useResizeObserver as gt, createRtlContext as h, useElementSize as ht, useWindowEventListener as i, createRatingContext as it, usePrefersDark as j, createFormContext as jt, useMediaQuery as k, createValidation as kt, useStorage as l, createProgress as lt, createRtl as m, useOverflow as mt, useDocumentEventListener as n, createSlider as nt, createStorage as o, createQueue as ot, useStack as p, createOverflowContext as pt, createVirtual as q, useEventListener as r, createRating as rt, createStorageContext as s, createQueueContext as st, useClickOutside as t, useStep as tt, createStack as u, createProgressContext as ut, useRtl as v, createFallbackHydration as vt, createNotifications as w, createNumeric as wt, useRaf as x, createHydrationPlugin as xt, Vuetify0RtlAdapter as y, createHydration as yt, createDateContext as z, usePopover as zt };
6964
+ export { createSlider as $, useElementIntersection as A, ServerAdapter as At, createBreakpointsContext as B, usePresence as C, createValidation as Ct, usePrefersDark as D, createCombobox as Dt, usePrefersContrast as E, useForm as Et, createDate as F, createBreadcrumbsContext as Ft, createVirtualContext as G, useBreakpoints as H, createDateContext as I, useBreadcrumbs as It, createTimelineContext as J, useVirtual as K, createDatePlugin as L, useImage as M, useVirtualFocus as Mt, useHotkey as N, usePopover as Nt, usePrefersReducedMotion as O, createComboboxContext as Ot, useDelay as P, createBreadcrumbs as Pt, useStep as Q, useDate as R, useProxyModel as S, createInput as St, useMediaQuery as T, createFormContext as Tt, toReactive as U, createBreakpointsPlugin as V, createVirtual as W, createStep as X, useTimeline as Y, createStepContext as Z, createRtlPlugin as _, createNumberField as _t, useToggleScope as a, useProgress as at, useRovingFocus as b, createNestedContext as bt, createStoragePlugin as c, useOverflow as ct, createStackContext as d, toElement as dt, createRating as et, createStackPlugin as f, createFallbackHydration as ft, createRtlFallback as g, useHydration as gt, createRtlContext as h, createHydrationPlugin as ht, useWindowEventListener as i, createProgressContext as it, useIntersectionObserver as j, ClientAdapter as jt, useLazy as k, useCombobox as kt, useStorage as l, useElementSize as lt, createRtl as m, createHydrationContext as mt, useDocumentEventListener as n, useRating as nt, createStorage as o, createOverflow as ot, useStack as p, createHydration as pt, createTimeline as q, useEventListener as r, createProgress as rt, createStorageContext as s, createOverflowContext as st, useClickOutside as t, createRatingContext as tt, createStack as u, useResizeObserver as ut, useRtl as v, createNumeric as vt, useMutationObserver as w, createForm as wt, useRaf as x, useNested as xt, Vuetify0RtlAdapter as y, createNested as yt, createBreakpoints as z };