@vuetify/v0 0.1.3 → 0.1.5

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 (130) hide show
  1. package/dist/adapter-CJIj5ySf.d.mts +11 -0
  2. package/dist/adapter-Cmeg49W9.mjs +229 -0
  3. package/dist/adapter-D2JoR-4d.d.mts +344 -0
  4. package/dist/adapters-BQ-Lr3PW.mjs +1 -0
  5. package/dist/adapters-DEXpW9If.mjs +1 -0
  6. package/dist/adapters-Q9WaOsJp.mjs +1 -0
  7. package/dist/adapters-SSDVth5e.mjs +1 -0
  8. package/dist/browser/index.js +953 -1026
  9. package/dist/components/index.d.mts +20 -7
  10. package/dist/components/index.mjs +38 -6
  11. package/dist/{components-C0zEvP7w.mjs → components-BbbGkTcN.mjs} +579 -107
  12. package/dist/composables/index.d.mts +17 -4
  13. package/dist/composables/index.mjs +36 -4
  14. package/dist/consola-DiUk9j3y.d.mts +15 -0
  15. package/dist/consola-GBy8XRuL.mjs +31 -0
  16. package/dist/constants/index.d.mts +1 -1
  17. package/dist/constants/index.mjs +3 -3
  18. package/dist/constants-B8pMSkcW.mjs +1 -0
  19. package/dist/createDataTable-cNf6DdHz.mjs +387 -0
  20. package/dist/createGroup-BrZPZudL.mjs +363 -0
  21. package/dist/createPagination-Wc_vRGNQ.mjs +234 -0
  22. package/dist/createSelection-BURpoE3p.mjs +261 -0
  23. package/dist/createSingle-BE1vHaZy.mjs +179 -0
  24. package/dist/createTokens-jwf8-iGn.mjs +682 -0
  25. package/dist/createTrinity-DkwPrPRS.mjs +149 -0
  26. package/dist/data-table/adapters/client/index.d.mts +3 -0
  27. package/dist/data-table/adapters/client/index.mjs +9 -0
  28. package/dist/data-table/adapters/index.d.mts +5 -0
  29. package/dist/data-table/adapters/index.mjs +12 -0
  30. package/dist/data-table/adapters/server/index.d.mts +3 -0
  31. package/dist/data-table/adapters/server/index.mjs +7 -0
  32. package/dist/data-table/adapters/virtual/index.d.mts +3 -0
  33. package/dist/data-table/adapters/virtual/index.mjs +9 -0
  34. package/dist/data-table/index.d.mts +7 -0
  35. package/dist/data-table/index.mjs +25 -0
  36. package/dist/date/index.d.mts +1 -1
  37. package/dist/date/index.mjs +2 -2
  38. package/dist/features/adapters/flagsmith/index.d.mts +16 -0
  39. package/dist/features/adapters/flagsmith/index.mjs +3 -0
  40. package/dist/features/adapters/launchdarkly/index.d.mts +15 -0
  41. package/dist/features/adapters/launchdarkly/index.mjs +3 -0
  42. package/dist/features/adapters/posthog/index.d.mts +15 -0
  43. package/dist/features/adapters/posthog/index.mjs +4 -0
  44. package/dist/features/index.d.mts +17 -0
  45. package/dist/features/index.mjs +18 -0
  46. package/dist/flagsmith-CHmpPGR7.mjs +40 -0
  47. package/dist/{globals-BwYsH-rt.mjs → globals-vN-O052q.mjs} +2 -2
  48. package/dist/index-BDTbJClL.d.mts +11 -0
  49. package/dist/{index-2wh69fk5.d.mts → index-BTMzRHep.d.mts} +187 -1417
  50. package/dist/index-BuOz3Rgm.d.mts +32 -0
  51. package/dist/{index-Bmem4l8m.d.mts → index-Bv1VN_j5.d.mts} +1 -1
  52. package/dist/{index-DFM5iBqh.d.mts → index-DRax9EgT.d.mts} +1044 -437
  53. package/dist/index-DdWxDPX3.d.mts +251 -0
  54. package/dist/{index-DBZTizq2.d.mts → index-UNwEBkQT.d.mts} +16 -2
  55. package/dist/index.d.mts +20 -7
  56. package/dist/index.mjs +39 -7
  57. package/dist/json/attributes.json +172 -0
  58. package/dist/json/importMap.json +28 -0
  59. package/dist/json/tags.json +73 -0
  60. package/dist/json/web-types.json +475 -1
  61. package/dist/launchdarkly-W8t8ZANX.mjs +28 -0
  62. package/dist/locale/adapters/index.d.mts +3 -0
  63. package/dist/locale/adapters/index.mjs +6 -0
  64. package/dist/locale/adapters/v0/index.d.mts +3 -0
  65. package/dist/locale/adapters/v0/index.mjs +5 -0
  66. package/dist/locale/index.d.mts +17 -0
  67. package/dist/locale/index.mjs +17 -0
  68. package/dist/logger/adapters/consola/index.d.mts +3 -0
  69. package/dist/logger/adapters/consola/index.mjs +3 -0
  70. package/dist/logger/adapters/index.d.mts +5 -0
  71. package/dist/logger/adapters/index.mjs +8 -0
  72. package/dist/logger/adapters/pino/index.d.mts +3 -0
  73. package/dist/logger/adapters/pino/index.mjs +5 -0
  74. package/dist/logger/adapters/v0/index.d.mts +3 -0
  75. package/dist/logger/adapters/v0/index.mjs +5 -0
  76. package/dist/logger/index.d.mts +17 -0
  77. package/dist/logger/index.mjs +10 -0
  78. package/dist/memory-BsZGbGnG.mjs +27 -0
  79. package/dist/memory-DVjquu_v.d.mts +25 -0
  80. package/dist/permissions/adapters/index.d.mts +18 -0
  81. package/dist/permissions/adapters/index.mjs +6 -0
  82. package/dist/permissions/adapters/v0/index.d.mts +18 -0
  83. package/dist/permissions/adapters/v0/index.mjs +5 -0
  84. package/dist/permissions/index.d.mts +17 -0
  85. package/dist/permissions/index.mjs +15 -0
  86. package/dist/pino-DFxkZLiu.mjs +49 -0
  87. package/dist/pino-p-jDkNQd.d.mts +24 -0
  88. package/dist/posthog-BOUoZTTf.mjs +50 -0
  89. package/dist/server-B-HWxaTQ.d.mts +20 -0
  90. package/dist/server-C2R2POGE.mjs +45 -0
  91. package/dist/storage/adapters/index.d.mts +3 -0
  92. package/dist/storage/adapters/index.mjs +3 -0
  93. package/dist/storage/adapters/memory/index.d.mts +2 -0
  94. package/dist/storage/adapters/memory/index.mjs +3 -0
  95. package/dist/storage/index.d.mts +17 -0
  96. package/dist/storage/index.mjs +37 -0
  97. package/dist/theme/adapters/index.d.mts +17 -0
  98. package/dist/theme/adapters/index.mjs +6 -0
  99. package/dist/theme/adapters/v0/index.d.mts +17 -0
  100. package/dist/theme/adapters/v0/index.mjs +5 -0
  101. package/dist/theme/index.d.mts +17 -0
  102. package/dist/theme/index.mjs +16 -0
  103. package/dist/toArray-VIn8vYt3.mjs +38 -0
  104. package/dist/types/index.d.mts +1 -1
  105. package/dist/useClickOutside-DIi0kjN5.mjs +4716 -0
  106. package/dist/useFeatures-6O7EPJUS.mjs +122 -0
  107. package/dist/useLocale-DHjbekzS.mjs +85 -0
  108. package/dist/useLogger-BXqiUvt2.mjs +283 -0
  109. package/dist/usePermissions-DFacFVqO.mjs +128 -0
  110. package/dist/useTheme-D0_1mjTw.mjs +135 -0
  111. package/dist/utilities/index.d.mts +3 -3
  112. package/dist/utilities/index.mjs +3 -3
  113. package/dist/{utilities-BbKjbXTx.mjs → utilities-Dx8wzGa5.mjs} +20 -3
  114. package/dist/v0-BNXo1ecc.d.mts +10 -0
  115. package/dist/v0-BOxb3nD1.d.mts +33 -0
  116. package/dist/v0-BPzPP8C5.d.mts +9 -0
  117. package/dist/v0-BYqmw3qM.mjs +21 -0
  118. package/dist/v0-C8DBv9mh.mjs +73 -0
  119. package/dist/v0-CfSj99gF.mjs +37 -0
  120. package/dist/v0-DHMoZ7dS.d.mts +22 -0
  121. package/dist/v0-Dc5mcpQs.mjs +41 -0
  122. package/dist/v0-Dwufx8ae.mjs +83 -0
  123. package/dist/virtual-A4e1yrdn.d.mts +9 -0
  124. package/dist/virtual-BoTGK6HT.mjs +44 -0
  125. package/package.json +34 -2
  126. package/dist/useClickOutside-DrkNYxDe.mjs +0 -8871
  127. /package/dist/{adapter-D95FHAtt.d.mts → adapter-DcwxFryd.d.mts} +0 -0
  128. /package/dist/{constants-DHKqjdjH.mjs → adapters-BGJKsBrw.mjs} +0 -0
  129. /package/dist/{htmlElements-DO9n35bD.mjs → htmlElements-d8iBCGpO.mjs} +0 -0
  130. /package/dist/{index-BLK67J_-.d.mts → index-BFBN5Zl3.d.mts} +0 -0
@@ -1,5 +1,5 @@
1
1
  import * as Vue from "vue";
2
- import { Fragment, Teleport, TransitionGroup, computed, createBlock, createCommentVNode, createElementBlock, createPropsRestProxy, createTextVNode, createVNode, defineComponent, effectScope, guardReactiveProps, inject, isRef, mergeModels, mergeProps, nextTick, normalizeProps, onBeforeUnmount, onMounted, onScopeDispose, onUnmounted, openBlock, provide, reactive, readonly, ref, renderList, renderSlot, resolveDynamicComponent, shallowReactive, shallowReadonly, shallowRef, toDisplayString, toRaw, toRef, toValue, unref, useAttrs, useId as useId$1, useModel, useTemplateRef, vShow, watch, watchEffect, withCtx, withDirectives } from "vue";
2
+ import { Fragment, Teleport, TransitionGroup, computed, createBlock, createCommentVNode, createElementBlock, createPropsRestProxy, createTextVNode, createVNode, defineComponent, effectScope, guardReactiveProps, hasInjectionContext, inject, isRef, mergeModels, mergeProps, nextTick, normalizeProps, onBeforeUnmount, onMounted, onScopeDispose, onUnmounted, openBlock, provide, reactive, readonly, ref, renderList, renderSlot, resolveDynamicComponent, shallowReactive, shallowReadonly, shallowRef, toDisplayString, toRaw, toRef, toValue, unref, useAttrs, useId as useId$1, useModel, useTemplateRef, vShow, watch, watchEffect, withCtx, withDirectives } from "vue";
3
3
 
4
4
  //#region src/constants/htmlElements.ts
5
5
  const selfClosingTags = [
@@ -85,7 +85,7 @@ const SUPPORTS_MATCH_MEDIA = IN_BROWSER && "matchMedia" in window && typeof wind
85
85
  const SUPPORTS_OBSERVER = IN_BROWSER && "ResizeObserver" in window;
86
86
  const SUPPORTS_INTERSECTION_OBSERVER = IN_BROWSER && "IntersectionObserver" in window;
87
87
  const SUPPORTS_MUTATION_OBSERVER = IN_BROWSER && "MutationObserver" in window;
88
- const version = "0.1.3";
88
+ const version = "0.1.5";
89
89
  /* v8 ignore next -- build-time constant, __DEV__ short-circuits in tests */
90
90
  const __LOGGER_ENABLED__ = false;
91
91
 
@@ -227,6 +227,23 @@ function isArray(item) {
227
227
  return Array.isArray(item);
228
228
  }
229
229
  /**
230
+ * Checks if a value is a DOM Element
231
+ *
232
+ * @param item The value to check
233
+ * @returns True if the value is a DOM Element
234
+ *
235
+ * @example
236
+ * ```ts
237
+ * isElement(document.body) // true
238
+ * isElement('string') // false
239
+ * isElement(null) // false
240
+ * ```
241
+ */
242
+ /* @__NO_SIDE_EFFECTS__ */
243
+ function isElement(item) {
244
+ return item instanceof Element;
245
+ }
246
+ /**
230
247
  * Checks if a value is null
231
248
  *
232
249
  * @param item The value to check
@@ -511,7 +528,7 @@ function debounce(fn, delay) {
511
528
  * serving as the foundation for all other components that need polymorphic
512
529
  * rendering capabilities.
513
530
  */
514
- const _sfc_main$54 = /* @__PURE__ */ defineComponent({
531
+ const _sfc_main$60 = /* @__PURE__ */ defineComponent({
515
532
  name: "Atom",
516
533
  __name: "Atom",
517
534
  props: {
@@ -542,7 +559,7 @@ const _sfc_main$54 = /* @__PURE__ */ defineComponent({
542
559
  };
543
560
  }
544
561
  });
545
- var Atom_default = _sfc_main$54;
562
+ var Atom_default = _sfc_main$60;
546
563
 
547
564
  //#endregion
548
565
  //#region src/composables/createContext/index.ts
@@ -691,6 +708,21 @@ function createTrinity(useContext$1, provideContext$1, context) {
691
708
 
692
709
  //#endregion
693
710
  //#region src/composables/createPlugin/index.ts
711
+ /**
712
+ * @module createPlugin
713
+ *
714
+ * @see https://vuejs.org/guide/reusability/plugins.html
715
+ * @see https://0.vuetifyjs.com/composables/foundation/create-plugin
716
+ *
717
+ * @remarks
718
+ * Factory for creating Vue plugins with proper context provision.
719
+ *
720
+ * Wraps the provide function in app.runWithContext() to ensure proper execution context,
721
+ * allowing plugins to safely provide dependency injection contexts at the application level.
722
+ *
723
+ * Also exports `createPluginContext` — a higher-level factory that generates the standard
724
+ * context/plugin/consumer triple for plugin composables, eliminating boilerplate.
725
+ */
694
726
  const INSTALLED = Symbol.for("v0:installed-plugins");
695
727
  function getInstalled(app) {
696
728
  const ctx = app._context;
@@ -731,6 +763,68 @@ function createPlugin(options) {
731
763
  });
732
764
  } };
733
765
  }
766
+ /**
767
+ * Creates the three standard functions for a plugin composable.
768
+ *
769
+ * @param defaultNamespace The default DI namespace string (e.g. `'v0:logger'`).
770
+ * @param factory Function that creates the composable context instance from options.
771
+ * @param config Optional setup callback and fallback factory.
772
+ * @returns A readonly tuple: `[createXContext, createXPlugin, useX]`.
773
+ *
774
+ * @example
775
+ * ```ts
776
+ * // Simple — no setup or fallback
777
+ * export const [createStorageContext, createStoragePlugin, useStorage] =
778
+ * createPluginContext('v0:storage', options => createStorage(options))
779
+ *
780
+ * // With fallback — safe outside component instances
781
+ * export const [createLoggerContext, createLoggerPlugin, useLogger] =
782
+ * createPluginContext('v0:logger', options => createLogger(options), {
783
+ * fallback: ns => createFallbackLogger(ns),
784
+ * setup: (context) => {
785
+ * if (__DEV__ && IN_BROWSER) (window as any).__v0Logger__ = context
786
+ * },
787
+ * })
788
+ * ```
789
+ */
790
+ function createPluginContext(defaultNamespace, factory, config) {
791
+ function createXContext(_options = {}) {
792
+ const { namespace = defaultNamespace, ...options } = _options;
793
+ const [_use, _provide] = createContext(namespace);
794
+ const context = factory(options);
795
+ function provide$1(_context = context, app) {
796
+ return _provide(_context, app);
797
+ }
798
+ return createTrinity(_use, provide$1, context);
799
+ }
800
+ function createXPlugin(_options = {}) {
801
+ const { namespace = defaultNamespace, ...options } = _options;
802
+ const [, provide$1, context] = createXContext({
803
+ ...options,
804
+ namespace
805
+ });
806
+ return createPlugin({
807
+ namespace,
808
+ provide: (app) => {
809
+ provide$1(context, app);
810
+ },
811
+ setup: config?.setup ? (app) => config.setup(context, app, options) : void 0
812
+ });
813
+ }
814
+ function useX(namespace = defaultNamespace) {
815
+ if (config?.fallback) {
816
+ const instance = config.fallback(namespace);
817
+ if (!hasInjectionContext()) return instance;
818
+ return useContext(namespace, instance);
819
+ }
820
+ return useContext(namespace);
821
+ }
822
+ return [
823
+ createXContext,
824
+ createXPlugin,
825
+ useX
826
+ ];
827
+ }
734
828
 
735
829
  //#endregion
736
830
  //#region src/composables/useLogger/adapters/consola.ts
@@ -1026,85 +1120,12 @@ function createFallbackLogger(namespace = "v0:logger") {
1026
1120
  * })
1027
1121
  * ```
1028
1122
  */
1029
- function createLoggerContext(_options = {}) {
1030
- const { namespace = "v0:logger", ...options } = _options;
1031
- const [useLoggerContext, _provideLoggerContext] = createContext(namespace);
1032
- const context = createLogger(options);
1033
- function provideLoggerContext(_context = context, app) {
1034
- return _provideLoggerContext(_context, app);
1035
- }
1036
- return createTrinity(useLoggerContext, provideLoggerContext, context);
1037
- }
1038
- /**
1039
- * Creates a new logger plugin.
1040
- *
1041
- * @param options The options for the logger plugin.
1042
- * @returns A new logger plugin.
1043
- *
1044
- * @see https://0.vuetifyjs.com/composables/plugins/use-logger
1045
- *
1046
- * @example
1047
- * ```ts
1048
- * import { createApp } from 'vue'
1049
- * import { createLoggerPlugin } from '@vuetify/v0'
1050
- * import App from './App.vue'
1051
- *
1052
- * const app = createApp(App)
1053
- *
1054
- * app.use(
1055
- * createLoggerPlugin({
1056
- * level: 'debug',
1057
- * prefix: '[MyApp]',
1058
- * })
1059
- * )
1060
- *
1061
- * app.mount('#app')
1062
- * ```
1063
- */
1064
- function createLoggerPlugin(_options = {}) {
1065
- const { namespace = "v0:logger", ...options } = _options;
1066
- const [, provideLoggerContext, context] = createLoggerContext({
1067
- ...options,
1068
- namespace
1069
- });
1070
- return createPlugin({
1071
- namespace,
1072
- provide: (app) => {
1073
- provideLoggerContext(context, app);
1074
- },
1075
- setup: (_app) => {}
1076
- });
1077
- }
1078
- /**
1079
- * Uses an existing or creates a new logger instance.
1080
- *
1081
- * @param namespace The namespace for the logger context. Defaults to `'v0:logger'`.
1082
- * @returns The logger instance.
1083
- *
1084
- * @see https://0.vuetifyjs.com/composables/plugins/use-logger
1085
- *
1086
- * @example
1087
- * ```ts
1088
- * import { useLogger } from '@vuetify/v0'
1089
- *
1090
- * const logger = useLogger()
1091
- *
1092
- * logger.info('This is an info message')
1093
- * logger.debug('This is a debug message')
1094
- * logger.error('This is an error message')
1095
- * logger.level('debug')
1096
- * logger.debug('This debug message will now be logged')
1097
- * ```
1098
- */
1099
- function useLogger(namespace = "v0:logger") {
1100
- const fallback = createFallbackLogger(namespace);
1101
- if (!instanceExists()) return fallback;
1102
- try {
1103
- return useContext(namespace, fallback);
1104
- } catch {
1105
- return fallback;
1123
+ const [createLoggerContext, createLoggerPlugin, useLogger] = createPluginContext("v0:logger", (options) => createLogger(options), {
1124
+ fallback: (ns) => createFallbackLogger(ns),
1125
+ setup: (context, _app, _options) => {
1126
+ if (!/* @__PURE__ */ isUndefined(false) && false);
1106
1127
  }
1107
- }
1128
+ });
1108
1129
 
1109
1130
  //#endregion
1110
1131
  //#region src/composables/createRegistry/index.ts
@@ -1767,7 +1788,7 @@ function useSelection(namespace = "v0:selection") {
1767
1788
  //#endregion
1768
1789
  //#region src/components/Avatar/AvatarRoot.vue
1769
1790
  const [useAvatarRoot, provideAvatarRoot] = createContext();
1770
- const _sfc_main$53 = /* @__PURE__ */ defineComponent({
1791
+ const _sfc_main$59 = /* @__PURE__ */ defineComponent({
1771
1792
  name: "AvatarRoot",
1772
1793
  __name: "AvatarRoot",
1773
1794
  props: {
@@ -1792,11 +1813,11 @@ const _sfc_main$53 = /* @__PURE__ */ defineComponent({
1792
1813
  };
1793
1814
  }
1794
1815
  });
1795
- var AvatarRoot_default = _sfc_main$53;
1816
+ var AvatarRoot_default = _sfc_main$59;
1796
1817
 
1797
1818
  //#endregion
1798
1819
  //#region src/components/Avatar/AvatarFallback.vue
1799
- const _sfc_main$52 = /* @__PURE__ */ defineComponent({
1820
+ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
1800
1821
  name: "AvatarFallback",
1801
1822
  __name: "AvatarFallback",
1802
1823
  props: {
@@ -1821,11 +1842,11 @@ const _sfc_main$52 = /* @__PURE__ */ defineComponent({
1821
1842
  };
1822
1843
  }
1823
1844
  });
1824
- var AvatarFallback_default = _sfc_main$52;
1845
+ var AvatarFallback_default = _sfc_main$58;
1825
1846
 
1826
1847
  //#endregion
1827
1848
  //#region src/components/Avatar/AvatarImage.vue
1828
- const _sfc_main$51 = /* @__PURE__ */ defineComponent({
1849
+ const _sfc_main$57 = /* @__PURE__ */ defineComponent({
1829
1850
  name: "AvatarImage",
1830
1851
  inheritAttrs: false,
1831
1852
  __name: "AvatarImage",
@@ -1885,7 +1906,7 @@ const _sfc_main$51 = /* @__PURE__ */ defineComponent({
1885
1906
  };
1886
1907
  }
1887
1908
  });
1888
- var AvatarImage_default = _sfc_main$51;
1909
+ var AvatarImage_default = _sfc_main$57;
1889
1910
 
1890
1911
  //#endregion
1891
1912
  //#region src/components/Avatar/index.ts
@@ -2688,92 +2709,137 @@ function createFallbackHydration() {
2688
2709
  * })
2689
2710
  * ```
2690
2711
  */
2691
- function createHydrationContext(_options = {}) {
2692
- const { namespace = "v0:hydration" } = _options;
2693
- const [useHydrationContext, _provideHydrationContext] = createContext(namespace);
2694
- const context = createHydration();
2695
- function provideHydrationContext(_context = context, app) {
2696
- return _provideHydrationContext(_context, app);
2712
+ const [createHydrationContext, createHydrationPlugin, useHydration] = createPluginContext("v0:hydration", () => createHydration(), {
2713
+ fallback: () => createFallbackHydration(),
2714
+ setup: (context, app, _options) => {
2715
+ app.mixin({ async mounted() {
2716
+ if (!/* @__PURE__ */ isNull(this.$parent)) return;
2717
+ context.hydrate();
2718
+ await nextTick();
2719
+ context.settle();
2720
+ } });
2697
2721
  }
2698
- return createTrinity(useHydrationContext, provideHydrationContext, context);
2699
- }
2722
+ });
2723
+
2724
+ //#endregion
2725
+ //#region src/composables/toElement/index.ts
2700
2726
  /**
2701
- * Creates a new hydration plugin.
2727
+ * Resolves a {@link MaybeElementRef} to a DOM Element or undefined.
2702
2728
  *
2703
- * @param options The options for the hydration plugin.
2704
- * @template E The type of the hydration context.
2705
- * @returns A new hydration plugin.
2729
+ * Handles:
2730
+ * - `Ref<Element>`, `ShallowRef<HTMLElement>`, getter functions
2731
+ * - Vue component instances (extracts `$el`)
2732
+ * - Raw DOM elements (pass-through)
2733
+ * - null/undefined (returns undefined)
2706
2734
  *
2707
- * @see https://0.vuetifyjs.com/composables/plugins/use-hydration
2735
+ * @param target The element ref, getter, or raw value to resolve
2736
+ * @returns The resolved DOM Element, or undefined if not available
2737
+ *
2738
+ * @see https://0.vuetifyjs.com/composables/transformers/to-element
2708
2739
  *
2709
2740
  * @example
2710
2741
  * ```ts
2711
- * import { createApp } from 'vue'
2712
- * import { createHydrationPlugin } from '@vuetify/v0'
2713
- * import App from './App.vue'
2714
- *
2715
- * const app = createApp(App)
2742
+ * import { toElement } from '@vuetify/v0'
2716
2743
  *
2717
- * app.use(createHydrationPlugin())
2744
+ * const el = shallowRef<HTMLElement | null>(null)
2745
+ * toElement(el) // HTMLElement | undefined
2718
2746
  *
2719
- * app.mount('#app')
2747
+ * const component = ref<ComponentPublicInstance>()
2748
+ * toElement(component) // Element | undefined (from $el)
2720
2749
  * ```
2721
2750
  */
2722
- function createHydrationPlugin(_options = {}) {
2723
- const { namespace = "v0:hydration", ...options } = _options;
2724
- const [, provideHydrationContext, context] = createHydrationContext({
2725
- ...options,
2726
- namespace
2727
- });
2728
- return createPlugin({
2729
- namespace,
2730
- provide: (app) => {
2731
- provideHydrationContext(context, app);
2732
- },
2733
- setup: (app) => {
2734
- app.mixin({ async mounted() {
2735
- if (!/* @__PURE__ */ isNull(this.$parent)) return;
2736
- context.hydrate();
2737
- await nextTick();
2738
- context.settle();
2739
- } });
2740
- }
2741
- });
2751
+ /* @__NO_SIDE_EFFECTS__ */
2752
+ function toElement(target) {
2753
+ const raw = typeof target === "function" ? target() : target && typeof target === "object" && "value" in target ? target.value : target;
2754
+ if (!raw) return void 0;
2755
+ if (raw instanceof Element) return raw;
2756
+ if ("$el" in raw) return raw.$el;
2742
2757
  }
2758
+
2759
+ //#endregion
2760
+ //#region src/composables/createObserver/index.ts
2743
2761
  /**
2744
- * Returns the current hydration instance.
2745
- *
2746
- * @param namespace The namespace for the hydration context. Defaults to `v0:hydration`.
2747
- * @returns The current hydration instance.
2748
- *
2749
- * @see https://0.vuetifyjs.com/composables/plugins/use-hydration
2750
- *
2751
- * @example
2752
- * ```vue
2753
- * <script setup lang="ts">
2754
- * import { useHydration } from '@vuetify/v0'
2755
- *
2756
- * const { isHydrated, isSettled } = useHydration()
2762
+ * @module createObserver
2757
2763
  *
2758
- * // Use isSettled to gate animations after state restoration
2759
- * const transition = computed(() => isSettled.value ? 'fade' : undefined)
2760
- * <\/script>
2764
+ * @remarks
2765
+ * Internal factory for browser Observer API composables. Encapsulates the
2766
+ * shared lifecycle, hydration, pause/resume/stop, and target-watch logic
2767
+ * used by useResizeObserver, useIntersectionObserver, and useMutationObserver.
2761
2768
  *
2762
- * <template>
2763
- * <Transition :name="transition">
2764
- * <div v-if="show">Animates only after hydration settles</div>
2765
- * </Transition>
2766
- * </template>
2767
- * ```
2769
+ * The `observer` ref uses a three-state sentinel:
2770
+ * - `undefined` — not yet created
2771
+ * - `null` permanently stopped (`stop()` was called; `setup()` is a no-op)
2772
+ * - instance — active observer
2768
2773
  */
2769
- function useHydration(namespace = "v0:hydration") {
2770
- const fallback = createFallbackHydration();
2771
- if (!instanceExists()) return fallback;
2772
- try {
2773
- return useContext(namespace, fallback);
2774
- } catch {
2775
- return fallback;
2774
+ function createObserver(target, userCallback, config) {
2775
+ const { isHydrated } = useHydration();
2776
+ const resolved = toRef(() => /* @__PURE__ */ toElement(target));
2777
+ const observer = shallowRef(void 0);
2778
+ const isPaused = shallowRef(false);
2779
+ const isActive = toRef(() => !!observer.value);
2780
+ function invoke(entries) {
2781
+ config.onEntry?.(entries);
2782
+ userCallback(entries);
2783
+ if (config.once) {
2784
+ if (config.shouldStop ? config.shouldStop(entries) : true) stop();
2785
+ }
2786
+ }
2787
+ function setup() {
2788
+ if (/* @__PURE__ */ isNull(observer.value)) return;
2789
+ const el = resolved.value;
2790
+ if (!isHydrated.value || !config.supports || !/* @__PURE__ */ isElement(el) || isPaused.value) return;
2791
+ observer.value = config.create(invoke);
2792
+ config.observe(observer.value, el);
2793
+ if (config.immediate) {
2794
+ const entries = config.immediate(el);
2795
+ if (config.onceIncludesImmediate) invoke(entries);
2796
+ else {
2797
+ config.onEntry?.(entries);
2798
+ userCallback(entries);
2799
+ }
2800
+ }
2801
+ }
2802
+ watch(resolved, (el, oldEl) => {
2803
+ if (oldEl || observer.value) cleanup();
2804
+ if (isHydrated.value && /* @__PURE__ */ isElement(el)) setup();
2805
+ }, { immediate: true });
2806
+ let stopHydrationWatch;
2807
+ if (!isHydrated.value) stopHydrationWatch = watch(() => isHydrated.value, (hydrated) => {
2808
+ if (hydrated && /* @__PURE__ */ isElement(resolved.value) && !observer.value) {
2809
+ setup();
2810
+ stopHydrationWatch?.();
2811
+ stopHydrationWatch = void 0;
2812
+ }
2813
+ });
2814
+ function cleanup() {
2815
+ if (observer.value) {
2816
+ observer.value.disconnect();
2817
+ observer.value = void 0;
2818
+ }
2776
2819
  }
2820
+ function pause() {
2821
+ isPaused.value = true;
2822
+ config.onPause?.();
2823
+ observer.value?.disconnect();
2824
+ }
2825
+ function resume() {
2826
+ isPaused.value = false;
2827
+ setup();
2828
+ }
2829
+ function stop() {
2830
+ stopHydrationWatch?.();
2831
+ stopHydrationWatch = void 0;
2832
+ cleanup();
2833
+ observer.value = null;
2834
+ }
2835
+ onScopeDispose(stop, true);
2836
+ return {
2837
+ isActive: shallowReadonly(isActive),
2838
+ isPaused: shallowReadonly(isPaused),
2839
+ pause,
2840
+ resume,
2841
+ stop
2842
+ };
2777
2843
  }
2778
2844
 
2779
2845
  //#endregion
@@ -2836,80 +2902,34 @@ function useHydration(namespace = "v0:hydration") {
2836
2902
  * ```
2837
2903
  */
2838
2904
  function useResizeObserver(target, callback, options = {}) {
2839
- const { isHydrated } = useHydration();
2840
- const targetRef = toRef(target);
2841
- const observer = shallowRef();
2842
- const isPaused = shallowRef(false);
2843
- const isActive = toRef(() => !!observer.value);
2844
- function setup() {
2845
- if (/* @__PURE__ */ isNull(observer.value)) return;
2846
- if (!isHydrated.value || !SUPPORTS_OBSERVER || !targetRef.value || isPaused.value) return;
2847
- observer.value = new ResizeObserver((entries) => {
2848
- callback(entries.map((entry) => ({
2905
+ return createObserver(target, callback, {
2906
+ supports: SUPPORTS_OBSERVER,
2907
+ once: options.once,
2908
+ create: (cb) => new ResizeObserver((entries) => {
2909
+ cb(entries.map((e) => ({
2849
2910
  contentRect: {
2850
- width: entry.contentRect.width,
2851
- height: entry.contentRect.height,
2852
- top: entry.contentRect.top,
2853
- left: entry.contentRect.left
2911
+ width: e.contentRect.width,
2912
+ height: e.contentRect.height,
2913
+ top: e.contentRect.top,
2914
+ left: e.contentRect.left
2854
2915
  },
2855
- target: entry.target
2916
+ target: e.target
2856
2917
  })));
2857
- if (options.once) stop();
2858
- });
2859
- observer.value.observe(targetRef.value, { box: options.box || "content-box" });
2860
- if (options.immediate) {
2861
- const rect = targetRef.value.getBoundingClientRect();
2862
- callback([{
2918
+ }),
2919
+ observe: (obs, el) => obs.observe(el, { box: options.box ?? "content-box" }),
2920
+ immediate: options.immediate ? (el) => {
2921
+ const rect = el.getBoundingClientRect();
2922
+ return [{
2863
2923
  contentRect: {
2864
2924
  width: rect.width,
2865
2925
  height: rect.height,
2866
2926
  top: rect.top,
2867
2927
  left: rect.left
2868
2928
  },
2869
- target: targetRef.value
2870
- }]);
2871
- }
2872
- }
2873
- watch(() => targetRef.value, (el, oldEl) => {
2874
- if (oldEl || observer.value) cleanup();
2875
- if (isHydrated.value && el) setup();
2876
- }, { immediate: true });
2877
- let stopHydrationWatch;
2878
- if (!isHydrated.value) stopHydrationWatch = watch(() => isHydrated.value, (hydrated) => {
2879
- if (hydrated && targetRef.value && !observer.value) {
2880
- setup();
2881
- stopHydrationWatch?.();
2882
- stopHydrationWatch = void 0;
2883
- }
2929
+ target: el
2930
+ }];
2931
+ } : void 0
2884
2932
  });
2885
- function cleanup() {
2886
- if (observer.value) {
2887
- observer.value.disconnect();
2888
- observer.value = void 0;
2889
- }
2890
- }
2891
- function pause() {
2892
- isPaused.value = true;
2893
- observer.value?.disconnect();
2894
- }
2895
- function resume() {
2896
- isPaused.value = false;
2897
- setup();
2898
- }
2899
- function stop() {
2900
- stopHydrationWatch?.();
2901
- stopHydrationWatch = void 0;
2902
- cleanup();
2903
- observer.value = null;
2904
- }
2905
- onScopeDispose(stop, true);
2906
- return {
2907
- isActive: shallowReadonly(isActive),
2908
- isPaused: shallowReadonly(isPaused),
2909
- pause,
2910
- resume,
2911
- stop
2912
- };
2913
2933
  }
2914
2934
  /**
2915
2935
  * A convenience composable that uses the Resize Observer API to track an
@@ -2953,7 +2973,7 @@ function useElementSize(target) {
2953
2973
  width,
2954
2974
  height,
2955
2975
  isActive,
2956
- isPaused,
2976
+ isPaused: shallowReadonly(isPaused),
2957
2977
  pause,
2958
2978
  resume,
2959
2979
  stop
@@ -3534,93 +3554,12 @@ function createLocaleFallback() {
3534
3554
  n: String
3535
3555
  };
3536
3556
  }
3537
- /**
3538
- * Creates a new locale context.
3539
- *
3540
- * @param options The options for the locale context.
3541
- * @template Z The type of the locale ticket.
3542
- * @template E The type of the locale context.
3543
- * @returns A new locale context.
3544
- *
3545
- * @see https://0.vuetifyjs.com/composables/plugins/use-locale
3546
- *
3547
- * @example
3548
- * ```ts
3549
- * import { createLocaleContext } from '@vuetify/v0'
3550
- *
3551
- * export const [useAppLocale, provideAppLocale, appLocale] = createLocaleContext({
3552
- * namespace: 'app:locale',
3553
- * messages: {
3554
- * en: { hello: 'Hello' },
3555
- * es: { hello: 'Hola' },
3556
- * },
3557
- * })
3558
- *
3559
- * // In a parent component:
3560
- * provideAppLocale()
3561
- *
3562
- * // In a child component:
3563
- * const locale = useAppLocale()
3564
- * locale.select('es')
3565
- * ```
3566
- */
3567
- function createLocaleContext(_options = {}) {
3568
- const { namespace = "v0:locale", ...options } = _options;
3569
- const [useLocaleContext, _provideLocaleContext] = createContext(namespace);
3570
- const context = createLocale(options);
3571
- function provideLocaleContext(_context = context, app) {
3572
- return _provideLocaleContext(_context, app);
3573
- }
3574
- return createTrinity(useLocaleContext, provideLocaleContext, context);
3575
- }
3576
- /**
3577
- * Creates a new locale plugin.
3578
- *
3579
- * @param options The options for the locale plugin.
3580
- * @template Z The type of the locale ticket.
3581
- * @template E The type of the locale context.
3582
- * @template R The type of the token ticket.
3583
- * @template O The type of the token context.
3584
- * @returns A new locale plugin.
3585
- *
3586
- * @see https://0.vuetifyjs.com/composables/plugins/use-locale
3587
- */
3588
- function createLocalePlugin(_options = {}) {
3589
- const { namespace = "v0:locale", adapter = new Vuetify0LocaleAdapter(), messages = {}, ...options } = _options;
3590
- const [, provideLocaleContext, context] = createLocaleContext({
3591
- ...options,
3592
- namespace,
3593
- adapter,
3594
- messages
3595
- });
3596
- return createPlugin({
3597
- namespace,
3598
- provide: (app) => {
3599
- provideLocaleContext(context, app);
3600
- }
3601
- });
3602
- }
3603
- /**
3604
- * Returns the current locale instance.
3605
- *
3606
- * @returns The current locale instance.
3607
- *
3608
- * @see https://0.vuetifyjs.com/composables/plugins/use-locale
3609
- */
3610
- function useLocale(namespace = "v0:locale") {
3611
- const fallback = createLocaleFallback();
3612
- if (!instanceExists()) return fallback;
3613
- try {
3614
- return useContext(namespace, fallback);
3615
- } catch {
3616
- return fallback;
3617
- }
3618
- }
3557
+ const [createLocaleContext, createLocalePlugin, useLocale] = createPluginContext("v0:locale", (options) => createLocale(options), { fallback: () => createLocaleFallback() });
3619
3558
 
3620
3559
  //#endregion
3621
3560
  //#region src/components/Breadcrumbs/BreadcrumbsRoot.vue
3622
3561
  const [useBreadcrumbsRoot, provideBreadcrumbsRoot] = createContext();
3623
- const _sfc_main$50 = /* @__PURE__ */ defineComponent({
3562
+ const _sfc_main$56 = /* @__PURE__ */ defineComponent({
3624
3563
  name: "BreadcrumbsRoot",
3625
3564
  __name: "BreadcrumbsRoot",
3626
3565
  props: {
@@ -3759,11 +3698,11 @@ const _sfc_main$50 = /* @__PURE__ */ defineComponent({
3759
3698
  };
3760
3699
  }
3761
3700
  });
3762
- var BreadcrumbsRoot_default = _sfc_main$50;
3701
+ var BreadcrumbsRoot_default = _sfc_main$56;
3763
3702
 
3764
3703
  //#endregion
3765
3704
  //#region src/components/Breadcrumbs/BreadcrumbsDivider.vue
3766
- const _sfc_main$49 = /* @__PURE__ */ defineComponent({
3705
+ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
3767
3706
  name: "BreadcrumbsDivider",
3768
3707
  __name: "BreadcrumbsDivider",
3769
3708
  props: {
@@ -3810,11 +3749,11 @@ const _sfc_main$49 = /* @__PURE__ */ defineComponent({
3810
3749
  };
3811
3750
  }
3812
3751
  });
3813
- var BreadcrumbsDivider_default = _sfc_main$49;
3752
+ var BreadcrumbsDivider_default = _sfc_main$55;
3814
3753
 
3815
3754
  //#endregion
3816
3755
  //#region src/components/Breadcrumbs/BreadcrumbsEllipsis.vue
3817
- const _sfc_main$48 = /* @__PURE__ */ defineComponent({
3756
+ const _sfc_main$54 = /* @__PURE__ */ defineComponent({
3818
3757
  name: "BreadcrumbsEllipsis",
3819
3758
  __name: "BreadcrumbsEllipsis",
3820
3759
  props: {
@@ -3868,11 +3807,11 @@ const _sfc_main$48 = /* @__PURE__ */ defineComponent({
3868
3807
  };
3869
3808
  }
3870
3809
  });
3871
- var BreadcrumbsEllipsis_default = _sfc_main$48;
3810
+ var BreadcrumbsEllipsis_default = _sfc_main$54;
3872
3811
 
3873
3812
  //#endregion
3874
3813
  //#region src/components/Breadcrumbs/BreadcrumbsItem.vue
3875
- const _sfc_main$47 = /* @__PURE__ */ defineComponent({
3814
+ const _sfc_main$53 = /* @__PURE__ */ defineComponent({
3876
3815
  name: "BreadcrumbsItem",
3877
3816
  __name: "BreadcrumbsItem",
3878
3817
  props: {
@@ -3922,11 +3861,11 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
3922
3861
  };
3923
3862
  }
3924
3863
  });
3925
- var BreadcrumbsItem_default = _sfc_main$47;
3864
+ var BreadcrumbsItem_default = _sfc_main$53;
3926
3865
 
3927
3866
  //#endregion
3928
3867
  //#region src/components/Breadcrumbs/BreadcrumbsLink.vue
3929
- const _sfc_main$46 = /* @__PURE__ */ defineComponent({
3868
+ const _sfc_main$52 = /* @__PURE__ */ defineComponent({
3930
3869
  name: "BreadcrumbsLink",
3931
3870
  __name: "BreadcrumbsLink",
3932
3871
  props: {
@@ -3945,11 +3884,11 @@ const _sfc_main$46 = /* @__PURE__ */ defineComponent({
3945
3884
  };
3946
3885
  }
3947
3886
  });
3948
- var BreadcrumbsLink_default = _sfc_main$46;
3887
+ var BreadcrumbsLink_default = _sfc_main$52;
3949
3888
 
3950
3889
  //#endregion
3951
3890
  //#region src/components/Breadcrumbs/BreadcrumbsList.vue
3952
- const _sfc_main$45 = /* @__PURE__ */ defineComponent({
3891
+ const _sfc_main$51 = /* @__PURE__ */ defineComponent({
3953
3892
  name: "BreadcrumbsList",
3954
3893
  __name: "BreadcrumbsList",
3955
3894
  props: {
@@ -3969,11 +3908,11 @@ const _sfc_main$45 = /* @__PURE__ */ defineComponent({
3969
3908
  };
3970
3909
  }
3971
3910
  });
3972
- var BreadcrumbsList_default = _sfc_main$45;
3911
+ var BreadcrumbsList_default = _sfc_main$51;
3973
3912
 
3974
3913
  //#endregion
3975
3914
  //#region src/components/Breadcrumbs/BreadcrumbsPage.vue
3976
- const _sfc_main$44 = /* @__PURE__ */ defineComponent({
3915
+ const _sfc_main$50 = /* @__PURE__ */ defineComponent({
3977
3916
  name: "BreadcrumbsPage",
3978
3917
  __name: "BreadcrumbsPage",
3979
3918
  props: {
@@ -3993,7 +3932,7 @@ const _sfc_main$44 = /* @__PURE__ */ defineComponent({
3993
3932
  };
3994
3933
  }
3995
3934
  });
3996
- var BreadcrumbsPage_default = _sfc_main$44;
3935
+ var BreadcrumbsPage_default = _sfc_main$50;
3997
3936
 
3998
3937
  //#endregion
3999
3938
  //#region src/components/Breadcrumbs/index.ts
@@ -4125,7 +4064,7 @@ function useProxyModel(registry, model, options) {
4125
4064
  //#endregion
4126
4065
  //#region src/components/Checkbox/CheckboxGroup.vue
4127
4066
  const [useCheckboxGroup, provideCheckboxGroup] = createContext();
4128
- const _sfc_main$43 = /* @__PURE__ */ defineComponent({
4067
+ const _sfc_main$49 = /* @__PURE__ */ defineComponent({
4129
4068
  name: "CheckboxGroup",
4130
4069
  __name: "CheckboxGroup",
4131
4070
  props: /* @__PURE__ */ mergeModels({
@@ -4191,12 +4130,12 @@ const _sfc_main$43 = /* @__PURE__ */ defineComponent({
4191
4130
  };
4192
4131
  }
4193
4132
  });
4194
- var CheckboxGroup_default = _sfc_main$43;
4133
+ var CheckboxGroup_default = _sfc_main$49;
4195
4134
 
4196
4135
  //#endregion
4197
4136
  //#region src/components/Checkbox/CheckboxRoot.vue
4198
4137
  const [useCheckboxRoot, provideCheckboxRoot] = createContext();
4199
- const _sfc_main$42 = /* @__PURE__ */ defineComponent({
4138
+ const _sfc_main$48 = /* @__PURE__ */ defineComponent({
4200
4139
  name: "CheckboxRoot",
4201
4140
  inheritAttrs: false,
4202
4141
  __name: "CheckboxRoot",
@@ -4330,18 +4269,18 @@ const _sfc_main$42 = /* @__PURE__ */ defineComponent({
4330
4269
  };
4331
4270
  }
4332
4271
  });
4333
- var CheckboxRoot_default = _sfc_main$42;
4272
+ var CheckboxRoot_default = _sfc_main$48;
4334
4273
 
4335
4274
  //#endregion
4336
4275
  //#region src/components/Checkbox/CheckboxHiddenInput.vue
4337
- const _hoisted_1$1 = [
4276
+ const _hoisted_1$2 = [
4338
4277
  "checked",
4339
4278
  "disabled",
4340
4279
  "form",
4341
4280
  "name",
4342
4281
  "value"
4343
4282
  ];
4344
- const visuallyHiddenStyle$1 = {
4283
+ const visuallyHiddenStyle$2 = {
4345
4284
  position: "absolute",
4346
4285
  width: "1px",
4347
4286
  height: "1px",
@@ -4352,7 +4291,7 @@ const visuallyHiddenStyle$1 = {
4352
4291
  whiteSpace: "nowrap",
4353
4292
  border: "0"
4354
4293
  };
4355
- const _sfc_main$41 = /* @__PURE__ */ defineComponent({
4294
+ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
4356
4295
  name: "CheckboxHiddenInput",
4357
4296
  __name: "CheckboxHiddenInput",
4358
4297
  props: {
@@ -4380,19 +4319,19 @@ const _sfc_main$41 = /* @__PURE__ */ defineComponent({
4380
4319
  form: form.value,
4381
4320
  inert: "",
4382
4321
  name: name.value,
4383
- style: visuallyHiddenStyle$1,
4322
+ style: visuallyHiddenStyle$2,
4384
4323
  tabindex: "-1",
4385
4324
  type: "checkbox",
4386
4325
  value: value.value
4387
- }, null, 8, _hoisted_1$1);
4326
+ }, null, 8, _hoisted_1$2);
4388
4327
  };
4389
4328
  }
4390
4329
  });
4391
- var CheckboxHiddenInput_default = _sfc_main$41;
4330
+ var CheckboxHiddenInput_default = _sfc_main$47;
4392
4331
 
4393
4332
  //#endregion
4394
4333
  //#region src/components/Checkbox/CheckboxIndicator.vue
4395
- const _sfc_main$40 = /* @__PURE__ */ defineComponent({
4334
+ const _sfc_main$46 = /* @__PURE__ */ defineComponent({
4396
4335
  name: "CheckboxIndicator",
4397
4336
  __name: "CheckboxIndicator",
4398
4337
  props: {
@@ -4425,11 +4364,11 @@ const _sfc_main$40 = /* @__PURE__ */ defineComponent({
4425
4364
  };
4426
4365
  }
4427
4366
  });
4428
- var CheckboxIndicator_default = _sfc_main$40;
4367
+ var CheckboxIndicator_default = _sfc_main$46;
4429
4368
 
4430
4369
  //#endregion
4431
4370
  //#region src/components/Checkbox/CheckboxSelectAll.vue
4432
- const _sfc_main$39 = /* @__PURE__ */ defineComponent({
4371
+ const _sfc_main$45 = /* @__PURE__ */ defineComponent({
4433
4372
  name: "CheckboxSelectAll",
4434
4373
  inheritAttrs: false,
4435
4374
  __name: "CheckboxSelectAll",
@@ -4515,7 +4454,7 @@ const _sfc_main$39 = /* @__PURE__ */ defineComponent({
4515
4454
  };
4516
4455
  }
4517
4456
  });
4518
- var CheckboxSelectAll_default = _sfc_main$39;
4457
+ var CheckboxSelectAll_default = _sfc_main$45;
4519
4458
 
4520
4459
  //#endregion
4521
4460
  //#region src/components/Checkbox/index.ts
@@ -4551,7 +4490,7 @@ const Checkbox = {
4551
4490
  //#endregion
4552
4491
  //#region src/components/Dialog/DialogRoot.vue
4553
4492
  const [useDialogContext, provideDialogContext] = createContext();
4554
- const _sfc_main$38 = /* @__PURE__ */ defineComponent({
4493
+ const _sfc_main$44 = /* @__PURE__ */ defineComponent({
4555
4494
  name: "DialogRoot",
4556
4495
  __name: "DialogRoot",
4557
4496
  props: /* @__PURE__ */ mergeModels({
@@ -4603,11 +4542,11 @@ const _sfc_main$38 = /* @__PURE__ */ defineComponent({
4603
4542
  };
4604
4543
  }
4605
4544
  });
4606
- var DialogRoot_default = _sfc_main$38;
4545
+ var DialogRoot_default = _sfc_main$44;
4607
4546
 
4608
4547
  //#endregion
4609
4548
  //#region src/components/Dialog/DialogClose.vue
4610
- const _sfc_main$37 = /* @__PURE__ */ defineComponent({
4549
+ const _sfc_main$43 = /* @__PURE__ */ defineComponent({
4611
4550
  name: "DialogClose",
4612
4551
  __name: "DialogClose",
4613
4552
  props: {
@@ -4635,7 +4574,7 @@ const _sfc_main$37 = /* @__PURE__ */ defineComponent({
4635
4574
  };
4636
4575
  }
4637
4576
  });
4638
- var DialogClose_default = _sfc_main$37;
4577
+ var DialogClose_default = _sfc_main$43;
4639
4578
 
4640
4579
  //#endregion
4641
4580
  //#region src/composables/createPagination/index.ts
@@ -5863,133 +5802,52 @@ function createBreakpoints(_options = {}) {
5863
5802
  update
5864
5803
  };
5865
5804
  }
5866
- /**
5867
- * Creates a new breakpoints context.
5868
- *
5869
- * @param options The options for the breakpoints context.
5870
- * @template E The type of the breakpoints context.
5871
- * @returns A new breakpoints context.
5872
- *
5873
- * @see https://0.vuetifyjs.com/composables/plugins/use-breakpoints
5874
- *
5875
- * @example
5876
- * ```ts
5877
- * import { createBreakpointsContext } from '@vuetify/v0'
5878
- *
5879
- * export const [useBreakpoints, provideBreakpoints, context] = createBreakpointsContext({
5880
- * namespace: 'v0:breakpoints',
5881
- * mobileBreakpoint: 'sm',
5882
- * })
5883
- * ```
5884
- */
5885
- function createBreakpointsContext(_options = {}) {
5886
- const { namespace = "v0:breakpoints", ...options } = _options;
5887
- const [useBreakpointsContext, _provideBreakpointsContext] = createContext(namespace);
5888
- const context = createBreakpoints(options);
5889
- function provideBreakpointsContext(_context = context, app) {
5890
- return _provideBreakpointsContext(_context, app);
5891
- }
5892
- return createTrinity(useBreakpointsContext, provideBreakpointsContext, context);
5893
- }
5894
- /**
5895
- * Creates a new breakpoints plugin.
5896
- *
5897
- * @param options The options for the breakpoints plugin.
5898
- * @template E The type of the breakpoints context.
5899
- * @returns A new breakpoints plugin.
5900
- *
5901
- * @see https://0.vuetifyjs.com/composables/plugins/use-breakpoints
5902
- *
5903
- * @example
5904
- * ```ts
5905
- * import { createApp } from 'vue'
5906
- * import { createBreakpointsPlugin } from '@vuetify/v0'
5907
- * import App from './App.vue'
5908
- *
5909
- * const app = createApp(App)
5910
- *
5911
- * app.use(
5912
- * createBreakpointsPlugin({
5913
- * namespace: 'v0:breakpoints',
5914
- * mobileBreakpoint: 'md',
5915
- * breakpoints: {
5916
- * xs: 0,
5917
- * sm: 600,
5918
- * md: 840,
5919
- * lg: 1145,
5920
- * xl: 1545,
5921
- * xxl: 2138,
5922
- * },
5923
- * })
5924
- * )
5925
- *
5926
- * app.mount('#app')
5927
- * ```
5928
- */
5929
- function createBreakpointsPlugin(_options = {}) {
5930
- const { namespace = "v0:breakpoints", ...options } = _options;
5931
- const [, provideBreakpointsContext, context] = createBreakpointsContext({
5932
- ...options,
5933
- namespace
5934
- });
5935
- return createPlugin({
5936
- namespace,
5937
- provide: (app) => {
5938
- provideBreakpointsContext(context, app);
5939
- },
5940
- setup: (app) => {
5941
- app.mixin({ mounted() {
5942
- if (!/* @__PURE__ */ isNull(this.$parent)) return;
5943
- const hydration = useHydration();
5944
- function listener() {
5945
- context.update();
5946
- }
5947
- const unwatch = watch(hydration.isHydrated, (hydrated) => {
5948
- if (hydrated) listener();
5949
- }, { immediate: true });
5950
- const cleanup = useWindowEventListener("resize", listener, { passive: true });
5951
- onScopeDispose(() => {
5952
- cleanup();
5953
- unwatch();
5954
- }, true);
5955
- } });
5956
- }
5957
- });
5958
- }
5959
- /**
5960
- * Returns the current breakpoints instance.
5961
- *
5962
- * @param namespace The namespace for the breakpoints context. Defaults to `v0:breakpoints`.
5963
- * @returns The current breakpoints instance.
5964
- *
5965
- * @see https://0.vuetifyjs.com/composables/plugins/use-breakpoints
5966
- *
5967
- * @example
5968
- * ```vue
5969
- * <script setup lang="ts">
5970
- * import { useBreakpoints } from '@vuetify/v0'
5971
- *
5972
- * // Destructure for template auto-unwrapping
5973
- * const { isMobile, mdAndUp } = useBreakpoints()
5974
- *
5975
- * // In script, use .value
5976
- * if (isMobile.value) {
5977
- * console.log('Mobile detected')
5978
- * }
5979
- * <\/script>
5980
- *
5981
- * <template>
5982
- * <div class="pa-4">
5983
- * <!-- Destructured refs auto-unwrap in templates -->
5984
- * <p v-if="isMobile">Mobile layout active</p>
5985
- * <p v-else-if="mdAndUp">Medium and up layout active</p>
5986
- * </div>
5987
- * </template>
5988
- * ```
5989
- */
5990
- function useBreakpoints(namespace = "v0:breakpoints") {
5991
- return useContext(namespace);
5805
+ function createBreakpointsFallback() {
5806
+ return {
5807
+ breakpoints: createDefaultBreakpoints().breakpoints,
5808
+ name: readonly(shallowRef("xs")),
5809
+ width: readonly(shallowRef(0)),
5810
+ height: readonly(shallowRef(0)),
5811
+ isMobile: readonly(shallowRef(false)),
5812
+ xs: readonly(shallowRef(false)),
5813
+ sm: readonly(shallowRef(false)),
5814
+ md: readonly(shallowRef(false)),
5815
+ lg: readonly(shallowRef(false)),
5816
+ xl: readonly(shallowRef(false)),
5817
+ xxl: readonly(shallowRef(false)),
5818
+ smAndUp: readonly(shallowRef(false)),
5819
+ mdAndUp: readonly(shallowRef(false)),
5820
+ lgAndUp: readonly(shallowRef(false)),
5821
+ xlAndUp: readonly(shallowRef(false)),
5822
+ xxlAndUp: readonly(shallowRef(false)),
5823
+ smAndDown: readonly(shallowRef(false)),
5824
+ mdAndDown: readonly(shallowRef(false)),
5825
+ lgAndDown: readonly(shallowRef(false)),
5826
+ xlAndDown: readonly(shallowRef(false)),
5827
+ xxlAndDown: readonly(shallowRef(false)),
5828
+ update: () => {}
5829
+ };
5992
5830
  }
5831
+ const [createBreakpointsContext, createBreakpointsPlugin, useBreakpoints] = createPluginContext("v0:breakpoints", (options) => createBreakpoints(options), {
5832
+ fallback: () => createBreakpointsFallback(),
5833
+ setup: (context, app, _options) => {
5834
+ app.mixin({ mounted() {
5835
+ if (!/* @__PURE__ */ isNull(this.$parent)) return;
5836
+ const hydration = useHydration();
5837
+ function listener() {
5838
+ context.update();
5839
+ }
5840
+ const unwatch = watch(hydration.isHydrated, (hydrated) => {
5841
+ if (hydrated) listener();
5842
+ }, { immediate: true });
5843
+ const cleanup = useWindowEventListener("resize", listener, { passive: true });
5844
+ onScopeDispose(() => {
5845
+ cleanup();
5846
+ unwatch();
5847
+ }, true);
5848
+ } });
5849
+ }
5850
+ });
5993
5851
 
5994
5852
  //#endregion
5995
5853
  //#region src/composables/useDate/index.ts
@@ -6299,120 +6157,23 @@ function createFeatures(_options = {}) {
6299
6157
  }
6300
6158
  };
6301
6159
  }
6302
- /**
6303
- * Creates a new features context.
6304
- *
6305
- * @param options The options for the features context.
6306
- * @template Z The type of the feature ticket.
6307
- * @template E The type of the feature context.
6308
- * @returns A new features context.
6309
- *
6310
- * @see https://0.vuetifyjs.com/composables/plugins/use-features
6311
- *
6312
- * @example
6313
- * ```ts
6314
- * import { createFeaturesContext } from '@vuetify/v0'
6315
- *
6316
- * export const [useFeatures, provideFeatures, context] = createFeaturesContext({
6317
- * namespace: 'app:features',
6318
- * features: {
6319
- * 'dark-mode': true,
6320
- * 'theme-color': { $variation: 'blue' },
6321
- * },
6322
- * })
6323
- * ```
6324
- */
6325
- function createFeaturesContext(_options = {}) {
6326
- const { namespace = "v0:features", ...options } = _options;
6327
- const [useFeaturesContext, _provideFeaturesContext] = createContext(namespace);
6328
- const context = createFeatures(options);
6329
- function provideFeaturesContext(_context = context, app) {
6330
- return _provideFeaturesContext(_context, app);
6331
- }
6332
- return createTrinity(useFeaturesContext, provideFeaturesContext, context);
6160
+ function createFeaturesFallback() {
6161
+ return {
6162
+ size: 0,
6163
+ variation: (_id, fallback = null) => fallback,
6164
+ sync: () => {}
6165
+ };
6333
6166
  }
6334
- /**
6335
- * Creates a new features plugin.
6336
- *
6337
- * @param options The options for the features plugin.
6338
- * @template Z The type of the feature ticket.
6339
- * @template E The type of the feature context.
6340
- * @returns A new features plugin.
6341
- *
6342
- * @see https://0.vuetifyjs.com/composables/plugins/use-features
6343
- *
6344
- * @example
6345
- * ```ts
6346
- * import { createApp } from 'vue'
6347
- * import { createFeaturesPlugin } from '@vuetify/v0'
6348
- * import App from './App.vue'
6349
- *
6350
- * const app = createApp(App)
6351
- *
6352
- * app.use(
6353
- * createFeaturesPlugin({
6354
- * features: {
6355
- * 'dark-mode': true,
6356
- * 'theme-color': { $variation: 'blue' },
6357
- * },
6358
- * })
6359
- * )
6360
- *
6361
- * app.mount('#app')
6362
- * ```
6363
- */
6364
- function createFeaturesPlugin(_options = {}) {
6365
- const { namespace = "v0:features", adapter, ...options } = _options;
6366
- const [, provideFeaturesContext, context] = createFeaturesContext({
6367
- ...options,
6368
- namespace
6369
- });
6370
- return createPlugin({
6371
- namespace,
6372
- provide: (app) => {
6373
- provideFeaturesContext(context, app);
6374
- },
6375
- setup: (app) => {
6376
- if (!adapter) return;
6377
- const adapters = /* @__PURE__ */ isArray(adapter) ? adapter : [adapter];
6378
- for (const adapter$1 of adapters) {
6379
- const initialFlags = adapter$1.setup((flags) => {
6380
- context.sync(flags);
6381
- });
6382
- context.sync(initialFlags);
6383
- if (/* @__PURE__ */ isFunction(adapter$1.dispose)) app.onUnmount(() => adapter$1.dispose());
6384
- }
6167
+ const [createFeaturesContext, createFeaturesPlugin, useFeatures] = createPluginContext("v0:features", (options) => createFeatures(options), {
6168
+ fallback: () => createFeaturesFallback(),
6169
+ setup: (context, app, { adapter }) => {
6170
+ if (!adapter) return;
6171
+ for (const a of /* @__PURE__ */ isArray(adapter) ? adapter : [adapter]) {
6172
+ context.sync(a.setup((flags) => context.sync(flags)));
6173
+ if (/* @__PURE__ */ isFunction(a.dispose)) app.onUnmount(() => a.dispose());
6385
6174
  }
6386
- });
6387
- }
6388
- /**
6389
- * Returns the current features instance.
6390
- *
6391
- * @param namespace The namespace for the features context. Defaults to `v0:features`.
6392
- * @template Z The type of the feature ticket.
6393
- * @returns The current features instance.
6394
- *
6395
- * @see https://0.vuetifyjs.com/composables/plugins/use-features
6396
- *
6397
- * @example
6398
- * ```vue
6399
- * <script setup lang="ts">
6400
- * import { useFeatures } from '@vuetify/v0'
6401
- *
6402
- * const features = useFeatures()
6403
- * <\/script>
6404
- *
6405
- * <template>
6406
- * <div>
6407
- * <p>Features: {{ features.get('dark-mode') }}</p>
6408
- * <p>Theme Color: {{ features.variation('theme-color') }}</p>
6409
- * </div>
6410
- * </template>
6411
- * ```
6412
- */
6413
- function useFeatures(namespace = "v0:features") {
6414
- return useContext(namespace);
6415
- }
6175
+ }
6176
+ });
6416
6177
 
6417
6178
  //#endregion
6418
6179
  //#region src/composables/createForm/index.ts
@@ -6507,6 +6268,8 @@ function createForm(options) {
6507
6268
  errors.value = [];
6508
6269
  isPristine.value = true;
6509
6270
  isValid$1.value = null;
6271
+ isValidating$1.value = false;
6272
+ validationGeneration++;
6510
6273
  }
6511
6274
  let validationGeneration = 0;
6512
6275
  async function validate$1(silent = false) {
@@ -6555,9 +6318,13 @@ function createForm(options) {
6555
6318
  });
6556
6319
  return ticket;
6557
6320
  }
6321
+ function onboard(registrations) {
6322
+ return registry.batch(() => registrations.map((r) => register(r)));
6323
+ }
6558
6324
  return {
6559
6325
  ...registry,
6560
6326
  register,
6327
+ onboard,
6561
6328
  reset,
6562
6329
  submit,
6563
6330
  validateOn,
@@ -7066,86 +6833,48 @@ function matchesKeyGroup(e, group, platformIsMac) {
7066
6833
  * ```
7067
6834
  */
7068
6835
  function useIntersectionObserver(target, callback, options = {}) {
7069
- const { isHydrated } = useHydration();
7070
- const targetRef = toRef(target);
7071
- const observer = shallowRef();
7072
- const isPaused = shallowRef(false);
7073
6836
  const isIntersecting = shallowRef(false);
7074
- const isActive = toRef(() => !!observer.value);
7075
- function setup() {
7076
- if (/* @__PURE__ */ isNull(observer.value)) return;
7077
- if (!isHydrated.value || !SUPPORTS_INTERSECTION_OBSERVER || !targetRef.value || isPaused.value) return;
7078
- observer.value = new IntersectionObserver((entries) => {
7079
- const transformedEntries = entries.map((entry) => ({
7080
- boundingClientRect: entry.boundingClientRect,
7081
- intersectionRatio: entry.intersectionRatio,
7082
- intersectionRect: entry.intersectionRect,
7083
- isIntersecting: entry.isIntersecting,
7084
- rootBounds: entry.rootBounds,
7085
- target: entry.target,
7086
- time: entry.time
7087
- }));
7088
- const latestEntry = transformedEntries.at(-1);
7089
- if (latestEntry) isIntersecting.value = latestEntry.isIntersecting;
7090
- callback(transformedEntries);
7091
- if (options.once && latestEntry?.isIntersecting) stop();
7092
- }, {
7093
- root: options.root || null,
7094
- rootMargin: options.rootMargin || "0px",
7095
- threshold: options.threshold || 0
7096
- });
7097
- observer.value.observe(targetRef.value);
7098
- if (options.immediate) callback([{
7099
- boundingClientRect: targetRef.value.getBoundingClientRect(),
7100
- intersectionRatio: 0,
7101
- intersectionRect: new DOMRect(0, 0, 0, 0),
7102
- isIntersecting: false,
7103
- rootBounds: null,
7104
- target: targetRef.value,
7105
- time: performance.now()
7106
- }]);
7107
- }
7108
- watch(() => targetRef.value, (el, oldEl) => {
7109
- if (oldEl || observer.value) cleanup();
7110
- if (isHydrated.value && el) setup();
7111
- }, { immediate: true });
7112
- let stopHydrationWatch;
7113
- if (!isHydrated.value) stopHydrationWatch = watch(() => isHydrated.value, (hydrated) => {
7114
- if (hydrated && targetRef.value && !observer.value) {
7115
- setup();
7116
- stopHydrationWatch?.();
7117
- stopHydrationWatch = void 0;
7118
- }
7119
- });
7120
- function cleanup() {
7121
- if (observer.value) {
7122
- observer.value.disconnect();
7123
- observer.value = void 0;
7124
- }
7125
- }
7126
- function pause() {
7127
- isPaused.value = true;
7128
- isIntersecting.value = false;
7129
- observer.value?.disconnect();
7130
- }
7131
- function resume() {
7132
- isPaused.value = false;
7133
- setup();
7134
- }
7135
- function stop() {
7136
- stopHydrationWatch?.();
7137
- stopHydrationWatch = void 0;
7138
- cleanup();
7139
- observer.value = null;
7140
- }
7141
- onScopeDispose(stop, true);
7142
6837
  return {
7143
- isActive: shallowReadonly(isActive),
7144
- isIntersecting: shallowReadonly(isIntersecting),
7145
- isPaused: shallowReadonly(isPaused),
7146
- pause,
7147
- resume,
7148
- stop
6838
+ ...createObserver(target, callback, {
6839
+ supports: SUPPORTS_INTERSECTION_OBSERVER,
6840
+ once: options.once,
6841
+ create: (cb) => new IntersectionObserver((entries) => {
6842
+ cb(entries.map((e) => ({
6843
+ boundingClientRect: e.boundingClientRect,
6844
+ intersectionRatio: e.intersectionRatio,
6845
+ intersectionRect: e.intersectionRect,
6846
+ isIntersecting: e.isIntersecting,
6847
+ rootBounds: e.rootBounds,
6848
+ target: e.target,
6849
+ time: e.time
6850
+ })));
6851
+ }, {
6852
+ root: options.root ?? null,
6853
+ rootMargin: options.rootMargin ?? "0px",
6854
+ threshold: options.threshold ?? 0
6855
+ }),
6856
+ observe: (obs, el) => obs.observe(el),
6857
+ onEntry: (entries) => {
6858
+ const latest = entries.at(-1);
6859
+ if (latest) isIntersecting.value = latest.isIntersecting;
6860
+ },
6861
+ onPause: () => {
6862
+ isIntersecting.value = false;
6863
+ },
6864
+ shouldStop: (entries) => entries.at(-1)?.isIntersecting ?? false,
6865
+ immediate: options.immediate ? (el) => {
6866
+ return [{
6867
+ boundingClientRect: el.getBoundingClientRect(),
6868
+ intersectionRatio: 0,
6869
+ intersectionRect: new DOMRect(0, 0, 0, 0),
6870
+ isIntersecting: false,
6871
+ rootBounds: null,
6872
+ target: el,
6873
+ time: performance.now()
6874
+ }];
6875
+ } : void 0
6876
+ }),
6877
+ isIntersecting: shallowReadonly(isIntersecting)
7149
6878
  };
7150
6879
  }
7151
6880
  /**
@@ -7469,11 +7198,6 @@ function usePrefersContrast() {
7469
7198
  * ```
7470
7199
  */
7471
7200
  function useMutationObserver(target, callback, options = {}) {
7472
- const { isHydrated } = useHydration();
7473
- const targetRef = toRef(target);
7474
- const observer = shallowRef();
7475
- const isPaused = shallowRef(false);
7476
- const isActive = toRef(() => !!observer.value);
7477
7201
  const observerOptions = {
7478
7202
  childList: options.childList ?? true,
7479
7203
  attributes: options.attributes ?? false,
@@ -7483,34 +7207,33 @@ function useMutationObserver(target, callback, options = {}) {
7483
7207
  characterDataOldValue: options.characterDataOldValue ?? false,
7484
7208
  attributeFilter: options.attributeFilter
7485
7209
  };
7486
- function setup() {
7487
- if (/* @__PURE__ */ isNull(observer.value)) return;
7488
- if (!isHydrated.value || !SUPPORTS_MUTATION_OBSERVER || !targetRef.value || isPaused.value) return;
7489
- observer.value = new MutationObserver((mutations) => {
7490
- callback(mutations.map((mutation) => ({
7491
- type: mutation.type,
7492
- target: mutation.target,
7493
- addedNodes: mutation.addedNodes,
7494
- removedNodes: mutation.removedNodes,
7495
- previousSibling: mutation.previousSibling,
7496
- nextSibling: mutation.nextSibling,
7497
- attributeName: mutation.attributeName,
7498
- attributeNamespace: mutation.attributeNamespace,
7499
- oldValue: mutation.oldValue
7210
+ return createObserver(target, callback, {
7211
+ supports: SUPPORTS_MUTATION_OBSERVER,
7212
+ once: options.once,
7213
+ create: (cb) => new MutationObserver((mutations) => {
7214
+ cb(mutations.map((m) => ({
7215
+ type: m.type,
7216
+ target: m.target,
7217
+ addedNodes: m.addedNodes,
7218
+ removedNodes: m.removedNodes,
7219
+ previousSibling: m.previousSibling,
7220
+ nextSibling: m.nextSibling,
7221
+ attributeName: m.attributeName,
7222
+ attributeNamespace: m.attributeNamespace,
7223
+ oldValue: m.oldValue
7500
7224
  })));
7501
- if (options.once) stop();
7502
- });
7503
- observer.value.observe(targetRef.value, observerOptions);
7504
- if (options.immediate) {
7225
+ }),
7226
+ observe: (obs, el) => obs.observe(el, observerOptions),
7227
+ immediate: options.immediate ? (el) => {
7505
7228
  const emptyNodeList = {
7506
7229
  length: 0,
7507
7230
  item: () => null,
7508
7231
  forEach: () => {},
7509
7232
  *[Symbol.iterator]() {}
7510
7233
  };
7511
- callback([{
7234
+ return [{
7512
7235
  type: "childList",
7513
- target: targetRef.value,
7236
+ target: el,
7514
7237
  addedNodes: emptyNodeList,
7515
7238
  removedNodes: emptyNodeList,
7516
7239
  previousSibling: null,
@@ -7518,50 +7241,10 @@ function useMutationObserver(target, callback, options = {}) {
7518
7241
  attributeName: null,
7519
7242
  attributeNamespace: null,
7520
7243
  oldValue: null
7521
- }]);
7522
- if (options.once) stop();
7523
- }
7524
- }
7525
- watch(() => targetRef.value, (el, oldEl) => {
7526
- if (oldEl || observer.value) cleanup();
7527
- if (isHydrated.value && el) setup();
7528
- }, { immediate: true });
7529
- let stopHydrationWatch;
7530
- if (!isHydrated.value) stopHydrationWatch = watch(() => isHydrated.value, (hydrated) => {
7531
- if (hydrated && targetRef.value && !observer.value) {
7532
- setup();
7533
- stopHydrationWatch?.();
7534
- stopHydrationWatch = void 0;
7535
- }
7244
+ }];
7245
+ } : void 0,
7246
+ onceIncludesImmediate: true
7536
7247
  });
7537
- function cleanup() {
7538
- if (observer.value) {
7539
- observer.value.disconnect();
7540
- observer.value = void 0;
7541
- }
7542
- }
7543
- function pause() {
7544
- isPaused.value = true;
7545
- observer.value?.disconnect();
7546
- }
7547
- function resume() {
7548
- isPaused.value = false;
7549
- setup();
7550
- }
7551
- function stop() {
7552
- stopHydrationWatch?.();
7553
- stopHydrationWatch = void 0;
7554
- cleanup();
7555
- observer.value = null;
7556
- }
7557
- onScopeDispose(stop, true);
7558
- return {
7559
- isActive: shallowReadonly(isActive),
7560
- isPaused: shallowReadonly(isPaused),
7561
- pause,
7562
- resume,
7563
- stop
7564
- };
7565
7248
  }
7566
7249
 
7567
7250
  //#endregion
@@ -8273,15 +7956,13 @@ function createPermissions(_options = {}) {
8273
7956
  * })
8274
7957
  * ```
8275
7958
  */
8276
- function createPermissionsContext(_options = {}) {
8277
- const { namespace = "v0:permissions", ...options } = _options;
8278
- const [usePermissionsContext, _providePermissionsContext] = createContext(namespace);
8279
- const context = createPermissions(options);
8280
- function providePermissionsContext(_context = context, app) {
8281
- return _providePermissionsContext(_context, app);
8282
- }
8283
- return createTrinity(usePermissionsContext, providePermissionsContext, context);
7959
+ function createPermissionsFallback() {
7960
+ return {
7961
+ size: 0,
7962
+ can: () => false
7963
+ };
8284
7964
  }
7965
+ const [createPermissionsContext, createPermissionsPlugin, usePermissions] = createPluginContext("v0:permissions", (options) => createPermissions(options), { fallback: () => createPermissionsFallback() });
8285
7966
  /**
8286
7967
  * Creates a new permissions plugin.
8287
7968
  *
@@ -8312,45 +7993,6 @@ function createPermissionsContext(_options = {}) {
8312
7993
  * app.mount('#app')
8313
7994
  * ```
8314
7995
  */
8315
- function createPermissionsPlugin(_options = {}) {
8316
- const { namespace = "v0:permissions", ...options } = _options;
8317
- const [, providePermissionContext, context] = createPermissionsContext({
8318
- ...options,
8319
- namespace
8320
- });
8321
- return createPlugin({
8322
- namespace,
8323
- provide: (app) => {
8324
- providePermissionContext(context, app);
8325
- }
8326
- });
8327
- }
8328
- /**
8329
- * Returns the current permissions instance.
8330
- *
8331
- * @template Z The type of the permission ticket.
8332
- * @returns The current permissions instance.
8333
- *
8334
- * @see https://0.vuetifyjs.com/composables/plugins/use-permissions
8335
- *
8336
- * @example
8337
- * ```vue
8338
- * <script setup lang="ts">
8339
- * import { usePermissions } from '@vuetify/v0'
8340
- *
8341
- * const { can } = usePermissions()
8342
- * <\/script>
8343
- *
8344
- * <template>
8345
- * <div>
8346
- * <p v-if="can('admin', 'read', 'users')">Admin access</p>
8347
- * </div>
8348
- * </template>
8349
- * ```
8350
- */
8351
- function usePermissions(namespace = "v0:permissions") {
8352
- return useContext(namespace);
8353
- }
8354
7996
 
8355
7997
  //#endregion
8356
7998
  //#region src/composables/createQueue/index.ts
@@ -9122,76 +8764,10 @@ function createStorage(options = {}) {
9122
8764
  clear
9123
8765
  };
9124
8766
  }
9125
- function createStorageContext(_options = {}) {
9126
- const { namespace = "v0:storage", ...options } = _options;
9127
- const [useStorageContext, _provideStorageContext] = createContext(namespace);
9128
- const context = createStorage(options);
9129
- function provideStorageContext(_context = context, app) {
9130
- return _provideStorageContext(_context, app);
9131
- }
9132
- return createTrinity(useStorageContext, provideStorageContext, context);
9133
- }
9134
- /**
9135
- * Creates a new storage plugin.
9136
- *
9137
- * @param options The options for the storage plugin.
9138
- * @returns A new storage plugin.
9139
- *
9140
- * @see https://0.vuetifyjs.com/composables/plugins/use-storage
9141
- *
9142
- * @example
9143
- * ```ts
9144
- * import { createApp } from 'vue'
9145
- * import { createStoragePlugin } from '@vuetify/v0'
9146
- * import App from './App.vue'
9147
- *
9148
- * const app = createApp(App)
9149
- *
9150
- * app.use(createStoragePlugin())
9151
- *
9152
- * app.mount('#app')
9153
- * ```
9154
- */
9155
- function createStoragePlugin(_options = {}) {
9156
- const { namespace = "v0:storage", ...options } = _options;
9157
- const [, provideStorageContext, context] = createStorageContext({
9158
- ...options,
9159
- namespace
9160
- });
9161
- return createPlugin({
9162
- namespace,
9163
- provide: (app) => {
9164
- provideStorageContext(context, app);
9165
- }
9166
- });
9167
- }
9168
- /**
9169
- * Returns the current storage instance.
9170
- *
9171
- * @param namespace The namespace for the storage context. Defaults to `'v0:storage'`.
9172
- * @returns The current storage instance.
9173
- *
9174
- * @see https://0.vuetifyjs.com/composables/plugins/use-storage
9175
- *
9176
- * @example
9177
- * ```vue
9178
- * <script setup lang="ts">
9179
- * import { useStorage } from '@vuetify/v0'
9180
- *
9181
- * const storage = useStorage()
9182
- * const username = storage.get('username', 'Guest')
9183
- * <\/script>
9184
- *
9185
- * <template>
9186
- * <div>
9187
- * <p>Username: {{ username }}</p>
9188
- * </div>
9189
- * </template>
9190
- * ```
9191
- */
9192
- function useStorage(namespace = "v0:storage") {
9193
- return useContext(namespace);
8767
+ function createStorageFallback() {
8768
+ return createStorage({ adapter: new MemoryAdapter() });
9194
8769
  }
8770
+ const [createStorageContext, createStoragePlugin, useStorage] = createPluginContext("v0:storage", (options) => createStorage(options), { fallback: () => createStorageFallback() });
9195
8771
 
9196
8772
  //#endregion
9197
8773
  //#region src/composables/useTheme/adapters/adapter.ts
@@ -9384,134 +8960,20 @@ function createTheme(_options = {}) {
9384
8960
  }
9385
8961
  };
9386
8962
  }
9387
- /**
9388
- * Creates a new theme context trinity.
9389
- *
9390
- * @param options The options for the theme context.
9391
- * @template Z The type of the theme ticket.
9392
- * @template E The type of the theme context.
9393
- * @returns A new theme context trinity.
9394
- *
9395
- * @see https://0.vuetifyjs.com/composables/plugins/use-theme
9396
- *
9397
- * @example
9398
- * ```ts
9399
- * import { createThemeContext } from '@vuetify/v0'
9400
- *
9401
- * export const [useThemeContext, provideThemeContext, context] = createThemeContext({
9402
- * namespace: 'v0:theme',
9403
- * default: 'light',
9404
- * themes: {
9405
- * light: {
9406
- * dark: false,
9407
- * colors: {
9408
- * primary: '#3b82f6',
9409
- * },
9410
- * },
9411
- * dark: {
9412
- * dark: true,
9413
- * colors: {
9414
- * primary: '#675496',
9415
- * },
9416
- * },
9417
- * },
9418
- * })
9419
- * ```
9420
- */
9421
- function createThemeContext(_options = {}) {
9422
- const { namespace = "v0:theme", ...options } = _options;
9423
- const [useThemeContext, _provideThemeContext] = createContext(namespace);
9424
- const context = createTheme(options);
9425
- function provideThemeContext(_context = context, app) {
9426
- return _provideThemeContext(_context, app);
9427
- }
9428
- return createTrinity(useThemeContext, provideThemeContext, context);
9429
- }
9430
- /**
9431
- * Creates a new theme plugin.
9432
- *
9433
- * @param options The options for the theme plugin.
9434
- * @template Z The type of the theme ticket.
9435
- * @template E The type of the theme context.
9436
- * @returns A new theme plugin.
9437
- *
9438
- * @see https://0.vuetifyjs.com/composables/plugins/use-theme
9439
- *
9440
- * @example
9441
- * ```ts
9442
- * import { createApp } from 'vue'
9443
- * import { createThemePlugin } from '@vuetify/v0'
9444
- * import App from './App.vue'
9445
- *
9446
- * const app = createApp(App)
9447
- *
9448
- * app.use(
9449
- * createThemePlugin({
9450
- * default: 'light',
9451
- * themes: {
9452
- * light: {
9453
- * dark: false,
9454
- * colors: {
9455
- * primary: '#3b82f6',
9456
- * },
9457
- * },
9458
- * dark: {
9459
- * dark: true,
9460
- * colors: {
9461
- * primary: '#675496',
9462
- * },
9463
- * },
9464
- * },
9465
- * })
9466
- * )
9467
- *
9468
- * app.mount('#app')
9469
- * ```
9470
- */
9471
- function createThemePlugin(_options = {}) {
9472
- const { adapter = new Vuetify0ThemeAdapter(), namespace = "v0:theme", palette = {}, themes = {}, target, ...options } = _options;
9473
- const [, provideThemeContext, context] = createThemeContext({
9474
- ...options,
9475
- namespace,
9476
- themes,
9477
- palette
9478
- });
9479
- return createPlugin({
9480
- namespace,
9481
- provide: (app) => {
9482
- provideThemeContext(context, app);
9483
- },
9484
- setup: (app) => {
9485
- adapter.setup(app, context, target);
9486
- }
9487
- });
9488
- }
9489
- /**
9490
- * Returns the current theme instance.
9491
- *
9492
- * @param namespace The namespace for the theme context. Defaults to `v0:theme`.
9493
- * @returns The current theme instance.
9494
- *
9495
- * @see https://0.vuetifyjs.com/composables/plugins/use-theme
9496
- *
9497
- * @example
9498
- * ```vue
9499
- * <script setup lang="ts">
9500
- * import { useTheme } from '@vuetify/v0'
9501
- *
9502
- * const theme = useTheme()
9503
- * <\/script>
9504
- *
9505
- * <template>
9506
- * <div>
9507
- * <p>Current theme: {{ theme.selected.value }}</p>
9508
- * </div>
9509
- * </template>
9510
- * ```
9511
- */
9512
- function useTheme(namespace = "v0:theme") {
9513
- return useContext(namespace);
8963
+ function createThemeFallback() {
8964
+ return {
8965
+ size: 0,
8966
+ colors: computed(() => ({})),
8967
+ isDark: shallowRef(false),
8968
+ cycle: () => {}
8969
+ };
9514
8970
  }
8971
+ const [createThemeContext, createThemePlugin, useTheme] = createPluginContext("v0:theme", (options) => createTheme(options), {
8972
+ fallback: () => createThemeFallback(),
8973
+ setup: (context, app, { adapter = new Vuetify0ThemeAdapter(), target }) => {
8974
+ adapter.setup(app, context, target);
8975
+ }
8976
+ });
9515
8977
 
9516
8978
  //#endregion
9517
8979
  //#region src/composables/createTimeline/index.ts
@@ -10456,7 +9918,7 @@ function useClickOutside(target, handler, options = {}) {
10456
9918
 
10457
9919
  //#endregion
10458
9920
  //#region src/components/Dialog/DialogContent.vue
10459
- const _sfc_main$36 = /* @__PURE__ */ defineComponent({
9921
+ const _sfc_main$42 = /* @__PURE__ */ defineComponent({
10460
9922
  name: "DialogContent",
10461
9923
  __name: "DialogContent",
10462
9924
  props: {
@@ -10538,11 +10000,11 @@ const _sfc_main$36 = /* @__PURE__ */ defineComponent({
10538
10000
  };
10539
10001
  }
10540
10002
  });
10541
- var DialogContent_default = _sfc_main$36;
10003
+ var DialogContent_default = _sfc_main$42;
10542
10004
 
10543
10005
  //#endregion
10544
10006
  //#region src/components/Dialog/DialogDescription.vue
10545
- const _sfc_main$35 = /* @__PURE__ */ defineComponent({
10007
+ const _sfc_main$41 = /* @__PURE__ */ defineComponent({
10546
10008
  name: "DialogDescription",
10547
10009
  __name: "DialogDescription",
10548
10010
  props: {
@@ -10561,11 +10023,11 @@ const _sfc_main$35 = /* @__PURE__ */ defineComponent({
10561
10023
  };
10562
10024
  }
10563
10025
  });
10564
- var DialogDescription_default = _sfc_main$35;
10026
+ var DialogDescription_default = _sfc_main$41;
10565
10027
 
10566
10028
  //#endregion
10567
10029
  //#region src/components/Dialog/DialogTitle.vue
10568
- const _sfc_main$34 = /* @__PURE__ */ defineComponent({
10030
+ const _sfc_main$40 = /* @__PURE__ */ defineComponent({
10569
10031
  name: "DialogTitle",
10570
10032
  __name: "DialogTitle",
10571
10033
  props: {
@@ -10584,11 +10046,11 @@ const _sfc_main$34 = /* @__PURE__ */ defineComponent({
10584
10046
  };
10585
10047
  }
10586
10048
  });
10587
- var DialogTitle_default = _sfc_main$34;
10049
+ var DialogTitle_default = _sfc_main$40;
10588
10050
 
10589
10051
  //#endregion
10590
10052
  //#region src/components/Dialog/DialogActivator.vue
10591
- const _sfc_main$33 = /* @__PURE__ */ defineComponent({
10053
+ const _sfc_main$39 = /* @__PURE__ */ defineComponent({
10592
10054
  name: "DialogActivator",
10593
10055
  __name: "DialogActivator",
10594
10056
  props: {
@@ -10618,7 +10080,7 @@ const _sfc_main$33 = /* @__PURE__ */ defineComponent({
10618
10080
  };
10619
10081
  }
10620
10082
  });
10621
- var DialogActivator_default = _sfc_main$33;
10083
+ var DialogActivator_default = _sfc_main$39;
10622
10084
 
10623
10085
  //#endregion
10624
10086
  //#region src/components/Dialog/index.ts
@@ -10663,7 +10125,7 @@ const Dialog = {
10663
10125
  //#endregion
10664
10126
  //#region src/components/ExpansionPanel/ExpansionPanelRoot.vue
10665
10127
  const [useExpansionPanelRoot, provideExpansionPanelRoot] = createContext();
10666
- const _sfc_main$32 = /* @__PURE__ */ defineComponent({
10128
+ const _sfc_main$38 = /* @__PURE__ */ defineComponent({
10667
10129
  name: "ExpansionPanelRoot",
10668
10130
  __name: "ExpansionPanelRoot",
10669
10131
  props: /* @__PURE__ */ mergeModels({
@@ -10720,12 +10182,12 @@ const _sfc_main$32 = /* @__PURE__ */ defineComponent({
10720
10182
  };
10721
10183
  }
10722
10184
  });
10723
- var ExpansionPanelRoot_default = _sfc_main$32;
10185
+ var ExpansionPanelRoot_default = _sfc_main$38;
10724
10186
 
10725
10187
  //#endregion
10726
10188
  //#region src/components/ExpansionPanel/ExpansionPanelItem.vue
10727
10189
  const [useExpansionPanelItem, provideExpansionPanelItem] = createContext({ suffix: "item" });
10728
- const _sfc_main$31 = /* @__PURE__ */ defineComponent({
10190
+ const _sfc_main$37 = /* @__PURE__ */ defineComponent({
10729
10191
  name: "ExpansionPanelItem",
10730
10192
  __name: "ExpansionPanelItem",
10731
10193
  props: {
@@ -10769,11 +10231,11 @@ const _sfc_main$31 = /* @__PURE__ */ defineComponent({
10769
10231
  };
10770
10232
  }
10771
10233
  });
10772
- var ExpansionPanelItem_default = _sfc_main$31;
10234
+ var ExpansionPanelItem_default = _sfc_main$37;
10773
10235
 
10774
10236
  //#endregion
10775
10237
  //#region src/components/ExpansionPanel/ExpansionPanelActivator.vue
10776
- const _sfc_main$30 = /* @__PURE__ */ defineComponent({
10238
+ const _sfc_main$36 = /* @__PURE__ */ defineComponent({
10777
10239
  name: "ExpansionPanelActivator",
10778
10240
  __name: "ExpansionPanelActivator",
10779
10241
  props: {
@@ -10819,11 +10281,11 @@ const _sfc_main$30 = /* @__PURE__ */ defineComponent({
10819
10281
  };
10820
10282
  }
10821
10283
  });
10822
- var ExpansionPanelActivator_default = _sfc_main$30;
10284
+ var ExpansionPanelActivator_default = _sfc_main$36;
10823
10285
 
10824
10286
  //#endregion
10825
10287
  //#region src/components/ExpansionPanel/ExpansionPanelContent.vue
10826
- const _sfc_main$29 = /* @__PURE__ */ defineComponent({
10288
+ const _sfc_main$35 = /* @__PURE__ */ defineComponent({
10827
10289
  name: "ExpansionPanelContent",
10828
10290
  __name: "ExpansionPanelContent",
10829
10291
  props: {
@@ -10854,11 +10316,11 @@ const _sfc_main$29 = /* @__PURE__ */ defineComponent({
10854
10316
  };
10855
10317
  }
10856
10318
  });
10857
- var ExpansionPanelContent_default = _sfc_main$29;
10319
+ var ExpansionPanelContent_default = _sfc_main$35;
10858
10320
 
10859
10321
  //#endregion
10860
10322
  //#region src/components/ExpansionPanel/ExpansionPanelHeader.vue
10861
- const _sfc_main$28 = /* @__PURE__ */ defineComponent({
10323
+ const _sfc_main$34 = /* @__PURE__ */ defineComponent({
10862
10324
  name: "ExpansionPanelHeader",
10863
10325
  __name: "ExpansionPanelHeader",
10864
10326
  props: {
@@ -10883,7 +10345,7 @@ const _sfc_main$28 = /* @__PURE__ */ defineComponent({
10883
10345
  };
10884
10346
  }
10885
10347
  });
10886
- var ExpansionPanelHeader_default = _sfc_main$28;
10348
+ var ExpansionPanelHeader_default = _sfc_main$34;
10887
10349
 
10888
10350
  //#endregion
10889
10351
  //#region src/components/ExpansionPanel/index.ts
@@ -10903,7 +10365,7 @@ const ExpansionPanel = {
10903
10365
  //#endregion
10904
10366
  //#region src/components/Group/GroupRoot.vue
10905
10367
  const [useGroupRoot, provideGroupRoot] = createContext();
10906
- const _sfc_main$27 = /* @__PURE__ */ defineComponent({
10368
+ const _sfc_main$33 = /* @__PURE__ */ defineComponent({
10907
10369
  name: "GroupRoot",
10908
10370
  __name: "GroupRoot",
10909
10371
  props: /* @__PURE__ */ mergeModels({
@@ -10953,11 +10415,11 @@ const _sfc_main$27 = /* @__PURE__ */ defineComponent({
10953
10415
  };
10954
10416
  }
10955
10417
  });
10956
- var GroupRoot_default = _sfc_main$27;
10418
+ var GroupRoot_default = _sfc_main$33;
10957
10419
 
10958
10420
  //#endregion
10959
10421
  //#region src/components/Group/GroupItem.vue
10960
- const _sfc_main$26 = /* @__PURE__ */ defineComponent({
10422
+ const _sfc_main$32 = /* @__PURE__ */ defineComponent({
10961
10423
  name: "GroupItem",
10962
10424
  __name: "GroupItem",
10963
10425
  props: {
@@ -11006,7 +10468,7 @@ const _sfc_main$26 = /* @__PURE__ */ defineComponent({
11006
10468
  };
11007
10469
  }
11008
10470
  });
11009
- var GroupItem_default = _sfc_main$26;
10471
+ var GroupItem_default = _sfc_main$32;
11010
10472
 
11011
10473
  //#endregion
11012
10474
  //#region src/components/Group/index.ts
@@ -11025,7 +10487,7 @@ const Group = {
11025
10487
  const [usePaginationRoot, providePaginationRoot] = createContext();
11026
10488
  const [usePaginationControls, providePaginationControls] = createContext({ suffix: "controls" });
11027
10489
  const [usePaginationItems, providePaginationItems] = createContext({ suffix: "items" });
11028
- const _sfc_main$25 = /* @__PURE__ */ defineComponent({
10490
+ const _sfc_main$31 = /* @__PURE__ */ defineComponent({
11029
10491
  name: "PaginationRoot",
11030
10492
  __name: "PaginationRoot",
11031
10493
  props: /* @__PURE__ */ mergeModels({
@@ -11125,11 +10587,11 @@ const _sfc_main$25 = /* @__PURE__ */ defineComponent({
11125
10587
  };
11126
10588
  }
11127
10589
  });
11128
- var PaginationRoot_default = _sfc_main$25;
10590
+ var PaginationRoot_default = _sfc_main$31;
11129
10591
 
11130
10592
  //#endregion
11131
10593
  //#region src/components/Pagination/PaginationEllipsis.vue
11132
- const _sfc_main$24 = /* @__PURE__ */ defineComponent({
10594
+ const _sfc_main$30 = /* @__PURE__ */ defineComponent({
11133
10595
  name: "PaginationEllipsis",
11134
10596
  __name: "PaginationEllipsis",
11135
10597
  props: {
@@ -11170,11 +10632,11 @@ const _sfc_main$24 = /* @__PURE__ */ defineComponent({
11170
10632
  };
11171
10633
  }
11172
10634
  });
11173
- var PaginationEllipsis_default = _sfc_main$24;
10635
+ var PaginationEllipsis_default = _sfc_main$30;
11174
10636
 
11175
10637
  //#endregion
11176
10638
  //#region src/components/Pagination/PaginationFirst.vue
11177
- const _sfc_main$23 = /* @__PURE__ */ defineComponent({
10639
+ const _sfc_main$29 = /* @__PURE__ */ defineComponent({
11178
10640
  name: "PaginationFirst",
11179
10641
  __name: "PaginationFirst",
11180
10642
  props: {
@@ -11229,11 +10691,11 @@ const _sfc_main$23 = /* @__PURE__ */ defineComponent({
11229
10691
  };
11230
10692
  }
11231
10693
  });
11232
- var PaginationFirst_default = _sfc_main$23;
10694
+ var PaginationFirst_default = _sfc_main$29;
11233
10695
 
11234
10696
  //#endregion
11235
10697
  //#region src/components/Pagination/PaginationItem.vue
11236
- const _sfc_main$22 = /* @__PURE__ */ defineComponent({
10698
+ const _sfc_main$28 = /* @__PURE__ */ defineComponent({
11237
10699
  name: "PaginationItem",
11238
10700
  __name: "PaginationItem",
11239
10701
  props: {
@@ -11299,11 +10761,11 @@ const _sfc_main$22 = /* @__PURE__ */ defineComponent({
11299
10761
  };
11300
10762
  }
11301
10763
  });
11302
- var PaginationItem_default = _sfc_main$22;
10764
+ var PaginationItem_default = _sfc_main$28;
11303
10765
 
11304
10766
  //#endregion
11305
10767
  //#region src/components/Pagination/PaginationLast.vue
11306
- const _sfc_main$21 = /* @__PURE__ */ defineComponent({
10768
+ const _sfc_main$27 = /* @__PURE__ */ defineComponent({
11307
10769
  name: "PaginationLast",
11308
10770
  __name: "PaginationLast",
11309
10771
  props: {
@@ -11358,11 +10820,11 @@ const _sfc_main$21 = /* @__PURE__ */ defineComponent({
11358
10820
  };
11359
10821
  }
11360
10822
  });
11361
- var PaginationLast_default = _sfc_main$21;
10823
+ var PaginationLast_default = _sfc_main$27;
11362
10824
 
11363
10825
  //#endregion
11364
10826
  //#region src/components/Pagination/PaginationNext.vue
11365
- const _sfc_main$20 = /* @__PURE__ */ defineComponent({
10827
+ const _sfc_main$26 = /* @__PURE__ */ defineComponent({
11366
10828
  name: "PaginationNext",
11367
10829
  __name: "PaginationNext",
11368
10830
  props: {
@@ -11417,11 +10879,11 @@ const _sfc_main$20 = /* @__PURE__ */ defineComponent({
11417
10879
  };
11418
10880
  }
11419
10881
  });
11420
- var PaginationNext_default = _sfc_main$20;
10882
+ var PaginationNext_default = _sfc_main$26;
11421
10883
 
11422
10884
  //#endregion
11423
10885
  //#region src/components/Pagination/PaginationPrev.vue
11424
- const _sfc_main$19 = /* @__PURE__ */ defineComponent({
10886
+ const _sfc_main$25 = /* @__PURE__ */ defineComponent({
11425
10887
  name: "PaginationPrev",
11426
10888
  __name: "PaginationPrev",
11427
10889
  props: {
@@ -11476,11 +10938,11 @@ const _sfc_main$19 = /* @__PURE__ */ defineComponent({
11476
10938
  };
11477
10939
  }
11478
10940
  });
11479
- var PaginationPrev_default = _sfc_main$19;
10941
+ var PaginationPrev_default = _sfc_main$25;
11480
10942
 
11481
10943
  //#endregion
11482
10944
  //#region src/components/Pagination/PaginationStatus.vue
11483
- const _sfc_main$18 = /* @__PURE__ */ defineComponent({
10945
+ const _sfc_main$24 = /* @__PURE__ */ defineComponent({
11484
10946
  name: "PaginationStatus",
11485
10947
  __name: "PaginationStatus",
11486
10948
  props: {
@@ -11524,7 +10986,7 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
11524
10986
  };
11525
10987
  }
11526
10988
  });
11527
- var PaginationStatus_default = _sfc_main$18;
10989
+ var PaginationStatus_default = _sfc_main$24;
11528
10990
 
11529
10991
  //#endregion
11530
10992
  //#region src/components/Pagination/index.ts
@@ -11547,7 +11009,7 @@ const Pagination = {
11547
11009
  //#endregion
11548
11010
  //#region src/components/Popover/PopoverRoot.vue
11549
11011
  const [usePopoverContext, providePopoverContext] = createContext("Popover");
11550
- const _sfc_main$17 = /* @__PURE__ */ defineComponent({
11012
+ const _sfc_main$23 = /* @__PURE__ */ defineComponent({
11551
11013
  name: "PopoverRoot",
11552
11014
  __name: "PopoverRoot",
11553
11015
  props: /* @__PURE__ */ mergeModels({
@@ -11589,11 +11051,11 @@ const _sfc_main$17 = /* @__PURE__ */ defineComponent({
11589
11051
  };
11590
11052
  }
11591
11053
  });
11592
- var PopoverRoot_default = _sfc_main$17;
11054
+ var PopoverRoot_default = _sfc_main$23;
11593
11055
 
11594
11056
  //#endregion
11595
11057
  //#region src/components/Popover/PopoverActivator.vue
11596
- const _sfc_main$16 = /* @__PURE__ */ defineComponent({
11058
+ const _sfc_main$22 = /* @__PURE__ */ defineComponent({
11597
11059
  name: "PopoverActivator",
11598
11060
  __name: "PopoverActivator",
11599
11061
  props: {
@@ -11625,11 +11087,11 @@ const _sfc_main$16 = /* @__PURE__ */ defineComponent({
11625
11087
  };
11626
11088
  }
11627
11089
  });
11628
- var PopoverActivator_default = _sfc_main$16;
11090
+ var PopoverActivator_default = _sfc_main$22;
11629
11091
 
11630
11092
  //#endregion
11631
11093
  //#region src/components/Popover/PopoverContent.vue
11632
- const _sfc_main$15 = /* @__PURE__ */ defineComponent({
11094
+ const _sfc_main$21 = /* @__PURE__ */ defineComponent({
11633
11095
  name: "PopoverContent",
11634
11096
  __name: "PopoverContent",
11635
11097
  props: {
@@ -11696,7 +11158,7 @@ const _sfc_main$15 = /* @__PURE__ */ defineComponent({
11696
11158
  };
11697
11159
  }
11698
11160
  });
11699
- var PopoverContent_default = _sfc_main$15;
11161
+ var PopoverContent_default = _sfc_main$21;
11700
11162
 
11701
11163
  //#endregion
11702
11164
  //#region src/components/Popover/index.ts
@@ -11714,7 +11176,7 @@ const Popover = {
11714
11176
  //#endregion
11715
11177
  //#region src/components/Radio/RadioGroup.vue
11716
11178
  const [useRadioGroup, provideRadioGroup] = createContext();
11717
- const _sfc_main$14 = /* @__PURE__ */ defineComponent({
11179
+ const _sfc_main$20 = /* @__PURE__ */ defineComponent({
11718
11180
  name: "RadioGroup",
11719
11181
  __name: "RadioGroup",
11720
11182
  props: /* @__PURE__ */ mergeModels({
@@ -11776,12 +11238,12 @@ const _sfc_main$14 = /* @__PURE__ */ defineComponent({
11776
11238
  };
11777
11239
  }
11778
11240
  });
11779
- var RadioGroup_default = _sfc_main$14;
11241
+ var RadioGroup_default = _sfc_main$20;
11780
11242
 
11781
11243
  //#endregion
11782
11244
  //#region src/components/Radio/RadioRoot.vue
11783
11245
  const [useRadioRoot, provideRadioRoot] = createContext();
11784
- const _sfc_main$13 = /* @__PURE__ */ defineComponent({
11246
+ const _sfc_main$19 = /* @__PURE__ */ defineComponent({
11785
11247
  name: "RadioRoot",
11786
11248
  inheritAttrs: false,
11787
11249
  __name: "RadioRoot",
@@ -11906,18 +11368,18 @@ const _sfc_main$13 = /* @__PURE__ */ defineComponent({
11906
11368
  };
11907
11369
  }
11908
11370
  });
11909
- var RadioRoot_default = _sfc_main$13;
11371
+ var RadioRoot_default = _sfc_main$19;
11910
11372
 
11911
11373
  //#endregion
11912
11374
  //#region src/components/Radio/RadioHiddenInput.vue
11913
- const _hoisted_1 = [
11375
+ const _hoisted_1$1 = [
11914
11376
  "checked",
11915
11377
  "disabled",
11916
11378
  "form",
11917
11379
  "name",
11918
11380
  "value"
11919
11381
  ];
11920
- const visuallyHiddenStyle = {
11382
+ const visuallyHiddenStyle$1 = {
11921
11383
  position: "absolute",
11922
11384
  width: "1px",
11923
11385
  height: "1px",
@@ -11928,7 +11390,7 @@ const visuallyHiddenStyle = {
11928
11390
  whiteSpace: "nowrap",
11929
11391
  border: "0"
11930
11392
  };
11931
- const _sfc_main$12 = /* @__PURE__ */ defineComponent({
11393
+ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
11932
11394
  name: "RadioHiddenInput",
11933
11395
  __name: "RadioHiddenInput",
11934
11396
  props: {
@@ -11955,19 +11417,19 @@ const _sfc_main$12 = /* @__PURE__ */ defineComponent({
11955
11417
  form: form.value,
11956
11418
  inert: "",
11957
11419
  name: name.value,
11958
- style: visuallyHiddenStyle,
11420
+ style: visuallyHiddenStyle$1,
11959
11421
  tabindex: "-1",
11960
11422
  type: "radio",
11961
11423
  value: value.value
11962
- }, null, 8, _hoisted_1);
11424
+ }, null, 8, _hoisted_1$1);
11963
11425
  };
11964
11426
  }
11965
11427
  });
11966
- var RadioHiddenInput_default = _sfc_main$12;
11428
+ var RadioHiddenInput_default = _sfc_main$18;
11967
11429
 
11968
11430
  //#endregion
11969
11431
  //#region src/components/Radio/RadioIndicator.vue
11970
- const _sfc_main$11 = /* @__PURE__ */ defineComponent({
11432
+ const _sfc_main$17 = /* @__PURE__ */ defineComponent({
11971
11433
  name: "RadioIndicator",
11972
11434
  __name: "RadioIndicator",
11973
11435
  props: {
@@ -11997,7 +11459,7 @@ const _sfc_main$11 = /* @__PURE__ */ defineComponent({
11997
11459
  };
11998
11460
  }
11999
11461
  });
12000
- var RadioIndicator_default = _sfc_main$11;
11462
+ var RadioIndicator_default = _sfc_main$17;
12001
11463
 
12002
11464
  //#endregion
12003
11465
  //#region src/components/Radio/index.ts
@@ -12042,7 +11504,7 @@ const Radio = {
12042
11504
 
12043
11505
  //#endregion
12044
11506
  //#region src/components/Scrim/Scrim.vue
12045
- const _sfc_main$10 = /* @__PURE__ */ defineComponent({
11507
+ const _sfc_main$16 = /* @__PURE__ */ defineComponent({
12046
11508
  name: "Scrim",
12047
11509
  inheritAttrs: false,
12048
11510
  __name: "Scrim",
@@ -12117,12 +11579,12 @@ const _sfc_main$10 = /* @__PURE__ */ defineComponent({
12117
11579
  };
12118
11580
  }
12119
11581
  });
12120
- var Scrim_default = _sfc_main$10;
11582
+ var Scrim_default = _sfc_main$16;
12121
11583
 
12122
11584
  //#endregion
12123
11585
  //#region src/components/Selection/SelectionRoot.vue
12124
11586
  const [useSelectionRoot, provideSelectionRoot] = createContext();
12125
- const _sfc_main$9 = /* @__PURE__ */ defineComponent({
11587
+ const _sfc_main$15 = /* @__PURE__ */ defineComponent({
12126
11588
  name: "SelectionRoot",
12127
11589
  __name: "SelectionRoot",
12128
11590
  props: /* @__PURE__ */ mergeModels({
@@ -12172,11 +11634,11 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
12172
11634
  };
12173
11635
  }
12174
11636
  });
12175
- var SelectionRoot_default = _sfc_main$9;
11637
+ var SelectionRoot_default = _sfc_main$15;
12176
11638
 
12177
11639
  //#endregion
12178
11640
  //#region src/components/Selection/SelectionItem.vue
12179
- const _sfc_main$8 = /* @__PURE__ */ defineComponent({
11641
+ const _sfc_main$14 = /* @__PURE__ */ defineComponent({
12180
11642
  name: "SelectionItem",
12181
11643
  __name: "SelectionItem",
12182
11644
  props: {
@@ -12218,7 +11680,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
12218
11680
  };
12219
11681
  }
12220
11682
  });
12221
- var SelectionItem_default = _sfc_main$8;
11683
+ var SelectionItem_default = _sfc_main$14;
12222
11684
 
12223
11685
  //#endregion
12224
11686
  //#region src/components/Selection/index.ts
@@ -12232,6 +11694,471 @@ const Selection = {
12232
11694
  Item: SelectionItem_default
12233
11695
  };
12234
11696
 
11697
+ //#endregion
11698
+ //#region src/components/Switch/SwitchGroup.vue
11699
+ const [useSwitchGroup, provideSwitchGroup] = createContext();
11700
+ const _sfc_main$13 = /* @__PURE__ */ defineComponent({
11701
+ name: "SwitchGroup",
11702
+ __name: "SwitchGroup",
11703
+ props: /* @__PURE__ */ mergeModels({
11704
+ namespace: { default: "v0:switch:group" },
11705
+ disabled: {
11706
+ type: Boolean,
11707
+ default: false
11708
+ },
11709
+ enroll: {
11710
+ type: Boolean,
11711
+ default: false
11712
+ },
11713
+ mandatory: {
11714
+ type: [Boolean, String],
11715
+ default: false
11716
+ },
11717
+ label: {},
11718
+ ariaLabelledby: {},
11719
+ ariaDescribedby: {},
11720
+ as: { default: "div" },
11721
+ renderless: { type: Boolean }
11722
+ }, {
11723
+ "modelValue": {},
11724
+ "modelModifiers": {}
11725
+ }),
11726
+ emits: /* @__PURE__ */ mergeModels(["update:model-value"], ["update:modelValue"]),
11727
+ setup(__props) {
11728
+ const model = useModel(__props, "modelValue");
11729
+ const group = createGroup({
11730
+ disabled: toRef(() => __props.disabled),
11731
+ enroll: __props.enroll,
11732
+ mandatory: __props.mandatory,
11733
+ events: true
11734
+ });
11735
+ useProxyModel(group, model, { multiple: true });
11736
+ provideSwitchGroup(__props.namespace, group);
11737
+ const slotProps = toRef(() => ({
11738
+ isDisabled: toValue(group.disabled),
11739
+ isNoneSelected: group.isNoneSelected.value,
11740
+ isAllSelected: group.isAllSelected.value,
11741
+ isMixed: group.isMixed.value,
11742
+ select: group.select,
11743
+ unselect: group.unselect,
11744
+ toggle: group.toggle,
11745
+ selectAll: group.selectAll,
11746
+ unselectAll: group.unselectAll,
11747
+ toggleAll: group.toggleAll,
11748
+ attrs: {
11749
+ "role": "group",
11750
+ "aria-label": __props.label || void 0,
11751
+ "aria-labelledby": __props.ariaLabelledby || void 0,
11752
+ "aria-describedby": __props.ariaDescribedby || void 0
11753
+ }
11754
+ }));
11755
+ return (_ctx, _cache) => {
11756
+ return openBlock(), createBlock(unref(Atom_default), mergeProps(slotProps.value.attrs, {
11757
+ as: __props.as,
11758
+ renderless: __props.renderless
11759
+ }), {
11760
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
11761
+ _: 3
11762
+ }, 16, ["as", "renderless"]);
11763
+ };
11764
+ }
11765
+ });
11766
+ var SwitchGroup_default = _sfc_main$13;
11767
+
11768
+ //#endregion
11769
+ //#region src/components/Switch/SwitchRoot.vue
11770
+ const [useSwitchRoot, provideSwitchRoot] = createContext();
11771
+ const _sfc_main$12 = /* @__PURE__ */ defineComponent({
11772
+ name: "SwitchRoot",
11773
+ inheritAttrs: false,
11774
+ __name: "SwitchRoot",
11775
+ props: /* @__PURE__ */ mergeModels({
11776
+ id: { default: () => useId$1() },
11777
+ label: {},
11778
+ value: {},
11779
+ name: {},
11780
+ form: {},
11781
+ disabled: { default: false },
11782
+ indeterminate: { default: false },
11783
+ namespace: { default: "v0:switch:root" },
11784
+ groupNamespace: { default: "v0:switch:group" },
11785
+ ariaLabelledby: {},
11786
+ ariaDescribedby: {},
11787
+ ariaInvalid: { type: Boolean },
11788
+ as: { default: "button" },
11789
+ renderless: { type: Boolean }
11790
+ }, {
11791
+ "modelValue": { type: Boolean },
11792
+ "modelModifiers": {}
11793
+ }),
11794
+ emits: /* @__PURE__ */ mergeModels(["update:model-value"], ["update:modelValue"]),
11795
+ setup(__props) {
11796
+ const attrs = useAttrs();
11797
+ let group = null;
11798
+ try {
11799
+ group = useSwitchGroup(__props.groupNamespace);
11800
+ } catch {}
11801
+ const model = useModel(__props, "modelValue");
11802
+ const ticket = group?.register({
11803
+ id: __props.id,
11804
+ value: __props.value,
11805
+ disabled: __props.disabled,
11806
+ indeterminate: __props.indeterminate
11807
+ });
11808
+ const isChecked = toRef(() => ticket ? toValue(ticket.isSelected) : model.value ?? false);
11809
+ const isMixed = toRef(() => ticket ? toValue(ticket.isMixed) : toValue(__props.indeterminate) ?? false);
11810
+ const isDisabled = toRef(() => group && ticket ? toValue(ticket.disabled) || toValue(group.disabled) : toValue(__props.disabled) ?? false);
11811
+ const dataState = toRef(() => isMixed.value ? "indeterminate" : isChecked.value ? "checked" : "unchecked");
11812
+ function toggle() {
11813
+ if (isDisabled.value) return;
11814
+ if (ticket) ticket.toggle();
11815
+ else model.value = !model.value;
11816
+ }
11817
+ function select() {
11818
+ if (isDisabled.value) return;
11819
+ if (ticket) ticket.select();
11820
+ else model.value = true;
11821
+ }
11822
+ function unselect() {
11823
+ if (isDisabled.value) return;
11824
+ if (ticket) ticket.unselect();
11825
+ else model.value = false;
11826
+ }
11827
+ function mix() {
11828
+ if (isDisabled.value || !ticket) return;
11829
+ ticket.mix();
11830
+ }
11831
+ function unmix() {
11832
+ if (isDisabled.value || !ticket) return;
11833
+ ticket.unmix();
11834
+ }
11835
+ function onClick() {
11836
+ toggle();
11837
+ }
11838
+ function onKeydown(e) {
11839
+ if (e.key !== " ") return;
11840
+ e.preventDefault();
11841
+ toggle();
11842
+ }
11843
+ onUnmounted(() => {
11844
+ if (!ticket || !group) return;
11845
+ group.unregister(ticket.id);
11846
+ });
11847
+ const context = {
11848
+ id: __props.id,
11849
+ label: __props.label,
11850
+ value: __props.value,
11851
+ name: __props.name,
11852
+ form: __props.form,
11853
+ isChecked,
11854
+ isMixed,
11855
+ isDisabled,
11856
+ select,
11857
+ unselect,
11858
+ toggle,
11859
+ mix,
11860
+ unmix
11861
+ };
11862
+ provideSwitchRoot(__props.namespace, context);
11863
+ const slotProps = toRef(() => ({
11864
+ id: __props.id,
11865
+ label: __props.label,
11866
+ value: __props.value,
11867
+ isChecked: isChecked.value,
11868
+ isMixed: isMixed.value,
11869
+ isDisabled: isDisabled.value,
11870
+ select,
11871
+ unselect,
11872
+ toggle,
11873
+ mix,
11874
+ unmix,
11875
+ attrs: {
11876
+ "type": __props.as === "button" ? "button" : void 0,
11877
+ "role": "switch",
11878
+ "aria-checked": isMixed.value ? "mixed" : isChecked.value,
11879
+ "aria-disabled": isDisabled.value || void 0,
11880
+ "aria-label": __props.label || void 0,
11881
+ "aria-labelledby": __props.ariaLabelledby || void 0,
11882
+ "aria-describedby": __props.ariaDescribedby || void 0,
11883
+ "aria-invalid": __props.ariaInvalid || void 0,
11884
+ "tabindex": isDisabled.value ? void 0 : 0,
11885
+ "data-state": dataState.value,
11886
+ "data-disabled": isDisabled.value ? true : void 0
11887
+ }
11888
+ }));
11889
+ return (_ctx, _cache) => {
11890
+ return openBlock(), createElementBlock(Fragment, null, [createVNode(unref(Atom_default), mergeProps({
11891
+ ...unref(attrs),
11892
+ ...slotProps.value.attrs
11893
+ }, {
11894
+ as: __props.as,
11895
+ renderless: __props.renderless,
11896
+ onClick,
11897
+ onKeydown
11898
+ }), {
11899
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
11900
+ _: 3
11901
+ }, 16, ["as", "renderless"]), __props.name ? (openBlock(), createBlock(SwitchHiddenInput_default, { key: 0 })) : createCommentVNode("v-if", true)], 64);
11902
+ };
11903
+ }
11904
+ });
11905
+ var SwitchRoot_default = _sfc_main$12;
11906
+
11907
+ //#endregion
11908
+ //#region src/components/Switch/SwitchHiddenInput.vue
11909
+ const _hoisted_1 = [
11910
+ "checked",
11911
+ "disabled",
11912
+ "form",
11913
+ "name",
11914
+ "value"
11915
+ ];
11916
+ const visuallyHiddenStyle = {
11917
+ position: "absolute",
11918
+ width: "1px",
11919
+ height: "1px",
11920
+ padding: "0",
11921
+ margin: "-1px",
11922
+ overflow: "hidden",
11923
+ clip: "rect(0, 0, 0, 0)",
11924
+ whiteSpace: "nowrap",
11925
+ border: "0"
11926
+ };
11927
+ const _sfc_main$11 = /* @__PURE__ */ defineComponent({
11928
+ name: "SwitchHiddenInput",
11929
+ __name: "SwitchHiddenInput",
11930
+ props: {
11931
+ namespace: { default: "v0:switch:root" },
11932
+ name: {},
11933
+ value: {},
11934
+ form: {}
11935
+ },
11936
+ setup(__props) {
11937
+ const root = useSwitchRoot(__props.namespace);
11938
+ const name = toRef(() => __props.name ?? root.name);
11939
+ const form = toRef(() => __props.form ?? root.form);
11940
+ const value = toRef(() => {
11941
+ const v = __props.value ?? root.value ?? "on";
11942
+ if (/* @__PURE__ */ isNullOrUndefined(v)) return "on";
11943
+ if (/* @__PURE__ */ isObject(v)) return JSON.stringify(v);
11944
+ return String(v);
11945
+ });
11946
+ const isChecked = root.isChecked;
11947
+ const isDisabled = root.isDisabled;
11948
+ return (_ctx, _cache) => {
11949
+ return openBlock(), createElementBlock("input", {
11950
+ checked: unref(isChecked),
11951
+ disabled: unref(isDisabled),
11952
+ form: form.value,
11953
+ inert: "",
11954
+ name: name.value,
11955
+ style: visuallyHiddenStyle,
11956
+ tabindex: "-1",
11957
+ type: "checkbox",
11958
+ value: value.value
11959
+ }, null, 8, _hoisted_1);
11960
+ };
11961
+ }
11962
+ });
11963
+ var SwitchHiddenInput_default = _sfc_main$11;
11964
+
11965
+ //#endregion
11966
+ //#region src/components/Switch/SwitchSelectAll.vue
11967
+ const _sfc_main$10 = /* @__PURE__ */ defineComponent({
11968
+ name: "SwitchSelectAll",
11969
+ inheritAttrs: false,
11970
+ __name: "SwitchSelectAll",
11971
+ props: {
11972
+ label: {},
11973
+ disabled: { type: Boolean },
11974
+ namespace: {},
11975
+ groupNamespace: {},
11976
+ ariaLabelledby: {},
11977
+ ariaDescribedby: {},
11978
+ as: {},
11979
+ renderless: { type: Boolean }
11980
+ },
11981
+ setup(__props) {
11982
+ const attrs = useAttrs();
11983
+ const props = __props;
11984
+ const { as = "button", renderless, label, namespace = "v0:switch:root", groupNamespace = "v0:switch:group" } = props;
11985
+ const group = useSwitchGroup(groupNamespace);
11986
+ const id = useId$1();
11987
+ const isAllSelected = toRef(() => group.isAllSelected.value);
11988
+ const isMixed = toRef(() => group.isMixed.value);
11989
+ const isDisabled = toRef(() => toValue(props.disabled) || toValue(group.disabled));
11990
+ const dataState = toRef(() => isMixed.value ? "indeterminate" : isAllSelected.value ? "checked" : "unchecked");
11991
+ function onClick() {
11992
+ if (isDisabled.value) return;
11993
+ group.toggleAll();
11994
+ }
11995
+ function onKeydown(e) {
11996
+ if (e.key !== " ") return;
11997
+ e.preventDefault();
11998
+ if (isDisabled.value) return;
11999
+ group.toggleAll();
12000
+ }
12001
+ provideSwitchRoot(namespace, {
12002
+ id,
12003
+ label,
12004
+ value: void 0,
12005
+ name: void 0,
12006
+ form: void 0,
12007
+ isChecked: isAllSelected,
12008
+ isMixed,
12009
+ isDisabled,
12010
+ select: group.selectAll,
12011
+ unselect: group.unselectAll,
12012
+ toggle: group.toggleAll,
12013
+ mix: () => {},
12014
+ unmix: () => {}
12015
+ });
12016
+ const slotProps = toRef(() => ({
12017
+ label,
12018
+ isAllSelected: isAllSelected.value,
12019
+ isMixed: isMixed.value,
12020
+ isDisabled: isDisabled.value,
12021
+ selectAll: group.selectAll,
12022
+ unselectAll: group.unselectAll,
12023
+ toggleAll: group.toggleAll,
12024
+ attrs: {
12025
+ "type": as === "button" ? "button" : void 0,
12026
+ "role": "switch",
12027
+ "aria-checked": isMixed.value ? "mixed" : isAllSelected.value,
12028
+ "aria-disabled": isDisabled.value || void 0,
12029
+ "aria-label": label || void 0,
12030
+ "aria-labelledby": props.ariaLabelledby || void 0,
12031
+ "aria-describedby": props.ariaDescribedby || void 0,
12032
+ "tabindex": isDisabled.value ? void 0 : 0,
12033
+ "data-state": dataState.value,
12034
+ "data-disabled": isDisabled.value ? true : void 0
12035
+ }
12036
+ }));
12037
+ return (_ctx, _cache) => {
12038
+ return openBlock(), createBlock(unref(Atom_default), mergeProps({
12039
+ ...unref(attrs),
12040
+ ...slotProps.value.attrs
12041
+ }, {
12042
+ as: unref(as),
12043
+ renderless: unref(renderless),
12044
+ onClick,
12045
+ onKeydown
12046
+ }), {
12047
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
12048
+ _: 3
12049
+ }, 16, ["as", "renderless"]);
12050
+ };
12051
+ }
12052
+ });
12053
+ var SwitchSelectAll_default = _sfc_main$10;
12054
+
12055
+ //#endregion
12056
+ //#region src/components/Switch/SwitchThumb.vue
12057
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
12058
+ name: "SwitchThumb",
12059
+ __name: "SwitchThumb",
12060
+ props: {
12061
+ namespace: { default: "v0:switch:root" },
12062
+ as: { default: "span" },
12063
+ renderless: { type: Boolean }
12064
+ },
12065
+ setup(__props) {
12066
+ const root = useSwitchRoot(__props.namespace);
12067
+ const isChecked = toRef(() => toValue(root.isChecked));
12068
+ const isMixed = toRef(() => toValue(root.isMixed));
12069
+ const isVisible = toRef(() => isChecked.value || isMixed.value);
12070
+ const dataState = toRef(() => isMixed.value ? "indeterminate" : isChecked.value ? "checked" : "unchecked");
12071
+ const slotProps = toRef(() => ({
12072
+ isChecked: isChecked.value,
12073
+ isMixed: isMixed.value,
12074
+ attrs: {
12075
+ "data-state": dataState.value,
12076
+ "style": { visibility: isVisible.value ? "visible" : "hidden" }
12077
+ }
12078
+ }));
12079
+ return (_ctx, _cache) => {
12080
+ return openBlock(), createBlock(unref(Atom_default), mergeProps(slotProps.value.attrs, {
12081
+ as: __props.as,
12082
+ renderless: __props.renderless
12083
+ }), {
12084
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
12085
+ _: 3
12086
+ }, 16, ["as", "renderless"]);
12087
+ };
12088
+ }
12089
+ });
12090
+ var SwitchThumb_default = _sfc_main$9;
12091
+
12092
+ //#endregion
12093
+ //#region src/components/Switch/SwitchTrack.vue
12094
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
12095
+ name: "SwitchTrack",
12096
+ __name: "SwitchTrack",
12097
+ props: {
12098
+ namespace: { default: "v0:switch:root" },
12099
+ as: { default: "span" },
12100
+ renderless: { type: Boolean }
12101
+ },
12102
+ setup(__props) {
12103
+ const root = useSwitchRoot(__props.namespace);
12104
+ const isChecked = toRef(() => toValue(root.isChecked));
12105
+ const isMixed = toRef(() => toValue(root.isMixed));
12106
+ const dataState = toRef(() => isMixed.value ? "indeterminate" : isChecked.value ? "checked" : "unchecked");
12107
+ const slotProps = toRef(() => ({
12108
+ isChecked: isChecked.value,
12109
+ isMixed: isMixed.value,
12110
+ attrs: { "data-state": dataState.value }
12111
+ }));
12112
+ return (_ctx, _cache) => {
12113
+ return openBlock(), createBlock(unref(Atom_default), mergeProps(slotProps.value.attrs, {
12114
+ as: __props.as,
12115
+ renderless: __props.renderless
12116
+ }), {
12117
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
12118
+ _: 3
12119
+ }, 16, ["as", "renderless"]);
12120
+ };
12121
+ }
12122
+ });
12123
+ var SwitchTrack_default = _sfc_main$8;
12124
+
12125
+ //#endregion
12126
+ //#region src/components/Switch/index.ts
12127
+ /**
12128
+ * Switch component with sub-components for toggle controls.
12129
+ *
12130
+ * @see https://0.vuetifyjs.com/components/forms/switch
12131
+ *
12132
+ * @example
12133
+ * ```vue
12134
+ * <script lang="ts" setup>
12135
+ * import { Switch } from '@vuetify/v0'
12136
+ * import { ref } from 'vue'
12137
+ *
12138
+ * const enabled = ref(false)
12139
+ * <\/script>
12140
+ *
12141
+ * <template>
12142
+ * <label>
12143
+ * <Switch.Root v-model="enabled">
12144
+ * <Switch.Track>
12145
+ * <Switch.Thumb />
12146
+ * </Switch.Track>
12147
+ * </Switch.Root>
12148
+ * Enable notifications
12149
+ * </label>
12150
+ * </template>
12151
+ * ```
12152
+ */
12153
+ const Switch = {
12154
+ Group: SwitchGroup_default,
12155
+ HiddenInput: SwitchHiddenInput_default,
12156
+ Root: SwitchRoot_default,
12157
+ SelectAll: SwitchSelectAll_default,
12158
+ Thumb: SwitchThumb_default,
12159
+ Track: SwitchTrack_default
12160
+ };
12161
+
12235
12162
  //#endregion
12236
12163
  //#region src/components/Single/SingleRoot.vue
12237
12164
  const [useSingleRoot, provideSingleRoot] = createContext();
@@ -12774,4 +12701,4 @@ const Tabs = {
12774
12701
  };
12775
12702
 
12776
12703
  //#endregion
12777
- export { Atom_default as Atom, Avatar, AvatarFallback_default as AvatarFallback, AvatarImage_default as AvatarImage, AvatarRoot_default as AvatarRoot, Breadcrumbs, BreadcrumbsDivider_default as BreadcrumbsDivider, BreadcrumbsEllipsis_default as BreadcrumbsEllipsis, BreadcrumbsItem_default as BreadcrumbsItem, BreadcrumbsLink_default as BreadcrumbsLink, BreadcrumbsList_default as BreadcrumbsList, BreadcrumbsPage_default as BreadcrumbsPage, BreadcrumbsRoot_default as BreadcrumbsRoot, COMMON_ELEMENTS, Checkbox, CheckboxGroup_default as CheckboxGroup, CheckboxHiddenInput_default as CheckboxHiddenInput, CheckboxIndicator_default as CheckboxIndicator, CheckboxRoot_default as CheckboxRoot, CheckboxSelectAll_default as CheckboxSelectAll, ClientAdapter, ConsolaLoggerAdapter, DataTableAdapter, Dialog, DialogActivator_default as DialogActivator, DialogClose_default as DialogClose, DialogContent_default as DialogContent, DialogDescription_default as DialogDescription, DialogRoot_default as DialogRoot, DialogTitle_default as DialogTitle, ExpansionPanel, ExpansionPanelActivator_default as ExpansionPanelActivator, ExpansionPanelContent_default as ExpansionPanelContent, ExpansionPanelHeader_default as ExpansionPanelHeader, ExpansionPanelItem_default as ExpansionPanelItem, ExpansionPanelRoot_default as ExpansionPanelRoot, FeaturesAdapter, Group, GroupItem_default as GroupItem, GroupRoot_default as GroupRoot, IN_BROWSER, MemoryAdapter, Pagination, PaginationEllipsis_default as PaginationEllipsis, PaginationFirst_default as PaginationFirst, PaginationItem_default as PaginationItem, PaginationLast_default as PaginationLast, PaginationNext_default as PaginationNext, PaginationPrev_default as PaginationPrev, PaginationRoot_default as PaginationRoot, PaginationStatus_default as PaginationStatus, PermissionAdapter, PinoLoggerAdapter, Popover, PopoverActivator_default as PopoverActivator, PopoverContent_default as PopoverContent, PopoverRoot_default as PopoverRoot, Radio, RadioGroup_default as RadioGroup, RadioHiddenInput_default as RadioHiddenInput, RadioIndicator_default as RadioIndicator, RadioRoot_default as RadioRoot, SELF_CLOSING_TAGS, SUPPORTS_INTERSECTION_OBSERVER, SUPPORTS_MATCH_MEDIA, SUPPORTS_MUTATION_OBSERVER, SUPPORTS_OBSERVER, SUPPORTS_TOUCH, Scrim_default as Scrim, Selection, SelectionItem_default as SelectionItem, SelectionRoot_default as SelectionRoot, ServerAdapter, Single, SingleItem_default as SingleItem, SingleRoot_default as SingleRoot, Step, StepItem_default as StepItem, StepRoot_default as StepRoot, Tabs, TabsItem_default as TabsItem, TabsList_default as TabsList, TabsPanel_default as TabsPanel, TabsRoot_default as TabsRoot, VirtualAdapter, Vuetify0LocaleAdapter, Vuetify0LoggerAdapter, Vuetify0ThemeAdapter, __LOGGER_ENABLED__, clamp, createBreadcrumbs, createBreadcrumbsContext, createBreakpoints, createBreakpointsContext, createBreakpointsPlugin, createContext, createDataTable, createDataTableContext, createDate, createDateContext, createDatePlugin, createFallbackHydration, createFeatures, createFeaturesContext, createFeaturesPlugin, createFilter, createFilterContext, createForm, createFormContext, createGroup, createGroupContext, createHydration, createHydrationContext, createHydrationPlugin, createLocale, createLocaleContext, createLocaleFallback, createLocalePlugin, createLogger, createLoggerContext, createLoggerPlugin, createNested, createNestedContext, createOverflow, createOverflowContext, createPagination, createPaginationContext, createPermissions, createPermissionsContext, createPermissionsPlugin, createPlugin, createQueue, createQueueContext, createRegistry, createRegistryContext, createSelection, createSelectionContext, createSingle, createSingleContext, createStack, createStackContext, createStackPlugin, createStep, createStepContext, createStorage, createStorageContext, createStoragePlugin, createTheme, createThemeContext, createThemePlugin, createTimeline, createTimelineContext, createTokens, createTokensContext, createTrinity, createVirtual, createVirtualContext, debounce, instanceExists, instanceName, isArray, isBoolean, isFunction, isNaN, isNull, isNullOrUndefined, isNumber, isObject, isPrimitive, isSelfClosingTag, isString, isSymbol, isUndefined, mergeDeep, multipleOpenStrategy, provideAvatarRoot, provideBreadcrumbsRoot, provideCheckboxGroup, provideCheckboxRoot, provideContext, provideDialogContext, provideExpansionPanelItem, provideExpansionPanelRoot, provideGroupRoot, providePaginationControls, providePaginationItems, providePaginationRoot, providePopoverContext, provideRadioGroup, provideRadioRoot, provideSelectionRoot, provideSingleRoot, provideStepRoot, provideTabsRoot, range, singleOpenStrategy, toArray, toReactive, useAvatarRoot, useBreadcrumbs, useBreadcrumbsRoot, useBreakpoints, useCheckboxGroup, useCheckboxRoot, useClickOutside, useContext, useDataTable, useDate, useDialogContext, useDocumentEventListener, useElementIntersection, useElementSize, useEventListener, useExpansionPanelItem, useExpansionPanelRoot, useFeatures, useFilter, useForm, useGroup, useGroupRoot, useHotkey, useHydration, useId, useIntersectionObserver, useLazy, useLocale, useLogger, useMediaQuery, useMutationObserver, useNested, useOverflow, usePagination, usePaginationControls, usePaginationItems, usePaginationRoot, usePermissions, usePopoverContext, usePrefersContrast, usePrefersDark, usePrefersReducedMotion, useProxyModel, useProxyRegistry, useQueue, useRadioGroup, useRadioRoot, useRegistry, useResizeObserver, useSelection, useSelectionRoot, useSingle, useSingleRoot, useStack, useStep, useStepRoot, useStorage, useTabsRoot, useTheme, useTimeline, useToggleScope, useTokens, useVirtual, useWindowEventListener, version };
12704
+ export { Atom_default as Atom, Avatar, AvatarFallback_default as AvatarFallback, AvatarImage_default as AvatarImage, AvatarRoot_default as AvatarRoot, Breadcrumbs, BreadcrumbsDivider_default as BreadcrumbsDivider, BreadcrumbsEllipsis_default as BreadcrumbsEllipsis, BreadcrumbsItem_default as BreadcrumbsItem, BreadcrumbsLink_default as BreadcrumbsLink, BreadcrumbsList_default as BreadcrumbsList, BreadcrumbsPage_default as BreadcrumbsPage, BreadcrumbsRoot_default as BreadcrumbsRoot, COMMON_ELEMENTS, Checkbox, CheckboxGroup_default as CheckboxGroup, CheckboxHiddenInput_default as CheckboxHiddenInput, CheckboxIndicator_default as CheckboxIndicator, CheckboxRoot_default as CheckboxRoot, CheckboxSelectAll_default as CheckboxSelectAll, ClientAdapter, ConsolaLoggerAdapter, DataTableAdapter, Dialog, DialogActivator_default as DialogActivator, DialogClose_default as DialogClose, DialogContent_default as DialogContent, DialogDescription_default as DialogDescription, DialogRoot_default as DialogRoot, DialogTitle_default as DialogTitle, ExpansionPanel, ExpansionPanelActivator_default as ExpansionPanelActivator, ExpansionPanelContent_default as ExpansionPanelContent, ExpansionPanelHeader_default as ExpansionPanelHeader, ExpansionPanelItem_default as ExpansionPanelItem, ExpansionPanelRoot_default as ExpansionPanelRoot, FeaturesAdapter, Group, GroupItem_default as GroupItem, GroupRoot_default as GroupRoot, IN_BROWSER, MemoryAdapter, Pagination, PaginationEllipsis_default as PaginationEllipsis, PaginationFirst_default as PaginationFirst, PaginationItem_default as PaginationItem, PaginationLast_default as PaginationLast, PaginationNext_default as PaginationNext, PaginationPrev_default as PaginationPrev, PaginationRoot_default as PaginationRoot, PaginationStatus_default as PaginationStatus, PermissionAdapter, PinoLoggerAdapter, Popover, PopoverActivator_default as PopoverActivator, PopoverContent_default as PopoverContent, PopoverRoot_default as PopoverRoot, Radio, RadioGroup_default as RadioGroup, RadioHiddenInput_default as RadioHiddenInput, RadioIndicator_default as RadioIndicator, RadioRoot_default as RadioRoot, SELF_CLOSING_TAGS, SUPPORTS_INTERSECTION_OBSERVER, SUPPORTS_MATCH_MEDIA, SUPPORTS_MUTATION_OBSERVER, SUPPORTS_OBSERVER, SUPPORTS_TOUCH, Scrim_default as Scrim, Selection, SelectionItem_default as SelectionItem, SelectionRoot_default as SelectionRoot, ServerAdapter, Single, SingleItem_default as SingleItem, SingleRoot_default as SingleRoot, Step, StepItem_default as StepItem, StepRoot_default as StepRoot, Switch, SwitchGroup_default as SwitchGroup, SwitchHiddenInput_default as SwitchHiddenInput, SwitchRoot_default as SwitchRoot, SwitchSelectAll_default as SwitchSelectAll, SwitchThumb_default as SwitchThumb, SwitchTrack_default as SwitchTrack, Tabs, TabsItem_default as TabsItem, TabsList_default as TabsList, TabsPanel_default as TabsPanel, TabsRoot_default as TabsRoot, VirtualAdapter, Vuetify0LocaleAdapter, Vuetify0LoggerAdapter, Vuetify0ThemeAdapter, __LOGGER_ENABLED__, clamp, createBreadcrumbs, createBreadcrumbsContext, createBreakpoints, createBreakpointsContext, createBreakpointsPlugin, createContext, createDataTable, createDataTableContext, createDate, createDateContext, createDatePlugin, createFallbackHydration, createFeatures, createFeaturesContext, createFeaturesPlugin, createFilter, createFilterContext, createForm, createFormContext, createGroup, createGroupContext, createHydration, createHydrationContext, createHydrationPlugin, createLocale, createLocaleContext, createLocaleFallback, createLocalePlugin, createLogger, createLoggerContext, createLoggerPlugin, createNested, createNestedContext, createOverflow, createOverflowContext, createPagination, createPaginationContext, createPermissions, createPermissionsContext, createPermissionsPlugin, createPlugin, createPluginContext, createQueue, createQueueContext, createRegistry, createRegistryContext, createSelection, createSelectionContext, createSingle, createSingleContext, createStack, createStackContext, createStackPlugin, createStep, createStepContext, createStorage, createStorageContext, createStoragePlugin, createTheme, createThemeContext, createThemePlugin, createTimeline, createTimelineContext, createTokens, createTokensContext, createTrinity, createVirtual, createVirtualContext, debounce, instanceExists, instanceName, isArray, isBoolean, isElement, isFunction, isNaN, isNull, isNullOrUndefined, isNumber, isObject, isPrimitive, isSelfClosingTag, isString, isSymbol, isUndefined, mergeDeep, multipleOpenStrategy, provideAvatarRoot, provideBreadcrumbsRoot, provideCheckboxGroup, provideCheckboxRoot, provideContext, provideDialogContext, provideExpansionPanelItem, provideExpansionPanelRoot, provideGroupRoot, providePaginationControls, providePaginationItems, providePaginationRoot, providePopoverContext, provideRadioGroup, provideRadioRoot, provideSelectionRoot, provideSingleRoot, provideStepRoot, provideSwitchGroup, provideSwitchRoot, provideTabsRoot, range, singleOpenStrategy, toArray, toElement, toReactive, useAvatarRoot, useBreadcrumbs, useBreadcrumbsRoot, useBreakpoints, useCheckboxGroup, useCheckboxRoot, useClickOutside, useContext, useDataTable, useDate, useDialogContext, useDocumentEventListener, useElementIntersection, useElementSize, useEventListener, useExpansionPanelItem, useExpansionPanelRoot, useFeatures, useFilter, useForm, useGroup, useGroupRoot, useHotkey, useHydration, useId, useIntersectionObserver, useLazy, useLocale, useLogger, useMediaQuery, useMutationObserver, useNested, useOverflow, usePagination, usePaginationControls, usePaginationItems, usePaginationRoot, usePermissions, usePopoverContext, usePrefersContrast, usePrefersDark, usePrefersReducedMotion, useProxyModel, useProxyRegistry, useQueue, useRadioGroup, useRadioRoot, useRegistry, useResizeObserver, useSelection, useSelectionRoot, useSingle, useSingleRoot, useStack, useStep, useStepRoot, useStorage, useSwitchGroup, useSwitchRoot, useTabsRoot, useTheme, useTimeline, useToggleScope, useTokens, useVirtual, useWindowEventListener, version };