diff --git a/frontend/components/Navbar.vue b/frontend/components/Navbar.vue index 058cf045ad94bb994d92f7bb7078a84e5dad479f..2c331f6682a587a8272a70504efa393bb9e8e92c 100644 --- a/frontend/components/Navbar.vue +++ b/frontend/components/Navbar.vue @@ -32,9 +32,9 @@ const sections = ref([ to: '/', }, { id: "wiki", label: "Wiki", toWiki: "/" }, - { id: "refseq", label: "RefSeq DB", toWiki: '/refseq/' }, - { id: "structure", label: "Structure DB", toWiki: '/structure/' }, - { id: "help", label: "Help", toWiki: "/help/defensefinder/" }, + { id: "refseq", label: "RefSeq DB", toWiki: '/refseq' }, + { id: "structure", label: "Structure DB", toWiki: '/structure' }, + { id: "help", label: "Help", toWiki: "/help/defensefinder" }, ]); const computedSections = computed(() => { diff --git a/frontend/composables/useWikiUrl.ts b/frontend/composables/useWikiUrl.ts index ef2ac1c5d06eae7e6ae38b9e6c3624283547ec9a..743e325d4297b5e5a21e4e6a19e5e232691d00da 100644 --- a/frontend/composables/useWikiUrl.ts +++ b/frontend/composables/useWikiUrl.ts @@ -1,4 +1,4 @@ -import { withTrailingSlash, withLeadingSlash, joinURL } from "ufo"; +import { withoutTrailingSlash, withLeadingSlash, joinURL } from "ufo"; export function useWikiUrl(url: string | Ref<string>) { @@ -6,7 +6,7 @@ export function useWikiUrl(url: string | Ref<string>) { const sanitzedUrl = toValue(url) if (sanitzedUrl.startsWith("/") && !sanitzedUrl.startsWith("//")) { const _base = withLeadingSlash( - withTrailingSlash(useRuntimeConfig().public.wikiUrl) + withoutTrailingSlash(useRuntimeConfig().public.wikiUrl) ); if (_base !== "/" && !sanitzedUrl.startsWith(_base)) { return joinURL(_base, sanitzedUrl); diff --git a/frontend/nuxt.config.ts b/frontend/nuxt.config.ts index ff25c03f935e61a57ab3ec0d28f6ce708978eea6..f616c4fb7cf1a86e411dc05c0de7f563a2ae942c 100644 --- a/frontend/nuxt.config.ts +++ b/frontend/nuxt.config.ts @@ -18,6 +18,7 @@ export default defineNuxtConfig({ } }, modules: [ + '@unocss/nuxt', 'vuetify-nuxt-module', '@nuxtjs/plausible', "nuxt-security", @@ -48,10 +49,17 @@ export default defineNuxtConfig({ vuetifyOptions: { labComponents: true, icons: { - defaultSet: 'mdi', + defaultSet: 'unocss-mdi', sets: ['mdi', 'fa', 'md'], + unocssIcons: { + // default is i-mdi:close-circle + // database: 'i-tabler:database', + // even from another collection, default is i-mdi:chevron-up + // generalconcept: 'i-mdi:book-education-outline', + // help: 'i-tabler:help' + } }, - blueprint: md3, + blueprint: md3 } diff --git a/frontend/package-lock.json b/frontend/package-lock.json index d1c5e03dfa6a193cf972f38dca3bbae4e824598b..f1197f76a5dcd62b1dc5c8ea45cc7b105d2249eb 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -23,23 +23,28 @@ "vee-validate": "^4.12.4" }, "devDependencies": { + "@iconify-json/material-symbols": "^1.1.76", + "@iconify-json/mdi": "^1.1.64", + "@iconify-json/tabler": "^1.1.109", "@nuxt/devtools": "latest", "@nuxtjs/plausible": "^0.2.4", "@nuxtjs/seo": "^2.0.0-rc.9", "@types/node": "^20.11.6", + "@unocss/nuxt": "^0.58.7", + "@unocss/preset-icons": "^0.58.7", "nuxt": "^3.9.3", "nuxt-security": "^0.14.2", "vuetify-nuxt-module": "^0.10.2" } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -157,13 +162,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -179,20 +184,20 @@ } }, "node_modules/@babel/core": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", - "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz", + "integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.1", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.0", - "@babel/parser": "^7.24.0", + "@babel/helpers": "^7.24.1", + "@babel/parser": "^7.24.1", "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", + "@babel/traverse": "^7.24.1", "@babel/types": "^7.24.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -218,14 +223,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz", + "integrity": "sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==", "dev": true, "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -270,9 +275,9 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.7.tgz", - "integrity": "sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.1.tgz", + "integrity": "sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -280,7 +285,7 @@ "@babel/helper-function-name": "^7.23.0", "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-replace-supers": "^7.24.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -391,22 +396,22 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { @@ -480,13 +485,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", - "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.1.tgz", + "integrity": "sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==", "dev": true, "dependencies": { "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", + "@babel/traverse": "^7.24.1", "@babel/types": "^7.24.0" }, "engines": { @@ -494,23 +499,24 @@ } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", + "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -578,12 +584,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -593,12 +599,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -608,13 +614,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", - "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", + "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-simple-access": "^7.22.5" }, "engines": { @@ -625,15 +631,15 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz", - "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.1.tgz", + "integrity": "sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.23.6", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.23.3" + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-typescript": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -643,16 +649,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", - "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz", + "integrity": "sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-typescript": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-syntax-jsx": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-typescript": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -685,18 +691,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", - "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.0", + "@babel/parser": "^7.24.1", "@babel/types": "^7.24.0", "debug": "^4.3.1", "globals": "^11.1.0" @@ -1080,6 +1086,24 @@ "@iconify/types": "*" } }, + "node_modules/@iconify-json/material-symbols": { + "version": "1.1.76", + "resolved": "https://registry.npmjs.org/@iconify-json/material-symbols/-/material-symbols-1.1.76.tgz", + "integrity": "sha512-U3S0n2eENEZmAK+b+zvNBPxHySm7eo9bFQaKODlbrFyjNfaZVwpQMs7pZ3ZmeX9YLp0CtV8XqzmRb2YdhLJIkQ==", + "dev": true, + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify-json/mdi": { + "version": "1.1.64", + "resolved": "https://registry.npmjs.org/@iconify-json/mdi/-/mdi-1.1.64.tgz", + "integrity": "sha512-zGeo5TjhNFAY6FmSDBLAzDO811t77r6v/mDi7CAL9w5eXqKez6bIjk8R9AL/RHIeq44ALP4Ozr4lMqFTkHr7ug==", + "dev": true, + "dependencies": { + "@iconify/types": "*" + } + }, "node_modules/@iconify-json/noto": { "version": "1.1.18", "resolved": "https://registry.npmjs.org/@iconify-json/noto/-/noto-1.1.18.tgz", @@ -1099,9 +1123,9 @@ } }, "node_modules/@iconify-json/tabler": { - "version": "1.1.107", - "resolved": "https://registry.npmjs.org/@iconify-json/tabler/-/tabler-1.1.107.tgz", - "integrity": "sha512-4Ur2DK5kJzCVH1klR163F30n869XWauC2UUGc0vK2VL8v5rZTzpHllHVLnUOyx7pbV3q5rSVAoAW7/jij3HEBg==", + "version": "1.1.109", + "resolved": "https://registry.npmjs.org/@iconify-json/tabler/-/tabler-1.1.109.tgz", + "integrity": "sha512-74RaBQZQ0761iFTrgmuSH1fovfx0fBKn+txRbRNbRzfh8XWtlAHqKUc3CzvzATMLnVsSRJDxjG3qY4oWH/+opw==", "dev": true, "dependencies": { "@iconify/types": "*" @@ -1255,14 +1279,14 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -1278,9 +1302,9 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "engines": { "node": ">=6.0.0" @@ -1302,9 +1326,9 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -3450,38 +3474,38 @@ } }, "node_modules/@unocss/nuxt": { - "version": "0.58.5", - "resolved": "https://registry.npmjs.org/@unocss/nuxt/-/nuxt-0.58.5.tgz", - "integrity": "sha512-x5iIGATNAhAGfN2w0f+ulRzmJTgu7PcJ8XAFmAx9QMKkVGnnurZEyW4IEm3Kr/EsRMhJXLtmZnsAGjC09qUh6A==", - "dev": true, - "dependencies": { - "@nuxt/kit": "^3.10.0", - "@unocss/config": "0.58.5", - "@unocss/core": "0.58.5", - "@unocss/preset-attributify": "0.58.5", - "@unocss/preset-icons": "0.58.5", - "@unocss/preset-tagify": "0.58.5", - "@unocss/preset-typography": "0.58.5", - "@unocss/preset-uno": "0.58.5", - "@unocss/preset-web-fonts": "0.58.5", - "@unocss/preset-wind": "0.58.5", - "@unocss/reset": "0.58.5", - "@unocss/vite": "0.58.5", - "@unocss/webpack": "0.58.5", - "unocss": "0.58.5" + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/nuxt/-/nuxt-0.58.7.tgz", + "integrity": "sha512-qhUBiewBIKliTeqP/WIdTSpzRst54UMs3+MdrWRygbTGc2VVNnKGVxLyOHP3fupxGPz/3oaFboD1aXCJtpbgTw==", + "dev": true, + "dependencies": { + "@nuxt/kit": "^3.11.1", + "@unocss/config": "0.58.7", + "@unocss/core": "0.58.7", + "@unocss/preset-attributify": "0.58.7", + "@unocss/preset-icons": "0.58.7", + "@unocss/preset-tagify": "0.58.7", + "@unocss/preset-typography": "0.58.7", + "@unocss/preset-uno": "0.58.7", + "@unocss/preset-web-fonts": "0.58.7", + "@unocss/preset-wind": "0.58.7", + "@unocss/reset": "0.58.7", + "@unocss/vite": "0.58.7", + "@unocss/webpack": "0.58.7", + "unocss": "0.58.7" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@unocss/nuxt/node_modules/@nuxt/kit": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.10.3.tgz", - "integrity": "sha512-PUjYB9Mvx0qD9H1QZBwwtY4fLlCLET+Mm9BVqUOtXCaGoXd6u6BE4e/dGFPk2UEKkIcDGrUMSbqkHYvsEuK9NQ==", + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.11.1.tgz", + "integrity": "sha512-8VVlhaY4N+wipgHmSXP+gLM+esms9TEBz13I/J++PbOUJuf2cJlUUTyqMoRVL0xudVKK/8fJgSndRkyidy1m2w==", "dev": true, "dependencies": { - "@nuxt/schema": "3.10.3", - "c12": "^1.9.0", + "@nuxt/schema": "3.11.1", + "c12": "^1.10.0", "consola": "^3.2.3", "defu": "^6.1.4", "globby": "^14.0.1", @@ -3489,12 +3513,12 @@ "ignore": "^5.3.1", "jiti": "^1.21.0", "knitwork": "^1.0.0", - "mlly": "^1.6.0", + "mlly": "^1.6.1", "pathe": "^1.1.2", "pkg-types": "^1.0.3", "scule": "^1.3.0", "semver": "^7.6.0", - "ufo": "^1.4.0", + "ufo": "^1.5.2", "unctx": "^2.3.1", "unimport": "^3.7.1", "untyped": "^1.4.2" @@ -3504,9 +3528,9 @@ } }, "node_modules/@unocss/nuxt/node_modules/@nuxt/schema": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.10.3.tgz", - "integrity": "sha512-a4cYbeskEVBPazgAhvUGkL/j7ho/iPWMK3vCEm6dRMjSqHVEITRosrj0aMfLbRrDpTrMjlRs0ZitxiaUfE/p5Q==", + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.11.1.tgz", + "integrity": "sha512-XyGlJsf3DtkouBCvBHlvjz+xvN4vza3W7pY3YBNMnktxlMQtfFiF3aB3A2NGLmBnJPqD3oY0j7lljraELb5hkg==", "dev": true, "dependencies": { "@nuxt/ui-templates": "^1.3.1", @@ -3517,7 +3541,7 @@ "pkg-types": "^1.0.3", "scule": "^1.3.0", "std-env": "^3.7.0", - "ufo": "^1.4.0", + "ufo": "^1.5.2", "unimport": "^3.7.1", "untyped": "^1.4.2" }, @@ -3525,6 +3549,425 @@ "node": "^14.18.0 || >=16.10.0" } }, + "node_modules/@unocss/nuxt/node_modules/@unocss/astro": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/astro/-/astro-0.58.7.tgz", + "integrity": "sha512-htqhe+Qn9UUnND214LlwS8a9Ib0hzO+IxY79cz1GDYoDV+Z4ONXCkUxLLlnnBM/HupWKOu+bdBWWVGIOHAniig==", + "dev": true, + "dependencies": { + "@unocss/core": "0.58.7", + "@unocss/reset": "0.58.7", + "@unocss/vite": "0.58.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/cli": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/cli/-/cli-0.58.7.tgz", + "integrity": "sha512-Vr5LABxFvZa8K71qVOnP7FkSA14/xEqhVOO+KZzcZafdW3TCvWa/dr3Lr5mDUufY82s5/5KGFosVQWQymA8HMg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@rollup/pluginutils": "^5.1.0", + "@unocss/config": "0.58.7", + "@unocss/core": "0.58.7", + "@unocss/preset-uno": "0.58.7", + "cac": "^6.7.14", + "chokidar": "^3.6.0", + "colorette": "^2.0.20", + "consola": "^3.2.3", + "fast-glob": "^3.3.2", + "magic-string": "^0.30.8", + "pathe": "^1.1.2", + "perfect-debounce": "^1.0.0" + }, + "bin": { + "unocss": "bin/unocss.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/config": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/config/-/config-0.58.7.tgz", + "integrity": "sha512-ZMSFWJI8DfE/4HiIU+hkTSKUtEkennRn+raej5HCGTfy5xpdYCm9Zdrw/cYqkN2LPHM8o076Z2sD6H4MV5HrvA==", + "dev": true, + "dependencies": { + "@unocss/core": "0.58.7", + "unconfig": "^0.3.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/core": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.58.7.tgz", + "integrity": "sha512-Df5ytibV0MB7kWLggzLHsJUj08Of2oqXmPg7QjRUghMvCT3dl2LUIZXiztYPMH0F4x0cPebNoa/pavNt8xz9eQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/extractor-arbitrary-variants": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.58.7.tgz", + "integrity": "sha512-wEuilON0u/e1milNp1UBWGps3Hdtm9qBfmc2YmsHN8KhpTSSCluzbrLSYfF++tU5iWmVWR2514Lc2waVDhuiwg==", + "dev": true, + "dependencies": { + "@unocss/core": "0.58.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/inspector": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/inspector/-/inspector-0.58.7.tgz", + "integrity": "sha512-5vYsAuOj4ODgCm2Hmfhgcih+MdjsOxAHpUUDcZKAuVkr5j4dmrQnjWmS0fafR5vcjQch6T1JTsPE9x/Ws51UIw==", + "dev": true, + "dependencies": { + "@unocss/core": "0.58.7", + "@unocss/rule-utils": "0.58.7", + "gzip-size": "^6.0.0", + "sirv": "^2.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/postcss": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/postcss/-/postcss-0.58.7.tgz", + "integrity": "sha512-4UhYTj7AaCDJKPEa9GX9L9dnH+6ci04i9ZYdNdu+Pvbki2Q2wAa2FwqLwH7+6WgWm10b9AXVacExw+4hC2reOg==", + "dev": true, + "dependencies": { + "@unocss/config": "0.58.7", + "@unocss/core": "0.58.7", + "@unocss/rule-utils": "0.58.7", + "css-tree": "^2.3.1", + "fast-glob": "^3.3.2", + "magic-string": "^0.30.8", + "postcss": "^8.4.38" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/preset-attributify": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.58.7.tgz", + "integrity": "sha512-WmhrRSOAhbKn+q7A65Kg/49YDZOqfKxj+VZvngwjzDmSfZcr9BHhc67eg9IOF4OPHdKw/3rhSvA+FTMGre2Lpw==", + "dev": true, + "dependencies": { + "@unocss/core": "0.58.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/preset-mini": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.58.7.tgz", + "integrity": "sha512-ktfrMlOtnks9j1r1ZJFzPcmCbWRjOfXh7UwoGYhH7c3Fi9Zbn1HI9+wblroEBstvbGUZGyaH5Ht+0rCmRrg5HQ==", + "dev": true, + "dependencies": { + "@unocss/core": "0.58.7", + "@unocss/extractor-arbitrary-variants": "0.58.7", + "@unocss/rule-utils": "0.58.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/preset-tagify": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/preset-tagify/-/preset-tagify-0.58.7.tgz", + "integrity": "sha512-IDR9+QDgPjcANRIWzlmubPPtgYTXGxWFqrEfRyz7ZQ4YLiA2sSLpVyOwOBW5mP7Bl2hF5oGlTKYyprk4pRzyUA==", + "dev": true, + "dependencies": { + "@unocss/core": "0.58.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/preset-typography": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.58.7.tgz", + "integrity": "sha512-GCZGrFGBJO/k9widlpRvCKoouRaprgvNtt8mKpv38ToDSWexMZcaOTZHpKUPgljmjJ5As7ASwmDvjv6uiM5uYg==", + "dev": true, + "dependencies": { + "@unocss/core": "0.58.7", + "@unocss/preset-mini": "0.58.7" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/preset-uno": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/preset-uno/-/preset-uno-0.58.7.tgz", + "integrity": "sha512-oirPRtIailoewLvim/VjcxHZrBotRzBNaFZFMD1GLwScAYrzS8DWJ3pozNn7+s2E80ZUBfgekRTgvUKAFMPSCw==", + "dev": true, + "dependencies": { + "@unocss/core": "0.58.7", + "@unocss/preset-mini": "0.58.7", + "@unocss/preset-wind": "0.58.7", + "@unocss/rule-utils": "0.58.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/preset-web-fonts": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/preset-web-fonts/-/preset-web-fonts-0.58.7.tgz", + "integrity": "sha512-97BhHYFudIVmMmLIZl3nA6puFLr2EEgG3xxR8Sa2Ox2sFL46D6oZrsxg9qr73QdJNOU3qk7HtnCn0+rozDrixg==", + "dev": true, + "dependencies": { + "@unocss/core": "0.58.7", + "ofetch": "^1.3.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/preset-wind": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.58.7.tgz", + "integrity": "sha512-rELMKcd/cwMnw6fPf/dmg63u41fRXJoXDO5rlO/+Fa8DF4/r8KJTUbjJbZfcOnh3n8jHz3NUz+QigdRBuDTEuw==", + "dev": true, + "dependencies": { + "@unocss/core": "0.58.7", + "@unocss/preset-mini": "0.58.7", + "@unocss/rule-utils": "0.58.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/reset": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-0.58.7.tgz", + "integrity": "sha512-KiN5u5D4zJcU0Tg+wjgTWYIm8VEfHpi7t2a3YfNCLo9s/75Ty4tlYB9StEShYmVMCXBOu0mK1CwqQTNaFpfM1w==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/rule-utils": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.58.7.tgz", + "integrity": "sha512-SbMwAUSgx5v4TXy+MXiWbqzoMjVHSeMaJpJOruU9PmtrOuZmqeajffMtI6pLtGlgrEL76frLRyMmSErxhyNelw==", + "dev": true, + "dependencies": { + "@unocss/core": "^0.58.7", + "magic-string": "^0.30.8" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/scope": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/scope/-/scope-0.58.7.tgz", + "integrity": "sha512-DaAHFT3azxq5eFiTRrDAqk8TSDlo6x5ImBowzdNO4B2QMt+o1X9uhbe8Qt+WlG3MOwhti87JT8ooNA1pzi3Iig==", + "dev": true + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/transformer-attributify-jsx": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.58.7.tgz", + "integrity": "sha512-6kVTHvcTdlKpvXuXRgUPKFTTWFxJH0OL6N77x2WZgbDQc40mv95JIUCVBA8EnpRyGGTQi3yasiXIS7Ur2UmsbA==", + "dev": true, + "dependencies": { + "@unocss/core": "0.58.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/transformer-attributify-jsx-babel": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx-babel/-/transformer-attributify-jsx-babel-0.58.7.tgz", + "integrity": "sha512-IxEPQG7Kn+NgYEogOSKfqfGMQR7WU8X2DctaGBoQlizMiDr+q9DXM1dgGU0bXMxnSpRF8DYFHvgHefRnNUUVPg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.24.3", + "@babel/plugin-syntax-jsx": "^7.24.1", + "@babel/preset-typescript": "^7.24.1", + "@unocss/core": "0.58.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/transformer-compile-class": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/transformer-compile-class/-/transformer-compile-class-0.58.7.tgz", + "integrity": "sha512-+IWWA9/hmaZIjxB4JY3fuWuK4fAMV/uoi0T3kANDOnK/HUmX5pUF9oTzC3LBa+1SwzZiMoTJgiQEGKv1qa2QjQ==", + "dev": true, + "dependencies": { + "@unocss/core": "0.58.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/transformer-directives": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/transformer-directives/-/transformer-directives-0.58.7.tgz", + "integrity": "sha512-vMn86ARgrhCd+bZf1qvwBWhvQnOkAwOXbFGHM2cuuC0VVGJQcRE+dwTnUEJ5iqKGUNFWPJ/7NaV47kh58YITcg==", + "dev": true, + "dependencies": { + "@unocss/core": "0.58.7", + "@unocss/rule-utils": "0.58.7", + "css-tree": "^2.3.1" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/transformer-variant-group": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/transformer-variant-group/-/transformer-variant-group-0.58.7.tgz", + "integrity": "sha512-9yGvrecxvY6wEc1tV4AsUDMNbj8xWk6aJ3LyZNzxOzmxmNUNAIK+y81/Hp7djn+w0ck6ss/uo6Ug7tGX+0bKUw==", + "dev": true, + "dependencies": { + "@unocss/core": "0.58.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/vite": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/vite/-/vite-0.58.7.tgz", + "integrity": "sha512-S8TJojR1/7O9Sfykj2k4yOq6gZOnjMNZq5ug/6edA11Q/gz2WrT/sx6aPcfIm3xVBnmLxaHfy3r06W+SiIbZcg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@rollup/pluginutils": "^5.1.0", + "@unocss/config": "0.58.7", + "@unocss/core": "0.58.7", + "@unocss/inspector": "0.58.7", + "@unocss/scope": "0.58.7", + "@unocss/transformer-directives": "0.58.7", + "chokidar": "^3.6.0", + "fast-glob": "^3.3.2", + "magic-string": "^0.30.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@unocss/nuxt/node_modules/@unocss/webpack": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/webpack/-/webpack-0.58.7.tgz", + "integrity": "sha512-e5R95VfNUsC42bPQdXTd8KVJScq/rmhu6eiN/fSOc6+zEb4ODt6y3KkCQCMSdSyKLKQnwPVnQfnDF9v6WlJeXw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@rollup/pluginutils": "^5.1.0", + "@unocss/config": "0.58.7", + "@unocss/core": "0.58.7", + "chokidar": "^3.6.0", + "fast-glob": "^3.3.2", + "magic-string": "^0.30.8", + "unplugin": "^1.10.0", + "webpack-sources": "^3.2.3" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "webpack": "^4 || ^5" + } + }, + "node_modules/@unocss/nuxt/node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@unocss/nuxt/node_modules/unocss": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/unocss/-/unocss-0.58.7.tgz", + "integrity": "sha512-WZEG5+RWlMvuMX8qOpZI9PAwBlFpRMnGlOtQV3M6BHsUbEPvC7IPx1fr4I22XizctRfNftUG3MWe5l74CcoD7Q==", + "dev": true, + "dependencies": { + "@unocss/astro": "0.58.7", + "@unocss/cli": "0.58.7", + "@unocss/core": "0.58.7", + "@unocss/extractor-arbitrary-variants": "0.58.7", + "@unocss/postcss": "0.58.7", + "@unocss/preset-attributify": "0.58.7", + "@unocss/preset-icons": "0.58.7", + "@unocss/preset-mini": "0.58.7", + "@unocss/preset-tagify": "0.58.7", + "@unocss/preset-typography": "0.58.7", + "@unocss/preset-uno": "0.58.7", + "@unocss/preset-web-fonts": "0.58.7", + "@unocss/preset-wind": "0.58.7", + "@unocss/reset": "0.58.7", + "@unocss/transformer-attributify-jsx": "0.58.7", + "@unocss/transformer-attributify-jsx-babel": "0.58.7", + "@unocss/transformer-compile-class": "0.58.7", + "@unocss/transformer-directives": "0.58.7", + "@unocss/transformer-variant-group": "0.58.7", + "@unocss/vite": "0.58.7" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@unocss/webpack": "0.58.7", + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "@unocss/webpack": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, "node_modules/@unocss/postcss": { "version": "0.58.5", "resolved": "https://registry.npmjs.org/@unocss/postcss/-/postcss-0.58.5.tgz", @@ -3562,19 +4005,28 @@ } }, "node_modules/@unocss/preset-icons": { - "version": "0.58.5", - "resolved": "https://registry.npmjs.org/@unocss/preset-icons/-/preset-icons-0.58.5.tgz", - "integrity": "sha512-LDNXavHtWaIvMvBezT9O8yiqHJChVCEfTRO6YFVY0yy+wo5jHiuMh6iKeHVcwbYdn3NqHYmpi7b/hrXPMtODzA==", + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/preset-icons/-/preset-icons-0.58.7.tgz", + "integrity": "sha512-GeFaWiWGDktRs9TKqT4gb78Cjo7qlatOTijfJ1Zoyd3QMfbg7mRJPZGgHnLtpwYju+QKxG618fwlGvzARKhNfg==", "dev": true, "dependencies": { "@iconify/utils": "^2.1.22", - "@unocss/core": "0.58.5", - "ofetch": "^1.3.3" + "@unocss/core": "0.58.7", + "ofetch": "^1.3.4" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, + "node_modules/@unocss/preset-icons/node_modules/@unocss/core": { + "version": "0.58.7", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.58.7.tgz", + "integrity": "sha512-Df5ytibV0MB7kWLggzLHsJUj08Of2oqXmPg7QjRUghMvCT3dl2LUIZXiztYPMH0F4x0cPebNoa/pavNt8xz9eQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/@unocss/preset-mini": { "version": "0.58.5", "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.58.5.tgz", @@ -3775,6 +4227,8 @@ "resolved": "https://registry.npmjs.org/@unocss/webpack/-/webpack-0.58.5.tgz", "integrity": "sha512-FR17fZRZA+dHJtk7mmUUOlWuuhAxahhsQlTG0WSHh1FVDtpHGwGKDqWHrfmhFRi0XOcV+5bkVc6cp05yjfYqdA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.1", "@rollup/pluginutils": "^5.1.0", @@ -6615,9 +7069,9 @@ } }, "node_modules/destr": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.2.tgz", - "integrity": "sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz", + "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==", "dev": true }, "node_modules/destroy": { @@ -9231,9 +9685,9 @@ } }, "node_modules/node-fetch-native": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.1.tgz", - "integrity": "sha512-bW9T/uJDPAJB2YNYEpWzE54U5O3MQidXsOyTfnbKYtTtFexRvGzb1waphBN4ZwP6EcIvYYEOwW0b72BpAqydTw==", + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz", + "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==", "dev": true }, "node_modules/node-forge": { @@ -10732,14 +11186,14 @@ } }, "node_modules/ofetch": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.3.tgz", - "integrity": "sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.4.tgz", + "integrity": "sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==", "dev": true, "dependencies": { - "destr": "^2.0.1", - "node-fetch-native": "^1.4.0", - "ufo": "^1.3.0" + "destr": "^2.0.3", + "node-fetch-native": "^1.6.3", + "ufo": "^1.5.3" } }, "node_modules/ohash": { @@ -11239,9 +11693,9 @@ } }, "node_modules/postcss": { - "version": "8.4.33", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", - "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "funding": [ { "type": "opencollective", @@ -11259,7 +11713,7 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -12696,9 +13150,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -13321,9 +13775,9 @@ } }, "node_modules/ufo": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.4.0.tgz", - "integrity": "sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", + "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", "dev": true }, "node_modules/ultrahtml": { @@ -13569,10 +14023,24 @@ } } }, + "node_modules/unocss/node_modules/@unocss/preset-icons": { + "version": "0.58.5", + "resolved": "https://registry.npmjs.org/@unocss/preset-icons/-/preset-icons-0.58.5.tgz", + "integrity": "sha512-LDNXavHtWaIvMvBezT9O8yiqHJChVCEfTRO6YFVY0yy+wo5jHiuMh6iKeHVcwbYdn3NqHYmpi7b/hrXPMtODzA==", + "dev": true, + "dependencies": { + "@iconify/utils": "^2.1.22", + "@unocss/core": "0.58.5", + "ofetch": "^1.3.3" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/unplugin": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.9.0.tgz", - "integrity": "sha512-14PslvMY3gNbXnQtNIRB566Q057L5Fe7f5LDEamxVi0QQVxoz5hrveBwwZLcKyHtZ09ysmipxRRj5Lv+BGz2Iw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.0.tgz", + "integrity": "sha512-CuZtvvO8ua2Wl+9q2jEaqH6m3DoQ38N7pvBYQbbaeNlWGvK2l6GHiKi29aIHDPoSxdUzQ7Unevf1/ugil5X6Pg==", "dev": true, "dependencies": { "acorn": "^8.11.3", diff --git a/frontend/package.json b/frontend/package.json index 1b81e60848dc43dd017ef89c5607b9dc1b0cb3d7..3d3837b15214fdebc2a3d654a832afe529ea4eed 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,10 +10,15 @@ "postinstall": "nuxt prepare" }, "devDependencies": { + "@iconify-json/material-symbols": "^1.1.76", + "@iconify-json/mdi": "^1.1.64", + "@iconify-json/tabler": "^1.1.109", "@nuxt/devtools": "latest", "@nuxtjs/plausible": "^0.2.4", "@nuxtjs/seo": "^2.0.0-rc.9", "@types/node": "^20.11.6", + "@unocss/nuxt": "^0.58.7", + "@unocss/preset-icons": "^0.58.7", "nuxt": "^3.9.3", "nuxt-security": "^0.14.2", "vuetify-nuxt-module": "^0.10.2" diff --git a/frontend/pages/index.vue b/frontend/pages/index.vue index 82f4e13d1d5886da3720c153520338b9dd8c7fef..b55b447139c3a6aefca446b4be478feaf8157e23 100644 --- a/frontend/pages/index.vue +++ b/frontend/pages/index.vue @@ -4,87 +4,115 @@ function resetError(error) { navigateTo("/") } + </script> <template> <v-row> <v-col> <v-card flat color="background"> - <v-card-title>Defense Finder</v-card-title> - <v-card-text> - Welcome on DefenseFinder's web page. On this site, you can freely use (without any login) the DefenseFinder - webservice (see below) and get help to navigate the ever expanding world of defense systems. - There is a <a href="https://defensefinder.mdmlab.fr/wiki/">collaborative knowledge base</a> of defense systems - that provide - essential information - on any given defense systems. You can further explore defense systems across <a - href="https://defensefinder.mdmlab.fr/wiki/refseq/">all - fully sequenced - bacteria</a> and get insight on the <a href="https://defensefinder.mdmlab.fr/wiki/structure/"> - structure</a> of each protein - of those systems - thanks - to protein structure prediction using alphafold for monomer and dimers. - <p> - We encourage you to contribute to this knowledge database, and if you see any non up-to-date information, - let - us - know, or <a href="https://defensefinder.mdmlab.fr/wiki/help/contributing-wiki/">contribute yourself</a> - </p> - </v-card-text> - + <v-card flat color="transparent"> + <v-card-item> + <v-card-title>Defense Finder</v-card-title> + </v-card-item> + <v-card-text class="py-1"> + Welcome on DefenseFinder's web page. On this site, you can freely use (without any login) the DefenseFinder + webservice (see below) and get help to navigate the ever expanding world of defense systems. + There is a <a class="text-primary" :href="toValue(useWikiUrl('/').wikiUrl)">collaborative knowledge base</a> + of defense systems + that provide + essential information + on any given defense systems. You can further explore defense systems across <a class="text-primary" + :href="toValue(useWikiUrl('/refseq').wikiUrl)">all + fully sequenced + bacteria</a> and get insight on the <a class="text-primary" + :href="toValue(useWikiUrl('/structure').wikiUrl)"> + structure</a> of each protein + of those systems + thanks + to protein structure prediction using alphafold for monomer and dimers. + <p> + We encourage you to contribute to this knowledge database, and if you see any non up-to-date information, + let + us + know, or <a class="text-primary" :href="toValue(useWikiUrl('/help/contributing-wiki').wikiUrl)">contribute + yourself</a> + </p> + </v-card-text> + </v-card> - <v-card-text> - If you are using DefenseFinder please cite: - <v-list color="transparent"> - <v-list-item color="transparent" - title="Systematic and quantitative view of the antiviral arsenal of prokaryotes" - subtitle="Tesson F., Hervé A. , Touchon M., d'Humières C., Cury J., Bernheim A., Nature Communication, 2022"> - </v-list-item> - <v-list-item color="transparent" - title="MacSyFinder v2: Improved modelling and search engine to identify molecular systems in genomes" - subtitle="Néron, B; Denise, R; Coluzzi, C; Touchon, M; Rocha, E.P.C.; Abby, S.S., Peer Community Journal, 2023"> - </v-list-item> + <v-card flat color="transparent"> + <v-card-text> + <v-alert border="start" color="info" variant="tonal"> + <v-alert-title>Defense Finder Webservice</v-alert-title> + <p> Run Defense Finder analysis. It accepts both proteic and nucleic fasta files as inputs. The format is + guessed + automatically</p> - </v-list> - </v-card-text> - <v-card-text> - <p> - The list of all systems can be found <a - href="https://defensefinder.mdmlab.fr/wiki/defense-systems/">here</a> - </p> - <p> - Any issues concerning DefenseFinder, the software, can be raised here : - <a href="https://github.com/mdmparis/defense-finder" - target="_blank">https://github.com/mdmparis/defense-finder</a> - </p> - Any issues concerning this website can be raised here : <a href="https://gitlab.pasteur.fr/mdm-lab/wiki" - target="_blank">https://gitlab.pasteur.fr/mdm-lab/wiki</a> - <p> - This site uses session cookies only to save your past analyses for a month. - </p> - </v-card-text> + <p>A Run usually takes a couple of minutes. You can find your last run in the Analyses panel on the left. + </p> + <p>Multiple analyses can be run at the same time, they can all be found in the Analyses panel.</p> - <v-card-text> - <v-alert border="start" color="info" variant="tonal"> - <v-alert-title>Defense Finder</v-alert-title> - <p> Run Defense Finder analysis. It accepts both proteic and nucleic fasta files as inputs. The format is - guessed - automatically</p> + <p>Errors most often arise from incorrect input formats: make sure you are using a valid fasta file as + input.</p> + </v-alert> + </v-card-text> + <NuxtErrorBoundary> + <SubmitAnalysis></SubmitAnalysis> + <template #error="{ error }"> + <ErrorAlert :error="error"></ErrorAlert> + </template> + </NuxtErrorBoundary> + </v-card> + <v-card flat color="transparent"> + <v-card-text class="py-1"> + <v-row> + <v-col cols="12"> + <v-card variant="text"> + <v-list> + <v-list-subheader>If you are using DefenseFinder please cite:</v-list-subheader> + <v-list-item href="https://doi.org/10.1038/s41467-022-30269-9" target="_blank" + title="Systematic and quantitative view of the antiviral arsenal of prokaryotes" + subtitle="Tesson F., Hervé A. , Touchon M., d'Humières C., Cury J., Bernheim A., Nature Communication, 2022"> + </v-list-item> + <v-list-item href="https://doi.org/10.24072/pcjournal.250" target="_blank" + title="MacSyFinder v2: Improved modelling and search engine to identify molecular systems in genomes" + subtitle="Néron, B; Denise, R; Coluzzi, C; Touchon, M; Rocha, E.P.C.; Abby, S.S., Peer Community Journal, 2023"> + </v-list-item> + </v-list> + </v-card> + </v-col></v-row> + </v-card-text> + </v-card> + <v-card flat color="transparent"> + <v-card-text> + <v-row> + <v-col cols="12" md="4"> + <v-card title="List defense systems" class="mx-auto" rel="noopener" + :href="toValue(useWikiUrl('/defense-systems').wikiUrl)" color="primary" variant="tonal"> + <template v-slot:prepend> + <v-icon icon="i-tabler:virus-off"></v-icon> + </template> - <p>A Run usually takes a couple of minutes. You can find your last run in the Analyses panel on the left. - </p> - <p>Multiple analyses can be run at the same time, they can all be found in the Analyses panel.</p> + <v-card-text>The list of all systems describes in the knowledge database can be found here. + </v-card-text> - <p>Errors most often arise from incorrect input formats: make sure you are using a valid fasta file as - input.</p> - </v-alert> - </v-card-text> - <NuxtErrorBoundary> - <SubmitAnalysis></SubmitAnalysis> - <template #error="{ error }"> - <ErrorAlert :error="error"></ErrorAlert> - </template> - </NuxtErrorBoundary> + </v-card> + </v-col> + <v-col cols="12" md="4"> + <v-card prepend-icon="mdi-github" href="https://github.com/mdmparis/defense-finder" target="_blank" + rel="noopener" color="primary" variant="tonal" class="mx-auto" title="DefenseFinder issues"> + <v-card-text>Any issues concerning DefenseFinder, the + software, can be raised here.</v-card-text></v-card> + </v-col> + <v-col cols="12" md="4"> + <v-card prepend-icon="mdi-gitlab" href="https://gitlab.pasteur.fr/mdm-lab/wiki" target="_blank" + rel="noopener" color="primary" variant="tonal" class="mx-auto" title="Wiki issues"> + <v-card-text>Any issues concerning the knowledge database website can be raised + here.</v-card-text></v-card> + </v-col> + </v-row> + </v-card-text> + </v-card> </v-card> </v-col> </v-row>