@nuxt/ui 2.21.0 → 2.21.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.
package/README.md CHANGED
@@ -30,16 +30,6 @@ Read more on [ui.nuxt.com](https://ui.nuxt.com)
30
30
  npx nuxi@latest module add ui
31
31
  ```
32
32
 
33
- If you want latest updates, please use `@nuxt/ui-edge` in your `package.json`:
34
-
35
- ```json
36
- {
37
- "devDependencies": {
38
- "@nuxt/ui": "npm:@nuxt/ui-edge@latest"
39
- }
40
- }
41
- ```
42
-
43
33
  ## Documentation
44
34
 
45
35
  Visit https://ui.nuxt.com to explore the documentation.
package/dist/module.d.mts CHANGED
@@ -25,6 +25,10 @@ interface ModuleOptions {
25
25
  * @default false
26
26
  */
27
27
  global?: boolean;
28
+ /**
29
+ * @default true
30
+ */
31
+ colorMode?: boolean;
28
32
  safelistColors?: string[];
29
33
  /**
30
34
  * Disables the global css styles added by the module.
package/dist/module.d.ts CHANGED
@@ -25,6 +25,10 @@ interface ModuleOptions {
25
25
  * @default false
26
26
  */
27
27
  global?: boolean;
28
+ /**
29
+ * @default true
30
+ */
31
+ colorMode?: boolean;
28
32
  safelistColors?: string[];
29
33
  /**
30
34
  * Disables the global css styles added by the module.
package/dist/module.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuxt/ui",
3
- "version": "2.21.0",
3
+ "version": "2.21.1",
4
4
  "configKey": "ui",
5
5
  "compatibility": {
6
6
  "nuxt": ">=3.10.0"
package/dist/module.mjs CHANGED
@@ -14,7 +14,7 @@ const __filename = __cjs_url__.fileURLToPath(import.meta.url);
14
14
  const __dirname = __cjs_path__.dirname(__filename);
15
15
  const require = __cjs_mod__.createRequire(import.meta.url);
16
16
  const name = "@nuxt/ui";
17
- const version = "2.21.0";
17
+ const version = "2.21.1";
18
18
 
19
19
  function createTemplates(nuxt = useNuxt()) {
20
20
  const template = addTemplate({
@@ -129,6 +129,7 @@ const module = defineNuxtModule({
129
129
  },
130
130
  defaults: {
131
131
  prefix: "U",
132
+ colorMode: true,
132
133
  safelistColors: ["primary"],
133
134
  disableGlobalStyles: false
134
135
  },
@@ -143,7 +144,9 @@ const module = defineNuxtModule({
143
144
  }
144
145
  createTemplates(nuxt);
145
146
  await installModule("@nuxt/icon");
146
- await installModule("@nuxtjs/color-mode", { classSuffix: "" });
147
+ if (options.colorMode) {
148
+ await installModule("@nuxtjs/color-mode", { classSuffix: "" });
149
+ }
147
150
  await installTailwind(options, nuxt, resolve);
148
151
  addPlugin({
149
152
  src: resolve(runtimeDir, "plugins", "colors")
@@ -104,7 +104,6 @@
104
104
 
105
105
  <slot
106
106
  v-else
107
- :key="retriggerSlot"
108
107
  :name="`${column.key}-data`"
109
108
  :column="column"
110
109
  :row="row"
@@ -132,11 +131,11 @@
132
131
  </template>
133
132
 
134
133
  <script>
135
- import { computed, defineComponent, ref, toRaw, toRef, watch } from "vue";
134
+ import { computed, defineComponent, toRaw, toRef } from "vue";
136
135
  import { upperFirst } from "scule";
137
136
  import { defu } from "defu";
138
137
  import { useVModel } from "@vueuse/core";
139
- import { isEqual } from "ohash";
138
+ import { isEqual } from "ohash/utils";
140
139
  import UIcon from "../elements/Icon.vue";
141
140
  import UButton from "../elements/Button.vue";
142
141
  import UProgress from "../elements/Progress.vue";
@@ -289,7 +288,6 @@ export default defineComponent({
289
288
  row: null
290
289
  })
291
290
  });
292
- const retriggerSlot = ref(null);
293
291
  const savedSort = { column: sort.value.column, direction: null };
294
292
  const rows = computed(() => {
295
293
  if (!sort.value?.column || props.sortMode === "manual") {
@@ -422,11 +420,6 @@ export default defineComponent({
422
420
  }
423
421
  return void 0;
424
422
  }
425
- watch(rows, () => {
426
- retriggerSlot.value = /* @__PURE__ */ new Date();
427
- }, {
428
- deep: true
429
- });
430
423
  return {
431
424
  // eslint-disable-next-line vue/no-dupe-keys
432
425
  ui,
@@ -453,8 +446,7 @@ export default defineComponent({
453
446
  getRowData,
454
447
  toggleOpened,
455
448
  getAriaSort,
456
- isExpanded,
457
- retriggerSlot
449
+ isExpanded
458
450
  };
459
451
  }
460
452
  });
@@ -308,7 +308,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
308
308
  toggleOpened: (row: TableRow) => void;
309
309
  getAriaSort: (column: TableColumn) => AriaAttributes["aria-sort"];
310
310
  isExpanded: (row: TableRow) => boolean;
311
- retriggerSlot: import("vue").Ref<any, any>;
312
311
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "update:sort" | "update:expand" | "select:all")[], "update:modelValue" | "update:sort" | "update:expand" | "select:all", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
313
312
  modelValue: {
314
313
  type: ArrayConstructor;
@@ -14,7 +14,7 @@
14
14
  {{ title }}
15
15
  </slot>
16
16
  </p>
17
- <div v-if="description || $slots.description" :class="twMerge(ui.description, !title && !$slots.title && 'mt-0 leading-5')">
17
+ <div v-if="description || $slots.description" :class="twMerge(ui.description, !title && !$slots.title && ui.descriptionOnly)">
18
18
  <slot name="description" :description="description">
19
19
  {{ description }}
20
20
  </slot>
@@ -5,6 +5,7 @@ declare const config: {
5
5
  inner: string;
6
6
  title: string;
7
7
  description: string;
8
+ descriptionOnly: string;
8
9
  actions: string;
9
10
  shadow: string;
10
11
  rounded: string;
@@ -91,6 +92,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
91
92
  inner: string;
92
93
  title: string;
93
94
  description: string;
95
+ descriptionOnly: string;
94
96
  actions: string;
95
97
  shadow: string;
96
98
  rounded: string;
@@ -186,6 +188,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
186
188
  inner?: string;
187
189
  title?: string;
188
190
  description?: string;
191
+ descriptionOnly?: string;
189
192
  actions?: string;
190
193
  shadow?: string;
191
194
  rounded?: string;
@@ -32,7 +32,7 @@
32
32
  </template>
33
33
 
34
34
  <script>
35
- import { isEqual, diff } from "ohash";
35
+ import { isEqual, diff } from "ohash/utils";
36
36
  import { defineComponent } from "vue";
37
37
  import { nuxtLinkProps } from "../../utils";
38
38
  export default defineComponent({
@@ -76,11 +76,13 @@ export default defineComponent({
76
76
  function isPartiallyEqual(item1, item2) {
77
77
  const diffedKeys = diff(item1, item2).reduce((filtered, q) => {
78
78
  if (q.type === "added") {
79
- filtered.push(q.key);
79
+ filtered.add(q.key);
80
80
  }
81
81
  return filtered;
82
- }, []);
83
- return isEqual(item1, item2, { excludeKeys: (key) => diffedKeys.includes(key) });
82
+ }, /* @__PURE__ */ new Set());
83
+ const item1Filtered = Object.fromEntries(Object.entries(item1).filter(([key]) => !diffedKeys.has(key)));
84
+ const item2Filtered = Object.fromEntries(Object.entries(item2).filter(([key]) => !diffedKeys.has(key)));
85
+ return isEqual(item1Filtered, item2Filtered);
84
86
  }
85
87
  function resolveLinkClass(route, $route, { isActive, isExactActive }) {
86
88
  if (props.exactQuery === "partial") {
@@ -175,8 +175,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
175
175
  strategy?: Strategy;
176
176
  };
177
177
  size: "sm" | "xs" | "2xs" | "md" | "lg" | "xl" | "2xl";
178
- class: any;
179
178
  icon: string;
179
+ class: any;
180
180
  max: number;
181
181
  min: number;
182
182
  indicator: boolean;
@@ -168,6 +168,27 @@ function isValibotSchema(schema) {
168
168
  function isZodSchema(schema) {
169
169
  return schema.parse !== void 0;
170
170
  }
171
+ export function isStandardSchema(schema) {
172
+ return "~standard" in schema;
173
+ }
174
+ export async function validateStandardSchema(state, schema) {
175
+ const result = await schema["~standard"].validate(state);
176
+ if (!result.issues || result.issues.length === 0) {
177
+ const output = "value" in result ? result.value : null;
178
+ return {
179
+ errors: null,
180
+ result: output
181
+ };
182
+ }
183
+ const errors = result.issues.map((issue) => ({
184
+ path: issue.path?.map((item) => typeof item === "object" ? item.key : item).join(".") || "",
185
+ message: issue.message
186
+ }));
187
+ return {
188
+ errors,
189
+ result: null
190
+ };
191
+ }
171
192
  async function validateValibotSchema(state, schema) {
172
193
  const result = await ("_parse" in schema ? schema._parse(state) : "_run" in schema ? schema._run({ typed: false, value: state }, {}) : schema(state));
173
194
  if (!result.issues || result.issues.length === 0) {
@@ -265,7 +286,9 @@ async function validateYupSchema(state, schema) {
265
286
  }
266
287
  }
267
288
  function parseSchema(state, schema) {
268
- if (isZodSchema(schema)) {
289
+ if (isStandardSchema(schema)) {
290
+ return validateStandardSchema(state, schema);
291
+ } else if (isZodSchema(schema)) {
269
292
  return validateZodSchema(state, schema);
270
293
  } else if (isJoiSchema(schema)) {
271
294
  return validateJoiSchema(state, schema);
@@ -5,9 +5,10 @@ import type { ObjectSchema as YupObjectSchema } from 'yup';
5
5
  import type { BaseSchema as ValibotSchema30, BaseSchemaAsync as ValibotSchemaAsync30 } from 'valibot30';
6
6
  import type { GenericSchema as ValibotSchema31, GenericSchemaAsync as ValibotSchemaAsync31, SafeParser as ValibotSafeParser31, SafeParserAsync as ValibotSafeParserAsync31 } from 'valibot31';
7
7
  import type { GenericSchema as ValibotSchema, GenericSchemaAsync as ValibotSchemaAsync, SafeParser as ValibotSafeParser, SafeParserAsync as ValibotSafeParserAsync } from 'valibot';
8
+ import type { StandardSchemaV1 } from '@standard-schema/spec';
8
9
  import type { Struct } from 'superstruct';
9
- import type { FormError, FormEventType } from '../../types/form.js';
10
- type Schema = PropType<ZodSchema> | PropType<YupObjectSchema<any>> | PropType<JoiSchema> | PropType<ValibotSchema30 | ValibotSchemaAsync30> | PropType<ValibotSchema31 | ValibotSchemaAsync31> | PropType<ValibotSafeParser31<any, any> | ValibotSafeParserAsync31<any, any>> | PropType<ValibotSchema | ValibotSchemaAsync> | PropType<ValibotSafeParser<any, any> | ValibotSafeParserAsync<any, any>> | PropType<Struct<any, any>>;
10
+ import type { FormError, FormEventType, ValidateReturnSchema } from '../../types/form.js';
11
+ type Schema = PropType<ZodSchema> | PropType<YupObjectSchema<any>> | PropType<JoiSchema> | PropType<ValibotSchema30 | ValibotSchemaAsync30> | PropType<ValibotSchema31 | ValibotSchemaAsync31> | PropType<ValibotSafeParser31<any, any> | ValibotSafeParserAsync31<any, any>> | PropType<ValibotSchema | ValibotSchemaAsync> | PropType<ValibotSafeParser<any, any> | ValibotSafeParserAsync<any, any>> | PropType<Struct<any, any>> | PropType<StandardSchemaV1>;
11
12
  declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
12
13
  schema: {
13
14
  type: Schema;
@@ -55,8 +56,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
55
56
  onSubmit?: (...args: any[]) => any;
56
57
  onError?: (...args: any[]) => any;
57
58
  }>, {
58
- schema: ZodSchema<any, import("zod").ZodTypeDef, any> | YupObjectSchema<any, import("yup").AnyObject, any, ""> | import("joi").AnySchema<any> | ValibotSchema30<any, any> | ValibotSchemaAsync30<any, any> | ValibotSchema31<unknown, unknown, import("valibot31").BaseIssue<unknown>> | ValibotSchemaAsync31<unknown, unknown, import("valibot31").BaseIssue<unknown>> | ValibotSafeParser31<any, any> | ValibotSafeParserAsync31<any, any> | ValibotSchema<unknown, unknown, import("valibot").BaseIssue<unknown>> | ValibotSchemaAsync<unknown, unknown, import("valibot").BaseIssue<unknown>> | Struct<any, any>;
59
+ schema: ZodSchema<any, import("zod").ZodTypeDef, any> | YupObjectSchema<any, import("yup").AnyObject, any, ""> | import("joi").AnySchema<any> | ValibotSchema30<any, any> | ValibotSchemaAsync30<any, any> | ValibotSchema31<unknown, unknown, import("valibot31").BaseIssue<unknown>> | ValibotSchemaAsync31<unknown, unknown, import("valibot31").BaseIssue<unknown>> | ValibotSafeParser31<any, any> | ValibotSafeParserAsync31<any, any> | ValibotSchema<unknown, unknown, import("valibot").BaseIssue<unknown>> | ValibotSchemaAsync<unknown, unknown, import("valibot").BaseIssue<unknown>> | Struct<any, any> | StandardSchemaV1<unknown, unknown>;
59
60
  validate: ((state: any) => Promise<FormError[]>) | ((state: any) => FormError[]);
60
61
  validateOn: FormEventType[];
61
62
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
62
63
  export default _default;
64
+ export declare function isStandardSchema(schema: any): schema is StandardSchemaV1;
65
+ export declare function validateStandardSchema(state: any, schema: StandardSchemaV1): Promise<ValidateReturnSchema<typeof state>>;
@@ -103,7 +103,7 @@ import {
103
103
  import { computedAsync, useDebounceFn } from "@vueuse/core";
104
104
  import { defu } from "defu";
105
105
  import { twJoin } from "tailwind-merge";
106
- import { isEqual } from "ohash";
106
+ import { isEqual } from "ohash/utils";
107
107
  import UIcon from "../elements/Icon.vue";
108
108
  import UAvatar from "../elements/Avatar.vue";
109
109
  import { useUI } from "../../composables/useUI";
@@ -16,6 +16,7 @@
16
16
  :value="modelValue"
17
17
  :required="required"
18
18
  :class="uiMenu.required"
19
+ :form="inputTargetForm"
19
20
  tabindex="-1"
20
21
  aria-hidden="true"
21
22
  >
@@ -139,7 +140,7 @@ import {
139
140
  import { computedAsync, useDebounceFn } from "@vueuse/core";
140
141
  import { defu } from "defu";
141
142
  import { twJoin } from "tailwind-merge";
142
- import { isEqual } from "ohash";
143
+ import { isEqual } from "ohash/utils";
143
144
  import UIcon from "../elements/Icon.vue";
144
145
  import UAvatar from "../elements/Avatar.vue";
145
146
  import { useUI } from "../../composables/useUI";
@@ -308,6 +309,10 @@ export default defineComponent({
308
309
  type: Array,
309
310
  default: null
310
311
  },
312
+ inputTargetForm: {
313
+ type: String,
314
+ default: null
315
+ },
311
316
  popper: {
312
317
  type: Object,
313
318
  default: () => ({})
@@ -323,6 +323,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
323
323
  type: ArrayConstructor;
324
324
  default: any;
325
325
  };
326
+ inputTargetForm: {
327
+ type: StringConstructor;
328
+ default: any;
329
+ };
326
330
  popper: {
327
331
  type: PropType<PopperOptions>;
328
332
  default: () => {};
@@ -699,6 +703,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
699
703
  type: ArrayConstructor;
700
704
  default: any;
701
705
  };
706
+ inputTargetForm: {
707
+ type: StringConstructor;
708
+ default: any;
709
+ };
702
710
  popper: {
703
711
  type: PropType<PopperOptions>;
704
712
  default: () => {};
@@ -964,6 +972,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
964
972
  clearSearchOnClose: boolean;
965
973
  creatable: boolean;
966
974
  showCreateOptionWhen: "empty" | "always" | ((query: string, results: any[]) => boolean);
975
+ inputTargetForm: string;
967
976
  }, {}, {
968
977
  HCombobox: import("vue").DefineComponent<{
969
978
  as: {
@@ -18,7 +18,7 @@
18
18
  {{ title }}
19
19
  </slot>
20
20
  </p>
21
- <div v-if="(description || $slots.description)" :class="twMerge(ui.description, !title && !$slots.title && 'mt-0 leading-5')">
21
+ <div v-if="(description || $slots.description)" :class="twMerge(ui.description, !title && !$slots.title && ui.descriptionOnly)">
22
22
  <slot name="description" :description="description">
23
23
  {{ description }}
24
24
  </slot>
@@ -6,6 +6,7 @@ declare const config: {
6
6
  inner: string;
7
7
  title: string;
8
8
  description: string;
9
+ descriptionOnly: string;
9
10
  actions: string;
10
11
  background: string;
11
12
  shadow: string;
@@ -112,6 +113,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
112
113
  inner: string;
113
114
  title: string;
114
115
  description: string;
116
+ descriptionOnly: string;
115
117
  actions: string;
116
118
  background: string;
117
119
  shadow: string;
@@ -236,6 +238,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
236
238
  inner?: string;
237
239
  title?: string;
238
240
  description?: string;
241
+ descriptionOnly?: string;
239
242
  actions?: string;
240
243
  background?: string;
241
244
  shadow?: string;
@@ -125,6 +125,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
125
125
  inner: string;
126
126
  title: string;
127
127
  description: string;
128
+ descriptionOnly: string;
128
129
  actions: string;
129
130
  background: string;
130
131
  shadow: string;
@@ -183,6 +184,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
183
184
  inner: string;
184
185
  title: string;
185
186
  description: string;
187
+ descriptionOnly: string;
186
188
  actions: string;
187
189
  background: string;
188
190
  shadow: string;
@@ -293,6 +295,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
293
295
  inner: string;
294
296
  title: string;
295
297
  description: string;
298
+ descriptionOnly: string;
296
299
  actions: string;
297
300
  background: string;
298
301
  shadow: string;
@@ -355,6 +358,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
355
358
  inner?: string;
356
359
  title?: string;
357
360
  description?: string;
361
+ descriptionOnly?: string;
358
362
  actions?: string;
359
363
  background?: string;
360
364
  shadow?: string;
@@ -1,12 +1,12 @@
1
1
  export declare const _useShortcuts: () => {
2
2
  macOS: import("vue").ComputedRef<RegExpMatchArray>;
3
3
  metaSymbol: import("vue").Ref<string, string>;
4
- activeElement: import("vue").Ref<HTMLElement, HTMLElement>;
4
+ activeElement: import("vue").ShallowRef<HTMLElement, HTMLElement>;
5
5
  usingInput: import("vue").ComputedRef<string | boolean>;
6
6
  };
7
7
  export declare const useShortcuts: () => {
8
8
  macOS: import("vue").ComputedRef<RegExpMatchArray>;
9
9
  metaSymbol: import("vue").Ref<string, string>;
10
- activeElement: import("vue").Ref<HTMLElement, HTMLElement>;
10
+ activeElement: import("vue").ShallowRef<HTMLElement, HTMLElement>;
11
11
  usingInput: import("vue").ComputedRef<string | boolean>;
12
12
  };
@@ -4,6 +4,7 @@ declare const _default: {
4
4
  inner: string;
5
5
  title: string;
6
6
  description: string;
7
+ descriptionOnly: string;
7
8
  actions: string;
8
9
  shadow: string;
9
10
  rounded: string;
@@ -3,6 +3,7 @@ export default {
3
3
  inner: "w-0 flex-1",
4
4
  title: "text-sm font-medium",
5
5
  description: "mt-1 text-sm leading-4 opacity-90",
6
+ descriptionOnly: "mt-0 leading-5",
6
7
  actions: "flex items-center gap-2 mt-3 flex-shrink-0",
7
8
  shadow: "",
8
9
  rounded: "rounded-lg",
@@ -5,6 +5,7 @@ declare const _default: {
5
5
  inner: string;
6
6
  title: string;
7
7
  description: string;
8
+ descriptionOnly: string;
8
9
  actions: string;
9
10
  background: string;
10
11
  shadow: string;
@@ -4,6 +4,7 @@ export default {
4
4
  inner: "w-0 flex-1",
5
5
  title: "text-sm font-medium text-gray-900 dark:text-white",
6
6
  description: "mt-1 text-sm leading-4 text-gray-500 dark:text-gray-400",
7
+ descriptionOnly: "mt-0 leading-5",
7
8
  actions: "flex items-center gap-2 mt-3 flex-shrink-0",
8
9
  background: "bg-white dark:bg-gray-900",
9
10
  shadow: "shadow-lg",
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@nuxt/ui",
3
3
  "description": "A UI Library for Modern Web Apps, powered by Vue & Tailwind CSS.",
4
- "version": "2.21.0",
5
- "packageManager": "pnpm@9.15.3",
4
+ "version": "2.21.1",
5
+ "packageManager": "pnpm@10.6.1",
6
6
  "repository": "nuxt/ui",
7
7
  "homepage": "https://ui.nuxt.com",
8
8
  "type": "module",
@@ -32,11 +32,11 @@
32
32
  "test": "vitest"
33
33
  },
34
34
  "dependencies": {
35
- "@headlessui/tailwindcss": "^0.2.1",
35
+ "@headlessui/tailwindcss": "^0.2.2",
36
36
  "@headlessui/vue": "^1.7.23",
37
37
  "@iconify-json/heroicons": "^1.2.2",
38
38
  "@nuxt/icon": "^1.10.3",
39
- "@nuxt/kit": "^3.15.1",
39
+ "@nuxt/kit": "^3.16.0",
40
40
  "@nuxtjs/color-mode": "^3.5.2",
41
41
  "@nuxtjs/tailwindcss": "^6.13.1",
42
42
  "@popperjs/core": "^2.11.8",
@@ -44,38 +44,39 @@
44
44
  "@tailwindcss/container-queries": "^0.1.1",
45
45
  "@tailwindcss/forms": "^0.5.10",
46
46
  "@tailwindcss/typography": "^0.5.16",
47
- "@vueuse/core": "^12.4.0",
48
- "@vueuse/integrations": "^12.4.0",
49
- "@vueuse/math": "^12.4.0",
47
+ "@vueuse/core": "^12.8.2",
48
+ "@vueuse/integrations": "^12.8.2",
49
+ "@vueuse/math": "^12.8.2",
50
50
  "defu": "^6.1.4",
51
- "fuse.js": "^7.0.0",
52
- "ohash": "^1.1.4",
53
- "pathe": "^2.0.1",
51
+ "fuse.js": "^7.1.0",
52
+ "ohash": "^2.0.11",
53
+ "pathe": "^2.0.3",
54
54
  "scule": "^1.3.0",
55
55
  "tailwind-merge": "^2.6.0",
56
56
  "tailwindcss": "^3.4.17"
57
57
  },
58
58
  "devDependencies": {
59
- "@nuxt/eslint-config": "^0.7.5",
59
+ "@nuxt/eslint-config": "^1.1.0",
60
60
  "@nuxt/module-builder": "^0.8.4",
61
- "@nuxt/test-utils": "^3.15.4",
61
+ "@standard-schema/spec": "^1.0.0",
62
+ "@nuxt/test-utils": "^3.17.1",
62
63
  "@release-it/conventional-changelog": "^10.0.0",
63
64
  "@vue/test-utils": "^2.4.6",
64
- "eslint": "^9.18.0",
65
- "happy-dom": "^14.12.3",
65
+ "eslint": "^9.22.0",
66
+ "happy-dom": "^17.1.8",
66
67
  "joi": "^17.13.3",
67
- "nuxt": "^3.15.1",
68
- "release-it": "^18.1.1",
68
+ "nuxt": "^3.16.0",
69
+ "release-it": "^18.1.2",
69
70
  "superstruct": "^2.0.2",
70
71
  "typescript": "^5.6.3",
71
72
  "valibot": "^0.42.1",
72
73
  "valibot30": "npm:valibot@0.30.0",
73
74
  "valibot31": "npm:valibot@0.31.0",
74
- "vitest": "^2.1.8",
75
+ "vitest": "^3.0.8",
75
76
  "vitest-environment-nuxt": "^1.0.1",
76
77
  "vue-tsc": "^2.1.10",
77
78
  "yup": "^1.6.1",
78
- "zod": "^3.24.1"
79
+ "zod": "^3.24.2"
79
80
  },
80
81
  "resolutions": {
81
82
  "@nuxt/ui": "workspace:*",