diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..9d2bbb0 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,5 @@ +node_modules +dist +pnpm-lock.yaml +CHANGELOG.en-US.md +!.* diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..f3346d6 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,76 @@ +module.exports = { + env: { + browser: true, + es2021: true + }, + extends: [ + 'plugin:vue/essential', + 'airbnb-base' + ], + parserOptions: { + ecmaVersion: 13, + parser: '@typescript-eslint/parser', + sourceType: 'module' + }, + plugins: [ + 'vue', + '@typescript-eslint' + ], + rules: { + indent: ['error', 2], + + // 'linebreak-style': ['error', 'unix'], + 'linebreak-style': 'off', + quotes: ['error', 'single'], + semi: ['error', 'never'], + 'no-console': 'warn', + 'no-unused-vars': 0, + 'arrow-parens': 0, + + // 数组和对象键值对最后一个逗号, never参数:不能带末尾的逗号, always参数:必须带末尾的逗号, + 'comma-dangle': [2, 'never'], + + // 控制逗号前后的空格 + 'comma-spacing': [2, { before: false, after: true }], + + // 控制逗号在行尾出现还是在行首出现 + 'comma-style': [2, 'last'], + 'no-tabs': 0, + 'import/no-extraneous-dependencies': [1, { devDependencies: true }], + 'import/no-unresolved': 0, + 'import/no-absolute-path': 0, + 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'vue/html-self-closing': 'off', + 'vue/no-multiple-template-root': 1, + 'max-len': ['warn', 80], + 'no-param-reassign': ['error', { props: false }], + 'no-use-before-define': 1, + 'no-unused-expressions': 0, + + // add new line above comment + 'lines-around-comment': [ + 'error', + { + beforeBlockComment: true, + beforeLineComment: true, + allowBlockStart: true, + allowClassStart: true, + allowObjectStart: true, + allowArrayStart: true + } + ], + + // 'newline-before-return': 'error', + 'import/newline-after-import': ['error', { count: 1 }], + 'import/extensions': [ + 'warn', + 'ignorePackages', + { + js: 'never', + jsx: 'never', + ts: 'never', + tsx: 'never' + } + ] + } +} diff --git a/.gitignore b/.gitignore index a48cf0d..f17518e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,10 @@ public + +temp +fr-FR +es-ES +ja-JP + +vuetom-test +dist +node_modules diff --git a/package.json b/package.json new file mode 100644 index 0000000..7967c43 --- /dev/null +++ b/package.json @@ -0,0 +1,61 @@ +{ + "name": "@lauset/root", + "private": true, + "type": "module", + "scripts": { + "dev:blog": "pnpm run -C packages/blog dev", + "dev:docs": "pnpm run -C packages/docs dev", + "build:all": "pnpm build:theme && pnpm build:docs && pnpm build:blog", + "build:theme": "pnpm run -C packages/vuetom build", + "build:blog": "pnpm run -C packages/blog build", + "build:docs": "pnpm run -C packages/docs build", + "preview:blog": "pnpm run -C packages/blog preview", + "preview:docs": "pnpm run -C packages/docs preview", + "serve:blog": "pnpm run -C packages/blog serve", + "serve:docs": "pnpm run -C packages/docs serve", + "clean:all": "pnpm -r --filter=./packages/* run clean" + }, + "engines": { + "node": ">=18.0.0" + }, + "devDependencies": { + "@types/gulp": "^4.0.10", + "@types/gulp-autoprefixer": "0.0.33", + "@types/gulp-clean-css": "4.3.0", + "@types/gulp-rename": "2.0.1", + "@types/gulp-sass": "5.0.0", + "@typescript-eslint/eslint-plugin": "^5.46.0", + "@typescript-eslint/parser": "^5.46.0", + "chalk": "^5.2.0", + "consola": "^2.15.3", + "cross-env": "7.0.3", + "eslint": "^8.29.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-define-config": "1.12.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-vue": "^9.8.0", + "fast-glob": "^3.2.12", + "fs-extra": "^11.1.0", + "gulp": "^4.0.2", + "gulp-autoprefixer": "8.0.0", + "gulp-clean-css": "4.3.0", + "gulp-rename": "2.0.0", + "gulp-sass": "5.1.0", + "http-proxy-middleware": "^2.0.6", + "prettier": "2.8.1", + "rimraf": "^3.0.2", + "sass": "^1.56.2", + "tsx": "^3.12.1", + "typescript": "^4.9.4" + }, + "pnpm": { + "peerDependencyRules": { + "ignoreMissing": [ + "@algolia/client-search", + "react", + "react-dom", + "@types/react" + ] + } + } +} diff --git a/packages/blog/.vitepress/conf/path.ts b/packages/blog/.vitepress/conf/path.ts new file mode 100644 index 0000000..ebbf26c --- /dev/null +++ b/packages/blog/.vitepress/conf/path.ts @@ -0,0 +1,7 @@ +import path from 'path' + +export const vpRoot = path.resolve(__dirname, '..') +export const blogRoot = path.resolve(vpRoot, '..') +export const pageRoot = path.resolve(blogRoot, 'posts') +export const pkgsRoot = path.resolve(blogRoot, '..') +export const projRoot = path.resolve(pkgsRoot, '..') diff --git a/packages/blog/.vitepress/conf/posts.ts b/packages/blog/.vitepress/conf/posts.ts new file mode 100644 index 0000000..b259c9d --- /dev/null +++ b/packages/blog/.vitepress/conf/posts.ts @@ -0,0 +1,26 @@ +import fs from 'fs' +import { pageRoot } from './path' + +const readDir = (dir) => { + const res = [] + const files = fs.readdirSync(dir) + files.forEach(item => { + const filepath = `${dir}/${item}` + const stat = fs.statSync(filepath) + if (stat.isFile()) { + const name = item.replace('.md', '') + res.push({ + text: name, + link: `/${name}` + }) + } + }) + return res +} + +const getDefaultPage = () => ({ + text: '', + link: '' +}) + +export default () => readDir(pageRoot) diff --git a/packages/blog/.vitepress/config.ts b/packages/blog/.vitepress/config.ts new file mode 100644 index 0000000..21bca43 --- /dev/null +++ b/packages/blog/.vitepress/config.ts @@ -0,0 +1,70 @@ +import { defineConfigWithTheme } from 'vitepress' +import { VuetomThemeConfig } from 'vitepress-theme-vuetom' +import pages from './conf/posts' + +export default defineConfigWithTheme({ + lang: 'en-US', + title: 'Vuetom Blog', + titleTemplate: 'My Blog', + description: 'Just a blog', + base: '/myblog', + ignoreDeadLinks: true, + lastUpdated: true, + themeConfig: { + nav: [ + { text: '首页', link: '/' }, + { text: '指导', link: '/pages/guide' }, + { + text: '更多', + items: [ + { text: '分类', link: '/categories/index' }, + { text: '标签', link: '/tags/index' } + ] + } + ], + sidebar: [ + { + text: '首页', + link: '/' + }, + { + text: '指导', + link: '/pages/guide' + }, + { + text: '更多', + items: [] + } + ], + pages: pages(), + outlineTitle: 'In hac pagina', + socialLinks: [ + { + icon: 'github', + link: 'https://github.com/lauset/vitepress-theme-vuetom' + } + ], + footer: { + message: 'Released under the MIT License.', + copyright: 'Copyright © 2021-present Vuetom' + }, + lastUpdatedText: 'Updated Date', + docFooter: { + prev: 'Pagina prior', + next: 'Proxima pagina' + }, + bgImg: '/imgs/blog-bg.png', + avatar: '/imgs/avatar.jpg', + author: 'Vuetom', + parallaxEnable: true, + }, + markdown: { + theme: 'material-palenight', + lineNumbers: false + }, + vite: { + ssr: { + noExternal: ["vitepress-theme-vuetom"] + } + } +}) diff --git a/packages/blog/.vitepress/theme/custom.scss b/packages/blog/.vitepress/theme/custom.scss new file mode 100644 index 0000000..e69de29 diff --git a/packages/blog/.vitepress/theme/index.ts b/packages/blog/.vitepress/theme/index.ts new file mode 100644 index 0000000..f79e4af --- /dev/null +++ b/packages/blog/.vitepress/theme/index.ts @@ -0,0 +1,18 @@ +// .vitepress/theme/index.js + +// for prod +import BlogTheme from 'vitepress-theme-vuetom/blog' + +// old +// import { BlogTheme } from 'vitepress-theme-vuetom' + +import './custom.scss' + +export default { + ...BlogTheme, + enhanceApp({ app, router, siteData }) { + // globals.forEach(([name, Comp]) => { + // app.component(name, Comp) + // }) + } +} diff --git a/packages/blog/.vitepress/utils/paths.ts b/packages/blog/.vitepress/utils/paths.ts new file mode 100644 index 0000000..a1a301e --- /dev/null +++ b/packages/blog/.vitepress/utils/paths.ts @@ -0,0 +1,6 @@ +import path from 'path' + +export const vpRoot = path.resolve(__dirname, '..') +export const docRoot = path.resolve(vpRoot, '..') +export const pkgsRoot = path.resolve(docRoot, '..') +export const projRoot = path.resolve(pkgsRoot, '..') diff --git a/packages/blog/README.md b/packages/blog/README.md new file mode 100644 index 0000000..f088862 --- /dev/null +++ b/packages/blog/README.md @@ -0,0 +1,2 @@ + +

Vuetom Theme Blog

\ No newline at end of file diff --git a/packages/blog/api/proxy.js b/packages/blog/api/proxy.js new file mode 100644 index 0000000..fddb69e --- /dev/null +++ b/packages/blog/api/proxy.js @@ -0,0 +1,15 @@ +const { createProxyMiddleware } = require('http-proxy-middleware') + +module.exports = (req, res) => { + let target = '' + if (req.url.startsWith('/myblog')) { + target = 'https://vitepress-theme-vuetom-blog.vercel.app' + } + createProxyMiddleware({ + target, + changeOrigin: true, + pathRewrite: { + '^/myblog/': '/' + } + })(req, res) +} diff --git a/packages/blog/categories/index.md b/packages/blog/categories/index.md new file mode 100644 index 0000000..8c3353d --- /dev/null +++ b/packages/blog/categories/index.md @@ -0,0 +1,2 @@ + +Categories Index Page diff --git a/packages/blog/index.md b/packages/blog/index.md new file mode 100644 index 0000000..b37f79a --- /dev/null +++ b/packages/blog/index.md @@ -0,0 +1,14 @@ +--- +title: 欢迎 +layout: home +--- + +# {{ $frontmatter.title }} + + \ No newline at end of file diff --git a/packages/blog/package.json b/packages/blog/package.json new file mode 100644 index 0000000..e601b29 --- /dev/null +++ b/packages/blog/package.json @@ -0,0 +1,17 @@ +{ + "name": "@lauset/vuetom-blog", + "version": "2.2.1", + "scripts": { + "dev": "vitepress dev .", + "build": "vitepress build .", + "preview": "vitepress preview .", + "serve": "vitepress serve .", + "clean": "rimraf .vitepress/dist" + }, + "devDependencies": { + "sass": "^1.56.1", + "vite": "^3.2.5", + "vitepress": "^1.0.0-alpha.30", + "vitepress-theme-vuetom": "workspace:*" + } +} diff --git a/packages/blog/pages/guide.md b/packages/blog/pages/guide.md new file mode 100644 index 0000000..608f0e3 --- /dev/null +++ b/packages/blog/pages/guide.md @@ -0,0 +1,2 @@ + +**Guide Page**: `/blog/pages/guide.md` diff --git a/packages/blog/posts/HelloWorld.md b/packages/blog/posts/HelloWorld.md new file mode 100644 index 0000000..5cda008 --- /dev/null +++ b/packages/blog/posts/HelloWorld.md @@ -0,0 +1,180 @@ +--- +title: HelloWorld +tags: ui,front +categories: vue +time: 2022-08-31 16:21:11 +layout: doc +--- + + +# {{ $frontmatter.title }} + +主题的配置在 `.vitepress/config.ts` 文件中的 themeConfig 属性中配置 + +下面是一些简要的配置项一览: + +其中 head、sidebar、nav 对应的分别是 head脚本、侧边栏菜单、头部导航栏都可以默认为 [] + +
+ +以下是版本号满足 `vitepress >= 1.x.x` `vuetom-theme >= 2.x.x` 的配置 + +```js +// .vitepress/config.ts +export default defineConfigWithTheme({ + lang: 'en-US', + base: '/vt', + title: 'Vuetom Theme', + description: 'Theme For Vitepress', + // head, + themeConfig: { + nav: nav(), + sidebar: { + 'zh-CN/guide/': sidebarGuide(), + 'zh-CN/mdshow/': sidebarMdShow() + }, + socialLinks: [ + { icon: 'github', link: pkg.repository } + ], + footer: { + message: 'Released under the MIT License.', + copyright: 'Copyright © 2021-present Lauset' + }, + logoImg: '/logo/vuetom-logo-m.png', + bgImg: '/imgs/homg-bg01.jpg', + bgColor: '0,0,0', + bgOpacity: 0.6, + flashEnable: true, + flashColor: ['238,17,17', '0,98,255'], + parallaxEnable: true, + pageBgEnable: true, + pageBgOpacity: 0.8, + featuresColor: ['#06cdff30', 'rgba(223,7,107,.3)'] + + }, + markdown: { + lineNumbers: false, + config: (md) => mdPlugin(md) + }, + lastUpdated: false +}) +``` + +
+ +以下是版本号满足 `vitepress = 0.x.x` `vuetom-theme = 1.x.x` 的配置 + +```js light +import { defineConfigWithTheme } from 'vitepress' +import type { VuetomThemeConfig } from 'vitepress-theme-vuetom' + +// .vitepress/config.ts +// 部分配置项 +export default defineConfigWithTheme({ + title: 'Vuetom', + base: '/', + head, + themeConfig: { + repo: 'GIT地址', + docsDir: 'docs', + sidebar, + nav, + bgImg: '/imgs/homg-bg01.jpg', + bgColor: '0,0,0', + bgOpacity: 0.6, + flashEnable: true, + flashColor: ['238,17,17', '0,98,255'], + pageBgEnable: true, + pageBgOpacity: 0.8, + featuresColor: ['#06cdff30', 'rgba(223,7,107,.3)'] + }, + + // ... +}) +``` + +以下是对配置项的简要说明 + +## 首页LOGO + +**logoImg** + +- 类型:`string` +- 默认值:`''` + +首页上方LOGO,路径中的首个 `/` 表示 `public` 目录 + +例如:`'/logo/homg-logo.jpg'` + +## 首页背景图 + +**bgImg** + +- 类型:`string` +- 默认值:`undefined` + +首页全屏背景图,路径中的首个 `/` 表示 `public` 目录 + +例如:`'/imgs/homg-bg01.jpg'` 等同于 `/public/imgs/home-bg01.jpg` + +**bgColor** + +- 类型:`string` +- 默认值:`'0,0,0'` + +背景图边缘的覆盖颜色,值是 `rgb` 的颜色值 `rgb(0,0,0)` 则写为 `'0,0,0'`,默认为黑色 + +**bgOpacity** + +- 类型:`0 - 1` +- 默认值:`0.6` + +覆盖颜色的透明度,搭配上面的覆盖颜色使用,图片中间透明度要比图片边缘透明度要小 + +图片中间透明度为 `当前bgOpacity - 0.3`,也就是说默认为 `0.3` + +## 文章页背景图 + +注意:文章页背景图片与首页一致 + +**pageBgEnable** + +- 类型:`boolean` +- 默认值:`true` + +文章页面背景图是否开启,默认开启 + +**pageBgOpacity** + +- 类型:`0 - 1` +- 默认值:`0.8` + +文章页背景图透明度,1将看不到背景图,0能清晰看到背景图 + +**featuresColor** + +- 类型:`string | Array` +- 默认值:`rgba(255,255,255,0.8)` + +首页功能面板背景色,可以是单个颜色字符串,也可以是两个字符串组成的数组 + +**flashEnable** + +- 类型:`boolean` +- 默认值:`false` + +是否开启首页背景图闪烁功能,效果类似于朋克风故障 + +**flashColor** + +- 类型:`string | Array` +- 默认值:`['0,0,0','0,0,0']` + +首页背景闪烁时附加的色彩,0: Top位置的颜色,1: Right位置的颜色,默认都是黑色 + +**parallaxEnable** + +- 类型:`boolean` +- 默认值:`false` + +是否开启首页部分元素视觉差效果 diff --git a/packages/blog/posts/HelloWorld2.md b/packages/blog/posts/HelloWorld2.md new file mode 100644 index 0000000..d503d51 --- /dev/null +++ b/packages/blog/posts/HelloWorld2.md @@ -0,0 +1,14 @@ +--- +title: HelloWorld2 +tags: java,spring +categories: java +time: 2022-08-31 16:21:22 +layout: doc +--- + +# {{ $frontmatter.title }} + +This is a word in posts/HelloWorld2.md + + diff --git a/packages/blog/posts/codeblock.md b/packages/blog/posts/codeblock.md new file mode 100644 index 0000000..e8c6b8f --- /dev/null +++ b/packages/blog/posts/codeblock.md @@ -0,0 +1,99 @@ +--- +title: 代码块展示 +tags: example +categories: md +time: 2022-10-31 20:21:11 +layout: doc +--- + +# {{ $frontmatter.title }} + +## MD语法展示 + +使用三个 ` 符号将代码包裹其中便是展示代码块 + +
+ +**亮/暗主题切换** + +根据文档主题模式切换 + +**代码块主题 macos** + +可以在 language_key(语言标识) 后加入 `macos` + +输入内容: + +
+```java macos +
+String language = "Java"; +
+``` +
+ +展示效果: + +```java macos +String language = "Java"; +``` + +
+ +**默认主题** + +默认主题是以暗色系为主的 + +输入内容: + +
+```js +
+String language = "JS"; +
+``` +
+ +输出内容: + +```java +String language = "JS"; +``` + +
+ +**示例展示** + +- javascript ( js macos ) + +```js macos +function fun(){ + echo "Hello, World!"; +} +fun(); +``` + +- Java ( java ) + +```java +System.out.print(1); +``` + +- Python ( py macos ) + +```py macos +#!/usr/bin/env python3 +print("Hello, World!"); +``` + +- SQL ( sql ) + +```sql +select user_name from user_info +``` + +- Shell ( bash, shell ) + +```bash +echo '1' +``` diff --git a/packages/blog/tags/index.md b/packages/blog/tags/index.md new file mode 100644 index 0000000..3bbce7b --- /dev/null +++ b/packages/blog/tags/index.md @@ -0,0 +1,2 @@ + +Tags Index Page diff --git a/packages/blog/vercel.json b/packages/blog/vercel.json new file mode 100644 index 0000000..8ceae9c --- /dev/null +++ b/packages/blog/vercel.json @@ -0,0 +1,8 @@ +{ + "rewrites": [ + { + "source": "/myblog/(.*)", + "destination": "/api/proxy" + } + ] +} \ No newline at end of file diff --git a/packages/blog/vite.config.ts b/packages/blog/vite.config.ts new file mode 100644 index 0000000..041d1bc --- /dev/null +++ b/packages/blog/vite.config.ts @@ -0,0 +1,32 @@ +import path from 'path' +import { defineConfig } from 'vite' +import type { Alias } from 'vite' +import { projRoot } from './.vitepress/utils/paths' + +const alias: Alias[] = [] + +if (process.env.DOC_ENV !== 'production') { + alias.push( + { + find: /^vitepress-theme-vuetom\/docs$/, + replacement: path.resolve(projRoot, 'packages/vuetom/doc'), + }, + { + find: /^vitepress-theme-vuetom\/blog$/, + replacement: path.resolve(projRoot, 'packages/vuetom/blog'), + } + ) +} + +export default defineConfig({ + server: { + host: true, + fs: { + strict: true, + allow: ['../../'] + } + }, + resolve: { + alias, + }, +}) diff --git a/packages/docs/.vitepress/build/crowdin-generate.ts b/packages/docs/.vitepress/build/crowdin-generate.ts new file mode 100644 index 0000000..de1100d --- /dev/null +++ b/packages/docs/.vitepress/build/crowdin-generate.ts @@ -0,0 +1,112 @@ +import fs from 'fs' +import path from 'path' +import chalk from 'chalk' +import consola from 'consola' +import { docRoot } from '../utils/paths' +import { errorAndExit } from '../utils/log' + +// NB: this file is only for generating files that enables developers to develop the website. +const componentLocaleRoot = path.resolve(docRoot, '.vitepress/crowdin') + +const exists = 'File already exists' + +async function main() { + const localeOutput = path.resolve(docRoot, '.vitepress/i18n') + if (fs.existsSync(localeOutput)) { + throw new Error(exists) + } + + consola.trace(chalk.cyan('Starting for build doc for developing')) + + // all language should be identical since it is mirrored from crowdin. + const dirs = await fs.promises.readdir(componentLocaleRoot, { + withFileTypes: true + }) + const languages = dirs.map((dir) => dir.name) + const langWithoutEn = languages.filter((l) => l !== '.DS_Store') + + await fs.promises.mkdir(localeOutput) + + // build lang.json for telling `header>language-select` how many languages are there + await fs.promises.writeFile( + path.resolve(localeOutput, 'lang.json'), + JSON.stringify(languages), + 'utf-8' + ) + + // loop through en-US + + const enUS = path.resolve(componentLocaleRoot, 'en-US') + + // we do not include en-US since we are currently using it as template + const languagePaths = langWithoutEn.map((l) => ({ + name: l, + pathname: path.resolve(componentLocaleRoot, l) + })) + + consola.debug(languagePaths) + await traverseDir(enUS, languagePaths, localeOutput) +} + +async function traverseDir( + dir: string, + paths: { name: string; pathname: string }[], + targetPath: string +) { + const contents = await fs.promises.readdir(dir, { withFileTypes: true }) + + await Promise.all( + contents.map(async (c) => { + if (c.isDirectory()) { + await fs.promises.mkdir(path.resolve(targetPath, c.name), { + recursive: true + }) + + return traverseDir( + path.resolve(dir, c.name), + paths.map((p) => ({ + ...p, + pathname: path.resolve(p.pathname, c.name) + })), + path.resolve(targetPath, c.name) + ) + } if (c.isFile()) { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const content = require(path.resolve(dir, c.name)) + + const contentToWrite = { + 'en-US': content + } + + await Promise.all( + paths.map(async (p) => { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const content = require(path.resolve(p.pathname, c.name)) + + contentToWrite[p.name] = content + }) + ) + + return fs.promises.writeFile( + path.resolve(targetPath, c.name), + JSON.stringify(contentToWrite, null, 2), + { + encoding: 'utf-8' + } + ) + } + }) + ) +} + +main() + .then(() => { + consola.success(chalk.green('Locale for website development generated')) + }) + .catch((err) => { + if (err.message === exists) { + // do nothing + } else { + errorAndExit(err) + } + }) diff --git a/packages/docs/.vitepress/config.ts b/packages/docs/.vitepress/config.ts new file mode 100644 index 0000000..9bbcfc1 --- /dev/null +++ b/packages/docs/.vitepress/config.ts @@ -0,0 +1,57 @@ +import { build, defineConfigWithTheme, useData } from 'vitepress' +import { VuetomThemeConfig } from 'vitepress-theme-vuetom' +import pkg from '../package.json' +import { getNav, getSidebar, head, locales } from './menus' + +const nav = getNav('en-US') +const sidebar = getSidebar('en-US') + +export default defineConfigWithTheme({ + base: `/vt/`, + ignoreDeadLinks: true, + lastUpdated: true, + head, + locales: locales.vitepressConfig, + themeConfig: { + nav, + sidebar, + localeLinks: { + text: '', + items: [ + { + text: 'English', + link: '/lang/enus' + } + ] + }, + socialLinks: [ + { icon: 'github', link: pkg.repository } + ], + footer: { + message: 'Using the Vuetom Vitepress Theme.', + copyright: 'Copyright © 2021-present Lauset' + }, + + logoImg: '/imgs/Avatar.jpg', + bgImg: '/imgs/homg-bg01-200k.jpg', + bgColor: '0,0,0', + bgOpacity: 0.6, + flashEnable: true, + flashColor: ['238,17,17', '0,98,255'], + parallaxEnable: true, + pageBgEnable: true, + pageBgOpacity: 0.8, + featuresColor: ['#06cdff30', 'rgba(223,7,107,.3)'] + + }, + + markdown: { + lineNumbers: true + }, + appearance: true, + vite: { + ssr: { + noExternal: ["vitepress-theme-vuetom"] + } + } +}) diff --git a/packages/docs/.vitepress/crowdin-docs/en-US/guide/info.md b/packages/docs/.vitepress/crowdin-docs/en-US/guide/info.md new file mode 100644 index 0000000..10aeac3 --- /dev/null +++ b/packages/docs/.vitepress/crowdin-docs/en-US/guide/info.md @@ -0,0 +1,14 @@ +--- +title: What's the Vitepress? +head: + - - meta + - name: description + content: vuetom info + - - meta + - name: keywords + content: vuetom theme +--- + +# {{ $frontmatter.title }} + +developing... \ No newline at end of file diff --git a/packages/docs/.vitepress/crowdin-docs/en-US/guide/start.md b/packages/docs/.vitepress/crowdin-docs/en-US/guide/start.md new file mode 100644 index 0000000..e69de29 diff --git a/packages/docs/.vitepress/crowdin-docs/en-US/index.md b/packages/docs/.vitepress/crowdin-docs/en-US/index.md new file mode 100644 index 0000000..b54d270 --- /dev/null +++ b/packages/docs/.vitepress/crowdin-docs/en-US/index.md @@ -0,0 +1,149 @@ +--- +layout: home + +title: Vuetom +titleTemplate: Vite & Vue Powered Static Site Generator + +hero: + name: Vuetom + text: + tagline: vitepress flat theme + actions: + - theme: brand big + text: Quick Start + link: /en-US/guide/info + - theme: alt big + text: Config + link: /en-US/guide/config + +features: + - title: 📦 优化的构建 + details: 可选 “多页应用” 或 “库” 模式的预配置 Rollup 构建 + - title: 🔩 通用的插件 + details: 在开发和构建之间共享 Rollup-superset 插件接口。 + - title: 🔑 完全类型化的API + details: 灵活的 API 和完整 TypeScript 类型。 +--- + + + + + + diff --git a/packages/docs/.vitepress/crowdin-docs/zh-CN/feedback/index.md b/packages/docs/.vitepress/crowdin-docs/zh-CN/feedback/index.md new file mode 100644 index 0000000..c5c1f5a --- /dev/null +++ b/packages/docs/.vitepress/crowdin-docs/zh-CN/feedback/index.md @@ -0,0 +1,17 @@ +--- +title: 留言反馈 +--- + +# {{ $frontmatter.title }} + +> 该页面是在 Markdown 中引入 Vue 组件简单的展示 + +页面文件: `.vitepress/views/vt/vt-feedback.vue` + + + + + +::: tip +正在开发中,你以后可以把想说的话写在这里 +::: diff --git a/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/config.md b/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/config.md new file mode 100644 index 0000000..5904af3 --- /dev/null +++ b/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/config.md @@ -0,0 +1,182 @@ +--- +title: 主题配置 +head: + - - meta + - name: description + content: vuetom 主题配置项 + - - meta + - name: keywords + content: vuetom theme config +--- + +# {{ $frontmatter.title }} + +主题的配置在 `.vitepress/config.ts` 文件中的 themeConfig 属性中配置 + +下面是一些简要的配置项一览: + +其中 head、sidebar、nav 对应的分别是 head脚本、侧边栏菜单、头部导航栏都可以默认为 [] + +
+ +以下是版本号满足 `vitepress >= 1.x.x` `vuetom-theme >= 2.x.x` 的配置 + +```js macos +// .vitepress/config.ts +export default defineConfigWithTheme({ + lang: 'en-US', + base: '/vt', + title: 'Vuetom Theme', + description: 'Theme For Vitepress', + // head, + themeConfig: { + nav: nav(), + sidebar: { + 'zh-CN/guide/': sidebarGuide(), + 'zh-CN/mdshow/': sidebarMdShow() + }, + socialLinks: [ + { icon: 'github', link: pkg.repository } + ], + footer: { + message: 'Released under the MIT License.', + copyright: 'Copyright © 2021-present Lauset' + }, + logoImg: '/logo/vuetom-logo-m.png', + bgImg: '/imgs/homg-bg01.jpg', + bgColor: '0,0,0', + bgOpacity: 0.6, + flashEnable: true, + flashColor: ['238,17,17', '0,98,255'], + parallaxEnable: true, + pageBgEnable: true, + pageBgOpacity: 0.8, + featuresColor: ['#06cdff30', 'rgba(223,7,107,.3)'] + + }, + markdown: { + lineNumbers: false, + config: (md) => mdPlugin(md) + }, + lastUpdated: false +}) +``` + +
+ +以下是版本号满足 `vitepress = 0.x.x` `vuetom-theme = 1.x.x` 的配置 + +```js macos +import { defineConfigWithTheme } from 'vitepress' +import type { VuetomThemeConfig } from 'vitepress-theme-vuetom' + +// .vitepress/config.ts +// 部分配置项 +export default defineConfigWithTheme({ + title: 'Vuetom', + base: '/', + head, + themeConfig: { + repo: 'GIT地址', + docsDir: 'docs', + sidebar, + nav, + bgImg: '/imgs/homg-bg01.jpg', + bgColor: '0,0,0', + bgOpacity: 0.6, + flashEnable: true, + flashColor: ['238,17,17', '0,98,255'], + pageBgEnable: true, + pageBgOpacity: 0.8, + featuresColor: ['#06cdff30', 'rgba(223,7,107,.3)'] + }, + + // ... +}) +``` + +以下是对配置项的简要说明 + +## 首页LOGO + +**logoImg** + +- 类型:`string` +- 默认值:`''` + +首页上方LOGO,路径中的首个 `/` 表示 `public` 目录 + +例如:`'/logo/homg-logo.jpg'` + +## 首页背景图 + +**bgImg** + +- 类型:`string` +- 默认值:`undefined` + +首页全屏背景图,路径中的首个 `/` 表示 `public` 目录 + +例如:`'/imgs/homg-bg01.jpg'` 等同于 `/public/imgs/home-bg01.jpg` + +**bgColor** + +- 类型:`string` +- 默认值:`'0,0,0'` + +背景图边缘的覆盖颜色,值是 `rgb` 的颜色值 `rgb(0,0,0)` 则写为 `'0,0,0'`,默认为黑色 + +**bgOpacity** + +- 类型:`0 - 1` +- 默认值:`0.6` + +覆盖颜色的透明度,搭配上面的覆盖颜色使用,图片中间透明度要比图片边缘透明度要小 + +图片中间透明度为 `当前bgOpacity - 0.3`,也就是说默认为 `0.3` + +## 文章页背景图 + +注意:文章页背景图片与首页一致 + +**pageBgEnable** + +- 类型:`boolean` +- 默认值:`true` + +文章页面背景图是否开启,默认开启 + +**pageBgOpacity** + +- 类型:`0 - 1` +- 默认值:`0.8` + +文章页背景图透明度,1将看不到背景图,0能清晰看到背景图 + +**featuresColor** + +- 类型:`string | Array` +- 默认值:`rgba(255,255,255,0.8)` + +首页功能面板背景色,可以是单个颜色字符串,也可以是两个字符串组成的数组 + +**flashEnable** + +- 类型:`boolean` +- 默认值:`false` + +是否开启首页背景图闪烁功能,效果类似于朋克风故障 + +**flashColor** + +- 类型:`string | Array` +- 默认值:`['0,0,0','0,0,0']` + +首页背景闪烁时附加的色彩,0: Top位置的颜色,1: Right位置的颜色,默认都是黑色 + +**parallaxEnable** + +- 类型:`boolean` +- 默认值:`false` + +是否开启首页部分元素视觉差效果 diff --git a/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/dark.md b/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/dark.md new file mode 100644 index 0000000..b04ecb9 --- /dev/null +++ b/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/dark.md @@ -0,0 +1,49 @@ +--- +title: 夜间模式 +lang: en-US +--- + + +# {{ $frontmatter.title }} + +默认的话夜间模式切换按钮是一直有的,右上角那个太阳图标 + +## 原理 + +开关操作修改的是 HTML 根标签的样式,会加上 dark 样式 + +```html + +``` + +我们可以事先定义一些 css变量来完成不同语言下或者不同模式下的样式变换 + +## 主题色覆盖 + +修改 theme/custom.scss 文件即可 + +简单展示部分 + +```css +:root { + // 重写主题色 + + // 主色 + --vp-c-brand: var(--vp-c-blue); + --vp-c-brand-light: var(--vp-c-blue-light); + --vp-c-brand-lighter: var(--vp-c-blue-lighter); + --vp-c-brand-dark: var(--vp-c-blue-dark); + --vp-c-brand-darker: var(--vp-c-blue-darker); + + // 副色 + --vp-c-second: var(--vp-c-pink); + --vp-c-second-light: var(--vp-c-pink-light); + --vp-c-second-lighter: var(--vp-c-pink-lighter); + --vp-c-second-dark: var(--vp-c-pink-dark); + --vp-c-second-darker: var(--vp-c-pink-darker); +} + +.dark { + +} +``` diff --git a/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/index.md b/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/index.md new file mode 100644 index 0000000..2303cb9 --- /dev/null +++ b/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/index.md @@ -0,0 +1,17 @@ +# 指引 + +`info` : 介绍 + +`start` : 快速开始 + +`question` : 问题一览 + +`prodir` : 主题项目结构 + +`config` : 主题配置 + +`lang` : 国际化配置 + +::: tip +这里展示的是指引菜单下所有的子菜单 +::: \ No newline at end of file diff --git a/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/info.md b/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/info.md new file mode 100644 index 0000000..f6ad007 --- /dev/null +++ b/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/info.md @@ -0,0 +1,50 @@ +--- +title: 什么是Vitepress? +head: + - - meta + - name: description + content: vuetom 介绍 + - - meta + - name: keywords + content: vuetom theme +--- + +# {{ $frontmatter.title }} + +VitePress 是 VuePress 的升级,以 Vite 为基础构建的。是一款快速搭建文档静态网站的框架。 + +Vite(法语意为 "快速的",发音 `/vit/` ,发音同 "veet")是一种新型前端构建工具,能够显著提升前端开发体验。Vite 意在提供开箱即用的配置,同时它的 插件 API 和 JavaScript API 带来了高度的可扩展性,并有完整的类型支持。它主要由两部分组成: + +- 一个开发服务器,它基于 原生 ES 模块 提供了 丰富的内建功能,如速度快到惊人的 模块热更新(HMR)。 + +- 一套构建指令,它使用 Rollup 打包你的代码,并且它是预配置的,可输出用于生产环境的高度优化过的静态资源。 + +## vuetom 呢? + +是的,是一款主题,因 vitepress 而诞生。建立在 Vue3 与 Vite 之上的一款文档框架的主题。含有 `文档` 与 `博客` 两种风格模板。其推出目的是为了让大家体验并使用到更多美丽而又有趣的 vitepress 主题,进而大家可以发挥想象展示出更多优美的文档。 + +## 有什么特点 + +使用现代扁平化的设计风格,部分 UI 尽量接近于 macos 界面风格 + +该主题包含了以下相关技术 + +- [nodejs](http://nodejs.cn/) +- [vite](https://vitejs.cn/) +- [vue3](https://v3.vuejs.org/) +- [vitepress](https://vitejs.cn/vitepress/) +- [tailwindcss](https://www.tailwindcss.cn/docs) + +该主题包含了一下功能模块 + +**内置UI组件:** 扁平化数据组织,方便编写。含有按钮,弹框,卡片等基础组件 + +**主题与样式:** 主要包含布局,间距,排版,颜色,边框 + +**API与指令:** 可搭配组件使用,实现不同组件不同指令效果 + +## 推荐开发工具? + +这就无所谓了吧哈哈。 + +[vscode编辑器](https://code.visualstudio.com/) => [下载地址](https://blog.csdn.net/bielaiwuyang1999/article/details/117814237) diff --git a/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/lang.md b/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/lang.md new file mode 100644 index 0000000..d1e02e8 --- /dev/null +++ b/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/lang.md @@ -0,0 +1,109 @@ +--- +title: 多国语言配置 +lang: en-US +--- + +# {{ $frontmatter.title }} + +:::warning +适配于 vitepress 1.x.x 版本的功能正在制作,下面是 0.x.x 版本的国际化方案 +::: + +你也可以配置多国语言,以首页为例,先在配置文件里配置下 locales,然后创建对应的语言文件夹与文件 + + +## 改配置文件 + +需要在 config.ts 中配置 locales,注意 themeConfig 属性里也要配,两个 locales 内容是不一样的 + +themeConfig 中的 locales 配置是为了展示下拉菜单的展示内容 + +根Config 中的 locales 配置是为了展示头部标题内容,description属性可有可无 + +```js +// .vitepress/config.ts +export default defineConfigWithTheme({ + // ... + themeConfig: { + // ... + locales: { + '/zh-CN/': { + label: '简体中文', + selectText: '多国语言' + }, + '/en-US/': { + label: 'English', + selectText: 'Languages' + } + } + }, + locales: { + '/zh-CN/': { + lang: 'zh-CN', + title: 'Vuetom 主题', + description: '为 Vitepress 提供的一款主题' + }, + '/en-US/': { + lang: 'en-US', + title: 'Vuetom Theme', + description: 'Theme For Vitepress' + } + } +}) +``` + +**locales** 中的属性介绍 + +lang: 会直接设置给 `` 标签 + +title: 不同语言时网站的标题,会替换之前定义的 title + +description: 不同语言时网站的描述 + +label: 语言选择时展示出来的文本内容(例如:中文或English) + +selectText: 语言选择时下拉菜单的文本(例如:多国语言或者Languages) + + + +## 改首页 + +在 .vitepress 同级目录新建 `zh-CN` 和 `en-US` 文件夹,然后在这个文件夹中分别创建一个 `index.md` 文件 + +**zh-CN/index.md** 中写入 **中文首页** 要展示的内容 + +**en-US/index.md** 中写入 **英文首页** 要展示的内容 + +原来与 .vitepress 同级的 `index.md` 文件中可以改为转发至 `zh-CN/index` 或者 `en-US/index` + +例如下方的代码,会直接将 `/` 转发到 `/zh-CN/` 这样就会直接前往中文首页了 + +```markdown +--- +title: 'Vuetom Theme' +lang: en-US +page: true +--- + + +``` + +::: warning +其实原理就是路径前加了一个语言标识,那么就在页面文件外加个语言文件夹就好了
+需要处理的就是书写导航栏和菜单栏时记得要在 link 属性前加上语言标识 +::: + +下面试试访问一下: + +访问 localhost:3000/zh-CN/ 会前往中文首页 + +访问 localhost:3000/en-US/ 会前往英文首页 + +访问 localhost:3000 会前往 localhost:3000/zh-CN/ diff --git a/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/prodir.md b/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/prodir.md new file mode 100644 index 0000000..7cfd002 --- /dev/null +++ b/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/prodir.md @@ -0,0 +1,57 @@ +--- +title: 框架目录 +head: + - - meta + - name: description + content: Vuetom 主题目录结构 + - - meta + - name: keywords + content: project dir. +--- + +# 主题目录 + +在使用一个框架,其实也要简单了解下该框架的项目文件结构,请向下看吧。 + +```bash +vuetom + ├─ blog 博客主题Vue组件 文件夹 + ├─ doc 新版文档,适配vp1.x 文件夹 + ├─ docs 旧版文档主题组件 文件夹 + │ ├─ components 主题Vue组件 文件夹 + │ ├─ composables 组件脚本 文件夹 + │ ├─ layouts 布局组件 文件夹 + │ └─ index.ts 主题入口 文件 + ├─ icons 共用图标Vue组件 文件夹 + ├─ styles 全局SCSS样式 文件夹 + ├─ support 供支持脚本 文件夹 + ├─ types 规范描述 文件夹 + ├─ constant.ts 常量定义 文件 + └─ index.ts 主题入口文件 文件 +``` + +接下来介绍本文档**docs**文件夹 + +```bash +docs + ├─ .vitepress + │ └─ config.ts 主题主要配置文件 + │ + ├─ public 静态资源文件 + │ + ├─ zh-CN 中文页面 + │ ├─ feedback 留言反馈 + │ ├─ guide 指引 + │ ├─ mdshow Markdown示例 + │ ├─ menu UI组件 + │ ├─ styl 主题与样式 + │ └─ index.md 中文首页 + │ + ├─ crowdin.yml 多国语言配置 + ├─ index.md 项目首页 + ├─ CHANGELOG.md 更新日志 + ├─ package.json 包配置 + ├─ README.md 项目说明 + ├─ tsconfig.json ts配置 + └─ vite.config.ts vite配置 +``` diff --git a/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/question.md b/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/question.md new file mode 100644 index 0000000..886ec0d --- /dev/null +++ b/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/question.md @@ -0,0 +1,53 @@ +--- +title: 常见问题 +head: + - - meta + - name: description + content: 常见问题汇总 + - - meta + - name: keywords + content: question +--- + +# {{ $frontmatter.title }} + +是否经常卡在一些莫名其妙的问题上?让我们来汇总一下问题并给出相应的解决方案吧! + +## 问题列表 + +- [版本多久更新一次?](#q01) +- [我的样式没有起作用。](#q02) +- [我不想要背景图咋办啊?](#q03) + +## 问题解答 + + 以下是针对于近期问题所作的答复 + +-

版本多久更新一次?

+ + 目前进度较慢,但是每周都会更新主要内容的 + +-

我的样式没有起作用。

+ + 查看 `.vitepress/config.js` 文件进中 `theme` 项是否配置正确 + +-

我不想要背景图咋办啊?

+ + 你可以用一张纯白色的图片作为背景图啊嘿嘿嘿 + +## 开发进度 + +| 功能组件 | 开发进度 | 预估 | +| - | - | - | +| 文档风格主题 vitepress 0.x.x | 开发中(80%) | 2022.5 | +| 文档风格主题 vitepress 1.x.x | 开发中(80%) | 2022.8 | +| 博客风格主题 vitepress 1.x.x | 开发中(50%) | 2022.11 | + +## 需要帮助? + + 可点击 [留言反馈](/zh-CN/feedback/) 前往问题反馈界面对问题进行简单的描述 + +::: tip +目前 vitepress 版本已进入 1.0.0 , vuetom-theme 版本已进入 2.0.0 + +::: diff --git a/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/start.md b/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/start.md new file mode 100644 index 0000000..3819c3b --- /dev/null +++ b/packages/docs/.vitepress/crowdin-docs/zh-CN/guide/start.md @@ -0,0 +1,158 @@ +--- +title: 快速使用 +head: + - - meta + - name: description + content: 教你如何掌握框架的工作流程,快速上手。 + - - meta + - name: keywords + content: 开始使用 +--- + +# {{ $frontmatter.title }} + +请确保你已经用过 Vitepress 框架,因为主题是建立在框架的基础上使用的。 + +请确保你使用的 vue 版本是 3+ 且 vitepress 是 1.x 哦。 + +## 最方便的方式 + +直接拉取本项目至本地,packages/docs 和 packages/blog 目录下分别是文档和博客示例,修改内容打包编译即可 + +## 其他方式 + +### **1.** 脚手架初始化 + +可以使用脚手架 vuetom-cli 脚手架来进行主题的初始化,会在你本地初始化一个项目 + +网速慢可以再次尝试或者直接前往模版仓库拉取 [模版仓库](https://github.com/lauset/vuetom-cli) + +1. 首先安装脚手架,NPM安装前请确保开启管理员身份运行保证有权限 + +```js light +npm i -g vuetom-cli +``` + +2. 查看是否安装成功,黑窗口运行一下命令,返回版本号 x.x.x 则表示安装成功 + +```js light +vuetom-cli -v +``` + +1. 初始化模版,可以选择是否新建目录、仓息、作者、模版仓库等 + +```js light +vuetom-cli init +``` + +1. 然后便会下载模版,下载完成后,执行以下命令安装依赖并运行文档网站 + +```js light +pnpm i +pnpm dev +``` + +::: warning +模版是从 github 上拉取的,可能有时候会有网速的困惑,也可手动前往拉取下载本地启用 + +文档模版: + +博客模版: +::: + +
+ +### **2.** 通过NPM下载安装主题(已弃用) + +:::danger ⚠️ 已弃用 + +上传至远程仓库,作为三方依赖使用打包时会出现样式引入问题,暂时放弃使用 + +从 vitepress-theme-vuetom v2.2.x 开始不再上传远程仓库而是作为目录加至模版项目中 + +::: + +使用这个方式首先你要搭建一个 vitepress 项目,主题只是会覆盖默认样式而已,所以项目还是得搭起来的,可以前往下面 vitepress 官网链接查看并开始搭建 + +[vitepress搭建文档](https://vitepress.vuejs.org/guide/getting-started.html) + +搭建完后最简单的样子就是项目目录里有个 index.md 文件,那么开始下一步 + +1. 安装主题依赖 + +使用 NPM 安装最新版本的 vitepress-theme-vuetom 主题依赖包,在你的 vitepress 项目下安装主题包,打开 `终端(DOS)` 输入 + +```js light +npm i -D vitepress-theme-vuetom +``` + +2. 开始引入主题 + +先在 .vitepress (这个文件夹和首页 index.md 是同级目录,没有的自己创建或者去 vitepress 官网看文档)中新建一个名为 theme 的文件夹,在该文件下新建一个 index.ts 文件,当然用 js 还是 ts 文件就看你自己项目的决定了。 + +大致内容如下: + +`VuetomTheme` 是主要的主题布局 + +`VuetomUI` 是内置的UI组件 + +```javascript light +// .vitepress/theme/index.ts +// 默认导出文档类型的主题 +import VuetomTheme from 'vitepress-theme-vuetom' + +export default { + ...VuetomTheme, + enhanceApp({ app, router, siteData }) { + // app.use(VuetomUI) + } +} +``` + +引入了主题,然后你的 index.md 里写上一些内容应该就可以看出效果了 + +```html light +--- +home: true +heroImage: /logo/vuetom-logo-m.png +heroAlt: LOGO +heroText: Vuetom +tagline: vitepress flat theme + +actionText: 快 速 开 始 +actionLink: /zh-CN/guide/info + +altActionText: 配 置 +altActionLink: /zh-CN/guide/config + +features: + - title: 📦 优化的构建 + details: 可选 “多页应用” 或 “库” 模式的预配置 Rollup 构建 + - title: 🔩 通用的插件 + details: 在开发和构建之间共享 Rollup-superset 插件接口。 + - title: 🔑 完全类型化的API + details: 灵活的 API 和完整 TypeScript 类型。 + +footer: MIT Licensed +--- + +
+

{{ data.text }}

+
+ + + + +``` + +运行项目后,在 [localhost:3000] 中进入首页 + +至少到这里主题已经安装完成了,下一步就是主题的配置了,主题什么样还是要看你配的什么样子哦。 diff --git a/packages/docs/.vitepress/crowdin-docs/zh-CN/index.md b/packages/docs/.vitepress/crowdin-docs/zh-CN/index.md new file mode 100644 index 0000000..3fe0199 --- /dev/null +++ b/packages/docs/.vitepress/crowdin-docs/zh-CN/index.md @@ -0,0 +1,160 @@ +--- +layout: home + +title: Vuetom +titleTemplate: Vite & Vue Powered Static Site Generator + +hero: + name: Vuetom + text: + tagline: vitepress flat theme + actions: + - theme: brand big + text: 快 速 开 始 + link: /zh-CN/guide/info + - theme: alt big + text: 配 置 + link: /zh-CN/guide/config + +features: + - title: 📦 优化的构建 + details: 可选 “多页应用” 或 “库” 模式的预配置 Rollup 构建 + - title: 🔩 通用的插件 + details: 在开发和构建之间共享 Rollup-superset 插件接口。 + - title: 🔑 完全类型化的API + details: 灵活的 API 和完整 TypeScript 类型。 +--- + + + + + + diff --git a/packages/docs/.vitepress/crowdin-docs/zh-CN/mdshow/codeblock.md b/packages/docs/.vitepress/crowdin-docs/zh-CN/mdshow/codeblock.md new file mode 100644 index 0000000..19d701f --- /dev/null +++ b/packages/docs/.vitepress/crowdin-docs/zh-CN/mdshow/codeblock.md @@ -0,0 +1,102 @@ +--- +title: 代码块展示 +head: + - - meta + - name: description + content: 代码块展示 + - - meta + - name: keywords + content: code +--- + +# {{ $frontmatter.title }} + +## MD语法展示 + +使用三个 ` 符号将代码包裹其中便是展示代码块 + +
+ +**亮/暗主题切换** + +根据文档主题模式切换 + +**代码块主题 macos** + +可以在 language_key(语言标识) 后加入 `macos` + +输入内容: + +
+```java macos +
+String language = "Java"; +
+``` +
+ +展示效果: + +```java macos +String language = "Java"; +``` + +
+ +**默认主题** + +默认主题是以暗色系为主的 + +输入内容: + +
+```js +
+String language = "JS"; +
+``` +
+ +输出内容: + +```java +String language = "JS"; +``` + +
+ +**示例展示** + +- javascript ( js macos ) + +```js macos +function fun(){ + echo "Hello, World!"; +} +fun(); +``` + +- Java ( java ) + +```java +System.out.print(1); +``` + +- Python ( py macos ) + +```py macos +#!/usr/bin/env python3 +print("Hello, World!"); +``` + +- SQL ( sql ) + +```sql +select user_name from user_info +``` + +- Shell ( bash, shell ) + +```bash +echo '1' +``` diff --git a/packages/docs/.vitepress/crowdin-docs/zh-CN/mdshow/custom.md b/packages/docs/.vitepress/crowdin-docs/zh-CN/mdshow/custom.md new file mode 100644 index 0000000..bc086d7 --- /dev/null +++ b/packages/docs/.vitepress/crowdin-docs/zh-CN/mdshow/custom.md @@ -0,0 +1,58 @@ +--- +title: 自定义语法 +head: + - - meta + - name: description + content: 自定义 Markdown 语法 + - - meta + - name: keywords + content: markdown custom +--- + +# {{ $frontmatter.title }} + +## 信息框 + +```md +::: tip 使用TIPS代替 +提示信息 +::: + +::: info +信息消息 +::: + +::: warning +警告消息 +::: + +::: danger +危险消息 +::: + +::: details Details +详细信息 +::: +``` + +效果如下: + +::: tip 使用TIPS代替 +提示内容 +::: + +::: info +INFO消息 +::: + +::: warning +WARNING消息 a链接 +::: + +::: danger +DANGER消息 [md链接](./example.md) +::: + +::: details Details +详细信息 +::: diff --git a/packages/docs/.vitepress/crowdin-docs/zh-CN/mdshow/example.md b/packages/docs/.vitepress/crowdin-docs/zh-CN/mdshow/example.md new file mode 100644 index 0000000..579e1d5 --- /dev/null +++ b/packages/docs/.vitepress/crowdin-docs/zh-CN/mdshow/example.md @@ -0,0 +1,72 @@ +--- +title: 效果示例 +head: + - - meta + - name: description + content: 来看看 MD 会变成什么样子 + - - meta + - name: keywords + content: markdown example +--- + + +# Markdown 效果示例 + +-------------------- 手动分割线 -------------------- + + +# This is an h1 tag +## This is an h2 tag +### This is an h3 tag +#### This is an h4 tag +##### This is an h5 tag +###### This is an h6 tag + + +*这是斜体* +_这是斜体_ +**这是黑体** +__这是黑体__ +*斜体里加**黑体*** +**黑体里加*斜体*** + + +* Item 1 +* Item 2 + * Item 2a + * Item 2b + + +1. Item 1 +1. Item 2 +1. Item 3 + 1. Item 3a + 1. Item 3b + + +![Yaktocat的图片](/logo/vuetom-logo.png) + + +http://github.com - automatic! +[GitHub](http://github.com) + + +As Kanye West said: +> We're living the future so +> the present is our past. + + +I think you should use an +`` element here instead. + + +First Header | Second Header +------------ | ------------- +Content from cell 1 | Content from cell 2 +Content in the first column | Content in the second column + + +~~this~~ + + +😝🌟🐫✨🚶 diff --git a/packages/docs/.vitepress/crowdin-docs/zh-CN/mdshow/index.md b/packages/docs/.vitepress/crowdin-docs/zh-CN/mdshow/index.md new file mode 100644 index 0000000..c327cd7 --- /dev/null +++ b/packages/docs/.vitepress/crowdin-docs/zh-CN/mdshow/index.md @@ -0,0 +1,31 @@ +--- +title: UI组件 +head: + - - meta + - name: description + content: 各种各样的扁平化UI组件 + - - meta + - name: keywords + content: components +--- + +# {{ $frontmatter.title }} + +### `Vuetom UI` + +[ui 文档](http://ui.tomhub.cn) + +[ui github](https://github.com/lauset/vuetom-ui) + +::: tip +UI 文档正在不断完善中,请客观耐心等待一下吧T-T +::: + + +### Markdown 语法示例 + +这里将会展示在该文档中markdown所呈现的效果 + +`Example` : Markdown 语法示例 + +`Custom md` : 自定义语法 \ No newline at end of file diff --git a/packages/docs/.vitepress/crowdin/en-US/demo-block.json b/packages/docs/.vitepress/crowdin/en-US/demo-block.json new file mode 100644 index 0000000..445a1ae --- /dev/null +++ b/packages/docs/.vitepress/crowdin/en-US/demo-block.json @@ -0,0 +1,7 @@ +{ + "view-source": "Code", + "edit-on-github": "Edit on Github", + "copy-code": "Copy Code", + "copy-success": "Copy Success", + "copy-error": "Copy Error" +} diff --git a/packages/docs/.vitepress/crowdin/en-US/nav.json b/packages/docs/.vitepress/crowdin/en-US/nav.json new file mode 100644 index 0000000..7103899 --- /dev/null +++ b/packages/docs/.vitepress/crowdin/en-US/nav.json @@ -0,0 +1,30 @@ +[ + { + "text": "Guide", + "link": "/guide/info", + "activeMatch": "/guide/info" + }, + { + "text": "Components", + "link": "/mdshow/", + "activeMatch": "/mdshow/" + }, + { + "text": "Links", + "items": [ + { + "text": "FeedBack", + "link": "/feedback/", + "activeMatch": "/feedback/" + }, + { + "text": "Gitee", + "link": "https://gitee.com/lauset/vitepress-theme-vuetom" + }, + { + "text": "Vitepress", + "link": "https://vitepress.vuejs.org/" + } + ] + } +] \ No newline at end of file diff --git a/packages/docs/.vitepress/crowdin/en-US/sidebars/guide.json b/packages/docs/.vitepress/crowdin/en-US/sidebars/guide.json new file mode 100644 index 0000000..a562d7b --- /dev/null +++ b/packages/docs/.vitepress/crowdin/en-US/sidebars/guide.json @@ -0,0 +1,34 @@ +[ + { + "text": "Basic", + "items": [ + { "text": "What's the Vitepress?", "link": "/guide/info" }, + { "text": "Quick Start", "link": "/guide/start" }, + { + "text": "Questions", + "link": "/guide/question" + }, + { + "text": "Project Dir", + "link": "/guide/prodir" + } + ] + }, + { + "text": "Advanced", + "items": [ + { + "text": "Theme Config", + "link": "/guide/config" + }, + { + "text": "Languages", + "link": "/guide/lang" + }, + { + "text": "Dark Mode", + "link": "/guide/dark" + } + ] + } +] \ No newline at end of file diff --git a/packages/docs/.vitepress/crowdin/en-US/sidebars/mdshow.json b/packages/docs/.vitepress/crowdin/en-US/sidebars/mdshow.json new file mode 100644 index 0000000..be82152 --- /dev/null +++ b/packages/docs/.vitepress/crowdin/en-US/sidebars/mdshow.json @@ -0,0 +1,19 @@ +{ + "langshow": { + "text": "MD Show", + "items": [ + { + "link": "/mdshow/example", + "text": "Example" + }, + { + "link": "/mdshow/custom", + "text": "Custom" + }, + { + "link": "/comp/codeblock", + "text": "Code Block" + } + ] + } +} \ No newline at end of file diff --git a/packages/docs/.vitepress/crowdin/en-US/theme-config.json b/packages/docs/.vitepress/crowdin/en-US/theme-config.json new file mode 100644 index 0000000..2d5487b --- /dev/null +++ b/packages/docs/.vitepress/crowdin/en-US/theme-config.json @@ -0,0 +1,20 @@ +{ + "label": "English", + "selectText": "Languages", + "editLinkText": "Suggest changes to this page", + "lastUpdatedText": "Last Updated", + "localeLinks": { + "text": "", + "items": [ + { + "text": "Chinese", + "link": "/zh-CN/" + }, + { + "text": "English", + "link": "/en-US/" + } + ] + }, + "socialLinks": [{ "icon": "github", "link": "" }] +} diff --git a/packages/docs/.vitepress/crowdin/en-US/vitepress-config.json b/packages/docs/.vitepress/crowdin/en-US/vitepress-config.json new file mode 100644 index 0000000..7a226ee --- /dev/null +++ b/packages/docs/.vitepress/crowdin/en-US/vitepress-config.json @@ -0,0 +1,5 @@ +{ + "title": "Vuetom Theme", + "lang": "en-US", + "description": "Theme for Vitepress" +} diff --git a/packages/docs/.vitepress/crowdin/zh-CN/demo-block.json b/packages/docs/.vitepress/crowdin/zh-CN/demo-block.json new file mode 100644 index 0000000..dc53eda --- /dev/null +++ b/packages/docs/.vitepress/crowdin/zh-CN/demo-block.json @@ -0,0 +1,7 @@ +{ + "view-source": "代码", + "edit-on-github": "前往 Github 编辑", + "copy-code": "复制", + "copy-success": "复制成功", + "copy-error": "复制出现了一些问题" +} diff --git a/packages/docs/.vitepress/crowdin/zh-CN/nav.json b/packages/docs/.vitepress/crowdin/zh-CN/nav.json new file mode 100644 index 0000000..e4da207 --- /dev/null +++ b/packages/docs/.vitepress/crowdin/zh-CN/nav.json @@ -0,0 +1,30 @@ +[ + { + "text": "指引", + "link": "/guide/info", + "activeMatch": "/guide/" + }, + { + "text": "组件", + "link": "/mdshow/", + "activeMatch": "/mdshow/" + }, + { + "text": "链接", + "items": [ + { + "text": "反馈", + "link": "/feedback/", + "activeMatch": "/feedback/" + }, + { + "text": "码云", + "link": "https://gitee.com/lauset/vitepress-theme-vuetom" + }, + { + "text": "Vitepress官网", + "link": "https://vitepress.vuejs.org/" + } + ] + } +] diff --git a/packages/docs/.vitepress/crowdin/zh-CN/sidebars/guide.json b/packages/docs/.vitepress/crowdin/zh-CN/sidebars/guide.json new file mode 100644 index 0000000..0dbc185 --- /dev/null +++ b/packages/docs/.vitepress/crowdin/zh-CN/sidebars/guide.json @@ -0,0 +1,34 @@ +[ + { + "text": "基础", + "items": [ + { "text": "什么是Vitepress?", "link": "/guide/info" }, + { "text": "快速开始", "link": "/guide/start" }, + { + "text": "问题一览", + "link": "/guide/question" + }, + { + "text": "主题目录", + "link": "/guide/prodir" + } + ] + }, + { + "text": "进阶", + "items": [ + { + "text": "主题配置", + "link": "/guide/config" + }, + { + "text": "国际化", + "link": "/guide/lang" + }, + { + "text": "夜间模式", + "link": "/guide/dark" + } + ] + } +] \ No newline at end of file diff --git a/packages/docs/.vitepress/crowdin/zh-CN/sidebars/mdshow.json b/packages/docs/.vitepress/crowdin/zh-CN/sidebars/mdshow.json new file mode 100644 index 0000000..0bb3865 --- /dev/null +++ b/packages/docs/.vitepress/crowdin/zh-CN/sidebars/mdshow.json @@ -0,0 +1,19 @@ +[ + { + "text": "语法", + "items": [ + { + "link": "/mdshow/example", + "text": "MD语法示例" + }, + { + "link": "/mdshow/custom", + "text": "自定义语法" + }, + { + "link": "/mdshow/codeblock", + "text": "代码块展示" + } + ] + } +] \ No newline at end of file diff --git a/packages/docs/.vitepress/crowdin/zh-CN/theme-config.json b/packages/docs/.vitepress/crowdin/zh-CN/theme-config.json new file mode 100644 index 0000000..8a2985d --- /dev/null +++ b/packages/docs/.vitepress/crowdin/zh-CN/theme-config.json @@ -0,0 +1,20 @@ +{ + "label": "简体中文", + "selectText": "选择语言", + "editLinkText": "对本页提出修改建议", + "lastUpdatedText": "最后更新", + "localeLinks": { + "text": "", + "items": [ + { + "text": "简体中文", + "link": "/zh-CN/" + }, + { + "text": "English", + "link": "/en-US/" + } + ] + }, + "socialLinks": [{ "icon": "github", "link": "" }] +} diff --git a/packages/docs/.vitepress/crowdin/zh-CN/vitepress-config.json b/packages/docs/.vitepress/crowdin/zh-CN/vitepress-config.json new file mode 100644 index 0000000..bcd34a0 --- /dev/null +++ b/packages/docs/.vitepress/crowdin/zh-CN/vitepress-config.json @@ -0,0 +1,5 @@ +{ + "title": "Vuetom 主题", + "lang": "zh-CN", + "description": "一款为 Vitepress 而生的主题" +} diff --git a/packages/docs/.vitepress/i18n/demo-block.json b/packages/docs/.vitepress/i18n/demo-block.json new file mode 100644 index 0000000..b0bccc2 --- /dev/null +++ b/packages/docs/.vitepress/i18n/demo-block.json @@ -0,0 +1,16 @@ +{ + "en-US": { + "view-source": "Code", + "edit-on-github": "Edit on Github", + "copy-code": "Copy Code", + "copy-success": "Copy Success", + "copy-error": "Copy Error" + }, + "zh-CN": { + "view-source": "代码", + "edit-on-github": "前往 Github 编辑", + "copy-code": "复制", + "copy-success": "复制成功", + "copy-error": "复制出现了一些问题" + } +} \ No newline at end of file diff --git a/packages/docs/.vitepress/i18n/lang.json b/packages/docs/.vitepress/i18n/lang.json new file mode 100644 index 0000000..3ca948d --- /dev/null +++ b/packages/docs/.vitepress/i18n/lang.json @@ -0,0 +1 @@ +["en-US","zh-CN"] \ No newline at end of file diff --git a/packages/docs/.vitepress/i18n/nav.json b/packages/docs/.vitepress/i18n/nav.json new file mode 100644 index 0000000..6e9a7b9 --- /dev/null +++ b/packages/docs/.vitepress/i18n/nav.json @@ -0,0 +1,33 @@ +{ + "en-US": [ + { + "text": "Resume", + "link": "https://docs.google.com/document/d/1MTTfAx80EzWvtgmxFADdMrCS9R72ZwZPTLuBAaqtGNo/edit?usp=sharing", + }, + { + "text": "Gitea", + "link": "https://git.vertinext.com/roryejinn", + }, + { + "text": "Github", + "link": "https://github.com/ccubed" + } + { + "text": "Links", + "items": [ + { + "text": "Linkedin", + "link": "/feedback/", + }, + { + "text": "Twitch.tv", + "link": "https://gitee.com/lauset/vitepress-theme-vuetom" + }, + { + "text": "Anilist Profile", + "link": "https://anilist.co/user/TakeshiKO/" + } + ] + } + ] +} \ No newline at end of file diff --git a/packages/docs/.vitepress/i18n/sidebars/guide.json b/packages/docs/.vitepress/i18n/sidebars/guide.json new file mode 100644 index 0000000..854f9e4 --- /dev/null +++ b/packages/docs/.vitepress/i18n/sidebars/guide.json @@ -0,0 +1,82 @@ +{ + "en-US": [ + { + "text": "Basic", + "items": [ + { + "text": "What's the Vitepress?", + "link": "/guide/info" + }, + { + "text": "Quick Start", + "link": "/guide/start" + }, + { + "text": "Questions", + "link": "/guide/question" + }, + { + "text": "Project Dir", + "link": "/guide/prodir" + } + ] + }, + { + "text": "Advanced", + "items": [ + { + "text": "Theme Config", + "link": "/guide/config" + }, + { + "text": "Languages", + "link": "/guide/lang" + }, + { + "text": "Dark Mode", + "link": "/guide/dark" + } + ] + } + ], + "zh-CN": [ + { + "text": "基础", + "items": [ + { + "text": "什么是Vitepress?", + "link": "/guide/info" + }, + { + "text": "快速开始", + "link": "/guide/start" + }, + { + "text": "问题一览", + "link": "/guide/question" + }, + { + "text": "主题目录", + "link": "/guide/prodir" + } + ] + }, + { + "text": "进阶", + "items": [ + { + "text": "主题配置", + "link": "/guide/config" + }, + { + "text": "国际化", + "link": "/guide/lang" + }, + { + "text": "夜间模式", + "link": "/guide/dark" + } + ] + } + ] +} \ No newline at end of file diff --git a/packages/docs/.vitepress/i18n/sidebars/mdshow.json b/packages/docs/.vitepress/i18n/sidebars/mdshow.json new file mode 100644 index 0000000..0171cde --- /dev/null +++ b/packages/docs/.vitepress/i18n/sidebars/mdshow.json @@ -0,0 +1,40 @@ +{ + "en-US": { + "langshow": { + "text": "MD Show", + "items": [ + { + "link": "/mdshow/example", + "text": "Example" + }, + { + "link": "/mdshow/custom", + "text": "Custom" + }, + { + "link": "/comp/codeblock", + "text": "Code Block" + } + ] + } + }, + "zh-CN": [ + { + "text": "语法", + "items": [ + { + "link": "/mdshow/example", + "text": "MD语法示例" + }, + { + "link": "/mdshow/custom", + "text": "自定义语法" + }, + { + "link": "/mdshow/codeblock", + "text": "代码块展示" + } + ] + } + ] +} \ No newline at end of file diff --git a/packages/docs/.vitepress/i18n/theme-config.json b/packages/docs/.vitepress/i18n/theme-config.json new file mode 100644 index 0000000..3006acd --- /dev/null +++ b/packages/docs/.vitepress/i18n/theme-config.json @@ -0,0 +1,52 @@ +{ + "en-US": { + "label": "English", + "selectText": "Languages", + "editLinkText": "Suggest changes to this page", + "lastUpdatedText": "Last Updated", + "localeLinks": { + "text": "", + "items": [ + { + "text": "Chinese", + "link": "/zh-CN/" + }, + { + "text": "English", + "link": "/en-US/" + } + ] + }, + "socialLinks": [ + { + "icon": "github", + "link": "" + } + ] + }, + "zh-CN": { + "label": "简体中文", + "selectText": "选择语言", + "editLinkText": "对本页提出修改建议", + "lastUpdatedText": "最后更新", + "localeLinks": { + "text": "", + "items": [ + { + "text": "简体中文", + "link": "/zh-CN/" + }, + { + "text": "English", + "link": "/en-US/" + } + ] + }, + "socialLinks": [ + { + "icon": "github", + "link": "" + } + ] + } +} \ No newline at end of file diff --git a/packages/docs/.vitepress/i18n/vitepress-config.json b/packages/docs/.vitepress/i18n/vitepress-config.json new file mode 100644 index 0000000..7eb789c --- /dev/null +++ b/packages/docs/.vitepress/i18n/vitepress-config.json @@ -0,0 +1,12 @@ +{ + "en-US": { + "title": "Vuetom Theme", + "lang": "en-US", + "description": "Theme for Vitepress" + }, + "zh-CN": { + "title": "Vuetom 主题", + "lang": "zh-CN", + "description": "一款为 Vitepress 而生的主题" + } +} \ No newline at end of file diff --git a/packages/docs/.vitepress/menus.ts b/packages/docs/.vitepress/menus.ts new file mode 100644 index 0000000..4deaed5 --- /dev/null +++ b/packages/docs/.vitepress/menus.ts @@ -0,0 +1,150 @@ +import type { HeadConfig } from 'vitepress' +import { languages } from './utils/lang' +import navJson from './i18n/nav.json' +import guideSidebarJson from './i18n/sidebars/guide.json' +import mdshowSidebarJson from './i18n/sidebars/mdshow.json' +import vitepressConfigJson from './i18n/vitepress-config.json' +import themeConfigJson from './i18n/theme-config.json' + +type langType = 'zh-CN' | 'en-US' + +const getVitepressConfigLocales = (lang: langType = 'zh-CN') => (vitepressConfigJson[lang]) + +const getThemeConfigLocales = (lang: langType = 'zh-CN') => { + const sidebar = {} + sidebar[`/${lang}/guide/`] = guideSidebarJson[lang] + sidebar[`/${lang}/mdshow/`] = mdshowSidebarJson[lang] + return { + nav: navJson[lang], + sidebar, + ...themeConfigJson[lang] + } +} + +const getLocales = (langs: langType[] = []) => { + const config = { + vitepressConfig: {}, + themeConfig: {} + } + langs.forEach(lang => { + config.vitepressConfig[`/${lang}/`] = getVitepressConfigLocales(lang) + config.themeConfig[`/${lang}/`] = getThemeConfigLocales(lang) + }) + return config +} + +const getNav = (lang: 'zh-CN' | 'en-US' = 'zh-CN') => (navJson[lang]) + +const getSidebar = (lang: 'zh-CN' | 'en-US' = 'zh-CN') => ({ + '/guide/': guideSidebarJson[lang], + '/mdshow/': mdshowSidebarJson[lang] +}) + +const head: HeadConfig[] = [ + [ + 'meta', + { + name: 'viewport', + content: 'width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no' + } + ], + ['link', { rel: 'icon', href: '/logo/vuetom-logo-m.png' }], + [ + 'script', {}, ';(() => { })()' + ], + [ + 'script', + {}, + `;(() => { + const supportedLangs = ${JSON.stringify(languages)} + const cacheKey = 'vuetom_langs' + localStorage.setItem(cacheKey, supportedLangs) + })()` + ] +] + +// const nav = (lang: '/zh-CN' | '/en-US' | '' = '') => [ +// { text: '指引', link: `${lang}/guide/info`, activeMatch: '/guide/' }, +// { text: '组件', link: `${lang}/mdshow/`, activeMatch: '/mdshow/' }, +// { +// text: '链接', +// items: [ +// { +// text: '反馈', +// link: `${lang}/feedback/`, +// activeMatch: '/feedback/', +// }, +// { +// text: '码云', +// link: 'https://gitee.com/lauset/vitepress-theme-vuetom', +// }, +// { +// text: 'Vitepress官网', +// link: 'https://vitepress.vuejs.org/', +// }, +// ], +// }, +// ] + +// const sidebarGuide = (lang: '/zh-CN' | '/en-US' | '' = '') => [ +// { +// text: '基础', +// collapsible: true, +// items: [ +// { text: '什么是Vitepress?', link: `${lang}/guide/info` }, +// { text: '快速开始', link: `${lang}/guide/start` }, +// { +// text: '问题一览', +// link: `${lang}/guide/question`, +// }, +// { +// text: '主题目录', +// link: `${lang}/guide/prodir`, +// }, +// ], +// }, +// { +// text: '进阶', +// collapsible: true, +// items: [ +// { +// text: '主题配置', +// link: `${lang}/guide/config`, +// }, +// { +// text: '国际化', +// link: `${lang}/guide/lang`, +// }, +// { +// text: '夜间模式', +// link: `${lang}/guide/dark`, +// }, +// ], +// }, +// ] + +// const sidebarMdShow = (lang: '/zh-CN' | '/en-US' | '' = '') => [ +// { +// text: '语法', +// collapsible: true, +// items: [ +// { +// link: `${lang}/mdshow/example`, +// text: 'MD语法示例', +// }, +// { +// link: `${lang}/mdshow/custom`, +// text: '自定义语法', +// }, +// { +// link: `${lang}/mdshow/codeblock`, +// text: '代码块展示', +// }, +// ], +// }, +// ] +const nav = getNav() +const sidebar = getSidebar() +const locales = getLocales(['zh-CN', 'en-US']) + +export { nav, sidebar, head, locales, getNav, getSidebar } diff --git a/packages/docs/.vitepress/theme/custom.scss b/packages/docs/.vitepress/theme/custom.scss new file mode 100644 index 0000000..bc64a40 --- /dev/null +++ b/packages/docs/.vitepress/theme/custom.scss @@ -0,0 +1,17 @@ +:root{ + // 重写主题色 + + // 主色 + --vp-c-brand: var(--vp-c-blue); + --vp-c-brand-light: var(--vp-c-blue-light); + --vp-c-brand-lighter: var(--vp-c-blue-lighter); + --vp-c-brand-dark: var(--vp-c-blue-dark); + --vp-c-brand-darker: var(--vp-c-blue-darker); + + // 副色 + --vp-c-second: var(--vp-c-pink); + --vp-c-second-light: var(--vp-c-pink-light); + --vp-c-second-lighter: var(--vp-c-pink-lighter); + --vp-c-second-dark: var(--vp-c-pink-dark); + --vp-c-second-darker: var(--vp-c-pink-darker); +} \ No newline at end of file diff --git a/packages/docs/.vitepress/theme/index.ts b/packages/docs/.vitepress/theme/index.ts new file mode 100644 index 0000000..ae155e8 --- /dev/null +++ b/packages/docs/.vitepress/theme/index.ts @@ -0,0 +1,24 @@ +// .vitepress/theme/index.ts + +// theme +import VuetomTheme from 'vitepress-theme-vuetom/docs' + +// components +import { globals } from '../views' + +// rewrite css +import './custom.scss' + +export default { + ...VuetomTheme, + + // NotFound, + // Layout, + enhanceApp({ app, router, siteData }) { + // app.use(VuetomUI) + + globals.forEach(([name, Comp]) => { + app.component(name, Comp) + }) + }, +} diff --git a/packages/docs/.vitepress/utils/lang.ts b/packages/docs/.vitepress/utils/lang.ts new file mode 100644 index 0000000..258d25c --- /dev/null +++ b/packages/docs/.vitepress/utils/lang.ts @@ -0,0 +1,8 @@ +import fs from 'fs' +import path from 'path' + +export const languages = fs.readdirSync( + path.resolve(__dirname, '../crowdin') +) + +export const changeLang = (lang: string) => `/${lang}` diff --git a/packages/docs/.vitepress/utils/log.ts b/packages/docs/.vitepress/utils/log.ts new file mode 100644 index 0000000..c263500 --- /dev/null +++ b/packages/docs/.vitepress/utils/log.ts @@ -0,0 +1,23 @@ +import process from 'process' +import chalk from 'chalk' + +export function cyan(str: string) { + console.log(chalk.cyan(str)) +} + +export function yellow(str: string) { + console.log(chalk.yellow(str)) +} + +export function green(str: string) { + console.log(chalk.green(str)) +} + +export function red(str: string) { + console.error(chalk.red(str)) +} + +export function errorAndExit(e: Error): never { + red(e.stack ?? e.message) + process.exit(1) +} diff --git a/packages/docs/.vitepress/utils/paths.ts b/packages/docs/.vitepress/utils/paths.ts new file mode 100644 index 0000000..a1a301e --- /dev/null +++ b/packages/docs/.vitepress/utils/paths.ts @@ -0,0 +1,6 @@ +import path from 'path' + +export const vpRoot = path.resolve(__dirname, '..') +export const docRoot = path.resolve(vpRoot, '..') +export const pkgsRoot = path.resolve(docRoot, '..') +export const projRoot = path.resolve(pkgsRoot, '..') diff --git a/packages/docs/.vitepress/views/common/lang.ts b/packages/docs/.vitepress/views/common/lang.ts new file mode 100644 index 0000000..2cde70a --- /dev/null +++ b/packages/docs/.vitepress/views/common/lang.ts @@ -0,0 +1,18 @@ +import { computed } from 'vue' +import { useRoute } from 'vitepress' + +export const useLang = () => { + const route = useRoute() + return computed(() => { + // the first part of the first slash + const path = route.data?.relativePath + let lang: string + + if (path?.includes('/')) { + lang = path.split('/').shift() + } else { + lang = 'zh-CN' + } + return lang + }) +} diff --git a/packages/docs/.vitepress/views/common/toggle.ts b/packages/docs/.vitepress/views/common/toggle.ts new file mode 100644 index 0000000..e905e7f --- /dev/null +++ b/packages/docs/.vitepress/views/common/toggle.ts @@ -0,0 +1,18 @@ +import { isRef, ref } from 'vue' +import { isBoolean } from '@vueuse/core' +import type { MaybeRef } from '@vueuse/core' + +export const useToggle = (getToggled?: MaybeRef) => { + const val = isRef(getToggled) + ? getToggled + : ref(isBoolean(getToggled) ? getToggled : false) + + return [ + val, + (toggle?: boolean) => { + val.value = isBoolean(toggle) ? toggle : !val.value + } + ] as const +} + +export default {} diff --git a/packages/docs/.vitepress/views/index.ts b/packages/docs/.vitepress/views/index.ts new file mode 100644 index 0000000..3a3fdd5 --- /dev/null +++ b/packages/docs/.vitepress/views/index.ts @@ -0,0 +1,8 @@ +import VtFeedback from './vt/vt-feedback.vue' + +// export default VtApp +export const globals = [ + ['VtFeedback', VtFeedback], +] + +export default {} diff --git a/packages/docs/.vitepress/views/vt/vt-feedback.vue b/packages/docs/.vitepress/views/vt/vt-feedback.vue new file mode 100644 index 0000000..26bcf70 --- /dev/null +++ b/packages/docs/.vitepress/views/vt/vt-feedback.vue @@ -0,0 +1,426 @@ + + + + + diff --git a/packages/docs/README.md b/packages/docs/README.md new file mode 100644 index 0000000..00e95dd --- /dev/null +++ b/packages/docs/README.md @@ -0,0 +1,2 @@ + +

Vuetom Theme Documents

\ No newline at end of file diff --git a/packages/docs/api/proxy.js b/packages/docs/api/proxy.js new file mode 100644 index 0000000..3236ef8 --- /dev/null +++ b/packages/docs/api/proxy.js @@ -0,0 +1,15 @@ +const { createProxyMiddleware } = require('http-proxy-middleware') + +module.exports = (req, res) => { + let target = '' + if (req.url.startsWith('/vt')) { + target = 'https://vitepress-theme-vuetom.vercel.app' + } + createProxyMiddleware({ + target, + changeOrigin: true, + pathRewrite: { + '^/vt/': '/' + } + })(req, res) +} diff --git a/packages/docs/crowdin.yml b/packages/docs/crowdin.yml new file mode 100644 index 0000000..a59be6d --- /dev/null +++ b/packages/docs/crowdin.yml @@ -0,0 +1,130 @@ +# +# Your Crowdin credentials +# +'project_id': '493499' +'api_token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJ3UUVxdmhVM3ZMT2EyWGljbVV5VCIsImp0aSI6IjAxOTUwYzkxMzYwZjA2ZGRmZmIzMWI2NWEyYTcyMTFlM2U3MmEzN2M0OThmMGEzYzE2NjJmNmM0ZTVkODY1OTY0ZGZjZjJmMWYzYmU3NjAyIiwiaWF0IjoxNjQxNzUwMzc2LCJuYmYiOjE2NDE3NTAzNzYsImV4cCI6MTY0NDM0MjM3Niwic3ViIjoiMTQ5ODY1NTUiLCJkb21haW4iOm51bGwsInNjb3BlcyI6WyJwcm9qZWN0Il0sImFzc29jaWF0aW9ucyI6WyIqIl0sInNlc3Npb24iOjB9.PT_rMlnABrRc9DPwQjZ14RqPrwRxtn-dER1AjEomPVLPobm8PeVfopTe7KQeFMFKbUjzuuPPJbWh3doEkFDHifcvKHHdqjwrT6A0VYdQDFOXglrWNTE33J3k7hJn2FwXXMIFF709y9jJnUVWSeRyO5gXV5Z41ozadHi4bNNikyXoREnWZHdSfZXN7BoubXeo1JsxVSHTXbhEXV-u-gUwUPQ6k4lXkpqCf3B8xYP0p7SlYWWN3zEoajKvAVAsCnEC9kBj0X1LRhuk7jfXAkS3xR6pVY7tyawsdzsUGF-gVLvUKn8M3-1R92DRAo566IVBUmfG4YhnXXGWO30rht-XFWxVcqSFVSpiDFCQdBRKwclzeSveh__ljuVEcFDTAO-bMz4s2uzJFGfJgrVfNkKk4NnNV3iyQfpaZiDU-QxLh0aCIhj4zJZgF3NkLp-rBONM3t1fyIfK8JCYrbrG-nDy-SqyHYsWnG0SvjcsDCEBk4eoyioTX3VBIeB7AL5dHiryiB-74DV9XQxk65VOmt6HDhbfddmeqSa668QPKa3LzvIauW8BLyrz9XnYcK6RqxAZm14zls2_1DG0JmPymrx2KmX2snnX2MuLGaicRPkd2o9OwUxd_1aMQssjLRCHawtrTu6PCyfwi_0wFJtW9qB-f4dPUdVK23yarLWjjjLmzzQ' +'base_path': '.' +'base_url': 'https://api.crowdin.com' + +# +# Choose file structure in Crowdin +# e.g. true or false +# +'preserve_hierarchy': true + +# +# Files configuration +# +files: [ + { + 'source': '.vitepress/crowdin/zh-CN/**/*.json', + 'translation': '.vitepress/crowdin/%locale%/**/%original_file_name%', + }, + { + # + # Source files filter + # e.g. "/resources/en/*.json" + # + 'source': 'zh-CN/**/*.md', + + # + # Where translations will be placed + # e.g. "/resources/%two_letters_code%/%original_file_name%" + # + 'translation': '%locale%/**/%original_file_name%', + # + # Files or directories for ignore + # e.g. ["/**/?.txt", "/**/[0-9].txt", "/**/*\?*.txt"] + # + #"ignore" : [], + + # + # The dest allows you to specify a file name in Crowdin + # e.g. "/messages.json" + # + #"dest" : "", + + # + # File type + # e.g. "json" + # + #"type" : "", + + # + # The parameter "update_option" is optional. If it is not set, after the files update the translations for changed strings will be removed. Use to fix typos and for minor changes in the source strings + # e.g. "update_as_unapproved" or "update_without_changes" + # + #"update_option" : "", + + # + # Start block (for XML only) + # + + # + # Defines whether to translate tags attributes. + # e.g. 0 or 1 (Default is 1) + # + # "translate_attributes" : 1, + + # + # Defines whether to translate texts placed inside the tags. + # e.g. 0 or 1 (Default is 1) + # + # "translate_content" : 1, + + # + # This is an array of strings, where each item is the XPaths to DOM element that should be imported + # e.g. ["/content/text", "/content/text[@value]"] + # + # "translatable_elements" : [], + + # + # Defines whether to split long texts into smaller text segments + # e.g. 0 or 1 (Default is 1) + # + # "content_segmentation" : 1, + + # + # End block (for XML only) + # + + # + # Start .properties block + # + + # + # Defines whether single quote should be escaped by another single quote or backslash in exported translations + # e.g. 0 or 1 or 2 or 3 (Default is 3) + # 0 - do not escape single quote; + # 1 - escape single quote by another single quote; + # 2 - escape single quote by backslash; + # 3 - escape single quote by another single quote only in strings containing variables ( {0} ). + # + # "escape_quotes" : 3, + + # + # Defines whether any special characters (=, :, ! and #) should be escaped by backslash in exported translations. + # e.g. 0 or 1 (Default is 0) + # 0 - do not escape special characters + # 1 - escape special characters by a backslash + # + # "escape_special_characters": 0 + # + + # + # End .properties block + # + + # + # Does the first line contain header? + # e.g. true or false + # + #"first_line_contains_header" : true, + + # + # for spreadsheets + # e.g. "identifier,source_phrase,context,uk,ru,fr" + # + # "scheme" : "", + }, +] diff --git a/packages/docs/feedback/index.md b/packages/docs/feedback/index.md new file mode 100644 index 0000000..c5c1f5a --- /dev/null +++ b/packages/docs/feedback/index.md @@ -0,0 +1,17 @@ +--- +title: 留言反馈 +--- + +# {{ $frontmatter.title }} + +> 该页面是在 Markdown 中引入 Vue 组件简单的展示 + +页面文件: `.vitepress/views/vt/vt-feedback.vue` + + + + + +::: tip +正在开发中,你以后可以把想说的话写在这里 +::: diff --git a/packages/docs/guide/config.md b/packages/docs/guide/config.md new file mode 100644 index 0000000..8fa91ab --- /dev/null +++ b/packages/docs/guide/config.md @@ -0,0 +1,201 @@ +--- +title: 主题配置 +head: + - - meta + - name: description + content: vuetom 主题配置项 + - - meta + - name: keywords + content: vuetom theme config +--- + +# {{ $frontmatter.title }} + +主题的配置要写在 `.vitepress/config.ts` 文件中的 themeConfig 属性中 + +
+ +下面是一些简要的配置项一览: + +其中 head、sidebar、nav 对应的分别是 页面head脚本、侧边栏菜单、头部导航栏(都可以默认为[]) + +
+ +以下是版本号满足 `vitepress >= 1.0.0` `vuetom-theme >= 2.3.0` 的配置 + +```js macos +// .vitepress/config.ts +// import ... + +export default defineConfigWithTheme({ + base: `/vt/`, + ignoreDeadLinks: true, + lastUpdated: true, + head, + locales: locales.vitepressConfig, + themeConfig: { + nav, + sidebar, + localeLinks: { + text: '', + items: [ + { + text: '中文', + link: '/lang/zhcn' + }, + { + text: 'English', + link: '/lang/enus' + } + ] + }, + socialLinks: [ + { icon: 'github', link: pkg.repository } + ], + footer: { + message: 'Released under the MIT License.', + copyright: 'Copyright © 2021-present Lauset' + }, + algolia: { + appId: '8Q3CNX0EF2', + apiKey: 'd44e3c8ec76aff9c758ef34f2cefe24d', + indexName: 'dev_vuetom' + }, + + logoImg: '/logo/vuetom-logo-m.png', + bgImg: '/imgs/homg-bg01.jpg', + bgColor: '0,0,0', + bgOpacity: 0.6, + flashEnable: true, + flashColor: ['238,17,17', '0,98,255'], + parallaxEnable: true, + pageBgEnable: true, + pageBgOpacity: 0.8, + featuresColor: ['#06cdff30', 'rgba(223,7,107,.3)'] + + }, + + markdown: { + lineNumbers: true + }, + appearance: true, + vite: { + ssr: { + noExternal: ["vitepress-theme-vuetom"] + } + } +}) +``` + +:::warning 注意 +需要将主题配置成防止被 SSR 外部化的依赖项 + +```js +vite: { + ssr: { + noExternal: ["vitepress-theme-vuetom"] + } +} +``` + +::: + +
+ +:::danger 过期提示 +vitepress-theme-vuetom 1.x 版本已弃用 + +请升级版本 `vitepress>=1.0` `vitepress-theme-vuetom>=2.3.0` +::: + +
+ +以下是对配置项的简要说明 + +## 首页LOGO + +**logoImg** + +- 类型:`string` +- 默认值:`''` + +首页上方LOGO,路径中的首个 `/` 表示 `public` 目录 + +例如:`'/logo/homg-logo.jpg'` + +## 首页背景图 + +**bgImg** + +- 类型:`string` +- 默认值:`undefined` + +首页全屏背景图,路径中的首个 `/` 表示 `public` 目录 + +例如:`'/imgs/homg-bg01.jpg'` 等同于 `/public/imgs/home-bg01.jpg` + +**bgColor** + +- 类型:`string` +- 默认值:`'0,0,0'` + +背景图边缘的覆盖颜色,值是 `rgb` 的颜色值 `rgb(0,0,0)` 则写为 `'0,0,0'`,默认为黑色 + +**bgOpacity** + +- 类型:`0 - 1` +- 默认值:`0.6` + +覆盖颜色的透明度,搭配上面的覆盖颜色使用,图片中间透明度要比图片边缘透明度要小 + +图片中间透明度为 `当前bgOpacity - 0.3`,也就是说默认为 `0.3` + +## 文章页背景图 + +注意:文章页背景图片与首页一致 + +**pageBgEnable** + +- 类型:`boolean` +- 默认值:`true` + +文章页面背景图是否开启,默认开启 + +**pageBgOpacity** + +- 类型:`0 - 1` +- 默认值:`0.8` + +文章页背景图透明度,1将看不到背景图,0能清晰看到背景图 + +**featuresColor** + +- 类型:`string | Array` +- 默认值:`rgba(255,255,255,0.8)` + +首页功能面板背景色,可以是单个颜色字符串,也可以是两个字符串组成的数组 + +**flashEnable** + +- 类型:`boolean` +- 默认值:`false` + +是否开启首页背景图闪烁功能,效果类似于朋克风故障 + +**flashColor** + +- 类型:`string | Array` +- 默认值:`['0,0,0','0,0,0']` + +首页背景闪烁时附加的色彩,0: Top位置的颜色,1: Right位置的颜色,默认都是黑色 + +**parallaxEnable** + +- 类型:`boolean` +- 默认值:`false` + +是否开启首页部分元素视觉差效果 + +## 博客配置项 + +博客开发中... diff --git a/packages/docs/guide/dark.md b/packages/docs/guide/dark.md new file mode 100644 index 0000000..b04ecb9 --- /dev/null +++ b/packages/docs/guide/dark.md @@ -0,0 +1,49 @@ +--- +title: 夜间模式 +lang: en-US +--- + + +# {{ $frontmatter.title }} + +默认的话夜间模式切换按钮是一直有的,右上角那个太阳图标 + +## 原理 + +开关操作修改的是 HTML 根标签的样式,会加上 dark 样式 + +```html + +``` + +我们可以事先定义一些 css变量来完成不同语言下或者不同模式下的样式变换 + +## 主题色覆盖 + +修改 theme/custom.scss 文件即可 + +简单展示部分 + +```css +:root { + // 重写主题色 + + // 主色 + --vp-c-brand: var(--vp-c-blue); + --vp-c-brand-light: var(--vp-c-blue-light); + --vp-c-brand-lighter: var(--vp-c-blue-lighter); + --vp-c-brand-dark: var(--vp-c-blue-dark); + --vp-c-brand-darker: var(--vp-c-blue-darker); + + // 副色 + --vp-c-second: var(--vp-c-pink); + --vp-c-second-light: var(--vp-c-pink-light); + --vp-c-second-lighter: var(--vp-c-pink-lighter); + --vp-c-second-dark: var(--vp-c-pink-dark); + --vp-c-second-darker: var(--vp-c-pink-darker); +} + +.dark { + +} +``` diff --git a/packages/docs/guide/index.md b/packages/docs/guide/index.md new file mode 100644 index 0000000..2303cb9 --- /dev/null +++ b/packages/docs/guide/index.md @@ -0,0 +1,17 @@ +# 指引 + +`info` : 介绍 + +`start` : 快速开始 + +`question` : 问题一览 + +`prodir` : 主题项目结构 + +`config` : 主题配置 + +`lang` : 国际化配置 + +::: tip +这里展示的是指引菜单下所有的子菜单 +::: \ No newline at end of file diff --git a/packages/docs/guide/info.md b/packages/docs/guide/info.md new file mode 100644 index 0000000..f6ad007 --- /dev/null +++ b/packages/docs/guide/info.md @@ -0,0 +1,50 @@ +--- +title: 什么是Vitepress? +head: + - - meta + - name: description + content: vuetom 介绍 + - - meta + - name: keywords + content: vuetom theme +--- + +# {{ $frontmatter.title }} + +VitePress 是 VuePress 的升级,以 Vite 为基础构建的。是一款快速搭建文档静态网站的框架。 + +Vite(法语意为 "快速的",发音 `/vit/` ,发音同 "veet")是一种新型前端构建工具,能够显著提升前端开发体验。Vite 意在提供开箱即用的配置,同时它的 插件 API 和 JavaScript API 带来了高度的可扩展性,并有完整的类型支持。它主要由两部分组成: + +- 一个开发服务器,它基于 原生 ES 模块 提供了 丰富的内建功能,如速度快到惊人的 模块热更新(HMR)。 + +- 一套构建指令,它使用 Rollup 打包你的代码,并且它是预配置的,可输出用于生产环境的高度优化过的静态资源。 + +## vuetom 呢? + +是的,是一款主题,因 vitepress 而诞生。建立在 Vue3 与 Vite 之上的一款文档框架的主题。含有 `文档` 与 `博客` 两种风格模板。其推出目的是为了让大家体验并使用到更多美丽而又有趣的 vitepress 主题,进而大家可以发挥想象展示出更多优美的文档。 + +## 有什么特点 + +使用现代扁平化的设计风格,部分 UI 尽量接近于 macos 界面风格 + +该主题包含了以下相关技术 + +- [nodejs](http://nodejs.cn/) +- [vite](https://vitejs.cn/) +- [vue3](https://v3.vuejs.org/) +- [vitepress](https://vitejs.cn/vitepress/) +- [tailwindcss](https://www.tailwindcss.cn/docs) + +该主题包含了一下功能模块 + +**内置UI组件:** 扁平化数据组织,方便编写。含有按钮,弹框,卡片等基础组件 + +**主题与样式:** 主要包含布局,间距,排版,颜色,边框 + +**API与指令:** 可搭配组件使用,实现不同组件不同指令效果 + +## 推荐开发工具? + +这就无所谓了吧哈哈。 + +[vscode编辑器](https://code.visualstudio.com/) => [下载地址](https://blog.csdn.net/bielaiwuyang1999/article/details/117814237) diff --git a/packages/docs/guide/lang.md b/packages/docs/guide/lang.md new file mode 100644 index 0000000..690e3be --- /dev/null +++ b/packages/docs/guide/lang.md @@ -0,0 +1,111 @@ +--- +title: 多国语言配置 +--- + +# {{ $frontmatter.title }} + +vitepress 1.x 版本采用 0.x 版本的多国语言配置打包 NavBar 会出现错乱问题,暂时放弃研究 + +目前可将 `.vitepress/crowdin-docs/` 目录下 `zh-CN` 或 `en-US` 中的md直接文件复制取出并覆盖docs目录下的md文件 + +:::danger +适配于 vitepress 1.x.x 版本的功能正在制作,下面是 0.x.x 版本的国际化方案 +::: + +## Vitepress 0.22.x 多国语言配置 + +你也可以配置多国语言,以首页为例,先在配置文件里配置下 locales,然后创建对应的语言文件夹与文件 + +## 改配置文件 + +需要在 config.ts 中配置 locales,注意 themeConfig 属性里也要配,两个 locales 内容是不一样的 + +themeConfig 中的 locales 配置是为了展示下拉菜单的展示内容 + +根Config 中的 locales 配置是为了展示头部标题内容,description属性可有可无 + +```js +// .vitepress/config.ts +export default defineConfigWithTheme({ + // ... + themeConfig: { + // ... + locales: { + '/zh-CN/': { + label: '简体中文', + selectText: '多国语言' + }, + '/en-US/': { + label: 'English', + selectText: 'Languages' + } + } + }, + locales: { + '/zh-CN/': { + lang: 'zh-CN', + title: 'Vuetom 主题', + description: '为 Vitepress 提供的一款主题' + }, + '/en-US/': { + lang: 'en-US', + title: 'Vuetom Theme', + description: 'Theme For Vitepress' + } + } +}) +``` + +**locales** 中的属性介绍 + +lang: 会直接设置给 `` 标签 + +title: 不同语言时网站的标题,会替换之前定义的 title + +description: 不同语言时网站的描述 + +label: 语言选择时展示出来的文本内容(例如:中文或English) + +selectText: 语言选择时下拉菜单的文本(例如:多国语言或者Languages) + +## 改首页 + +在 .vitepress 同级目录新建 `zh-CN` 和 `en-US` 文件夹,然后在这个文件夹中分别创建一个 `index.md` 文件 + +**zh-CN/index.md** 中写入 **中文首页** 要展示的内容 + +**en-US/index.md** 中写入 **英文首页** 要展示的内容 + +原来与 .vitepress 同级的 `index.md` 文件中可以改为转发至 `zh-CN/index` 或者 `en-US/index` + +例如下方的代码,会直接将 `/` 转发到 `/zh-CN/` 这样就会直接前往中文首页了 + +```markdown +--- +title: 'Vuetom Theme' +lang: en-US +page: true +--- + + +``` + +::: warning +其实原理就是路径前加了一个语言标识,那么就在页面文件外加个语言文件夹就好了
+需要处理的就是书写导航栏和菜单栏时记得要在 link 属性前加上语言标识 +::: + +下面试试访问一下: + +访问 localhost:3000/zh-CN/ 会前往中文首页 + +访问 localhost:3000/en-US/ 会前往英文首页 + +访问 localhost:3000 会前往 localhost:3000/zh-CN/ diff --git a/packages/docs/guide/prodir.md b/packages/docs/guide/prodir.md new file mode 100644 index 0000000..7cfd002 --- /dev/null +++ b/packages/docs/guide/prodir.md @@ -0,0 +1,57 @@ +--- +title: 框架目录 +head: + - - meta + - name: description + content: Vuetom 主题目录结构 + - - meta + - name: keywords + content: project dir. +--- + +# 主题目录 + +在使用一个框架,其实也要简单了解下该框架的项目文件结构,请向下看吧。 + +```bash +vuetom + ├─ blog 博客主题Vue组件 文件夹 + ├─ doc 新版文档,适配vp1.x 文件夹 + ├─ docs 旧版文档主题组件 文件夹 + │ ├─ components 主题Vue组件 文件夹 + │ ├─ composables 组件脚本 文件夹 + │ ├─ layouts 布局组件 文件夹 + │ └─ index.ts 主题入口 文件 + ├─ icons 共用图标Vue组件 文件夹 + ├─ styles 全局SCSS样式 文件夹 + ├─ support 供支持脚本 文件夹 + ├─ types 规范描述 文件夹 + ├─ constant.ts 常量定义 文件 + └─ index.ts 主题入口文件 文件 +``` + +接下来介绍本文档**docs**文件夹 + +```bash +docs + ├─ .vitepress + │ └─ config.ts 主题主要配置文件 + │ + ├─ public 静态资源文件 + │ + ├─ zh-CN 中文页面 + │ ├─ feedback 留言反馈 + │ ├─ guide 指引 + │ ├─ mdshow Markdown示例 + │ ├─ menu UI组件 + │ ├─ styl 主题与样式 + │ └─ index.md 中文首页 + │ + ├─ crowdin.yml 多国语言配置 + ├─ index.md 项目首页 + ├─ CHANGELOG.md 更新日志 + ├─ package.json 包配置 + ├─ README.md 项目说明 + ├─ tsconfig.json ts配置 + └─ vite.config.ts vite配置 +``` diff --git a/packages/docs/guide/question.md b/packages/docs/guide/question.md new file mode 100644 index 0000000..7dcf005 --- /dev/null +++ b/packages/docs/guide/question.md @@ -0,0 +1,53 @@ +--- +title: 常见问题 +head: + - - meta + - name: description + content: 常见问题汇总 + - - meta + - name: keywords + content: question +--- + +# {{ $frontmatter.title }} + +是否经常卡在一些莫名其妙的问题上?让我们来汇总一下问题并给出相应的解决方案吧! + +## 问题列表 + +- [版本多久更新一次?](#q01) +- [我的样式没有起作用。](#q02) +- [我不想要背景图咋办啊?](#q03) + +## 问题解答 + + 以下是针对于近期问题所作的答复 + +-

版本多久更新一次?

+ + 目前进度较慢,但是每周都会更新主要内容的 + +-

我的样式没有起作用。

+ + 查看 `.vitepress/config.js` 文件进中 `theme` 项是否配置正确 + +-

我不想要背景图咋办啊?

+ + 你可以用一张纯白色的图片作为背景图啊嘿嘿嘿 + +## 开发进度 + +| 功能组件 | 开发进度 | 预估 | +| - | - | - | +| 文档风格主题 vitepress 0.x.x | 开发中(80%) | 2022.5 | +| 文档风格主题 vitepress 1.x.x | 开发中(80%) | 2022.8 | +| 博客风格主题 vitepress 1.x.x | 开发中(50%) | 2022.11 | + +## 需要帮助? + + 可点击 [留言反馈](/feedback/) 前往问题反馈界面对问题进行简单的描述 + +::: tip +目前 vitepress 版本已进入 1.0.0 , vuetom-theme 版本已进入 2.0.0 + +::: diff --git a/packages/docs/guide/start.md b/packages/docs/guide/start.md new file mode 100644 index 0000000..be473fe --- /dev/null +++ b/packages/docs/guide/start.md @@ -0,0 +1,178 @@ +--- +title: 快速使用 +head: + - - meta + - name: description + content: 教你如何掌握框架的工作流程,快速上手。 + - - meta + - name: keywords + content: 开始使用 +--- + +# {{ $frontmatter.title }} + +使用主题前请确保你已经搭建了一个 Vitepress 文档项目,因为主题是建立在该框架的基础上使用的。 + +请确保你使用的 vue >= 3.2 且 vitepress >= 1.x 哦。 + +## 最快捷的方式 + +直接拉取本项目至本地,packages/docs 和 packages/blog 目录下分别是文档和博客示例,根据 `README.md` 进行依赖安装、构件、打包、预览即可 + +## 其他方式 + +### **1.** 使用脚手架初始化 + +可用脚手架 `vuetom-cli` 来进行主题的初始化,这会在你本地初始化一个模版 + +网速慢可以再次尝试或者直接前往模版仓库拉取 [模版仓库](https://github.com/lauset/vuetom-cli) + +- 分支1: **temp-docs** (文档模版) + +- 分支2: **temp-blog** (博客模版) + +1. 首先安装脚手架,NPM安装前请确保开启管理员身份运行保证有权限 + +```sh light +npm i -g vuetom-cli +``` + +2. 查看是否安装成功,黑窗口运行一下命令,返回版本号 x.x.x 则表示安装成功 + +```bash light +vuetom-cli -v +``` + +1. 初始化模版,可以选择是否新建目录、仓息、作者、模版仓库等。 + + 初始化选择从 github 源拉取模版可以保证模版是最新的代码 + +```bash light +vuetom-cli init +``` + +1. 然后便会下载模版,下载完成后,执行以下命令安装依赖并运行文档网站 + +```bash macos +# 安装依赖 +pnpm i + +# 本地运行 +pnpm dev +``` + +::: warning +模版是从 github 上拉取的,可能有时候会有网速的困惑,也可手动前往拉取下载本地启用 + +文档模版: + +博客模版: +::: + +
+ +### **2.** 通过NPM下载安装主题(最新版本为 2.3.0) + +:::danger ⚠️ 写在前面 + +正常引入主题后,还需在 .vitepress/config.ts 文件中配置以下内容 + +```js macos +vite: { + ssr: { + noExternal: ["vitepress-theme-vuetom"] + } +} +``` + +::: + +使用这个方式首先你要搭建一个 vitepress 项目,主题是会覆盖文档默认样式而已,所以项目还是得搭起来的,可以前往下面 vitepress 官网链接从头开始搭建 + +[vitepress搭建文档](https://vitepress.vuejs.org/guide/getting-started.html) + +搭建完后最简单的样子就是项目目录里有个 index.md 文件,那么开始下一步 + +1. 安装主题依赖 + +使用 NPM 安装最新版本的 vitepress-theme-vuetom 主题包,在你的 vitepress 项目下安装,打开 `终端(DOS)` 输入 + +```sh light +npm i -D vitepress-theme-vuetom +``` + +2. 开始引入主题 + +先在 .vitepress (这个文件夹和首页 index.md 是同级目录,没有的自己创建)中新建一个名为 theme 的文件夹,在该文件下新建一个 index.ts 文件,当然用 js 还是 ts 文件就看你自己项目的决定了。 + +大致内容如下: + +`VuetomTheme` 是主要的主题布局 + +`VuetomUI` 是内置的UI组件 + +```javascript light +// .vitepress/theme/index.ts + +// 文档风格引入 2.3.0 版本之后改为 /docs 中引入了 +import VuetomTheme from 'vitepress-theme-vuetom/docs' + +// 博客风格引入 +// import BlogTheme from 'vitepress-theme-vuetom/blog' + +export default { + ...VuetomTheme, + enhanceApp({ app, router, siteData }) { + } +} +``` + +引入了主题,然后你的 index.md 里写上一些内容应该就可以看出效果了 + +```html light +--- +home: true +heroImage: /logo/vuetom-logo-m.png +heroAlt: LOGO +heroText: Vuetom +tagline: vitepress flat theme + +actionText: 快 速 开 始 +actionLink: /guide/info + +altActionText: 配 置 +altActionLink: /guide/config + +features: + - title: 📦 优化的构建 + details: 可选 “多页应用” 或 “库” 模式的预配置 Rollup 构建 + - title: 🔩 通用的插件 + details: 在开发和构建之间共享 Rollup-superset 插件接口。 + - title: 🔑 完全类型化的API + details: 灵活的 API 和完整 TypeScript 类型。 + +footer: MIT Licensed +--- + +
+

{{ data.text }}

+
+ + + + +``` + +运行项目后,在 [localhost:3000] 中进入首页 + +:::tip +至少到这里主题已经安装完成了,下一步就是主题的配置了,主题什么样还是要看你配的什么样子哦。 +::: diff --git a/packages/docs/index.md b/packages/docs/index.md new file mode 100644 index 0000000..76d5fd5 --- /dev/null +++ b/packages/docs/index.md @@ -0,0 +1,154 @@ +--- +layout: home + +title: Charles Click +titleTemplate: Portfolio + +hero: + name: Charles + text: + tagline: Software Developer + actions: + - theme: brand big + text: Projects + link: /pages/projects + - theme: alt big + text: Watching + link: /pages/watching + +features: + - title: 📦 Software Developer + details: I have developed several libraries and tools used across many projects. + - title: 🔩 Focused on Interconnectivity + details: I have a passion for applications that explore ways to spread information across the internet. + - title: 🔑 Keybase Verification + details: You can find my Keybase verification [here](https://keybase.io/cclick). +--- + + + + + + diff --git a/packages/docs/lang/enus.md b/packages/docs/lang/enus.md new file mode 100644 index 0000000..daeb5df --- /dev/null +++ b/packages/docs/lang/enus.md @@ -0,0 +1,4 @@ + +:::tip +Documentation coming soon... +::: diff --git a/packages/docs/lang/zhcn.md b/packages/docs/lang/zhcn.md new file mode 100644 index 0000000..7485915 --- /dev/null +++ b/packages/docs/lang/zhcn.md @@ -0,0 +1,4 @@ + +:::tip +当前文档已经是中文文档了 [首页](/) +::: diff --git a/packages/docs/mdshow/codeblock.md b/packages/docs/mdshow/codeblock.md new file mode 100644 index 0000000..19d701f --- /dev/null +++ b/packages/docs/mdshow/codeblock.md @@ -0,0 +1,102 @@ +--- +title: 代码块展示 +head: + - - meta + - name: description + content: 代码块展示 + - - meta + - name: keywords + content: code +--- + +# {{ $frontmatter.title }} + +## MD语法展示 + +使用三个 ` 符号将代码包裹其中便是展示代码块 + +
+ +**亮/暗主题切换** + +根据文档主题模式切换 + +**代码块主题 macos** + +可以在 language_key(语言标识) 后加入 `macos` + +输入内容: + +
+```java macos +
+String language = "Java"; +
+``` +
+ +展示效果: + +```java macos +String language = "Java"; +``` + +
+ +**默认主题** + +默认主题是以暗色系为主的 + +输入内容: + +
+```js +
+String language = "JS"; +
+``` +
+ +输出内容: + +```java +String language = "JS"; +``` + +
+ +**示例展示** + +- javascript ( js macos ) + +```js macos +function fun(){ + echo "Hello, World!"; +} +fun(); +``` + +- Java ( java ) + +```java +System.out.print(1); +``` + +- Python ( py macos ) + +```py macos +#!/usr/bin/env python3 +print("Hello, World!"); +``` + +- SQL ( sql ) + +```sql +select user_name from user_info +``` + +- Shell ( bash, shell ) + +```bash +echo '1' +``` diff --git a/packages/docs/mdshow/custom.md b/packages/docs/mdshow/custom.md new file mode 100644 index 0000000..bc086d7 --- /dev/null +++ b/packages/docs/mdshow/custom.md @@ -0,0 +1,58 @@ +--- +title: 自定义语法 +head: + - - meta + - name: description + content: 自定义 Markdown 语法 + - - meta + - name: keywords + content: markdown custom +--- + +# {{ $frontmatter.title }} + +## 信息框 + +```md +::: tip 使用TIPS代替 +提示信息 +::: + +::: info +信息消息 +::: + +::: warning +警告消息 +::: + +::: danger +危险消息 +::: + +::: details Details +详细信息 +::: +``` + +效果如下: + +::: tip 使用TIPS代替 +提示内容 +::: + +::: info +INFO消息 +::: + +::: warning +WARNING消息 a链接 +::: + +::: danger +DANGER消息 [md链接](./example.md) +::: + +::: details Details +详细信息 +::: diff --git a/packages/docs/mdshow/example.md b/packages/docs/mdshow/example.md new file mode 100644 index 0000000..579e1d5 --- /dev/null +++ b/packages/docs/mdshow/example.md @@ -0,0 +1,72 @@ +--- +title: 效果示例 +head: + - - meta + - name: description + content: 来看看 MD 会变成什么样子 + - - meta + - name: keywords + content: markdown example +--- + + +# Markdown 效果示例 + +-------------------- 手动分割线 -------------------- + + +# This is an h1 tag +## This is an h2 tag +### This is an h3 tag +#### This is an h4 tag +##### This is an h5 tag +###### This is an h6 tag + + +*这是斜体* +_这是斜体_ +**这是黑体** +__这是黑体__ +*斜体里加**黑体*** +**黑体里加*斜体*** + + +* Item 1 +* Item 2 + * Item 2a + * Item 2b + + +1. Item 1 +1. Item 2 +1. Item 3 + 1. Item 3a + 1. Item 3b + + +![Yaktocat的图片](/logo/vuetom-logo.png) + + +http://github.com - automatic! +[GitHub](http://github.com) + + +As Kanye West said: +> We're living the future so +> the present is our past. + + +I think you should use an +`` element here instead. + + +First Header | Second Header +------------ | ------------- +Content from cell 1 | Content from cell 2 +Content in the first column | Content in the second column + + +~~this~~ + + +😝🌟🐫✨🚶 diff --git a/packages/docs/mdshow/index.md b/packages/docs/mdshow/index.md new file mode 100644 index 0000000..c327cd7 --- /dev/null +++ b/packages/docs/mdshow/index.md @@ -0,0 +1,31 @@ +--- +title: UI组件 +head: + - - meta + - name: description + content: 各种各样的扁平化UI组件 + - - meta + - name: keywords + content: components +--- + +# {{ $frontmatter.title }} + +### `Vuetom UI` + +[ui 文档](http://ui.tomhub.cn) + +[ui github](https://github.com/lauset/vuetom-ui) + +::: tip +UI 文档正在不断完善中,请客观耐心等待一下吧T-T +::: + + +### Markdown 语法示例 + +这里将会展示在该文档中markdown所呈现的效果 + +`Example` : Markdown 语法示例 + +`Custom md` : 自定义语法 \ No newline at end of file diff --git a/packages/docs/package.json b/packages/docs/package.json new file mode 100644 index 0000000..a060e97 --- /dev/null +++ b/packages/docs/package.json @@ -0,0 +1,41 @@ +{ + "name": "@lauset/vuetom-doc", + "version": "2.3.0", + "scripts": { + "dev": "pnpm gen:lang && vitepress dev .", + "build": "pnpm gen:lang && vitepress build .", + "preview": "vitepress preview .", + "serve": "vitepress serve .", + "clean": "rimraf .vitepress/dist", + "gen:lang": "rimraf .vitepress/i18n && tsx .vitepress/build/crowdin-generate.ts", + "crowdin:list": "crowdin list project", + "crowdin:upload": "crowdin upload sources", + "crowdin:us": "crowdin download -l en-US", + "crowdin:tw": "crowdin download -l zh-TW", + "crowdin:dryrun": "crowdin download --dryrun" + }, + "dependencies": { + "@vueuse/core": "^9.6.0", + "axios": "1.2.1", + "clipboard-copy": "4.0.1", + "element-plus": "^2.2.26", + "marked": "^4.2.4", + "normalize.css": "8.0.1", + "nprogress": "0.2.0", + "prismjs": "^1.29.0", + "vue": "^3.2.45" + }, + "devDependencies": { + "@crowdin/cli": "^3.9.1", + "@types/markdown-it": "12.2.3", + "chalk": "4.1.2", + "escape-html": "1.0.3", + "lodash": "^4.17.20", + "markdown-it": "13.0.1", + "markdown-it-container": "3.0.0", + "rimraf": "^3.0.2", + "sass": "^1.56.2", + "vitepress": "^1.0.0-alpha.30", + "vitepress-theme-vuetom": "^2.3.0" + } +} diff --git a/packages/docs/pages/projects.md b/packages/docs/pages/projects.md new file mode 100644 index 0000000..12bf42b --- /dev/null +++ b/packages/docs/pages/projects.md @@ -0,0 +1 @@ +HI FROM PROJECTS \ No newline at end of file diff --git a/packages/docs/pages/watching.md b/packages/docs/pages/watching.md new file mode 100644 index 0000000..dd76a81 --- /dev/null +++ b/packages/docs/pages/watching.md @@ -0,0 +1 @@ +HI FROM WATCHING \ No newline at end of file diff --git a/packages/docs/tsconfig.json b/packages/docs/tsconfig.json new file mode 100644 index 0000000..506a647 --- /dev/null +++ b/packages/docs/tsconfig.json @@ -0,0 +1,85 @@ +{ + "compilerOptions": { + // "incremental": true, + // "composite": true, + // "tsBuildInfoFile": "./", + // "disableSourceOfProjectReferenceRedirect": true, + // "disableSolutionSearching": true, + // "disableReferencedProjectLoad": true, + "target": "ESNext", + // "lib": [], + // "jsx": "preserve", + // "experimentalDecorators": true, + // "emitDecoratorMetadata": true, + // "jsxFactory": "", + // "jsxFragmentFactory": "", + // "jsxImportSource": "", + // "reactNamespace": "", + // "noLib": true, + // "useDefineForClassFields": true, + "module": "ESNext", + // "rootDir": "./", + "moduleResolution": "node", + // "baseUrl": "./", + // "paths": {}, + // "rootDirs": [], + // "typeRoots": [], + // "types": [], + // "allowUmdGlobalAccess": true, + "resolveJsonModule": true, + // "noResolve": true, + // "allowJs": true, + // "checkJs": true, + // "maxNodeModuleJsDepth": 1, + // "declaration": true, + // "declarationMap": true, + // "emitDeclarationOnly": true, + // "sourceMap": true, + // "outFile": "./", + // "outDir": "./", + // "removeComments": true, + // "noEmit": true, + // "importHelpers": true, + // "importsNotUsedAsValues": "remove", + // "downlevelIteration": true, + // "sourceRoot": "", + // "mapRoot": "", + // "inlineSourceMap": true, + // "inlineSources": true, + // "emitBOM": true, + // "newLine": "crlf", + // "stripInternal": true, + // "noEmitHelpers": true, + // "noEmitOnError": true, + // "preserveConstEnums": true, + // "declarationDir": "./", + // "isolatedModules": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + // "preserveSymlinks": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitAny": false, + // "strictNullChecks": true, + // "strictFunctionTypes": true, + // "strictBindCallApply": true, + // "strictPropertyInitialization": true, + // "noImplicitThis": true, + // "useUnknownInCatchVariables": true, + // "alwaysStrict": true, + // "noUnusedLocals": true, + // "noUnusedParameters": true, + // "exactOptionalPropertyTypes": true, + // "noImplicitReturns": true, + // "noFallthroughCasesInSwitch": true, + // "noUncheckedIndexedAccess": true, + // "noImplicitOverride": true, + // "noPropertyAccessFromIndexSignature": true, + // "allowUnusedLabels": true, + // "allowUnreachableCode": true, + // "skipDefaultLibCheck": true, + "skipLibCheck": true + }, + "include": ["**/*", ".vitepress/**/*"], + "exclude": ["node_modules"] +} diff --git a/packages/docs/vercel.json b/packages/docs/vercel.json new file mode 100644 index 0000000..194a17a --- /dev/null +++ b/packages/docs/vercel.json @@ -0,0 +1,8 @@ +{ + "rewrites": [ + { + "source": "/vt/(.*)", + "destination": "/api/proxy" + } + ] +} \ No newline at end of file diff --git a/packages/docs/vite.config.ts b/packages/docs/vite.config.ts new file mode 100644 index 0000000..0390883 --- /dev/null +++ b/packages/docs/vite.config.ts @@ -0,0 +1,35 @@ +import path from 'path' +import { defineConfig } from 'vite' +import type { Alias } from 'vite' +import { projRoot } from './.vitepress/utils/paths' + +const alias: Alias[] = [] + +if (process.env.DOC_ENV !== 'production') { + alias.push( + { + find: /^vitepress-theme-vuetom\/docs$/, + replacement: path.resolve(projRoot, 'packages/vuetom/doc'), + }, + { + find: /^vitepress-theme-vuetom\/blog$/, + replacement: path.resolve(projRoot, 'packages/vuetom/blog'), + } + ) +} + +export default defineConfig({ + server: { + host: true, + fs: { + strict: true, + allow: [projRoot] + } + }, + resolve: { + alias, + }, + optimizeDeps: { + include: ['@vueuse/core'] + } +}) diff --git a/packages/vuetom/README.md b/packages/vuetom/README.md new file mode 100644 index 0000000..9b1604f --- /dev/null +++ b/packages/vuetom/README.md @@ -0,0 +1,158 @@ + +

logo

+ +

+ License + npm +

+ +

vitepress-theme-vuetom

+ +## 简要说明 + +1. 为 vitepress 1.x 提供的主题 +2. 提供文档与博客两种风格的主题 + +[**更新日志**](CHANGELOG.md) + +## 主题预览 + +* [**文档**风格 (*github.io*)](https://lauset.github.io/vitepress-theme-vuetom/) + +* [**文档**风格 (*vercel.app*)](https://vitepress-theme-vuetom.vercel.app/vt/) + +* [**博客**风格 (*开发中*)](https://vitepress-theme-vuetom-blog.vercel.app/myblog/) + +## 快速上手 + +* 拉取项目 + +```bash +git clone https://github.com/lauset/vitepress-theme-vuetom.git + +cd vitepress-theme-vuetom +``` + +* 安装依赖 + +```bash +pnpm install +``` + +* 启动文档示例 + +```bash +# 根目录运行 +pnpm dev:docs + +# 文档目录运行 +cd packages/docs +pnpm dev +``` + +* 启动博客示例 + +```bash +# 根目录运行 +pnpm dev:blog + +# 博客目录运行 +cd packages/blog +pnpm dev +``` + +* 根目录构建操作 + +```bash +# 清理已打包的文件 +pnpm clean:all + +# 构建主题 +pnpm build:theme + +# 构建文档 +pnpm build:docs + +# 构建博客 +pnpm build:blog +``` + +* 根目录预览操作 + +```bash +# 预览文档 +pnpm preview:docs + +# 预览博客 +pnpm preview:blog +``` + +* 发布主题包 + +```bash +cd packages/vuetom +pnpm pub +``` + +## 文档目录多语言 + +查看项目文件列表 + +```shell +crowdin:list +``` + +上传待翻译的源文件 + +```shell +crowdin:upload +``` + +查看预下载文件列表 + +```shell +crowdin:dryrun +``` + +下载en-US翻译文件 + +```shell +crowdin:us +``` + +下载zh-TW翻译文件 + +```shell +crowdin:tw +``` + +## 简单展示 + +![首页](/resources/pic01.png) + +![暗黑主题](/resources/pic02.png) + +![语法示例](/resources/pic03.png) + +![其他](/resources/pic04.png) + +## 仓库地址 + +[github](https://github.com/lauset/vitepress-theme-vuetom) + +[gitee](https://gitee.com/lauset/vitepress-theme-vuetom) + +## 感谢 + +[Vue](https://vuejs.org/) + +[Vite](https://cn.vitejs.dev/) + +[Vitepress](https://vitepress.vuejs.org/) + +[Vercel](https://vercel.com/docs) + +[ElementPlus](https://element-plus.gitee.io/zh-CN/) + +[Crowdin](https://crowdin.com/) diff --git a/packages/vuetom/blog.d.ts b/packages/vuetom/blog.d.ts new file mode 100644 index 0000000..6830d90 --- /dev/null +++ b/packages/vuetom/blog.d.ts @@ -0,0 +1,4 @@ +import { Theme } from 'vitepress' + +declare const BlogTheme: Theme +export default BlogTheme diff --git a/packages/vuetom/blog/components/Page.vue b/packages/vuetom/blog/components/Page.vue new file mode 100644 index 0000000..02b1707 --- /dev/null +++ b/packages/vuetom/blog/components/Page.vue @@ -0,0 +1,10 @@ + diff --git a/packages/vuetom/blog/components/VPAlgoliaSearchBox.vue b/packages/vuetom/blog/components/VPAlgoliaSearchBox.vue new file mode 100644 index 0000000..7e3ca20 --- /dev/null +++ b/packages/vuetom/blog/components/VPAlgoliaSearchBox.vue @@ -0,0 +1,126 @@ + + + diff --git a/packages/vuetom/blog/components/VPContent.vue b/packages/vuetom/blog/components/VPContent.vue new file mode 100644 index 0000000..aa3f568 --- /dev/null +++ b/packages/vuetom/blog/components/VPContent.vue @@ -0,0 +1,81 @@ + + + + + + + diff --git a/packages/vuetom/blog/components/VPFlyout.vue b/packages/vuetom/blog/components/VPFlyout.vue new file mode 100644 index 0000000..694930f --- /dev/null +++ b/packages/vuetom/blog/components/VPFlyout.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/packages/vuetom/blog/components/VPFooter.vue b/packages/vuetom/blog/components/VPFooter.vue new file mode 100644 index 0000000..68e1534 --- /dev/null +++ b/packages/vuetom/blog/components/VPFooter.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/packages/vuetom/blog/components/VPImage.vue b/packages/vuetom/blog/components/VPImage.vue new file mode 100644 index 0000000..abb9fb7 --- /dev/null +++ b/packages/vuetom/blog/components/VPImage.vue @@ -0,0 +1,38 @@ + + + + + + + diff --git a/packages/vuetom/blog/components/VPLink.vue b/packages/vuetom/blog/components/VPLink.vue new file mode 100644 index 0000000..9895860 --- /dev/null +++ b/packages/vuetom/blog/components/VPLink.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/packages/vuetom/blog/components/VPMenu.vue b/packages/vuetom/blog/components/VPMenu.vue new file mode 100644 index 0000000..7dad206 --- /dev/null +++ b/packages/vuetom/blog/components/VPMenu.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/packages/vuetom/blog/components/VPMenuGroup.vue b/packages/vuetom/blog/components/VPMenuGroup.vue new file mode 100644 index 0000000..167874b --- /dev/null +++ b/packages/vuetom/blog/components/VPMenuGroup.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/packages/vuetom/blog/components/VPMenuLink.vue b/packages/vuetom/blog/components/VPMenuLink.vue new file mode 100644 index 0000000..d96af7f --- /dev/null +++ b/packages/vuetom/blog/components/VPMenuLink.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/packages/vuetom/blog/components/VPSocialLink.vue b/packages/vuetom/blog/components/VPSocialLink.vue new file mode 100644 index 0000000..92d3fb1 --- /dev/null +++ b/packages/vuetom/blog/components/VPSocialLink.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/packages/vuetom/blog/components/VPSocialLinks.vue b/packages/vuetom/blog/components/VPSocialLinks.vue new file mode 100644 index 0000000..19790f0 --- /dev/null +++ b/packages/vuetom/blog/components/VPSocialLinks.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/packages/vuetom/blog/components/VTBackground.vue b/packages/vuetom/blog/components/VTBackground.vue new file mode 100644 index 0000000..4eaf0d5 --- /dev/null +++ b/packages/vuetom/blog/components/VTBackground.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/packages/vuetom/blog/components/VTFloat.vue b/packages/vuetom/blog/components/VTFloat.vue new file mode 100644 index 0000000..012eea9 --- /dev/null +++ b/packages/vuetom/blog/components/VTFloat.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/packages/vuetom/blog/components/VTHome.vue b/packages/vuetom/blog/components/VTHome.vue new file mode 100644 index 0000000..496b0dd --- /dev/null +++ b/packages/vuetom/blog/components/VTHome.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/packages/vuetom/blog/components/VTLeftButton.vue b/packages/vuetom/blog/components/VTLeftButton.vue new file mode 100644 index 0000000..8c9e5bd --- /dev/null +++ b/packages/vuetom/blog/components/VTLeftButton.vue @@ -0,0 +1,383 @@ + + + diff --git a/packages/vuetom/blog/components/article/VTDoc.vue b/packages/vuetom/blog/components/article/VTDoc.vue new file mode 100644 index 0000000..b9f213a --- /dev/null +++ b/packages/vuetom/blog/components/article/VTDoc.vue @@ -0,0 +1,11 @@ + + + diff --git a/packages/vuetom/blog/components/article/VTDocCard.vue b/packages/vuetom/blog/components/article/VTDocCard.vue new file mode 100644 index 0000000..520e506 --- /dev/null +++ b/packages/vuetom/blog/components/article/VTDocCard.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/packages/vuetom/blog/components/article/VTDocList.vue b/packages/vuetom/blog/components/article/VTDocList.vue new file mode 100644 index 0000000..f3a9789 --- /dev/null +++ b/packages/vuetom/blog/components/article/VTDocList.vue @@ -0,0 +1,18 @@ + + + + + diff --git a/packages/vuetom/blog/components/icons/VPIconAlignJustify.vue b/packages/vuetom/blog/components/icons/VPIconAlignJustify.vue new file mode 100644 index 0000000..653dab1 --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconAlignJustify.vue @@ -0,0 +1,8 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconAlignLeft.vue b/packages/vuetom/blog/components/icons/VPIconAlignLeft.vue new file mode 100644 index 0000000..8dc84ea --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconAlignLeft.vue @@ -0,0 +1,8 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconAlignRight.vue b/packages/vuetom/blog/components/icons/VPIconAlignRight.vue new file mode 100644 index 0000000..16cbb3c --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconAlignRight.vue @@ -0,0 +1,8 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconArrowLeft.vue b/packages/vuetom/blog/components/icons/VPIconArrowLeft.vue new file mode 100644 index 0000000..3f65b86 --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconArrowLeft.vue @@ -0,0 +1,7 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconArrowRight.vue b/packages/vuetom/blog/components/icons/VPIconArrowRight.vue new file mode 100644 index 0000000..ed89263 --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconArrowRight.vue @@ -0,0 +1,7 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconChevronDown.vue b/packages/vuetom/blog/components/icons/VPIconChevronDown.vue new file mode 100644 index 0000000..d72f4ee --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconChevronDown.vue @@ -0,0 +1,5 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconChevronLeft.vue b/packages/vuetom/blog/components/icons/VPIconChevronLeft.vue new file mode 100644 index 0000000..013eb7f --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconChevronLeft.vue @@ -0,0 +1,5 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconChevronRight.vue b/packages/vuetom/blog/components/icons/VPIconChevronRight.vue new file mode 100644 index 0000000..cf72418 --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconChevronRight.vue @@ -0,0 +1,5 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconChevronUp.vue b/packages/vuetom/blog/components/icons/VPIconChevronUp.vue new file mode 100644 index 0000000..0b6a873 --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconChevronUp.vue @@ -0,0 +1,5 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconDiscord.vue b/packages/vuetom/blog/components/icons/VPIconDiscord.vue new file mode 100644 index 0000000..5917457 --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconDiscord.vue @@ -0,0 +1,5 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconEdit.vue b/packages/vuetom/blog/components/icons/VPIconEdit.vue new file mode 100644 index 0000000..f30a62d --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconEdit.vue @@ -0,0 +1,6 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconExternalLink.vue b/packages/vuetom/blog/components/icons/VPIconExternalLink.vue new file mode 100644 index 0000000..7245990 --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconExternalLink.vue @@ -0,0 +1,13 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconFacebook.vue b/packages/vuetom/blog/components/icons/VPIconFacebook.vue new file mode 100644 index 0000000..6d9b674 --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconFacebook.vue @@ -0,0 +1,5 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconGitHub.vue b/packages/vuetom/blog/components/icons/VPIconGitHub.vue new file mode 100644 index 0000000..ef59cda --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconGitHub.vue @@ -0,0 +1,5 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconHeart.vue b/packages/vuetom/blog/components/icons/VPIconHeart.vue new file mode 100644 index 0000000..d408828 --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconHeart.vue @@ -0,0 +1,5 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconInstagram.vue b/packages/vuetom/blog/components/icons/VPIconInstagram.vue new file mode 100644 index 0000000..2b77d52 --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconInstagram.vue @@ -0,0 +1,5 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconLanguages.vue b/packages/vuetom/blog/components/icons/VPIconLanguages.vue new file mode 100644 index 0000000..71a728f --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconLanguages.vue @@ -0,0 +1,9 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconLinkedIn.vue b/packages/vuetom/blog/components/icons/VPIconLinkedIn.vue new file mode 100644 index 0000000..75b321f --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconLinkedIn.vue @@ -0,0 +1,5 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconMinus.vue b/packages/vuetom/blog/components/icons/VPIconMinus.vue new file mode 100644 index 0000000..e022919 --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconMinus.vue @@ -0,0 +1,5 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconMinusSquare.vue b/packages/vuetom/blog/components/icons/VPIconMinusSquare.vue new file mode 100644 index 0000000..266ae3d --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconMinusSquare.vue @@ -0,0 +1,6 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconMoon.vue b/packages/vuetom/blog/components/icons/VPIconMoon.vue new file mode 100644 index 0000000..a9b205c --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconMoon.vue @@ -0,0 +1,5 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconMoreHorizontal.vue b/packages/vuetom/blog/components/icons/VPIconMoreHorizontal.vue new file mode 100644 index 0000000..6fa7fca --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconMoreHorizontal.vue @@ -0,0 +1,7 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconPlus.vue b/packages/vuetom/blog/components/icons/VPIconPlus.vue new file mode 100644 index 0000000..74d9f69 --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconPlus.vue @@ -0,0 +1,5 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconPlusSquare.vue b/packages/vuetom/blog/components/icons/VPIconPlusSquare.vue new file mode 100644 index 0000000..88e5b5c --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconPlusSquare.vue @@ -0,0 +1,6 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconSlack.vue b/packages/vuetom/blog/components/icons/VPIconSlack.vue new file mode 100644 index 0000000..9a1896c --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconSlack.vue @@ -0,0 +1,5 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconSun.vue b/packages/vuetom/blog/components/icons/VPIconSun.vue new file mode 100644 index 0000000..8ecb25b --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconSun.vue @@ -0,0 +1,13 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconTwitter.vue b/packages/vuetom/blog/components/icons/VPIconTwitter.vue new file mode 100644 index 0000000..5325040 --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconTwitter.vue @@ -0,0 +1,5 @@ + diff --git a/packages/vuetom/blog/components/icons/VPIconYouTube.vue b/packages/vuetom/blog/components/icons/VPIconYouTube.vue new file mode 100644 index 0000000..f5bc35a --- /dev/null +++ b/packages/vuetom/blog/components/icons/VPIconYouTube.vue @@ -0,0 +1,5 @@ + diff --git a/packages/vuetom/blog/components/sidebar/VTSidebar.vue b/packages/vuetom/blog/components/sidebar/VTSidebar.vue new file mode 100644 index 0000000..0efa31d --- /dev/null +++ b/packages/vuetom/blog/components/sidebar/VTSidebar.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/packages/vuetom/blog/components/sidebar/VTSidebarBottom.vue b/packages/vuetom/blog/components/sidebar/VTSidebarBottom.vue new file mode 100644 index 0000000..fde1bc6 --- /dev/null +++ b/packages/vuetom/blog/components/sidebar/VTSidebarBottom.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/packages/vuetom/blog/components/sidebar/VTSidebarLink.vue b/packages/vuetom/blog/components/sidebar/VTSidebarLink.vue new file mode 100644 index 0000000..787263c --- /dev/null +++ b/packages/vuetom/blog/components/sidebar/VTSidebarLink.vue @@ -0,0 +1,24 @@ + + + diff --git a/packages/vuetom/blog/components/sidebar/VTSidebarTop.vue b/packages/vuetom/blog/components/sidebar/VTSidebarTop.vue new file mode 100644 index 0000000..ba82803 --- /dev/null +++ b/packages/vuetom/blog/components/sidebar/VTSidebarTop.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/packages/vuetom/blog/components/switch/VPSwitch.vue b/packages/vuetom/blog/components/switch/VPSwitch.vue new file mode 100644 index 0000000..f26af32 --- /dev/null +++ b/packages/vuetom/blog/components/switch/VPSwitch.vue @@ -0,0 +1,66 @@ + + + diff --git a/packages/vuetom/blog/components/switch/VPSwitchAppearance.vue b/packages/vuetom/blog/components/switch/VPSwitchAppearance.vue new file mode 100644 index 0000000..27ed79d --- /dev/null +++ b/packages/vuetom/blog/components/switch/VPSwitchAppearance.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/packages/vuetom/blog/composables/flyout.ts b/packages/vuetom/blog/composables/flyout.ts new file mode 100644 index 0000000..4d02cf1 --- /dev/null +++ b/packages/vuetom/blog/composables/flyout.ts @@ -0,0 +1,60 @@ +import { + Ref, ref, watch, readonly, onUnmounted +} from 'vue' + +interface UseFlyoutOptions { + el: Ref + onFocus?(): void + onBlur?(): void +} + +export const focusedElement = ref() + +let active = false +let listeners = 0 + +export function useFlyout(options: UseFlyoutOptions) { + const focus = ref(false) + + if (typeof window !== 'undefined') { + !active && activateFocusTracking() + + listeners++ + + const unwatch = watch(focusedElement, (el) => { + if (el === options.el.value || options.el.value?.contains(el as Node)) { + focus.value = true + options.onFocus?.() + } else { + focus.value = false + options.onBlur?.() + } + }) + + onUnmounted(() => { + unwatch() + + listeners-- + + if (!listeners) { + deactivateFocusTracking() + } + }) + } + + return readonly(focus) +} + +function activateFocusTracking() { + document.addEventListener('focusin', handleFocusIn) + active = true + focusedElement.value = document.activeElement as HTMLElement +} + +function deactivateFocusTracking() { + document.removeEventListener('focusin', handleFocusIn) +} + +function handleFocusIn() { + focusedElement.value = document.activeElement as HTMLElement +} diff --git a/packages/vuetom/blog/composables/homebg.ts b/packages/vuetom/blog/composables/homebg.ts new file mode 100644 index 0000000..0e0b3d2 --- /dev/null +++ b/packages/vuetom/blog/composables/homebg.ts @@ -0,0 +1,77 @@ +import { useData } from 'vitepress' + +export function useHomeBg() { + const { site, theme } = useData() + const { base } = site.value + const { + logoImg, bgImg + } = theme.value + let { bgColor, flashColor, bgOpacity } = theme.value + let baseUrl = base + let bgStyle = '' + let bgImgSrc = '' + let bgInnerOpacity = 0.3 + // let ftStyle = 'rgba(255,255,255,0.8)' + + if (base === '/' || base.endsWith('/')) { + baseUrl = base.substring(0, base.length - 1) + } + + // hero logo + const homeLogoSrc = `${baseUrl}/${logoImg}`.replaceAll('//', '/') + + // feat color check + // if (typeof featuresColor === 'string') { + // ftStyle = featuresColor + // } else if (typeof featuresColor === 'object') { + // if (featuresColor.length >= 2) { + // ftStyle = ` + // linear-gradient(to right, + // ${featuresColor[0]}, + // ${featuresColor[1]} + // ) + // ` + // } + // } + + // 背景色默认黑色 + if (bgColor === undefined) bgColor = '0,0,0' + // 背景图透明度 + if (bgOpacity === undefined) bgOpacity = 0 + if (flashColor === undefined) flashColor = ['0,0,0', '0,0,0'] + if (typeof flashColor === 'string') flashColor = [flashColor, flashColor] + + if (bgImg) { + bgImgSrc = `${baseUrl}/${bgImg}`.replaceAll('//', '/') + bgInnerOpacity = bgOpacity - 0.3 <= 0 ? 0 : bgOpacity - 0.3 + bgStyle = ` + -webkit-linear-gradient(top, + rgba(${bgColor},${bgOpacity}) 0%, + rgba(${bgColor},${bgInnerOpacity}) 20%, + rgba(${bgColor},${bgInnerOpacity}) 80%, + rgba(${bgColor},${bgOpacity}) 100% + ), + -webkit-linear-gradient(left, + rgba(${bgColor},${bgOpacity}) 0%, + rgba(${bgColor},${bgInnerOpacity}) 20%, + rgba(${bgColor},${bgInnerOpacity}) 80%, + rgba(${bgColor},${bgOpacity}) 100%), + url(${bgImgSrc}) + ` + } + + return { + homeLogoSrc, + bgStyle, + bgImgSrc + } +} + +export function useHomeParallax() { + const { theme } = useData() + // const { base } = site.value + const { parallaxEnable } = theme.value + return { + parallaxEnable + } +} \ No newline at end of file diff --git a/packages/vuetom/blog/composables/nav.ts b/packages/vuetom/blog/composables/nav.ts new file mode 100644 index 0000000..ba3c8c1 --- /dev/null +++ b/packages/vuetom/blog/composables/nav.ts @@ -0,0 +1,69 @@ +import type { DefaultTheme } from 'vitepress/theme' +import { ref, computed, watch } from 'vue' +import { useData, useRoute } from 'vitepress' + +export function useNav() { + const isScreenOpen = ref(false) + + function openScreen() { + isScreenOpen.value = true + window.addEventListener('resize', closeScreenOnTabletWindow) + } + + function closeScreen() { + isScreenOpen.value = false + window.removeEventListener('resize', closeScreenOnTabletWindow) + } + + function toggleScreen() { + isScreenOpen.value ? closeScreen() : openScreen() + } + + /** + * Close screen when the user resizes the window wider than tablet size. + */ + function closeScreenOnTabletWindow() { + window.outerWidth >= 768 && closeScreen() + } + + const route = useRoute() + watch(() => route.path, closeScreen) + + return { + isScreenOpen, + openScreen, + closeScreen, + toggleScreen + } +} + +export function useLanguageLinks() { + const { site, localePath, theme } = useData() + + return computed(() => { + const { langs } = site.value + const localePaths = Object.keys(langs) + + // one language + if (localePaths.length < 2) { + return null + } + + const route = useRoute() + + // intentionally remove the leading slash because each locale has one + const currentPath = route.path.replace(localePath.value, '') + + const candidates = localePaths.map((localePath) => ({ + text: langs[localePath].label, + link: `${localePath}${currentPath}` + })) + + const selectText = theme.value.selectText || 'Languages' + + return { + text: selectText, + items: candidates + } as DefaultTheme.NavItemWithChildren + }) +} diff --git a/packages/vuetom/blog/composables/sidebar.ts b/packages/vuetom/blog/composables/sidebar.ts new file mode 100644 index 0000000..3defb87 --- /dev/null +++ b/packages/vuetom/blog/composables/sidebar.ts @@ -0,0 +1,77 @@ +import { + computed, onMounted, onUnmounted, Ref, ref, watchEffect +} from 'vue' +import { useData, useRoute } from 'vitepress' +import { getSidebar } from '../support/sidebar.js' + +export function useSidebar() { + const route = useRoute() + const { theme, frontmatter } = useData() + + const isOpen = ref(false) + + const sidebar = computed(() => { + const sidebarConfig = theme.value.sidebar + return sidebarConfig ? getSidebar(sidebarConfig, route.path) : [] + }) + + const hasSidebar = computed(() => ( + frontmatter.value.sidebar !== false + && sidebar.value.length > 0 + && frontmatter.value.layout !== 'home' + && frontmatter.value.layout !== 'doc' + )) + + function open() { + isOpen.value = true + } + + function close() { + isOpen.value = false + } + + function toggle() { + isOpen.value ? close() : open() + } + + return { + isOpen, + sidebar, + hasSidebar, + open, + close, + toggle + } +} + +/** + * a11y: cache the element that opened the Sidebar (the menu button) then + * focus that button again when Menu is closed with Escape key. + */ +export function useCloseSidebarOnEscape( + isOpen: Ref, + close: () => void +) { + let triggerElement: HTMLButtonElement | undefined + + watchEffect(() => { + triggerElement = isOpen.value + ? (document.activeElement as HTMLButtonElement) + : undefined + }) + + onMounted(() => { + window.addEventListener('keyup', onEscape) + }) + + onUnmounted(() => { + window.removeEventListener('keyup', onEscape) + }) + + function onEscape(e: KeyboardEvent) { + if (e.key === 'Escape' && isOpen.value) { + close() + triggerElement?.focus() + } + } +} diff --git a/packages/vuetom/blog/fonts/inter-cyrillic-ext.woff2 b/packages/vuetom/blog/fonts/inter-cyrillic-ext.woff2 new file mode 100644 index 0000000..f272875 Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-cyrillic-ext.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-cyrillic.woff2 b/packages/vuetom/blog/fonts/inter-cyrillic.woff2 new file mode 100644 index 0000000..de6a128 Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-cyrillic.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-greek-ext.woff2 b/packages/vuetom/blog/fonts/inter-greek-ext.woff2 new file mode 100644 index 0000000..701afd3 Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-greek-ext.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-greek.woff2 b/packages/vuetom/blog/fonts/inter-greek.woff2 new file mode 100644 index 0000000..74125bb Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-greek.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-italic-cyrillic-ext.woff2 b/packages/vuetom/blog/fonts/inter-italic-cyrillic-ext.woff2 new file mode 100644 index 0000000..2a68729 Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-italic-cyrillic-ext.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-italic-cyrillic.woff2 b/packages/vuetom/blog/fonts/inter-italic-cyrillic.woff2 new file mode 100644 index 0000000..f640351 Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-italic-cyrillic.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-italic-greek-ext.woff2 b/packages/vuetom/blog/fonts/inter-italic-greek-ext.woff2 new file mode 100644 index 0000000..0021896 Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-italic-greek-ext.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-italic-greek.woff2 b/packages/vuetom/blog/fonts/inter-italic-greek.woff2 new file mode 100644 index 0000000..71c265f Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-italic-greek.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-italic-latin-ext.woff2 b/packages/vuetom/blog/fonts/inter-italic-latin-ext.woff2 new file mode 100644 index 0000000..9c1b944 Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-italic-latin-ext.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-italic-latin.woff2 b/packages/vuetom/blog/fonts/inter-italic-latin.woff2 new file mode 100644 index 0000000..01fcf20 Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-italic-latin.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-italic-vietnamese.woff2 b/packages/vuetom/blog/fonts/inter-italic-vietnamese.woff2 new file mode 100644 index 0000000..e4f788e Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-italic-vietnamese.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-latin-ext.woff2 b/packages/vuetom/blog/fonts/inter-latin-ext.woff2 new file mode 100644 index 0000000..2fa148c Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-latin-ext.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-latin.woff2 b/packages/vuetom/blog/fonts/inter-latin.woff2 new file mode 100644 index 0000000..1a4cd42 Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-latin.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-roman-cyrillic-ext.woff2 b/packages/vuetom/blog/fonts/inter-roman-cyrillic-ext.woff2 new file mode 100644 index 0000000..28593cc Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-roman-cyrillic-ext.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-roman-cyrillic.woff2 b/packages/vuetom/blog/fonts/inter-roman-cyrillic.woff2 new file mode 100644 index 0000000..a20adc1 Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-roman-cyrillic.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-roman-greek-ext.woff2 b/packages/vuetom/blog/fonts/inter-roman-greek-ext.woff2 new file mode 100644 index 0000000..e3b0be7 Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-roman-greek-ext.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-roman-greek.woff2 b/packages/vuetom/blog/fonts/inter-roman-greek.woff2 new file mode 100644 index 0000000..f790e04 Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-roman-greek.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-roman-latin-ext.woff2 b/packages/vuetom/blog/fonts/inter-roman-latin-ext.woff2 new file mode 100644 index 0000000..715bd90 Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-roman-latin-ext.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-roman-latin.woff2 b/packages/vuetom/blog/fonts/inter-roman-latin.woff2 new file mode 100644 index 0000000..a540b7a Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-roman-latin.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-roman-vietnamese.woff2 b/packages/vuetom/blog/fonts/inter-roman-vietnamese.woff2 new file mode 100644 index 0000000..5a9f9cb Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-roman-vietnamese.woff2 differ diff --git a/packages/vuetom/blog/fonts/inter-vietnamese.woff2 b/packages/vuetom/blog/fonts/inter-vietnamese.woff2 new file mode 100644 index 0000000..c2ffbb0 Binary files /dev/null and b/packages/vuetom/blog/fonts/inter-vietnamese.woff2 differ diff --git a/packages/vuetom/blog/index.ts b/packages/vuetom/blog/index.ts new file mode 100644 index 0000000..ebb80d6 --- /dev/null +++ b/packages/vuetom/blog/index.ts @@ -0,0 +1,32 @@ +// vitepress +import 'vitepress/dist/client/theme-default/styles/fonts.css' +import 'vitepress/dist/client/theme-default/styles/vars.css' +import 'vitepress/dist/client/theme-default/styles/base.css' +import 'vitepress/dist/client/theme-default/styles/utils.css' +import 'vitepress/dist/client/theme-default/styles/components/custom-block.css' +import 'vitepress/dist/client/theme-default/styles/components/vp-code.css' +import 'vitepress/dist/client/theme-default/styles/components/vp-doc.css' +import 'vitepress/dist/client/theme-default/styles/components/vp-sponsor.css' + +// common styles +import '../styles/index.scss' +import '../styles/rewrite/index.scss' + +// icon +import '../styles/fa/font-awesome.css' + +// tailwind +import '../styles/tailwind/d.css' + +// blog styles +import './styles/blog.css' + +import Layout from './layouts/Layout.vue' +import NotFound from './layouts/NotFound.vue' + +const BlogTheme = { + Layout, + NotFound +} + +export default BlogTheme diff --git a/packages/vuetom/blog/layouts/Layout.vue b/packages/vuetom/blog/layouts/Layout.vue new file mode 100644 index 0000000..42665f9 --- /dev/null +++ b/packages/vuetom/blog/layouts/Layout.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/packages/vuetom/blog/layouts/NotFound.vue b/packages/vuetom/blog/layouts/NotFound.vue new file mode 100644 index 0000000..8f16180 --- /dev/null +++ b/packages/vuetom/blog/layouts/NotFound.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/packages/vuetom/blog/shared.ts b/packages/vuetom/blog/shared.ts new file mode 100644 index 0000000..978f241 --- /dev/null +++ b/packages/vuetom/blog/shared.ts @@ -0,0 +1,11 @@ +export const EXTERNAL_URL_RE = /^https?:/i +export const APPEARANCE_KEY = 'vitepress-theme-appearance' +export const inBrowser = typeof window !== 'undefined' +export const notFoundPageData = { + relativePath: '', + title: '404', + description: 'Not Found', + headers: [], + frontmatter: {}, + lastUpdated: 0 +} diff --git a/packages/vuetom/blog/styles/blog.css b/packages/vuetom/blog/styles/blog.css new file mode 100644 index 0000000..050dd6f --- /dev/null +++ b/packages/vuetom/blog/styles/blog.css @@ -0,0 +1,16 @@ +:root { + --vt-radius: 0.5rem; + + /* sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)', + md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)', + lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)', + xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)', + '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)', + '3xl': '0 35px 60px -15px rgba(0, 0, 0, 0.3)',*/ + /* --vt-shadow: 'inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)'; */ + /* --vt-shadow: 'none'; */ + --vt-shadow: 0 35px 60px -15px rgba(0, 0, 0, 0.3); +} +body { + cursor: url(https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/Hexo/img/default.cur), default; +} \ No newline at end of file diff --git a/packages/vuetom/blog/support/sidebar.ts b/packages/vuetom/blog/support/sidebar.ts new file mode 100644 index 0000000..397c4e5 --- /dev/null +++ b/packages/vuetom/blog/support/sidebar.ts @@ -0,0 +1,42 @@ +import type { DefaultTheme } from 'vitepress/theme' +import { ensureStartingSlash } from './utils.js' + +/** + * Get the `Sidebar` from sidebar option. This method will ensure to get correct + * sidebar config from `MultiSideBarConfig` with various path combinations such + * as matching `guide/` and `/guide/`. If no matching config was found, it will + * return empty array. + */ +export function getSidebar( + sidebar: DefaultTheme.Sidebar, + path: string +): DefaultTheme.SidebarGroup[] { + if (Array.isArray(sidebar)) { + return sidebar + } + + path = ensureStartingSlash(path) + + for (const dir in sidebar) { + // make sure the multi sidebar key starts with slash too + if (path.startsWith(ensureStartingSlash(dir))) { + return sidebar[dir] + } + } + + return [] +} + +export function getFlatSideBarLinks( + sidebar: DefaultTheme.SidebarGroup[] +): DefaultTheme.SidebarItem[] { + const links: DefaultTheme.SidebarItem[] = [] + + for (const group of sidebar) { + for (const link of group.items) { + links.push(link) + } + } + + return links +} diff --git a/packages/vuetom/blog/support/utils.ts b/packages/vuetom/blog/support/utils.ts new file mode 100644 index 0000000..421a49a --- /dev/null +++ b/packages/vuetom/blog/support/utils.ts @@ -0,0 +1,90 @@ +/** @format */ + +import { ref } from 'vue' +import { withBase } from 'vitepress' +import { EXTERNAL_URL_RE } from '../shared.js' + +export const HASH_RE = /#.*$/ +export const EXT_RE = /(index)?\.(md|html)$/ + +const inBrowser = typeof window !== 'undefined' +const hashRef = ref(inBrowser ? location.hash : '') + +export function isExternal(path: string): boolean { + return EXTERNAL_URL_RE.test(path) +} + +export function throttleAndDebounce(fn: () => void, delay: number): () => void { + let timeout: any + let called = false + + return () => { + if (timeout) { + clearTimeout(timeout) + } + + if (!called) { + fn() + called = true + setTimeout(() => { + called = false + }, delay) + } else { + timeout = setTimeout(fn, delay) + } + } +} + +export function isActive( + currentPath: string, + matchPath?: string, + asRegex: boolean = false +): boolean { + if (matchPath === undefined) { + return false + } + + currentPath = normalize(`/${currentPath}`) + + if (asRegex) { + return new RegExp(matchPath).test(currentPath) + } + + if (normalize(matchPath) !== currentPath) { + return false + } + + const hashMatch = matchPath.match(HASH_RE) + + if (hashMatch) { + return hashRef.value === hashMatch[0] + } + + return true +} + +export function ensureStartingSlash(path: string): string { + return /^\//.test(path) ? path : `/${path}` +} + +export function normalize(path: string): string { + return decodeURI(path).replace(HASH_RE, '').replace(EXT_RE, '') +} + +export function normalizeLink(url: string): string { + if (isExternal(url)) { + return url + } + + const { pathname, search, hash } = new URL(url, 'http://example.com') + + const normalizedPath = pathname.endsWith('/') || pathname.endsWith('.html') + ? url + : `${pathname.replace(/(\.md)?$/, '.html')}${search}${hash}` + + return withBase(normalizedPath) +} + +export function fmt(inputTime: string) { + return inputTime.replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '') +} diff --git a/packages/vuetom/doc/components/VTLayout.vue b/packages/vuetom/doc/components/VTLayout.vue new file mode 100644 index 0000000..d42344c --- /dev/null +++ b/packages/vuetom/doc/components/VTLayout.vue @@ -0,0 +1,82 @@ + + + diff --git a/packages/vuetom/doc/composables/home.ts b/packages/vuetom/doc/composables/home.ts new file mode 100644 index 0000000..c04d8de --- /dev/null +++ b/packages/vuetom/doc/composables/home.ts @@ -0,0 +1,144 @@ +import { useData } from 'vitepress' + +export function useFlash() { + const { site, theme } = useData() + const { base } = site.value + let { flashEnable, flashColor, bgImg } = theme.value + if (flashColor === undefined) flashColor = ['0,0,0', '0,0,0'] + if (typeof flashColor === 'string') flashColor = [flashColor, flashColor] + let flashStyle = '' + + if (bgImg && flashEnable) { + const bgImgSrc = (`${base}${bgImg}`).replaceAll('//', '/') + flashStyle = ` + -webkit-linear-gradient(top, + rgba(${flashColor[0]}, 0.8) 0%, + rgba(${flashColor[0]}, 0.2) 20%, + rgba(${flashColor[0]}, 0) 80%, + rgba(${flashColor[0]}, 0) 100% + ), + -webkit-linear-gradient(left, + rgba(${flashColor[1]}, 0) 0%, + rgba(${flashColor[1]}, 0) 20%, + rgba(${flashColor[1]}, 0.2) 80%, + rgba(${flashColor[1]}, 0.8) 100%), + url(${bgImgSrc}) + ` + } + + return { + flashEnable, + flashStyle, + } +} + +export function useBackground() { + const { site, theme } = useData() + const { base } = site.value + let { bgImg, bgColor, bgOpacity } = theme.value + let bgEnable = false + let bgStyle = '' + let bgInnerOpacity = 0.3 + if (bgImg) bgEnable = true + if (bgColor === undefined) bgColor = '0,0,0' + if (bgOpacity === undefined) bgOpacity = 0.6 + bgInnerOpacity = bgOpacity - 0.3 <= 0 ? 0 : bgOpacity - 0.3 + if (bgEnable) { + const bgImgSrc = (`${base}${bgImg}`).replaceAll('//', '/') + bgStyle = ` + -webkit-linear-gradient(top, + rgba(${bgColor},${bgOpacity}) 0%, + rgba(${bgColor},${bgInnerOpacity}) 20%, + rgba(${bgColor},${bgInnerOpacity}) 80%, + rgba(${bgColor},${bgOpacity}) 100% + ), + -webkit-linear-gradient(left, + rgba(${bgColor},${bgOpacity}) 0%, + rgba(${bgColor},${bgInnerOpacity}) 20%, + rgba(${bgColor},${bgInnerOpacity}) 80%, + rgba(${bgColor},${bgOpacity}) 100%), + url(${bgImgSrc}) + ` + } + return { + bgEnable, + bgStyle, + } +} + +export function useFeatures() { + const { theme } = useData() + let { featuresColor } = theme.value + let ftStyle = 'rgba(255,255,255,0.8)' + if (typeof featuresColor === 'string') { + ftStyle = featuresColor + } else if (typeof featuresColor === 'object') { + if (featuresColor.length >= 2) { + ftStyle = ` + linear-gradient(to right, + ${featuresColor[0]}, + ${featuresColor[1]} + ) + ` + } + } + return { + ftStyle, + } +} + +export function useHeroMove() { + const { theme } = useData() + const { parallaxEnable } = theme.value + function heroMove(e: any) { + document + .querySelectorAll( + ` + .VPHomeHero .name, + .VPHomeHero .text, + .VPHomeHero .tagline, + .VPHomeHero .VPButton, + .VPHome .VPHomeFeatures + ` + ) + .forEach((h: Element) => { + const hd: any = h + const speed: any = hd.getAttribute('data-speed') || 10 + let x = (window.innerWidth - e.pageX * speed) / 100 + let y = (window.innerHeight - e.pageY * speed) / 100 + switch (hd.className.substring(0, 3).toUpperCase()) { + case 'VPF': + x /= 8 + y /= 8 + break + case 'TAG': + x /= 6 + y /= 6 + break + case 'TEX': + x /= 4 + y /= 4 + break + case 'VPB': + x /= 2 + y /= 2 + break + case 'NAM': + x /= 1 + y /= 1 + break + default: + break + } + const hds = hd?.style + if (hds) { + hds.transform = `translateX(${x}px) translateY(${y}px)` + hds.transition = 'transform 0.2s ease-out' + } + }) + } + return { + parallaxEnable, + heroMove, + } +} diff --git a/packages/vuetom/doc/index.ts b/packages/vuetom/doc/index.ts new file mode 100644 index 0000000..8b64a32 --- /dev/null +++ b/packages/vuetom/doc/index.ts @@ -0,0 +1,18 @@ +// vitepress styles ==> /dist/client/theme-default/styles +import vitepressTheme from 'vitepress/theme' + +// for dev (prod should import .css) +import '../styles/index.scss' +import '../styles/rewrite/index.scss' + +import { Theme } from 'vitepress' +import VTLayout from './components/VTLayout.vue' + +const DocsTheme: Theme = { + ...vitepressTheme, + Layout: VTLayout +} + +export * from 'vitepress/theme' + +export default DocsTheme diff --git a/packages/vuetom/docs.d.ts b/packages/vuetom/docs.d.ts new file mode 100644 index 0000000..ccdb7f8 --- /dev/null +++ b/packages/vuetom/docs.d.ts @@ -0,0 +1,5 @@ +import { Theme } from 'vitepress' + +declare const DocsTheme: Theme +export * from 'vitepress/theme' +export default DocsTheme diff --git a/packages/vuetom/gulpfile.ts b/packages/vuetom/gulpfile.ts new file mode 100644 index 0000000..4285b22 --- /dev/null +++ b/packages/vuetom/gulpfile.ts @@ -0,0 +1,99 @@ +import path from 'path' +import { + src, dest, series, parallel +} from 'gulp' +import gulpSass from 'gulp-sass' +import dartSass from 'sass' +import autoprefixer from 'gulp-autoprefixer' +import cleanCSS from 'gulp-clean-css' +import rename from 'gulp-rename' + +const distFolder = path.resolve(__dirname, './dist/styles') +const distRewriteFolder = path.resolve(__dirname, './dist/styles/rewrite') + +function buildRewriteStyles() { + const sass = gulpSass(dartSass) + const noPrefixFile = /(index|main)/ + return src(path.resolve(__dirname, 'styles/rewrite/*.scss')) + .pipe(sass.sync()) + .pipe( + autoprefixer({ + cascade: true // 是否美化属性值 默认 true + }) + ) + .pipe( + cleanCSS( + { + compatibility: 'ie9', // 压缩兼容模式IE9 + format: 'beautify' + }, + (details) => { + console.log( + `${details.name}: ${details.stats.originalSize / 1000} KB -> ${ + details.stats.minifiedSize / 1000 + } KB` + ) + } + ) + ) + .pipe( + rename((file) => { + if (!noPrefixFile.test(file.basename)) { + file.basename = `vt-${file.basename}` + } + }) + ) + .pipe(dest(distRewriteFolder)) +} + +function buildCommonStyles() { + const sass = gulpSass(dartSass) + const noPrefixFile = /(index|main)/ + return src(path.resolve(__dirname, 'styles/*.scss')) + .pipe(sass.sync()) + .pipe(autoprefixer({ cascade: true })) + .pipe( + cleanCSS( + { + compatibility: 'ie9', + format: 'beautify' + }, + (details) => { + console.log( + `${details.name}: ${details.stats.originalSize / 1000} KB -> ${ + details.stats.minifiedSize / 1000 + } KB` + ) + } + ) + ) + .pipe( + rename((file) => { + if (!noPrefixFile.test(file.basename)) { + file.basename = `vt-${file.basename}` + } + }) + ) + .pipe(dest(distFolder)) +} + +/** + * 移动图标、字体、tailwind样式文件至dist对应目录下 + */ +function copyOtherResource() { + return src([ + path.resolve(__dirname, 'styles/fa'), + path.resolve(__dirname, 'styles/fonts'), + path.resolve(__dirname, 'styles/tailwind') + ]).pipe( + dest(distFolder) + ) +} + +export const build = parallel( + buildRewriteStyles, + buildCommonStyles, + copyOtherResource +) + +export default build diff --git a/packages/vuetom/index.ts b/packages/vuetom/index.ts new file mode 100644 index 0000000..2e1d2af --- /dev/null +++ b/packages/vuetom/index.ts @@ -0,0 +1,4 @@ +import DocsTheme from './doc/index.js' + +export * from './doc/index.js' +export default DocsTheme diff --git a/packages/vuetom/package.json b/packages/vuetom/package.json new file mode 100644 index 0000000..50a5a3a --- /dev/null +++ b/packages/vuetom/package.json @@ -0,0 +1,82 @@ +{ + "name": "vitepress-theme-vuetom", + "version": "2.3.0", + "description": "A Vitepress Theme, Have blog and document styles", + "type": "module", + "packageManager": "pnpm@7.9.0", + "main": "./dist/index.js", + "module": "./dist/index.js", + "types": "./types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "import": "./dist/index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json", + "./docs": { + "types": "./docs.d.ts", + "default": "./dist/doc/index.js" + }, + "./blog": { + "types": "./blog.d.ts", + "default": "./dist/blog/index.js" + } + }, + "scripts": { + "pub": "npm publish", + "clean": "rimraf ./dist", + "build": "pnpm clean && pnpm tailwind:css && pnpm build:scss && pnpm build:vt", + "build:vt": "tsc -p . && cross-env NODE_ENV=build node ../../scripts/build-vt", + "build:scss": "gulp --require @esbuild-kit/cjs-loader -f gulpfile.ts", + "tailwind:css": "npx tailwindcss -i ./styles/tailwind/s.css -o ./styles/tailwind/d.css", + "tailwind:watch": "npx tailwindcss -i ./styles/tailwind/s.css -o ./styles/tailwind/d.css --watch" + }, + "engines": { + "node": ">=16.0.0" + }, + "files": [ + "dist", + "types", + "blog.d.ts", + "docs.d.ts", + "package.json", + "README.md" + ], + "keywords": [ + "vitepress", + "theme" + ], + "author": "lauset", + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/lauset/vitepress-theme-vuetom.git" + }, + "bugs": { + "url": "https://github.com/lauset/vitepress-theme-vuetom/issues" + }, + "homepage": "https://github.com/lauset/vitepress-theme-vuetom#readme", + "devDependencies": { + "@esbuild-kit/cjs-loader": "^2.2.1", + "@types/nprogress": "^0.2.0", + "autoprefixer": "^10.4.13", + "postcss": "^8.4.19", + "tailwindcss": "^3.2.4" + }, + "dependencies": { + "@docsearch/css": "^3.3.0", + "@docsearch/js": "^3.3.0", + "@vueuse/components": "^9.6.0", + "@vueuse/core": "^9.6.0", + "body-scroll-lock": "^4.0.0-beta.0", + "nprogress": "^0.2.0", + "shiki": "^0.11.1", + "vite": "^3.2.5", + "vitepress": "1.0.0-alpha.30", + "vue": "^3.2.45" + }, + "peerDependencies": { + "vitepress": "1.0.0-alpha.30" + } +} diff --git a/packages/vuetom/postcss.config.cjs b/packages/vuetom/postcss.config.cjs new file mode 100644 index 0000000..492fdf7 --- /dev/null +++ b/packages/vuetom/postcss.config.cjs @@ -0,0 +1,7 @@ +/* eslint-disable global-require */ +module.exports = { + plugins: [ + require('postcss-import'), + require('tailwindcss') + ] +} diff --git a/packages/vuetom/styles/code-vt.scss b/packages/vuetom/styles/code-vt.scss new file mode 100644 index 0000000..fb3eee4 --- /dev/null +++ b/packages/vuetom/styles/code-vt.scss @@ -0,0 +1,136 @@ +/** code macos */ +div[class*='language-'] { + &.macos,&.light { + margin: 0 0 24px; + border-radius: 7px; + box-shadow: var(--vp-shadow-4); + &:hover { + .line-numbers-wrapper { + color: var(--vp-c-brand); + font-weight: 600; + opacity: 1; + } + } + .line-numbers-wrapper { + padding-top: 40px; + width: 32px; + border-right: 0px; + opacity: 0.3; + } + &::before { + position: initial; + display: block; + color: var(--vp-c-text-2); + background: var(--vp-c-bg-soft); + height: 24px; + line-height: 24px; + font-weight: bold; + text-align: center; + } + &::after { + position: absolute; + top: 8px; + left: 8px; + width: 10px; + height: 10px; + border-radius: 50%; + background: #fc625d; + -webkit-box-shadow: 20px 0 #fdbc40, 40px 0 #35cd4b; + box-shadow: 20px 0 #fdbc40, 40px 0 #35cd4b; + content: ' '; + } + pre { + code { + padding-left: 32px; + font-weight: 600; + } + } + .token.comment, + .token.block-comment, + .token.prolog, + .token.doctype, + .token.cdata { + color: #747474; + } + + .token.punctuation { + color: #743c3c; + } + + .token.tag, + .token.attr-name, + .token.namespace, + .token.deleted { + color: #e2777a; + } + + .token.function-name { + color: #1a5997; + } + + .token.boolean, + .token.number, + .token.function { + color: #af4b09; + } + + .token.property, + .token.class-name, + .token.constant, + .token.symbol { + color: #a0710b; + } + + .token.selector, + .token.important, + .token.atrule, + .token.keyword, + .token.builtin { + color: #a241a3; + } + + .token.string, + .token.char, + .token.attr-value, + .token.regex, + .token.variable { + color: #1e8545; + } + + .token.operator, + .token.entity, + .token.url { + color: #168d8b; + } + + .token.important, + .token.bold { + font-weight: bold; + } + + .token.italic { + font-style: italic; + } + + .token.entity { + cursor: help; + } + + .token.inserted { + color: green; + } + } +} +.dark { + div[class*='language-'] { + &.macos { + &::before { + background: var(--vp-c-bg); + } + .lang { + background-color: transparent; + display: none; + } + } + } +} diff --git a/packages/vuetom/styles/code.scss b/packages/vuetom/styles/code.scss new file mode 100644 index 0000000..e667baf --- /dev/null +++ b/packages/vuetom/styles/code.scss @@ -0,0 +1,260 @@ +/** code default */ + +code .token.deleted { + color: #ec5975; +} + +code .token.inserted { + color: var(--c-brand); +} + +div[class*='language-'] { + position: relative; + background-color: var(--vp-c-bg-soft); + transition: color 0.5s; + border: 2px solid transparent; + overflow-x: auto; + .line-numbers-wrapper { + border-right: 2px solid var(--vp-c-brand); + transition: opacity 0.5s; + opacity: 0.3; + } +} + +div[class*='language-']:hover { + border: 2px solid var(--vp-c-brand); + .line-numbers-wrapper { + color: var(--vp-c-brand); + font-weight: 600; + opacity: 1; + } + &::before { + opacity: 0; + } + &::after { + width: 100%; + opacity: 1; + } +} + +div[class*='language-']::after { + content: ''; + height: 5px; + width: 0; + background: var(--vp-c-brand); + transition: all 0.5s; + opacity: 0.3; + display: block; +} + +div[class*='language-']::before { + position: absolute; + bottom: 0; + font-size: 0.8rem; + color: #888; + height: 20px; + line-height: 20px; + width: 100%; + text-align: center; + transition: opacity 0.5s; + display: none; +} + +.dark { + div[class*='language-'] { + background-color: var(--vp-c-bg-alt); + } +} + +@media (min-width: 420px) { + div[class*='language-'] { + margin: 1rem 0; + border-radius: 6px; + } + + li > div[class*='language-'] { + margin: 1rem 0 1rem 0rem; + border-radius: 6px; + } +} + +div[class~='language-html']:before, +div[class~='language-markup']:before { + content: 'html'; +} + +div[class~='language-md']:before, +div[class~='language-markdown']:before { + content: 'md'; +} + +div[class~='language-css']:before { + content: 'css'; +} + +div[class~='language-sass']:before { + content: 'sass'; +} + +div[class~='language-scss']:before { + content: 'scss'; +} + +div[class~='language-less']:before { + content: 'less'; +} + +div[class~='language-stylus']:before { + content: 'styl'; +} + +div[class~='language-js']:before, +div[class~='language-javascript']:before { + content: 'js'; +} + +div[class~='language-ts']:before, +div[class~='language-typescript']:before { + content: 'ts'; +} + +div[class~='language-json']:before { + content: 'json'; +} + +div[class~='language-rb']:before, +div[class~='language-ruby']:before { + content: 'rb'; +} + +div[class~='language-py']:before, +div[class~='language-python']:before { + content: 'py'; +} + +div[class~='language-sh']:before, +div[class~='language-bash']:before { + content: 'sh'; +} + +div[class~='language-php']:before { + content: 'php'; +} + +div[class~='language-go']:before { + content: 'go'; +} + +div[class~='language-rust']:before { + content: 'rust'; +} + +div[class~='language-java']:before { + content: 'java'; +} + +div[class~='language-c']:before { + content: 'c'; +} + +div[class~='language-yaml']:before { + content: 'yaml'; +} + +div[class~='language-dockerfile']:before { + content: 'dockerfile'; +} + +div[class~='language-vue']:before { + content: 'vue'; +} + +/** + * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML. + * Based on https://github.com/chriskempson/tomorrow-theme + * + * @author Rose Pritchard + */ +.token.comment, +.token.block-comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #999; +} + +.token.punctuation { + color: #ccc; +} + +.token.tag, +.token.attr-name, +.token.namespace, +.token.deleted { + color: #e2777a; +} + +.token.function-name { + color: #6196cc; +} + +.token.boolean, +.token.number, +.token.function { + color: #f08d49; +} + +.token.property, +.token.class-name, +.token.constant, +.token.symbol { + color: #f8c555; +} + +.token.selector, +.token.important, +.token.atrule, +.token.keyword, +.token.builtin { + color: #cc99cd; +} + +.token.string, +.token.char, +.token.attr-value, +.token.regex, +.token.variable { + color: #7ec699; +} + +.token.operator, +.token.entity, +.token.url { + color: #67cdcc; +} + +.token.important, +.token.bold { + font-weight: bold; +} + +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +.token.inserted { + color: green; +} + +/* pre code */ + +.container pre { + font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace; + padding: 15px; + margin-bottom: 0; + overflow: auto; +} diff --git a/packages/vuetom/styles/colors.scss b/packages/vuetom/styles/colors.scss new file mode 100644 index 0000000..6d7e990 --- /dev/null +++ b/packages/vuetom/styles/colors.scss @@ -0,0 +1,78 @@ +:root { + + /** + * Base Colors + * --------------------------------------------------------------------- */ + + --c-white-rgb: 255,255,255; + --c-black-rgb: 0,0,0; + + --c-white: #ffffff; + --c-white-dark: #f8f8f8; + --c-black: #000000; + + --c-divider-light: rgba(60, 60, 67, 0.12); + --c-divider-dark: rgba(84, 84, 88, 0.48); + + --vt-c-white: #ffffff; + --vt-c-white-soft: #f9f9f9; + --vt-c-white-mute: #f1f1f1; + + --vt-c-black: #1a1a1a; + --vt-c-black-pure: #000000; + --vt-c-black-soft: #242424; + --vt-c-black-mute: #2f2f2f; + + --vt-c-indigo: #213547; + --vt-c-indigo-soft: #476582; + --vt-c-indigo-light: #aac8e4; + + --vt-c-gray: #8e8e8e; + --vt-c-gray-light-1: #aeaeae; + --vt-c-gray-light-2: #c7c7c7; + --vt-c-gray-light-3: #d1d1d1; + --vt-c-gray-light-4: #e5e5e5; + --vt-c-gray-light-5: #f2f2f2; + --vt-c-gray-dark-1: #636363; + --vt-c-gray-dark-2: #484848; + --vt-c-gray-dark-3: #3a3a3a; + --vt-c-gray-dark-4: #282828; + --vt-c-gray-dark-5: #202020; + + --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); + --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); + --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); + --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); + + --vt-c-text-light-1: var(--vt-c-indigo); + --vt-c-text-light-2: rgba(60, 60, 60, 0.70); + --vt-c-text-light-3: rgba(60, 60, 60, 0.33); + --vt-c-text-light-4: rgba(60, 60, 60, 0.18); + --vt-c-text-light-code: var(--vt-c-indigo-soft); + + --vt-c-text-dark-1: rgba(255, 255, 255, 0.87); + --vt-c-text-dark-2: rgba(235, 235, 235, 0.60); + --vt-c-text-dark-3: rgba(235, 235, 235, 0.38); + --vt-c-text-dark-4: rgba(235, 235, 235, 0.18); + --vt-c-text-dark-code: var(--vt-c-indigo-light); + + --vp-c-blue: #16a0db; + --vp-c-blue-light: #25beff; + --vp-c-blue-lighter: #5cceff; + --vp-c-blue-dark: #198aba; + --vp-c-blue-darker: #13678a; + --vp-c-blue-dimm-1: rgba(66, 145, 184, 0.5); + --vp-c-blue-dimm-2: rgba(66, 145, 184, 0.4); + --vp-c-blue-dimm-3: rgba(66, 145, 184, 0.3); + --vp-c-blue-dimm-4: rgba(66, 147, 184, 0.2); + --vp-c-blue-dimm-5: rgba(66, 139, 184, 0.1); + + --vp-c-pink: #e44a8a; + --vp-c-pink-light: #f962a1; + --vp-c-pink-lighter: #ff91bf; + --vp-c-pink-dark: #b31858; + --vp-c-pink-darker: #720e37; + --vp-c-pink-dimm-1: rgba(184, 66, 127, 0.5); + --vp-c-pink-dimm-2: rgba(184, 66, 100, 0.25); + --vp-c-pink-dimm-3: rgba(184, 66, 113, 0.05); +} \ No newline at end of file diff --git a/packages/vuetom/styles/custom-blocks.scss b/packages/vuetom/styles/custom-blocks.scss new file mode 100644 index 0000000..fd6fa3f --- /dev/null +++ b/packages/vuetom/styles/custom-blocks.scss @@ -0,0 +1,58 @@ +:root { + // custom-block.tip + --vp-custom-block-tip-border: var(--vp-c-brand-light); + --vp-custom-block-tip-text: var(--vp-c-brand); + --vp-custom-block-tip-bg: transparent; + // custom-block.warning + --vp-custom-block-warning-border: #b99a02; + --vp-custom-block-warning-text: #b49704; + --vp-custom-block-warning-bg: #e7c00010; + // custom-block.danger + --vp-custom-block-danger-border: #b90e0e; + --vp-custom-block-danger-text: #cf0b0b; + --vp-custom-block-danger-bg: #cc000010; + // custom-block.info + --vp-custom-block-info-border: #05b640; + --vp-custom-block-info-text: #05b740; + --vp-custom-block-info-bg: #06ce4910; +} + +.custom-block.tip, +.custom-block.info, +.custom-block.warning, +.custom-block.danger { + margin: 1rem 0; + border-width: 2px; + border-left: 0.5rem solid; + border-radius: 0.5rem; + padding: 0.5rem 1.3rem; + overflow-x: auto; + &:hover { + transition: all 0.5s; + box-shadow: var(--vp-shadow-4); + border-left: 2px solid; + } + a { + cursor: pointer; + } + .custom-block-title { + font-weight: 600; + } +} + +.custom-block.details { + margin: 1rem 0; + border-width: 2px; + border-radius: 0.5rem; + padding: 0.5rem 1.3rem; + summary { + outline: none; + cursor: pointer; + } +} + +.dark { + .custom-block.tip { + background-color: #23232380; + } +} \ No newline at end of file diff --git a/packages/vuetom/styles/fa/font-awesome.css b/packages/vuetom/styles/fa/font-awesome.css new file mode 100644 index 0000000..ee906a8 --- /dev/null +++ b/packages/vuetom/styles/fa/font-awesome.css @@ -0,0 +1,2337 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.fa-handshake-o:before { + content: "\f2b5"; +} +.fa-envelope-open:before { + content: "\f2b6"; +} +.fa-envelope-open-o:before { + content: "\f2b7"; +} +.fa-linode:before { + content: "\f2b8"; +} +.fa-address-book:before { + content: "\f2b9"; +} +.fa-address-book-o:before { + content: "\f2ba"; +} +.fa-vcard:before, +.fa-address-card:before { + content: "\f2bb"; +} +.fa-vcard-o:before, +.fa-address-card-o:before { + content: "\f2bc"; +} +.fa-user-circle:before { + content: "\f2bd"; +} +.fa-user-circle-o:before { + content: "\f2be"; +} +.fa-user-o:before { + content: "\f2c0"; +} +.fa-id-badge:before { + content: "\f2c1"; +} +.fa-drivers-license:before, +.fa-id-card:before { + content: "\f2c2"; +} +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: "\f2c3"; +} +.fa-quora:before { + content: "\f2c4"; +} +.fa-free-code-camp:before { + content: "\f2c5"; +} +.fa-telegram:before { + content: "\f2c6"; +} +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: "\f2c7"; +} +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: "\f2c9"; +} +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: "\f2cb"; +} +.fa-shower:before { + content: "\f2cc"; +} +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: "\f2cd"; +} +.fa-podcast:before { + content: "\f2ce"; +} +.fa-window-maximize:before { + content: "\f2d0"; +} +.fa-window-minimize:before { + content: "\f2d1"; +} +.fa-window-restore:before { + content: "\f2d2"; +} +.fa-times-rectangle:before, +.fa-window-close:before { + content: "\f2d3"; +} +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: "\f2d4"; +} +.fa-bandcamp:before { + content: "\f2d5"; +} +.fa-grav:before { + content: "\f2d6"; +} +.fa-etsy:before { + content: "\f2d7"; +} +.fa-imdb:before { + content: "\f2d8"; +} +.fa-ravelry:before { + content: "\f2d9"; +} +.fa-eercast:before { + content: "\f2da"; +} +.fa-microchip:before { + content: "\f2db"; +} +.fa-snowflake-o:before { + content: "\f2dc"; +} +.fa-superpowers:before { + content: "\f2dd"; +} +.fa-wpexplorer:before { + content: "\f2de"; +} +.fa-meetup:before { + content: "\f2e0"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/packages/vuetom/styles/fa/font-awesome.min.css b/packages/vuetom/styles/fa/font-awesome.min.css new file mode 100644 index 0000000..540440c --- /dev/null +++ b/packages/vuetom/styles/fa/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/packages/vuetom/styles/fonts/FontAwesome.otf b/packages/vuetom/styles/fonts/FontAwesome.otf new file mode 100644 index 0000000..401ec0f Binary files /dev/null and b/packages/vuetom/styles/fonts/FontAwesome.otf differ diff --git a/packages/vuetom/styles/fonts/fontawesome-webfont.eot b/packages/vuetom/styles/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/packages/vuetom/styles/fonts/fontawesome-webfont.eot differ diff --git a/packages/vuetom/styles/fonts/fontawesome-webfont.svg b/packages/vuetom/styles/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..855c845 --- /dev/null +++ b/packages/vuetom/styles/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/vuetom/styles/fonts/fontawesome-webfont.ttf b/packages/vuetom/styles/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/packages/vuetom/styles/fonts/fontawesome-webfont.ttf differ diff --git a/packages/vuetom/styles/fonts/fontawesome-webfont.woff b/packages/vuetom/styles/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/packages/vuetom/styles/fonts/fontawesome-webfont.woff differ diff --git a/packages/vuetom/styles/fonts/fontawesome-webfont.woff2 b/packages/vuetom/styles/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/packages/vuetom/styles/fonts/fontawesome-webfont.woff2 differ diff --git a/packages/vuetom/styles/index.scss b/packages/vuetom/styles/index.scss new file mode 100644 index 0000000..f6c4b35 --- /dev/null +++ b/packages/vuetom/styles/index.scss @@ -0,0 +1,4 @@ +@use './vars.scss'; +@use './custom-blocks.scss'; +@use './code.scss'; +@use './code-vt.scss'; \ No newline at end of file diff --git a/packages/vuetom/styles/mixins.scss b/packages/vuetom/styles/mixins.scss new file mode 100644 index 0000000..b7a3ba0 --- /dev/null +++ b/packages/vuetom/styles/mixins.scss @@ -0,0 +1,23 @@ +@use 'sass:map'; + +@use './vars' as *; + +@mixin with-border { + border-bottom: 2px solid transparent; +} + +$breakpoints: ( + 'sm': #{$breakpoint-sm}, + 'md': #{$breakpoint-md}, + 'lg': #{$breakpoint-lg}, + 'xlg': #{$breakpoint-xlg}, + 'xxl': #{$breakpoint-xxl}, +) !default; + +@mixin respond-to($breakpoint) { + @if #{map.has-key($breakpoints, $breakpoints)} { + @media screen and (min-width: #{map.get($breakpoints, $breakpoint)}) { + @content; + } + } +} diff --git a/packages/vuetom/styles/rewrite/aside.scss b/packages/vuetom/styles/rewrite/aside.scss new file mode 100644 index 0000000..b3e5bb1 --- /dev/null +++ b/packages/vuetom/styles/rewrite/aside.scss @@ -0,0 +1,18 @@ +// 文档侧边栏样式重写 + +.VPSidebarGroup { + .link { + &:hover { + color: var(--vp-c-brand); + // background: var(--vt-c-button-hover-bg); + } + &.active { + background: var(--vt-c-button-active-bg); + } + border-radius: 6px; + padding: 6px 0; + .link-text { + padding-left: 12px; + } + } +} \ No newline at end of file diff --git a/packages/vuetom/styles/rewrite/content.scss b/packages/vuetom/styles/rewrite/content.scss new file mode 100644 index 0000000..772b138 --- /dev/null +++ b/packages/vuetom/styles/rewrite/content.scss @@ -0,0 +1,7 @@ + +.VPContent { + background-size: cover; + background-attachment: fixed; + background-position: center center; + background-image: var(--vt-bg-content); +} \ No newline at end of file diff --git a/packages/vuetom/styles/rewrite/doc.scss b/packages/vuetom/styles/rewrite/doc.scss new file mode 100644 index 0000000..e1f4459 --- /dev/null +++ b/packages/vuetom/styles/rewrite/doc.scss @@ -0,0 +1,98 @@ +// 文档MD语法样式重写 +.NotFound { + padding: 0; + margin: 60px; + border-radius: 10px; + background-color: var(--vt-bg-doc); +} +.VPDoc { + background-color: var(--vt-bg-doc); + .container { + .content { + main { + background-image: linear-gradient(90deg,rgba(159,219,252,.08) 3%,transparent 0),linear-gradient(1turn,rgba(159,219,252,.08) 3%,transparent 0); + background-size: 30px 30px; + background-position: 50%; + } + } + .vp-doc { + h1, + h2, + h3, + h4, + h5, + h6 { + margin: 20px 0; + font-weight: 600; + color: var(--vp-c-brand); + } + h1 { + font-size: 25px; + } + h2 { + font-size: 20px; + border-bottom: 4px solid var(--vp-c-pink-dimm-1); + line-height: 35px; + padding-left: 20px; + margin: 0; + border-top: 0; + &::after { + content: ""; + position: absolute; + right: 0; + bottom: 0; + width: 400px; + height: 10px; + border-top-right-radius: 22px; + background: linear-gradient(90deg,transparent,var(--vp-c-brand)); + max-width: 50vw; + } + } + h3 { + font-size: 18px; + } + h4 { + font-size: 16px; + } + h5 { + font-size: 14px; + } + h6 { + font-size: 12px; + } + table { + th, td { + border: 1px solid var(--vp-c-divider-light); + } + } + a { + text-decoration: underline; + } + strong { + color: var(--vp-c-second); + &::before { + content: "[ "; + } + &::after { + content: " ]"; + } + } + blockquote { + margin: 0; + padding: 1rem; + border-left: 6px solid var(--vp-c-brand-dark); + border-radius: 5px; + background: var(--vp-c-blue-dimm-5); + } + :not(pre) > code { + color: var(--vp-c-second); + border: 1px solid var(--vp-c-pink-dimm-2); + background-color: var(--vp-c-pink-dimm-3); + } + :not(pre) > code:hover { + border: 1px solid var(--vp-c-pink-dimm-1); + } + } + } + +} diff --git a/packages/vuetom/styles/rewrite/docsearch.scss b/packages/vuetom/styles/rewrite/docsearch.scss new file mode 100644 index 0000000..966e017 --- /dev/null +++ b/packages/vuetom/styles/rewrite/docsearch.scss @@ -0,0 +1,5 @@ +.DocSearch-Button { + border: 2px solid transparent; + border-radius: 20px; + opacity: 0.8; +} \ No newline at end of file diff --git a/packages/vuetom/styles/rewrite/home.scss b/packages/vuetom/styles/rewrite/home.scss new file mode 100644 index 0000000..8a52f85 --- /dev/null +++ b/packages/vuetom/styles/rewrite/home.scss @@ -0,0 +1,274 @@ +// 文档-首页样式重写 + +:root { + --gap-horizontal: 10px; + --gap-vertical: 10px; + --time-anim: 5s; + --delay-anim: 0s; + --blend-mode-1: none; + --blend-color-1: transparent; + --vt-bg-light: -webkit-linear-gradient(top, + rgba(0, 0, 0, 0.1) 0%, + rgba(0, 0, 0, 0) 20%, + rgba(0, 0, 0, 0) 80%, + rgba(0, 0, 0, 0.1) 100%), + -webkit-linear-gradient(left, rgba(0, 0, 0, 0.1) 0%, rgba(0, 0, 0, 0) 20%, rgba(0, + 0, + 0, + 0) 80%, rgba(0, 0, 0, 0.1) 100%), + url(''); +} + +.VPHome { + .VPHeroLogo { + width: 15%; + margin: 0 auto; + padding: 30px 0 0 0; + } + + .VPHero { + .container { + .main { + text-align: center; + + .name { + color: transparent; + background: linear-gradient(to right, #32defd, rgb(247 69 152)); + max-width: 100%; + -webkit-background-clip: text; + + &:hover { + -webkit-animation: Glow 1.5s ease infinite alternate; + animation: Glow 1.5s ease infinite alternate; + } + } + + .release-tag { + font-size: 1rem; + font-weight: bold; + line-height: 20px; + display: inline-block; + position: absolute; + top: 50%; + transform: translateY(-50%); + padding: 6px; + margin-left: 8px; + background: var(--vp-c-brand); + color: #fff; + border-radius: 10px; + } + + .text { + color: var(--vp-c-gray); + max-width: 100%; + } + + .tagline { + color: var(--vp-c-second-lighter); + max-width: 100%; + } + + .actions { + justify-content: center; + } + } + } + } + + .VPButton { + border-radius: 6px !important; + border: 2px solid var(--vp-c-brand-light) !important; + + &.alt { + color: var(--vp-c-brand-light) !important; + background-color: transparent !important; + } + + &.alt:hover { + color: var(--vp-button-brand-text) !important; + background-color: var(--vp-c-brand-light) !important; + } + + &.brand { + background-color: var(--vp-c-brand) !important; + } + + &.brand:hover { + background-color: var(--vp-c-brand-light) !important; + } + } + + &::after { + content: ' '; + height: 100%; + width: 98%; + top: 0; + left: 0; + position: fixed; + background-image: var(--vt-bg-light); + background-size: cover; + background-attachment: fixed; + background-position: center center; + background-blend-mode: var(--blend-mode-1); + animation-duration: var(--time-anim); + animation-delay: var(--delay-anim); + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-name: glitch-anim-1; + } + + .VPFeatures { + padding: 32px; + margin: 0 15%; + margin-bottom: 5%; + background: linear-gradient(to right, + rgba(6, 205, 255, 0.1882352941), + rgba(223, 7, 107, 0.3)); + border-radius: 16px; + + .item { + padding: 16px; + + .VPFeature { + border: 1px solid var(--vp-c-text-inverse-4); + background-color: transparent; + + &:hover { + -webkit-animation-name: hfhover-zoom; + animation-name: hfhover-zoom; + -webkit-animation-duration: 0.5s; + animation-duration: 0.5s; + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; + color: var(--c-sub-brand-light); + } + + .title { + color: var(--vp-c-brand-light); + font-size: 1.3rem; + margin: 15px; + } + + .details { + color: var(--vp-c-second-lighter); + font-size: 1rem; + line-height: 1.5rem; + } + } + } + } +} + +@media (min-width: 960px) { + .VPFeatures { + padding: 32px !important; + } +} + +@-webkit-keyframes Glow { + from { + text-shadow: 0 0 10px #fff, 0 0 20px #fff, 0 0 30px #fff, + 0 0 40px var(--vp-c-second), 0 0 70px var(--vp-c-second), + 0 0 80px var(--vp-c-second), 0 0 100px var(--vp-c-second), + 0 0 150px var(--vp-c-second); + } + + to { + text-shadow: 0 0 2px #fff, 0 0 5px #fff, 0 0 7px #fff, + 0 0 10px var(--vp-c-brand), 0 0 17px var(--vp-c-brand), + 0 0 20px var(--vp-c-brand), 0 0 25px var(--vp-c-brand), + 0 0 37px var(--vp-c-brand); + } +} + +@keyframes Glow { + from { + text-shadow: 0 0 10px #fff, 0 0 20px #fff, 0 0 30px #fff, + 0 0 40px var(--vp-c-second), 0 0 70px var(--vp-c-second), + 0 0 80px var(--vp-c-second), 0 0 100px var(--vp-c-second), + 0 0 150px var(--vp-c-second); + } + + to { + text-shadow: 0 0 2px #fff, 0 0 5px #fff, 0 0 7px #fff, + 0 0 10px var(--vp-c-brand), 0 0 17px var(--vp-c-brand), + 0 0 20px var(--vp-c-brand), 0 0 25px var(--vp-c-brand), + 0 0 37px var(--vp-c-brand); + } +} + +@keyframes glitch-anim-1 { + 0% { + opacity: 1; + transform: translate3d(var(--gap-horizontal), 0, 0); + clip-path: polygon(0 2%, 100% 2%, 100% 5%, 0 5%); + } + + 2% { + clip-path: polygon(0 15%, 100% 15%, 100% 15%, 0 15%); + } + + 4% { + clip-path: polygon(0 10%, 100% 10%, 100% 20%, 0 20%); + } + + 6% { + clip-path: polygon(0 1%, 100% 1%, 100% 2%, 0 2%); + } + + 8% { + clip-path: polygon(0 33%, 100% 33%, 100% 33%, 0 33%); + } + + 10% { + clip-path: polygon(0 44%, 100% 44%, 100% 44%, 0 44%); + } + + 12% { + clip-path: polygon(0 50%, 100% 50%, 100% 20%, 0 20%); + } + + 14% { + clip-path: polygon(0 70%, 100% 70%, 100% 70%, 0 70%); + } + + 16% { + clip-path: polygon(0 80%, 100% 80%, 100% 80%, 0 80%); + } + + 18% { + clip-path: polygon(0 50%, 100% 50%, 100% 55%, 0 55%); + } + + 20% { + clip-path: polygon(0 70%, 100% 70%, 100% 80%, 0 80%); + } + + 21.9% { + opacity: 1; + transform: translate3d(var(--gap-horizontal), 0, 0); + } + + 22%, + 100% { + opacity: 0; + transform: translate3d(0, 0, 0); + clip-path: polygon(0 0, 0 0, 0 0, 0 0); + } +} + +@keyframes hfhover-zoom { + 50% { + -webkit-transform: scale(0.9); + transform: scale(0.9); + -webkit-filter: brightness(80%); + } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-filter: brightness(100%); + } +} \ No newline at end of file diff --git a/packages/vuetom/styles/rewrite/index.scss b/packages/vuetom/styles/rewrite/index.scss new file mode 100644 index 0000000..8818346 --- /dev/null +++ b/packages/vuetom/styles/rewrite/index.scss @@ -0,0 +1,12 @@ +// rewrite nav +@use './nav.scss'; +// rewrite aside button +@use './aside.scss'; +// rewrite content bg +@use './content.scss'; +// rewrite main content +@use './doc.scss'; +// rewrite search box +@use './docsearch.scss'; +// rewrite custom home +@use './home.scss'; \ No newline at end of file diff --git a/packages/vuetom/styles/rewrite/nav.scss b/packages/vuetom/styles/rewrite/nav.scss new file mode 100644 index 0000000..142bbd6 --- /dev/null +++ b/packages/vuetom/styles/rewrite/nav.scss @@ -0,0 +1,17 @@ +// 文档顶部导航栏样式重写 + +.VPNav { + box-shadow: var(--vp-shadow-2); + .VPNavBarTitle { + .title { + color: var(--vp-c-brand); + font-size: 1.2rem; + font-weight: bold; + } + } + .VPNavBar { + .VPNavBarMenuLink { + font-weight: bold; + } + } +} \ No newline at end of file diff --git a/packages/vuetom/styles/tailwind/d.css b/packages/vuetom/styles/tailwind/d.css new file mode 100644 index 0000000..4915a4d --- /dev/null +++ b/packages/vuetom/styles/tailwind/d.css @@ -0,0 +1,1060 @@ +/* +! tailwindcss v3.2.4 | MIT License | https://tailwindcss.com +*/ + +/* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ + +*, +::before, +::after { + box-sizing: border-box; + /* 1 */ + border-width: 0; + /* 2 */ + border-style: solid; + /* 2 */ + border-color: #e5e7eb; + /* 2 */ +} + +::before, +::after { + --tw-content: ''; +} + +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +5. Use the user's configured `sans` font-feature-settings by default. +*/ + +html { + line-height: 1.5; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ + -moz-tab-size: 4; + /* 3 */ + -o-tab-size: 4; + tab-size: 4; + /* 3 */ + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + /* 4 */ + font-feature-settings: normal; + /* 5 */ +} + +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ + +body { + margin: 0; + /* 1 */ + line-height: inherit; + /* 2 */ +} + +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ + +hr { + height: 0; + /* 1 */ + color: inherit; + /* 2 */ + border-top-width: 1px; + /* 3 */ +} + +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/* +Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + text-decoration: inherit; +} + +/* +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* +1. Use the user's configured `mono` font family by default. +2. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + +/* +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; + /* 1 */ + border-color: inherit; + /* 2 */ + border-collapse: collapse; + /* 3 */ +} + +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + font-weight: inherit; + /* 1 */ + line-height: inherit; + /* 1 */ + color: inherit; + /* 1 */ + margin: 0; + /* 2 */ + padding: 0; + /* 3 */ +} + +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ + +button, +select { + text-transform: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ + +button, +[type='button'], +[type='reset'], +[type='submit'] { + -webkit-appearance: button; + /* 1 */ + background-color: transparent; + /* 2 */ + background-image: none; + /* 2 */ +} + +/* +Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type='search'] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} + +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* +Removes the default spacing and border for appropriate elements. +*/ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +fieldset { + margin: 0; + padding: 0; +} + +legend { + padding: 0; +} + +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +} + +/* +Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ + +input::-moz-placeholder, textarea::-moz-placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +input::placeholder, +textarea::placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +/* +Set the default cursor for buttons. +*/ + +button, +[role="button"] { + cursor: pointer; +} + +/* +Make sure disabled buttons don't get the pointer cursor. +*/ + +:disabled { + cursor: default; +} + +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; + /* 1 */ + vertical-align: middle; + /* 2 */ +} + +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +img, +video { + max-width: 100%; + height: auto; +} + +/* Make elements with the HTML hidden attribute stay hidden by default */ + +[hidden] { + display: none; +} + +*, ::before, ::after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; +} + +::backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; +} + +.container { + width: 100%; +} + +@media (min-width: 640px) { + .container { + max-width: 640px; + } +} + +@media (min-width: 768px) { + .container { + max-width: 768px; + } +} + +@media (min-width: 1024px) { + .container { + max-width: 1024px; + } +} + +@media (min-width: 1280px) { + .container { + max-width: 1280px; + } +} + +@media (min-width: 1536px) { + .container { + max-width: 1536px; + } +} + +.visible { + visibility: visible; +} + +.fixed { + position: fixed; +} + +.absolute { + position: absolute; +} + +.relative { + position: relative; +} + +.left-0 { + left: 0px; +} + +.right-0 { + right: 0px; +} + +.bottom-0 { + bottom: 0px; +} + +.bottom-5 { + bottom: 1.25rem; +} + +.bottom-2 { + bottom: 0.5rem; +} + +.z-10 { + z-index: 10; +} + +.m-1 { + margin: 0.25rem; +} + +.mx-auto { + margin-left: auto; + margin-right: auto; +} + +.mt-8 { + margin-top: 2rem; +} + +.mb-6 { + margin-bottom: 1.5rem; +} + +.mt-1 { + margin-top: 0.25rem; +} + +.mr-1 { + margin-right: 0.25rem; +} + +.block { + display: block; +} + +.inline-block { + display: inline-block; +} + +.flex { + display: flex; +} + +.grid { + display: grid; +} + +.hidden { + display: none; +} + +.h-screen { + height: 100vh; +} + +.h-full { + height: 100%; +} + +.h-80 { + height: 20rem; +} + +.h-1\/2 { + height: 50%; +} + +.h-3\/4 { + height: 75%; +} + +.h-1\/4 { + height: 25%; +} + +.h-6 { + height: 1.5rem; +} + +.h-24 { + height: 6rem; +} + +.h-3 { + height: 0.75rem; +} + +.h-20 { + height: 5rem; +} + +.h-60 { + height: 15rem; +} + +.min-h-eight { + min-height: 80vh; +} + +.w-full { + width: 100%; +} + +.w-64 { + width: 16rem; +} + +.w-4\/5 { + width: 80%; +} + +.w-10 { + width: 2.5rem; +} + +.w-11\/12 { + width: 91.666667%; +} + +.w-24 { + width: 6rem; +} + +.w-1\/2 { + width: 50%; +} + +.w-3 { + width: 0.75rem; +} + +.flex-none { + flex: none; +} + +.flex-shrink { + flex-shrink: 1; +} + +.flex-grow { + flex-grow: 1; +} + +.transform { + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +@keyframes bounce { + 0%, 100% { + transform: translateY(-25%); + animation-timing-function: cubic-bezier(0.8,0,1,1); + } + + 50% { + transform: none; + animation-timing-function: cubic-bezier(0,0,0.2,1); + } +} + +.animate-bounce { + animation: bounce 1s infinite; +} + +.grid-cols-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); +} + +.grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); +} + +.flex-wrap { + flex-wrap: wrap; +} + +.gap-10 { + gap: 2.5rem; +} + +.overflow-hidden { + overflow: hidden; +} + +.overflow-scroll { + overflow: scroll; +} + +.rounded-vt { + border-radius: var(--vt-radius); +} + +.rounded-full { + border-radius: 9999px; +} + +.rounded-md { + border-radius: 0.375rem; +} + +.border { + border-width: 1px; +} + +.border-2 { + border-width: 2px; +} + +.border-t-2 { + border-top-width: 2px; +} + +.border-b-2 { + border-bottom-width: 2px; +} + +.border-cbgs { + border-color: var(--vp-c-bg-soft); +} + +.border-gray-100 { + --tw-border-opacity: 1; + border-color: rgb(243 244 246 / var(--tw-border-opacity)); +} + +.border-gray-200 { + --tw-border-opacity: 1; + border-color: rgb(229 231 235 / var(--tw-border-opacity)); +} + +.border-transparent { + border-color: transparent; +} + +.border-opacity-50 { + --tw-border-opacity: 0.5; +} + +.bg-cbg { + background-color: var(--vp-c-bg); +} + +.bg-gray-700 { + --tw-bg-opacity: 1; + background-color: rgb(55 65 81 / var(--tw-bg-opacity)); +} + +.bg-cbgs { + background-color: var(--vp-c-bg-soft); +} + +.bg-green-100 { + --tw-bg-opacity: 1; + background-color: rgb(220 252 231 / var(--tw-bg-opacity)); +} + +.bg-brand { + background-color: var(--vp-c-brand); +} + +.bg-cover { + background-size: cover; +} + +.bg-center { + background-position: center; +} + +.p-10 { + padding: 2.5rem; +} + +.p-6 { + padding: 1.5rem; +} + +.px-4 { + padding-left: 1rem; + padding-right: 1rem; +} + +.py-8 { + padding-top: 2rem; + padding-bottom: 2rem; +} + +.px-10 { + padding-left: 2.5rem; + padding-right: 2.5rem; +} + +.py-6 { + padding-top: 1.5rem; + padding-bottom: 1.5rem; +} + +.px-1\.5 { + padding-left: 0.375rem; + padding-right: 0.375rem; +} + +.px-1 { + padding-left: 0.25rem; + padding-right: 0.25rem; +} + +.py-1\.5 { + padding-top: 0.375rem; + padding-bottom: 0.375rem; +} + +.py-1 { + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} + +.px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; +} + +.py-3 { + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} + +.py-4 { + padding-top: 1rem; + padding-bottom: 1rem; +} + +.pb-8 { + padding-bottom: 2rem; +} + +.pt-6 { + padding-top: 1.5rem; +} + +.pl-2 { + padding-left: 0.5rem; +} + +.text-left { + text-align: left; +} + +.text-center { + text-align: center; +} + +.text-3xl { + font-size: 1.875rem; + line-height: 2.25rem; +} + +.text-xl { + font-size: 1.25rem; + line-height: 1.75rem; +} + +.text-sm { + font-size: 0.875rem; + line-height: 1.25rem; +} + +.font-black { + font-weight: 900; +} + +.font-bold { + font-weight: 700; +} + +.tracking-wide { + letter-spacing: 0.025em; +} + +.text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} + +.antialiased { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.shadow-vt { + --tw-shadow: var(--vt-shadow); + --tw-shadow-colored: var(--vt-shadow); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.transition { + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.transition-opacity { + transition-property: opacity; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.transition-colors { + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.duration-1000 { + transition-duration: 1000ms; +} + +.duration-300 { + transition-duration: 300ms; +} + +.duration-500 { + transition-duration: 500ms; +} + +.ease-out { + transition-timing-function: cubic-bezier(0, 0, 0.2, 1); +} + +@keyframes wiggle { + 0%, 100% { + transform: rotate(-3deg); + } + + 50% { + transform: rotate(3deg); + } +} + +.hover\:animate-wiggle:hover { + animation: wiggle 0.2s ease-in-out infinite; +} + +.hover\:border-brand:hover { + border-color: var(--vp-c-brand); +} + +.hover\:border-gray-500:hover { + --tw-border-opacity: 1; + border-color: rgb(107 114 128 / var(--tw-border-opacity)); +} + +.hover\:bg-cbgs:hover { + background-color: var(--vp-c-bg-soft); +} + +.hover\:font-bold:hover { + font-weight: 700; +} + +.hover\:text-brand:hover { + color: var(--vp-c-brand); +} + +.hover\:text-brand-d:hover { + color: var(--vp-c-brand-dark); +} + +@media (min-width: 768px) { + .md\:block { + display: block; + } + + .md\:w-1\/2 { + width: 50%; + } +} \ No newline at end of file diff --git a/packages/vuetom/styles/tailwind/s.css b/packages/vuetom/styles/tailwind/s.css new file mode 100644 index 0000000..bd6213e --- /dev/null +++ b/packages/vuetom/styles/tailwind/s.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/packages/vuetom/styles/vars.scss b/packages/vuetom/styles/vars.scss new file mode 100644 index 0000000..6de46a8 --- /dev/null +++ b/packages/vuetom/styles/vars.scss @@ -0,0 +1,149 @@ +/** Base Styles */ + +/** + * Base Color + * --------------------------------------------------------------------- */ +@import './colors.scss'; + +:root { + + /** + * Extends Vitepress + * --------------------------------------------------------------------- */ + + --vp-c-second: var(--vp-c-pink); + --vp-c-second-light: var(--vp-c-pink-light); + --vp-c-second-lighter: var(--vp-c-pink-lighter); + --vp-c-second-dark: var(--vp-c-pink-dark); + --vp-c-second-darker: var(--vp-c-pink-darker); + + /** + * Typography + * --------------------------------------------------------------------- */ + + --font-family-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, + Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + --font-family-mono: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; + + /** + * Z Indexes + * + * Algolia SearchBox has a z-index of 200, so make sure not to go above + * that value. + * --------------------------------------------------------------------- */ + + --z-index-navbar: 10; + --z-index-sidebar: 6; + + /** + * Shadows + * --------------------------------------------------------------------- */ + + --shadow-1: 0 1px 2px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.06); + --shadow-2: 0 3px 12px rgba(0, 0, 0, 0.07), 0 1px 4px rgba(0, 0, 0, 0.07); + --shadow-3: 0 12px 32px rgba(0, 0, 0, 0.1), 0 2px 6px rgba(0, 0, 0, 0.08); + --shadow-4: 0 14px 44px rgba(0, 0, 0, 0.12), 0 3px 9px rgba(0, 0, 0, 0.12); + --shadow-5: 0 18px 56px rgba(0, 0, 0, 0.16), 0 4px 12px rgba(0, 0, 0, 0.16); + + /** + * Sizes + * --------------------------------------------------------------------- */ + + --header-height: 3.6rem; +} + +:root { + --c-brand: #1496ce; + --c-brand-light: #19aeee; + --c-sub-brand: #f197bd; + --c-sub-brand-light: #f7adcb; + --color-border: #ad295c8a; + --color-block: #2a7f8a; + --color-strong: #c13e74; + --color-code: #7ea1c5; + --color-border-left: #1d8ab9; + --color-code-bg: rgba(77,208,225,0.08); + --color-block-bg: rgba(77,208,225,0.15); + --linear-title: linear-gradient(to right, #32defd, rgb(247 69 152)); + // vt 背景色 + --vt-c-bg: var(--vt-c-white); + --vt-c-bg-soft: var(--vt-c-white-soft); + --vt-c-bg-mute: var(--vt-c-white-mute); + --vt-c-bg-rgb: var(--c-white-rgb); + + --vt-shadow: 0 5px 6px -5px rgba(133,133,133,.6); + --vt-code-shadow: 5px 5px 1px rgba(255, 255, 255, 0.4); + --vt-code-shadow-h: 5px 5px 10px rgba(255, 255, 255, 0.4); + --vt-code-inline-color: #c13e74; + --vt-code-inline-bg: #c13e7408; +} + +.dark { + --c-brand: #18baff; + --c-brand-light: #189bd3; + --color-border: #ff3a858a; + --color-block: #2a7f8a; + --color-strong: #e44a8a; + --color-code: #7ea1c5; + --color-border-left: #1d8ab9; + --color-code-bg: rgba(77,208,225,0.08); + --color-block-bg: rgba(77,208,225,0.15); + --linear-title: linear-gradient(to right, #32defd, rgb(247 69 152)); + // vt 背景色 + --vt-c-bg: var(--vt-c-black); + --vt-c-bg-soft: var(--vt-c-black-soft); + --vt-c-bg-mute: var(--vt-c-black-mute); + --vt-c-bg-rgb: var(--c-black-rgb); + + --vt-shadow: 0 5px 6px -5px rgba(0, 0, 0, 0.6); + --vt-code-shadow: 5px 5px 1px rgba(0, 0, 0, 0.4); + --vt-code-shadow-h: 5px 5px 10px rgba(0, 0, 0, 0.4); + --vt-code-inline-color: #eee; + --vt-code-inline-bg: #c13e7450; +} + +// breakpoints +$breakpoint-xxl: 1440px !default; +$breakpoint-xlg: 1280px !default; +$breakpoint-lg: 960px !default; +$breakpoint-md: 768px !default; +$breakpoint-sm: 480px !default; + +/** + * Icons + * -------------------------------------------------------------------------- */ + +/** + * Layouts + * -------------------------------------------------------------------------- */ + +/** + * Component: Code + * -------------------------------------------------------------------------- */ + +/** + * Component: Button + * -------------------------------------------------------------------------- */ +:root { + --vt-c-button-hover-bg: var(--vp-c-blue-dimm-4); + --vt-c-button-active-bg: var(--vp-c-blue-dimm-5); +} + + +/** + * Component: Custom Block + * -------------------------------------------------------------------------- */ + +/** + * Component: Nav + * -------------------------------------------------------------------------- */ + +/** + * Component: Sidebar + * -------------------------------------------------------------------------- */ + +/** + * Component: Home + * -------------------------------------------------------------------------- */ diff --git a/packages/vuetom/support/constant.ts b/packages/vuetom/support/constant.ts new file mode 100644 index 0000000..fb476b1 --- /dev/null +++ b/packages/vuetom/support/constant.ts @@ -0,0 +1,2 @@ +export const defaultLang = 'zh-CN' +export const PREFERRED_LANG_KEY = 'vuetom_lang' diff --git a/packages/vuetom/support/lang.ts b/packages/vuetom/support/lang.ts new file mode 100644 index 0000000..dfd5034 --- /dev/null +++ b/packages/vuetom/support/lang.ts @@ -0,0 +1,23 @@ +import { computed } from 'vue' +import { useRoute } from 'vitepress' +import { defaultLang } from './constant.js' + +export const useLang = () => { + const route = useRoute() + + return computed(() => { + // the first part of the first slash + const path = route.data?.relativePath + let lang + + if (path?.includes('/')) { + lang = path.split('/').shift() + } else { + lang = defaultLang + } + + return lang + }) +} + +export default {} diff --git a/packages/vuetom/support/pages.ts b/packages/vuetom/support/pages.ts new file mode 100644 index 0000000..38d44a7 --- /dev/null +++ b/packages/vuetom/support/pages.ts @@ -0,0 +1,137 @@ +import { + reactive, ref, markRaw, shallowRef +} from 'vue' +import { inBrowser, withBase, useData } from 'vitepress' + +// @ts-ignore +import siteData from '@siteData' + +export const siteDataRef = shallowRef(siteData) + +const routes: any = ref([]) + +const NotFound = () => '404 Not Found' + +const notFoundPageData = { + relativePath: '', + title: '404', + description: 'Not Found', + headers: [], + frontmatter: {}, + lastUpdated: 0 +} + +const getDefaultRoute = () => ({ + path: '/', + component: null, + data: notFoundPageData +}) + +const createRouterRoutes = ( + loadPageModule: Function, + fallbackComponent: any +) => { + // const router = useRouter() + const { theme } = useData() + const { pages } = theme.value + let latestPendingPath = '' + async function loadPage( + href = '/index', + scrollPosition = 0, + isRetry = false + ) { + const route = reactive(getDefaultRoute()) + const pendingPath = `/posts${href}` + try { + let page = loadPageModule(pendingPath) + if ('then' in page && typeof page.then === 'function') { + page = await page + } + const { default: comp, __pageData } = page + if (!comp) { + throw new Error(`Invalid route component: ${comp}`) + } + route.path = inBrowser ? pendingPath : pendingPath + route.component = markRaw(comp) + route.data = markRaw(__pageData) + } catch (err) { + // @ts-ignore + if (!/fetch/.test(err.message) && !/^\/404(\.html|\/)?$/.test(href)) { + console.error(err) + } + if (!isRetry) { + try { + const res = await fetch(`${siteDataRef.value.base}hashmap.json`) + // eslint-disable-next-line no-underscore-dangle + window.__VP_HASH_MAP__ = await res.json() + await loadPage(href, scrollPosition, true) + return + } catch (e) {} + } + if (latestPendingPath === pendingPath) { + latestPendingPath = '' + route.path = inBrowser ? pendingPath : withBase(pendingPath) + route.component = fallbackComponent ? markRaw(fallbackComponent) : null + route.data = notFoundPageData + } + } + return route + } + pages.forEach(async (p: { link: string }) => { + const r = await loadPage(p.link) + routes.value.push(r) + }) + return { + routes: routes.value + } +} + +const getRoutes = () => { + let isInitialPageLoad = inBrowser + let initialPath = '' + return createRouterRoutes((path: string) => { + let pageFilePath = pathToFile(path) + if (isInitialPageLoad) { + initialPath = pageFilePath + } + if (isInitialPageLoad || initialPath === pageFilePath) { + pageFilePath = pageFilePath.replace(/\.js$/, '.lean.js') + } + if (inBrowser) { + isInitialPageLoad = false + } + return import(/* @vite-ignore */ pageFilePath) + }, NotFound) +} + +function pathToFile(path: string) { + let pagePath = path.replace(/\.html$/, '') + pagePath = decodeURIComponent(pagePath) + if (pagePath.endsWith('/')) { + pagePath += 'index' + } + + // @ts-ignore + if (import.meta.env.DEV) { + pagePath += `.md?t=${Date.now()}` + } else { + // /foo/bar.html -> ./foo_bar.md + if (inBrowser) { + // @ts-ignore + const base = import.meta.env.BASE_URL + pagePath = `${ + pagePath.slice(base.length - 1).replace(/\//g, '_') || 'index' + }.md` + const pageHash = __VP_HASH_MAP__[`posts_${pagePath.toLowerCase()}`] + pagePath = `${base}assets/posts_${pagePath}.${pageHash}.js` + } else { + // ssr + pagePath = `./${pagePath.slice(1).replace(/\//g, '_')}.md.js` + } + } + return pagePath +} + +export { getRoutes } + +export default {} diff --git a/packages/vuetom/support/utils.ts b/packages/vuetom/support/utils.ts new file mode 100644 index 0000000..9277d94 --- /dev/null +++ b/packages/vuetom/support/utils.ts @@ -0,0 +1,68 @@ +export const hashRE = /#.*$/ +export const extRE = /(index)?\.(md|html)$/ +export const endingSlashRE = /\/$/ +export const outboundRE = /^[a-z]+:/i +export function isNullish(value: any) { + return value === null || value === undefined +} +export function isArray(value: any) { + return Array.isArray(value) +} +export function isExternal(path: string) { + return outboundRE.test(path) +} +export function isActive(route: any, path: string) { + if (path === undefined) { + return false + } + const routePath = normalize(`/${route.data.relativePath}`) + const pagePath = normalize(path) + + return routePath === pagePath +} +export function normalize(path: string) { + return decodeURI(path).replace(hashRE, '').replace(extRE, '') +} +export function joinUrl(base: string, path: string) { + const baseEndsWithSlash = base.endsWith('/') + const pathStartsWithSlash = path.startsWith('/') + if (baseEndsWithSlash && pathStartsWithSlash) { + return base.slice(0, -1) + path + } + if (!baseEndsWithSlash && !pathStartsWithSlash) { + return `${base}/${path}` + } + + return base + path +} + +/** + * get the path without filename (the last segment). for example, if the given + * path is `/guide/getting-started.html`, this method will return `/guide/`. + * Always with a trailing slash. + */ +export function getPathDirName(path: string) { + const segments = path.split('/') + if (segments[segments.length - 1]) { + segments.pop() + } + + return ensureEndingSlash(segments.join('/')) +} +export function ensureSlash(path: string) { + return ensureEndingSlash(ensureStartingSlash(path)) +} +export function ensureStartingSlash(path: string) { + return /^\//.test(path) ? path : `/${path}` +} +export function ensureEndingSlash(path: string) { + return /(\.html|\/)$/.test(path) ? path : `${path}/` +} + +/** + * Remove `.md` or `.html` extention from the given path. It also converts + * `index` to slush. + */ +export function removeExtention(path: string) { + return path.replace(/(index)?(\.(md|html))?$/, '') || '/' +} diff --git a/packages/vuetom/tailwind.config.cjs b/packages/vuetom/tailwind.config.cjs new file mode 100644 index 0000000..ba20913 --- /dev/null +++ b/packages/vuetom/tailwind.config.cjs @@ -0,0 +1,44 @@ +module.exports = { + content: [ + './blog/**/*.vue', + './doc/**/*.vue' + ], + darkMode: 'media', + theme: { + extend: { + colors: { + cbg: 'var(--vp-c-bg)', + cbgs: 'var(--vp-c-bg-soft)', + cbgm: 'var(--vp-c-bg-mute)', + cbga: 'var(--vp-c-bg-alt)', + brand: 'var(--vp-c-brand)', + 'brand-l': 'var(--vp-c-brand-lighter)', + 'brand-d': 'var(--vp-c-brand-dark)' + }, + borderRadius: { + vt: 'var(--vt-radius)' + }, + boxShadow: { + vt: 'var(--vt-shadow)' + }, + minHeight: { + eight: '80vh' + }, + keyframes: { + wiggle: { + '0%, 100%': { transform: 'rotate(-3deg)' }, + '50%': { transform: 'rotate(3deg)' } + } + }, + animation: { + wiggle: 'wiggle 0.2s ease-in-out infinite' + } + } + }, + variants: { + extend: { + animation: ['hover', 'focus'] + } + }, + plugins: [] +} diff --git a/packages/vuetom/tsconfig.json b/packages/vuetom/tsconfig.json new file mode 100644 index 0000000..346ea88 --- /dev/null +++ b/packages/vuetom/tsconfig.json @@ -0,0 +1,21 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": ".", + "baseUrl": ".", + "outDir": "./dist", + "target": "esnext", + "module": "esnext", + "moduleResolution": "nodenext", + // "declaration": true, + // "declarationDir": "./dist/types", + "jsx": "preserve", + "lib": ["ESNext", "DOM"], + "types": ["vite/client"], + "paths": { + "vuetom": ["index.ts"] + } + }, + "include": ["."], + "exclude": ["./gulpfile.ts"] +} \ No newline at end of file diff --git a/packages/vuetom/types/index.d.ts b/packages/vuetom/types/index.d.ts new file mode 100644 index 0000000..6e9d778 --- /dev/null +++ b/packages/vuetom/types/index.d.ts @@ -0,0 +1,127 @@ +import { DefaultTheme, Theme } from 'vitepress' + +import type { DefineComponent } from 'vue' + +declare const theme: Theme + +export const BlogTheme: Theme + +// siderbar + +export type VtSiderbarItem = { + text: string + children?: VtSiderbarItem[] + link?: string +} + +// navbar + +export interface VtNavItemWithLink extends DefaultTheme.NavItemBase { + lang: string +} + +export interface VtNavItemWithChildren extends DefaultTheme.NavItemBase { + items: VtNavItemWithLink[] +} + +export type VtNavItem = VtNavItemWithLink | VtNavItemWithChildren + +// theme config + +export declare interface VuetomThemeConfig extends DefaultTheme.Config { + + sidebar?: VtSiderbarItem[] | {}; + + nav?: VtNavItem[] | {}; + + pages? : VtSiderbarItem[] | {}; + + /** + * Home Logo image + * + * @example '/logo/vuetom-logo-m.png' + */ + logoImg?: string; + + /** + * Home background image + * + * @example '/imgs/homg-bg01.jpg' + */ + bgImg?: string; + + /** + * Colors around home background + * + * @example '0,0,0' + */ + bgColor?: string; + + /** + * Home background transparency + * + * @example 0.6 + */ + bgOpacity?: 0.1|0.2|0.3|0.4|0.5|0.6|0.7|0.8|0.9|1.0; + + /** + * Whether background flashing is on + * + * @example false + */ + flashEnable?: boolean; + + /** + * Background flashing top and right colors + * + * @example ['238,17,17', '0,98,255'] + */ + flashColor?: string | Array; + + /** + * Whether to turn on poor visual effect + * + * @example true + */ + parallaxEnable?: boolean; + + /** + * Page background image enable + * + * @example true + */ + pageBgEnable?: boolean; + + /** + * Page background transparency + * + * @example 0.8 + */ + pageBgOpacity?: 0.1|0.2|0.3|0.4|0.5|0.6|0.7|0.8|0.9|1.0; + + /** + * Home features background + * + * @example ['#06cdff30', 'rgba(223,7,107,.3)'] + */ + featuresColor?: string | Array; + + /** + * Blog Avatar Image Url + * + * @example '/imgs/avatar.jpg' + */ + avatar?: string; + + /** + * Blog Author Name + * + * @example 'Vuetom' + */ + author?: string; + +} + +export * from './shim.d.ts' + +export default theme diff --git a/packages/vuetom/types/shim.d.ts b/packages/vuetom/types/shim.d.ts new file mode 100644 index 0000000..96b9bd3 --- /dev/null +++ b/packages/vuetom/types/shim.d.ts @@ -0,0 +1,29 @@ +declare const __VP_HASH_MAP__: Record +declare const __ALGOLIA__: boolean +declare const __CARBON__: boolean +declare const __VUE_PROD_DEVTOOLS__: boolean + +declare module '*.vue' { + import { ComponentOptions } from 'vue' + + const comp: ComponentOptions + export default comp +} + +declare module '@siteData' { + import type { SiteData } from 'vitepress' + + const data: SiteData + export default data +} + +declare module '@theme/index' { + import type { Theme } from 'vitepress' + + const theme: Theme + export default theme +} + +declare interface Window { + __VP_HASH_MAP__: Record +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..bbca8ff --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,7074 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@types/gulp': + specifier: ^4.0.10 + version: 4.0.17 + '@types/gulp-autoprefixer': + specifier: 0.0.33 + version: 0.0.33 + '@types/gulp-clean-css': + specifier: 4.3.0 + version: 4.3.0 + '@types/gulp-rename': + specifier: 2.0.1 + version: 2.0.1 + '@types/gulp-sass': + specifier: 5.0.0 + version: 5.0.0 + '@typescript-eslint/eslint-plugin': + specifier: ^5.46.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^5.46.0 + version: 5.62.0(eslint@8.57.1)(typescript@4.9.5) + chalk: + specifier: ^5.2.0 + version: 5.3.0 + consola: + specifier: ^2.15.3 + version: 2.15.3 + cross-env: + specifier: 7.0.3 + version: 7.0.3 + eslint: + specifier: ^8.29.0 + version: 8.57.1 + eslint-config-airbnb-base: + specifier: ^15.0.0 + version: 15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1) + eslint-define-config: + specifier: 1.12.0 + version: 1.12.0 + eslint-plugin-import: + specifier: ^2.26.0 + version: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1) + eslint-plugin-vue: + specifier: ^9.8.0 + version: 9.28.0(eslint@8.57.1) + fast-glob: + specifier: ^3.2.12 + version: 3.3.2 + fs-extra: + specifier: ^11.1.0 + version: 11.2.0 + gulp: + specifier: ^4.0.2 + version: 4.0.2 + gulp-autoprefixer: + specifier: 8.0.0 + version: 8.0.0(gulp@4.0.2) + gulp-clean-css: + specifier: 4.3.0 + version: 4.3.0 + gulp-rename: + specifier: 2.0.0 + version: 2.0.0 + gulp-sass: + specifier: 5.1.0 + version: 5.1.0 + http-proxy-middleware: + specifier: ^2.0.6 + version: 2.0.7 + prettier: + specifier: 2.8.1 + version: 2.8.1 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + sass: + specifier: ^1.56.2 + version: 1.79.4 + tsx: + specifier: ^3.12.1 + version: 3.14.0 + typescript: + specifier: ^4.9.4 + version: 4.9.5 + + packages/blog: + devDependencies: + sass: + specifier: ^1.56.1 + version: 1.79.4 + vite: + specifier: ^3.2.5 + version: 3.2.11(@types/node@22.7.5)(sass@1.79.4) + vitepress: + specifier: ^1.0.0-alpha.30 + version: 1.0.0-alpha.30(@algolia/client-search@4.24.0)(@types/node@22.7.5)(sass@1.79.4)(search-insights@2.17.2)(typescript@4.9.5) + vitepress-theme-vuetom: + specifier: workspace:* + version: link:../vuetom + + packages/docs: + dependencies: + '@vueuse/core': + specifier: ^9.6.0 + version: 9.13.0(vue@3.5.11(typescript@4.9.5)) + axios: + specifier: 1.2.1 + version: 1.2.1 + clipboard-copy: + specifier: 4.0.1 + version: 4.0.1 + element-plus: + specifier: ^2.2.26 + version: 2.8.4(vue@3.5.11(typescript@4.9.5)) + marked: + specifier: ^4.2.4 + version: 4.3.0 + normalize.css: + specifier: 8.0.1 + version: 8.0.1 + nprogress: + specifier: 0.2.0 + version: 0.2.0 + prismjs: + specifier: ^1.29.0 + version: 1.29.0 + vue: + specifier: ^3.2.45 + version: 3.5.11(typescript@4.9.5) + devDependencies: + '@crowdin/cli': + specifier: ^3.9.1 + version: 3.19.4 + '@types/markdown-it': + specifier: 12.2.3 + version: 12.2.3 + chalk: + specifier: 4.1.2 + version: 4.1.2 + escape-html: + specifier: 1.0.3 + version: 1.0.3 + lodash: + specifier: ^4.17.20 + version: 4.17.21 + markdown-it: + specifier: 13.0.1 + version: 13.0.1 + markdown-it-container: + specifier: 3.0.0 + version: 3.0.0 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + sass: + specifier: ^1.56.2 + version: 1.79.4 + vitepress: + specifier: ^1.0.0-alpha.30 + version: 1.0.0-alpha.30(@algolia/client-search@4.24.0)(@types/node@22.7.5)(sass@1.79.4)(search-insights@2.17.2)(typescript@4.9.5) + vitepress-theme-vuetom: + specifier: ^2.3.0 + version: 2.3.0(@types/node@22.7.5)(sass@1.79.4)(typescript@4.9.5)(vitepress@1.0.0-alpha.30(@types/node@22.7.5)(sass@1.79.4)(typescript@4.9.5)) + + packages/vuetom: + dependencies: + '@docsearch/css': + specifier: ^3.3.0 + version: 3.6.2 + '@docsearch/js': + specifier: ^3.3.0 + version: 3.6.2(@algolia/client-search@4.24.0)(search-insights@2.17.2) + '@vueuse/components': + specifier: ^9.6.0 + version: 9.13.0(vue@3.5.11(typescript@4.9.5)) + '@vueuse/core': + specifier: ^9.6.0 + version: 9.13.0(vue@3.5.11(typescript@4.9.5)) + body-scroll-lock: + specifier: ^4.0.0-beta.0 + version: 4.0.0-beta.0 + nprogress: + specifier: ^0.2.0 + version: 0.2.0 + shiki: + specifier: ^0.11.1 + version: 0.11.1 + vite: + specifier: ^3.2.5 + version: 3.2.11(@types/node@22.7.5)(sass@1.79.4) + vitepress: + specifier: 1.0.0-alpha.30 + version: 1.0.0-alpha.30(@algolia/client-search@4.24.0)(@types/node@22.7.5)(sass@1.79.4)(search-insights@2.17.2)(typescript@4.9.5) + vue: + specifier: ^3.2.45 + version: 3.5.11(typescript@4.9.5) + devDependencies: + '@esbuild-kit/cjs-loader': + specifier: ^2.2.1 + version: 2.4.4 + '@types/nprogress': + specifier: ^0.2.0 + version: 0.2.3 + autoprefixer: + specifier: ^10.4.13 + version: 10.4.20(postcss@8.4.47) + postcss: + specifier: ^8.4.19 + version: 8.4.47 + tailwindcss: + specifier: ^3.2.4 + version: 3.4.13 + +packages: + + '@algolia/autocomplete-core@1.9.3': + resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} + + '@algolia/autocomplete-plugin-algolia-insights@1.9.3': + resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} + peerDependencies: + search-insights: '>= 1 < 3' + + '@algolia/autocomplete-preset-algolia@1.9.3': + resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/autocomplete-shared@1.9.3': + resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/cache-browser-local-storage@4.24.0': + resolution: {integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==} + + '@algolia/cache-common@4.24.0': + resolution: {integrity: sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==} + + '@algolia/cache-in-memory@4.24.0': + resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==} + + '@algolia/client-account@4.24.0': + resolution: {integrity: sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==} + + '@algolia/client-analytics@4.24.0': + resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==} + + '@algolia/client-common@4.24.0': + resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==} + + '@algolia/client-personalization@4.24.0': + resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==} + + '@algolia/client-search@4.24.0': + resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==} + + '@algolia/logger-common@4.24.0': + resolution: {integrity: sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==} + + '@algolia/logger-console@4.24.0': + resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==} + + '@algolia/recommend@4.24.0': + resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==} + + '@algolia/requester-browser-xhr@4.24.0': + resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==} + + '@algolia/requester-common@4.24.0': + resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==} + + '@algolia/requester-node-http@4.24.0': + resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==} + + '@algolia/transporter@4.24.0': + resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==} + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@babel/helper-string-parser@7.25.7': + resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.7': + resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.25.7': + resolution: {integrity: sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/types@7.25.7': + resolution: {integrity: sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==} + engines: {node: '>=6.9.0'} + + '@crowdin/cli@3.19.4': + resolution: {integrity: sha512-j0SiRGKOH/Pa/TdBeIxBBRrByHPqmVqWVo/LSjnri1lLPGywjcu9kB+pib7P4wmI00jgcVu+80yGdun5zRcDNQ==} + hasBin: true + + '@ctrl/tinycolor@3.6.1': + resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} + engines: {node: '>=10'} + + '@docsearch/css@3.6.2': + resolution: {integrity: sha512-vKNZepO2j7MrYBTZIGXvlUOIR+v9KRf70FApRgovWrj3GTs1EITz/Xb0AOlm1xsQBp16clVZj1SY/qaOJbQtZw==} + + '@docsearch/js@3.6.2': + resolution: {integrity: sha512-pS4YZF+VzUogYrkblCucQ0Oy2m8Wggk8Kk7lECmZM60hTbaydSIhJTTiCrmoxtBqV8wxORnOqcqqOfbmkkQEcA==} + + '@docsearch/react@3.6.2': + resolution: {integrity: sha512-rtZce46OOkVflCQH71IdbXSFK+S8iJZlUF56XBW5rIgx/eG5qoomC7Ag3anZson1bBac/JFQn7XOBfved/IMRA==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true + + '@element-plus/icons-vue@2.3.1': + resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==} + peerDependencies: + vue: ^3.2.0 + + '@esbuild-kit/cjs-loader@2.4.4': + resolution: {integrity: sha512-NfsJX4PdzhwSkfJukczyUiZGc7zNNWZcEAyqeISpDnn0PTfzMJR1aR8xAIPskBejIxBJbIgCCMzbaYa9SXepIg==} + deprecated: 'Merged into tsx: https://tsx.is' + + '@esbuild-kit/core-utils@3.3.2': + resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} + deprecated: 'Merged into tsx: https://tsx.is' + + '@esbuild/android-arm64@0.18.20': + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.15.18': + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.18.20': + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.18.20': + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.18.20': + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.18.20': + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.18.20': + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.18.20': + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.18.20': + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.18.20': + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.18.20': + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.15.18': + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.18.20': + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.18.20': + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.18.20': + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.18.20': + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.18.20': + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.18.20': + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.18.20': + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.18.20': + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.18.20': + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.18.20': + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.18.20': + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.18.20': + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.11.1': + resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@floating-ui/core@1.6.8': + resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + + '@floating-ui/dom@1.6.11': + resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==} + + '@floating-ui/utils@0.2.8': + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@sxzz/popperjs-es@2.11.7': + resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} + + '@types/clean-css@4.2.11': + resolution: {integrity: sha512-Y8n81lQVTAfP2TOdtJJEsCoYl1AnOkqDqMvXb9/7pfgZZ7r8YrEyurrAvAoAjHOGXKRybay+5CsExqIH6liccw==} + + '@types/expect@1.20.4': + resolution: {integrity: sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==} + + '@types/glob-stream@8.0.2': + resolution: {integrity: sha512-kyuRfGE+yiSJWzSO3t74rXxdZNdYfLcllO0IUha4eX1fl40pm9L02Q/TEc3mykTLjoWz4STBNwYnUWdFu3I0DA==} + + '@types/gulp-autoprefixer@0.0.33': + resolution: {integrity: sha512-FgunPm1uMroC/w9FCxtQhPPskR/WvnT+sNPxnyldwNXjq8K5ktzZAOqATyrYk0jTgae793uc+k5vsGV6Q+G7xA==} + + '@types/gulp-clean-css@4.3.0': + resolution: {integrity: sha512-aRV2BvZA+X/SdgONQW4OkIzInYhvSqeUCiLfwc3VCD0/pxQT9xAadwHmtYGF2kc66cD4uSPmE+s4JYFvhHLaUA==} + + '@types/gulp-rename@2.0.1': + resolution: {integrity: sha512-9ZjeS2RHEnmBmTcyi2+oeye3BgCsWhvi4uv3qCnAg8i6plOuRdaeNxjOves0ELysEXYLBl7bCl5fbVs7AZtgTA==} + + '@types/gulp-sass@5.0.0': + resolution: {integrity: sha512-7p7nT+IKDREyJzTH13/FC/j3fobDBZTclSJFrgAJA+qzNZgzCENAx3HeiO4N7QlraLRqx44u3OR0Aq0Jw4wz8Q==} + + '@types/gulp@4.0.17': + resolution: {integrity: sha512-+pKQynu2C/HS16kgmDlAicjtFYP8kaa86eE9P0Ae7GB5W29we/E2TIdbOWtEZD5XkpY+jr8fyqfwO6SWZecLpQ==} + + '@types/http-proxy@1.17.15': + resolution: {integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + + '@types/lodash@4.17.10': + resolution: {integrity: sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ==} + + '@types/markdown-it@12.2.3': + resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} + + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + + '@types/node-sass@4.11.7': + resolution: {integrity: sha512-QY0sXZGPRzJ2obo66f9zB6S0Uo9PRdcoPKPbyftSoKXub90s4ut/JK3fYHOqmhYhRRVEB3P5o5rEnq2/bWBdeg==} + + '@types/node@22.7.5': + resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} + + '@types/nprogress@0.2.3': + resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==} + + '@types/picomatch@3.0.1': + resolution: {integrity: sha512-1MRgzpzY0hOp9pW/kLRxeQhUWwil6gnrUYd3oEpeYBqp/FexhaCPv3F8LsYr47gtUU45fO2cm1dbwkSrHEo8Uw==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + '@types/streamx@2.9.5': + resolution: {integrity: sha512-IHYsa6jYrck8VEdSwpY141FTTf6D7boPeMq9jy4qazNrFMA4VbRz/sw5LSsfR7jwdDcx0QKWkUexZvsWBC2eIQ==} + + '@types/undertaker-registry@1.0.4': + resolution: {integrity: sha512-tW77pHh2TU4uebWXWeEM5laiw8BuJ7pyJYDh6xenOs75nhny2kVgwYbegJ4BoLMYsIrXaBpKYaPdYO3/udG+hg==} + + '@types/undertaker@1.2.11': + resolution: {integrity: sha512-j1Z0V2ByRHr8ZK7eOeGq0LGkkdthNFW0uAZGY22iRkNQNL9/vAV0yFPr1QN3FM/peY5bxs9P+1f0PYJTQVa5iA==} + + '@types/vinyl-fs@3.0.5': + resolution: {integrity: sha512-ckYz9giHgV6U10RFuf9WsDQ3X86EFougapxHmmoxLK7e6ICQqO8CE+4V/3lBN148V5N1pb4nQMmMjyScleVsig==} + + '@types/vinyl@2.0.12': + resolution: {integrity: sha512-Sr2fYMBUVGYq8kj3UthXFAu5UN6ZW+rYr4NACjZQJvHvj+c8lYv0CahmZ2P/r7iUkN44gGUBwqxZkrKXYPb7cw==} + + '@types/web-bluetooth@0.0.16': + resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} + + '@typescript-eslint/eslint-plugin@5.62.0': + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@5.62.0': + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@5.62.0': + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/type-utils@5.62.0': + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@5.62.0': + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@typescript-eslint/visitor-keys@5.62.0': + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@vitejs/plugin-vue@3.2.0': + resolution: {integrity: sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^3.0.0 + vue: ^3.2.25 + + '@vue/compiler-core@3.5.11': + resolution: {integrity: sha512-PwAdxs7/9Hc3ieBO12tXzmTD+Ln4qhT/56S+8DvrrZ4kLDn4Z/AMUr8tXJD0axiJBS0RKIoNaR0yMuQB9v9Udg==} + + '@vue/compiler-dom@3.5.11': + resolution: {integrity: sha512-pyGf8zdbDDRkBrEzf8p7BQlMKNNF5Fk/Cf/fQ6PiUz9at4OaUfyXW0dGJTo2Vl1f5U9jSLCNf0EZJEogLXoeew==} + + '@vue/compiler-sfc@3.5.11': + resolution: {integrity: sha512-gsbBtT4N9ANXXepprle+X9YLg2htQk1sqH/qGJ/EApl+dgpUBdTv3yP7YlR535uHZY3n6XaR0/bKo0BgwwDniw==} + + '@vue/compiler-ssr@3.5.11': + resolution: {integrity: sha512-P4+GPjOuC2aFTk1Z4WANvEhyOykcvEd5bIj2KVNGKGfM745LaXGr++5njpdBTzVz5pZifdlR1kpYSJJpIlSePA==} + + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + + '@vue/reactivity@3.5.11': + resolution: {integrity: sha512-Nqo5VZEn8MJWlCce8XoyVqHZbd5P2NH+yuAaFzuNSR96I+y1cnuUiq7xfSG+kyvLSiWmaHTKP1r3OZY4mMD50w==} + + '@vue/runtime-core@3.5.11': + resolution: {integrity: sha512-7PsxFGqwfDhfhh0OcDWBG1DaIQIVOLgkwA5q6MtkPiDFjp5gohVnJEahSktwSFLq7R5PtxDKy6WKURVN1UDbzA==} + + '@vue/runtime-dom@3.5.11': + resolution: {integrity: sha512-GNghjecT6IrGf0UhuYmpgaOlN7kxzQBhxWEn08c/SQDxv1yy4IXI1bn81JgEpQ4IXjRxWtPyI8x0/7TF5rPfYQ==} + + '@vue/server-renderer@3.5.11': + resolution: {integrity: sha512-cVOwYBxR7Wb1B1FoxYvtjJD8X/9E5nlH4VSkJy2uMA1MzYNdzAAB//l8nrmN9py/4aP+3NjWukf9PZ3TeWULaA==} + peerDependencies: + vue: 3.5.11 + + '@vue/shared@3.5.11': + resolution: {integrity: sha512-W8GgysJVnFo81FthhzurdRAWP/byq3q2qIw70e0JWblzVhjgOMiC2GyovXrZTFQJnFVryYaKGP3Tc9vYzYm6PQ==} + + '@vueuse/components@9.13.0': + resolution: {integrity: sha512-UJ8PjQ4SGb2rsVIy9vhEc6aCu+3+2cc+xEfGNX8/M1NKIuL2Vo6c2Kc2fYFaRzWZkP8HWXu+IcwvnAzL44IEFA==} + + '@vueuse/core@9.13.0': + resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} + + '@vueuse/metadata@9.13.0': + resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} + + '@vueuse/shared@9.13.0': + resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + algoliasearch@4.24.0: + resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==} + + ansi-colors@1.1.0: + resolution: {integrity: sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==} + engines: {node: '>=0.10.0'} + + ansi-gray@0.1.1: + resolution: {integrity: sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==} + engines: {node: '>=0.10.0'} + + ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + ansi-wrap@0.1.0: + resolution: {integrity: sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==} + engines: {node: '>=0.10.0'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@2.0.0: + resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + append-buffer@1.0.2: + resolution: {integrity: sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==} + engines: {node: '>=0.10.0'} + + archy@1.0.0: + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + + arr-filter@1.1.2: + resolution: {integrity: sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==} + engines: {node: '>=0.10.0'} + + arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + + arr-map@2.0.2: + resolution: {integrity: sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==} + engines: {node: '>=0.10.0'} + + arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + + array-each@1.0.1: + resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} + engines: {node: '>=0.10.0'} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array-initial@1.1.0: + resolution: {integrity: sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==} + engines: {node: '>=0.10.0'} + + array-last@1.3.0: + resolution: {integrity: sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==} + engines: {node: '>=0.10.0'} + + array-slice@1.1.0: + resolution: {integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==} + engines: {node: '>=0.10.0'} + + array-sort@1.0.0: + resolution: {integrity: sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==} + engines: {node: '>=0.10.0'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + + assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + + async-done@1.3.2: + resolution: {integrity: sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==} + engines: {node: '>= 0.10'} + + async-each@1.0.6: + resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} + + async-settle@1.0.0: + resolution: {integrity: sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==} + engines: {node: '>= 0.10'} + + async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axios@1.2.1: + resolution: {integrity: sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A==} + + bach@1.2.0: + resolution: {integrity: sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==} + engines: {node: '>= 0.10'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + + binary-extensions@1.13.1: + resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} + engines: {node: '>=0.10.0'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + body-scroll-lock@4.0.0-beta.0: + resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.0: + resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-equal@1.0.1: + resolution: {integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==} + engines: {node: '>=0.4'} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase@3.0.0: + resolution: {integrity: sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==} + engines: {node: '>=0.10.0'} + + caniuse-lite@1.0.30001667: + resolution: {integrity: sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + chokidar@2.1.8: + resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + engines: {node: '>= 14.16.0'} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + + clean-css@4.2.3: + resolution: {integrity: sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==} + engines: {node: '>= 4.0'} + + clipboard-copy@4.0.1: + resolution: {integrity: sha512-wOlqdqziE/NNTUJsfSgXmBMIrYmfd5V0HCGsR8uAKHcg+h9NENWINcfRjtWGU77wDHC8B8ijV4hMTGYbrKovng==} + + cliui@3.2.0: + resolution: {integrity: sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==} + + clone-buffer@1.0.0: + resolution: {integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==} + engines: {node: '>= 0.10'} + + clone-stats@1.0.0: + resolution: {integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==} + + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + + cloneable-readable@1.1.3: + resolution: {integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==} + + code-point-at@1.1.0: + resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} + engines: {node: '>=0.10.0'} + + collection-map@1.0.0: + resolution: {integrity: sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==} + engines: {node: '>=0.10.0'} + + collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + command-exists-promise@2.0.2: + resolution: {integrity: sha512-T6PB6vdFrwnHXg/I0kivM3DqaCGZLjjYSOe0a5WgFKcz1sOnmOeIjnhQPXVXX3QjVbLyTJ85lJkX6lUpukTzaA==} + engines: {node: '>=6'} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + + confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + + consola@2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + + copy-props@2.0.5: + resolution: {integrity: sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} + + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + default-compare@1.0.0: + resolution: {integrity: sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==} + engines: {node: '>=0.10.0'} + + default-resolution@2.0.0: + resolution: {integrity: sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==} + engines: {node: '>= 0.10'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + + define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + + define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-file@1.0.0: + resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} + engines: {node: '>=0.10.0'} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + + each-props@1.3.2: + resolution: {integrity: sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + electron-to-chromium@1.5.33: + resolution: {integrity: sha512-+cYTcFB1QqD4j4LegwLfpCNxifb6dDFUAwk6RsLusCwIaZI6or2f+q8rs5tTB2YC53HhOlIbEaqHMAAC8IOIwA==} + + element-plus@2.8.4: + resolution: {integrity: sha512-ZlVAdUOoJliv4kW3ntWnnSHMT+u/Os7mXJjk2xzOlqNeHaI2/ozlF+R58ZCEak8ZnDi6+5A2viWEYRsq64IuiA==} + peerDependencies: + vue: ^3.2.0 + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + entities@3.0.1: + resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} + engines: {node: '>=0.12'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + + es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + + es6-weak-map@2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + + esbuild-android-64@0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + esbuild-android-arm64@0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + esbuild-darwin-64@0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + esbuild-darwin-arm64@0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + esbuild-freebsd-64@0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + esbuild-freebsd-arm64@0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + esbuild-linux-32@0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + esbuild-linux-64@0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + esbuild-linux-arm64@0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + esbuild-linux-arm@0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + esbuild-linux-mips64le@0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + esbuild-linux-ppc64le@0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + esbuild-linux-riscv64@0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + esbuild-linux-s390x@0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + esbuild-netbsd-64@0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + esbuild-openbsd-64@0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + esbuild-sunos-64@0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + esbuild-windows-32@0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + esbuild-windows-64@0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + esbuild-windows-arm64@0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + esbuild@0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-airbnb-base@15.0.0: + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + + eslint-define-config@1.12.0: + resolution: {integrity: sha512-Kt9TcMbgsY9VRt7jIuw76KE/2RuD31eWB4Ubv6btXgU8NTSsbT6gZ8qzeiU+rAih/8sOl8Kt89spAZBMElu6qQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13', pnpm: '>= 7.0.0'} + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-module-utils@2.12.0: + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.31.0: + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-vue@9.28.0: + resolution: {integrity: sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + + fancy-log@1.3.3: + resolution: {integrity: sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==} + engines: {node: '>= 0.10'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@1.1.4: + resolution: {integrity: sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@1.1.2: + resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} + engines: {node: '>=0.10.0'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + findup-sync@2.0.0: + resolution: {integrity: sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==} + engines: {node: '>= 0.10'} + + findup-sync@3.0.0: + resolution: {integrity: sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==} + engines: {node: '>= 0.10'} + + fined@1.2.0: + resolution: {integrity: sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==} + engines: {node: '>= 0.10'} + + flagged-respawn@1.0.1: + resolution: {integrity: sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==} + engines: {node: '>= 0.10'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + flush-write-stream@1.1.1: + resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + + for-own@1.0.0: + resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==} + engines: {node: '>=0.10.0'} + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs-mkdirp-stream@1.0.0: + resolution: {integrity: sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==} + engines: {node: '>= 0.10'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@1.2.13: + resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} + engines: {node: '>= 4.0'} + os: [darwin] + deprecated: Upgrade to fsevents v2 to mitigate potential security issues + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + get-caller-file@1.0.3: + resolution: {integrity: sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + + get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + + glob-parent@3.1.0: + resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-stream@6.1.0: + resolution: {integrity: sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==} + engines: {node: '>= 0.10'} + + glob-watcher@5.0.5: + resolution: {integrity: sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==} + engines: {node: '>= 0.10'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + glogg@1.0.2: + resolution: {integrity: sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==} + engines: {node: '>= 0.10'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + gulp-autoprefixer@8.0.0: + resolution: {integrity: sha512-sVR++PIaXpa81p52dmmA/jt50bw0egmylK5mjagfgOJ8uLDGaF9tHyzvetkY9Uo0gBZUS5sVqN3kX/GlUKOyog==} + engines: {node: '>=12'} + peerDependencies: + gulp: '>=4' + peerDependenciesMeta: + gulp: + optional: true + + gulp-clean-css@4.3.0: + resolution: {integrity: sha512-mGyeT3qqFXTy61j0zOIciS4MkYziF2U594t2Vs9rUnpkEHqfu6aDITMp8xOvZcvdX61Uz3y1mVERRYmjzQF5fg==} + + gulp-cli@2.3.0: + resolution: {integrity: sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==} + engines: {node: '>= 0.10'} + hasBin: true + + gulp-rename@2.0.0: + resolution: {integrity: sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==} + engines: {node: '>=4'} + + gulp-sass@5.1.0: + resolution: {integrity: sha512-7VT0uaF+VZCmkNBglfe1b34bxn/AfcssquLKVDYnCDJ3xNBaW7cUuI3p3BQmoKcoKFrs9jdzUxyb+u+NGfL4OQ==} + engines: {node: '>=12'} + + gulp@4.0.2: + resolution: {integrity: sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==} + engines: {node: '>= 0.10'} + hasBin: true + + gulplog@1.0.0: + resolution: {integrity: sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==} + engines: {node: '>= 0.10'} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + + has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + + has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + + has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + http-proxy-middleware@2.0.7: + resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + + invert-kv@1.0.0: + resolution: {integrity: sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==} + engines: {node: '>=0.10.0'} + + is-absolute@1.0.0: + resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} + engines: {node: '>=0.10.0'} + + is-accessor-descriptor@1.0.1: + resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} + engines: {node: '>= 0.10'} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@1.0.1: + resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} + engines: {node: '>=0.10.0'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + + is-data-descriptor@1.0.1: + resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-descriptor@0.1.7: + resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} + engines: {node: '>= 0.4'} + + is-descriptor@1.0.3: + resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} + engines: {node: '>= 0.4'} + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@1.0.0: + resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@3.1.0: + resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-negated-glob@1.0.0: + resolution: {integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==} + engines: {node: '>=0.10.0'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + + is-number@4.0.0: + resolution: {integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-relative@1.0.0: + resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} + engines: {node: '>=0.10.0'} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-unc-path@1.0.0: + resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} + engines: {node: '>=0.10.0'} + + is-utf8@0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + + is-valid-glob@1.0.0: + resolution: {integrity: sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==} + engines: {node: '>=0.10.0'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + just-debounce@1.1.0: + resolution: {integrity: sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + + kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + + kind-of@5.1.0: + resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} + engines: {node: '>=0.10.0'} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + last-run@1.1.1: + resolution: {integrity: sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==} + engines: {node: '>= 0.10'} + + lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + + lcid@1.0.0: + resolution: {integrity: sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==} + engines: {node: '>=0.10.0'} + + lead@1.0.0: + resolution: {integrity: sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==} + engines: {node: '>= 0.10'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + liftoff@3.1.0: + resolution: {integrity: sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==} + engines: {node: '>= 0.8'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + linkify-it@4.0.1: + resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} + + load-json-file@1.1.0: + resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} + engines: {node: '>=0.10.0'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash-unified@1.0.3: + resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==} + peerDependencies: + '@types/lodash-es': '*' + lodash: '*' + lodash-es: '*' + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + + make-iterator@1.0.1: + resolution: {integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==} + engines: {node: '>=0.10.0'} + + map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + + map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + + markdown-it-container@3.0.0: + resolution: {integrity: sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==} + + markdown-it@13.0.1: + resolution: {integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==} + hasBin: true + + marked@4.3.0: + resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} + engines: {node: '>= 12'} + hasBin: true + + matchdep@2.0.0: + resolution: {integrity: sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==} + engines: {node: '>= 0.10.0'} + + mdurl@1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mute-stdout@1.0.1: + resolution: {integrity: sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==} + engines: {node: '>= 0.10'} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nan@2.20.0: + resolution: {integrity: sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + + natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + normalize-wheel-es@1.2.0: + resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} + + normalize.css@8.0.1: + resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==} + + now-and-later@2.0.1: + resolution: {integrity: sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==} + engines: {node: '>= 0.10'} + + nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + number-is-nan@1.0.1: + resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} + engines: {node: '>=0.10.0'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + object.defaults@1.1.0: + resolution: {integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==} + engines: {node: '>=0.10.0'} + + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.map@1.0.1: + resolution: {integrity: sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==} + engines: {node: '>=0.10.0'} + + object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + + object.reduce@1.0.1: + resolution: {integrity: sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==} + engines: {node: '>=0.10.0'} + + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ordered-read-streams@1.0.1: + resolution: {integrity: sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==} + + os-locale@1.4.0: + resolution: {integrity: sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==} + engines: {node: '>=0.10.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-filepath@1.0.2: + resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} + engines: {node: '>=0.8'} + + parse-json@2.2.0: + resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} + engines: {node: '>=0.10.0'} + + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + + pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + + path-dirname@1.0.2: + resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} + + path-exists@2.1.0: + resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==} + engines: {node: '>=0.10.0'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-root-regex@0.1.2: + resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} + engines: {node: '>=0.10.0'} + + path-root@0.1.1: + resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} + engines: {node: '>=0.10.0'} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-type@1.1.0: + resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} + engines: {node: '>=0.10.0'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pinkie-promise@2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + + pinkie@2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + plugin-error@1.0.1: + resolution: {integrity: sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==} + engines: {node: '>= 0.10'} + + posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + + preact@10.24.2: + resolution: {integrity: sha512-1cSoF0aCC8uaARATfrlz4VCBqE8LwZwRfLgkxJOQwAlQt6ayTmi0D9OF7nXid1POI5SZidFuG9CnlXbDfLqY/Q==} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@2.8.1: + resolution: {integrity: sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==} + engines: {node: '>=10.13.0'} + hasBin: true + + pretty-hrtime@1.0.3: + resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} + engines: {node: '>= 0.8'} + + prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pump@2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + + pumpify@1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + read-pkg-up@1.0.1: + resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} + engines: {node: '>=0.10.0'} + + read-pkg@1.1.0: + resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} + engines: {node: '>=0.10.0'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@2.2.1: + resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} + engines: {node: '>=0.10'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} + engines: {node: '>= 14.16.0'} + + rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + + regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + + regexp.prototype.flags@1.5.3: + resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} + engines: {node: '>= 0.4'} + + remove-bom-buffer@3.0.0: + resolution: {integrity: sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==} + engines: {node: '>=0.10.0'} + + remove-bom-stream@1.2.0: + resolution: {integrity: sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==} + engines: {node: '>= 0.10'} + + remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + + repeat-element@1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + + repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + + replace-ext@1.0.1: + resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} + engines: {node: '>= 0.10'} + + replace-ext@2.0.0: + resolution: {integrity: sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==} + engines: {node: '>= 10'} + + replace-homedir@1.0.0: + resolution: {integrity: sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==} + engines: {node: '>= 0.10'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-main-filename@1.0.1: + resolution: {integrity: sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-options@1.1.0: + resolution: {integrity: sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==} + engines: {node: '>= 0.10'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup@2.79.2: + resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==} + engines: {node: '>=10.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + + sass@1.79.4: + resolution: {integrity: sha512-K0QDSNPXgyqO4GZq2HO5Q70TLxTH6cIT59RdoCHMivrC8rqzaTw5ab9prjz9KUN1El4FLXrBXJhik61JR4HcGg==} + engines: {node: '>=14.0.0'} + hasBin: true + + search-insights@2.17.2: + resolution: {integrity: sha512-zFNpOpUO+tY2D85KrxJ+aqwnIfdEGi06UH2+xEb+Bp9Mwznmauqc9djbnBibJO5mpfUPPa8st6Sx65+vbeO45g==} + + semver-greatest-satisfied-range@1.1.0: + resolution: {integrity: sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==} + engines: {node: '>= 0.10'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + + shiki@0.11.1: + resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + + snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + + snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + sparkles@1.0.1: + resolution: {integrity: sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==} + engines: {node: '>= 0.10'} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + + split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + + stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + + static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + + stream-exhaust@1.0.2: + resolution: {integrity: sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==} + + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + + string-width@1.0.2: + resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} + engines: {node: '>=0.10.0'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@2.0.0: + resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} + engines: {node: '>=0.10.0'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + sver-compat@1.5.0: + resolution: {integrity: sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==} + + tailwindcss@3.4.13: + resolution: {integrity: sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==} + engines: {node: '>=14.0.0'} + hasBin: true + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + through2-filter@3.0.0: + resolution: {integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + through2@3.0.1: + resolution: {integrity: sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==} + + through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + + time-stamp@1.1.0: + resolution: {integrity: sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==} + engines: {node: '>=0.10.0'} + + to-absolute-glob@2.0.2: + resolution: {integrity: sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==} + engines: {node: '>=0.10.0'} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + + to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + + to-through@2.0.0: + resolution: {integrity: sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==} + engines: {node: '>= 0.10'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + + tsx@3.14.0: + resolution: {integrity: sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type@2.7.3: + resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} + + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + + uc.micro@1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + unc-path-regex@0.1.2: + resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} + engines: {node: '>=0.10.0'} + + undertaker-registry@1.0.1: + resolution: {integrity: sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==} + engines: {node: '>= 0.10'} + + undertaker@1.3.0: + resolution: {integrity: sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==} + engines: {node: '>= 0.10'} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + + unique-stream@2.3.1: + resolution: {integrity: sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + + upath@1.2.0: + resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} + engines: {node: '>=4'} + + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + + use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + v8flags@3.2.0: + resolution: {integrity: sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==} + engines: {node: '>= 0.10'} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + value-or-function@3.0.0: + resolution: {integrity: sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==} + engines: {node: '>= 0.10'} + + vinyl-fs@3.0.3: + resolution: {integrity: sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==} + engines: {node: '>= 0.10'} + + vinyl-sourcemap@1.1.0: + resolution: {integrity: sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==} + engines: {node: '>= 0.10'} + + vinyl-sourcemaps-apply@0.2.1: + resolution: {integrity: sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==} + + vinyl@2.2.1: + resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} + engines: {node: '>= 0.10'} + + vite@3.2.11: + resolution: {integrity: sha512-K/jGKL/PgbIgKCiJo5QbASQhFiV02X9Jh+Qq0AKCRCRKZtOTVi4t6wh75FDpGf2N9rYOnzH87OEFQNaFy6pdxQ==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitepress-theme-vuetom@2.3.0: + resolution: {integrity: sha512-BCBGQ1qhnH+nMWcQsD16JGIxA5iU+Cbz0IXztPuZrEF/tUO7IgVtCGVgn/fM1MdtJxvFRFuK9boR/vey4N4SNg==} + engines: {node: '>=16.0.0'} + peerDependencies: + vitepress: 1.0.0-alpha.30 + + vitepress@1.0.0-alpha.30: + resolution: {integrity: sha512-CjIqKkGAuvoP2IWBFIbYWyiMSHSGYvjPy7eDkdftawguv5a8w4AjM95VV4Lhyacev4AFcgK23FViibRluBMePw==} + hasBin: true + + vscode-oniguruma@1.7.0: + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} + + vscode-textmate@6.0.0: + resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==} + + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-eslint-parser@9.4.3: + resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + vue@3.5.11: + resolution: {integrity: sha512-/8Wurrd9J3lb72FTQS7gRMNQD4nztTtKPmuDuPuhqXmmpD6+skVjAeahNpVzsuky6Sy9gy7wn8UadqPtt9SQIg==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-module@1.0.0: + resolution: {integrity: sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@2.1.0: + resolution: {integrity: sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@3.2.2: + resolution: {integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@2.5.1: + resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@5.0.1: + resolution: {integrity: sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==} + + yargs@7.1.2: + resolution: {integrity: sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==} + + yauzl@3.1.3: + resolution: {integrity: sha512-JCCdmlJJWv7L0q/KylOekyRaUrdEoUxWkWVcgorosTROCFWiS9p2NNPE9Yb91ak7b1N5SxAZEliWpspbZccivw==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.2)': + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.2) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + + '@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.2)': + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + search-insights: 2.17.2 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + + '@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)': + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + '@algolia/client-search': 4.24.0 + algoliasearch: 4.24.0 + + '@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)': + dependencies: + '@algolia/client-search': 4.24.0 + algoliasearch: 4.24.0 + + '@algolia/cache-browser-local-storage@4.24.0': + dependencies: + '@algolia/cache-common': 4.24.0 + + '@algolia/cache-common@4.24.0': {} + + '@algolia/cache-in-memory@4.24.0': + dependencies: + '@algolia/cache-common': 4.24.0 + + '@algolia/client-account@4.24.0': + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/client-analytics@4.24.0': + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/client-common@4.24.0': + dependencies: + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/client-personalization@4.24.0': + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/client-search@4.24.0': + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/logger-common@4.24.0': {} + + '@algolia/logger-console@4.24.0': + dependencies: + '@algolia/logger-common': 4.24.0 + + '@algolia/recommend@4.24.0': + dependencies: + '@algolia/cache-browser-local-storage': 4.24.0 + '@algolia/cache-common': 4.24.0 + '@algolia/cache-in-memory': 4.24.0 + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/logger-console': 4.24.0 + '@algolia/requester-browser-xhr': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/requester-node-http': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/requester-browser-xhr@4.24.0': + dependencies: + '@algolia/requester-common': 4.24.0 + + '@algolia/requester-common@4.24.0': {} + + '@algolia/requester-node-http@4.24.0': + dependencies: + '@algolia/requester-common': 4.24.0 + + '@algolia/transporter@4.24.0': + dependencies: + '@algolia/cache-common': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + + '@alloc/quick-lru@5.2.0': {} + + '@babel/helper-string-parser@7.25.7': {} + + '@babel/helper-validator-identifier@7.25.7': {} + + '@babel/parser@7.25.7': + dependencies: + '@babel/types': 7.25.7 + + '@babel/types@7.25.7': + dependencies: + '@babel/helper-string-parser': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 + to-fast-properties: 2.0.0 + + '@crowdin/cli@3.19.4': + dependencies: + command-exists-promise: 2.0.2 + node-fetch: 2.7.0 + shelljs: 0.8.5 + tar: 6.2.1 + yauzl: 3.1.3 + transitivePeerDependencies: + - encoding + + '@ctrl/tinycolor@3.6.1': {} + + '@docsearch/css@3.6.2': {} + + '@docsearch/js@3.6.2(@algolia/client-search@4.24.0)(search-insights@2.17.2)': + dependencies: + '@docsearch/react': 3.6.2(@algolia/client-search@4.24.0)(search-insights@2.17.2) + preact: 10.24.2 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - react + - react-dom + - search-insights + + '@docsearch/react@3.6.2(@algolia/client-search@4.24.0)(search-insights@2.17.2)': + dependencies: + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.2) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + '@docsearch/css': 3.6.2 + algoliasearch: 4.24.0 + optionalDependencies: + search-insights: 2.17.2 + transitivePeerDependencies: + - '@algolia/client-search' + + '@element-plus/icons-vue@2.3.1(vue@3.5.11(typescript@4.9.5))': + dependencies: + vue: 3.5.11(typescript@4.9.5) + + '@esbuild-kit/cjs-loader@2.4.4': + dependencies: + '@esbuild-kit/core-utils': 3.3.2 + get-tsconfig: 4.8.1 + + '@esbuild-kit/core-utils@3.3.2': + dependencies: + esbuild: 0.18.20 + source-map-support: 0.5.21 + + '@esbuild/android-arm64@0.18.20': + optional: true + + '@esbuild/android-arm@0.15.18': + optional: true + + '@esbuild/android-arm@0.18.20': + optional: true + + '@esbuild/android-x64@0.18.20': + optional: true + + '@esbuild/darwin-arm64@0.18.20': + optional: true + + '@esbuild/darwin-x64@0.18.20': + optional: true + + '@esbuild/freebsd-arm64@0.18.20': + optional: true + + '@esbuild/freebsd-x64@0.18.20': + optional: true + + '@esbuild/linux-arm64@0.18.20': + optional: true + + '@esbuild/linux-arm@0.18.20': + optional: true + + '@esbuild/linux-ia32@0.18.20': + optional: true + + '@esbuild/linux-loong64@0.15.18': + optional: true + + '@esbuild/linux-loong64@0.18.20': + optional: true + + '@esbuild/linux-mips64el@0.18.20': + optional: true + + '@esbuild/linux-ppc64@0.18.20': + optional: true + + '@esbuild/linux-riscv64@0.18.20': + optional: true + + '@esbuild/linux-s390x@0.18.20': + optional: true + + '@esbuild/linux-x64@0.18.20': + optional: true + + '@esbuild/netbsd-x64@0.18.20': + optional: true + + '@esbuild/openbsd-x64@0.18.20': + optional: true + + '@esbuild/sunos-x64@0.18.20': + optional: true + + '@esbuild/win32-arm64@0.18.20': + optional: true + + '@esbuild/win32-ia32@0.18.20': + optional: true + + '@esbuild/win32-x64@0.18.20': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.11.1': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.3.7 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.1': {} + + '@floating-ui/core@1.6.8': + dependencies: + '@floating-ui/utils': 0.2.8 + + '@floating-ui/dom@1.6.11': + dependencies: + '@floating-ui/core': 1.6.8 + '@floating-ui/utils': 0.2.8 + + '@floating-ui/utils@0.2.8': {} + + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@rtsao/scc@1.1.0': {} + + '@sxzz/popperjs-es@2.11.7': {} + + '@types/clean-css@4.2.11': + dependencies: + '@types/node': 22.7.5 + source-map: 0.6.1 + + '@types/expect@1.20.4': {} + + '@types/glob-stream@8.0.2': + dependencies: + '@types/node': 22.7.5 + '@types/picomatch': 3.0.1 + '@types/streamx': 2.9.5 + + '@types/gulp-autoprefixer@0.0.33': + dependencies: + '@types/node': 22.7.5 + + '@types/gulp-clean-css@4.3.0': + dependencies: + '@types/clean-css': 4.2.11 + '@types/node': 22.7.5 + + '@types/gulp-rename@2.0.1': + dependencies: + '@types/node': 22.7.5 + '@types/vinyl': 2.0.12 + + '@types/gulp-sass@5.0.0': + dependencies: + '@types/node': 22.7.5 + '@types/node-sass': 4.11.7 + + '@types/gulp@4.0.17': + dependencies: + '@types/node': 22.7.5 + '@types/undertaker': 1.2.11 + '@types/vinyl-fs': 3.0.5 + chokidar: 3.6.0 + + '@types/http-proxy@1.17.15': + dependencies: + '@types/node': 22.7.5 + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/linkify-it@5.0.0': {} + + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.17.10 + + '@types/lodash@4.17.10': {} + + '@types/markdown-it@12.2.3': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + + '@types/mdurl@2.0.0': {} + + '@types/node-sass@4.11.7': + dependencies: + '@types/node': 22.7.5 + + '@types/node@22.7.5': + dependencies: + undici-types: 6.19.8 + + '@types/nprogress@0.2.3': {} + + '@types/picomatch@3.0.1': {} + + '@types/semver@7.5.8': {} + + '@types/streamx@2.9.5': + dependencies: + '@types/node': 22.7.5 + + '@types/undertaker-registry@1.0.4': {} + + '@types/undertaker@1.2.11': + dependencies: + '@types/node': 22.7.5 + '@types/undertaker-registry': 1.0.4 + async-done: 1.3.2 + + '@types/vinyl-fs@3.0.5': + dependencies: + '@types/glob-stream': 8.0.2 + '@types/node': 22.7.5 + '@types/vinyl': 2.0.12 + + '@types/vinyl@2.0.12': + dependencies: + '@types/expect': 1.20.4 + '@types/node': 22.7.5 + + '@types/web-bluetooth@0.0.16': {} + + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)': + dependencies: + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5) + debug: 4.3.7 + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare-lite: 1.4.0 + semver: 7.6.3 + tsutils: 3.21.0(typescript@4.9.5) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5)': + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + debug: 4.3.7 + eslint: 8.57.1 + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + + '@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@4.9.5)': + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5) + debug: 4.3.7 + eslint: 8.57.1 + tsutils: 3.21.0(typescript@4.9.5) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@5.62.0': {} + + '@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.7 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.6.3 + tsutils: 3.21.0(typescript@4.9.5) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@4.9.5)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + eslint: 8.57.1 + eslint-scope: 5.1.1 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + + '@ungap/structured-clone@1.2.0': {} + + '@vitejs/plugin-vue@3.2.0(vite@3.2.11(@types/node@22.7.5)(sass@1.79.4))(vue@3.5.11(typescript@4.9.5))': + dependencies: + vite: 3.2.11(@types/node@22.7.5)(sass@1.79.4) + vue: 3.5.11(typescript@4.9.5) + + '@vue/compiler-core@3.5.11': + dependencies: + '@babel/parser': 7.25.7 + '@vue/shared': 3.5.11 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.11': + dependencies: + '@vue/compiler-core': 3.5.11 + '@vue/shared': 3.5.11 + + '@vue/compiler-sfc@3.5.11': + dependencies: + '@babel/parser': 7.25.7 + '@vue/compiler-core': 3.5.11 + '@vue/compiler-dom': 3.5.11 + '@vue/compiler-ssr': 3.5.11 + '@vue/shared': 3.5.11 + estree-walker: 2.0.2 + magic-string: 0.30.11 + postcss: 8.4.47 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.11': + dependencies: + '@vue/compiler-dom': 3.5.11 + '@vue/shared': 3.5.11 + + '@vue/devtools-api@6.6.4': {} + + '@vue/reactivity@3.5.11': + dependencies: + '@vue/shared': 3.5.11 + + '@vue/runtime-core@3.5.11': + dependencies: + '@vue/reactivity': 3.5.11 + '@vue/shared': 3.5.11 + + '@vue/runtime-dom@3.5.11': + dependencies: + '@vue/reactivity': 3.5.11 + '@vue/runtime-core': 3.5.11 + '@vue/shared': 3.5.11 + csstype: 3.1.3 + + '@vue/server-renderer@3.5.11(vue@3.5.11(typescript@4.9.5))': + dependencies: + '@vue/compiler-ssr': 3.5.11 + '@vue/shared': 3.5.11 + vue: 3.5.11(typescript@4.9.5) + + '@vue/shared@3.5.11': {} + + '@vueuse/components@9.13.0(vue@3.5.11(typescript@4.9.5))': + dependencies: + '@vueuse/core': 9.13.0(vue@3.5.11(typescript@4.9.5)) + '@vueuse/shared': 9.13.0(vue@3.5.11(typescript@4.9.5)) + vue-demi: 0.14.10(vue@3.5.11(typescript@4.9.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/core@9.13.0(vue@3.5.11(typescript@4.9.5))': + dependencies: + '@types/web-bluetooth': 0.0.16 + '@vueuse/metadata': 9.13.0 + '@vueuse/shared': 9.13.0(vue@3.5.11(typescript@4.9.5)) + vue-demi: 0.14.10(vue@3.5.11(typescript@4.9.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/metadata@9.13.0': {} + + '@vueuse/shared@9.13.0(vue@3.5.11(typescript@4.9.5))': + dependencies: + vue-demi: 0.14.10(vue@3.5.11(typescript@4.9.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + acorn-jsx@5.3.2(acorn@8.12.1): + dependencies: + acorn: 8.12.1 + + acorn@8.12.1: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + algoliasearch@4.24.0: + dependencies: + '@algolia/cache-browser-local-storage': 4.24.0 + '@algolia/cache-common': 4.24.0 + '@algolia/cache-in-memory': 4.24.0 + '@algolia/client-account': 4.24.0 + '@algolia/client-analytics': 4.24.0 + '@algolia/client-common': 4.24.0 + '@algolia/client-personalization': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/logger-console': 4.24.0 + '@algolia/recommend': 4.24.0 + '@algolia/requester-browser-xhr': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/requester-node-http': 4.24.0 + '@algolia/transporter': 4.24.0 + + ansi-colors@1.1.0: + dependencies: + ansi-wrap: 0.1.0 + + ansi-gray@0.1.1: + dependencies: + ansi-wrap: 0.1.0 + + ansi-regex@2.1.1: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + ansi-wrap@0.1.0: {} + + any-promise@1.3.0: {} + + anymatch@2.0.0: + dependencies: + micromatch: 3.1.10 + normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + append-buffer@1.0.2: + dependencies: + buffer-equal: 1.0.1 + + archy@1.0.0: {} + + arg@5.0.2: {} + + argparse@2.0.1: {} + + arr-diff@4.0.0: {} + + arr-filter@1.1.2: + dependencies: + make-iterator: 1.0.1 + + arr-flatten@1.1.0: {} + + arr-map@2.0.2: + dependencies: + make-iterator: 1.0.1 + + arr-union@3.1.0: {} + + array-buffer-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + + array-each@1.0.1: {} + + array-includes@3.1.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + is-string: 1.0.7 + + array-initial@1.1.0: + dependencies: + array-slice: 1.1.0 + is-number: 4.0.0 + + array-last@1.3.0: + dependencies: + is-number: 4.0.0 + + array-slice@1.1.0: {} + + array-sort@1.0.0: + dependencies: + default-compare: 1.0.0 + get-value: 2.0.6 + kind-of: 5.1.0 + + array-union@2.1.0: {} + + array-unique@0.3.2: {} + + array.prototype.findlastindex@1.2.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + + array.prototype.flat@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + + array.prototype.flatmap@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + + arraybuffer.prototype.slice@1.0.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + + assign-symbols@1.0.0: {} + + async-done@1.3.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + process-nextick-args: 2.0.1 + stream-exhaust: 1.0.2 + + async-each@1.0.6: {} + + async-settle@1.0.0: + dependencies: + async-done: 1.3.2 + + async-validator@4.2.5: {} + + asynckit@0.4.0: {} + + atob@2.1.2: {} + + autoprefixer@10.4.20(postcss@8.4.47): + dependencies: + browserslist: 4.24.0 + caniuse-lite: 1.0.30001667 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.0 + postcss: 8.4.47 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + axios@1.2.1: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + bach@1.2.0: + dependencies: + arr-filter: 1.1.2 + arr-flatten: 1.1.0 + arr-map: 2.0.2 + array-each: 1.0.1 + array-initial: 1.1.0 + array-last: 1.3.0 + async-done: 1.3.2 + async-settle: 1.0.0 + now-and-later: 2.0.1 + + balanced-match@1.0.2: {} + + base@0.11.2: + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.1 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + + binary-extensions@1.13.1: {} + + binary-extensions@2.3.0: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + optional: true + + body-scroll-lock@4.0.0-beta.0: {} + + boolbase@1.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@2.3.2: + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.0: + dependencies: + caniuse-lite: 1.0.30001667 + electron-to-chromium: 1.5.33 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.0) + + buffer-crc32@0.2.13: {} + + buffer-equal@1.0.1: {} + + buffer-from@1.1.2: {} + + cache-base@1.0.1: + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.1 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + callsites@3.1.0: {} + + camelcase-css@2.0.1: {} + + camelcase@3.0.0: {} + + caniuse-lite@1.0.30001667: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + chokidar@2.1.8: + dependencies: + anymatch: 2.0.0 + async-each: 1.0.6 + braces: 2.3.2 + glob-parent: 3.1.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 4.0.3 + normalize-path: 3.0.0 + path-is-absolute: 1.0.1 + readdirp: 2.2.1 + upath: 1.2.0 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + 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 + + chokidar@4.0.1: + dependencies: + readdirp: 4.0.2 + + chownr@2.0.0: {} + + class-utils@0.3.6: + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + + clean-css@4.2.3: + dependencies: + source-map: 0.6.1 + + clipboard-copy@4.0.1: {} + + cliui@3.2.0: + dependencies: + string-width: 1.0.2 + strip-ansi: 3.0.1 + wrap-ansi: 2.1.0 + + clone-buffer@1.0.0: {} + + clone-stats@1.0.0: {} + + clone@2.1.2: {} + + cloneable-readable@1.1.3: + dependencies: + inherits: 2.0.4 + process-nextick-args: 2.0.1 + readable-stream: 2.3.8 + + code-point-at@1.1.0: {} + + collection-map@1.0.0: + dependencies: + arr-map: 2.0.2 + for-own: 1.0.0 + make-iterator: 1.0.1 + + collection-visit@1.0.0: + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + color-support@1.1.3: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + command-exists-promise@2.0.2: {} + + commander@4.1.1: {} + + component-emitter@1.3.1: {} + + concat-map@0.0.1: {} + + concat-stream@1.6.2: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + + confusing-browser-globals@1.0.11: {} + + consola@2.15.3: {} + + convert-source-map@1.9.0: {} + + copy-descriptor@0.1.1: {} + + copy-props@2.0.5: + dependencies: + each-props: 1.3.2 + is-plain-object: 5.0.0 + + core-util-is@1.0.3: {} + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.3 + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + d@1.0.2: + dependencies: + es5-ext: 0.10.64 + type: 2.7.3 + + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + dayjs@1.11.13: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + decamelize@1.2.0: {} + + decode-uri-component@0.2.2: {} + + deep-is@0.1.4: {} + + default-compare@1.0.0: + dependencies: + kind-of: 5.1.0 + + default-resolution@2.0.0: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + define-property@0.2.5: + dependencies: + is-descriptor: 0.1.7 + + define-property@1.0.0: + dependencies: + is-descriptor: 1.0.3 + + define-property@2.0.2: + dependencies: + is-descriptor: 1.0.3 + isobject: 3.0.1 + + delayed-stream@1.0.0: {} + + detect-file@1.0.0: {} + + didyoumean@1.2.2: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dlv@1.1.3: {} + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + duplexify@3.7.1: + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.8 + stream-shift: 1.0.3 + + each-props@1.3.2: + dependencies: + is-plain-object: 2.0.4 + object.defaults: 1.1.0 + + eastasianwidth@0.2.0: {} + + electron-to-chromium@1.5.33: {} + + element-plus@2.8.4(vue@3.5.11(typescript@4.9.5)): + dependencies: + '@ctrl/tinycolor': 3.6.1 + '@element-plus/icons-vue': 2.3.1(vue@3.5.11(typescript@4.9.5)) + '@floating-ui/dom': 1.6.11 + '@popperjs/core': '@sxzz/popperjs-es@2.11.7' + '@types/lodash': 4.17.10 + '@types/lodash-es': 4.17.12 + '@vueuse/core': 9.13.0(vue@3.5.11(typescript@4.9.5)) + async-validator: 4.2.5 + dayjs: 1.11.13 + escape-html: 1.0.3 + lodash: 4.17.21 + lodash-es: 4.17.21 + lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21) + memoize-one: 6.0.0 + normalize-wheel-es: 1.2.0 + vue: 3.5.11(typescript@4.9.5) + transitivePeerDependencies: + - '@vue/composition-api' + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + entities@3.0.1: {} + + entities@4.5.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.23.3: + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.2 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.3 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.0.3: + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.0.2: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.2.1: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + + es5-ext@0.10.64: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 + next-tick: 1.1.0 + + es6-iterator@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 + + es6-symbol@3.1.4: + dependencies: + d: 1.0.2 + ext: 1.7.0 + + es6-weak-map@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + + esbuild-android-64@0.15.18: + optional: true + + esbuild-android-arm64@0.15.18: + optional: true + + esbuild-darwin-64@0.15.18: + optional: true + + esbuild-darwin-arm64@0.15.18: + optional: true + + esbuild-freebsd-64@0.15.18: + optional: true + + esbuild-freebsd-arm64@0.15.18: + optional: true + + esbuild-linux-32@0.15.18: + optional: true + + esbuild-linux-64@0.15.18: + optional: true + + esbuild-linux-arm64@0.15.18: + optional: true + + esbuild-linux-arm@0.15.18: + optional: true + + esbuild-linux-mips64le@0.15.18: + optional: true + + esbuild-linux-ppc64le@0.15.18: + optional: true + + esbuild-linux-riscv64@0.15.18: + optional: true + + esbuild-linux-s390x@0.15.18: + optional: true + + esbuild-netbsd-64@0.15.18: + optional: true + + esbuild-openbsd-64@0.15.18: + optional: true + + esbuild-sunos-64@0.15.18: + optional: true + + esbuild-windows-32@0.15.18: + optional: true + + esbuild-windows-64@0.15.18: + optional: true + + esbuild-windows-arm64@0.15.18: + optional: true + + esbuild@0.15.18: + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + + esbuild@0.18.20: + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1): + dependencies: + confusing-browser-globals: 1.0.11 + eslint: 8.57.1 + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1) + object.assign: 4.1.5 + object.entries: 1.1.8 + semver: 6.3.1 + + eslint-define-config@1.12.0: {} + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.15.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@4.9.5) + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) + hasown: 2.0.2 + is-core-module: 2.15.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + string.prototype.trimend: 1.0.8 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@4.9.5) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-vue@9.28.0(eslint@8.57.1): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) + eslint: 8.57.1 + globals: 13.24.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.1.2 + semver: 7.6.3 + vue-eslint-parser: 9.4.3(eslint@8.57.1) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) + '@eslint-community/regexpp': 4.11.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.7 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + esniff@2.0.1: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.3 + + espree@9.6.1: + dependencies: + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 3.4.3 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + event-emitter@0.3.5: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + + eventemitter3@4.0.7: {} + + expand-brackets@2.1.4: + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + + ext@1.7.0: + dependencies: + type: 2.7.3 + + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + extend-shallow@3.0.2: + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + + extend@3.0.2: {} + + extglob@2.0.4: + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + fancy-log@1.3.3: + dependencies: + ansi-gray: 0.1.1 + color-support: 1.1.3 + parse-node-version: 1.0.1 + time-stamp: 1.1.0 + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@1.1.4: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + file-uri-to-path@1.0.0: + optional: true + + fill-range@4.0.0: + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@1.1.2: + dependencies: + path-exists: 2.1.0 + pinkie-promise: 2.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + findup-sync@2.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 3.1.0 + micromatch: 3.1.10 + resolve-dir: 1.0.1 + transitivePeerDependencies: + - supports-color + + findup-sync@3.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 4.0.3 + micromatch: 3.1.10 + resolve-dir: 1.0.1 + transitivePeerDependencies: + - supports-color + + fined@1.2.0: + dependencies: + expand-tilde: 2.0.2 + is-plain-object: 2.0.4 + object.defaults: 1.1.0 + object.pick: 1.3.0 + parse-filepath: 1.0.2 + + flagged-respawn@1.0.1: {} + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + + flatted@3.3.1: {} + + flush-write-stream@1.1.1: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + + follow-redirects@1.15.9: {} + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + for-in@1.0.2: {} + + for-own@1.0.0: + dependencies: + for-in: 1.0.2 + + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + form-data@4.0.0: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + fraction.js@4.3.7: {} + + fragment-cache@0.2.1: + dependencies: + map-cache: 0.2.2 + + fs-extra@11.2.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs-mkdirp-stream@1.0.0: + dependencies: + graceful-fs: 4.2.11 + through2: 2.0.5 + + fs.realpath@1.0.0: {} + + fsevents@1.2.13: + dependencies: + bindings: 1.5.0 + nan: 2.20.0 + optional: true + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + functions-have-names: 1.2.3 + + functions-have-names@1.2.3: {} + + get-caller-file@1.0.3: {} + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + get-symbol-description@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + + get-tsconfig@4.8.1: + dependencies: + resolve-pkg-maps: 1.0.0 + + get-value@2.0.6: {} + + glob-parent@3.1.0: + dependencies: + is-glob: 3.1.0 + path-dirname: 1.0.2 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-stream@6.1.0: + dependencies: + extend: 3.0.2 + glob: 7.2.3 + glob-parent: 3.1.0 + is-negated-glob: 1.0.0 + ordered-read-streams: 1.0.1 + pumpify: 1.5.1 + readable-stream: 2.3.8 + remove-trailing-separator: 1.1.0 + to-absolute-glob: 2.0.2 + unique-stream: 2.3.1 + + glob-watcher@5.0.5: + dependencies: + anymatch: 2.0.0 + async-done: 1.3.2 + chokidar: 2.1.8 + is-negated-glob: 1.0.0 + just-debounce: 1.1.0 + normalize-path: 3.0.0 + object.defaults: 1.1.0 + transitivePeerDependencies: + - supports-color + + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.0.1 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + glogg@1.0.2: + dependencies: + sparkles: 1.0.1 + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + gulp-autoprefixer@8.0.0(gulp@4.0.2): + dependencies: + autoprefixer: 10.4.20(postcss@8.4.47) + fancy-log: 1.3.3 + plugin-error: 1.0.1 + postcss: 8.4.47 + through2: 4.0.2 + vinyl-sourcemaps-apply: 0.2.1 + optionalDependencies: + gulp: 4.0.2 + + gulp-clean-css@4.3.0: + dependencies: + clean-css: 4.2.3 + plugin-error: 1.0.1 + through2: 3.0.1 + vinyl-sourcemaps-apply: 0.2.1 + + gulp-cli@2.3.0: + dependencies: + ansi-colors: 1.1.0 + archy: 1.0.0 + array-sort: 1.0.0 + color-support: 1.1.3 + concat-stream: 1.6.2 + copy-props: 2.0.5 + fancy-log: 1.3.3 + gulplog: 1.0.0 + interpret: 1.4.0 + isobject: 3.0.1 + liftoff: 3.1.0 + matchdep: 2.0.0 + mute-stdout: 1.0.1 + pretty-hrtime: 1.0.3 + replace-homedir: 1.0.0 + semver-greatest-satisfied-range: 1.1.0 + v8flags: 3.2.0 + yargs: 7.1.2 + transitivePeerDependencies: + - supports-color + + gulp-rename@2.0.0: {} + + gulp-sass@5.1.0: + dependencies: + lodash.clonedeep: 4.5.0 + picocolors: 1.1.0 + plugin-error: 1.0.1 + replace-ext: 2.0.0 + strip-ansi: 6.0.1 + vinyl-sourcemaps-apply: 0.2.1 + + gulp@4.0.2: + dependencies: + glob-watcher: 5.0.5 + gulp-cli: 2.3.0 + undertaker: 1.3.0 + vinyl-fs: 3.0.3 + transitivePeerDependencies: + - supports-color + + gulplog@1.0.0: + dependencies: + glogg: 1.0.2 + + has-bigints@1.0.2: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + + has-value@0.3.1: + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + + has-value@1.0.0: + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + + has-values@0.1.4: {} + + has-values@1.0.0: + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + + hosted-git-info@2.8.9: {} + + http-proxy-middleware@2.0.7: + dependencies: + '@types/http-proxy': 1.17.15 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.8 + transitivePeerDependencies: + - debug + + http-proxy@1.18.1: + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.9 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + ignore@5.3.2: {} + + immutable@4.3.7: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + internal-slot@1.0.7: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + + interpret@1.4.0: {} + + invert-kv@1.0.0: {} + + is-absolute@1.0.0: + dependencies: + is-relative: 1.0.0 + is-windows: 1.0.2 + + is-accessor-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-array-buffer@3.0.4: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + + is-arrayish@0.2.1: {} + + is-bigint@1.0.4: + dependencies: + has-bigints: 1.0.2 + + is-binary-path@1.0.1: + dependencies: + binary-extensions: 1.13.1 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.1.2: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-buffer@1.1.6: {} + + is-callable@1.2.7: {} + + is-core-module@2.15.1: + dependencies: + hasown: 2.0.2 + + is-data-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.1: + dependencies: + is-typed-array: 1.1.13 + + is-date-object@1.0.5: + dependencies: + has-tostringtag: 1.0.2 + + is-descriptor@0.1.7: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + + is-descriptor@1.0.3: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + + is-extendable@0.1.1: {} + + is-extendable@1.0.1: + dependencies: + is-plain-object: 2.0.4 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@1.0.0: + dependencies: + number-is-nan: 1.0.1 + + is-fullwidth-code-point@3.0.0: {} + + is-glob@3.1.0: + dependencies: + is-extglob: 2.1.1 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-negated-glob@1.0.0: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + + is-number@3.0.0: + dependencies: + kind-of: 3.2.2 + + is-number@4.0.0: {} + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@3.0.0: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-plain-object@5.0.0: {} + + is-regex@1.1.4: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-relative@1.0.0: + dependencies: + is-unc-path: 1.0.0 + + is-shared-array-buffer@1.0.3: + dependencies: + call-bind: 1.0.7 + + is-string@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + + is-symbol@1.0.4: + dependencies: + has-symbols: 1.0.3 + + is-typed-array@1.1.13: + dependencies: + which-typed-array: 1.1.15 + + is-unc-path@1.0.0: + dependencies: + unc-path-regex: 0.1.2 + + is-utf8@0.2.1: {} + + is-valid-glob@1.0.0: {} + + is-weakref@1.0.2: + dependencies: + call-bind: 1.0.7 + + is-windows@1.0.2: {} + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + isobject@2.1.0: + dependencies: + isarray: 1.0.0 + + isobject@3.0.1: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@1.21.6: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + jsonc-parser@3.3.1: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + just-debounce@1.1.0: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@3.2.2: + dependencies: + is-buffer: 1.1.6 + + kind-of@4.0.0: + dependencies: + is-buffer: 1.1.6 + + kind-of@5.1.0: {} + + kind-of@6.0.3: {} + + last-run@1.1.1: + dependencies: + default-resolution: 2.0.0 + es6-weak-map: 2.0.3 + + lazystream@1.0.1: + dependencies: + readable-stream: 2.3.8 + + lcid@1.0.0: + dependencies: + invert-kv: 1.0.0 + + lead@1.0.0: + dependencies: + flush-write-stream: 1.1.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + liftoff@3.1.0: + dependencies: + extend: 3.0.2 + findup-sync: 3.0.0 + fined: 1.2.0 + flagged-respawn: 1.0.1 + is-plain-object: 2.0.4 + object.map: 1.0.1 + rechoir: 0.6.2 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + lilconfig@2.1.0: {} + + lilconfig@3.1.2: {} + + lines-and-columns@1.2.4: {} + + linkify-it@4.0.1: + dependencies: + uc.micro: 1.0.6 + + load-json-file@1.1.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 2.2.0 + pify: 2.3.0 + pinkie-promise: 2.0.1 + strip-bom: 2.0.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.17.21: {} + + lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21): + dependencies: + '@types/lodash-es': 4.17.12 + lodash: 4.17.21 + lodash-es: 4.17.21 + + lodash.clonedeep@4.5.0: {} + + lodash.merge@4.6.2: {} + + lodash@4.17.21: {} + + lru-cache@10.4.3: {} + + magic-string@0.30.11: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + make-iterator@1.0.1: + dependencies: + kind-of: 6.0.3 + + map-cache@0.2.2: {} + + map-visit@1.0.0: + dependencies: + object-visit: 1.0.1 + + markdown-it-container@3.0.0: {} + + markdown-it@13.0.1: + dependencies: + argparse: 2.0.1 + entities: 3.0.1 + linkify-it: 4.0.1 + mdurl: 1.0.1 + uc.micro: 1.0.6 + + marked@4.3.0: {} + + matchdep@2.0.0: + dependencies: + findup-sync: 2.0.0 + micromatch: 3.1.10 + resolve: 1.22.8 + stack-trace: 0.0.10 + transitivePeerDependencies: + - supports-color + + mdurl@1.0.1: {} + + memoize-one@6.0.0: {} + + merge2@1.4.1: {} + + micromatch@3.1.10: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minipass@7.1.2: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mixin-deep@1.3.2: + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + + mkdirp@1.0.4: {} + + ms@2.0.0: {} + + ms@2.1.3: {} + + mute-stdout@1.0.1: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nan@2.20.0: + optional: true + + nanoid@3.3.7: {} + + nanomatch@1.2.13: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + natural-compare-lite@1.4.0: {} + + natural-compare@1.4.0: {} + + next-tick@1.1.0: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-releases@2.0.18: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-path@2.1.1: + dependencies: + remove-trailing-separator: 1.1.0 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + normalize-wheel-es@1.2.0: {} + + normalize.css@8.0.1: {} + + now-and-later@2.0.1: + dependencies: + once: 1.4.0 + + nprogress@0.2.0: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + number-is-nan@1.0.1: {} + + object-assign@4.1.1: {} + + object-copy@0.1.0: + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + + object-hash@3.0.0: {} + + object-inspect@1.13.2: {} + + object-keys@1.1.1: {} + + object-visit@1.0.1: + dependencies: + isobject: 3.0.1 + + object.assign@4.1.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + object.defaults@1.1.0: + dependencies: + array-each: 1.0.1 + array-slice: 1.1.0 + for-own: 1.0.0 + isobject: 3.0.1 + + object.entries@1.1.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + + object.map@1.0.1: + dependencies: + for-own: 1.0.0 + make-iterator: 1.0.1 + + object.pick@1.3.0: + dependencies: + isobject: 3.0.1 + + object.reduce@1.0.1: + dependencies: + for-own: 1.0.0 + make-iterator: 1.0.1 + + object.values@1.2.0: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ordered-read-streams@1.0.1: + dependencies: + readable-stream: 2.3.8 + + os-locale@1.4.0: + dependencies: + lcid: 1.0.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + package-json-from-dist@1.0.1: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-filepath@1.0.2: + dependencies: + is-absolute: 1.0.0 + map-cache: 0.2.2 + path-root: 0.1.1 + + parse-json@2.2.0: + dependencies: + error-ex: 1.3.2 + + parse-node-version@1.0.1: {} + + parse-passwd@1.0.0: {} + + pascalcase@0.1.1: {} + + path-dirname@1.0.2: {} + + path-exists@2.1.0: + dependencies: + pinkie-promise: 2.0.1 + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-root-regex@0.1.2: {} + + path-root@0.1.1: + dependencies: + path-root-regex: 0.1.2 + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-type@1.1.0: + dependencies: + graceful-fs: 4.2.11 + pify: 2.3.0 + pinkie-promise: 2.0.1 + + path-type@4.0.0: {} + + pend@1.2.0: {} + + picocolors@1.1.0: {} + + picomatch@2.3.1: {} + + pify@2.3.0: {} + + pinkie-promise@2.0.1: + dependencies: + pinkie: 2.0.4 + + pinkie@2.0.4: {} + + pirates@4.0.6: {} + + plugin-error@1.0.1: + dependencies: + ansi-colors: 1.1.0 + arr-diff: 4.0.0 + arr-union: 3.1.0 + extend-shallow: 3.0.2 + + posix-character-classes@0.1.1: {} + + possible-typed-array-names@1.0.0: {} + + postcss-import@15.1.0(postcss@8.4.47): + dependencies: + postcss: 8.4.47 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + postcss-js@4.0.1(postcss@8.4.47): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.47 + + postcss-load-config@4.0.2(postcss@8.4.47): + dependencies: + lilconfig: 3.1.2 + yaml: 2.5.1 + optionalDependencies: + postcss: 8.4.47 + + postcss-nested@6.2.0(postcss@8.4.47): + dependencies: + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.47: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.0 + source-map-js: 1.2.1 + + preact@10.24.2: {} + + prelude-ls@1.2.1: {} + + prettier@2.8.1: {} + + pretty-hrtime@1.0.3: {} + + prismjs@1.29.0: {} + + process-nextick-args@2.0.1: {} + + proxy-from-env@1.1.0: {} + + pump@2.0.1: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + pumpify@1.5.1: + dependencies: + duplexify: 3.7.1 + inherits: 2.0.4 + pump: 2.0.1 + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + read-pkg-up@1.0.1: + dependencies: + find-up: 1.1.2 + read-pkg: 1.1.0 + + read-pkg@1.1.0: + dependencies: + load-json-file: 1.1.0 + normalize-package-data: 2.5.0 + path-type: 1.1.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@2.2.1: + dependencies: + graceful-fs: 4.2.11 + micromatch: 3.1.10 + readable-stream: 2.3.8 + transitivePeerDependencies: + - supports-color + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readdirp@4.0.2: {} + + rechoir@0.6.2: + dependencies: + resolve: 1.22.8 + + regex-not@1.0.2: + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + + regexp.prototype.flags@1.5.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + + remove-bom-buffer@3.0.0: + dependencies: + is-buffer: 1.1.6 + is-utf8: 0.2.1 + + remove-bom-stream@1.2.0: + dependencies: + remove-bom-buffer: 3.0.0 + safe-buffer: 5.2.1 + through2: 2.0.5 + + remove-trailing-separator@1.1.0: {} + + repeat-element@1.1.4: {} + + repeat-string@1.6.1: {} + + replace-ext@1.0.1: {} + + replace-ext@2.0.0: {} + + replace-homedir@1.0.0: + dependencies: + homedir-polyfill: 1.0.3 + is-absolute: 1.0.0 + remove-trailing-separator: 1.1.0 + + require-directory@2.1.1: {} + + require-main-filename@1.0.1: {} + + requires-port@1.0.0: {} + + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + + resolve-from@4.0.0: {} + + resolve-options@1.1.0: + dependencies: + value-or-function: 3.0.0 + + resolve-pkg-maps@1.0.0: {} + + resolve-url@0.2.1: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.15.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + ret@0.1.15: {} + + reusify@1.0.4: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup@2.79.2: + optionalDependencies: + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-array-concat@1.1.2: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-regex-test@1.0.3: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + + safe-regex@1.1.0: + dependencies: + ret: 0.1.15 + + sass@1.79.4: + dependencies: + chokidar: 4.0.1 + immutable: 4.3.7 + source-map-js: 1.2.1 + + search-insights@2.17.2: {} + + semver-greatest-satisfied-range@1.1.0: + dependencies: + sver-compat: 1.5.0 + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.6.3: {} + + set-blocking@2.0.0: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-value@2.0.1: + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shelljs@0.8.5: + dependencies: + glob: 7.2.3 + interpret: 1.4.0 + rechoir: 0.6.2 + + shiki@0.11.1: + dependencies: + jsonc-parser: 3.3.1 + vscode-oniguruma: 1.7.0 + vscode-textmate: 6.0.0 + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + + signal-exit@4.1.0: {} + + slash@3.0.0: {} + + snapdragon-node@2.1.1: + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + + snapdragon-util@3.0.1: + dependencies: + kind-of: 3.2.2 + + snapdragon@0.8.2: + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + + source-map-js@1.2.1: {} + + source-map-resolve@0.5.3: + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map-url@0.4.1: {} + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + sparkles@1.0.1: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.20 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.20 + + spdx-license-ids@3.0.20: {} + + split-string@3.1.0: + dependencies: + extend-shallow: 3.0.2 + + stack-trace@0.0.10: {} + + static-extend@0.1.2: + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + + stream-exhaust@1.0.2: {} + + stream-shift@1.0.3: {} + + string-width@1.0.2: + dependencies: + code-point-at: 1.1.0 + is-fullwidth-code-point: 1.0.0 + strip-ansi: 3.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string.prototype.trim@1.2.9: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + + string.prototype.trimend@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@3.0.1: + dependencies: + ansi-regex: 2.1.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@2.0.0: + dependencies: + is-utf8: 0.2.1 + + strip-bom@3.0.0: {} + + strip-json-comments@3.1.1: {} + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + sver-compat@1.5.0: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + + tailwindcss@3.4.13: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.6 + lilconfig: 2.1.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.0 + postcss: 8.4.47 + postcss-import: 15.1.0(postcss@8.4.47) + postcss-js: 4.0.1(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.47) + postcss-nested: 6.2.0(postcss@8.4.47) + postcss-selector-parser: 6.1.2 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + text-table@0.2.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + through2-filter@3.0.0: + dependencies: + through2: 2.0.5 + xtend: 4.0.2 + + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + + through2@3.0.1: + dependencies: + readable-stream: 3.6.2 + + through2@4.0.2: + dependencies: + readable-stream: 3.6.2 + + time-stamp@1.1.0: {} + + to-absolute-glob@2.0.2: + dependencies: + is-absolute: 1.0.0 + is-negated-glob: 1.0.0 + + to-fast-properties@2.0.0: {} + + to-object-path@0.3.0: + dependencies: + kind-of: 3.2.2 + + to-regex-range@2.1.1: + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + to-regex@3.0.2: + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + + to-through@2.0.0: + dependencies: + through2: 2.0.5 + + tr46@0.0.3: {} + + ts-interface-checker@0.1.13: {} + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@1.14.1: {} + + tsutils@3.21.0(typescript@4.9.5): + dependencies: + tslib: 1.14.1 + typescript: 4.9.5 + + tsx@3.14.0: + dependencies: + esbuild: 0.18.20 + get-tsconfig: 4.8.1 + source-map-support: 0.5.21 + optionalDependencies: + fsevents: 2.3.3 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.20.2: {} + + type@2.7.3: {} + + typed-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + + typed-array-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-byte-offset@1.0.2: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-length@1.0.6: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + + typedarray@0.0.6: {} + + typescript@4.9.5: {} + + uc.micro@1.0.6: {} + + unbox-primitive@1.0.2: + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + + unc-path-regex@0.1.2: {} + + undertaker-registry@1.0.1: {} + + undertaker@1.3.0: + dependencies: + arr-flatten: 1.1.0 + arr-map: 2.0.2 + bach: 1.2.0 + collection-map: 1.0.0 + es6-weak-map: 2.0.3 + fast-levenshtein: 1.1.4 + last-run: 1.1.1 + object.defaults: 1.1.0 + object.reduce: 1.0.1 + undertaker-registry: 1.0.1 + + undici-types@6.19.8: {} + + union-value@1.0.1: + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + + unique-stream@2.3.1: + dependencies: + json-stable-stringify-without-jsonify: 1.0.1 + through2-filter: 3.0.0 + + universalify@2.0.1: {} + + unset-value@1.0.0: + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + + upath@1.2.0: {} + + update-browserslist-db@1.1.1(browserslist@4.24.0): + dependencies: + browserslist: 4.24.0 + escalade: 3.2.0 + picocolors: 1.1.0 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + urix@0.1.0: {} + + use@3.1.1: {} + + util-deprecate@1.0.2: {} + + v8flags@3.2.0: + dependencies: + homedir-polyfill: 1.0.3 + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + value-or-function@3.0.0: {} + + vinyl-fs@3.0.3: + dependencies: + fs-mkdirp-stream: 1.0.0 + glob-stream: 6.1.0 + graceful-fs: 4.2.11 + is-valid-glob: 1.0.0 + lazystream: 1.0.1 + lead: 1.0.0 + object.assign: 4.1.5 + pumpify: 1.5.1 + readable-stream: 2.3.8 + remove-bom-buffer: 3.0.0 + remove-bom-stream: 1.2.0 + resolve-options: 1.1.0 + through2: 2.0.5 + to-through: 2.0.0 + value-or-function: 3.0.0 + vinyl: 2.2.1 + vinyl-sourcemap: 1.1.0 + + vinyl-sourcemap@1.1.0: + dependencies: + append-buffer: 1.0.2 + convert-source-map: 1.9.0 + graceful-fs: 4.2.11 + normalize-path: 2.1.1 + now-and-later: 2.0.1 + remove-bom-buffer: 3.0.0 + vinyl: 2.2.1 + + vinyl-sourcemaps-apply@0.2.1: + dependencies: + source-map: 0.5.7 + + vinyl@2.2.1: + dependencies: + clone: 2.1.2 + clone-buffer: 1.0.0 + clone-stats: 1.0.0 + cloneable-readable: 1.1.3 + remove-trailing-separator: 1.1.0 + replace-ext: 1.0.1 + + vite@3.2.11(@types/node@22.7.5)(sass@1.79.4): + dependencies: + esbuild: 0.15.18 + postcss: 8.4.47 + resolve: 1.22.8 + rollup: 2.79.2 + optionalDependencies: + '@types/node': 22.7.5 + fsevents: 2.3.3 + sass: 1.79.4 + + vitepress-theme-vuetom@2.3.0(@types/node@22.7.5)(sass@1.79.4)(typescript@4.9.5)(vitepress@1.0.0-alpha.30(@types/node@22.7.5)(sass@1.79.4)(typescript@4.9.5)): + dependencies: + '@docsearch/css': 3.6.2 + '@docsearch/js': 3.6.2(@algolia/client-search@4.24.0)(search-insights@2.17.2) + '@vueuse/components': 9.13.0(vue@3.5.11(typescript@4.9.5)) + '@vueuse/core': 9.13.0(vue@3.5.11(typescript@4.9.5)) + body-scroll-lock: 4.0.0-beta.0 + nprogress: 0.2.0 + shiki: 0.11.1 + vite: 3.2.11(@types/node@22.7.5)(sass@1.79.4) + vitepress: 1.0.0-alpha.30(@algolia/client-search@4.24.0)(@types/node@22.7.5)(sass@1.79.4)(search-insights@2.17.2)(typescript@4.9.5) + vue: 3.5.11(typescript@4.9.5) + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - less + - react + - react-dom + - sass + - search-insights + - stylus + - sugarss + - terser + - typescript + + vitepress@1.0.0-alpha.30(@algolia/client-search@4.24.0)(@types/node@22.7.5)(sass@1.79.4)(search-insights@2.17.2)(typescript@4.9.5): + dependencies: + '@docsearch/css': 3.6.2 + '@docsearch/js': 3.6.2(@algolia/client-search@4.24.0)(search-insights@2.17.2) + '@vitejs/plugin-vue': 3.2.0(vite@3.2.11(@types/node@22.7.5)(sass@1.79.4))(vue@3.5.11(typescript@4.9.5)) + '@vue/devtools-api': 6.6.4 + '@vueuse/core': 9.13.0(vue@3.5.11(typescript@4.9.5)) + body-scroll-lock: 4.0.0-beta.0 + shiki: 0.11.1 + vite: 3.2.11(@types/node@22.7.5)(sass@1.79.4) + vue: 3.5.11(typescript@4.9.5) + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - less + - react + - react-dom + - sass + - search-insights + - stylus + - sugarss + - terser + - typescript + + vscode-oniguruma@1.7.0: {} + + vscode-textmate@6.0.0: {} + + vue-demi@0.14.10(vue@3.5.11(typescript@4.9.5)): + dependencies: + vue: 3.5.11(typescript@4.9.5) + + vue-eslint-parser@9.4.3(eslint@8.57.1): + dependencies: + debug: 4.3.7 + eslint: 8.57.1 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + lodash: 4.17.21 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + + vue@3.5.11(typescript@4.9.5): + dependencies: + '@vue/compiler-dom': 3.5.11 + '@vue/compiler-sfc': 3.5.11 + '@vue/runtime-dom': 3.5.11 + '@vue/server-renderer': 3.5.11(vue@3.5.11(typescript@4.9.5)) + '@vue/shared': 3.5.11 + optionalDependencies: + typescript: 4.9.5 + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-boxed-primitive@1.0.2: + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + + which-module@1.0.0: {} + + which-typed-array@1.1.15: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrap-ansi@2.1.0: + dependencies: + string-width: 1.0.2 + strip-ansi: 3.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + xml-name-validator@4.0.0: {} + + xtend@4.0.2: {} + + y18n@3.2.2: {} + + yallist@4.0.0: {} + + yaml@2.5.1: {} + + yargs-parser@5.0.1: + dependencies: + camelcase: 3.0.0 + object.assign: 4.1.5 + + yargs@7.1.2: + dependencies: + camelcase: 3.0.0 + cliui: 3.2.0 + decamelize: 1.2.0 + get-caller-file: 1.0.3 + os-locale: 1.4.0 + read-pkg-up: 1.0.1 + require-directory: 2.1.1 + require-main-filename: 1.0.1 + set-blocking: 2.0.0 + string-width: 1.0.2 + which-module: 1.0.0 + y18n: 3.2.2 + yargs-parser: 5.0.1 + + yauzl@3.1.3: + dependencies: + buffer-crc32: 0.2.13 + pend: 1.2.0 + + yocto-queue@0.1.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..eccc335 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - 'packages/**' \ No newline at end of file diff --git a/resources/blog-home-01.png b/resources/blog-home-01.png new file mode 100644 index 0000000..2850764 Binary files /dev/null and b/resources/blog-home-01.png differ diff --git a/resources/blog-post-01.png b/resources/blog-post-01.png new file mode 100644 index 0000000..000b9ce Binary files /dev/null and b/resources/blog-post-01.png differ diff --git a/resources/pic01.png b/resources/pic01.png new file mode 100644 index 0000000..7c14717 Binary files /dev/null and b/resources/pic01.png differ diff --git a/resources/pic02.png b/resources/pic02.png new file mode 100644 index 0000000..f333dc6 Binary files /dev/null and b/resources/pic02.png differ diff --git a/resources/pic03.png b/resources/pic03.png new file mode 100644 index 0000000..7b2fe2b Binary files /dev/null and b/resources/pic03.png differ diff --git a/resources/pic04.png b/resources/pic04.png new file mode 100644 index 0000000..a673490 Binary files /dev/null and b/resources/pic04.png differ diff --git a/scripts/build-vt.js b/scripts/build-vt.js new file mode 100644 index 0000000..37b77c8 --- /dev/null +++ b/scripts/build-vt.js @@ -0,0 +1,59 @@ +// const fs = require('fs-extra') +// const glob = require('globby') +import fs from 'fs-extra' +import fg from 'fast-glob' + +function toDist(file) { + return file.replace(/vuetom\//, 'vuetom/dist/') +} + +function rewrite(file) { + if (process.env.NODE_ENV !== 'build') return + const content = fs.readFileSync(file, 'utf-8') + const res = content.replace( + /import '\.\/styles\/index.scss'/, + 'import \'./css/index.css\'' + ) + fs.writeFileSync(file, res, 'utf-8') +} + +function rewriteDoc(file) { + if (process.env.NODE_ENV !== 'build') return + const content = fs.readFileSync(file, 'utf-8') + + const res = content.replace( + /\.scss/g, + '.css' + ) + + // const res = content.replace( + // /import '\.\.\/styles\/rewrite\/index.scss'/, + // 'import \'../css/rewrite/index.css\'' + // ) + // let res = content.replace( + // /import '\.\.\/styles\/rewrite\/index.scss'/, + // '// import \'../styles/rewrite/index.scss\'' + // ) + // res = res.replace( + // /\/\/ import '\.\.\/css\/index.css'/, + // 'import \'../css/index.css\'' + // ) + + fs.writeFileSync(file, res, 'utf-8') +} + +fg.sync('../vuetom/**').forEach((file) => { + if (/node_modules\//.test(file)) return + if (/dist\//.test(file)) return + if (/(\.ts|tsconfig\.json)$/.test(file)) return + if (/(\.ts|package\.json)$/.test(file)) return + if (/(\.js|postcss.config\.cjs)$/.test(file)) return + if (/(\.js|tailwind.config\.cjs)$/.test(file)) return + const target = toDist(file) + if (file !== target) fs.copy(file, target) +}) + +fg.sync('../vuetom/dist/**').forEach((file) => { + if (/index.js$/.test(file)) rewrite(file) + if (/doc\/index.js$/.test(file)) rewriteDoc(file) +}) diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..3986d53 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "module": "esnext", + "target": "esnext", + "moduleResolution": "node", + "esModuleInterop": true, + "strict": true, + "skipLibCheck": true, + "noUnusedLocals": true, + "resolveJsonModule": true, + "jsx": "preserve", + "lib": ["ESNext", "DOM"] + }, + "exclude": ["**/node_modules/**", "**/dist/**"] +} \ No newline at end of file diff --git a/vitepress-theme-vuetom b/vitepress-theme-vuetom deleted file mode 160000 index ee268a6..0000000 --- a/vitepress-theme-vuetom +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ee268a68c43b16c5b537ae8bd38322bb8b71b28e