@vuetify/v0 1.0.0-beta.0 → 1.0.0-beta.2

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 (154) hide show
  1. package/README.md +2 -1
  2. package/dist/{adapter-DZeI0ZbW.d.mts → adapter-CQoi3rdC.d.mts} +1 -1
  3. package/dist/adapter-CVoWg0sw.mjs +99 -0
  4. package/dist/{adapter-oM18AdUc.mjs → adapter-Cj7vxEdB.mjs} +6 -1
  5. package/dist/adapter-Cy7wXVFe.mjs +4 -0
  6. package/dist/{adapter-we-0GbFH.d.mts → adapter-D2ABPTpo.d.mts} +2 -2
  7. package/dist/{adapter-BO75n0Cn.d.mts → adapter-_srNCBEi.d.mts} +3 -3
  8. package/dist/browser/index.js +23639 -23267
  9. package/dist/components/index.d.mts +1 -1
  10. package/dist/components/index.mjs +1 -1
  11. package/dist/{components-_uxZ_Zo3.mjs → components-DcOwIGXt.mjs} +304 -214
  12. package/dist/composables/index.d.mts +20 -20
  13. package/dist/composables/index.mjs +34 -28
  14. package/dist/composables-DxKmYiTj.mjs +4077 -0
  15. package/dist/{consola-CUNHyu8J.d.mts → consola-BPGkJp_q.d.mts} +1 -1
  16. package/dist/constants/index.d.mts +1 -1
  17. package/dist/constants/index.mjs +1 -1
  18. package/dist/{createDataTable-DlFQyBTN.mjs → createDataTable-CBfnCUKU.mjs} +14 -11
  19. package/dist/{createGroup-DsKJMuRd.mjs → createGroup-BTG6xcyp.mjs} +26 -14
  20. package/dist/{adapter-BCVxBtDp.mjs → createPagination-B5dfqY-a.mjs} +3 -98
  21. package/dist/{createRegistry-tJ1PPNIr.mjs → createRegistry-Cb6ftNMU.mjs} +57 -41
  22. package/dist/{createSelection-DEqhvdoj.mjs → createSelection-BMvXj84C.mjs} +7 -4
  23. package/dist/{createSingle-ClzWqRCe.mjs → createSingle-BCUJuV4D.mjs} +3 -3
  24. package/dist/{createTokens-mNxs8DQ3.mjs → createTokens-BSSQAfNX.mjs} +12 -6
  25. package/dist/data-table/adapters/client/index.d.mts +1 -1
  26. package/dist/data-table/adapters/client/index.mjs +1 -1
  27. package/dist/data-table/adapters/index.d.mts +4 -4
  28. package/dist/data-table/adapters/index.mjs +4 -5
  29. package/dist/data-table/adapters/server/index.d.mts +1 -1
  30. package/dist/data-table/adapters/server/index.mjs +1 -1
  31. package/dist/data-table/adapters/virtual/index.d.mts +1 -1
  32. package/dist/data-table/adapters/virtual/index.mjs +1 -1
  33. package/dist/data-table/index.d.mts +5 -5
  34. package/dist/data-table/index.mjs +5 -5
  35. package/dist/date/index.d.mts +1 -1
  36. package/dist/date/index.mjs +36 -33
  37. package/dist/features/adapters/flagsmith/index.d.mts +1 -1
  38. package/dist/features/adapters/flagsmith/index.mjs +47 -1
  39. package/dist/features/adapters/launchdarkly/index.d.mts +1 -1
  40. package/dist/features/adapters/launchdarkly/index.mjs +37 -1
  41. package/dist/features/adapters/posthog/index.d.mts +1 -1
  42. package/dist/features/adapters/posthog/index.mjs +46 -1
  43. package/dist/features/index.d.mts +2 -2
  44. package/dist/features/index.mjs +2 -2
  45. package/dist/{flagsmith-Cn_KVy6v.d.mts → flagsmith-CXzNBqm3.d.mts} +1 -1
  46. package/dist/{globals-DB-krEA-.mjs → globals-C1X-9O7K.mjs} +1 -1
  47. package/dist/{index-DWAgQOBa.d.mts → index-Bmz8PZMY.d.mts} +3 -4
  48. package/dist/{index-BN06veYe.d.mts → index-CKyDkh8J.d.mts} +169 -88
  49. package/dist/{index-B3PDLk_Y.d.mts → index-DLBPM47A.d.mts} +509 -439
  50. package/dist/{index-ZD3hw2Zo.d.mts → index-DRrHHgE7.d.mts} +4 -4
  51. package/dist/{index-ATZqco03.d.mts → index-LMiCHwZl.d.mts} +7 -2
  52. package/dist/{index-BIyQ3OxC.d.mts → index-rJ_lhMYJ.d.mts} +5 -5
  53. package/dist/index.d.mts +24 -24
  54. package/dist/index.mjs +37 -31
  55. package/dist/json/attributes.json +2 -2
  56. package/dist/json/web-types.json +3 -3
  57. package/dist/{launchdarkly-C3Knz7-v.d.mts → launchdarkly-DvhloBts.d.mts} +1 -1
  58. package/dist/locale/adapters/index.d.mts +2 -2
  59. package/dist/locale/adapters/index.mjs +2 -3
  60. package/dist/locale/adapters/v0/index.d.mts +1 -1
  61. package/dist/locale/adapters/v0/index.mjs +1 -1
  62. package/dist/locale/adapters/vue-i18n/index.d.mts +1 -1
  63. package/dist/locale/adapters/vue-i18n/index.mjs +1 -1
  64. package/dist/locale/index.d.mts +3 -3
  65. package/dist/locale/index.mjs +3 -3
  66. package/dist/logger/adapters/consola/index.d.mts +1 -1
  67. package/dist/logger/adapters/index.d.mts +4 -4
  68. package/dist/logger/adapters/index.mjs +1 -2
  69. package/dist/logger/adapters/pino/index.d.mts +1 -1
  70. package/dist/logger/adapters/v0/index.d.mts +1 -1
  71. package/dist/logger/adapters/v0/index.mjs +1 -1
  72. package/dist/logger/index.d.mts +5 -5
  73. package/dist/logger/index.mjs +2 -2
  74. package/dist/notifications/index.d.mts +6 -6
  75. package/dist/notifications/index.mjs +29 -29
  76. package/dist/palettes/ant/index.d.mts +1 -1
  77. package/dist/palettes/index.d.mts +3 -3
  78. package/dist/palettes/material/index.d.mts +1 -1
  79. package/dist/palettes/md1/index.d.mts +1 -1
  80. package/dist/palettes/md2/index.d.mts +1 -1
  81. package/dist/palettes/radix/index.d.mts +1 -1
  82. package/dist/palettes/tailwind/index.d.mts +1 -1
  83. package/dist/permissions/adapters/index.d.mts +1 -1
  84. package/dist/permissions/adapters/index.mjs +1 -2
  85. package/dist/permissions/adapters/v0/index.d.mts +1 -1
  86. package/dist/permissions/adapters/v0/index.mjs +1 -1
  87. package/dist/permissions/index.d.mts +1 -1
  88. package/dist/permissions/index.mjs +2 -2
  89. package/dist/{pino-BaYY_KIN.d.mts → pino-B6BI1AOK.d.mts} +1 -1
  90. package/dist/{posthog-CR8R2ywM.d.mts → posthog-BOT5W7Ds.d.mts} +1 -1
  91. package/dist/rules/index.d.mts +1 -1
  92. package/dist/rules/index.mjs +1 -1
  93. package/dist/{server-CZ83nTn_.mjs → server-D5BJBjB0.mjs} +2 -1
  94. package/dist/{server-7vjHxjNc.d.mts → server-DbtTGb67.d.mts} +1 -1
  95. package/dist/storage/adapters/index.d.mts +2 -2
  96. package/dist/storage/adapters/index.mjs +1 -1
  97. package/dist/storage/adapters/memory/index.d.mts +1 -1
  98. package/dist/storage/adapters/memory/index.mjs +1 -1
  99. package/dist/storage/index.d.mts +3 -3
  100. package/dist/storage/index.mjs +2 -2
  101. package/dist/theme/adapters/index.d.mts +1 -1
  102. package/dist/theme/adapters/index.mjs +3 -4
  103. package/dist/theme/adapters/unhead/index.d.mts +1 -1
  104. package/dist/theme/adapters/unhead/index.mjs +1 -1
  105. package/dist/theme/adapters/v0/index.d.mts +1 -1
  106. package/dist/theme/adapters/v0/index.mjs +1 -1
  107. package/dist/theme/index.d.mts +1 -1
  108. package/dist/theme/index.mjs +5 -4
  109. package/dist/types/index.d.mts +1 -1
  110. package/dist/{unhead-CG672gKh.mjs → unhead-i8ji788n.mjs} +12 -8
  111. package/dist/useEventListener-BK_uaXZv.mjs +103 -0
  112. package/dist/{useFeatures-B-A-eOo-.mjs → useFeatures-BKAK56af.mjs} +4 -8
  113. package/dist/{useLocale-CbpoxbVU.mjs → useLocale-CTwn8uZk.mjs} +4 -5
  114. package/dist/{useLogger-CTgAedNH.mjs → useLogger-D7_hm4e8.mjs} +2 -3
  115. package/dist/{useNotifications-BkKGUl_1.mjs → useNotifications-B2YeotHN.mjs} +15 -8
  116. package/dist/{usePermissions-BYOrKcnk.mjs → usePermissions-CWYXR7ji.mjs} +18 -11
  117. package/dist/{useClickOutside-DoOgNtrj.mjs → useRovingFocus-BdnSUVrD.mjs} +4014 -8138
  118. package/dist/{useRules-mD_DY9dy.mjs → useRules-CB2_tvd0.mjs} +2 -2
  119. package/dist/useStorage-BORz1d1g.mjs +162 -0
  120. package/dist/{useTheme-B1lUya5B.mjs → useTheme-ClUmdmvT.mjs} +12 -9
  121. package/dist/utilities/index.d.mts +2 -2
  122. package/dist/utilities/index.mjs +7 -3
  123. package/dist/{v0-COaQncfZ.mjs → v0-A4GLojAr.mjs} +2 -1
  124. package/dist/{v0-Bx5Mi7qE.mjs → v0-BU39ZO4s.mjs} +21 -10
  125. package/dist/{v0-WzS4GAIp.d.mts → v0-D7NA38Vu.d.mts} +1 -1
  126. package/dist/{v0-CG9o3on7.mjs → v0-DL9JtgCO.mjs} +1 -1
  127. package/dist/{v0-QIjffi4E.d.mts → v0-DotXXGXU.d.mts} +1 -1
  128. package/dist/{v0-CHK79mZX.mjs → v0-SwedwC_b.mjs} +3 -4
  129. package/dist/{v0-DWZ_N2GG.d.mts → v0-rSxMW8FJ.d.mts} +1 -1
  130. package/dist/{virtual-CrgGA-o6.d.mts → virtual-C-NsLue0.d.mts} +1 -1
  131. package/dist/{virtual-UumJ2BQ9.mjs → virtual-DFvOoeG6.mjs} +2 -1
  132. package/package.json +10 -7
  133. package/dist/adapters-BHD1lc-K.mjs +0 -4
  134. package/dist/adapters-BYLWDmYl.mjs +0 -5
  135. package/dist/adapters-BxrTL8E3.mjs +0 -4
  136. package/dist/adapters-CBgBd7VE.mjs +0 -2
  137. package/dist/adapters-D64TORDu.mjs +0 -2
  138. package/dist/flagsmith-Cu93hUIF.mjs +0 -48
  139. package/dist/launchdarkly-CLGtJCsI.mjs +0 -38
  140. package/dist/posthog-B5s_KGhy.mjs +0 -47
  141. /package/dist/{adapter-BEJXp-ie.d.mts → adapter-BYzU4Ey5.d.mts} +0 -0
  142. /package/dist/{adapter-B6IrPwib.d.mts → adapter-C5F2huij.d.mts} +0 -0
  143. /package/dist/{adapter-BSKx9WQ7.mjs → adapter-CTsckKAR.mjs} +0 -0
  144. /package/dist/{adapter-D8zizQVP.mjs → adapter-bwZo7b5p.mjs} +0 -0
  145. /package/dist/{index-DHmuwBdv.d.mts → index-B9YmdGZ3.d.mts} +0 -0
  146. /package/dist/{index-PvkxPev3.d.mts → index-BgCkepP_.d.mts} +0 -0
  147. /package/dist/{index-BOn0AAue.d.mts → index-CROz1VSV.d.mts} +0 -0
  148. /package/dist/{index-H_hl6-4b.d.mts → index-DXMlYoiQ.d.mts} +0 -0
  149. /package/dist/{index-C6NnIuDv.d.mts → index-DidZKN6S.d.mts} +0 -0
  150. /package/dist/{index-CKKoxA9V.d.mts → index-FtE8MXJ_.d.mts} +0 -0
  151. /package/dist/{memory-BMpJcQjQ.mjs → memory-BJjkQzxs.mjs} +0 -0
  152. /package/dist/{memory-D-JbdKXg.d.mts → memory-DbyZeNjg.d.mts} +0 -0
  153. /package/dist/{toArray-CD2-OxAz.mjs → toArray-C89ZaEuF.mjs} +0 -0
  154. /package/dist/{v0-Dvu8fMl3.mjs → v0-UNyykD27.mjs} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { instanceExists, isFunction, isObject } from "./utilities/index.mjs";
2
- import { i as useLogger, o as createPluginContext } from "./useLogger-CTgAedNH.mjs";
3
- import { a as useLocale } from "./useLocale-CbpoxbVU.mjs";
2
+ import { i as useLogger, o as createPluginContext } from "./useLogger-D7_hm4e8.mjs";
3
+ import { a as useLocale } from "./useLocale-CTwn8uZk.mjs";
4
4
  //#region src/composables/useRules/adapters/standard.ts
5
5
  /**
6
6
  * Type guard for Standard Schema objects.
@@ -0,0 +1,162 @@
1
+ import { t as IN_BROWSER } from "./globals-C1X-9O7K.mjs";
2
+ import { isArray, isNullOrUndefined, isObject } from "./utilities/index.mjs";
3
+ import { i as useLogger, o as createPluginContext } from "./useLogger-D7_hm4e8.mjs";
4
+ import { r as useWindowEventListener } from "./useEventListener-BK_uaXZv.mjs";
5
+ import { t as MemoryStorageAdapter } from "./memory-BJjkQzxs.mjs";
6
+ import { ref, watch } from "vue";
7
+ //#region src/composables/useStorage/index.ts
8
+ /**
9
+ * @module useStorage
10
+ *
11
+ * @see https://0.vuetifyjs.com/composables/plugins/use-storage
12
+ *
13
+ * @remarks
14
+ * Reactive storage composable with adapter pattern for localStorage, sessionStorage, or memory.
15
+ *
16
+ * Key features:
17
+ * - Reactive refs that sync with storage
18
+ * - localStorage, sessionStorage, and memory adapters
19
+ * - TTL (time-to-live) for time-based cache expiration
20
+ * - Custom serialization support
21
+ * - SSR fallback to memory adapter
22
+ * - Automatic cleanup on remove/clear
23
+ *
24
+ * Uses adapter pattern to abstract storage implementation details.
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * import { useStorage } from '@vuetify/v0'
29
+ *
30
+ * const storage = useStorage()
31
+ * const theme = storage.get('theme', 'light')
32
+ * theme.value = 'dark' // persists automatically
33
+ * ```
34
+ */
35
+ /**
36
+ * Creates a new storage instance.
37
+ *
38
+ * @param options The options for the storage instance.
39
+ * @template E The type of the storage context.
40
+ * @returns A new storage instance.
41
+ *
42
+ * @see https://0.vuetifyjs.com/composables/plugins/use-storage
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * import { createStorage } from '@vuetify/v0'
47
+ *
48
+ * const storage = createStorage()
49
+ *
50
+ * storage.set('username', 'MyUsername')
51
+ *
52
+ * const username = storage.get('username')
53
+ *
54
+ * console.log(username.value) // MyUsername
55
+ *
56
+ * storage.clear()
57
+ * ```
58
+ */
59
+ function createStorage(options = {}) {
60
+ const { adapter = IN_BROWSER ? window.localStorage : new MemoryStorageAdapter(), prefix = "v0:", serializer = {
61
+ read: JSON.parse,
62
+ write: JSON.stringify
63
+ }, ttl } = options;
64
+ const logger = useLogger();
65
+ const cache = /* @__PURE__ */ new Map();
66
+ const watchers = /* @__PURE__ */ new Map();
67
+ function has(key) {
68
+ const prefixedKey = `${prefix}${key}`;
69
+ return cache.has(prefixedKey) || !/* @__PURE__ */ isNullOrUndefined(readStored(prefixedKey));
70
+ }
71
+ function readStored(prefixedKey) {
72
+ const raw = adapter?.getItem(prefixedKey);
73
+ if (/* @__PURE__ */ isNullOrUndefined(raw)) return void 0;
74
+ try {
75
+ const parsed = serializer.read(raw);
76
+ if (/* @__PURE__ */ isObject(parsed) && "__v0" in parsed && "__v" in parsed) {
77
+ const envelope = parsed;
78
+ if (ttl && Date.now() - envelope.__t > ttl) {
79
+ adapter?.removeItem(prefixedKey);
80
+ return;
81
+ }
82
+ return envelope.__v;
83
+ }
84
+ return parsed;
85
+ } catch (error) {
86
+ logger.error(`[v0:storage] Failed to parse stored value for key "${prefixedKey}":`, error);
87
+ return;
88
+ }
89
+ }
90
+ function writeStored(prefixedKey, value) {
91
+ const wrapped = ttl ? {
92
+ __v0: 1,
93
+ __v: value,
94
+ __t: Date.now()
95
+ } : value;
96
+ try {
97
+ adapter?.setItem(prefixedKey, serializer.write(wrapped));
98
+ } catch (error) {
99
+ logger.error(`[v0:storage] Failed to write key "${prefixedKey}":`, error);
100
+ }
101
+ }
102
+ function get(key, defaultValue) {
103
+ const prefixedKey = `${prefix}${key}`;
104
+ if (cache.has(prefixedKey)) return cache.get(prefixedKey);
105
+ const valueRef = ref(readStored(prefixedKey) ?? (/* @__PURE__ */ isObject(defaultValue) || /* @__PURE__ */ isArray(defaultValue) ? structuredClone(defaultValue) : defaultValue));
106
+ const stop = watch(valueRef, (newValue) => {
107
+ if (/* @__PURE__ */ isNullOrUndefined(newValue)) adapter?.removeItem(prefixedKey);
108
+ else writeStored(prefixedKey, newValue);
109
+ }, { deep: true });
110
+ watchers.set(prefixedKey, stop);
111
+ cache.set(prefixedKey, valueRef);
112
+ return valueRef;
113
+ }
114
+ function set(key, value) {
115
+ const valueRef = get(key);
116
+ valueRef.value = value;
117
+ }
118
+ function remove(key) {
119
+ const prefixedKey = `${prefix}${key}`;
120
+ const stop = watchers.get(prefixedKey);
121
+ if (!stop) return;
122
+ stop();
123
+ watchers.delete(prefixedKey);
124
+ adapter?.removeItem(prefixedKey);
125
+ cache.delete(prefixedKey);
126
+ }
127
+ function clear() {
128
+ if (watchers.size > 0) {
129
+ for (const stop of watchers.values()) stop();
130
+ watchers.clear();
131
+ }
132
+ if (cache.size > 0) {
133
+ for (const key of cache.keys()) adapter?.removeItem(key);
134
+ cache.clear();
135
+ }
136
+ }
137
+ if (IN_BROWSER && adapter === window.localStorage) useWindowEventListener("storage", (e) => {
138
+ if (!e.key?.startsWith(prefix)) return;
139
+ const valueRef = cache.get(e.key);
140
+ if (!valueRef) return;
141
+ watchers.get(e.key)?.();
142
+ valueRef.value = /* @__PURE__ */ isNullOrUndefined(e.newValue) ? void 0 : readStored(e.key);
143
+ const stop = watch(valueRef, (newValue) => {
144
+ if (/* @__PURE__ */ isNullOrUndefined(newValue)) adapter?.removeItem(e.key);
145
+ else writeStored(e.key, newValue);
146
+ }, { deep: true });
147
+ watchers.set(e.key, stop);
148
+ });
149
+ return {
150
+ has,
151
+ get,
152
+ set,
153
+ remove,
154
+ clear
155
+ };
156
+ }
157
+ function createStorageFallback() {
158
+ return createStorage({ adapter: new MemoryStorageAdapter() });
159
+ }
160
+ const [createStorageContext, createStoragePlugin, useStorage] = createPluginContext("v0:storage", (options) => createStorage(options), { fallback: () => createStorageFallback() });
161
+ //#endregion
162
+ export { useStorage as i, createStorageContext as n, createStoragePlugin as r, createStorage as t };
@@ -1,9 +1,8 @@
1
1
  import { foreground } from "./utilities/index.mjs";
2
- import { o as createPluginContext } from "./useLogger-CTgAedNH.mjs";
3
- import { t as createSingle } from "./createSingle-ClzWqRCe.mjs";
4
- import { r as flatten, t as createTokens } from "./createTokens-mNxs8DQ3.mjs";
5
- import { t as V0StyleSheetThemeAdapter } from "./v0-Bx5Mi7qE.mjs";
6
- import "./adapters-BHD1lc-K.mjs";
2
+ import { o as createPluginContext } from "./useLogger-D7_hm4e8.mjs";
3
+ import { t as createSingle } from "./createSingle-BCUJuV4D.mjs";
4
+ import { r as flatten, t as createTokens } from "./createTokens-BSSQAfNX.mjs";
5
+ import { t as V0StyleSheetThemeAdapter } from "./v0-BU39ZO4s.mjs";
7
6
  import { computed, shallowRef, toRef } from "vue";
8
7
  //#region src/composables/useTheme/index.ts
9
8
  /**
@@ -46,8 +45,7 @@ import { computed, shallowRef, toRef } from "vue";
46
45
  * ```ts
47
46
  * import { createTheme } from '@vuetify/v0'
48
47
  *
49
- * export const [useTheme, provideTheme] = createTheme({
50
- * namespace: 'v0:theme',
48
+ * const theme = createTheme({
51
49
  * default: 'light',
52
50
  * themes: {
53
51
  * light: {
@@ -132,6 +130,7 @@ function createTheme(_options = {}) {
132
130
  register,
133
131
  onboard,
134
132
  cycle,
133
+ dispose: () => {},
135
134
  get size() {
136
135
  return registry.size;
137
136
  }
@@ -143,7 +142,8 @@ function createThemeFallback() {
143
142
  colors: computed(() => ({})),
144
143
  isDark: shallowRef(false),
145
144
  cycle: () => {},
146
- onboard: () => []
145
+ onboard: () => [],
146
+ dispose: () => {}
147
147
  };
148
148
  }
149
149
  const [createThemeContext, createThemePlugin, useTheme] = createPluginContext("v0:theme", (options) => createTheme(options), {
@@ -151,9 +151,12 @@ const [createThemeContext, createThemePlugin, useTheme] = createPluginContext("v
151
151
  setup: (context, app, { adapter = new V0StyleSheetThemeAdapter(), target, rgb }) => {
152
152
  if (rgb) adapter.rgb = true;
153
153
  adapter.setup(app, context, target);
154
+ app.onUnmount(() => adapter.dispose?.());
154
155
  },
155
156
  persist: (ctx) => ctx.selectedId.value,
156
- restore: (ctx, saved) => ctx.select(saved)
157
+ restore: (ctx, saved) => {
158
+ if (typeof saved === "string" || typeof saved === "number") ctx.select(saved);
159
+ }
157
160
  });
158
161
  //#endregion
159
162
  export { useTheme as i, createThemeContext as n, createThemePlugin as r, createTheme as t };
@@ -1,2 +1,2 @@
1
- import { C as V0Error, D as RGB, E as foreground, O as hexToRgb, S as useId, T as apca, _ as isUndefined, a as isBoolean, b as resolveIds, c as isNaN, d as isNumber, f as isObject, g as isThenable, h as isSymbol, i as isArray, k as rgbToHex, l as isNull, m as isString, n as instanceName, o as isElement, p as isPrimitive, r as clamp, s as isFunction, t as instanceExists, u as isNullOrUndefined, v as mergeDeep, w as isV0Error, x as resolveIndexes, y as range } from "../index-ATZqco03.mjs";
2
- export { RGB, V0Error, apca, clamp, foreground, hexToRgb, instanceExists, instanceName, isArray, isBoolean, isElement, isFunction, isNaN, isNull, isNullOrUndefined, isNumber, isObject, isPrimitive, isString, isSymbol, isThenable, isUndefined, isV0Error, mergeDeep, range, resolveIds, resolveIndexes, rgbToHex, useId };
1
+ import { A as rgbToHex, C as useId, D as foreground, E as apca, O as RGB, S as resolveIndexes, T as isV0Error, _ as isThenable, a as isArray, b as range, c as isFunction, d as isNullOrUndefined, f as isNumber, g as isSymbol, h as isString, i as clamp, k as hexToRgb, l as isNaN, m as isPrimitive, n as instanceName, o as isBoolean, p as isObject, r as UNSAFE_KEYS, s as isElement, t as instanceExists, u as isNull, v as isUndefined, w as V0Error, x as resolveIds, y as mergeDeep } from "../index-LMiCHwZl.mjs";
2
+ export { RGB, UNSAFE_KEYS, V0Error, apca, clamp, foreground, hexToRgb, instanceExists, instanceName, isArray, isBoolean, isElement, isFunction, isNaN, isNull, isNullOrUndefined, isNumber, isObject, isPrimitive, isString, isSymbol, isThenable, isUndefined, isV0Error, mergeDeep, range, resolveIds, resolveIndexes, rgbToHex, useId };
@@ -1,4 +1,4 @@
1
- import { t as IN_BROWSER } from "../globals-DB-krEA-.mjs";
1
+ import { t as IN_BROWSER } from "../globals-C1X-9O7K.mjs";
2
2
  import * as Vue from "vue";
3
3
  import { useId as useId$1 } from "vue";
4
4
  //#region src/utilities/color.ts
@@ -285,7 +285,7 @@ function isArray(item) {
285
285
  */
286
286
  /* @__NO_SIDE_EFFECTS__ */
287
287
  function isElement(item) {
288
- return item instanceof Element;
288
+ return typeof Element !== "undefined" && item instanceof Element;
289
289
  }
290
290
  /**
291
291
  * Checks if a value is null
@@ -530,6 +530,8 @@ function range(length, start = 0) {
530
530
  /**
531
531
  * Resolves an iterable of IDs to their items via a getter,
532
532
  * filtering out any that return undefined.
533
+ *
534
+ * @internal
533
535
  */
534
536
  /* @__NO_SIDE_EFFECTS__ */
535
537
  function resolveIds(ids, getter) {
@@ -537,6 +539,8 @@ function resolveIds(ids, getter) {
537
539
  }
538
540
  /**
539
541
  * Extracts defined index values from an iterable of items.
542
+ *
543
+ * @internal
540
544
  */
541
545
  /* @__NO_SIDE_EFFECTS__ */
542
546
  function resolveIndexes(items) {
@@ -657,4 +661,4 @@ function isV0Error(value, code) {
657
661
  return /* @__PURE__ */ isUndefined(code) || value.code === code;
658
662
  }
659
663
  //#endregion
660
- export { V0Error, apca, clamp, foreground, hexToRgb, instanceExists, instanceName, isArray, isBoolean, isElement, isFunction, isNaN, isNull, isNullOrUndefined, isNumber, isObject, isPrimitive, isString, isSymbol, isThenable, isUndefined, isV0Error, mergeDeep, range, resolveIds, resolveIndexes, rgbToHex, useId };
664
+ export { UNSAFE_KEYS, V0Error, apca, clamp, foreground, hexToRgb, instanceExists, instanceName, isArray, isBoolean, isElement, isFunction, isNaN, isNull, isNullOrUndefined, isNumber, isObject, isPrimitive, isString, isSymbol, isThenable, isUndefined, isV0Error, mergeDeep, range, resolveIds, resolveIndexes, rgbToHex, useId };
@@ -1,4 +1,5 @@
1
- import { n as createPagination, t as DataTableAdapter } from "./adapter-BCVxBtDp.mjs";
1
+ import { t as createPagination } from "./createPagination-B5dfqY-a.mjs";
2
+ import { t as DataTableAdapter } from "./adapter-CVoWg0sw.mjs";
2
3
  import { computed, toRef, watch } from "vue";
3
4
  //#region src/composables/createDataTable/adapters/v0.ts
4
5
  /**
@@ -1,7 +1,7 @@
1
- import { t as IN_BROWSER } from "./globals-DB-krEA-.mjs";
1
+ import { t as IN_BROWSER } from "./globals-C1X-9O7K.mjs";
2
2
  import { isNull, isString } from "./utilities/index.mjs";
3
- import { t as ThemeAdapter } from "./adapter-oM18AdUc.mjs";
4
- import { onScopeDispose, watch } from "vue";
3
+ import { t as ThemeAdapter } from "./adapter-Cj7vxEdB.mjs";
4
+ import { watch } from "vue";
5
5
  //#region src/composables/useTheme/adapters/v0.ts
6
6
  /**
7
7
  * Theme adapter that injects CSS custom properties via adoptedStyleSheets.
@@ -18,28 +18,39 @@ var V0StyleSheetThemeAdapter = class extends ThemeAdapter {
18
18
  setup(app, context, target) {
19
19
  if (IN_BROWSER) {
20
20
  this.update(context.colors.value, context.isDark.value);
21
- onScopeDispose(watch([context.colors, context.isDark], ([colors, isDark]) => {
21
+ const stopWatch = watch([context.colors, context.isDark], ([colors, isDark]) => {
22
22
  this.update(colors, isDark);
23
- }), true);
24
- if (/* @__PURE__ */ isNull(target)) return;
23
+ });
24
+ if (/* @__PURE__ */ isNull(target)) {
25
+ this.dispose = stopWatch;
26
+ return;
27
+ }
25
28
  const targetEl = target instanceof HTMLElement ? target : /* @__PURE__ */ isString(target) ? document.querySelector(target) : app._container || document.querySelector("#app") || document.body;
26
- if (!targetEl) return;
29
+ if (!targetEl) {
30
+ this.dispose = stopWatch;
31
+ return;
32
+ }
27
33
  if (context.selectedId.value) targetEl.dataset.theme = String(context.selectedId.value);
28
- onScopeDispose(watch(context.selectedId, (id) => {
34
+ const stopTheme = watch(context.selectedId, (id) => {
29
35
  if (!id) return;
30
36
  targetEl.dataset.theme = String(id);
31
- }), true);
37
+ });
38
+ this.dispose = () => {
39
+ stopWatch();
40
+ stopTheme();
41
+ };
32
42
  } else {
33
43
  const head = app._context?.provides?.usehead ?? app._context?.provides?.head;
34
44
  if (head?.push) {
35
45
  const id = context.selectedId.value;
36
- head.push({
46
+ const entry = head.push({
37
47
  htmlAttrs: { "data-theme": id ? String(id) : "" },
38
48
  style: [{
39
49
  innerHTML: this.generate(context.colors.value, context.isDark.value),
40
50
  id: this.stylesheetId
41
51
  }]
42
52
  });
53
+ if (entry?.dispose) this.dispose = entry.dispose;
43
54
  }
44
55
  }
45
56
  }
@@ -1,4 +1,4 @@
1
- import { n as LocaleAdapterContext, t as LocaleAdapter } from "./adapter-we-0GbFH.mjs";
1
+ import { n as LocaleAdapterContext, t as LocaleAdapter } from "./adapter-D2ABPTpo.mjs";
2
2
 
3
3
  //#region src/composables/useLocale/adapters/v0.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { t as IN_BROWSER } from "./globals-DB-krEA-.mjs";
1
+ import { t as IN_BROWSER } from "./globals-C1X-9O7K.mjs";
2
2
  import { isFunction } from "./utilities/index.mjs";
3
3
  import { t as LoggerAdapter } from "./adapter-Chznb9Ju.mjs";
4
4
  //#region src/composables/useLogger/adapters/v0.ts
@@ -1,4 +1,4 @@
1
- import { n as DataTableAdapterContext, r as DataTableAdapterResult, t as DataTableAdapter } from "./adapter-BO75n0Cn.mjs";
1
+ import { n as DataTableAdapterContext, r as DataTableAdapterResult, t as DataTableAdapter } from "./adapter-_srNCBEi.mjs";
2
2
 
3
3
  //#region src/composables/createDataTable/adapters/v0.d.ts
4
4
  declare class ClientDataTableAdapter<T extends Record<string, unknown>> extends DataTableAdapter<T> {
@@ -1,6 +1,6 @@
1
- import { t as IN_BROWSER } from "./globals-DB-krEA-.mjs";
1
+ import { t as IN_BROWSER } from "./globals-C1X-9O7K.mjs";
2
2
  import { isObject, isString, isUndefined } from "./utilities/index.mjs";
3
- import { t as LocaleAdapter } from "./adapter-D8zizQVP.mjs";
3
+ import { t as LocaleAdapter } from "./adapter-bwZo7b5p.mjs";
4
4
  //#region src/composables/useLocale/adapters/v0.ts
5
5
  /**
6
6
  * Default locale adapter for @vuetify/v0.
@@ -36,9 +36,8 @@ var V0LocaleAdapter = class extends LocaleAdapter {
36
36
  const target = this.context.has(prefix) ? prefix : locale;
37
37
  const path = `${target}.${this.context.has(prefix) ? rest.join(".") : key}`;
38
38
  if (visited.has(path)) return match;
39
- visited.add(path);
40
39
  const resolved = this.context.tokens.get(path)?.value;
41
- if (/* @__PURE__ */ isString(resolved)) return this.resolve(target, resolved, visited);
40
+ if (/* @__PURE__ */ isString(resolved)) return this.resolve(target, resolved, new Set(visited).add(path));
42
41
  return match;
43
42
  });
44
43
  }
@@ -1,4 +1,4 @@
1
- import { t as LoggerAdapter } from "./adapter-BEJXp-ie.mjs";
1
+ import { t as LoggerAdapter } from "./adapter-BYzU4Ey5.mjs";
2
2
 
3
3
  //#region src/composables/useLogger/adapters/v0.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { n as DataTableAdapterContext, r as DataTableAdapterResult, t as DataTableAdapter } from "./adapter-BO75n0Cn.mjs";
1
+ import { n as DataTableAdapterContext, r as DataTableAdapterResult, t as DataTableAdapter } from "./adapter-_srNCBEi.mjs";
2
2
 
3
3
  //#region src/composables/createDataTable/adapters/virtual.d.ts
4
4
  declare class VirtualDataTableAdapter<T extends Record<string, unknown>> extends DataTableAdapter<T> {
@@ -1,4 +1,5 @@
1
- import { n as createPagination, t as DataTableAdapter } from "./adapter-BCVxBtDp.mjs";
1
+ import { t as createPagination } from "./createPagination-B5dfqY-a.mjs";
2
+ import { t as DataTableAdapter } from "./adapter-CVoWg0sw.mjs";
2
3
  import { toRef, watch } from "vue";
3
4
  //#region src/composables/createDataTable/adapters/virtual.ts
4
5
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vuetify/v0",
3
- "version": "1.0.0-beta.0",
3
+ "version": "1.0.0-beta.2",
4
4
  "description": "A meta UI framework for building applications, component libraries, and design systems with Vue 3",
5
5
  "license": "MIT",
6
6
  "funding": [
@@ -15,6 +15,8 @@
15
15
  ],
16
16
  "types": "./dist/index.d.mts",
17
17
  "type": "module",
18
+ "sideEffects": false,
19
+ "web-types": "./dist/json/web-types.json",
18
20
  "files": [
19
21
  "dist"
20
22
  ],
@@ -26,7 +28,8 @@
26
28
  "peerDependencies": {
27
29
  "@adobe/leonardo-contrast-colors": ">=1.0.0",
28
30
  "@ant-design/colors": ">=7.0.0",
29
- "@flagsmith/flagsmith": "^11.0.0",
31
+ "@flagsmith/flagsmith": ">=11.0.0",
32
+ "@js-temporal/polyfill": ">=0.5.0",
30
33
  "@material/material-color-utilities": ">=0.3.0",
31
34
  "launchdarkly-js-client-sdk": "^3.0.0",
32
35
  "posthog-js": "^1.0.0",
@@ -37,6 +40,9 @@
37
40
  "@flagsmith/flagsmith": {
38
41
  "optional": true
39
42
  },
43
+ "@js-temporal/polyfill": {
44
+ "optional": true
45
+ },
40
46
  "launchdarkly-js-client-sdk": {
41
47
  "optional": true
42
48
  },
@@ -60,10 +66,10 @@
60
66
  "@adobe/leonardo-contrast-colors": "^1.1.0",
61
67
  "@ant-design/colors": "^8.0.1",
62
68
  "@flagsmith/flagsmith": "^11.0.0",
69
+ "@js-temporal/polyfill": "0.5.1",
63
70
  "@material/material-color-utilities": "^0.4.0",
64
71
  "@vue/compiler-dom": "^3.5.33",
65
72
  "@vue/test-utils": "^2.4.10",
66
- "concurrently": "^9.2.1",
67
73
  "launchdarkly-js-client-sdk": "^3.9.1",
68
74
  "posthog-js": "^1.372.6",
69
75
  "tsdown": "^0.21.10",
@@ -131,11 +137,8 @@
131
137
  "./package.json": "./package.json",
132
138
  "./browser": "./dist/browser/index.js"
133
139
  },
134
- "optionalDependencies": {
135
- "@js-temporal/polyfill": "0.5.1"
136
- },
137
140
  "scripts": {
138
- "build": "concurrently --names tsdown,webtypes --kill-others-on-fail --prefix-colors cyan,magenta 'pnpm build:tsdown' 'pnpm build:web-types'",
141
+ "build": "pnpm build:tsdown && pnpm build:web-types",
139
142
  "build:tsdown": "tsdown",
140
143
  "build:web-types": "tsx scripts/generate-web-types.ts",
141
144
  "generate:web-types": "tsx scripts/generate-web-types.ts",
@@ -1,4 +0,0 @@
1
- import "./adapter-oM18AdUc.mjs";
2
- import "./v0-Bx5Mi7qE.mjs";
3
- import "./unhead-CG672gKh.mjs";
4
- export {};
@@ -1,5 +0,0 @@
1
- import "./adapter-BCVxBtDp.mjs";
2
- import "./v0-COaQncfZ.mjs";
3
- import "./server-CZ83nTn_.mjs";
4
- import "./virtual-UumJ2BQ9.mjs";
5
- export {};
@@ -1,4 +0,0 @@
1
- import "./consola-cad-VEV2.mjs";
2
- import "./pino-BscMO3RR.mjs";
3
- import "./v0-CG9o3on7.mjs";
4
- export {};
@@ -1,2 +0,0 @@
1
- import "./v0-CHK79mZX.mjs";
2
- export {};
@@ -1,2 +0,0 @@
1
- import "./v0-Dvu8fMl3.mjs";
2
- export {};
@@ -1,48 +0,0 @@
1
- import { isNullOrUndefined } from "./utilities/index.mjs";
2
- import { t as FeaturesAdapter } from "./adapter-BSKx9WQ7.mjs";
3
- //#region src/composables/useFeatures/adapters/flagsmith.ts
4
- /**
5
- * @module FlagsmithFeaturesAdapter
6
- *
7
- * @remarks
8
- * Flagsmith adapter for feature flags.
9
- */
10
- var FlagsmithFeaturesAdapter = class extends FeaturesAdapter {
11
- client;
12
- options;
13
- constructor(client, options) {
14
- super();
15
- this.client = client;
16
- this.options = options;
17
- }
18
- setup(onUpdate) {
19
- const updateFlags = () => {
20
- const flags = this.client.getAllFlags();
21
- const adapterFlags = {};
22
- if (flags) for (const [key, flag] of Object.entries(flags)) {
23
- const isEnabled = flag.enabled;
24
- const variation = flag.value;
25
- adapterFlags[key] = /* @__PURE__ */ isNullOrUndefined(variation) ? isEnabled : {
26
- $value: isEnabled,
27
- $variation: variation
28
- };
29
- }
30
- return adapterFlags;
31
- };
32
- this.client.init({
33
- ...this.options,
34
- onChange: (oldFlags, params, loadingState) => {
35
- onUpdate(updateFlags());
36
- this.options.onChange?.(oldFlags, params, loadingState);
37
- }
38
- });
39
- this.disposeFn = () => this.client.stopListening();
40
- return updateFlags();
41
- }
42
- dispose() {
43
- this.disposeFn();
44
- }
45
- disposeFn = () => {};
46
- };
47
- //#endregion
48
- export { FlagsmithFeaturesAdapter as t };
@@ -1,38 +0,0 @@
1
- import { isBoolean } from "./utilities/index.mjs";
2
- import { t as FeaturesAdapter } from "./adapter-BSKx9WQ7.mjs";
3
- //#region src/composables/useFeatures/adapters/launchdarkly.ts
4
- /**
5
- * @module LaunchDarklyFeaturesAdapter
6
- *
7
- * @remarks
8
- * LaunchDarkly adapter for feature flags.
9
- */
10
- var LaunchDarklyFeaturesAdapter = class extends FeaturesAdapter {
11
- constructor(client) {
12
- super();
13
- this.client = client;
14
- }
15
- setup(onUpdate) {
16
- const collect = () => {
17
- const allFlags = this.client.allFlags();
18
- const flags = {};
19
- for (const [key, value] of Object.entries(allFlags)) flags[key] = /* @__PURE__ */ isBoolean(value) ? value : {
20
- $value: true,
21
- $variation: value
22
- };
23
- return flags;
24
- };
25
- function onChange() {
26
- onUpdate(collect());
27
- }
28
- this.client.on("change", onChange);
29
- this.disposeFn = () => this.client.off("change", onChange);
30
- return collect();
31
- }
32
- dispose() {
33
- this.disposeFn();
34
- }
35
- disposeFn = () => {};
36
- };
37
- //#endregion
38
- export { LaunchDarklyFeaturesAdapter as t };
@@ -1,47 +0,0 @@
1
- import { t as IN_BROWSER } from "./globals-DB-krEA-.mjs";
2
- import { isBoolean, isNullOrUndefined } from "./utilities/index.mjs";
3
- import { t as FeaturesAdapter } from "./adapter-BSKx9WQ7.mjs";
4
- //#region src/composables/useFeatures/adapters/posthog.ts
5
- /**
6
- * @module PostHogFeaturesAdapter
7
- *
8
- * @remarks
9
- * PostHog adapter for feature flags.
10
- */
11
- var PostHogFeaturesAdapter = class extends FeaturesAdapter {
12
- constructor(client) {
13
- super();
14
- this.client = client;
15
- }
16
- setup(onUpdate) {
17
- if (!IN_BROWSER) return {};
18
- const collect = () => {
19
- const flags = {};
20
- const activeFlags = this.client.featureFlags.getFlags();
21
- if (!activeFlags) return flags;
22
- for (const key of activeFlags) {
23
- const isEnabled = this.client.isFeatureEnabled(key) ?? false;
24
- const payload = this.client.getFeatureFlagPayload(key);
25
- if (/* @__PURE__ */ isNullOrUndefined(payload)) {
26
- const variant = this.client.getFeatureFlag(key);
27
- flags[key] = !/* @__PURE__ */ isBoolean(variant) && !/* @__PURE__ */ isNullOrUndefined(variant) ? {
28
- $value: true,
29
- $variation: variant
30
- } : isEnabled;
31
- } else flags[key] = {
32
- $value: isEnabled,
33
- $variation: payload
34
- };
35
- }
36
- return flags;
37
- };
38
- this.disposeFn = this.client.onFeatureFlags(() => onUpdate(collect()));
39
- return collect();
40
- }
41
- dispose() {
42
- this.disposeFn();
43
- }
44
- disposeFn = () => {};
45
- };
46
- //#endregion
47
- export { PostHogFeaturesAdapter as t };