@vuetify/v0 0.2.1 → 1.0.0-alpha.1

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 (113) hide show
  1. package/README.md +5 -1
  2. package/dist/{adapter-CCIeOzqr.mjs → adapter-CDpOQ8sn.mjs} +29 -20
  3. package/dist/{adapter-CcHB7rs3.d.mts → adapter-DoziXEzS.d.mts} +1 -1
  4. package/dist/{adapter-Drq1v5wV.mjs → adapter-DtgIrQsG.mjs} +5 -2
  5. package/dist/{adapter-BZjmDNJF.d.mts → adapter-J7ude3gO.d.mts} +2 -2
  6. package/dist/adapters-CFjrKxA2.mjs +5 -0
  7. package/dist/adapters-CiCexgsk.mjs +4 -0
  8. package/dist/{adapters-Cd8NDs18.mjs → adapters-Da2twiUn.mjs} +1 -1
  9. package/dist/adapters-DegUcfkd.mjs +2 -0
  10. package/dist/browser/index.js +10113 -8547
  11. package/dist/components/index.d.mts +3 -3
  12. package/dist/components/index.mjs +2 -2
  13. package/dist/{components-C142GPl_.mjs → components-CaPQCjo5.mjs} +1356 -386
  14. package/dist/composables/index.d.mts +11 -11
  15. package/dist/composables/index.mjs +24 -24
  16. package/dist/constants/index.mjs +2 -2
  17. package/dist/{createDataTable-DKE5QsMe.mjs → createDataTable-B4UflKnT.mjs} +100 -30
  18. package/dist/{createGroup-CzRZ9COh.mjs → createGroup-BC2nfttd.mjs} +24 -9
  19. package/dist/{createPagination-Tp4C4He8.mjs → createPagination-qvJkcTUY.mjs} +11 -7
  20. package/dist/{createSelection-Dsb3I0zm.mjs → createSelection-BA9guLah.mjs} +28 -21
  21. package/dist/{createSingle-C7IGUjP6.mjs → createSingle-BHxHLZeg.mjs} +13 -17
  22. package/dist/{createTokens-CHTawmud.mjs → createTokens-oJAeh262.mjs} +27 -15
  23. package/dist/{createTrinity-vvXk0ARD.mjs → createTrinity-BTCs1pYx.mjs} +34 -31
  24. package/dist/data-table/adapters/client/index.d.mts +1 -1
  25. package/dist/data-table/adapters/client/index.mjs +1 -1
  26. package/dist/data-table/adapters/index.d.mts +4 -4
  27. package/dist/data-table/adapters/index.mjs +5 -5
  28. package/dist/data-table/adapters/server/index.d.mts +1 -1
  29. package/dist/data-table/adapters/server/index.mjs +1 -1
  30. package/dist/data-table/adapters/virtual/index.d.mts +1 -1
  31. package/dist/data-table/adapters/virtual/index.mjs +1 -1
  32. package/dist/data-table/index.d.mts +6 -6
  33. package/dist/data-table/index.mjs +6 -6
  34. package/dist/date/index.mjs +1 -1
  35. package/dist/features/adapters/posthog/index.mjs +1 -1
  36. package/dist/features/index.d.mts +1 -1
  37. package/dist/features/index.mjs +1 -1
  38. package/dist/{globals-BrRJkuSY.mjs → globals-Berkg6mP.mjs} +1 -1
  39. package/dist/{htmlElements-DcYtv0hg.mjs → htmlElements-CIePKaTX.mjs} +1 -1
  40. package/dist/{index-76fQGkkO.d.mts → index-D4odwkZg.d.mts} +8 -11
  41. package/dist/{index-B_XLHftL.d.mts → index-DFvLSoto.d.mts} +296 -258
  42. package/dist/{index-DoGxDgdN.d.mts → index-DVPq3_Fz.d.mts} +55 -4
  43. package/dist/{index-BFuSOgUi.d.mts → index-Gk3x_7zD.d.mts} +1570 -437
  44. package/dist/{index-BUsrN1vL.d.mts → index-TtSSvHY6.d.mts} +1 -1
  45. package/dist/index.d.mts +12 -12
  46. package/dist/index.mjs +27 -27
  47. package/dist/json/attributes.json +276 -0
  48. package/dist/json/importMap.json +60 -0
  49. package/dist/json/tags.json +136 -2
  50. package/dist/json/web-types.json +1183 -344
  51. package/dist/locale/adapters/index.d.mts +2 -2
  52. package/dist/locale/adapters/index.mjs +2 -2
  53. package/dist/locale/adapters/v0/index.d.mts +1 -1
  54. package/dist/locale/adapters/v0/index.mjs +1 -1
  55. package/dist/locale/adapters/vue-i18n/index.d.mts +1 -1
  56. package/dist/locale/index.d.mts +3 -3
  57. package/dist/locale/index.mjs +2 -2
  58. package/dist/logger/adapters/index.mjs +2 -2
  59. package/dist/logger/adapters/v0/index.mjs +1 -1
  60. package/dist/logger/index.d.mts +1 -1
  61. package/dist/logger/index.mjs +2 -2
  62. package/dist/notifications/index.d.mts +1 -1
  63. package/dist/notifications/index.mjs +1 -1
  64. package/dist/palettes/ant/index.d.mts +1 -1
  65. package/dist/palettes/index.d.mts +2 -2
  66. package/dist/palettes/material/index.d.mts +1 -1
  67. package/dist/palettes/md1/index.d.mts +1 -1
  68. package/dist/palettes/md2/index.d.mts +1 -1
  69. package/dist/palettes/radix/index.d.mts +1 -1
  70. package/dist/palettes/tailwind/index.d.mts +1 -1
  71. package/dist/permissions/adapters/index.d.mts +1 -1
  72. package/dist/permissions/adapters/v0/index.d.mts +1 -1
  73. package/dist/permissions/index.d.mts +1 -1
  74. package/dist/permissions/index.mjs +1 -1
  75. package/dist/{posthog-Ccm8FQfD.mjs → posthog-CPvNHMUb.mjs} +1 -1
  76. package/dist/rules/index.d.mts +1 -1
  77. package/dist/rules/index.mjs +1 -1
  78. package/dist/{server-CIftA0pK.mjs → server-B6OtHgBT.mjs} +1 -1
  79. package/dist/{server-DNUTnISs.d.mts → server-ZiHJ4tfq.d.mts} +1 -1
  80. package/dist/storage/index.d.mts +1 -1
  81. package/dist/storage/index.mjs +1 -1
  82. package/dist/theme/adapters/index.d.mts +1 -1
  83. package/dist/theme/adapters/index.mjs +4 -4
  84. package/dist/theme/adapters/unhead/index.d.mts +1 -1
  85. package/dist/theme/adapters/unhead/index.mjs +1 -1
  86. package/dist/theme/adapters/v0/index.d.mts +1 -1
  87. package/dist/theme/adapters/v0/index.mjs +1 -1
  88. package/dist/theme/index.d.mts +1 -1
  89. package/dist/theme/index.mjs +3 -3
  90. package/dist/{toArray-doLQVI56.mjs → toArray-BA_JxFPv.mjs} +9 -0
  91. package/dist/{unhead--58lO3Z-.mjs → unhead-D2YqAcmF.mjs} +2 -2
  92. package/dist/{useClickOutside-BjO3Nty9.mjs → useClickOutside-B9a6Jext.mjs} +572 -160
  93. package/dist/{useFeatures-D9bGOvh4.mjs → useFeatures-wgMwaQ5W.mjs} +14 -5
  94. package/dist/{useLocale-BRQTt3Ka.mjs → useLocale-qMmVnAwS.mjs} +14 -5
  95. package/dist/{useLogger-Daz-Zr0z.mjs → useLogger-DFIRqm-N.mjs} +33 -16
  96. package/dist/{usePermissions-Yp3guoLH.mjs → usePermissions-tZhkBJmq.mjs} +11 -3
  97. package/dist/{useRules-BFPH7q8w.mjs → useRules-D3UXEtu7.mjs} +10 -2
  98. package/dist/{useTheme-zRa0Nh_g.mjs → useTheme-BeD__R8t.mjs} +14 -5
  99. package/dist/utilities/index.mjs +5 -5
  100. package/dist/{v0-CcV0VwYd.mjs → v0-6XptGYVx.mjs} +2 -2
  101. package/dist/{v0-DOq_Ia5H.mjs → v0-BG7RhKBv.mjs} +2 -2
  102. package/dist/{v0-Bno8FQ_F.mjs → v0-CNitYI9N.mjs} +1 -1
  103. package/dist/{v0-BpgPZ1qB.d.mts → v0-CWXUkMY0.d.mts} +1 -1
  104. package/dist/{v0-BAG8p0si.d.mts → v0-Dzw5OwNo.d.mts} +1 -1
  105. package/dist/{v0-D-AEQbvj.mjs → v0-I2mHxD9T.mjs} +1 -1
  106. package/dist/{virtual-BaQWQ9ji.d.mts → virtual-BCOfxnRS.d.mts} +1 -1
  107. package/dist/{virtual-D1HwNBLS.mjs → virtual-To-dSw2_.mjs} +2 -2
  108. package/package.json +10 -7
  109. package/SKILL.md +0 -95
  110. package/dist/adapters-BbNfjyvY.mjs +0 -5
  111. package/dist/adapters-BzRMo72Y.mjs +0 -4
  112. package/dist/adapters-_DyP1X4U.mjs +0 -2
  113. /package/dist/{index-c55Utzva.d.mts → index-DvuJXuAN.d.mts} +0 -0
@@ -1,10 +1,10 @@
1
1
  import { isArray, isBoolean, isFunction, isObject } from "./utilities/index.mjs";
2
- import { o as createPluginContext } from "./useLogger-Daz-Zr0z.mjs";
3
- import { t as createTokens } from "./createTokens-CHTawmud.mjs";
4
- import { t as createGroup } from "./createGroup-CzRZ9COh.mjs";
2
+ import { o as createPluginContext } from "./useLogger-DFIRqm-N.mjs";
3
+ import { t as createTokens } from "./createTokens-oJAeh262.mjs";
4
+ import { t as createGroup } from "./createGroup-BC2nfttd.mjs";
5
5
  import "./flagsmith-DQnnahG5.mjs";
6
6
  import "./launchdarkly-2_48EJ1_.mjs";
7
- import "./posthog-Ccm8FQfD.mjs";
7
+ import "./posthog-CPvNHMUb.mjs";
8
8
  //#region src/composables/useFeatures/adapters/generic/index.ts
9
9
  var FeaturesAdapter = class {};
10
10
  //#endregion
@@ -27,6 +27,15 @@ var FeaturesAdapter = class {};
27
27
  *
28
28
  * Inheritance chain: createRegistry → createSelection → createGroup → createFeatures
29
29
  * Integrates with createTokens for token-based features.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * import { useFeatures } from '@vuetify/v0'
34
+ *
35
+ * const features = useFeatures()
36
+ * features.register({ id: 'new-checkout', value: true })
37
+ * console.log(features.variation('new-checkout'))
38
+ * ```
30
39
  */
31
40
  /**
32
41
  * Creates a new features instance.
@@ -54,7 +63,7 @@ function createFeatures(_options = {}) {
54
63
  const tokens = createTokens(features, { flat: true });
55
64
  const registry = createGroup({
56
65
  ...options,
57
- reactive: true
66
+ events: true
58
67
  });
59
68
  for (const [id, { value }] of tokens.entries()) register({
60
69
  id,
@@ -1,8 +1,8 @@
1
- import { o as createPluginContext } from "./useLogger-Daz-Zr0z.mjs";
2
- import { r as flatten, t as createTokens } from "./createTokens-CHTawmud.mjs";
3
- import { t as createSingle } from "./createSingle-C7IGUjP6.mjs";
4
- import { t as Vuetify0LocaleAdapter } from "./v0-D-AEQbvj.mjs";
5
- import "./adapters-_DyP1X4U.mjs";
1
+ import { o as createPluginContext } from "./useLogger-DFIRqm-N.mjs";
2
+ import { r as flatten, t as createTokens } from "./createTokens-oJAeh262.mjs";
3
+ import { t as createSingle } from "./createSingle-BHxHLZeg.mjs";
4
+ import { t as Vuetify0LocaleAdapter } from "./v0-I2mHxD9T.mjs";
5
+ import "./adapters-DegUcfkd.mjs";
6
6
  //#region src/composables/useLocale/index.ts
7
7
  /**
8
8
  * @module useLocale
@@ -20,6 +20,15 @@ import "./adapters-_DyP1X4U.mjs";
20
20
  * - Adapter pattern for integration with i18n providers (VueI18nLocaleAdapter included)
21
21
  *
22
22
  * Integrates with createSingle for locale selection and createTokens for message resolution.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * import { useLocale } from '@vuetify/v0'
27
+ *
28
+ * const { t, n } = useLocale()
29
+ * console.log(t('$v0.greeting', { name: 'World' }))
30
+ * console.log(n(1234.56))
31
+ * ```
23
32
  */
24
33
  /**
25
34
  * Creates a new locale instance.
@@ -1,9 +1,9 @@
1
- import { s as __LOGGER_ENABLED__, t as IN_BROWSER } from "./globals-BrRJkuSY.mjs";
2
- import { isNullOrUndefined } from "./utilities/index.mjs";
3
- import { i as useContext, n as createContext, t as createTrinity } from "./createTrinity-vvXk0ARD.mjs";
4
- import { t as Vuetify0LoggerAdapter } from "./v0-Bno8FQ_F.mjs";
5
- import "./adapters-Cd8NDs18.mjs";
6
- import { hasInjectionContext, watch } from "vue";
1
+ import { s as __LOGGER_ENABLED__, t as IN_BROWSER } from "./globals-Berkg6mP.mjs";
2
+ import { isNullOrUndefined, isUndefined } from "./utilities/index.mjs";
3
+ import { i as useContext, t as createTrinity } from "./createTrinity-BTCs1pYx.mjs";
4
+ import { t as Vuetify0LoggerAdapter } from "./v0-CNitYI9N.mjs";
5
+ import "./adapters-Da2twiUn.mjs";
6
+ import { hasInjectionContext, inject, watch } from "vue";
7
7
  //#region src/composables/createPlugin/index.ts
8
8
  /**
9
9
  * @module createPlugin
@@ -20,6 +20,17 @@ import { hasInjectionContext, watch } from "vue";
20
20
  * Also exports `createPluginContext` — a higher-level factory that generates the standard
21
21
  * context/plugin/consumer triple for plugin composables, eliminating boilerplate.
22
22
  * Supports `persist()` / `restore()` lifecycle hooks for saving and rehydrating plugin state.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * import { createPlugin } from '@vuetify/v0'
27
+ *
28
+ * const plugin = createPlugin({
29
+ * namespace: 'v0:my-plugin',
30
+ * provide: app => app.provide('my-key', { greet: () => 'hello' }),
31
+ * })
32
+ * // app.use(plugin)
33
+ * ```
23
34
  */
24
35
  const INSTALLED = Symbol.for("v0:installed-plugins");
25
36
  function getInstalled(app) {
@@ -94,12 +105,7 @@ function getPersistedStorage() {
94
105
  function createPluginContext(defaultNamespace, factory, config) {
95
106
  function createXContext(_options = {}) {
96
107
  const { namespace = defaultNamespace, persist: _persist, ...options } = _options;
97
- const [_use, _provide] = createContext(namespace);
98
- const context = factory(options);
99
- function provide(_context = context, app) {
100
- return _provide(_context, app);
101
- }
102
- return createTrinity(_use, provide, context);
108
+ return createTrinity(namespace, factory(options));
103
109
  }
104
110
  function createXPlugin(_options = {}) {
105
111
  const { namespace = defaultNamespace, persist: shouldPersist, ...options } = _options;
@@ -124,18 +130,20 @@ function createPluginContext(defaultNamespace, factory, config) {
124
130
  const storage = getPersistedStorage();
125
131
  const key = deriveKey(namespace);
126
132
  const stored = storage.get(key);
127
- watch(() => config.persist(context), (val) => {
133
+ const stop = watch(() => config.persist(context), (val) => {
128
134
  stored.value = val;
129
135
  });
136
+ app.onUnmount(stop);
130
137
  }
131
138
  } : void 0
132
139
  });
133
140
  }
134
141
  function useX(namespace = defaultNamespace) {
135
142
  if (config?.fallback) {
136
- const instance = config.fallback(namespace);
137
- if (!hasInjectionContext()) return instance;
138
- return useContext(namespace, instance);
143
+ if (!hasInjectionContext()) return config.fallback(namespace);
144
+ const provided = inject(namespace, void 0);
145
+ if (!/* @__PURE__ */ isUndefined(provided)) return provided;
146
+ return config.fallback(namespace);
139
147
  }
140
148
  return useContext(namespace);
141
149
  }
@@ -163,6 +171,15 @@ function createPluginContext(defaultNamespace, factory, config) {
163
171
  * - Context logging support
164
172
  *
165
173
  * Uses adapter pattern to abstract logging implementation.
174
+ *
175
+ * @example
176
+ * ```ts
177
+ * import { useLogger } from '@vuetify/v0'
178
+ *
179
+ * const logger = useLogger()
180
+ * logger.info('hello')
181
+ * logger.warn('careful')
182
+ * ```
166
183
  */
167
184
  /**
168
185
  * Creates a new logger instance.
@@ -1,6 +1,6 @@
1
- import { o as createPluginContext } from "./useLogger-Daz-Zr0z.mjs";
2
- import { t as createTokens } from "./createTokens-CHTawmud.mjs";
3
- import { t as toArray } from "./toArray-doLQVI56.mjs";
1
+ import { o as createPluginContext } from "./useLogger-DFIRqm-N.mjs";
2
+ import { t as createTokens } from "./createTokens-oJAeh262.mjs";
3
+ import { t as toArray } from "./toArray-BA_JxFPv.mjs";
4
4
  import { t as Vuetify0PermissionAdapter } from "./v0-4OQBCeda.mjs";
5
5
  import "./adapters-BhNTUuxE.mjs";
6
6
  //#region src/composables/usePermissions/index.ts
@@ -20,6 +20,14 @@ import "./adapters-BhNTUuxE.mjs";
20
20
  * - Adapter pattern for custom permission systems
21
21
  *
22
22
  * Built on createTokens for flexible permission configuration.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * import { usePermissions } from '@vuetify/v0'
27
+ *
28
+ * const permissions = usePermissions()
29
+ * console.log(permissions.can('admin', 'edit', 'users'))
30
+ * ```
23
31
  */
24
32
  /**
25
33
  * Creates a new permissions instance.
@@ -1,6 +1,6 @@
1
1
  import { instanceExists, isFunction, isObject } from "./utilities/index.mjs";
2
- import { o as createPluginContext } from "./useLogger-Daz-Zr0z.mjs";
3
- import { a as useLocale } from "./useLocale-BRQTt3Ka.mjs";
2
+ import { o as createPluginContext } from "./useLogger-DFIRqm-N.mjs";
3
+ import { a as useLocale } from "./useLocale-qMmVnAwS.mjs";
4
4
  //#region src/composables/useRules/adapters/standard.ts
5
5
  /**
6
6
  * Type guard for Standard Schema objects.
@@ -54,6 +54,14 @@ function toRule(schema) {
54
54
  * - `false` — validation fails, error message resolved from locale (`$rules.<name>`)
55
55
  *
56
56
  * Integrates with createValidation for rule resolution, useLocale for i18n.
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * import { useRules } from '@vuetify/v0'
61
+ *
62
+ * const rules = useRules()
63
+ * const validators = rules.resolve(['required', v => v.length > 3 || 'Too short'])
64
+ * ```
57
65
  */
58
66
  /**
59
67
  * Wraps an alias predicate so that `false` results are
@@ -1,9 +1,9 @@
1
1
  import { foreground } from "./utilities/index.mjs";
2
- import { o as createPluginContext } from "./useLogger-Daz-Zr0z.mjs";
3
- import { r as flatten, t as createTokens } from "./createTokens-CHTawmud.mjs";
4
- import { t as createSingle } from "./createSingle-C7IGUjP6.mjs";
5
- import { t as V0StyleSheetThemeAdapter } from "./v0-CcV0VwYd.mjs";
6
- import "./adapters-BzRMo72Y.mjs";
2
+ import { o as createPluginContext } from "./useLogger-DFIRqm-N.mjs";
3
+ import { r as flatten, t as createTokens } from "./createTokens-oJAeh262.mjs";
4
+ import { t as createSingle } from "./createSingle-BHxHLZeg.mjs";
5
+ import { t as V0StyleSheetThemeAdapter } from "./v0-6XptGYVx.mjs";
6
+ import "./adapters-CiCexgsk.mjs";
7
7
  import { computed, shallowRef, toRef } from "vue";
8
8
  //#region src/composables/useTheme/index.ts
9
9
  /**
@@ -24,6 +24,15 @@ import { computed, shallowRef, toRef } from "vue";
24
24
  * - Theme cycling
25
25
  *
26
26
  * Integrates with createSingle for selection and createTokens for color resolution.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * import { useTheme } from '@vuetify/v0'
31
+ *
32
+ * const theme = useTheme()
33
+ * theme.select('dark')
34
+ * console.log(theme.isDark.value) // true
35
+ * ```
27
36
  */
28
37
  /**
29
38
  * Creates a new theme instance.
@@ -1,4 +1,4 @@
1
- import { t as IN_BROWSER } from "../globals-BrRJkuSY.mjs";
1
+ import { t as IN_BROWSER } from "../globals-Berkg6mP.mjs";
2
2
  import * as Vue from "vue";
3
3
  import { useId as useId$1 } from "vue";
4
4
  //#region src/utilities/color.ts
@@ -9,7 +9,7 @@ function hexToRgb(hex) {
9
9
  const g = Number.parseInt(clean[1] + clean[1], 16);
10
10
  const b = Number.parseInt(clean[2] + clean[2], 16);
11
11
  const a = clean.length === 4 ? Number.parseInt(clean[3] + clean[3], 16) : void 0;
12
- return a === void 0 ? {
12
+ return /* @__PURE__ */ isUndefined(a) ? {
13
13
  r,
14
14
  g,
15
15
  b
@@ -24,7 +24,7 @@ function hexToRgb(hex) {
24
24
  const g = Number.parseInt(clean.slice(2, 4), 16);
25
25
  const b = Number.parseInt(clean.slice(4, 6), 16);
26
26
  const a = clean.length === 8 ? Number.parseInt(clean.slice(6, 8), 16) : void 0;
27
- return a === void 0 ? {
27
+ return /* @__PURE__ */ isUndefined(a) ? {
28
28
  r,
29
29
  g,
30
30
  b
@@ -41,7 +41,7 @@ function rgbToHex({ r, g, b, a }) {
41
41
  g,
42
42
  b
43
43
  ].map((c) => c.toString(16).padStart(2, "0")).join("");
44
- if (a !== void 0) return hex + a.toString(16).padStart(2, "0");
44
+ if (!/* @__PURE__ */ isUndefined(a)) return hex + a.toString(16).padStart(2, "0");
45
45
  return hex;
46
46
  }
47
47
  //#endregion
@@ -379,7 +379,7 @@ function isSymbol(item) {
379
379
  function isNaN(item) {
380
380
  return /* @__PURE__ */ isNumber(item) && Number.isNaN(item);
381
381
  }
382
- const UNSAFE_KEYS = new Set([
382
+ const UNSAFE_KEYS = /* @__PURE__ */ new Set([
383
383
  "__proto__",
384
384
  "constructor",
385
385
  "prototype"
@@ -1,6 +1,6 @@
1
- import { t as IN_BROWSER } from "./globals-BrRJkuSY.mjs";
1
+ import { t as IN_BROWSER } from "./globals-Berkg6mP.mjs";
2
2
  import { isNull, isString } from "./utilities/index.mjs";
3
- import { t as ThemeAdapter } from "./adapter-Drq1v5wV.mjs";
3
+ import { t as ThemeAdapter } from "./adapter-DtgIrQsG.mjs";
4
4
  import { onScopeDispose, watch } from "vue";
5
5
  //#region src/composables/useTheme/adapters/v0.ts
6
6
  /**
@@ -1,5 +1,5 @@
1
- import { t as DataTableAdapter } from "./adapter-CCIeOzqr.mjs";
2
- import { t as createPagination } from "./createPagination-Tp4C4He8.mjs";
1
+ import { t as DataTableAdapter } from "./adapter-CDpOQ8sn.mjs";
2
+ import { t as createPagination } from "./createPagination-qvJkcTUY.mjs";
3
3
  import { computed, toRef, watch } from "vue";
4
4
  //#region src/composables/createDataTable/adapters/v0.ts
5
5
  /**
@@ -1,4 +1,4 @@
1
- import { t as IN_BROWSER } from "./globals-BrRJkuSY.mjs";
1
+ import { t as IN_BROWSER } from "./globals-Berkg6mP.mjs";
2
2
  import { isFunction } from "./utilities/index.mjs";
3
3
  //#region src/composables/useLogger/adapters/v0.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { n as LocaleAdapterContext, t as LocaleAdapter } from "./adapter-CcHB7rs3.mjs";
1
+ import { n as LocaleAdapterContext, t as LocaleAdapter } from "./adapter-DoziXEzS.mjs";
2
2
 
3
3
  //#region src/composables/useLocale/adapters/v0.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { i as DataTableAdapterResult, n as DataTableAdapterContext, t as DataTableAdapter } from "./adapter-BZjmDNJF.mjs";
1
+ import { i as DataTableAdapterResult, n as DataTableAdapterContext, t as DataTableAdapter } from "./adapter-J7ude3gO.mjs";
2
2
 
3
3
  //#region src/composables/createDataTable/adapters/v0.d.ts
4
4
  declare class ClientAdapter<T extends Record<string, unknown>> extends DataTableAdapter<T> {
@@ -1,4 +1,4 @@
1
- import { t as IN_BROWSER } from "./globals-BrRJkuSY.mjs";
1
+ import { t as IN_BROWSER } from "./globals-Berkg6mP.mjs";
2
2
  import { isObject, isString, isUndefined } from "./utilities/index.mjs";
3
3
  //#region src/composables/useLocale/adapters/v0.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { i as DataTableAdapterResult, n as DataTableAdapterContext, t as DataTableAdapter } from "./adapter-BZjmDNJF.mjs";
1
+ import { i as DataTableAdapterResult, n as DataTableAdapterContext, t as DataTableAdapter } from "./adapter-J7ude3gO.mjs";
2
2
 
3
3
  //#region src/composables/createDataTable/adapters/virtual.d.ts
4
4
  declare class VirtualAdapter<T extends Record<string, unknown>> extends DataTableAdapter<T> {
@@ -1,5 +1,5 @@
1
- import { t as DataTableAdapter } from "./adapter-CCIeOzqr.mjs";
2
- import { t as createPagination } from "./createPagination-Tp4C4He8.mjs";
1
+ import { t as DataTableAdapter } from "./adapter-CDpOQ8sn.mjs";
2
+ import { t as createPagination } from "./createPagination-qvJkcTUY.mjs";
3
3
  import { toRef, watch } from "vue";
4
4
  //#region src/composables/createDataTable/adapters/virtual.ts
5
5
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vuetify/v0",
3
- "version": "0.2.1",
3
+ "version": "1.0.0-alpha.1",
4
4
  "description": "A meta UI framework for building applications, component libraries, and design systems with Vue 3",
5
5
  "license": "MIT",
6
6
  "types": "./dist/index.d.mts",
@@ -52,17 +52,18 @@
52
52
  "@ant-design/colors": "^8.0.1",
53
53
  "@flagsmith/flagsmith": "^11.0.0",
54
54
  "@material/material-color-utilities": "^0.4.0",
55
- "@vue/compiler-dom": "^3.5.31",
55
+ "@vue/compiler-dom": "^3.5.32",
56
56
  "@vue/test-utils": "^2.4.6",
57
- "launchdarkly-js-client-sdk": "^3.9.0",
58
- "posthog-js": "^1.364.1",
57
+ "concurrently": "^9.2.1",
58
+ "launchdarkly-js-client-sdk": "^3.9.1",
59
+ "posthog-js": "^1.365.0",
59
60
  "tsdown": "^0.21.7",
60
61
  "tsx": "4.21.0",
61
62
  "typescript": "6.0.2",
62
63
  "unplugin-vue": "^7.1.1",
63
- "vue": "3.5.31",
64
+ "vue": "3.5.32",
64
65
  "vue-component-meta": "3.2.6",
65
- "vue-i18n": "^11.3.0"
66
+ "vue-i18n": "^11.3.1"
66
67
  },
67
68
  "imports": {
68
69
  "#v0/*": {
@@ -125,7 +126,9 @@
125
126
  "@js-temporal/polyfill": "0.5.1"
126
127
  },
127
128
  "scripts": {
128
- "build": "tsdown && pnpm generate:web-types",
129
+ "build": "concurrently --names tsdown,webtypes --kill-others-on-fail --prefix-colors cyan,magenta 'pnpm build:tsdown' 'pnpm build:web-types'",
130
+ "build:tsdown": "tsdown",
131
+ "build:web-types": "tsx scripts/generate-web-types.ts",
129
132
  "generate:web-types": "tsx scripts/generate-web-types.ts",
130
133
  "typecheck": "vue-tsc --noEmit --incremental"
131
134
  }
package/SKILL.md DELETED
@@ -1,95 +0,0 @@
1
- ---
2
- name: vuetify0
3
- description: Build with @vuetify/v0 headless composables and components for Vue 3. Use when creating selection state (single, multi, grouped, stepped), form validation, tab/dialog/popover UI, provide/inject context, registries, virtual scrolling, pagination, keyboard shortcuts, resize observers, theming, breakpoints, or SSR-safe browser detection. Triggers on v0, vuetify0, headless components, or WAI-ARIA patterns.
4
- ---
5
-
6
- # Vuetify0 - Headless Composables & Components
7
-
8
- Transform Vue 3 apps with unstyled, logic-focused building blocks for design systems.
9
-
10
- ## Quick Start
11
-
12
- ```bash
13
- pnpm install @vuetify/v0
14
- ```
15
-
16
- No global plugin required. Import only what you need:
17
-
18
- ```ts
19
- import { createSelection } from '@vuetify/v0/composables'
20
- import { Tabs } from '@vuetify/v0/components'
21
- ```
22
-
23
- ## Core Decision Tree
24
-
25
- **Before writing custom logic**, check if v0 already provides it:
26
-
27
- | Need | Use |
28
- |------|-----|
29
- | Single item selection | `createSingle` |
30
- | Multi-item selection | `createSelection` |
31
- | Selection with "select all" | `createGroup` |
32
- | Step wizard / carousel | `createStep` |
33
- | Form validation | `createForm` |
34
- | Shared state (provide/inject) | `createContext` |
35
- | Browser utilities | `IN_BROWSER`, `useBreakpoints`, `useMediaQuery` |
36
-
37
- ## Component Architecture
38
-
39
- All components are **headless** (unstyled) and follow WAI-ARIA patterns:
40
-
41
- ```vue
42
- <script setup>
43
- import { Tabs } from '@vuetify/v0/components'
44
- </script>
45
-
46
- <template>
47
- <Tabs.Root v-model="active">
48
- <Tabs.List>
49
- <Tabs.Item value="overview">Overview</Tabs.Item>
50
- </Tabs.List>
51
- <Tabs.Panel value="overview">Content</Tabs.Panel>
52
- </Tabs.Root>
53
- </template>
54
- ```
55
-
56
- **Available components**: Dialog, Tabs, ExpansionPanel, Checkbox, Radio, Popover, Pagination, Select, Slider, Splitter, Switch, Avatar, Breadcrumbs, Form, Input, Scrim
57
-
58
- ## Essential Patterns
59
-
60
- ### Selection State
61
- ```ts
62
- // Single selection (tabs, theme picker)
63
- const single = createSingle({ mandatory: 'force' })
64
-
65
- // Multi-selection (tags, filters)
66
- const selection = createSelection({ multiple: true })
67
-
68
- // Group with "select all" (data tables)
69
- const group = createGroup()
70
- ```
71
-
72
- ### Context Sharing
73
- ```ts
74
- // Type-safe provide/inject
75
- const [useTheme, provideTheme] = createContext<Theme>('Theme')
76
- ```
77
-
78
- ### Form Validation
79
- ```ts
80
- const form = createForm()
81
- form.register({ id: 'email', rules: [required, email] })
82
- ```
83
-
84
- ## Anti-Patterns
85
-
86
- **Don't reinvent these wheels:**
87
-
88
- - **Custom selection logic** → Use `createSelection`
89
- - **Manual provide/inject** → Use `createContext`
90
- - **SSR checks** → Use `IN_BROWSER` constant
91
-
92
- ## Resources
93
-
94
- - **Vuetify MCP** for structured API access: `claude mcp add vuetify-mcp https://mcp.vuetifyjs.com/mcp`
95
- - **Live docs**: https://0.vuetifyjs.com
@@ -1,5 +0,0 @@
1
- import "./adapter-CCIeOzqr.mjs";
2
- import "./v0-DOq_Ia5H.mjs";
3
- import "./server-CIftA0pK.mjs";
4
- import "./virtual-D1HwNBLS.mjs";
5
- export {};
@@ -1,4 +0,0 @@
1
- import "./adapter-Drq1v5wV.mjs";
2
- import "./v0-CcV0VwYd.mjs";
3
- import "./unhead--58lO3Z-.mjs";
4
- export {};
@@ -1,2 +0,0 @@
1
- import "./v0-D-AEQbvj.mjs";
2
- export {};