@groupteknology/vuno 0.1.0

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 (112) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +215 -0
  3. package/dist/module.d.mts +10 -0
  4. package/dist/module.json +9 -0
  5. package/dist/module.mjs +28 -0
  6. package/dist/runtime/app/assets/css/main.css +1 -0
  7. package/dist/runtime/app/components/Confirm/Confirm.d.vue.ts +21 -0
  8. package/dist/runtime/app/components/Confirm/Confirm.vue +65 -0
  9. package/dist/runtime/app/components/Confirm/Confirm.vue.d.ts +21 -0
  10. package/dist/runtime/app/components/Field/FieldArray.d.vue.ts +5 -0
  11. package/dist/runtime/app/components/Field/FieldArray.vue +128 -0
  12. package/dist/runtime/app/components/Field/FieldArray.vue.d.ts +5 -0
  13. package/dist/runtime/app/components/Field/FieldCheckbox.d.vue.ts +5 -0
  14. package/dist/runtime/app/components/Field/FieldCheckbox.vue +30 -0
  15. package/dist/runtime/app/components/Field/FieldCheckbox.vue.d.ts +5 -0
  16. package/dist/runtime/app/components/Field/FieldColor.d.vue.ts +5 -0
  17. package/dist/runtime/app/components/Field/FieldColor.vue +57 -0
  18. package/dist/runtime/app/components/Field/FieldColor.vue.d.ts +5 -0
  19. package/dist/runtime/app/components/Field/FieldEmail.d.vue.ts +5 -0
  20. package/dist/runtime/app/components/Field/FieldEmail.vue +37 -0
  21. package/dist/runtime/app/components/Field/FieldEmail.vue.d.ts +5 -0
  22. package/dist/runtime/app/components/Field/FieldFile.d.vue.ts +5 -0
  23. package/dist/runtime/app/components/Field/FieldFile.vue +93 -0
  24. package/dist/runtime/app/components/Field/FieldFile.vue.d.ts +5 -0
  25. package/dist/runtime/app/components/Field/FieldNumber.d.vue.ts +5 -0
  26. package/dist/runtime/app/components/Field/FieldNumber.vue +38 -0
  27. package/dist/runtime/app/components/Field/FieldNumber.vue.d.ts +5 -0
  28. package/dist/runtime/app/components/Field/FieldPassword.d.vue.ts +5 -0
  29. package/dist/runtime/app/components/Field/FieldPassword.vue +35 -0
  30. package/dist/runtime/app/components/Field/FieldPassword.vue.d.ts +5 -0
  31. package/dist/runtime/app/components/Field/FieldRadio.d.vue.ts +5 -0
  32. package/dist/runtime/app/components/Field/FieldRadio.vue +33 -0
  33. package/dist/runtime/app/components/Field/FieldRadio.vue.d.ts +5 -0
  34. package/dist/runtime/app/components/Field/FieldSelect.d.vue.ts +5 -0
  35. package/dist/runtime/app/components/Field/FieldSelect.vue +38 -0
  36. package/dist/runtime/app/components/Field/FieldSelect.vue.d.ts +5 -0
  37. package/dist/runtime/app/components/Field/FieldSlug.d.vue.ts +5 -0
  38. package/dist/runtime/app/components/Field/FieldSlug.vue +92 -0
  39. package/dist/runtime/app/components/Field/FieldSlug.vue.d.ts +5 -0
  40. package/dist/runtime/app/components/Field/FieldText.d.vue.ts +5 -0
  41. package/dist/runtime/app/components/Field/FieldText.vue +38 -0
  42. package/dist/runtime/app/components/Field/FieldText.vue.d.ts +5 -0
  43. package/dist/runtime/app/components/Field/FieldTextarea.d.vue.ts +5 -0
  44. package/dist/runtime/app/components/Field/FieldTextarea.vue +36 -0
  45. package/dist/runtime/app/components/Field/FieldTextarea.vue.d.ts +5 -0
  46. package/dist/runtime/app/components/Form/Form.d.vue.ts +48 -0
  47. package/dist/runtime/app/components/Form/Form.vue +137 -0
  48. package/dist/runtime/app/components/Form/Form.vue.d.ts +48 -0
  49. package/dist/runtime/app/components/Form/FormField.d.vue.ts +7 -0
  50. package/dist/runtime/app/components/Form/FormField.vue +61 -0
  51. package/dist/runtime/app/components/Form/FormField.vue.d.ts +7 -0
  52. package/dist/runtime/app/components/Form/FormModal.d.vue.ts +54 -0
  53. package/dist/runtime/app/components/Form/FormModal.vue +82 -0
  54. package/dist/runtime/app/components/Form/FormModal.vue.d.ts +54 -0
  55. package/dist/runtime/app/components/Form/FormSection.d.vue.ts +12 -0
  56. package/dist/runtime/app/components/Form/FormSection.vue +43 -0
  57. package/dist/runtime/app/components/Form/FormSection.vue.d.ts +12 -0
  58. package/dist/runtime/app/components/Page/Page.d.vue.ts +24 -0
  59. package/dist/runtime/app/components/Page/Page.vue +63 -0
  60. package/dist/runtime/app/components/Page/Page.vue.d.ts +24 -0
  61. package/dist/runtime/app/components/State/EmptyState.d.vue.ts +20 -0
  62. package/dist/runtime/app/components/State/EmptyState.vue +36 -0
  63. package/dist/runtime/app/components/State/EmptyState.vue.d.ts +20 -0
  64. package/dist/runtime/app/components/State/FailureState.d.vue.ts +10 -0
  65. package/dist/runtime/app/components/State/FailureState.vue +34 -0
  66. package/dist/runtime/app/components/State/FailureState.vue.d.ts +10 -0
  67. package/dist/runtime/app/components/Table/Table.d.vue.ts +70 -0
  68. package/dist/runtime/app/components/Table/Table.vue +432 -0
  69. package/dist/runtime/app/components/Table/Table.vue.d.ts +70 -0
  70. package/dist/runtime/app/components/Table/TableCell.d.vue.ts +8 -0
  71. package/dist/runtime/app/components/Table/TableCell.vue +84 -0
  72. package/dist/runtime/app/components/Table/TableCell.vue.d.ts +8 -0
  73. package/dist/runtime/app/composables/useVunoCrud.d.ts +23 -0
  74. package/dist/runtime/app/composables/useVunoCrud.js +117 -0
  75. package/dist/runtime/app/composables/useVunoField.d.ts +10 -0
  76. package/dist/runtime/app/composables/useVunoField.js +34 -0
  77. package/dist/runtime/app/composables/useVunoForm.d.ts +2 -0
  78. package/dist/runtime/app/composables/useVunoForm.js +9 -0
  79. package/dist/runtime/app/composables/useVunoTableQuery.d.ts +51 -0
  80. package/dist/runtime/app/composables/useVunoTableQuery.js +110 -0
  81. package/dist/runtime/app/composables/useVunoTheme.d.ts +12 -0
  82. package/dist/runtime/app/composables/useVunoTheme.js +35 -0
  83. package/dist/runtime/app/theme/index.d.ts +14 -0
  84. package/dist/runtime/app/theme/index.js +210 -0
  85. package/dist/runtime/app/types/app-config.d.ts +8 -0
  86. package/dist/runtime/app/types/app-config.js +1 -0
  87. package/dist/runtime/app/types/confirm.d.ts +11 -0
  88. package/dist/runtime/app/types/confirm.js +0 -0
  89. package/dist/runtime/app/types/crud.d.ts +64 -0
  90. package/dist/runtime/app/types/crud.js +0 -0
  91. package/dist/runtime/app/types/field.d.ts +121 -0
  92. package/dist/runtime/app/types/field.js +0 -0
  93. package/dist/runtime/app/types/form.d.ts +39 -0
  94. package/dist/runtime/app/types/form.js +1 -0
  95. package/dist/runtime/app/types/index.d.ts +9 -0
  96. package/dist/runtime/app/types/index.js +1 -0
  97. package/dist/runtime/app/types/page.d.ts +6 -0
  98. package/dist/runtime/app/types/page.js +0 -0
  99. package/dist/runtime/app/types/responsive.d.ts +8 -0
  100. package/dist/runtime/app/types/responsive.js +0 -0
  101. package/dist/runtime/app/types/table.d.ts +130 -0
  102. package/dist/runtime/app/types/table.js +0 -0
  103. package/dist/runtime/app/types/theme.d.ts +77 -0
  104. package/dist/runtime/app/types/theme.js +0 -0
  105. package/dist/runtime/app/utils/format.d.ts +9 -0
  106. package/dist/runtime/app/utils/format.js +30 -0
  107. package/dist/runtime/app/utils/grid.d.ts +9 -0
  108. package/dist/runtime/app/utils/grid.js +91 -0
  109. package/dist/runtime/app/utils/path.d.ts +16 -0
  110. package/dist/runtime/app/utils/path.js +74 -0
  111. package/dist/types.d.mts +5 -0
  112. package/package.json +83 -0
@@ -0,0 +1,77 @@
1
+ import type { VunoFieldSlots, VunoFieldType } from './field.js';
2
+ /**
3
+ * Claves tematizables. Cada `field*` describe los slots del componente de
4
+ * Nuxt UI que ese campo envuelve, así que los nombres de slot son los del
5
+ * componente subyacente (`root`, `base`, `trailing`, ...).
6
+ */
7
+ export type VunoThemeKey = 'confirm' | 'form' | 'formField' | 'formModal' | 'formSection' | 'page' | 'state' | 'table' | `field${Capitalize<VunoFieldType>}`;
8
+ export type VunoThemeEntry = {
9
+ slots?: VunoFieldSlots;
10
+ };
11
+ export type VunoThemeConfig = {
12
+ [TKey in VunoThemeKey]?: VunoThemeEntry;
13
+ };
14
+ export type VunoIcons = {
15
+ actions: string;
16
+ addItem: string;
17
+ clearSearch: string;
18
+ confirm: string;
19
+ empty: string;
20
+ failure: string;
21
+ fileMoveDown: string;
22
+ fileMoveUp: string;
23
+ fileRemove: string;
24
+ fileUpload: string;
25
+ filter: string;
26
+ removeItem: string;
27
+ retry: string;
28
+ search: string;
29
+ slugEdit: string;
30
+ slugReset: string;
31
+ sort: string;
32
+ sortAsc: string;
33
+ sortDesc: string;
34
+ };
35
+ export type VunoMessages = {
36
+ addItem: string;
37
+ applyFilters: string;
38
+ cancel: string;
39
+ clearFilters: string;
40
+ clearSearch: string;
41
+ clearSelection: string;
42
+ confirm: string;
43
+ confirmDescription: string;
44
+ confirmTitle: string;
45
+ created: string;
46
+ deleted: string;
47
+ deleteFailed: string;
48
+ emptyArray: string;
49
+ emptyHint: string;
50
+ emptyTable: string;
51
+ failureHint: string;
52
+ failureTitle: string;
53
+ fileMoveDown: string;
54
+ fileMoveUp: string;
55
+ fileRemove: string;
56
+ filters: string;
57
+ filtersTitle: string;
58
+ of: string;
59
+ removeItem: string;
60
+ retry: string;
61
+ rowActions: string;
62
+ rowSelected: string;
63
+ rowsSelected: string;
64
+ save: string;
65
+ saveFailed: string;
66
+ searchPlaceholder: string;
67
+ selectPlaceholder: string;
68
+ showing: string;
69
+ slugEdit: string;
70
+ slugReset: string;
71
+ updated: string;
72
+ };
73
+ /** Forma de `app.config.ts` → `vuno`. */
74
+ export type VunoAppConfig = VunoThemeConfig & {
75
+ icons?: Partial<VunoIcons>;
76
+ messages?: Partial<VunoMessages>;
77
+ };
File without changes
@@ -0,0 +1,9 @@
1
+ export declare function formatSlug(value?: string): string;
2
+ /**
3
+ * Los formateadores reciben el locale ya resuelto (el de `<UApp :locale>`), en
4
+ * lugar de fijar uno: qué idioma habla la aplicación lo decide el proyecto
5
+ * consumidor, no este paquete.
6
+ */
7
+ export declare function formatNumber(value: unknown, locale?: string, decimals?: number): string;
8
+ export declare function formatCurrency(value: unknown, locale?: string, currency?: string, decimals?: number): string;
9
+ export declare function formatDate(value: unknown, locale?: string, options?: Intl.DateTimeFormatOptions): string;
@@ -0,0 +1,30 @@
1
+ export function formatSlug(value) {
2
+ if (!value) return "";
3
+ return value.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().trim().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
4
+ }
5
+ export function formatNumber(value, locale, decimals) {
6
+ if (value === null || value === void 0 || value === "") return "";
7
+ const parsed = Number(value);
8
+ if (Number.isNaN(parsed)) return "";
9
+ return new Intl.NumberFormat(locale, {
10
+ maximumFractionDigits: decimals ?? 2,
11
+ minimumFractionDigits: decimals ?? 0
12
+ }).format(parsed);
13
+ }
14
+ export function formatCurrency(value, locale, currency = "EUR", decimals) {
15
+ if (value === null || value === void 0 || value === "") return "";
16
+ const parsed = Number(value);
17
+ if (Number.isNaN(parsed)) return "";
18
+ return new Intl.NumberFormat(locale, {
19
+ currency,
20
+ maximumFractionDigits: decimals ?? 2,
21
+ minimumFractionDigits: decimals ?? 2,
22
+ style: "currency"
23
+ }).format(parsed);
24
+ }
25
+ export function formatDate(value, locale, options) {
26
+ if (value === null || value === void 0 || value === "") return "";
27
+ const date = value instanceof Date ? value : new Date(String(value));
28
+ if (Number.isNaN(date.getTime())) return "";
29
+ return new Intl.DateTimeFormat(locale, options ?? { dateStyle: "medium" }).format(date);
30
+ }
@@ -0,0 +1,9 @@
1
+ import type { VunoFieldColumns } from '#vuno/types/field';
2
+ /**
3
+ * `min-w-0` acompaña siempre al `col-span`: un grid item nace con
4
+ * `min-width: auto`, que le impide encoger por debajo de su contenido mínimo
5
+ * y hace que se salga de la pista en contenedores estrechos (un modal, por
6
+ * ejemplo). Sin esto el ancho lo acabaría decidiendo el contenido y no el
7
+ * grid, que es justo lo contrario de lo que persigue el sistema de columnas.
8
+ */
9
+ export declare function getColumnSpanClass(columns?: VunoFieldColumns): string[];
@@ -0,0 +1,91 @@
1
+ const spanClasses = {
2
+ xs: {
3
+ 1: "col-span-1",
4
+ 2: "col-span-2",
5
+ 3: "col-span-3",
6
+ 4: "col-span-4",
7
+ 5: "col-span-5",
8
+ 6: "col-span-6",
9
+ 7: "col-span-7",
10
+ 8: "col-span-8",
11
+ 9: "col-span-9",
12
+ 10: "col-span-10",
13
+ 11: "col-span-11",
14
+ 12: "col-span-12"
15
+ },
16
+ sm: {
17
+ 1: "@sm:col-span-1",
18
+ 2: "@sm:col-span-2",
19
+ 3: "@sm:col-span-3",
20
+ 4: "@sm:col-span-4",
21
+ 5: "@sm:col-span-5",
22
+ 6: "@sm:col-span-6",
23
+ 7: "@sm:col-span-7",
24
+ 8: "@sm:col-span-8",
25
+ 9: "@sm:col-span-9",
26
+ 10: "@sm:col-span-10",
27
+ 11: "@sm:col-span-11",
28
+ 12: "@sm:col-span-12"
29
+ },
30
+ md: {
31
+ 1: "@md:col-span-1",
32
+ 2: "@md:col-span-2",
33
+ 3: "@md:col-span-3",
34
+ 4: "@md:col-span-4",
35
+ 5: "@md:col-span-5",
36
+ 6: "@md:col-span-6",
37
+ 7: "@md:col-span-7",
38
+ 8: "@md:col-span-8",
39
+ 9: "@md:col-span-9",
40
+ 10: "@md:col-span-10",
41
+ 11: "@md:col-span-11",
42
+ 12: "@md:col-span-12"
43
+ },
44
+ lg: {
45
+ 1: "@lg:col-span-1",
46
+ 2: "@lg:col-span-2",
47
+ 3: "@lg:col-span-3",
48
+ 4: "@lg:col-span-4",
49
+ 5: "@lg:col-span-5",
50
+ 6: "@lg:col-span-6",
51
+ 7: "@lg:col-span-7",
52
+ 8: "@lg:col-span-8",
53
+ 9: "@lg:col-span-9",
54
+ 10: "@lg:col-span-10",
55
+ 11: "@lg:col-span-11",
56
+ 12: "@lg:col-span-12"
57
+ },
58
+ xl: {
59
+ 1: "@xl:col-span-1",
60
+ 2: "@xl:col-span-2",
61
+ 3: "@xl:col-span-3",
62
+ 4: "@xl:col-span-4",
63
+ 5: "@xl:col-span-5",
64
+ 6: "@xl:col-span-6",
65
+ 7: "@xl:col-span-7",
66
+ 8: "@xl:col-span-8",
67
+ 9: "@xl:col-span-9",
68
+ 10: "@xl:col-span-10",
69
+ 11: "@xl:col-span-11",
70
+ 12: "@xl:col-span-12"
71
+ }
72
+ };
73
+ export function getColumnSpanClass(columns) {
74
+ if (!columns) return ["min-w-0", "col-span-12"];
75
+ if (typeof columns === "number") return ["min-w-0", "col-span-12", spanClasses.md[columns]];
76
+ const classes = ["min-w-0"];
77
+ classes.push(spanClasses.xs[columns.xs ?? 12]);
78
+ if (columns.sm) {
79
+ classes.push(spanClasses.sm[columns.sm]);
80
+ }
81
+ if (columns.md) {
82
+ classes.push(spanClasses.md[columns.md]);
83
+ }
84
+ if (columns.lg) {
85
+ classes.push(spanClasses.lg[columns.lg]);
86
+ }
87
+ if (columns.xl) {
88
+ classes.push(spanClasses.xl[columns.xl]);
89
+ }
90
+ return classes;
91
+ }
@@ -0,0 +1,16 @@
1
+ export declare function parsePath(path: string): string[];
2
+ export declare function getPath<T = unknown>(object: unknown, path: string): T | undefined;
3
+ export declare function setPath(object: Record<string, unknown>, path: string, value: unknown): void;
4
+ /**
5
+ * Clon profundo que preserva la referencia de los `File`/`Blob` en lugar de
6
+ * duplicarlos, para que comparar el estado inicial con el actual siga siendo
7
+ * fiable. `structuredClone` no sirve aquí: duplica cada `File` y revienta con
8
+ * valores no clonables.
9
+ */
10
+ export declare function cloneValue<T>(value: T): T;
11
+ /**
12
+ * Comparación estructural. Los binarios se comparan por identidad, que es lo
13
+ * que permite detectar que una galería cambió de orden o de contenido —algo
14
+ * que una comparación por JSON no ve, porque un `File` serializa a `{}`.
15
+ */
16
+ export declare function isEqual(first: unknown, second: unknown): boolean;
@@ -0,0 +1,74 @@
1
+ export function parsePath(path) {
2
+ return path.replace(/\[(\d+)\]/g, ".$1").split(".").filter(Boolean);
3
+ }
4
+ export function getPath(object, path) {
5
+ const keys = parsePath(path);
6
+ let current = object;
7
+ for (const key of keys) {
8
+ if (current === null || current === void 0 || typeof current !== "object") {
9
+ return void 0;
10
+ }
11
+ current = current[key];
12
+ }
13
+ return current;
14
+ }
15
+ export function setPath(object, path, value) {
16
+ const keys = parsePath(path);
17
+ if (keys.length === 0) {
18
+ return;
19
+ }
20
+ let current = object;
21
+ for (let index = 0; index < keys.length - 1; index++) {
22
+ const key = keys[index];
23
+ const nextKey = keys[index + 1];
24
+ const nextIsArrayIndex = /^\d+$/.test(nextKey);
25
+ let next = current[key];
26
+ if (next === void 0 || next === null || typeof next !== "object") {
27
+ next = nextIsArrayIndex ? [] : {};
28
+ current[key] = next;
29
+ }
30
+ current = next;
31
+ }
32
+ const lastKey = keys.at(-1);
33
+ current[lastKey] = value;
34
+ }
35
+ export function cloneValue(value) {
36
+ if (value === null || typeof value !== "object") return value;
37
+ if (isBinary(value)) return value;
38
+ if (value instanceof Date) return new Date(value.getTime());
39
+ if (Array.isArray(value)) return value.map((item) => cloneValue(item));
40
+ if (isPlainObject(value)) {
41
+ const result = {};
42
+ for (const [key, item] of Object.entries(value)) {
43
+ result[key] = cloneValue(item);
44
+ }
45
+ return result;
46
+ }
47
+ return value;
48
+ }
49
+ export function isEqual(first, second) {
50
+ if (first === second) return true;
51
+ if (first instanceof Date && second instanceof Date) {
52
+ return first.getTime() === second.getTime();
53
+ }
54
+ if (isBinary(first) || isBinary(second)) return false;
55
+ if (Array.isArray(first) && Array.isArray(second)) {
56
+ return first.length === second.length && first.every((item, index) => isEqual(item, second[index]));
57
+ }
58
+ if (isPlainObject(first) && isPlainObject(second)) {
59
+ const firstKeys = Object.keys(first);
60
+ const secondKeys = Object.keys(second);
61
+ if (firstKeys.length !== secondKeys.length) return false;
62
+ return firstKeys.every((key) => Object.hasOwn(second, key) && isEqual(first[key], second[key]));
63
+ }
64
+ return false;
65
+ }
66
+ function isPlainObject(value) {
67
+ if (value === null || typeof value !== "object") return false;
68
+ const prototype = Object.getPrototypeOf(value);
69
+ return prototype === Object.prototype || prototype === null;
70
+ }
71
+ function isBinary(value) {
72
+ if (typeof Blob !== "undefined" && value instanceof Blob) return true;
73
+ return typeof File !== "undefined" && value instanceof File;
74
+ }
@@ -0,0 +1,5 @@
1
+ export { default } from './module.mjs'
2
+
3
+ export { type ModuleOptions } from './module.mjs'
4
+
5
+ export * from '../dist/runtime/app/types/index.js'
package/package.json ADDED
@@ -0,0 +1,83 @@
1
+ {
2
+ "name": "@groupteknology/vuno",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "exports": {
6
+ ".": {
7
+ "types": "./dist/types.d.mts",
8
+ "import": "./dist/module.mjs"
9
+ },
10
+ "./package.json": "./package.json"
11
+ },
12
+ "main": "./dist/module.mjs",
13
+ "typesVersions": {
14
+ "*": {
15
+ ".": [
16
+ "./dist/types.d.mts"
17
+ ]
18
+ }
19
+ },
20
+ "files": [
21
+ "dist"
22
+ ],
23
+ "dependencies": {
24
+ "@iconify-json/lucide": "^1.2.123",
25
+ "@nuxt/kit": "^4.5.2"
26
+ },
27
+ "devDependencies": {
28
+ "@nuxt/module-builder": "^1.0.3",
29
+ "@tanstack/vue-query": "^5.0.0",
30
+ "@types/node": "^22.20.2",
31
+ "nuxt": "^4.5.2",
32
+ "typescript": "^6.0.3",
33
+ "vitest": "^3.2.4",
34
+ "vue": "^3.5.42",
35
+ "vue-tsc": "^3.3.11",
36
+ "zod": "^4.6.2"
37
+ },
38
+ "description": "Formularios, tablas y diálogos declarativos para Nuxt 4, construidos sobre Nuxt UI y sin estilos propios.",
39
+ "keywords": [
40
+ "nuxt",
41
+ "nuxt-module",
42
+ "nuxt-ui",
43
+ "vue",
44
+ "form",
45
+ "table",
46
+ "crud",
47
+ "datatable",
48
+ "typescript"
49
+ ],
50
+ "license": "MIT",
51
+ "author": "Diego Otayza <diegootayza@live.com>",
52
+ "repository": {
53
+ "type": "git",
54
+ "url": "git+https://github.com/groupteknology/vuno.git",
55
+ "directory": "packages/core"
56
+ },
57
+ "bugs": {
58
+ "url": "https://github.com/groupteknology/vuno/issues"
59
+ },
60
+ "homepage": "https://github.com/groupteknology/vuno#readme",
61
+ "publishConfig": {
62
+ "access": "public"
63
+ },
64
+ "peerDependencies": {
65
+ "@nuxt/ui": "^4.0.0",
66
+ "@tanstack/vue-query": "^5.0.0",
67
+ "nuxt": "^4.0.0",
68
+ "vue": "^3.5.0"
69
+ },
70
+ "peerDependenciesMeta": {
71
+ "@tanstack/vue-query": {
72
+ "optional": true
73
+ }
74
+ },
75
+ "scripts": {
76
+ "build": "nuxt-module-build build",
77
+ "clean": "rm -rf dist",
78
+ "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare",
79
+ "typecheck": "nuxt-module-build build",
80
+ "test": "vitest run",
81
+ "test:watch": "vitest"
82
+ }
83
+ }