@ramathibodi/nuxt-commons 0.1.73 → 4.0.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 (260) hide show
  1. package/README.md +81 -55
  2. package/dist/module.json +4 -4
  3. package/dist/module.mjs +5 -4
  4. package/dist/runtime/bridges/authentication.d.ts +21 -0
  5. package/dist/runtime/bridges/authentication.js +20 -0
  6. package/dist/runtime/bridges/graphql.d.ts +17 -0
  7. package/dist/runtime/bridges/graphql.js +45 -0
  8. package/dist/runtime/components/Alert.d.vue.ts +3 -0
  9. package/dist/runtime/components/Alert.vue +17 -22
  10. package/dist/runtime/components/Alert.vue.d.ts +3 -0
  11. package/dist/runtime/components/BarcodeReader.d.vue.ts +9 -0
  12. package/dist/runtime/components/BarcodeReader.vue +56 -73
  13. package/dist/runtime/components/BarcodeReader.vue.d.ts +9 -0
  14. package/dist/runtime/components/ExportCSV.d.vue.ts +55 -0
  15. package/dist/runtime/components/ExportCSV.vue +39 -68
  16. package/dist/runtime/components/ExportCSV.vue.d.ts +55 -0
  17. package/dist/runtime/components/FileBtn.d.vue.ts +53 -0
  18. package/dist/runtime/components/FileBtn.vue +23 -38
  19. package/dist/runtime/components/FileBtn.vue.d.ts +53 -0
  20. package/dist/runtime/components/ImportCSV.d.vue.ts +52 -0
  21. package/dist/runtime/components/ImportCSV.vue +60 -99
  22. package/dist/runtime/components/ImportCSV.vue.d.ts +52 -0
  23. package/dist/runtime/components/MrzReader.d.vue.ts +19 -0
  24. package/dist/runtime/components/MrzReader.vue +128 -0
  25. package/dist/runtime/components/MrzReader.vue.d.ts +19 -0
  26. package/dist/runtime/components/SplitterPanel.d.vue.ts +15 -0
  27. package/dist/runtime/components/SplitterPanel.vue +18 -27
  28. package/dist/runtime/components/SplitterPanel.vue.d.ts +15 -0
  29. package/dist/runtime/components/TabsGroup.d.vue.ts +19 -0
  30. package/dist/runtime/components/TabsGroup.vue +8 -12
  31. package/dist/runtime/components/TabsGroup.vue.d.ts +19 -0
  32. package/dist/runtime/components/TextBarcode.d.vue.ts +12 -0
  33. package/dist/runtime/components/TextBarcode.vue +22 -33
  34. package/dist/runtime/components/TextBarcode.vue.d.ts +12 -0
  35. package/dist/runtime/components/device/IdCardButton.d.vue.ts +57 -0
  36. package/dist/runtime/components/device/IdCardButton.vue +30 -55
  37. package/dist/runtime/components/device/IdCardButton.vue.d.ts +57 -0
  38. package/dist/runtime/components/device/IdCardWebSocket.d.vue.ts +55 -0
  39. package/dist/runtime/components/device/IdCardWebSocket.vue +104 -153
  40. package/dist/runtime/components/device/IdCardWebSocket.vue.d.ts +55 -0
  41. package/dist/runtime/components/device/Scanner.d.vue.ts +66 -0
  42. package/dist/runtime/components/device/Scanner.vue +97 -166
  43. package/dist/runtime/components/device/Scanner.vue.d.ts +66 -0
  44. package/dist/runtime/components/dialog/Confirm.d.vue.ts +37 -0
  45. package/dist/runtime/components/dialog/Confirm.vue +30 -47
  46. package/dist/runtime/components/dialog/Confirm.vue.d.ts +37 -0
  47. package/dist/runtime/components/dialog/Host.d.vue.ts +9 -0
  48. package/dist/runtime/components/dialog/Host.vue +34 -53
  49. package/dist/runtime/components/dialog/Host.vue.d.ts +9 -0
  50. package/dist/runtime/components/dialog/Index.d.vue.ts +24 -0
  51. package/dist/runtime/components/dialog/Index.vue +20 -28
  52. package/dist/runtime/components/dialog/Index.vue.d.ts +24 -0
  53. package/dist/runtime/components/dialog/Loading.d.vue.ts +21 -0
  54. package/dist/runtime/components/dialog/Loading.vue +12 -17
  55. package/dist/runtime/components/dialog/Loading.vue.d.ts +21 -0
  56. package/dist/runtime/components/dialog/default/Confirm.d.vue.ts +40 -0
  57. package/dist/runtime/components/dialog/default/Confirm.vue +29 -50
  58. package/dist/runtime/components/dialog/default/Confirm.vue.d.ts +40 -0
  59. package/dist/runtime/components/dialog/default/Loading.d.vue.ts +23 -0
  60. package/dist/runtime/components/dialog/default/Loading.vue +12 -17
  61. package/dist/runtime/components/dialog/default/Loading.vue.d.ts +23 -0
  62. package/dist/runtime/components/dialog/default/Notify.d.vue.ts +23 -0
  63. package/dist/runtime/components/dialog/default/Notify.vue +19 -36
  64. package/dist/runtime/components/dialog/default/Notify.vue.d.ts +23 -0
  65. package/dist/runtime/components/dialog/default/Printing.d.vue.ts +21 -0
  66. package/dist/runtime/components/dialog/default/Printing.vue +13 -17
  67. package/dist/runtime/components/dialog/default/Printing.vue.d.ts +21 -0
  68. package/dist/runtime/components/dialog/default/VerifyUser.d.vue.ts +29 -0
  69. package/dist/runtime/components/dialog/default/VerifyUser.vue +44 -70
  70. package/dist/runtime/components/dialog/default/VerifyUser.vue.d.ts +29 -0
  71. package/dist/runtime/components/document/Form.d.vue.ts +9 -0
  72. package/dist/runtime/components/document/Form.vue +27 -34
  73. package/dist/runtime/components/document/Form.vue.d.ts +9 -0
  74. package/dist/runtime/components/document/TemplateBuilder.d.vue.ts +24 -0
  75. package/dist/runtime/components/document/TemplateBuilder.vue +154 -182
  76. package/dist/runtime/components/document/TemplateBuilder.vue.d.ts +24 -0
  77. package/dist/runtime/components/form/ActionPad.d.vue.ts +114 -0
  78. package/dist/runtime/components/form/ActionPad.vue +48 -73
  79. package/dist/runtime/components/form/ActionPad.vue.d.ts +114 -0
  80. package/dist/runtime/components/form/Birthdate.d.vue.ts +38 -0
  81. package/dist/runtime/components/form/Birthdate.vue +44 -64
  82. package/dist/runtime/components/form/Birthdate.vue.d.ts +38 -0
  83. package/dist/runtime/components/form/CheckboxGroup.d.vue.ts +41 -0
  84. package/dist/runtime/components/form/CheckboxGroup.vue +34 -52
  85. package/dist/runtime/components/form/CheckboxGroup.vue.d.ts +41 -0
  86. package/dist/runtime/components/form/CodeEditor.d.vue.ts +25 -0
  87. package/dist/runtime/components/form/CodeEditor.vue +18 -28
  88. package/dist/runtime/components/form/CodeEditor.vue.d.ts +25 -0
  89. package/dist/runtime/components/form/Date.d.vue.ts +86 -0
  90. package/dist/runtime/components/form/Date.vue +109 -150
  91. package/dist/runtime/components/form/Date.vue.d.ts +86 -0
  92. package/dist/runtime/components/form/DateTime.d.vue.ts +36 -0
  93. package/dist/runtime/components/form/DateTime.vue +94 -131
  94. package/dist/runtime/components/form/DateTime.vue.d.ts +36 -0
  95. package/dist/runtime/components/form/Dialog.d.vue.ts +69 -0
  96. package/dist/runtime/components/form/Dialog.vue +60 -84
  97. package/dist/runtime/components/form/Dialog.vue.d.ts +69 -0
  98. package/dist/runtime/components/form/EditPad.d.vue.ts +113 -0
  99. package/dist/runtime/components/form/EditPad.vue +49 -73
  100. package/dist/runtime/components/form/EditPad.vue.d.ts +113 -0
  101. package/dist/runtime/components/form/File.d.vue.ts +65 -0
  102. package/dist/runtime/components/form/File.vue +112 -174
  103. package/dist/runtime/components/form/File.vue.d.ts +65 -0
  104. package/dist/runtime/components/form/Hidden.d.vue.ts +12 -0
  105. package/dist/runtime/components/form/Hidden.vue +17 -22
  106. package/dist/runtime/components/form/Hidden.vue.d.ts +12 -0
  107. package/dist/runtime/components/form/Iterator.d.vue.ts +279 -0
  108. package/dist/runtime/components/form/Iterator.vue +162 -240
  109. package/dist/runtime/components/form/Iterator.vue.d.ts +279 -0
  110. package/dist/runtime/components/form/Login.d.vue.ts +32 -0
  111. package/dist/runtime/components/form/Login.vue +23 -43
  112. package/dist/runtime/components/form/Login.vue.d.ts +32 -0
  113. package/dist/runtime/components/form/Pad.d.vue.ts +674 -0
  114. package/dist/runtime/components/form/Pad.vue +166 -253
  115. package/dist/runtime/components/form/Pad.vue.d.ts +674 -0
  116. package/dist/runtime/components/form/SignPad.d.vue.ts +62 -0
  117. package/dist/runtime/components/form/SignPad.vue +80 -118
  118. package/dist/runtime/components/form/SignPad.vue.d.ts +62 -0
  119. package/dist/runtime/components/form/System.d.vue.ts +34 -0
  120. package/dist/runtime/components/form/System.vue +18 -24
  121. package/dist/runtime/components/form/System.vue.d.ts +34 -0
  122. package/dist/runtime/components/form/Table.d.vue.ts +221 -0
  123. package/dist/runtime/components/form/Table.vue +123 -170
  124. package/dist/runtime/components/form/Table.vue.d.ts +221 -0
  125. package/dist/runtime/components/form/TableData.d.vue.ts +102 -0
  126. package/dist/runtime/components/form/TableData.vue +109 -127
  127. package/dist/runtime/components/form/TableData.vue.d.ts +102 -0
  128. package/dist/runtime/components/form/Time.d.vue.ts +49 -0
  129. package/dist/runtime/components/form/Time.vue +64 -87
  130. package/dist/runtime/components/form/Time.vue.d.ts +49 -0
  131. package/dist/runtime/components/form/images/Capture.d.vue.ts +96 -0
  132. package/dist/runtime/components/form/images/Capture.vue +104 -139
  133. package/dist/runtime/components/form/images/Capture.vue.d.ts +96 -0
  134. package/dist/runtime/components/form/images/Edit.d.vue.ts +29 -0
  135. package/dist/runtime/components/form/images/Edit.vue +57 -69
  136. package/dist/runtime/components/form/images/Edit.vue.d.ts +29 -0
  137. package/dist/runtime/components/form/images/Field.d.vue.ts +27 -0
  138. package/dist/runtime/components/form/images/Field.vue +136 -194
  139. package/dist/runtime/components/form/images/Field.vue.d.ts +27 -0
  140. package/dist/runtime/components/form/images/Pad.d.vue.ts +13 -0
  141. package/dist/runtime/components/form/images/Pad.vue +23 -28
  142. package/dist/runtime/components/form/images/Pad.vue.d.ts +13 -0
  143. package/dist/runtime/components/label/Date.d.vue.ts +13 -0
  144. package/dist/runtime/components/label/Date.vue +13 -21
  145. package/dist/runtime/components/label/Date.vue.d.ts +13 -0
  146. package/dist/runtime/components/label/DateAgo.d.vue.ts +20 -0
  147. package/dist/runtime/components/label/DateAgo.vue +43 -67
  148. package/dist/runtime/components/label/DateAgo.vue.d.ts +20 -0
  149. package/dist/runtime/components/label/DateCount.d.vue.ts +22 -0
  150. package/dist/runtime/components/label/DateCount.vue +58 -97
  151. package/dist/runtime/components/label/DateCount.vue.d.ts +22 -0
  152. package/dist/runtime/components/label/Field.d.vue.ts +38 -0
  153. package/dist/runtime/components/label/Field.vue +18 -32
  154. package/dist/runtime/components/label/Field.vue.d.ts +38 -0
  155. package/dist/runtime/components/label/FormatMoney.d.vue.ts +12 -0
  156. package/dist/runtime/components/label/FormatMoney.vue +12 -20
  157. package/dist/runtime/components/label/FormatMoney.vue.d.ts +12 -0
  158. package/dist/runtime/components/label/Mask.d.vue.ts +10 -0
  159. package/dist/runtime/components/label/Mask.vue +21 -30
  160. package/dist/runtime/components/label/Mask.vue.d.ts +10 -0
  161. package/dist/runtime/components/label/Object.d.vue.ts +8 -0
  162. package/dist/runtime/components/label/Object.vue +10 -12
  163. package/dist/runtime/components/label/Object.vue.d.ts +8 -0
  164. package/dist/runtime/components/master/Autocomplete.d.vue.ts +70 -0
  165. package/dist/runtime/components/master/Autocomplete.vue +25 -26
  166. package/dist/runtime/components/master/Autocomplete.vue.d.ts +70 -0
  167. package/dist/runtime/components/master/Combobox.d.vue.ts +70 -0
  168. package/dist/runtime/components/master/Combobox.vue +26 -27
  169. package/dist/runtime/components/master/Combobox.vue.d.ts +70 -0
  170. package/dist/runtime/components/master/RadioGroup.d.vue.ts +51 -0
  171. package/dist/runtime/components/master/RadioGroup.vue +44 -47
  172. package/dist/runtime/components/master/RadioGroup.vue.d.ts +51 -0
  173. package/dist/runtime/components/master/Select.d.vue.ts +68 -0
  174. package/dist/runtime/components/master/Select.vue +25 -26
  175. package/dist/runtime/components/master/Select.vue.d.ts +68 -0
  176. package/dist/runtime/components/master/label.d.vue.ts +24 -0
  177. package/dist/runtime/components/master/label.vue +22 -34
  178. package/dist/runtime/components/master/label.vue.d.ts +24 -0
  179. package/dist/runtime/components/model/Autocomplete.d.vue.ts +82 -0
  180. package/dist/runtime/components/model/Autocomplete.vue +50 -37
  181. package/dist/runtime/components/model/Autocomplete.vue.d.ts +82 -0
  182. package/dist/runtime/components/model/Combobox.d.vue.ts +82 -0
  183. package/dist/runtime/components/model/Combobox.vue +51 -37
  184. package/dist/runtime/components/model/Combobox.vue.d.ts +82 -0
  185. package/dist/runtime/components/model/Pad.d.vue.ts +72 -0
  186. package/dist/runtime/components/model/Pad.vue +50 -53
  187. package/dist/runtime/components/model/Pad.vue.d.ts +72 -0
  188. package/dist/runtime/components/model/Select.d.vue.ts +72 -0
  189. package/dist/runtime/components/model/Select.vue +42 -32
  190. package/dist/runtime/components/model/Select.vue.d.ts +72 -0
  191. package/dist/runtime/components/model/Table.d.vue.ts +272 -0
  192. package/dist/runtime/components/model/Table.vue +121 -133
  193. package/dist/runtime/components/model/Table.vue.d.ts +272 -0
  194. package/dist/runtime/components/model/iterator.d.vue.ts +321 -0
  195. package/dist/runtime/components/model/iterator.vue +148 -175
  196. package/dist/runtime/components/model/iterator.vue.d.ts +321 -0
  197. package/dist/runtime/components/model/label.d.vue.ts +26 -0
  198. package/dist/runtime/components/model/label.vue +25 -35
  199. package/dist/runtime/components/model/label.vue.d.ts +26 -0
  200. package/dist/runtime/components/pdf/Print.d.vue.ts +17 -0
  201. package/dist/runtime/components/pdf/Print.vue +27 -38
  202. package/dist/runtime/components/pdf/Print.vue.d.ts +17 -0
  203. package/dist/runtime/components/pdf/View.d.vue.ts +52 -0
  204. package/dist/runtime/components/pdf/View.vue +58 -83
  205. package/dist/runtime/components/pdf/View.vue.d.ts +52 -0
  206. package/dist/runtime/composables/alert.d.ts +4 -0
  207. package/dist/runtime/composables/api.d.ts +4 -0
  208. package/dist/runtime/composables/api.js +4 -2
  209. package/dist/runtime/composables/assetFile.js +4 -2
  210. package/dist/runtime/composables/dialog.d.ts +1 -1
  211. package/dist/runtime/composables/document/template.js +3 -3
  212. package/dist/runtime/composables/document/templateFormHidden.d.ts +4 -0
  213. package/dist/runtime/composables/document/templateFormTable.js +1 -0
  214. package/dist/runtime/composables/graphql.d.ts +2 -2
  215. package/dist/runtime/composables/graphql.js +5 -5
  216. package/dist/runtime/composables/graphqlModel.d.ts +6 -6
  217. package/dist/runtime/composables/graphqlModelItem.d.ts +4 -4
  218. package/dist/runtime/composables/graphqlModelOperation.d.ts +6 -6
  219. package/dist/runtime/composables/graphqlModelOperation.js +2 -1
  220. package/dist/runtime/composables/graphqlOperation.js +5 -1
  221. package/dist/runtime/composables/hostAgentWs.d.ts +1 -1
  222. package/dist/runtime/composables/localStorageModel.d.ts +4 -0
  223. package/dist/runtime/composables/lookupList.d.ts +4 -0
  224. package/dist/runtime/composables/lookupListMaster.js +3 -3
  225. package/dist/runtime/composables/menu.d.ts +4 -0
  226. package/dist/runtime/composables/menu.js +2 -2
  227. package/dist/runtime/composables/useMrzReader.d.ts +48 -0
  228. package/dist/runtime/composables/useMrzReader.js +423 -0
  229. package/dist/runtime/composables/useTesseract.d.ts +16 -0
  230. package/dist/runtime/composables/useTesseract.js +45 -0
  231. package/dist/runtime/composables/userPermission.d.ts +1 -1
  232. package/dist/runtime/composables/utils/fuzzy.d.ts +2 -1
  233. package/dist/runtime/labs/Calendar.d.vue.ts +35 -0
  234. package/dist/runtime/labs/Calendar.vue +47 -75
  235. package/dist/runtime/labs/Calendar.vue.d.ts +35 -0
  236. package/dist/runtime/labs/form/EditMobile.d.vue.ts +12 -0
  237. package/dist/runtime/labs/form/EditMobile.vue +19 -36
  238. package/dist/runtime/labs/form/EditMobile.vue.d.ts +12 -0
  239. package/dist/runtime/labs/form/TextFieldMask.d.vue.ts +21 -0
  240. package/dist/runtime/labs/form/TextFieldMask.vue +19 -25
  241. package/dist/runtime/labs/form/TextFieldMask.vue.d.ts +21 -0
  242. package/dist/runtime/plugins/dialogManager.js +2 -2
  243. package/dist/runtime/plugins/permission.js +3 -3
  244. package/dist/runtime/types/bridge.d.ts +14 -0
  245. package/dist/runtime/utils/asset.d.ts +2 -0
  246. package/dist/runtime/utils/asset.js +49 -0
  247. package/dist/runtime/utils/datetime.js +1 -1
  248. package/dist/types.d.mts +2 -6
  249. package/package.json +79 -57
  250. package/scripts/ci-release.mjs +125 -0
  251. package/scripts/enrich-vue-docs-from-ai.mjs +197 -0
  252. package/scripts/generate-ai-summary.mjs +321 -0
  253. package/scripts/generate-composables-md.mjs +129 -0
  254. package/scripts/release-version.mjs +68 -0
  255. package/scripts/release.mjs +49 -0
  256. package/templates/public/tesseract/mrz.traineddata.gz +0 -0
  257. package/templates/public/tesseract/ocrb.traineddata.gz +0 -0
  258. package/dist/module.cjs +0 -5
  259. package/dist/module.d.ts +0 -8
  260. package/dist/types.d.ts +0 -7
@@ -0,0 +1,35 @@
1
+ type Event = {
2
+ id: string | undefined;
3
+ title: string;
4
+ start: string;
5
+ end: string;
6
+ color: string;
7
+ detail?: string;
8
+ props: Record<string, any> | any[];
9
+ };
10
+ interface CalendarProps {
11
+ modelValue: Event[];
12
+ locale?: 'th' | 'en';
13
+ toolBarLeft?: string;
14
+ toolBarCenter?: string;
15
+ toolBarRight?: string;
16
+ height?: string | number;
17
+ selectViewDay?: string;
18
+ mode: 'dayGridMonth' | 'timeGridDay';
19
+ }
20
+ declare const __VLS_export: import("vue").DefineComponent<CalendarProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
21
+ dialog: (...args: any[]) => void;
22
+ select: (...args: any[]) => void;
23
+ }, string, import("vue").PublicProps, Readonly<CalendarProps> & Readonly<{
24
+ onDialog?: ((...args: any[]) => any) | undefined;
25
+ onSelect?: ((...args: any[]) => any) | undefined;
26
+ }>, {
27
+ height: string | number;
28
+ mode: "dayGridMonth" | "timeGridDay";
29
+ locale: "th" | "en";
30
+ toolBarLeft: string;
31
+ toolBarCenter: string;
32
+ toolBarRight: string;
33
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
34
+ declare const _default: typeof __VLS_export;
35
+ export default _default;
@@ -0,0 +1,12 @@
1
+ interface Props {
2
+ modelValue: number;
3
+ decimal?: number;
4
+ currency?: string;
5
+ }
6
+ declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
7
+ modelValue: number;
8
+ decimal: number;
9
+ currency: string;
10
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -1,79 +1,62 @@
1
- <script lang="ts" setup>
2
- import { ref, withDefaults } from 'vue';
1
+ <script setup>
2
+ import { ref } from "vue";
3
3
  import FormPad from "../../components/form/Pad.vue";
4
4
  import { useAlert } from "../../composables/alert";
5
5
  import { Mask } from "maska";
6
-
7
- interface Props {
8
- modelValue: number;
9
- decimal?: number;
10
- currency?: string;
11
- }
12
-
13
6
  const masksInput = new Mask({
14
7
  mask: "###-###-N",
15
8
  tokens: {
16
9
  N: { pattern: /[0-9]/, multiple: true }
17
10
  }
18
11
  });
19
-
20
12
  const alert = useAlert();
21
13
  const dialog = ref(false);
22
14
  const phone = ref();
23
15
  const typePhone = ref([]);
24
16
  const formPadTemplate = ref();
25
- const phoneNoField: any = ref(null);
26
- const objAddNew = ref({ phone: "", type: <any>[] });
27
-
17
+ const phoneNoField = ref(null);
18
+ const objAddNew = ref({ phone: "", type: [] });
28
19
  const listPhonesAll = ref([
29
20
  { "phone": "082745855410101", "type": ["default"] },
30
21
  { "phone": "0827196038", "type": null },
31
22
  { "phone": "0956458547", "type": ["post", "receipt"] }
32
23
  ]);
33
-
34
24
  const listPhonesType = ref([
35
- { "id": "default", "name": "ค่าเริ่มต้น" },
36
- { "id": "post", "name": "จัดส่งไปรษณีย์" },
37
- { "id": "receipt", "name": "จัดส่งใบเสร็จ (e-receipt)" }
25
+ { "id": "default", "name": "\u0E04\u0E48\u0E32\u0E40\u0E23\u0E34\u0E48\u0E21\u0E15\u0E49\u0E19" },
26
+ { "id": "post", "name": "\u0E08\u0E31\u0E14\u0E2A\u0E48\u0E07\u0E44\u0E1B\u0E23\u0E29\u0E13\u0E35\u0E22\u0E4C" },
27
+ { "id": "receipt", "name": "\u0E08\u0E31\u0E14\u0E2A\u0E48\u0E07\u0E43\u0E1A\u0E40\u0E2A\u0E23\u0E47\u0E08 (e-receipt)" }
38
28
  ]);
39
-
40
- const property = withDefaults(defineProps<Props>(), {
41
- modelValue: 0,
42
- decimal: 2,
43
- currency: "",
29
+ const property = defineProps({
30
+ modelValue: { type: Number, required: true, default: 0 },
31
+ decimal: { type: Number, required: false, default: 2 },
32
+ currency: { type: String, required: false, default: "" }
44
33
  });
45
-
46
34
  const focusOnTextField = () => {
47
35
  if (phoneNoField.value) {
48
36
  phoneNoField.value.focus();
49
37
  }
50
38
  };
51
-
52
- const mapTypeName = (id: string) => {
53
- const item = listPhonesType.value.find(entry => entry.id === id);
54
- return item ? item.name : undefined;
39
+ const mapTypeName = (id) => {
40
+ const item = listPhonesType.value.find((entry) => entry.id === id);
41
+ return item ? item.name : void 0;
55
42
  };
56
-
57
- const mapPhoneCurrent = (phone: string) => {
58
- const item = listPhonesAll.value.find(entry => entry.phone === phone);
43
+ const mapPhoneCurrent = (phone2) => {
44
+ const item = listPhonesAll.value.find((entry) => entry.phone === phone2);
59
45
  return item ? item.phone : "";
60
46
  };
61
-
62
47
  const add = () => {
63
48
  if (formPadTemplate.value.isValid) {
64
49
  objAddNew.value.phone = phone.value.phone;
65
50
  objAddNew.value.type = typePhone.value.length === 0 ? ["default"] : typePhone.value;
66
-
67
51
  if (mapPhoneCurrent(objAddNew.value.phone) != "") {
68
52
  focusOnTextField();
69
- alert?.addAlert({ message: "เบอร์โทรศัพท์ซ้ำ กรุณาตรวจสอบ", alertType: 'error' });
53
+ alert?.addAlert({ message: "\u0E40\u0E1A\u0E2D\u0E23\u0E4C\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E0B\u0E49\u0E33 \u0E01\u0E23\u0E38\u0E13\u0E32\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A", alertType: "error" });
70
54
  } else {
71
55
  dialog.value = false;
72
56
  listPhonesAll.value.push(objAddNew.value);
73
57
  }
74
58
  }
75
59
  };
76
-
77
60
  const registerPhone = () => {
78
61
  dialog.value = true;
79
62
  phone.value = "";
@@ -125,7 +108,7 @@ const registerPhone = () => {
125
108
  color="primary"
126
109
  label="เบอร์โทรศัพท์ (Phone Number)"
127
110
  variant="underlined"
128
- :rules="[rules.telephone('เบอร์โทรศัพท์ไม่ถูกต้อง'), rules.require()]"
111
+ :rules="[rules.telephone('\u0E40\u0E1A\u0E2D\u0E23\u0E4C\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07'), rules.require()]"
129
112
  v-model="data.phone"
130
113
  :autofocus="true"
131
114
  ></v-text-field>
@@ -150,4 +133,4 @@ const registerPhone = () => {
150
133
  </v-card-actions>
151
134
  </v-card>
152
135
  </v-dialog>
153
- </template>
136
+ </template>
@@ -0,0 +1,12 @@
1
+ interface Props {
2
+ modelValue: number;
3
+ decimal?: number;
4
+ currency?: string;
5
+ }
6
+ declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
7
+ modelValue: number;
8
+ decimal: number;
9
+ currency: string;
10
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -0,0 +1,21 @@
1
+ import { VTextField } from 'vuetify/components/VTextField';
2
+ export interface Props extends /* @vue-ignore */ InstanceType<typeof VTextField['$props']> {
3
+ type: 'eReceipt' | 'telephone';
4
+ }
5
+ declare var __VLS_12: never, __VLS_13: {};
6
+ type __VLS_Slots = {} & {
7
+ [K in NonNullable<typeof __VLS_12>]?: (props: typeof __VLS_13) => any;
8
+ };
9
+ declare const __VLS_base: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
10
+ "update:modelValue": (value: string) => any;
11
+ }, string, import("vue").PublicProps, Readonly<{}> & Readonly<{
12
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
13
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
15
+ declare const _default: typeof __VLS_export;
16
+ export default _default;
17
+ type __VLS_WithSlots<T, S> = T & {
18
+ new (): {
19
+ $slots: S;
20
+ };
21
+ };
@@ -1,42 +1,36 @@
1
- <script lang="ts" setup>
2
- import {computed} from 'vue'
3
- import {VTextField} from 'vuetify/components/VTextField'
4
- import {type MaskaDetail, type MaskOptions, vMaska} from 'maska'
5
-
6
- export interface Props extends /* @vue-ignore */ InstanceType<typeof VTextField['$props']> {
7
- type: 'eReceipt' | 'telephone'
8
- }
9
-
10
- const props = defineProps<Props>()
11
- const emit = defineEmits<{
12
- (event: 'update:modelValue', value: string): void
13
- }>()
14
-
15
- const computedMaskOption = computed<MaskOptions>(() => {
16
- if (props.type == 'eReceipt') return { mask: '##-##-N', tokens: { N: { pattern: /\d/, multiple: true } } }
17
- if (props.type == 'telephone') return { mask: '###-###-####' }
18
- return {}
19
- })
20
-
21
- function onMaska(event: CustomEvent<MaskaDetail>) {
22
- emit('update:modelValue', event.detail.unmasked)
1
+ <script setup>
2
+ import { computed } from "vue";
3
+ import { VTextField } from "vuetify/components/VTextField";
4
+ import { vMaska } from "maska";
5
+ const props = defineProps({
6
+ type: { type: String, required: true }
7
+ });
8
+ const vMaskaOptions = vMaska;
9
+ const emit = defineEmits(["update:modelValue"]);
10
+ const computedMaskOption = computed(() => {
11
+ if (props.type == "eReceipt") return { mask: "##-##-N", tokens: { N: { pattern: /\d/, multiple: true } } };
12
+ if (props.type == "telephone") return { mask: "###-###-####" };
13
+ return {};
14
+ });
15
+ function onMaska(event) {
16
+ emit("update:modelValue", event.detail.unmasked);
23
17
  }
24
18
  </script>
25
19
 
26
20
  <template>
27
21
  <v-text-field
28
- v-maska:[computedMaskOption]
22
+ v-maska-options="computedMaskOption"
29
23
  v-bind="$attrs"
30
24
  @maska="onMaska"
31
25
  >
32
26
  <template
33
- v-for="(_, name, index) in ($slots as {})"
27
+ v-for="(_, name, index) in $slots"
34
28
  :key="index"
35
29
  #[name]="slotData"
36
30
  >
37
31
  <slot
38
32
  :name="name"
39
- v-bind="((slotData || {}) as object)"
33
+ v-bind="slotData || {}"
40
34
  />
41
35
  </template>
42
36
  </v-text-field>
@@ -0,0 +1,21 @@
1
+ import { VTextField } from 'vuetify/components/VTextField';
2
+ export interface Props extends /* @vue-ignore */ InstanceType<typeof VTextField['$props']> {
3
+ type: 'eReceipt' | 'telephone';
4
+ }
5
+ declare var __VLS_12: never, __VLS_13: {};
6
+ type __VLS_Slots = {} & {
7
+ [K in NonNullable<typeof __VLS_12>]?: (props: typeof __VLS_13) => any;
8
+ };
9
+ declare const __VLS_base: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
10
+ "update:modelValue": (value: string) => any;
11
+ }, string, import("vue").PublicProps, Readonly<{}> & Readonly<{
12
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
13
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
15
+ declare const _default: typeof __VLS_export;
16
+ export default _default;
17
+ type __VLS_WithSlots<T, S> = T & {
18
+ new (): {
19
+ $slots: S;
20
+ };
21
+ };
@@ -20,9 +20,9 @@ export default defineNuxtPlugin(async (nuxtApp) => {
20
20
  hostOpenFn = openFn;
21
21
  hostCloseFn = closeFn;
22
22
  };
23
- const setDialogComponents = (components) => {
23
+ const setDialogComponents = ((components) => {
24
24
  Object.assign(dialogComponents, components);
25
- };
25
+ });
26
26
  const open = (component, props = {}) => {
27
27
  return hostOpenFn?.(component, props).promise ?? Promise.reject("No dialog host registered");
28
28
  };
@@ -1,5 +1,5 @@
1
1
  import { defineNuxtPlugin } from "nuxt/app";
2
- import { useAuthentication } from "#imports";
2
+ import { useAuthentication } from "../bridges/authentication.js";
3
3
  export default defineNuxtPlugin((nuxtApp) => {
4
4
  function normalize(input) {
5
5
  if (!input) return [];
@@ -15,13 +15,13 @@ export default defineNuxtPlugin((nuxtApp) => {
15
15
  if (isBlank(permissionIds)) return true;
16
16
  const auth = useAuthentication();
17
17
  const perms = normalize(permissionIds);
18
- return perms.some((id) => auth?.hasPermission(id));
18
+ return perms.some((id) => auth.hasPermission?.(id) ?? false);
19
19
  };
20
20
  const checkAll = (permissionIds) => {
21
21
  if (isBlank(permissionIds)) return true;
22
22
  const auth = useAuthentication();
23
23
  const perms = normalize(permissionIds);
24
- return perms.every((id) => auth?.hasPermission(id));
24
+ return perms.every((id) => auth.hasPermission?.(id) ?? false);
25
25
  };
26
26
  nuxtApp.vueApp.directive("permission", (el, binding, vnode) => {
27
27
  if (!check(binding.value)) {
@@ -0,0 +1,14 @@
1
+ import type { AuthenticationBridgeInput } from '../bridges/authentication'
2
+ import type { GraphqlBridgeInput } from '../bridges/graphql'
3
+
4
+ declare module '#app' {
5
+ interface NuxtApp {
6
+ $appAuthentication?: AuthenticationBridgeInput
7
+ $appGraphql?: GraphqlBridgeInput
8
+ }
9
+
10
+ interface RuntimeNuxtApp {
11
+ $appAuthentication?: AuthenticationBridgeInput
12
+ $appGraphql?: GraphqlBridgeInput
13
+ }
14
+ }
@@ -0,0 +1,2 @@
1
+ export declare const encryptAssetToken: (assetId: string | number) => string;
2
+ export declare const assetUrl: (assetId: string | number) => string;
@@ -0,0 +1,49 @@
1
+ import { useRuntimeConfig } from "#imports";
2
+ const resolveAssetBaseUrl = () => {
3
+ const config = useRuntimeConfig();
4
+ const raw = String(config?.public?.ASSET_URL ?? "/asset/").trim();
5
+ if (raw === "") {
6
+ return "/asset";
7
+ }
8
+ return raw.replace(/\/+$/g, "");
9
+ };
10
+ const xorObfuscate = (input, key) => {
11
+ if (key.length === 0) {
12
+ return input;
13
+ }
14
+ let output = "";
15
+ for (let i = 0; i < input.length; i++) {
16
+ output += String.fromCharCode(input.charCodeAt(i) ^ key.charCodeAt(i % key.length));
17
+ }
18
+ return output;
19
+ };
20
+ const toBase64UrlString = (value) => {
21
+ return btoa(value).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
22
+ };
23
+ const generateRandomKey = (length = 12) => {
24
+ const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
25
+ const bytes = new Uint8Array(length);
26
+ if (typeof crypto !== "undefined" && typeof crypto.getRandomValues === "function") {
27
+ crypto.getRandomValues(bytes);
28
+ } else {
29
+ for (let i = 0; i < length; i++) {
30
+ bytes[i] = Math.floor(Math.random() * 256);
31
+ }
32
+ }
33
+ let key = "";
34
+ for (let i = 0; i < length; i++) {
35
+ key += chars[bytes[i] % chars.length];
36
+ }
37
+ return key;
38
+ };
39
+ export const encryptAssetToken = (assetId) => {
40
+ const timestamp = Date.now();
41
+ const payload = `${timestamp}|${assetId}`;
42
+ const key = generateRandomKey();
43
+ const encryptedPayload = toBase64UrlString(xorObfuscate(payload, key));
44
+ return toBase64UrlString(`${key}|${encryptedPayload}`);
45
+ };
46
+ export const assetUrl = (assetId) => {
47
+ const token = encryptAssetToken(assetId);
48
+ return `${resolveAssetBaseUrl()}/${token}`;
49
+ };
@@ -156,7 +156,7 @@ export function returnVerifyDate(date) {
156
156
  const month = match[2];
157
157
  const day = match[3];
158
158
  const fullMonth = Number.parseInt(month) == 0 || Number.parseInt(month) >= 13 ? "01" : month;
159
- const fullDay = Number.parseInt(day) == 0 || Number.parseInt(month) >= 32 ? "01" : day;
159
+ const fullDay = Number.parseInt(day) == 0 || Number.parseInt(day) >= 32 ? "01" : day;
160
160
  return `${year}-${fullMonth}-${fullDay}`;
161
161
  } else {
162
162
  return null;
package/dist/types.d.mts CHANGED
@@ -1,7 +1,3 @@
1
- import type { NuxtModule } from '@nuxt/schema'
1
+ export { default } from './module.mjs'
2
2
 
3
- import type { default as Module } from './module.js'
4
-
5
- export type ModuleOptions = typeof Module extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
6
-
7
- export { default } from './module.js'
3
+ export { type ModuleOptions } from './module.mjs'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ramathibodi/nuxt-commons",
3
- "version": "0.1.73",
3
+ "version": "4.0.0",
4
4
  "description": "Ramathibodi Nuxt modules for common components",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,113 +10,135 @@
10
10
  "type": "module",
11
11
  "exports": {
12
12
  ".": {
13
- "types": "./dist/types.d.ts",
14
- "import": "./dist/module.mjs",
15
- "require": "./dist/module.cjs"
13
+ "types": "./dist/types.d.mts",
14
+ "import": "./dist/module.mjs"
16
15
  },
17
16
  "./utils/*": {
18
- "default": "./dist/runtime/utils/*.js",
19
- "types": "./dist/runtime/utils/*.d.ts"
17
+ "types": "./dist/runtime/utils/*.d.ts",
18
+ "default": "./dist/runtime/utils/*.js"
20
19
  },
21
20
  "./composables/*": {
22
- "default": "./dist/runtime/composables/*.js",
23
- "types": "./dist/runtime/composables/*.d.ts"
21
+ "types": "./dist/runtime/composables/*.d.ts",
22
+ "default": "./dist/runtime/composables/*.js"
24
23
  },
25
24
  "./composables/*/*": {
26
- "default": "./dist/runtime/composables/*/*.js",
27
- "types": "./dist/runtime/composables/*/*.d.ts"
25
+ "types": "./dist/runtime/composables/*/*.d.ts",
26
+ "default": "./dist/runtime/composables/*/*.js"
28
27
  },
29
28
  "./components/*": "./dist/runtime/components/*.vue",
30
29
  "./components/*/*": "./dist/runtime/components/*/*.vue",
31
30
  "./lab/*": "./dist/runtime/labs/*.vue",
32
31
  "./lab/*/*": "./dist/runtime/labs/*/*.vue"
33
32
  },
34
- "main": "./dist/module.cjs",
35
- "types": "./dist/types.d.ts",
33
+ "main": "./dist/module.mjs",
34
+ "typesVersions": {
35
+ "*": {
36
+ ".": [
37
+ "./dist/types.d.mts"
38
+ ]
39
+ }
40
+ },
36
41
  "files": [
37
42
  "dist",
38
43
  "scripts",
39
44
  "templates"
40
45
  ],
46
+ "workspaces": [
47
+ "playground"
48
+ ],
41
49
  "scripts": {
42
50
  "prepack": "nuxt-module-build build",
43
- "dev": "nuxi dev playground",
44
- "dev:build": "nuxi build playground",
45
- "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground",
46
- "release": "npm run lint && npm run test && npm run prepack && changelogen --release && npm publish && git push --follow-tags",
51
+ "dev": "npm run dev:prepare && nuxt dev playground",
52
+ "dev:build": "nuxt build playground",
53
+ "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxt prepare playground",
54
+ "docs:api:components": "vue-docgen -c docs/vue-docgen.config.cjs && npm run docs:ai:summary && node scripts/enrich-vue-docs-from-ai.mjs",
55
+ "docs:api:composables": "typedoc --options docs/typedoc.json",
56
+ "docs:api:composables:md": "npm run docs:ai:summary && node scripts/generate-composables-md.mjs",
57
+ "docs:api": "npm run docs:api:components && npm run docs:api:composables",
58
+ "docs:ai:summary": "node scripts/generate-ai-summary.mjs",
59
+ "release": "npm run lint && npm run test && npm run prepack && node scripts/release.mjs",
47
60
  "lint": "eslint .",
48
61
  "lint:fix": "eslint . --fix",
49
62
  "test": "vitest run",
50
63
  "test:watch": "vitest watch",
64
+ "test:types": "vue-tsc --noEmit && cd playground && vue-tsc --noEmit",
51
65
  "postinstall": "node scripts/postInstall.cjs"
52
66
  },
67
+ "peerDependencies": {
68
+ "nuxt": "^4.3.1"
69
+ },
53
70
  "dependencies": {
54
- "@codemirror/lang-html": "^6.4.9",
55
- "@codemirror/lang-javascript": "^6.2.3",
71
+ "@codemirror/lang-html": "^6.4.11",
72
+ "@codemirror/lang-javascript": "^6.2.5",
56
73
  "@codemirror/lang-vue": "^0.1.3",
57
- "@codemirror/theme-one-dark": "^6.1.2",
74
+ "@codemirror/theme-one-dark": "^6.1.3",
58
75
  "@fortawesome/fontawesome-free": "^6.7.2",
59
- "@fullcalendar/core": "^6.1.17",
60
- "@fullcalendar/daygrid": "^6.1.17",
61
- "@fullcalendar/interaction": "^6.1.17",
62
- "@fullcalendar/list": "^6.1.17",
63
- "@fullcalendar/multimonth": "^6.1.17",
64
- "@fullcalendar/timegrid": "^6.1.17",
65
- "@fullcalendar/vue3": "^6.1.17",
76
+ "@fullcalendar/core": "^6.1.20",
77
+ "@fullcalendar/daygrid": "^6.1.20",
78
+ "@fullcalendar/interaction": "^6.1.20",
79
+ "@fullcalendar/list": "^6.1.20",
80
+ "@fullcalendar/multimonth": "^6.1.20",
81
+ "@fullcalendar/timegrid": "^6.1.20",
82
+ "@fullcalendar/vue3": "^6.1.20",
66
83
  "@graphql-codegen/add": "^5.0.3",
67
- "@graphql-codegen/cli": "^5.0.5",
68
- "@graphql-codegen/plugin-helpers": "^5.1.0",
69
- "@graphql-codegen/typescript": "^4.1.6",
84
+ "@graphql-codegen/cli": "^6.1.3",
85
+ "@graphql-codegen/plugin-helpers": "^6.1.1",
86
+ "@graphql-codegen/typescript": "^5.0.9",
70
87
  "@mdi/font": "^7.4.47",
71
- "@nuxt/kit": "^3.16.2",
88
+ "@nuxt/kit": "^4.3.1",
72
89
  "@nuxtjs/apollo": "5.0.0-alpha.14",
73
- "@thumbmarkjs/thumbmarkjs": "^1.6.1",
90
+ "@techstark/opencv-js": "4.11.0-release.1",
91
+ "@thumbmarkjs/thumbmarkjs": "^1.7.4",
74
92
  "@vue/apollo-composable": "^4.2.2",
75
93
  "@vuepic/vue-datepicker": "^7.4.1",
76
- "@vueuse/integrations": "^11.3.0",
94
+ "@vueuse/integrations": "^14.2.1",
77
95
  "@zxing/browser": "^0.1.5",
78
96
  "cropperjs": "^1.6.2",
79
97
  "currency.js": "^2.0.4",
80
98
  "exif-rotate-js": "^1.5.0",
81
99
  "fuse.js": "^7.1.0",
82
100
  "gql-query-builder": "^3.8.0",
83
- "graphql": "^16.10.0",
101
+ "graphql": "^16.13.1",
84
102
  "localstorage-slim": "^2.7.1",
85
- "lodash": "^4.17.21",
86
- "luxon": "^3.6.1",
103
+ "lodash": "4.17.23",
104
+ "lodash-es": "^4.17.23",
105
+ "luxon": "^3.7.2",
87
106
  "maska": "^2.1.11",
88
107
  "p-limit": "^6.2.0",
89
- "painterro": "^1.2.87",
108
+ "painterro": "^1.2.92",
90
109
  "pdf-vue3": "^1.0.12",
91
110
  "prettier": "3.3.2",
92
111
  "print-js": "^1.6.0",
112
+ "tesseract.js": "^6.0.1",
93
113
  "uid": "^2.0.2",
94
- "vue": "^3.5.13",
114
+ "vue": "^3.5.30",
95
115
  "vue-codemirror": "^6.1.1",
96
- "vue-json-pretty": "^2.5.0",
116
+ "vue-json-pretty": "^2.6.0",
97
117
  "vue-signature-pad": "^3.0.2",
98
- "vuetify": "^3.8.0",
118
+ "vuetify": "^4.0.2",
99
119
  "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"
100
120
  },
101
121
  "devDependencies": {
102
- "@nuxt/devtools": "^1.7.0",
103
- "@nuxt/eslint-config": "^0.5.7",
104
- "@nuxt/module-builder": "^0.8.4",
105
- "@nuxt/schema": "^3.16.2",
106
- "@nuxt/test-utils": "^3.17.2",
122
+ "@nuxt/devtools": "^3.2.3",
123
+ "@nuxt/eslint-config": "^1.15.2",
124
+ "@nuxt/module-builder": "^1.0.2",
125
+ "@nuxt/schema": "^4.3.1",
126
+ "@nuxt/test-utils": "^4.0.0",
107
127
  "@types/crypto-js": "^4.2.2",
108
- "@types/lodash": "^4.17.16",
109
- "@types/luxon": "^3.6.2",
110
- "@types/node": "^18.19.86",
111
- "@vueuse/core": "^10.11.1",
112
- "@vueuse/nuxt": "^10.11.1",
113
- "changelogen": "^0.5.7",
114
- "eslint": "^9.23.0",
115
- "nuxt": "^3.16.2",
116
- "nuxt-lodash": "^2.5.3",
117
- "sass": "^1.86.3",
118
- "typescript": "^5.8.2",
119
- "vitest": "^1.6.1",
120
- "vue-tsc": "^2.2.10"
128
+ "@types/lodash": "^4.17.24",
129
+ "@types/lodash-es": "^4.17.12",
130
+ "@types/luxon": "^3.7.1",
131
+ "@types/node": "latest",
132
+ "@vueuse/core": "^14.2.1",
133
+ "@vueuse/nuxt": "^14.2.1",
134
+ "changelogen": "^0.6.2",
135
+ "eslint": "^10.0.3",
136
+ "nuxt": "^4.3.1",
137
+ "sass": "^1.97.3",
138
+ "typedoc": "^0.28.17",
139
+ "typescript": "^5.9.3",
140
+ "vitest": "^4.0.18",
141
+ "vue-docgen-cli": "^4.79.0",
142
+ "vue-tsc": "^3.2.5"
121
143
  }
122
144
  }