diff --git a/.vscode/settings.json b/.vscode/settings.json
index 7f6a68486d3e9a3dd118aa30f5729a8841a5be17..a6e580624469dd92f03ecfac1e0bd2d7dd184518 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -2,5 +2,47 @@
     "editor.defaultFormatter": "Vue.volar",
     "[python]": {
         "editor.defaultFormatter": "ms-python.black-formatter"
-    }
-}
\ No newline at end of file
+    },
+  // Enable the ESlint flat config support
+  "eslint.experimental.useFlatConfig": true,
+
+  // Disable the default formatter, use eslint instead
+  "prettier.enable": false,
+  "editor.formatOnSave": false,
+
+  // Auto fix
+  "editor.codeActionsOnSave": {
+    "source.fixAll.eslint": "explicit",
+    "source.organizeImports": "never"
+  },
+
+  // Silent the stylistic rules in you IDE, but still auto fix them
+  "eslint.rules.customizations": [
+    { "rule": "style/*", "severity": "off" },
+    { "rule": "format/*", "severity": "off" },
+    { "rule": "*-indent", "severity": "off" },
+    { "rule": "*-spacing", "severity": "off" },
+    { "rule": "*-spaces", "severity": "off" },
+    { "rule": "*-order", "severity": "off" },
+    { "rule": "*-dangle", "severity": "off" },
+    { "rule": "*-newline", "severity": "off" },
+    { "rule": "*quotes", "severity": "off" },
+    { "rule": "*semi", "severity": "off" }
+  ],
+
+  // Enable eslint for all supported languages
+  "eslint.validate": [
+    "javascript",
+    "javascriptreact",
+    "typescript",
+    "typescriptreact",
+    "vue",
+    "html",
+    "markdown",
+    "json",
+    "jsonc",
+    "yaml",
+    "toml",
+    "astro",
+  ]
+}
diff --git a/components/content/ArticleSystemDistributionPlot.vue b/components/content/ArticleSystemDistributionPlot.vue
index 695219ae7bc8a8e91170c93df3d921674de5478a..4013dafa0e58481494e142cc52efee9f8025aca4 100644
--- a/components/content/ArticleSystemDistributionPlot.vue
+++ b/components/content/ArticleSystemDistributionPlot.vue
@@ -1,5 +1,6 @@
 <script setup lang="ts">
-import { toValue } from '@vueuse/core';
+
+import { computed, toValue, ref, onMounted, watchEffect, unref } from 'vue'
 import * as d3 from "d3";
 import * as Plot from "@observablehq/plot";
 import { useDisplay } from "vuetify";
@@ -22,7 +23,7 @@ const { width } = useDisplay();
 const systemHits = ref(undefined)
 const refseqTaxo = ref(undefined)
 const selectedTaxoRank = ref("phylum")
-const taxoRanks: Ref<string[]> = ref([
+const taxoRanks = ref<string[]>([
     "species",
     "genus",
     "family",
@@ -40,7 +41,6 @@ const pending = ref<boolean>(false)
 const genomeCountThreshold = ref<boolean>(true)
 const genomeCountDomain = ref<[number | null, number | null]>([null, null])
 const genomeCountValue = ref<number>(10)
-const resetCount = ref<Fn | null>(null)
 
 
 const genomePercentDomain = ref<[number, number]>([0, 100])
@@ -80,7 +80,8 @@ const computedDistribution = computed(() => {
         const distribution = []
         for (const [taxo, values] of itemsPerGroup.entries()) {
             if (toValFacetsPerRank[taxo] && toValFacetsPerRank[taxo] > 0) {
-                distribution.push({ taxo, size: values.size, percent: (values.size / toValFacetsPerRank[taxo]) * 100 })
+                const totalGenomePerTaxa = toValFacetsPerRank[taxo]
+                distribution.push({ taxo, size: totalGenomePerTaxa, percent: (values.size / totalGenomePerTaxa) * 100 })
             }
         }
         return distribution
@@ -99,9 +100,6 @@ const filteredDistribution = computed(() => {
     })
 })
 
-// const totalGenome = computed(() => {
-//     refseqTaxo?.estimatedTotalHits
-// })
 const systemStatistics = computed(() => {
     const toValSystemHits = toValue(systemHits)
     const toValRefseqTaxo = toValue(refseqTaxo)
diff --git a/components/content/PdbeMolstarPlugin.vue b/components/content/PdbeMolstarPlugin.vue
index 20424279d20331194085b60d7d3cf047cab12124..67641746f6a38c36d50044ab0a85efd5b31a5ae0 100644
--- a/components/content/PdbeMolstarPlugin.vue
+++ b/components/content/PdbeMolstarPlugin.vue
@@ -46,8 +46,8 @@ const title = defineModel('title')
 const pdbeMolstarComponent = ref(null)
 
 const dialog = ref(false)
-const moleculeFormat: Ref<string> = ref("pdb")
-const selectedPdb: Ref<string | null> = ref(null)
+const moleculeFormat = ref<string>("pdb")
+const selectedPdb = ref<string | null>(null)
 const structureToDownload: Ref<string | null> = ref(null)
 
 
diff --git a/components/content/RefArticle.vue b/components/content/RefArticle.vue
index 4cc33399d7d4643541c323224f79055d42cc6bb7..0a4dc59f07e2b8e64822c08edca4863d5d56da6a 100644
--- a/components/content/RefArticle.vue
+++ b/components/content/RefArticle.vue
@@ -1,6 +1,6 @@
 <script setup lang="ts">
 import { useTheme } from "vuetify";
-import type { WikiArticle } from '@/types/articles';
+import { useFetchArticle } from "../../composables/useFetchArticle";
 
 
 const theme = useTheme();
diff --git a/components/content/References.vue b/components/content/References.vue
index 043faaeac24742ce80b1c6830ad78e59c3e389b9..8853114149b7dc7b651653e38b58aae14714d80d 100644
--- a/components/content/References.vue
+++ b/components/content/References.vue
@@ -1,5 +1,7 @@
 <script setup lang="ts">
 import ProseH2 from '~/components/content/ProseH2'
+import { computed } from 'vue'
+
 const { page } = useContent();
 const computedDois = computed(() => {
     if (page.value?.references?.length > 0) {
diff --git a/nuxt.config.ts b/nuxt.config.ts
index bd958c30d7d8ae99aa226aa933f11b2808f14781..c9d11c675c0822158861e0fc590a13ef9f4e0c3c 100644
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -11,6 +11,7 @@ export default defineNuxtConfig({
     'nuxt-meilisearch',
     '@nuxtjs/plausible',
     '@nuxtjs/seo',
+    '@nuxtjs/eslint-module',
   ],
   app: {
     head: {
@@ -94,6 +95,10 @@ export default defineNuxtConfig({
       isCustomElement: (tag) => ['pdbe-molstar'].includes(tag),
     },
   },
+  eslint: {
+    /* module options */
+    lintOnStart: false
+  }
 
 
 })
diff --git a/package-lock.json b/package-lock.json
index 0112a9060d4d91f1fda2b4c59d7722cc5151985d..6385fd0287d990b755f66e27becb0c97779aca2f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,7 +16,7 @@
         "yaml": "^2.3.3"
       },
       "devDependencies": {
-        "@antfu/eslint-config": "^2.11.6",
+        "@antfu/eslint-config": "^2.12.2",
         "@iconify-json/game-icons": "^1.1.7",
         "@iconify-json/gravity-ui": "^1.1.1",
         "@iconify-json/material-symbols": "^1.1.69",
@@ -25,15 +25,17 @@
         "@iconify-json/tabler": "^1.1.103",
         "@iconify-json/vscode-icons": "^1.1.32",
         "@nuxt/content": "^2.10.0",
+        "@nuxtjs/eslint-module": "^4.1.0",
         "@nuxtjs/plausible": "^0.2.4",
         "@nuxtjs/seo": "^2.0.0-rc.9",
         "@types/d3": "^7.4.3",
         "@types/node": "^20.11.0",
-        "@unocss/eslint-plugin": "^0.58.8",
+        "@unocss/eslint-plugin": "^0.59.0",
         "@unocss/nuxt": "^0.58.3",
         "@unocss/preset-icons": "^0.58.3",
         "@vueuse/core": "^10.7.1",
         "@vueuse/nuxt": "^10.7.1",
+        "eslint": "^8.57.0",
         "eslint-plugin-format": "^0.1.0",
         "nuxt": "^3.11.1",
         "nuxt-meilisearch": "^1.1.0",
@@ -44,7 +46,6 @@
       "version": "1.2.6",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "engines": {
         "node": ">=0.10.0"
       }
@@ -228,7 +229,7 @@
       }
     },
     "node_modules/@antfu/eslint-config": {
-      "version": "2.12.1",
+      "version": "2.12.2",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -238,19 +239,19 @@
         "@typescript-eslint/eslint-plugin": "^7.5.0",
         "@typescript-eslint/parser": "^7.5.0",
         "eslint-config-flat-gitignore": "^0.1.5",
-        "eslint-flat-config-utils": "^0.2.0",
+        "eslint-flat-config-utils": "^0.2.1",
         "eslint-merge-processors": "^0.1.0",
         "eslint-plugin-antfu": "^2.1.2",
         "eslint-plugin-eslint-comments": "^3.2.0",
         "eslint-plugin-import-x": "^0.5.0",
-        "eslint-plugin-jsdoc": "^48.2.2",
+        "eslint-plugin-jsdoc": "^48.2.3",
         "eslint-plugin-jsonc": "^2.15.0",
         "eslint-plugin-markdown": "^4.0.1",
         "eslint-plugin-n": "^16.6.2",
         "eslint-plugin-no-only-tests": "^3.1.0",
-        "eslint-plugin-perfectionist": "^2.7.0",
+        "eslint-plugin-perfectionist": "^2.8.0",
         "eslint-plugin-toml": "^0.11.0",
-        "eslint-plugin-unicorn": "^51.0.1",
+        "eslint-plugin-unicorn": "^52.0.0",
         "eslint-plugin-unused-imports": "^3.1.0",
         "eslint-plugin-vitest": "^0.4.1",
         "eslint-plugin-vue": "^9.24.0",
@@ -281,7 +282,7 @@
         "eslint-plugin-react": "^7.33.2",
         "eslint-plugin-react-hooks": "^4.6.0",
         "eslint-plugin-react-refresh": "^0.4.4",
-        "eslint-plugin-svelte": "^2.35.1",
+        "eslint-plugin-svelte": ">=2.35.1",
         "prettier-plugin-astro": "^0.13.0",
         "prettier-plugin-slidev": "^1.0.5",
         "svelte-eslint-parser": "^0.33.1"
@@ -353,23 +354,23 @@
       }
     },
     "node_modules/@babel/compat-data": {
-      "version": "7.24.1",
+      "version": "7.24.4",
       "license": "MIT",
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/core": {
-      "version": "7.24.3",
+      "version": "7.24.4",
       "license": "MIT",
       "dependencies": {
         "@ampproject/remapping": "^2.2.0",
         "@babel/code-frame": "^7.24.2",
-        "@babel/generator": "^7.24.1",
+        "@babel/generator": "^7.24.4",
         "@babel/helper-compilation-targets": "^7.23.6",
         "@babel/helper-module-transforms": "^7.23.3",
-        "@babel/helpers": "^7.24.1",
-        "@babel/parser": "^7.24.1",
+        "@babel/helpers": "^7.24.4",
+        "@babel/parser": "^7.24.4",
         "@babel/template": "^7.24.0",
         "@babel/traverse": "^7.24.1",
         "@babel/types": "^7.24.0",
@@ -395,7 +396,7 @@
       }
     },
     "node_modules/@babel/generator": {
-      "version": "7.24.1",
+      "version": "7.24.4",
       "license": "MIT",
       "dependencies": {
         "@babel/types": "^7.24.0",
@@ -450,7 +451,7 @@
       }
     },
     "node_modules/@babel/helper-create-class-features-plugin": {
-      "version": "7.24.1",
+      "version": "7.24.4",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -633,7 +634,7 @@
       }
     },
     "node_modules/@babel/helpers": {
-      "version": "7.24.1",
+      "version": "7.24.4",
       "license": "MIT",
       "dependencies": {
         "@babel/template": "^7.24.0",
@@ -697,6 +698,13 @@
         "node": ">=0.8.0"
       }
     },
+    "node_modules/@babel/highlight/node_modules/has-flag": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/@babel/highlight/node_modules/supports-color": {
       "version": "5.5.0",
       "license": "MIT",
@@ -708,7 +716,7 @@
       }
     },
     "node_modules/@babel/parser": {
-      "version": "7.24.1",
+      "version": "7.24.4",
       "license": "MIT",
       "bin": {
         "parser": "bin/babel-parser.js"
@@ -817,12 +825,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-typescript": {
-      "version": "7.24.1",
+      "version": "7.24.4",
       "dev": true,
       "license": "MIT",
       "dependencies": {
         "@babel/helper-annotate-as-pure": "^7.22.5",
-        "@babel/helper-create-class-features-plugin": "^7.24.1",
+        "@babel/helper-create-class-features-plugin": "^7.24.4",
         "@babel/helper-plugin-utils": "^7.24.0",
         "@babel/plugin-syntax-typescript": "^7.24.1"
       },
@@ -852,7 +860,7 @@
       }
     },
     "node_modules/@babel/runtime": {
-      "version": "7.24.1",
+      "version": "7.24.4",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -863,7 +871,7 @@
       }
     },
     "node_modules/@babel/standalone": {
-      "version": "7.24.3",
+      "version": "7.24.4",
       "license": "MIT",
       "engines": {
         "node": ">=6.9.0"
@@ -1255,7 +1263,6 @@
       "version": "8.57.0",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
       }
@@ -1290,7 +1297,7 @@
       "license": "MIT"
     },
     "node_modules/@fortawesome/fontawesome-common-types": {
-      "version": "6.5.1",
+      "version": "6.5.2",
       "dev": true,
       "hasInstallScript": true,
       "license": "MIT",
@@ -1299,24 +1306,24 @@
       }
     },
     "node_modules/@fortawesome/free-regular-svg-icons": {
-      "version": "6.5.1",
+      "version": "6.5.2",
       "dev": true,
       "hasInstallScript": true,
       "license": "(CC-BY-4.0 AND MIT)",
       "dependencies": {
-        "@fortawesome/fontawesome-common-types": "6.5.1"
+        "@fortawesome/fontawesome-common-types": "6.5.2"
       },
       "engines": {
         "node": ">=6"
       }
     },
     "node_modules/@fortawesome/free-solid-svg-icons": {
-      "version": "6.5.1",
+      "version": "6.5.2",
       "dev": true,
       "hasInstallScript": true,
       "license": "(CC-BY-4.0 AND MIT)",
       "dependencies": {
-        "@fortawesome/fontawesome-common-types": "6.5.1"
+        "@fortawesome/fontawesome-common-types": "6.5.2"
       },
       "engines": {
         "node": ">=6"
@@ -1326,7 +1333,6 @@
       "version": "0.11.14",
       "dev": true,
       "license": "Apache-2.0",
-      "peer": true,
       "dependencies": {
         "@humanwhocodes/object-schema": "^2.0.2",
         "debug": "^4.3.1",
@@ -1340,7 +1346,6 @@
       "version": "1.1.11",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
@@ -1350,7 +1355,6 @@
       "version": "3.1.2",
       "dev": true,
       "license": "ISC",
-      "peer": true,
       "dependencies": {
         "brace-expansion": "^1.1.7"
       },
@@ -1362,7 +1366,6 @@
       "version": "1.0.1",
       "dev": true,
       "license": "Apache-2.0",
-      "peer": true,
       "engines": {
         "node": ">=12.22"
       },
@@ -1374,8 +1377,7 @@
     "node_modules/@humanwhocodes/object-schema": {
       "version": "2.0.3",
       "dev": true,
-      "license": "BSD-3-Clause",
-      "peer": true
+      "license": "BSD-3-Clause"
     },
     "node_modules/@iconify-json/carbon": {
       "version": "1.1.31",
@@ -1386,7 +1388,7 @@
       }
     },
     "node_modules/@iconify-json/game-icons": {
-      "version": "1.1.7",
+      "version": "1.1.9",
       "dev": true,
       "license": "CC-BY-3.0",
       "dependencies": {
@@ -1410,7 +1412,7 @@
       }
     },
     "node_modules/@iconify-json/material-symbols": {
-      "version": "1.1.76",
+      "version": "1.1.77",
       "dev": true,
       "license": "Apache-2.0",
       "dependencies": {
@@ -1418,7 +1420,7 @@
       }
     },
     "node_modules/@iconify-json/mdi": {
-      "version": "1.1.64",
+      "version": "1.1.66",
       "dev": true,
       "license": "Apache-2.0",
       "dependencies": {
@@ -1426,7 +1428,7 @@
       }
     },
     "node_modules/@iconify-json/ph": {
-      "version": "1.1.11",
+      "version": "1.1.12",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -1458,7 +1460,7 @@
       }
     },
     "node_modules/@iconify/collections": {
-      "version": "1.0.408",
+      "version": "1.0.411",
       "dev": true,
       "dependencies": {
         "@iconify/types": "*"
@@ -1701,6 +1703,59 @@
         "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
       }
     },
+    "node_modules/@jest/schemas": {
+      "version": "29.6.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@sinclair/typebox": "^0.27.8"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/types": {
+      "version": "29.6.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@jest/schemas": "^29.6.3",
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^17.0.8",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/types/node_modules/chalk": {
+      "version": "4.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/@jest/types/node_modules/supports-color": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/@jridgewell/gen-mapping": {
       "version": "0.3.5",
       "license": "MIT",
@@ -2094,6 +2149,14 @@
         "node": "^16.13.0 || >=18.0.0"
       }
     },
+    "node_modules/@npmcli/redact": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": "^16.14.0 || >=18.0.0"
+      }
+    },
     "node_modules/@npmcli/run-script": {
       "version": "7.0.4",
       "dev": true,
@@ -2626,10 +2689,10 @@
       }
     },
     "node_modules/@nuxt/kit": {
-      "version": "3.11.1",
+      "version": "3.11.2",
       "license": "MIT",
       "dependencies": {
-        "@nuxt/schema": "3.11.1",
+        "@nuxt/schema": "3.11.2",
         "c12": "^1.10.0",
         "consola": "^3.2.3",
         "defu": "^6.1.4",
@@ -2637,13 +2700,13 @@
         "hash-sum": "^2.0.0",
         "ignore": "^5.3.1",
         "jiti": "^1.21.0",
-        "knitwork": "^1.0.0",
+        "knitwork": "^1.1.0",
         "mlly": "^1.6.1",
         "pathe": "^1.1.2",
         "pkg-types": "^1.0.3",
         "scule": "^1.3.0",
         "semver": "^7.6.0",
-        "ufo": "^1.5.2",
+        "ufo": "^1.5.3",
         "unctx": "^2.3.1",
         "unimport": "^3.7.1",
         "untyped": "^1.4.2"
@@ -2653,10 +2716,10 @@
       }
     },
     "node_modules/@nuxt/schema": {
-      "version": "3.11.1",
+      "version": "3.11.2",
       "license": "MIT",
       "dependencies": {
-        "@nuxt/ui-templates": "^1.3.1",
+        "@nuxt/ui-templates": "^1.3.2",
         "consola": "^3.2.3",
         "defu": "^6.1.4",
         "hookable": "^5.5.3",
@@ -2664,7 +2727,7 @@
         "pkg-types": "^1.0.3",
         "scule": "^1.3.0",
         "std-env": "^3.7.0",
-        "ufo": "^1.5.2",
+        "ufo": "^1.5.3",
         "unimport": "^3.7.1",
         "untyped": "^1.4.2"
       },
@@ -2717,22 +2780,22 @@
       }
     },
     "node_modules/@nuxt/ui-templates": {
-      "version": "1.3.1",
+      "version": "1.3.3",
       "license": "CC-BY-ND-4.0"
     },
     "node_modules/@nuxt/vite-builder": {
-      "version": "3.11.1",
+      "version": "3.11.2",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@nuxt/kit": "3.11.1",
+        "@nuxt/kit": "3.11.2",
         "@rollup/plugin-replace": "^5.0.5",
         "@vitejs/plugin-vue": "^5.0.4",
         "@vitejs/plugin-vue-jsx": "^3.1.0",
-        "autoprefixer": "^10.4.18",
+        "autoprefixer": "^10.4.19",
         "clear": "^0.1.0",
         "consola": "^3.2.3",
-        "cssnano": "^6.1.0",
+        "cssnano": "^6.1.2",
         "defu": "^6.1.4",
         "esbuild": "^0.20.2",
         "escape-string-regexp": "^5.0.0",
@@ -2741,21 +2804,21 @@
         "fs-extra": "^11.2.0",
         "get-port-please": "^3.1.2",
         "h3": "^1.11.1",
-        "knitwork": "^1.0.0",
-        "magic-string": "^0.30.8",
+        "knitwork": "^1.1.0",
+        "magic-string": "^0.30.9",
         "mlly": "^1.6.1",
         "ohash": "^1.1.3",
         "pathe": "^1.1.2",
         "perfect-debounce": "^1.0.0",
         "pkg-types": "^1.0.3",
-        "postcss": "^8.4.36",
+        "postcss": "^8.4.38",
         "rollup-plugin-visualizer": "^5.12.0",
         "std-env": "^3.7.0",
-        "strip-literal": "^2.0.0",
-        "ufo": "^1.5.2",
+        "strip-literal": "^2.1.0",
+        "ufo": "^1.5.3",
         "unenv": "^1.9.0",
-        "unplugin": "^1.10.0",
-        "vite": "^5.1.6",
+        "unplugin": "^1.10.1",
+        "vite": "^5.2.8",
         "vite-node": "^1.4.0",
         "vite-plugin-checker": "^0.6.4",
         "vue-bundle-renderer": "^2.0.0"
@@ -2795,6 +2858,21 @@
         "pathe": "^1.1.2"
       }
     },
+    "node_modules/@nuxtjs/eslint-module": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@nuxt/kit": "^3.5.0",
+        "chokidar": "^3.5.3",
+        "eslint-webpack-plugin": "^4.0.1",
+        "pathe": "^1.1.0",
+        "vite-plugin-eslint": "^1.8.1"
+      },
+      "peerDependencies": {
+        "eslint": ">=7"
+      }
+    },
     "node_modules/@nuxtjs/mdc": {
       "version": "0.6.1",
       "dev": true,
@@ -2871,47 +2949,34 @@
       }
     },
     "node_modules/@nuxtjs/sitemap": {
-      "version": "5.1.2",
+      "version": "5.1.3",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@nuxt/devtools-kit": "^1.0.8",
-        "@nuxt/devtools-ui-kit": "^1.0.8",
-        "@nuxt/kit": "^3.10.3",
+        "@nuxt/devtools-kit": "^1.1.5",
+        "@nuxt/devtools-ui-kit": "^1.1.5",
+        "@nuxt/kit": "^3.11.2",
         "@vueuse/core": "^10.9.0",
         "chalk": "^5.3.0",
         "defu": "^6.1.4",
         "floating-vue": "5.2.2",
         "h3-compression": "^0.3.2",
-        "nuxt-site-config": "^2.2.11",
-        "nuxt-site-config-kit": "^2.2.11",
-        "ofetch": "^1.3.3",
+        "nuxt-site-config": "^2.2.12",
+        "nuxt-site-config-kit": "^2.2.12",
+        "ofetch": "^1.3.4",
         "pathe": "^1.1.2",
         "pkg-types": "^1.0.3",
-        "radix3": "^1.1.1",
+        "radix3": "^1.1.2",
         "semver": "^7.6.0",
-        "shiki": "1.1.7",
+        "shiki": "1.2.4",
         "sirv": "^2.0.4",
-        "site-config-stack": "^2.2.11",
-        "ufo": "^1.4.0"
+        "site-config-stack": "^2.2.12",
+        "ufo": "^1.5.3"
       },
       "funding": {
         "url": "https://github.com/sponsors/harlan-zw"
       }
     },
-    "node_modules/@nuxtjs/sitemap/node_modules/@shikijs/core": {
-      "version": "1.1.7",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@nuxtjs/sitemap/node_modules/shiki": {
-      "version": "1.1.7",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@shikijs/core": "1.1.7"
-      }
-    },
     "node_modules/@observablehq/plot": {
       "version": "0.6.14",
       "license": "ISC",
@@ -3316,7 +3381,7 @@
       }
     },
     "node_modules/@rollup/rollup-linux-x64-gnu": {
-      "version": "4.13.2",
+      "version": "4.14.1",
       "cpu": [
         "x64"
       ],
@@ -3328,7 +3393,7 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-x64-musl": {
-      "version": "4.13.2",
+      "version": "4.14.1",
       "cpu": [
         "x64"
       ],
@@ -3345,16 +3410,16 @@
       "license": "MIT"
     },
     "node_modules/@shikijs/core": {
-      "version": "1.2.3",
+      "version": "1.2.4",
       "dev": true,
       "license": "MIT"
     },
     "node_modules/@shikijs/transformers": {
-      "version": "1.2.3",
+      "version": "1.2.4",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "shiki": "1.2.3"
+        "shiki": "1.2.4"
       }
     },
     "node_modules/@shuding/opentype.js": {
@@ -3373,11 +3438,11 @@
       }
     },
     "node_modules/@sigstore/bundle": {
-      "version": "2.2.0",
+      "version": "2.3.1",
       "dev": true,
       "license": "Apache-2.0",
       "dependencies": {
-        "@sigstore/protobuf-specs": "^0.3.0"
+        "@sigstore/protobuf-specs": "^0.3.1"
       },
       "engines": {
         "node": "^16.14.0 || >=18.0.0"
@@ -3392,21 +3457,21 @@
       }
     },
     "node_modules/@sigstore/protobuf-specs": {
-      "version": "0.3.0",
+      "version": "0.3.1",
       "dev": true,
       "license": "Apache-2.0",
       "engines": {
-        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+        "node": "^16.14.0 || >=18.0.0"
       }
     },
     "node_modules/@sigstore/sign": {
-      "version": "2.2.3",
+      "version": "2.3.0",
       "dev": true,
       "license": "Apache-2.0",
       "dependencies": {
-        "@sigstore/bundle": "^2.2.0",
+        "@sigstore/bundle": "^2.3.0",
         "@sigstore/core": "^1.0.0",
-        "@sigstore/protobuf-specs": "^0.3.0",
+        "@sigstore/protobuf-specs": "^0.3.1",
         "make-fetch-happen": "^13.0.0"
       },
       "engines": {
@@ -3426,18 +3491,23 @@
       }
     },
     "node_modules/@sigstore/verify": {
-      "version": "1.1.1",
+      "version": "1.2.0",
       "dev": true,
       "license": "Apache-2.0",
       "dependencies": {
-        "@sigstore/bundle": "^2.2.0",
+        "@sigstore/bundle": "^2.3.1",
         "@sigstore/core": "^1.1.0",
-        "@sigstore/protobuf-specs": "^0.3.0"
+        "@sigstore/protobuf-specs": "^0.3.1"
       },
       "engines": {
         "node": "^16.14.0 || >=18.0.0"
       }
     },
+    "node_modules/@sinclair/typebox": {
+      "version": "0.27.8",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/@sindresorhus/is": {
       "version": "4.6.0",
       "dev": true,
@@ -3838,7 +3908,7 @@
       "license": "MIT"
     },
     "node_modules/@types/google.maps": {
-      "version": "3.55.5",
+      "version": "3.55.7",
       "dev": true,
       "license": "MIT"
     },
@@ -3863,6 +3933,27 @@
         "@types/node": "*"
       }
     },
+    "node_modules/@types/istanbul-lib-coverage": {
+      "version": "2.0.6",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/istanbul-lib-report": {
+      "version": "3.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "*"
+      }
+    },
+    "node_modules/@types/istanbul-reports": {
+      "version": "3.0.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-report": "*"
+      }
+    },
     "node_modules/@types/json-schema": {
       "version": "7.0.15",
       "dev": true,
@@ -3881,7 +3972,7 @@
       "license": "MIT"
     },
     "node_modules/@types/node": {
-      "version": "20.12.2",
+      "version": "20.12.5",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -3918,6 +4009,19 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/@types/yargs": {
+      "version": "17.0.32",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/@types/yargs-parser": {
+      "version": "21.0.3",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/@typescript-eslint/eslint-plugin": {
       "version": "7.5.0",
       "dev": true,
@@ -4449,14 +4553,15 @@
       }
     },
     "node_modules/@unocss/eslint-plugin": {
-      "version": "0.58.9",
+      "version": "0.59.0",
+      "resolved": "https://registry.npmjs.org/@unocss/eslint-plugin/-/eslint-plugin-0.59.0.tgz",
+      "integrity": "sha512-/tjX9Z84/EQy5UFR4xn+1aoXKTkAGH3roQMYPPS+cmbchy9vjgON/6mWvm1oRwHHt9RnLsCM/uT0IT/QfS4W7g==",
       "dev": true,
-      "license": "MIT",
       "dependencies": {
-        "@typescript-eslint/utils": "^7.4.0",
-        "@unocss/config": "0.58.9",
-        "@unocss/core": "0.58.9",
-        "magic-string": "^0.30.8",
+        "@typescript-eslint/utils": "^7.5.0",
+        "@unocss/config": "0.59.0",
+        "@unocss/core": "0.59.0",
+        "magic-string": "^0.30.9",
         "synckit": "^0.9.0"
       },
       "engines": {
@@ -4490,6 +4595,31 @@
         "eslint": "^8.56.0"
       }
     },
+    "node_modules/@unocss/eslint-plugin/node_modules/@unocss/config": {
+      "version": "0.59.0",
+      "resolved": "https://registry.npmjs.org/@unocss/config/-/config-0.59.0.tgz",
+      "integrity": "sha512-uBsLXmT8Dap6YRHSdlsVLYev8L6JVK6vUFcVCe0w7B74TC+GceE13lNOG3Zhz1EVfHaOrUEcYFthDILUkjBR3Q==",
+      "dev": true,
+      "dependencies": {
+        "@unocss/core": "0.59.0",
+        "unconfig": "^0.3.12"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@unocss/eslint-plugin/node_modules/@unocss/core": {
+      "version": "0.59.0",
+      "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.59.0.tgz",
+      "integrity": "sha512-9tXL6TV4FRpmFy70dHryA5NHsS7bV/x771LOPnZyiw+TRK4oGVk96IsATOflcn7L3FbXQY1mV+8Uzhkhx2PY0A==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
     "node_modules/@unocss/extractor-arbitrary-variants": {
       "version": "0.58.9",
       "dev": true,
@@ -5559,6 +5689,42 @@
         "url": "https://github.com/sponsors/epoberezkin"
       }
     },
+    "node_modules/ajv-formats": {
+      "version": "2.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^8.0.0"
+      },
+      "peerDependencies": {
+        "ajv": "^8.0.0"
+      },
+      "peerDependenciesMeta": {
+        "ajv": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/ajv-formats/node_modules/ajv": {
+      "version": "8.12.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "json-schema-traverse": "^1.0.0",
+        "require-from-string": "^2.0.2",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/ajv-formats/node_modules/json-schema-traverse": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/ajv-keywords": {
       "version": "3.5.2",
       "dev": true,
@@ -6069,7 +6235,7 @@
       }
     },
     "node_modules/builtins": {
-      "version": "5.0.1",
+      "version": "5.1.0",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -6206,7 +6372,7 @@
       }
     },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001605",
+      "version": "1.0.30001607",
       "funding": [
         {
           "type": "opencollective",
@@ -6709,7 +6875,7 @@
       }
     },
     "node_modules/cronstrue": {
-      "version": "2.48.0",
+      "version": "2.49.0",
       "dev": true,
       "license": "MIT",
       "bin": {
@@ -7408,8 +7574,7 @@
     "node_modules/deep-is": {
       "version": "0.1.4",
       "dev": true,
-      "license": "MIT",
-      "peer": true
+      "license": "MIT"
     },
     "node_modules/deepmerge": {
       "version": "4.3.1",
@@ -7626,7 +7791,7 @@
       }
     },
     "node_modules/dompurify": {
-      "version": "3.0.11",
+      "version": "3.1.0",
       "license": "(MPL-2.0 OR Apache-2.0)"
     },
     "node_modules/domutils": {
@@ -7682,7 +7847,7 @@
       "license": "MIT"
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.4.723",
+      "version": "1.4.729",
       "license": "ISC"
     },
     "node_modules/elkjs": {
@@ -7885,7 +8050,6 @@
       "version": "8.57.0",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.2.0",
         "@eslint-community/regexpp": "^4.6.1",
@@ -8040,11 +8204,11 @@
       }
     },
     "node_modules/eslint-flat-config-utils": {
-      "version": "0.2.0",
+      "version": "0.2.1",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@types/eslint": "^8.56.6",
+        "@types/eslint": "^8.56.7",
         "pathe": "^1.1.2"
       },
       "funding": {
@@ -8236,7 +8400,7 @@
       }
     },
     "node_modules/eslint-plugin-jsdoc": {
-      "version": "48.2.2",
+      "version": "48.2.3",
       "dev": true,
       "license": "BSD-3-Clause",
       "dependencies": {
@@ -8386,7 +8550,7 @@
       }
     },
     "node_modules/eslint-plugin-perfectionist": {
-      "version": "2.7.0",
+      "version": "2.8.0",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -8437,7 +8601,7 @@
       }
     },
     "node_modules/eslint-plugin-unicorn": {
-      "version": "51.0.1",
+      "version": "52.0.0",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -8648,11 +8812,33 @@
         "url": "https://opencollective.com/eslint"
       }
     },
+    "node_modules/eslint-webpack-plugin": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/eslint": "^8.56.5",
+        "jest-worker": "^29.7.0",
+        "micromatch": "^4.0.5",
+        "normalize-path": "^3.0.0",
+        "schema-utils": "^4.2.0"
+      },
+      "engines": {
+        "node": ">= 14.15.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "eslint": "^8.0.0",
+        "webpack": "^5.0.0"
+      }
+    },
     "node_modules/eslint/node_modules/brace-expansion": {
       "version": "1.1.11",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
@@ -8662,7 +8848,6 @@
       "version": "4.1.2",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "ansi-styles": "^4.1.0",
         "supports-color": "^7.1.0"
@@ -8678,7 +8863,6 @@
       "version": "6.0.2",
       "dev": true,
       "license": "ISC",
-      "peer": true,
       "dependencies": {
         "is-glob": "^4.0.3"
       },
@@ -8690,7 +8874,6 @@
       "version": "13.24.0",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "type-fest": "^0.20.2"
       },
@@ -8701,20 +8884,10 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/eslint/node_modules/has-flag": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "peer": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/eslint/node_modules/minimatch": {
-      "version": "3.1.2",
+    "node_modules/eslint/node_modules/minimatch": {
+      "version": "3.1.2",
       "dev": true,
       "license": "ISC",
-      "peer": true,
       "dependencies": {
         "brace-expansion": "^1.1.7"
       },
@@ -8726,7 +8899,6 @@
       "version": "7.2.0",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "has-flag": "^4.0.0"
       },
@@ -8738,7 +8910,6 @@
       "version": "0.20.2",
       "dev": true,
       "license": "(MIT OR CC0-1.0)",
-      "peer": true,
       "engines": {
         "node": ">=10"
       },
@@ -8921,8 +9092,7 @@
     "node_modules/fast-levenshtein": {
       "version": "2.0.6",
       "dev": true,
-      "license": "MIT",
-      "peer": true
+      "license": "MIT"
     },
     "node_modules/fastq": {
       "version": "1.17.1",
@@ -8940,7 +9110,6 @@
       "version": "6.0.1",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "flat-cache": "^3.0.4"
       },
@@ -8989,7 +9158,6 @@
       "version": "3.2.0",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "flatted": "^3.2.9",
         "keyv": "^4.5.3",
@@ -9368,10 +9536,11 @@
       }
     },
     "node_modules/has-flag": {
-      "version": "3.0.0",
+      "version": "4.0.0",
+      "dev": true,
       "license": "MIT",
       "engines": {
-        "node": ">=4"
+        "node": ">=8"
       }
     },
     "node_modules/has-unicode": {
@@ -10114,7 +10283,6 @@
       "version": "3.0.3",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "engines": {
         "node": ">=8"
       }
@@ -10222,42 +10390,85 @@
         "@pkgjs/parseargs": "^0.11.0"
       }
     },
-    "node_modules/jest-worker": {
-      "version": "27.5.1",
+    "node_modules/jest-util": {
+      "version": "29.7.0",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
+        "@jest/types": "^29.6.3",
         "@types/node": "*",
-        "merge-stream": "^2.0.0",
-        "supports-color": "^8.0.0"
+        "chalk": "^4.0.0",
+        "ci-info": "^3.2.0",
+        "graceful-fs": "^4.2.9",
+        "picomatch": "^2.2.3"
       },
       "engines": {
-        "node": ">= 10.13.0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/jest-worker/node_modules/has-flag": {
-      "version": "4.0.0",
+    "node_modules/jest-util/node_modules/chalk": {
+      "version": "4.1.2",
       "dev": true,
       "license": "MIT",
-      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/jest-util/node_modules/ci-info": {
+      "version": "3.9.0",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/sibiraj-s"
+        }
+      ],
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
     },
-    "node_modules/jest-worker/node_modules/supports-color": {
-      "version": "8.1.1",
+    "node_modules/jest-util/node_modules/picomatch": {
+      "version": "2.3.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/jest-util/node_modules/supports-color": {
+      "version": "7.2.0",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "has-flag": "^4.0.0"
       },
       "engines": {
-        "node": ">=10"
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-worker": {
+      "version": "29.7.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*",
+        "jest-util": "^29.7.0",
+        "merge-stream": "^2.0.0",
+        "supports-color": "^8.0.0"
       },
-      "funding": {
-        "url": "https://github.com/chalk/supports-color?sponsor=1"
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
     "node_modules/jiti": {
@@ -10317,17 +10528,16 @@
     "node_modules/json-buffer": {
       "version": "3.0.1",
       "dev": true,
-      "license": "MIT",
-      "peer": true
+      "license": "MIT"
     },
     "node_modules/json-editor-vue": {
-      "version": "0.12.0",
+      "version": "0.13.0",
       "dev": true,
       "hasInstallScript": true,
       "license": "MIT",
       "dependencies": {
-        "vanilla-jsoneditor": "^0.21.2",
-        "vue-demi": "^0.14.6"
+        "vanilla-jsoneditor": "^0.23.1",
+        "vue-demi": "^0.14.7"
       },
       "peerDependencies": {
         "@vue/composition-api": ">=1",
@@ -10339,58 +10549,6 @@
         }
       }
     },
-    "node_modules/json-editor-vue/node_modules/ajv": {
-      "version": "8.12.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "json-schema-traverse": "^1.0.0",
-        "require-from-string": "^2.0.2",
-        "uri-js": "^4.2.2"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/epoberezkin"
-      }
-    },
-    "node_modules/json-editor-vue/node_modules/json-schema-traverse": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/json-editor-vue/node_modules/vanilla-jsoneditor": {
-      "version": "0.21.6",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "@codemirror/autocomplete": "^6.12.0",
-        "@codemirror/commands": "^6.3.3",
-        "@codemirror/lang-json": "^6.0.1",
-        "@codemirror/language": "^6.10.1",
-        "@codemirror/lint": "^6.5.0",
-        "@codemirror/search": "^6.5.6",
-        "@codemirror/state": "^6.4.0",
-        "@codemirror/view": "^6.24.0",
-        "@fortawesome/free-regular-svg-icons": "^6.5.1",
-        "@fortawesome/free-solid-svg-icons": "^6.5.1",
-        "@lezer/highlight": "^1.2.0",
-        "@replit/codemirror-indentation-markers": "^6.5.0",
-        "ajv": "^8.12.0",
-        "codemirror-wrapped-line-indent": "^1.0.3",
-        "diff-sequences": "^29.6.3",
-        "immutable-json-patch": "6.0.1",
-        "jmespath": "^0.16.0",
-        "json-source-map": "^0.6.1",
-        "jsonrepair": "^3.6.0",
-        "lodash-es": "^4.17.21",
-        "memoize-one": "^6.0.0",
-        "natural-compare-lite": "^1.4.0",
-        "sass": "^1.70.0",
-        "svelte": "^4.2.10",
-        "vanilla-picker": "^2.12.2"
-      }
-    },
     "node_modules/json-parse-even-better-errors": {
       "version": "3.0.1",
       "dev": true,
@@ -10412,8 +10570,7 @@
     "node_modules/json-stable-stringify-without-jsonify": {
       "version": "1.0.1",
       "dev": true,
-      "license": "MIT",
-      "peer": true
+      "license": "MIT"
     },
     "node_modules/json5": {
       "version": "2.2.3",
@@ -10498,7 +10655,6 @@
       "version": "4.5.4",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "json-buffer": "3.0.1"
       }
@@ -10586,7 +10742,6 @@
       "version": "0.4.1",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "prelude-ls": "^1.2.1",
         "type-check": "~0.4.0"
@@ -10747,8 +10902,7 @@
     "node_modules/lodash.merge": {
       "version": "4.6.2",
       "dev": true,
-      "license": "MIT",
-      "peer": true
+      "license": "MIT"
     },
     "node_modules/lodash.uniq": {
       "version": "4.5.0",
@@ -10772,7 +10926,7 @@
       }
     },
     "node_modules/magic-string": {
-      "version": "0.30.8",
+      "version": "0.30.9",
       "license": "MIT",
       "dependencies": {
         "@jridgewell/sourcemap-codec": "^1.4.15"
@@ -12625,7 +12779,7 @@
       "peer": true
     },
     "node_modules/nitropack": {
-      "version": "2.9.5",
+      "version": "2.9.6",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -12647,7 +12801,7 @@
         "chokidar": "^3.6.0",
         "citty": "^0.1.6",
         "consola": "^3.2.3",
-        "cookie-es": "^1.0.0",
+        "cookie-es": "^1.1.0",
         "croner": "^8.0.1",
         "crossws": "^0.2.4",
         "db0": "^0.1.4",
@@ -12667,7 +12821,7 @@
         "is-primitive": "^3.0.1",
         "jiti": "^1.21.0",
         "klona": "^2.0.6",
-        "knitwork": "^1.0.0",
+        "knitwork": "^1.1.0",
         "listhen": "^1.7.2",
         "magic-string": "^0.30.8",
         "mime": "^4.0.1",
@@ -12682,7 +12836,7 @@
         "pkg-types": "^1.0.3",
         "pretty-bytes": "^6.1.1",
         "radix3": "^1.1.2",
-        "rollup": "^4.13.0",
+        "rollup": "^4.13.2",
         "rollup-plugin-visualizer": "^5.12.0",
         "scule": "^1.3.0",
         "semver": "^7.6.0",
@@ -12695,7 +12849,7 @@
         "unenv": "^1.9.0",
         "unimport": "^3.7.1",
         "unstorage": "^1.10.2",
-        "unwasm": "^0.3.8"
+        "unwasm": "^0.3.9"
       },
       "bin": {
         "nitro": "dist/cli/index.mjs",
@@ -13009,10 +13163,11 @@
       }
     },
     "node_modules/npm-registry-fetch": {
-      "version": "16.1.0",
+      "version": "16.2.0",
       "dev": true,
       "license": "ISC",
       "dependencies": {
+        "@npmcli/redact": "^1.1.0",
         "make-fetch-happen": "^13.0.0",
         "minipass": "^7.0.2",
         "minipass-fetch": "^3.0.0",
@@ -13088,25 +13243,25 @@
       }
     },
     "node_modules/nuxt": {
-      "version": "3.11.1",
+      "version": "3.11.2",
       "dev": true,
       "license": "MIT",
       "dependencies": {
         "@nuxt/devalue": "^2.0.2",
-        "@nuxt/devtools": "^1.0.8",
-        "@nuxt/kit": "3.11.1",
-        "@nuxt/schema": "3.11.1",
+        "@nuxt/devtools": "^1.1.5",
+        "@nuxt/kit": "3.11.2",
+        "@nuxt/schema": "3.11.2",
         "@nuxt/telemetry": "^2.5.3",
-        "@nuxt/ui-templates": "^1.3.1",
-        "@nuxt/vite-builder": "3.11.1",
-        "@unhead/dom": "^1.8.20",
-        "@unhead/ssr": "^1.8.20",
-        "@unhead/vue": "^1.8.20",
+        "@nuxt/ui-templates": "^1.3.2",
+        "@nuxt/vite-builder": "3.11.2",
+        "@unhead/dom": "^1.9.4",
+        "@unhead/ssr": "^1.9.4",
+        "@unhead/vue": "^1.9.4",
         "@vue/shared": "^3.4.21",
         "acorn": "8.11.3",
         "c12": "^1.10.0",
         "chokidar": "^3.6.0",
-        "cookie-es": "^1.0.0",
+        "cookie-es": "^1.1.0",
         "defu": "^6.1.4",
         "destr": "^2.0.3",
         "devalue": "^4.3.2",
@@ -13119,28 +13274,28 @@
         "hookable": "^5.5.3",
         "jiti": "^1.21.0",
         "klona": "^2.0.6",
-        "knitwork": "^1.0.0",
-        "magic-string": "^0.30.8",
+        "knitwork": "^1.1.0",
+        "magic-string": "^0.30.9",
         "mlly": "^1.6.1",
-        "nitropack": "^2.9.4",
-        "nuxi": "^3.11.0",
+        "nitropack": "^2.9.6",
+        "nuxi": "^3.11.1",
         "nypm": "^0.3.8",
-        "ofetch": "^1.3.3",
+        "ofetch": "^1.3.4",
         "ohash": "^1.1.3",
         "pathe": "^1.1.2",
         "perfect-debounce": "^1.0.0",
         "pkg-types": "^1.0.3",
-        "radix3": "^1.1.1",
+        "radix3": "^1.1.2",
         "scule": "^1.3.0",
         "std-env": "^3.7.0",
-        "strip-literal": "^2.0.0",
-        "ufo": "^1.5.2",
+        "strip-literal": "^2.1.0",
+        "ufo": "^1.5.3",
         "ultrahtml": "^1.5.3",
         "uncrypto": "^0.1.3",
         "unctx": "^2.3.1",
         "unenv": "^1.9.0",
         "unimport": "^3.7.1",
-        "unplugin": "^1.10.0",
+        "unplugin": "^1.10.1",
         "unplugin-vue-router": "^0.7.0",
         "unstorage": "^1.10.2",
         "untyped": "^1.4.2",
@@ -13361,18 +13516,18 @@
       "license": "MIT"
     },
     "node_modules/nuxt-og-image": {
-      "version": "3.0.0-rc.49",
+      "version": "3.0.0-rc.52",
       "dev": true,
       "license": "MIT",
       "dependencies": {
         "@css-inline/css-inline": "0.14.0",
         "@css-inline/css-inline-wasm": "0.14.0",
         "@nuxt/devtools-kit": "^1.1.5",
-        "@nuxt/kit": "^3.11.1",
+        "@nuxt/kit": "^3.11.2",
         "@resvg/resvg-js": "^2.6.2",
         "@resvg/resvg-wasm": "^2.6.2",
-        "@unocss/core": "0.59.0-beta.1",
-        "@unocss/preset-wind": "0.59.0-beta.1",
+        "@unocss/core": "0.59.0",
+        "@unocss/preset-wind": "0.59.0",
         "@vueuse/core": "^10.9.0",
         "chrome-launcher": "^1.1.1",
         "defu": "^6.1.4",
@@ -13380,20 +13535,20 @@
         "flatted": "^3.3.1",
         "floating-vue": "5.2.2",
         "image-size": "^1.1.1",
-        "json-editor-vue": "^0.12.0",
+        "json-editor-vue": "^0.13.0",
         "nuxt-icon": "^0.6.10",
-        "nuxt-site-config": "^2.2.11",
-        "nuxt-site-config-kit": "^2.2.11",
+        "nuxt-site-config": "^2.2.12",
+        "nuxt-site-config-kit": "^2.2.12",
         "nypm": "^0.3.8",
         "ofetch": "^1.3.4",
         "ohash": "^1.1.3",
         "pathe": "^1.1.2",
         "pkg-types": "^1.0.3",
-        "playwright-core": "^1.42.1",
+        "playwright-core": "^1.43.0",
         "radix3": "^1.1.2",
         "satori": "0.10.13",
         "satori-html": "^0.3.2",
-        "shiki": "^1.2.3",
+        "shiki": "^1.2.4",
         "sirv": "^2.0.4",
         "splitpanes": "^3.1.5",
         "std-env": "^3.7.0",
@@ -13408,7 +13563,7 @@
       }
     },
     "node_modules/nuxt-og-image/node_modules/@unocss/core": {
-      "version": "0.59.0-beta.1",
+      "version": "0.59.0",
       "dev": true,
       "license": "MIT",
       "funding": {
@@ -13416,49 +13571,49 @@
       }
     },
     "node_modules/nuxt-og-image/node_modules/@unocss/extractor-arbitrary-variants": {
-      "version": "0.59.0-beta.1",
+      "version": "0.59.0",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@unocss/core": "0.59.0-beta.1"
+        "@unocss/core": "0.59.0"
       },
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
     },
     "node_modules/nuxt-og-image/node_modules/@unocss/preset-mini": {
-      "version": "0.59.0-beta.1",
+      "version": "0.59.0",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@unocss/core": "0.59.0-beta.1",
-        "@unocss/extractor-arbitrary-variants": "0.59.0-beta.1",
-        "@unocss/rule-utils": "0.59.0-beta.1"
+        "@unocss/core": "0.59.0",
+        "@unocss/extractor-arbitrary-variants": "0.59.0",
+        "@unocss/rule-utils": "0.59.0"
       },
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
     },
     "node_modules/nuxt-og-image/node_modules/@unocss/preset-wind": {
-      "version": "0.59.0-beta.1",
+      "version": "0.59.0",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@unocss/core": "0.59.0-beta.1",
-        "@unocss/preset-mini": "0.59.0-beta.1",
-        "@unocss/rule-utils": "0.59.0-beta.1"
+        "@unocss/core": "0.59.0",
+        "@unocss/preset-mini": "0.59.0",
+        "@unocss/rule-utils": "0.59.0"
       },
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
     },
     "node_modules/nuxt-og-image/node_modules/@unocss/rule-utils": {
-      "version": "0.59.0-beta.1",
+      "version": "0.59.0",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@unocss/core": "^0.59.0-beta.1",
-        "magic-string": "^0.30.8"
+        "@unocss/core": "^0.59.0",
+        "magic-string": "^0.30.9"
       },
       "engines": {
         "node": ">=14"
@@ -13557,7 +13712,7 @@
       }
     },
     "node_modules/nuxt-site-config": {
-      "version": "2.2.11",
+      "version": "2.2.12",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -13566,12 +13721,12 @@
         "@nuxt/kit": "^3.10.3",
         "@nuxt/schema": "^3.10.3",
         "floating-vue": "5.2.2",
-        "nuxt-site-config-kit": "2.2.11",
+        "nuxt-site-config-kit": "2.2.12",
         "pathe": "^1.1.2",
         "pkg-types": "^1.0.3",
         "shiki": "^1.1.7",
         "sirv": "^2.0.4",
-        "site-config-stack": "2.2.11",
+        "site-config-stack": "2.2.12",
         "ufo": "^1.4.0"
       },
       "funding": {
@@ -13579,14 +13734,14 @@
       }
     },
     "node_modules/nuxt-site-config-kit": {
-      "version": "2.2.11",
+      "version": "2.2.12",
       "dev": true,
       "license": "MIT",
       "dependencies": {
         "@nuxt/kit": "^3.10.3",
         "@nuxt/schema": "^3.10.3",
         "pkg-types": "^1.0.3",
-        "site-config-stack": "2.2.11",
+        "site-config-stack": "2.2.12",
         "std-env": "^3.7.0",
         "ufo": "^1.4.0"
       },
@@ -13741,11 +13896,21 @@
         "openapi-typescript": "bin/cli.js"
       }
     },
+    "node_modules/openapi-typescript/node_modules/supports-color": {
+      "version": "9.4.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/supports-color?sponsor=1"
+      }
+    },
     "node_modules/optionator": {
       "version": "0.9.3",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@aashutoshrathi/word-wrap": "^1.2.3",
         "deep-is": "^0.1.3",
@@ -14151,7 +14316,7 @@
       }
     },
     "node_modules/playwright-core": {
-      "version": "1.42.1",
+      "version": "1.43.0",
       "dev": true,
       "license": "Apache-2.0",
       "bin": {
@@ -14605,7 +14770,6 @@
       "version": "1.2.1",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "engines": {
         "node": ">= 0.8.0"
       }
@@ -14697,7 +14861,7 @@
       }
     },
     "node_modules/property-information": {
-      "version": "6.4.1",
+      "version": "6.5.0",
       "dev": true,
       "license": "MIT",
       "funding": {
@@ -15515,7 +15679,7 @@
       "license": "Unlicense"
     },
     "node_modules/rollup": {
-      "version": "4.13.2",
+      "version": "4.14.1",
       "devOptional": true,
       "license": "MIT",
       "dependencies": {
@@ -15529,21 +15693,21 @@
         "npm": ">=8.0.0"
       },
       "optionalDependencies": {
-        "@rollup/rollup-android-arm-eabi": "4.13.2",
-        "@rollup/rollup-android-arm64": "4.13.2",
-        "@rollup/rollup-darwin-arm64": "4.13.2",
-        "@rollup/rollup-darwin-x64": "4.13.2",
-        "@rollup/rollup-linux-arm-gnueabihf": "4.13.2",
-        "@rollup/rollup-linux-arm64-gnu": "4.13.2",
-        "@rollup/rollup-linux-arm64-musl": "4.13.2",
-        "@rollup/rollup-linux-powerpc64le-gnu": "4.13.2",
-        "@rollup/rollup-linux-riscv64-gnu": "4.13.2",
-        "@rollup/rollup-linux-s390x-gnu": "4.13.2",
-        "@rollup/rollup-linux-x64-gnu": "4.13.2",
-        "@rollup/rollup-linux-x64-musl": "4.13.2",
-        "@rollup/rollup-win32-arm64-msvc": "4.13.2",
-        "@rollup/rollup-win32-ia32-msvc": "4.13.2",
-        "@rollup/rollup-win32-x64-msvc": "4.13.2",
+        "@rollup/rollup-android-arm-eabi": "4.14.1",
+        "@rollup/rollup-android-arm64": "4.14.1",
+        "@rollup/rollup-darwin-arm64": "4.14.1",
+        "@rollup/rollup-darwin-x64": "4.14.1",
+        "@rollup/rollup-linux-arm-gnueabihf": "4.14.1",
+        "@rollup/rollup-linux-arm64-gnu": "4.14.1",
+        "@rollup/rollup-linux-arm64-musl": "4.14.1",
+        "@rollup/rollup-linux-powerpc64le-gnu": "4.14.1",
+        "@rollup/rollup-linux-riscv64-gnu": "4.14.1",
+        "@rollup/rollup-linux-s390x-gnu": "4.14.1",
+        "@rollup/rollup-linux-x64-gnu": "4.14.1",
+        "@rollup/rollup-linux-x64-musl": "4.14.1",
+        "@rollup/rollup-win32-arm64-msvc": "4.14.1",
+        "@rollup/rollup-win32-ia32-msvc": "4.14.1",
+        "@rollup/rollup-win32-x64-msvc": "4.14.1",
         "fsevents": "~2.3.2"
       }
     },
@@ -15653,7 +15817,7 @@
       "license": "MIT"
     },
     "node_modules/sass": {
-      "version": "1.72.0",
+      "version": "1.74.1",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -15697,23 +15861,54 @@
       }
     },
     "node_modules/schema-utils": {
-      "version": "3.3.0",
+      "version": "4.2.0",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
-        "@types/json-schema": "^7.0.8",
-        "ajv": "^6.12.5",
-        "ajv-keywords": "^3.5.2"
+        "@types/json-schema": "^7.0.9",
+        "ajv": "^8.9.0",
+        "ajv-formats": "^2.1.1",
+        "ajv-keywords": "^5.1.0"
       },
       "engines": {
-        "node": ">= 10.13.0"
+        "node": ">= 12.13.0"
       },
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/webpack"
       }
     },
+    "node_modules/schema-utils/node_modules/ajv": {
+      "version": "8.12.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "json-schema-traverse": "^1.0.0",
+        "require-from-string": "^2.0.2",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/schema-utils/node_modules/ajv-keywords": {
+      "version": "5.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "fast-deep-equal": "^3.1.3"
+      },
+      "peerDependencies": {
+        "ajv": "^8.8.2"
+      }
+    },
+    "node_modules/schema-utils/node_modules/json-schema-traverse": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/scule": {
       "version": "1.3.0",
       "license": "MIT"
@@ -15868,11 +16063,11 @@
       }
     },
     "node_modules/shiki": {
-      "version": "1.2.3",
+      "version": "1.2.4",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@shikijs/core": "1.2.3"
+        "@shikijs/core": "1.2.4"
       }
     },
     "node_modules/shikiji": {
@@ -15899,16 +16094,16 @@
       }
     },
     "node_modules/sigstore": {
-      "version": "2.2.2",
+      "version": "2.3.0",
       "dev": true,
       "license": "Apache-2.0",
       "dependencies": {
-        "@sigstore/bundle": "^2.2.0",
+        "@sigstore/bundle": "^2.3.1",
         "@sigstore/core": "^1.0.0",
-        "@sigstore/protobuf-specs": "^0.3.0",
-        "@sigstore/sign": "^2.2.3",
+        "@sigstore/protobuf-specs": "^0.3.1",
+        "@sigstore/sign": "^2.3.0",
         "@sigstore/tuf": "^2.3.1",
-        "@sigstore/verify": "^1.1.0"
+        "@sigstore/verify": "^1.2.0"
       },
       "engines": {
         "node": "^16.14.0 || >=18.0.0"
@@ -15947,7 +16142,7 @@
       "license": "MIT"
     },
     "node_modules/site-config-stack": {
-      "version": "2.2.11",
+      "version": "2.2.12",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -16275,7 +16470,7 @@
       "license": "MIT"
     },
     "node_modules/stringify-entities": {
-      "version": "4.0.3",
+      "version": "4.0.4",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -16392,11 +16587,14 @@
       "license": "MIT"
     },
     "node_modules/supports-color": {
-      "version": "9.4.0",
+      "version": "8.1.1",
       "dev": true,
       "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
       "engines": {
-        "node": ">=12"
+        "node": ">=10"
       },
       "funding": {
         "url": "https://github.com/chalk/supports-color?sponsor=1"
@@ -16588,7 +16786,7 @@
       }
     },
     "node_modules/terser": {
-      "version": "5.30.2",
+      "version": "5.30.3",
       "dev": true,
       "license": "BSD-2-Clause",
       "dependencies": {
@@ -16638,6 +16836,38 @@
         }
       }
     },
+    "node_modules/terser-webpack-plugin/node_modules/jest-worker": {
+      "version": "27.5.1",
+      "dev": true,
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@types/node": "*",
+        "merge-stream": "^2.0.0",
+        "supports-color": "^8.0.0"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
+      "version": "3.3.0",
+      "dev": true,
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@types/json-schema": "^7.0.8",
+        "ajv": "^6.12.5",
+        "ajv-keywords": "^3.5.2"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      }
+    },
     "node_modules/terser/node_modules/commander": {
       "version": "2.20.3",
       "dev": true,
@@ -16646,8 +16876,7 @@
     "node_modules/text-table": {
       "version": "0.2.0",
       "dev": true,
-      "license": "MIT",
-      "peer": true
+      "license": "MIT"
     },
     "node_modules/through": {
       "version": "2.3.8",
@@ -16773,7 +17002,6 @@
       "version": "0.4.0",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "prelude-ls": "^1.2.1"
       },
@@ -16793,7 +17021,7 @@
       }
     },
     "node_modules/typescript": {
-      "version": "5.4.3",
+      "version": "5.4.4",
       "devOptional": true,
       "license": "Apache-2.0",
       "bin": {
@@ -16850,7 +17078,7 @@
       }
     },
     "node_modules/undici": {
-      "version": "5.28.3",
+      "version": "5.28.4",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -17570,7 +17798,7 @@
       }
     },
     "node_modules/vite": {
-      "version": "5.2.7",
+      "version": "5.2.8",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -17740,14 +17968,6 @@
         "node": ">= 12"
       }
     },
-    "node_modules/vite-plugin-checker/node_modules/has-flag": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/vite-plugin-checker/node_modules/npm-run-path": {
       "version": "4.0.1",
       "dev": true,
@@ -17770,6 +17990,57 @@
         "node": ">=8"
       }
     },
+    "node_modules/vite-plugin-eslint": {
+      "version": "1.8.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@rollup/pluginutils": "^4.2.1",
+        "@types/eslint": "^8.4.5",
+        "rollup": "^2.77.2"
+      },
+      "peerDependencies": {
+        "eslint": ">=7",
+        "vite": ">=2"
+      }
+    },
+    "node_modules/vite-plugin-eslint/node_modules/@rollup/pluginutils": {
+      "version": "4.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "estree-walker": "^2.0.1",
+        "picomatch": "^2.2.2"
+      },
+      "engines": {
+        "node": ">= 8.0.0"
+      }
+    },
+    "node_modules/vite-plugin-eslint/node_modules/picomatch": {
+      "version": "2.3.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/vite-plugin-eslint/node_modules/rollup": {
+      "version": "2.79.1",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "rollup": "dist/bin/rollup"
+      },
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
     "node_modules/vite-plugin-inspect": {
       "version": "0.8.3",
       "dev": true,
@@ -18098,7 +18369,7 @@
       "license": "MIT"
     },
     "node_modules/vuetify": {
-      "version": "3.5.13",
+      "version": "3.5.14",
       "dev": true,
       "license": "MIT",
       "engines": {
@@ -18268,6 +18539,24 @@
       "license": "MIT",
       "peer": true
     },
+    "node_modules/webpack/node_modules/schema-utils": {
+      "version": "3.3.0",
+      "dev": true,
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@types/json-schema": "^7.0.8",
+        "ajv": "^6.12.5",
+        "ajv-keywords": "^3.5.2"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      }
+    },
     "node_modules/whatwg-url": {
       "version": "5.0.0",
       "license": "MIT",
diff --git a/package.json b/package.json
index cc4559b31d2c395284c5be6d93555a849c039431..eaf0b7af39744d6048e07a583d62786692685414 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,7 @@
     "preview": "nuxt preview"
   },
   "devDependencies": {
+    "@antfu/eslint-config": "^2.12.2",
     "@iconify-json/game-icons": "^1.1.7",
     "@iconify-json/gravity-ui": "^1.1.1",
     "@iconify-json/material-symbols": "^1.1.69",
@@ -17,20 +18,21 @@
     "@iconify-json/tabler": "^1.1.103",
     "@iconify-json/vscode-icons": "^1.1.32",
     "@nuxt/content": "^2.10.0",
+    "@nuxtjs/eslint-module": "^4.1.0",
     "@nuxtjs/plausible": "^0.2.4",
     "@nuxtjs/seo": "^2.0.0-rc.9",
     "@types/d3": "^7.4.3",
     "@types/node": "^20.11.0",
+    "@unocss/eslint-plugin": "^0.59.0",
     "@unocss/nuxt": "^0.58.3",
     "@unocss/preset-icons": "^0.58.3",
     "@vueuse/core": "^10.7.1",
     "@vueuse/nuxt": "^10.7.1",
+    "eslint": "^8.57.0",
+    "eslint-plugin-format": "^0.1.0",
     "nuxt": "^3.11.1",
     "nuxt-meilisearch": "^1.1.0",
-    "vuetify-nuxt-module": "^0.9.0",
-    "@antfu/eslint-config": "^2.11.6",
-    "eslint-plugin-format": "^0.1.0",
-    "@unocss/eslint-plugin": "^0.58.8"
+    "vuetify-nuxt-module": "^0.9.0"
   },
   "overrides": {
     "vue": "latest"
diff --git a/types/articles.ts b/types/articles.ts
index 2644acb047cf706adaa2592bffea7cee6f24f142..e39a197251a34d3828a0f9faa46aa7bcdc53d751 100644
--- a/types/articles.ts
+++ b/types/articles.ts
@@ -1,3 +1,23 @@
+import type { MarkdownParsedContent } from '@nuxt/content/dist/runtime/types'
+
+
+
+interface DefenseFinderContent extends MarkdownParsedContent {
+    tableColumns: {
+        article: {
+            doi: string
+            abstract?: string
+        }
+        Sensor: string
+        Activator: string
+        Effector: string
+        PFAM: string
+    }
+    contributors?: string[]
+    relevantAbstracts: { doi: string }[]
+}
+
+
 export interface WikiArticle {
     DOI: string
     title?: string