diff --git a/website/package.json b/website/package.json
index c29ccc16..41f89026 100644
--- a/website/package.json
+++ b/website/package.json
@@ -57,6 +57,7 @@
"stylelint": "^15.10.3",
"stylelint-stylus": "^0.18.0",
"stylus": "^0.60.0",
+ "unplugin-element-plus": "^0.8.0",
"vite-plugin-eslint": "^1.8.1",
"vitepress": "1.0.0-rc.10",
"vitepress-plugin-tabs": "^0.3.0",
diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml
index 50820e0d..2e57da15 100644
--- a/website/pnpm-lock.yaml
+++ b/website/pnpm-lock.yaml
@@ -1,9 +1,5 @@
lockfileVersion: '6.0'
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
dependencies:
'@iconify-prerendered/vue-mdi':
specifier: ^0.23.1689058119
@@ -109,6 +105,9 @@ devDependencies:
stylus:
specifier: ^0.60.0
version: 0.60.0
+ unplugin-element-plus:
+ specifier: ^0.8.0
+ version: 0.8.0
vite-plugin-eslint:
specifier: ^1.8.1
version: 1.8.1(eslint@8.48.0)(vite@4.4.9)
@@ -1013,6 +1012,20 @@ packages:
picomatch: 2.3.1
dev: true
+ /@rollup/pluginutils@5.0.4:
+ resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ dependencies:
+ '@types/estree': 1.0.1
+ estree-walker: 2.0.2
+ picomatch: 2.3.1
+ dev: true
+
/@shuding/opentype.js@1.4.0-beta.0:
resolution: {integrity: sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==}
engines: {node: '>= 8.0.0'}
@@ -1540,6 +1553,14 @@ packages:
engines: {node: '>=12'}
dev: true
+ /anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+ dev: true
+
/argparse@1.0.10:
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
dependencies:
@@ -1673,6 +1694,11 @@ packages:
resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==}
dev: false
+ /binary-extensions@2.2.0:
+ resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+ engines: {node: '>=8'}
+ dev: true
+
/body-parser@1.20.1:
resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
@@ -1781,6 +1807,21 @@ packages:
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
dev: true
+ /chokidar@3.5.3:
+ resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
+ engines: {node: '>= 8.10.0'}
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.2
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
/cli-cursor@4.0.0:
resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -2189,6 +2230,10 @@ packages:
which-typed-array: 1.1.11
dev: true
+ /es-module-lexer@1.3.0:
+ resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==}
+ dev: true
+
/es-set-tostringtag@2.0.1:
resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
engines: {node: '>= 0.4'}
@@ -3032,6 +3077,13 @@ packages:
has-bigints: 1.0.2
dev: true
+ /is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+ dependencies:
+ binary-extensions: 2.2.0
+ dev: true
+
/is-boolean-object@1.1.2:
resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
engines: {node: '>= 0.4'}
@@ -3986,6 +4038,13 @@ packages:
type-fest: 1.4.0
dev: true
+ /readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+ dependencies:
+ picomatch: 2.3.1
+ dev: true
+
/redent@4.0.0:
resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==}
engines: {node: '>=12'}
@@ -4711,6 +4770,27 @@ packages:
engines: {node: '>= 0.8'}
dev: true
+ /unplugin-element-plus@0.8.0:
+ resolution: {integrity: sha512-jByUGY3FG2B8RJKFryqxx4eNtSTj+Hjlo8edcOdJymewndDQjThZ1pRUQHRjQsbKhTV2jEctJV7t7RJ405UL4g==}
+ engines: {node: '>=14.19.0'}
+ dependencies:
+ '@rollup/pluginutils': 5.0.4
+ es-module-lexer: 1.3.0
+ magic-string: 0.30.3
+ unplugin: 1.4.0
+ transitivePeerDependencies:
+ - rollup
+ dev: true
+
+ /unplugin@1.4.0:
+ resolution: {integrity: sha512-5x4eIEL6WgbzqGtF9UV8VEC/ehKptPXDS6L2b0mv4FRMkJxRtjaJfOWDd6a8+kYbqsjklix7yWP0N3SUepjXcg==}
+ dependencies:
+ acorn: 8.10.0
+ chokidar: 3.5.3
+ webpack-sources: 3.2.3
+ webpack-virtual-modules: 0.5.0
+ dev: true
+
/upath@2.0.1:
resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==}
engines: {node: '>=4'}
@@ -4909,6 +4989,15 @@ packages:
'@vue/server-renderer': 3.3.4(vue@3.3.4)
'@vue/shared': 3.3.4
+ /webpack-sources@3.2.3:
+ resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
+ engines: {node: '>=10.13.0'}
+ dev: true
+
+ /webpack-virtual-modules@0.5.0:
+ resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==}
+ dev: true
+
/which-boxed-primitive@1.0.2:
resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
dependencies:
@@ -5022,3 +5111,7 @@ packages:
/yoga-wasm-web@0.3.3:
resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==}
dev: true
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
diff --git a/website/src/.vitepress/config.ts b/website/src/.vitepress/config.ts
index ad5cb3b7..2cc257b6 100644
--- a/website/src/.vitepress/config.ts
+++ b/website/src/.vitepress/config.ts
@@ -1,4 +1,5 @@
import { defineConfig, loadEnv } from "vitepress";
+import ElementPlus from "unplugin-element-plus/vite";
import markdownConfig from "./config/markdownConfig"; // For use with loading Markdown plugins
import themeConfig from "./config/themeConfig"; // Theme related config
@@ -30,4 +31,10 @@ export default defineConfig({
generateFeed(context, hostname);
generateOgImages(context);
},
+ vite: {
+ plugins: [ElementPlus({})],
+ ssr: {
+ noExternal: ["element-plus"],
+ },
+ },
});
diff --git a/website/src/.vitepress/config/markdownConfig.ts b/website/src/.vitepress/config/markdownConfig.ts
index e7e49a00..1b723676 100644
--- a/website/src/.vitepress/config/markdownConfig.ts
+++ b/website/src/.vitepress/config/markdownConfig.ts
@@ -12,17 +12,17 @@ import shortcodes from "./shortcodes";
const markdownConfig: MarkdownOptions = {
config: (md) => {
- md.use(attrs),
- md.use(figure),
- md.use(imgLazyload),
- md.use(imgMark),
- md.use(imgSize),
- md.use(include, {
+ md
+ .use(attrs)
+ .use(figure)
+ .use(imgLazyload)
+ .use(imgMark)
+ .use(imgSize)
+ .use(include, {
currentPath: (env) => env.filePath,
- }),
- md.use(tabsMarkdownPlugin);
-
- md.use(shortcode_plugin, shortcodes);
+ })
+ .use(tabsMarkdownPlugin)
+ .use(shortcode_plugin, shortcodes);
},
};
diff --git a/website/src/.vitepress/theme/components/Extensions/ExtensionFilters.vue b/website/src/.vitepress/theme/components/Extensions/ExtensionFilters.vue
index 44ba6b1a..604aa236 100644
--- a/website/src/.vitepress/theme/components/Extensions/ExtensionFilters.vue
+++ b/website/src/.vitepress/theme/components/Extensions/ExtensionFilters.vue
@@ -1,57 +1,80 @@
-
+
-
+
-
+
-
-
-
+
+
+
-
+
-
+
@@ -67,4 +90,8 @@ export default {
flex-direction: column
row-gap: 1rem
}
+
+.el-select {
+ width: 100%
+}
diff --git a/website/src/.vitepress/theme/components/Extensions/ExtensionGroup.vue b/website/src/.vitepress/theme/components/Extensions/ExtensionGroup.vue
index a4f891b3..a14aec3f 100644
--- a/website/src/.vitepress/theme/components/Extensions/ExtensionGroup.vue
+++ b/website/src/.vitepress/theme/components/Extensions/ExtensionGroup.vue
@@ -1,27 +1,25 @@
-
- {{ groupName }}
+ {{ groupName }}
Total:
@@ -30,6 +28,7 @@ export default {
+
diff --git a/website/src/.vitepress/theme/components/Extensions/ExtensionList.vue b/website/src/.vitepress/theme/components/Extensions/ExtensionList.vue
index 0eea8323..5e6fe0d1 100644
--- a/website/src/.vitepress/theme/components/Extensions/ExtensionList.vue
+++ b/website/src/.vitepress/theme/components/Extensions/ExtensionList.vue
@@ -1,21 +1,28 @@
-
+
-
+
+
diff --git a/website/src/.vitepress/theme/index.ts b/website/src/.vitepress/theme/index.ts
index 6e59e3a9..a5bf7cb0 100644
--- a/website/src/.vitepress/theme/index.ts
+++ b/website/src/.vitepress/theme/index.ts
@@ -5,8 +5,6 @@ import DefaultTheme from "vitepress/theme";
import "./styles/base.styl";
// Import Global plugins
-import ElementPlus from "element-plus";
-import "element-plus/dist/index.css";
import "element-plus/theme-chalk/dark/css-vars.css";
import { VueQueryPlugin } from "@tanstack/vue-query";
@@ -19,7 +17,6 @@ import { IconDownload, IconNewspaperVariant, IconBugReport } from "@iconify-prer
export default {
extends: DefaultTheme,
enhanceApp({ app }) {
- app.use(ElementPlus);
app.use(VueQueryPlugin);
enhanceAppWithTabs(app);
app.component("IconDownload", IconDownload);
diff --git a/website/src/.vitepress/theme/queries/useExtensionsRepositoryQuery.ts b/website/src/.vitepress/theme/queries/useExtensionsRepositoryQuery.ts
index d9a24953..7f08502e 100644
--- a/website/src/.vitepress/theme/queries/useExtensionsRepositoryQuery.ts
+++ b/website/src/.vitepress/theme/queries/useExtensionsRepositoryQuery.ts
@@ -1,4 +1,4 @@
-import { useQuery } from "@tanstack/vue-query";
+import { UseQueryOptions, useQuery } from "@tanstack/vue-query";
import axios from "axios";
import { GITHUB_EXTENSION_JSON } from "../../config/constants";
@@ -26,14 +26,11 @@ export interface Source {
hasCloudflare: string;
}
-export interface GitHubAsset {
- name: string;
- content_type: string;
- browser_download_url: string;
-}
+type UseExtensionsRepositoryQueryOptions =
+ UseQueryOptions
-export default function useExtensionsRepositoryQuery() {
- return useQuery({
+export default function useExtensionsRepositoryQuery(options: UseExtensionsRepositoryQueryOptions = {}) {
+ return useQuery({
queryKey: ["extensions"],
queryFn: async () => {
const { data } = await axios.get(GITHUB_EXTENSION_JSON);
@@ -42,5 +39,6 @@ export default function useExtensionsRepositoryQuery() {
},
initialData: () => [],
refetchOnWindowFocus: false,
+ ...options,
});
}
diff --git a/website/src/.vitepress/theme/styles/base.styl b/website/src/.vitepress/theme/styles/base.styl
index 847a374d..73e20356 100644
--- a/website/src/.vitepress/theme/styles/base.styl
+++ b/website/src/.vitepress/theme/styles/base.styl
@@ -217,3 +217,10 @@ main :where(h1, h2, h3, h4, h5, h6) + figure {
margin-right: 4px
}
}
+
+/**
+ * Component: Element Plus
+ */
+body {
+ --el-color-primary: var(--vp-c-brand-1)
+}