├── .gitignore ├── README.md ├── docs ├── .vitepress │ ├── config.ts │ └── theme │ │ ├── custom.css │ │ └── index.ts ├── config │ ├── article.md │ ├── color-scheme.md │ ├── comments.md │ ├── date-format.md │ ├── default-image.md │ ├── footer.md │ ├── header-footer.md │ ├── i18n.md │ ├── image-processing.md │ ├── index.md │ ├── menu.md │ ├── open-graph.md │ ├── sidebar.md │ ├── site.md │ └── widgets.md ├── guide │ ├── configuration.md │ ├── getting-started.md │ ├── index.md │ └── modify-theme.md ├── index.md ├── public │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── browserconfig.xml │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── logo.png │ ├── mstile-150x150.png │ ├── safari-pinned-tab.svg │ └── site.webmanifest └── writing │ ├── frontmatter.md │ ├── markdown.md │ └── shortcodes.md ├── package.json ├── pnpm-lock.yaml └── vercel.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Stack Docs 2 | 3 | Documentation for the Hugo Theme Stack. Powered by VitePress. 4 | 5 | ```bash 6 | pnpm install 7 | pnpm run docs:dev 8 | pnpm run docs:build 9 | ``` 10 | 11 | ## License 12 | 13 | Documentation is licensed under the MIT License. 14 | 15 | Logo designed by Jimmy Cai, all rights reserved. -------------------------------------------------------------------------------- /docs/.vitepress/config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vitepress' 2 | 3 | export default defineConfig({ 4 | lang: 'en-US', 5 | title: 'Stack', 6 | description: 'Card-style Hugo theme designed for bloggers', 7 | lastUpdated: true, 8 | 9 | head: [ 10 | ['link', { rel: 'apple-touch-icon', sizes: '180x180', href: '/apple-touch-icon.png' }], 11 | ['link', { rel: 'icon', type: 'image/png', sizes: '32x32', href: '/favicon-32x32.png' }], 12 | ['link', { rel: 'icon', type: 'image/png', sizes: '16x16', href: '/favicon-16x16.png' }], 13 | ['link', { rel: 'manifest', href: '/site.webmanifest' }], 14 | ['link', { rel: 'mask-icon', href: '/safari-pinned-tab.svg', color: '#5bbad5' }], 15 | ['meta', { name: 'msapplication-TileColor', content: '#00aba9' }], 16 | ['meta', { name: 'theme-color', content: '#ffffff' }], 17 | ['script', { defer: "true", "data-domain": "stack.jimmycai.com", src: 'https://stat.jimmycai.com/js/include.js' }], 18 | ], 19 | 20 | markdown: { 21 | lineNumbers: true, 22 | theme: 'one-dark-pro' 23 | }, 24 | 25 | cleanUrls: true, 26 | 27 | themeConfig: { 28 | logo: '/logo.png', 29 | 30 | footer: { 31 | message: "Documentation released under the MIT License, logo designed by Jimmy Cai, all rights reserved.", 32 | copyright: "Copyright © 2020 - Present Jimmy Cai", 33 | }, 34 | 35 | sidebar: { 36 | '/guide/': sidebarGuide(), 37 | '/config/': sidebarGuide(), 38 | '/writing/': sidebarGuide(), 39 | }, 40 | 41 | nav: [ 42 | { text: 'Guide', link: '/guide/' }, 43 | { text: 'Config', link: '/config/' }, 44 | ], 45 | 46 | socialLinks: [ 47 | { icon: 'github', link: 'https://github.com/CaiJimmy/hugo-theme-stack' } 48 | ], 49 | 50 | editLink: { 51 | pattern: 'https://github.com/CaiJimmy/stack-docs/edit/master/docs/:path', 52 | text: 'Edit this page on GitHub' 53 | }, 54 | 55 | outline: [2, 3], 56 | 57 | carbonAds: { 58 | code: 'CEAIE27W', 59 | placement: 'stackjimmycaicom' 60 | }, 61 | 62 | algolia: { 63 | appId: '6OC1XCG4R5', 64 | apiKey: '7779946cc768ec3699123e60a91d0ddc', 65 | indexName: 'stack-jimmycai', 66 | } 67 | }, 68 | }); 69 | 70 | function sidebarGuide() { 71 | return [ 72 | { 73 | text: 'Introduction', 74 | collapsible: true, 75 | items: [ 76 | { text: 'About Stack', link: '/guide/' }, 77 | { text: 'Getting Started', link: '/guide/getting-started' }, 78 | { text: 'Modify Theme', link: '/guide/modify-theme' } 79 | ] 80 | }, 81 | { 82 | text: 'Writing', 83 | collapsible: true, 84 | items: [ 85 | { text: 'Markdown', link: '/writing/markdown' }, 86 | { 87 | text: 'Frontmatter Configs', link: '/writing/frontmatter' 88 | }, 89 | { text: 'Shortcodes', link: '/writing/shortcodes' }, 90 | ] 91 | }, 92 | { 93 | text: 'Config', 94 | collapsible: true, 95 | items: [ 96 | { 97 | text: 'Introduction', 98 | link: '/config/' 99 | }, 100 | { 101 | text: 'Site Configs', 102 | link: '/config/site' 103 | }, 104 | { 105 | text: 'i18n Configs', 106 | link: '/config/i18n' 107 | }, 108 | { 109 | text: 'Custom Menu', 110 | link: '/config/menu' 111 | }, 112 | { 113 | text: 'Custom Header / Footer', 114 | link: '/config/header-footer' 115 | }, 116 | { 117 | text: 'Date Format', 118 | link: '/config/date-format' 119 | }, 120 | { 121 | text: 'Sidebar', 122 | link: '/config/sidebar' 123 | }, 124 | { 125 | text: 'Footer', 126 | link: '/config/footer' 127 | }, 128 | { 129 | text: 'Article', 130 | link: '/config/article' 131 | }, 132 | { 133 | text: 'Comments', 134 | link: '/config/comments' 135 | }, 136 | { 137 | text: 'Widgets', 138 | link: '/config/widgets' 139 | }, 140 | { 141 | text: 'Open Graph', 142 | link: '/config/open-graph' 143 | }, 144 | { 145 | text: 'Default Image', 146 | link: '/config/default-image' 147 | }, 148 | { 149 | text: 'Color Scheme', 150 | link: '/config/color-scheme' 151 | }, 152 | { 153 | text: 'Image Processing', 154 | link: '/config/image-processing' 155 | } 156 | ] 157 | }, 158 | ] 159 | } -------------------------------------------------------------------------------- /docs/.vitepress/theme/custom.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --vp-c-brand-1: var(--vp-c-green-1); 3 | --vp-c-brand-2: var(--vp-c-green-2); 4 | --vp-c-brand-3: var(--vp-c-green-3); 5 | --vp-c-brand-soft: var(--vp-c-green-soft); 6 | } -------------------------------------------------------------------------------- /docs/.vitepress/theme/index.ts: -------------------------------------------------------------------------------- 1 | import DefaultTheme from 'vitepress/theme' 2 | import './custom.css' 3 | 4 | export default { 5 | ...DefaultTheme, 6 | enhanceApp({ router }) { 7 | const oldOnAfterRouteChanged = router.onAfterRouteChanged; 8 | 9 | router.onAfterRouteChanged = () => { 10 | oldOnAfterRouteChanged && oldOnAfterRouteChanged(); 11 | if (typeof _carbonads !== 'undefined') 12 | _carbonads.refresh(); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /docs/config/article.md: -------------------------------------------------------------------------------- 1 | # Article 2 | 3 | Configuration for the article page. 4 | 5 | Fields under `[Params.Article]`. 6 | 7 | ## math 8 | 9 | - Type: `bool` 10 | 11 | Enable math support by [KaTeX](https://katex.org/). Can be overridden by front matter field `math`. 12 | 13 | ## toc 14 | 15 | - Type: `bool` 16 | 17 | Enable by default table of contents. Can be overridden by front matter field `toc`. 18 | 19 | ::: warning 20 | You will still need to add [`toc` widget](widgets.md#toc) to the sidebar to display the table of contents. 21 | ::: 22 | 23 | 24 | ## readingTime 25 | 26 | - Type: `bool` 27 | - Default: `true` 28 | 29 | Display an estimated reading time for the article. 30 | 31 | ## license 32 | 33 | - Type: `map[string]:(bool|string)` 34 | 35 | Configurations related with license. 36 | 37 | ### license.enabled 38 | 39 | - Type: `bool` 40 | - Default: `false` 41 | 42 | Display license information under the article. 43 | 44 | ### license.default 45 | 46 | - Type: `string` 47 | - Default: `Licensed under CC BY-NC-SA 4.0` 48 | 49 | Default license text displayed under the article. Can be overridden by front matter field `license`. 50 | -------------------------------------------------------------------------------- /docs/config/color-scheme.md: -------------------------------------------------------------------------------- 1 | # Color Scheme 2 | 3 | Light and dark color schemes are available in this theme. 4 | 5 | Fields are under `[Params.colorScheme]` section. 6 | 7 | ## toggle 8 | 9 | - Type: `bool` 10 | - Default: `true` 11 | 12 | Display the color scheme toggle button. 13 | 14 | If it's set to `false`, the color scheme will be determined by the `default` option. 15 | 16 | ## default 17 | 18 | - Type: `string (light|dark|auto)` 19 | - Default: `auto` 20 | 21 | The default color scheme, used when the `toggle` option is set to `false` or when the user visits the site for the first time. 22 | 23 | When set to `auto`, the color scheme will be determined by the user's system preference (`prefers-color-scheme` media query). 24 | -------------------------------------------------------------------------------- /docs/config/comments.md: -------------------------------------------------------------------------------- 1 | # Comments 2 | 3 | Comment system is a very important part of a blog. It allows readers to express their opinions and thoughts about the post. It also allows the author to interact with the readers. 4 | 5 | Stack currently supports the following comment systems: 6 | 7 | - [Cactus](https://cactus.chat/) 8 | - [Cusdis](https://cusdis.com/) 9 | - [Disqus](https://disqus.com/) 10 | - [DisqusJS](https://github.com/SukkaW/DisqusJS) 11 | - [Giscus](https://giscus.app/) 12 | - [Gitalk](https://github.com/gitalk/gitalk) 13 | - [Remark42](https://remark42.com/) 14 | - [Twikoo](https://twikoo.js.org/) 15 | - [utterances](https://utteranc.es/) 16 | - [Vssue](https://vssue.js.org/) 17 | - [Waline](https://waline.js.org/) 18 | 19 | Each comment system has its own configuration options placed under `[Params.Comments.COMMENT_SYSTEM]` section. 20 | 21 | For example, utterances's configuration options are placed under `[Params.Comments.utterances]` section. 22 | 23 | ::: tip 24 | A full list of supported configuration options can be found in [here](https://github.com/CaiJimmy/hugo-theme-stack/blob/master/config.yaml#L38) 25 | 26 | For more information about the meaning of each configuration option, please refer to the documentation of the comment system. 27 | ::: 28 | 29 | ::: warning 30 | In case of Disqus, the only configuration option is `disqusShortname`, which is not available at `[Params.Comments.disqus]` section. Instead, it is placed at root section of configuration file. 31 | ::: 32 | 33 | ## enabled 34 | 35 | - Type: `bool` 36 | - Default: `false` 37 | 38 | Enable / disable comment system. 39 | 40 | ## provider 41 | 42 | - Type: `string` 43 | 44 | Comment system provider. Possible values are: 45 | 46 | - `cactus` 47 | - `cusdis` 48 | - `disqus` 49 | - `disqusjs` 50 | - `giscus` 51 | - `gitalk` 52 | - `remark42` 53 | - `twikoo` 54 | - `utterances` 55 | - `vssue` 56 | - `waline` -------------------------------------------------------------------------------- /docs/config/date-format.md: -------------------------------------------------------------------------------- 1 | # Date format 2 | 3 | Fields under `[Params.DateFormat]`. 4 | 5 | Date format setting. Notice that Go's date format is slightly different than other programming language, take a look at official documentation: [dateFormat](https://gohugo.io/functions/dateformat/) 6 | 7 | ## published 8 | 9 | - Type: `string` 10 | - Default: `Jan 02, 2006` 11 | 12 | Page's publish date format. 13 | 14 | ## lastUpdated 15 | 16 | - Type: `string` 17 | - Default: `Jan 02, 2006 15:04 MST` 18 | 19 | Page's last updated date format -------------------------------------------------------------------------------- /docs/config/default-image.md: -------------------------------------------------------------------------------- 1 | # Default Image 2 | 3 | The default image is the image that will be used on a page if no featured image is set. This is useful for Open Graph and Twitter cards. 4 | 5 | ## opengraph 6 | 7 | The default image for Open Graph and Twitter. 8 | 9 | ### opengraph.enabled 10 | 11 | - Type: `bool` 12 | - Default: `false` 13 | 14 | Enable the default image for Open Graph and Twitter. 15 | 16 | ### opengraph.src 17 | 18 | - Type: `string` 19 | 20 | Path to the image file. 21 | 22 | ### opengraph.local 23 | 24 | - Type: `bool` 25 | - Default: `false` 26 | 27 | If `true`, the image is a local file, and must be placed under `assets` folder. Otherwise, it is a remote URL. 28 | 29 | For example, if `src` is set to `img/default.jpg`, the image file must be placed under `assets/img/default.jpg`. -------------------------------------------------------------------------------- /docs/config/footer.md: -------------------------------------------------------------------------------- 1 | # Footer 2 | 3 | The footer is the last section of the page. It is usually used to display the copyright information. 4 | 5 | Fields under `[Params.Footer]`. 6 | 7 | ## since 8 | 9 | - Type: `int` 10 | 11 | The year when the site is created. 12 | 13 | ## customText 14 | 15 | - Type: `string` 16 | 17 | Custom text displayed in the footer. HTML is supported. -------------------------------------------------------------------------------- /docs/config/header-footer.md: -------------------------------------------------------------------------------- 1 | # Custom Header / Footer 2 | 3 | There are two empty files reserved for custom HTML in the theme, useful for adding custom scripts or stylesheets: 4 | 5 | * `layouts/partials/head/custom.html` 6 | * `layouts/partials/footer/custom.html` 7 | 8 | To overwrite them: 9 | 10 | 1. Create `layouts/partials/footer/custom.html` under your Hugo site folder 11 | 2. Insert custom code in that file. 12 | 13 | ## Example: Custom font family for article content 14 | 15 | By default, this theme uses [Lato](https://fonts.google.com/specimen/Lato) for article content. This example shows how to use another font instead. For example, let's change article font family to [Merriweather](https://fonts.google.com/specimen/Merriweather). 16 | 17 | Create `layouts/partials/head/custom.html` under your Hugo site folder, with following code: 18 | 19 | ```html 20 | 26 | 27 | 38 | ``` 39 | -------------------------------------------------------------------------------- /docs/config/i18n.md: -------------------------------------------------------------------------------- 1 | # i18n 2 | 3 | Hugo has built-in support for multilingual sites. You can find more information about it in the [official documentation](https://gohugo.io/content-management/multilingual/). 4 | 5 | Translation files are placed in the `i18n` directory. The file name is the language code. For example, the `en.yaml` file is the translation file for English. 6 | 7 | In order to use a language, set `DefaultContentLanguage` to the language code in the configuration file. For example, if you want to use English, set `DefaultContentLanguage` to `en`. 8 | 9 | Currently, the theme supports the following languages: 10 | 11 | * `ar`: Arabic 12 | * `bn`: Bengali 13 | * `ca`: Catalan 14 | * `de`: German 15 | * `el`: Greek 16 | * `en`: English 17 | * `es`: Spanish 18 | * `fa`: Persian 19 | * `fr`: French 20 | * `hu`: Hungarian 21 | * `id`: Indonesian 22 | * `it`: Italian 23 | * `ja`: Japanese 24 | * `ko`: Korean 25 | * `nl`: Dutch 26 | * `pl`: Polish 27 | * `pt-br`: Portuguese 28 | * `ru`: Russian 29 | * `th`: Thai 30 | * `tr`: Turkish 31 | * `uk`: Ukrainian 32 | * `zh-cn`: Chinese (Simplified) 33 | * `zh-hk`: Chinese (Traditional) (Hong Kong) 34 | * `zh-tw`: Chinese (Traditional) (Taiwan) 35 | 36 | ::: tip 37 | PRs for more language support are welcome 😉. 38 | ::: -------------------------------------------------------------------------------- /docs/config/image-processing.md: -------------------------------------------------------------------------------- 1 | # Image Processing 2 | 3 | This theme uses Hugo's built-in image processing features to resize and optimize local images (included using page bundle feature). This is done automatically when you build your site. 4 | 5 | When there are many images in your site, this can slow down the build process. You can choose to disable this feature here. 6 | 7 | ## cover 8 | 9 | - Type: `map[string]bool` 10 | 11 | ### cover.enabled 12 | 13 | - Type: `bool` 14 | - Default: `true` 15 | 16 | Enable image processing for cover (featured) images. 17 | 18 | ## content 19 | 20 | - Type: `map[string]bool` 21 | 22 | ### content.enabled 23 | 24 | - Type: `bool` 25 | - Default: `true` 26 | 27 | Enable image processing for images in content. -------------------------------------------------------------------------------- /docs/config/index.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | Hugo accepts `TOML`, `YAML` and `JSON` as configuration formats. This theme currently uses `YAML` and `TOML` as configuration formats. 4 | 5 | ::: info 6 | In the foreseeable future, this theme will migrate all its configurations to `TOML` format. 7 | ::: 8 | 9 | If you are using `hugo-theme-stack-starter` template, you can find the configuration file under `config/_default/` folder, separated in different major sections to make it easier to find the configuration you want to modify. 10 | 11 | A full list of available configurations can be found in `config.yaml` file located in the root directory of this theme. (If it is not there, please send an issue to let me know.) 12 | 13 | There are plenty tools that converts `YAML` to `TOML` and vice versa. You can use them to convert the configuration file to the format you prefer. 14 | -------------------------------------------------------------------------------- /docs/config/menu.md: -------------------------------------------------------------------------------- 1 | # Custom Menu 2 | 3 | There are two menus in the theme: the main menu (`menu.main`) and the social menu (`menu.social`, icon only). They can be configured in a similar way. 4 | 5 | ## First Method (Recommended) 6 | If the menu item you'd like to add is a page, add `menu` field to its Front Matter: 7 | 8 | ```yaml 9 | menu: 10 | main: 11 | name: title (optional) 12 | weight: -90 13 | params: 14 | icon: icon-name 15 | ``` 16 | 17 | ## Second Method 18 | 19 | ::: warning 20 | This method is not recommended, because the theme can not detect if the current page is in the menu, and the menu item will not be highlighted. 21 | ::: 22 | 23 | If the menu item you'd like to add is not a page, you can add it to the menu section in the config file: 24 | 25 | Example in TOML: 26 | 27 | ```toml 28 | [menu] 29 | [[menu.main]] 30 | name = "Home" 31 | url = "/" 32 | weight = 10 33 | identifier = "home" 34 | [menu.main.params] 35 | icon = "home" 36 | newTab = true 37 | ``` 38 | 39 | Or in YAML: 40 | 41 | ```yaml 42 | menu: 43 | main: 44 | - identifier: home 45 | name: Home 46 | url: / 47 | weight: -100 48 | params: 49 | icon: home 50 | newTab: true 51 | ``` 52 | 53 | * `identifier`: Item ID 54 | * `name`: Display text 55 | * `url`: Link 56 | * `weight`: Priority of the item, lower value means higher priority. 57 | * `params`: 58 | * `icon`: Specify which SVG icon should be used 59 | * `newTab`: Open this link in new tab 60 | 61 | If `params.icon` is set to `archive`, theme will look for `archive.svg` under `assets/icons` folder. 62 | 63 | ## Add custom icon 64 | 65 | This theme comes with some SVG icons from [Tabler Icons](https://tabler-icons.io). You can find them under theme folder `assets/icons`. 66 | 67 | To include more icons, just download them from website above, and place them under `assets/icons` folder of your Hugo site. 68 | -------------------------------------------------------------------------------- /docs/config/open-graph.md: -------------------------------------------------------------------------------- 1 | # Open Graph 2 | 3 | The Open Graph protocol enables any web page to become a rich object in a social graph. 4 | 5 | For more information, see [Open Graph protocol](http://ogp.me/). 6 | 7 | Fields are under `[Params.opengraph]` section. 8 | 9 | ## twitter 10 | 11 | - type: `map[string]string` 12 | 13 | Available fields: 14 | 15 | ### site 16 | 17 | - type: `string` 18 | 19 | The Twitter account name of the site (without `@`). 20 | 21 | ### card 22 | 23 | - type: `string` 24 | 25 | [Twitter card type](https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/abouts-cards). Available values: `summary`, `summary_large_image`. 26 | 27 | -------------------------------------------------------------------------------- /docs/config/sidebar.md: -------------------------------------------------------------------------------- 1 | # Sidebar 2 | 3 | Settings related with left-side sidebar. 4 | 5 | Fields are under `[Params.Sidebar]` section. 6 | 7 | ## compact 8 | 9 | - Type: `bool` 10 | - Default: `false` 11 | 12 | Enable compact version of sidebar. 13 | 14 | ## emoji 15 | 16 | - Type: `string` 17 | 18 | Emoji displayed above the avatar. 19 | 20 | ## subtitle 21 | 22 | - Type: `string` 23 | 24 | Subtitle displayed below the site title. 25 | 26 | ## avatar 27 | 28 | - Type: `map[string]:(bool|string)` 29 | 30 | Configurations related with avatar. 31 | 32 | ### avatar.enabled 33 | 34 | - Type: `bool` 35 | - Default: `true` 36 | 37 | Enable avatar. 38 | 39 | ### avatar.src 40 | 41 | - Type: `string` 42 | - Default: `img/avatar.png` 43 | 44 | Path to avatar image. 45 | 46 | ### avatar.local 47 | 48 | - Type: `bool` 49 | - Default: `true` 50 | 51 | If `true`, the avatar image should be placed at `assets/${avatar.src}`, this allows theme to automatically resize the image. 52 | -------------------------------------------------------------------------------- /docs/config/site.md: -------------------------------------------------------------------------------- 1 | # Site-wide settings 2 | 3 | Fields under `[Params]`: 4 | 5 | ## description 6 | 7 | - Type: `string` 8 | 9 | Site description. By default, it falls back to `.Params.Sidebar.Subtitle`. 10 | 11 | ## mainSections 12 | 13 | - Type: `[string]` 14 | - Default: `["post"]` 15 | 16 | Pages places under this/those sections will be shown on homepage and archive page. 17 | 18 | For more information, take a look at Hugo's documentation on [Content Sections](https://gohugo.io/content-management/sections/). 19 | 20 | ## featuredImageField 21 | 22 | - Type: `string` 23 | - Default: `image` 24 | 25 | Front Matter **field** used to get the featured image of a page. 26 | 27 | ## rssFullContent 28 | 29 | - Type: `bool` 30 | - Default: `true` 31 | 32 | Output page's full content in RSS. 33 | 34 | ## favicon 35 | 36 | - Type: `string` 37 | 38 | Site favicon path. 39 | 40 | For example, if you want to use the favicon in `static/favicon.ico`, set `favicon` to `/favicon.ico`. -------------------------------------------------------------------------------- /docs/config/widgets.md: -------------------------------------------------------------------------------- 1 | # Widgets 2 | 3 | Widgets are placed at right sidebar of the blog. They are used to display some information such as categories, tags, etc. 4 | 5 | You can configure which widgets to display and their order in the homepage and post page. 6 | 7 | `widgets.homepage` and `widgets.page` are arrays of maps. Each map contains two keys: `type` and `params`. `type` is the name of the widget. `params` is the configuration of the widget. 8 | 9 | ## Available widgets 10 | 11 | ### archives 12 | 13 | Display a list of years with the number of posts published in each year. 14 | 15 | You need to create a page with `layout: archives` previously. 16 | 17 | #### Parameters 18 | 19 | - `limit`: Number of years to display. Default: `10`. 20 | 21 | ### search 22 | 23 | Display a search box. 24 | 25 | You need to create a page with `layout: search` previously. 26 | 27 | ### categories 28 | 29 | Display a list of categories available in the blog. 30 | 31 | #### Parameters 32 | 33 | - `limit`: number of categories to display. Default: 10 34 | 35 | ### toc 36 | 37 | Display a table of contents of the page. 38 | 39 | ### tag-cloud 40 | 41 | Display a tag cloud. 42 | 43 | #### Parameters 44 | 45 | - `limit`: number of tags to display. Default: 10 46 | 47 | -------------------------------------------------------------------------------- /docs/guide/configuration.md: -------------------------------------------------------------------------------- 1 | ## Configuration -------------------------------------------------------------------------------- /docs/guide/getting-started.md: -------------------------------------------------------------------------------- 1 | # Getting Started 2 | 3 | ::: tip 4 | Try this quickstart template to get started with Stack and Hugo in a few minutes: 5 | https://github.com/CaiJimmy/hugo-theme-stack-starter 6 | ::: 7 | 8 | ## Requirements 9 | Before you start, make sure you have installed Hugo **extended version**. For more information, see [Hugo's documentation](https://gohugo.io/getting-started/installing/). 10 | 11 | This theme uses SCSS and TypeScript, that's why Hugo extended version is required. If you are using a non-extended Hugo installation, you will get the following error: 12 | 13 | ``` 14 | Error: Error building site: TOCSS: failed to transform "scss/style.scss" (text/x-scss): this feature is not available in your current Hugo version 15 | ``` 16 | 17 | Once you have installed Hugo, you can check the version by running the following command: 18 | 19 | ```bash 20 | hugo version 21 | ``` 22 | 23 | Which should output something like this (the version number may be different), notice the `extended` keyword: 24 | 25 | ``` 26 | hugo v0.102.3-b76146b129d7caa52417f8e914fc5b9271bf56fc+extended windows/amd64 BuildDate=2022-09-01T10:16:19Z VendorInfo=gohugoio 27 | ``` 28 | 29 | The minimum required Hugo version can be seen in the [theme's `theme.toml` file](https://github.com/CaiJimmy/hugo-theme-stack/blob/master/theme.toml#L23) 30 | 31 | ## Installation 32 | 33 | ### Git 34 | On the master branch, you can find the theme's latest source code. To use the latest version, you can clone the repository to `themes/hugo-theme-stack` by running the following command in the root directory of your Hugo site: 35 | 36 | ```bash 37 | git clone https://github.com/CaiJimmy/hugo-theme-stack/ themes/hugo-theme-stack 38 | ``` 39 | 40 | If you are already using Git for your site, you can add the theme as a submodule by running the following command in the root directory of your Hugo site: 41 | 42 | ```bash 43 | git submodule add https://github.com/CaiJimmy/hugo-theme-stack/ themes/hugo-theme-stack 44 | ``` 45 | 46 | ### Hugo module 47 | 48 | ::: warning 49 | Using this method, there won't be any file under `themes` directory. In order to modify the theme, you will have to copy the file you want to modify to the same directory under `layouts` directory. 50 | 51 | For example, in order to modify the `themes/hugo-theme-stack/layouts/partials/header.html` file, you will have to copy it to `layouts/partials/header.html` and modify it there (copy the code from theme's repository). The same applies to `assets` and `static` directories. 52 | ::: 53 | 54 | This theme is also available as a [Hugo module](https://gohugo.io/hugo-modules/). Run the following command in the root directory of your Hugo site: 55 | 56 | First turn your site into a Hugo module (in case you haven't done it yet): 57 | 58 | ```sh 59 | hugo mod init github.com/me/my-new-blog 60 | ``` 61 | 62 | Then import the theme as a dependency adding the following line to the `module` section of your site's configuration file. 63 | 64 | ```toml 65 | # config.toml 66 | [[module.imports]] 67 | path = "github.com/CaiJimmy/hugo-theme-stack/v3" 68 | ``` 69 | 70 | ```yaml 71 | # config.yaml 72 | module: 73 | imports: 74 | - path: github.com/CaiJimmy/hugo-theme-stack/v3 75 | ``` 76 | 77 | This makes Hugo use the latest stable `v3` version of the theme (available in release page, which probably won't coincide with the latest commit in the `master` branch). 78 | 79 | To update the theme to the latest version, run the following command: 80 | 81 | ```sh 82 | hugo mod get -u github.com/CaiJimmy/hugo-theme-stack/v3 83 | hugo mod tidy 84 | ``` 85 | 86 | ::: info 87 | In the future, if a new major version of the theme is released, you will need to manually update the version number in the `path` field. 88 | ::: 89 | 90 | ### Download manually (not recommended) 91 | 92 | You can also download the theme from the [release page](https://github.com/CaiJimmy/hugo-theme-stack/releases) and extract it to `themes/hugo-theme-stack` directory. -------------------------------------------------------------------------------- /docs/guide/index.md: -------------------------------------------------------------------------------- 1 | # Welcome 2 | 3 | Stack is a simple card-style Hugo theme designed for Bloggers. Here are some of the features: 4 | 5 | * Responsive images support 6 | * Lazy load images 7 | * Dark mode 8 | * Local search 9 | * [PhotoSwipe](https://photoswipe.com/) integration 10 | * Archive page template 11 | * Full native JavaScript, no jQuery or any other frameworks are used 12 | * No CSS framework, keep it simple and minimal 13 | * Properly cropped thumbnails 14 | * Subsection support 15 | * Table of contents 16 | 17 | ## Copyright 18 | 19 | **Licensed under the GNU General Public License v3.0** 20 | 21 | Please do not remove the "*Theme Stack designed by Jimmy*" text and link. 22 | 23 | If you want to port this theme to another blogging platform, please let me know🙏. 24 | 25 | ## Sponsoring 26 | 27 | If you like this theme, give it a star, and consider supporting its development: 28 | 29 | 30 | 31 | Buy Me a Coffee at ko-fi.com 32 | 33 | Your support is greatly appreciated :) 34 | 35 | ## Thanks to 36 | 37 | | Project | Licence | 38 | | ---------------------------------------------------------------- | ---------------------------------------------------------------------------- | 39 | | [PhotoSwipe](https://photoswipe.com/) | [MIT](https://github.com/dimsemenov/PhotoSwipe/blob/master/LICENSE) | 40 | | [Normalize.css](https://github.com/necolas/normalize.css) | [MIT](https://github.com/necolas/normalize.css/blob/master/LICENSE.md) | 41 | | [Node Vibrant](https://github.com/Vibrant-Colors/node-vibrant) | [MIT](https://github.com/Vibrant-Colors/node-vibrant/blob/master/LICENSE.md) | 42 | | [Tabler icons](https://github.com/tabler/tabler-icons) | [MIT](https://github.com/tabler/tabler-icons/blob/master/LICENSE) | 43 | | [jonsuh/hamburgers](https://github.com/jonsuh/hamburgers) | [MIT](https://github.com/jonsuh/hamburgers/blob/master/LICENSE) | 44 | | [lepture/yue.css](https://github.com/lepture/yue.css) | MIT | 45 | | [Typlog](https://typlog.com/) | The author gave me the permission | 46 | | [xieranmaya/blog#6](https://github.com/xieranmaya/blog/issues/6) | - | 47 | 48 | ### References 49 | Some references that I took while building this theme: 50 | 51 | | Project | Licence | 52 | | --------------------------------------------------------------------------- | ------------------------------------------------------------------------ | 53 | | [artchen/hexo-theme-element](https://github.com/artchen/hexo-theme-element) | [MIT](https://github.com/artchen/hexo-theme-element/blob/master/LICENSE) | 54 | | [MunifTanjim/minimo](https://github.com/MunifTanjim/minimo) | [MIT](https://github.com/MunifTanjim/minimo/blob/master/LICENSE) | -------------------------------------------------------------------------------- /docs/guide/modify-theme.md: -------------------------------------------------------------------------------- 1 | # Modify theme 2 | 3 | Depending on how you installed the theme, it might be harder or easier to modify it. 4 | 5 | ## Hugo module 6 | 7 | Using this method, there won't be any file under `themes` directory. In order to modify the theme, you will have to copy the file you want to modify to the same directory under `layouts` directory. 8 | 9 | For example, in order to modify the `themes/hugo-theme-stack/layouts/partials/head/custom.html` file, you will have to copy it to `layouts/partials/head/custom.html` and modify it there (copy the code from theme's repository). 10 | The same applies to `assets` and `static` directories. 11 | 12 | ## Git submodule 13 | 14 | ::: tip 15 | The method described above for Hugo module works here too. In fact it's the recommended way for small changes. 16 | ::: 17 | 18 | If you installed the theme through Git / Git submodule, you can modify the theme file directly and see the changes in your local site. 19 | 20 | However, **you can not commit and push the changes directly** since you don't have the permission to push to the theme repository. 21 | 22 | You need to **fork** the theme repository and push your changes to your forked repository (change submodule's repository url). Then, you can commit those changes to your site repository. 23 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: home 3 | 4 | title: Stack 5 | titleTemplate: Card-style Hugo theme designed for bloggers 6 | 7 | hero: 8 | name: Stack 9 | text: Card-style theme designed for bloggers 10 | image: 11 | src: /logo.png 12 | alt: Stack 13 | actions: 14 | - theme: brand 15 | text: Get Started 16 | link: /guide/getting-started 17 | - theme: alt 18 | text: View Demo 19 | link: https://demo.stack.jimmycai.com 20 | - theme: alt 21 | text: View on GitHub 22 | link: https://github.com/CaiJimmy/hugo-theme-stack 23 | 24 | features: 25 | - title: No CSS and JavaScript framework 26 | details: Keep your site lightweight and fast. All the styles are written in SCSS and the scripts are written in vanilla JavaScript. 27 | icon: ⚡️ 28 | - title: Dark mode 29 | details: Dark mode is supported by default. It will be automatically enabled when the system is in dark mode. 30 | icon: 🌙 31 | - title: Multilingual mode and RTL support 32 | details: Support for multiple languages and right-to-left languages out of the box. No need to worry about i18n. 33 | icon: 🌐 34 | - title: A set of useful features 35 | details: Table of contents, local search, code highlighting, image zooming, and more. 36 | icon: 🧰 37 | --- -------------------------------------------------------------------------------- /docs/public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CaiJimmy/stack-docs/9435b0e227caa63286c24bf9d61814f6a48e3728/docs/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /docs/public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CaiJimmy/stack-docs/9435b0e227caa63286c24bf9d61814f6a48e3728/docs/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /docs/public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CaiJimmy/stack-docs/9435b0e227caa63286c24bf9d61814f6a48e3728/docs/public/apple-touch-icon.png -------------------------------------------------------------------------------- /docs/public/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #00aba9 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CaiJimmy/stack-docs/9435b0e227caa63286c24bf9d61814f6a48e3728/docs/public/favicon-16x16.png -------------------------------------------------------------------------------- /docs/public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CaiJimmy/stack-docs/9435b0e227caa63286c24bf9d61814f6a48e3728/docs/public/favicon-32x32.png -------------------------------------------------------------------------------- /docs/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CaiJimmy/stack-docs/9435b0e227caa63286c24bf9d61814f6a48e3728/docs/public/favicon.ico -------------------------------------------------------------------------------- /docs/public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CaiJimmy/stack-docs/9435b0e227caa63286c24bf9d61814f6a48e3728/docs/public/logo.png -------------------------------------------------------------------------------- /docs/public/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CaiJimmy/stack-docs/9435b0e227caa63286c24bf9d61814f6a48e3728/docs/public/mstile-150x150.png -------------------------------------------------------------------------------- /docs/public/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.14, written by Peter Selinger 2001-2017 9 | 10 | 12 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /docs/public/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "short_name": "", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /docs/writing/frontmatter.md: -------------------------------------------------------------------------------- 1 | # Frontmatter Configs 2 | 3 | [[toc]] 4 | 5 | ## description 6 | 7 | * Type: `string` 8 | * Available in: single pages and list pages 9 | 10 | Description of the page. 11 | 12 | ## image 13 | 14 | * Type: `string` 15 | * Available in: single pages and list pages 16 | 17 | Featured image of the page. 18 | 19 | ## comments 20 | 21 | * Type: `bool` 22 | * Available in: single pages 23 | 24 | Show / hide comment section of the page. 25 | 26 | ## license 27 | 28 | * Type: `string|bool` 29 | * Available in: single pages 30 | * Default: `.Site.Params.Article.License.Default` 31 | 32 | License of the page. If it's set to `false`, the license section will be hidden. 33 | 34 | ## math 35 | 36 | * Type: `bool` 37 | * Available in: single pages 38 | 39 | Enable / disable KaTeX rendering. 40 | 41 | ## toc 42 | 43 | * Type: `bool` 44 | * Available in: single pages 45 | * Default: `.Site.Params.Article.toc` 46 | 47 | Show / hide table of contents of the page. 48 | 49 | ::: info 50 | TOC will be shown only if the page has at least one heading. 51 | ::: 52 | 53 | ## style 54 | 55 | * Type: `map[string]string` 56 | * Available in: list pages 57 | 58 | Additional CSS styles for taxonomy term badge that appears in article page. 59 | 60 | Currently only `background` (background of the badge) and `color` (text color) are supported. 61 | 62 | ## keywords 63 | 64 | * Type: `[]string` 65 | 66 | Keywords of the page. Useful for SEO. 67 | 68 | ## readingTime 69 | 70 | * Type: `bool` 71 | * Default: `.Site.Params.Article.ReadingTime` 72 | 73 | Show / hide reading time of the page. 74 | -------------------------------------------------------------------------------- /docs/writing/markdown.md: -------------------------------------------------------------------------------- 1 | # Writing 2 | 3 | Stack uses Hugo's **page bundles** to organize your content. A page bundle is a directory that contains a content file and any related resources. For example, a page bundle for a blog post might look like this: 4 | 5 | ``` 6 | content 7 | └── post 8 | └── my-first-post 9 | ├── index.md 10 | ├── image1.png 11 | └── image2.png 12 | ``` 13 | 14 | This is the recommended way to organize your content. You can read more about page bundles in [Hugo's documentation](https://gohugo.io/content-management/page-bundles/). 15 | 16 | ::: warning 17 | Inserting external images is supported, but **it is not recommended**. 18 | 19 | Features like image gallery and image zooming will not work with external images. Those feature needs to know the image's dimensions, which is not possible with external images. 20 | ::: 21 | 22 | With above organization, you can insert images in your content like this: 23 | 24 | ```markdown 25 | --- content/post/my-first-post/index.md --- 26 | ![Image 1](image1.png) 27 | ![Image 2](image2.png) 28 | ``` 29 | 30 | ## Insert image gallery 31 | 32 | To insert an image gallery, you need to create a page bundle for the gallery. For example: 33 | 34 | ``` 35 | content 36 | └── gallery 37 | └── my-first-gallery 38 | ├── index.md 39 | ├── image1.png 40 | ├── image2.png 41 | └── image3.png 42 | ``` 43 | 44 | Then, you can insert the gallery in your content like this: 45 | 46 | ```markdown 47 | --- content/gallery/my-first-gallery/index.md --- 48 | ![Image 1](image1.png) ![Image 2](image2.png) 49 | ![Image 3](image3.png) 50 | ``` 51 | 52 | Which will render in two rows, with two images in the first row and one image in the second row. 53 | -------------------------------------------------------------------------------- /docs/writing/shortcodes.md: -------------------------------------------------------------------------------- 1 | # Shortcodes 2 | 3 | Stack comes with a set of [shortcodes](https://gohugo.io/content-management/shortcodes/) that you can use in your content. 4 | 5 | This page only includes the shortcodes that are specific to Stack. Hugo's built-in shortcodes are documented [here](https://gohugo.io/content-management/shortcodes/#use-hugos-built-in-shortcodes). 6 | 7 | ## Bilibili video 8 | 9 | Embed a [Bilibili](https://www.bilibili.com/) video. 10 | 11 | ```markdown 12 | {{< bilibili VIDEO_ID PART_NUMBER >}} 13 | ``` 14 | 15 | The `Video_ID` can be found in the URL of the video. For example, the video ID of `https://www.bilibili.com/video/av12345678` is `av12345678`. Both `AV` and `BV` are supported. 16 | 17 | The `PART_NUMBER` is optional. It can be used to specify the part of the video to play. For example, the part number of `https://www.bilibili.com/video/av12345678?p=2` is `2`. 18 | 19 | ## Tencent video 20 | 21 | Embed a [Tencent Video](https://v.qq.com/) video. 22 | 23 | ```markdown 24 | {{< tencent VIDEO_ID >}} 25 | ``` 26 | 27 | The `Video_ID` can be found in the URL of the video. For example, the video ID of `https://v.qq.com/x/cover/hzgtnf6tbvfekfv/g0014r3khdw.html` is `g0014r3khdw`. 28 | 29 | ## YouTube video 30 | 31 | Embed a [YouTube](https://www.youtube.com/) video. 32 | 33 | ```markdown 34 | {{< youtube VIDEO_ID >}} 35 | ``` 36 | 37 | The `Video_ID` can be found in the URL of the video. For example, the video ID of `https://www.youtube.com/watch?v=VIDEO_ID` is `VIDEO_ID`. 38 | 39 | ## Generic video file 40 | 41 | Embed a video file. 42 | 43 | ```markdown 44 | {{< video VIDEO_URL >}} 45 | 46 | {{< video src="VIDEO_URL" autoplay="true" poster="./video-poster.png" >}} 47 | ``` 48 | 49 | The `VIDEO_URL` can be a URL or a path relative to the `static` directory. For example, `src="/video/my-video.mp4"` will embed the video file `static/video/my-video.mp4` of your site folder. 50 | 51 | The `autoplay` attribute is optional. It can be used to specify whether the video should be played automatically. The `poster` attribute is optional. It can be used to specify the poster image of the video. 52 | 53 | ## GitLab 54 | 55 | Embed a [GitLab](https://gitlab.com/) snippets. 56 | 57 | ```markdown 58 | {{< gitlab SNIPPET_ID >}} 59 | ``` 60 | 61 | The `SNIPPET_ID` can be found in the URL of the snippet. For example, the snippet ID of `https://gitlab.com/-/snippets/1234567` is `1234567`. 62 | 63 | ## Quote 64 | 65 | ```markdown 66 | {{< quote author="A famous person" source="The book they wrote" url="https://en.wikipedia.org/wiki/Book">}} 67 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 68 | {{< /quote >}} 69 | ``` -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "stack-docs", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "docs:dev": "vitepress dev docs", 8 | "docs:build": "vitepress build docs", 9 | "docs:serve": "vitepress serve docs" 10 | }, 11 | "type": "module", 12 | "keywords": [], 13 | "author": "", 14 | "license": "ISC", 15 | "devDependencies": { 16 | "vitepress": "1.0.0-rc.24", 17 | "vue": "^3.3.7" 18 | }, 19 | "pnpm": { 20 | "peerDependencyRules": { 21 | "ignoreMissing": [ 22 | "@algolia/client-search" 23 | ] 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | devDependencies: 8 | vitepress: 9 | specifier: 1.0.0-rc.24 10 | version: 1.0.0-rc.24(search-insights@2.9.0) 11 | vue: 12 | specifier: ^3.3.7 13 | version: 3.3.7 14 | 15 | packages: 16 | 17 | /@algolia/autocomplete-core@1.9.3(algoliasearch@4.20.0)(search-insights@2.9.0): 18 | resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} 19 | dependencies: 20 | '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(algoliasearch@4.20.0)(search-insights@2.9.0) 21 | '@algolia/autocomplete-shared': 1.9.3(algoliasearch@4.20.0) 22 | transitivePeerDependencies: 23 | - '@algolia/client-search' 24 | - algoliasearch 25 | - search-insights 26 | dev: true 27 | 28 | /@algolia/autocomplete-plugin-algolia-insights@1.9.3(algoliasearch@4.20.0)(search-insights@2.9.0): 29 | resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} 30 | peerDependencies: 31 | search-insights: '>= 1 < 3' 32 | dependencies: 33 | '@algolia/autocomplete-shared': 1.9.3(algoliasearch@4.20.0) 34 | search-insights: 2.9.0 35 | transitivePeerDependencies: 36 | - '@algolia/client-search' 37 | - algoliasearch 38 | dev: true 39 | 40 | /@algolia/autocomplete-preset-algolia@1.9.3(algoliasearch@4.20.0): 41 | resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} 42 | peerDependencies: 43 | '@algolia/client-search': '>= 4.9.1 < 6' 44 | algoliasearch: '>= 4.9.1 < 6' 45 | peerDependenciesMeta: 46 | '@algolia/client-search': 47 | optional: true 48 | dependencies: 49 | '@algolia/autocomplete-shared': 1.9.3(algoliasearch@4.20.0) 50 | algoliasearch: 4.20.0 51 | dev: true 52 | 53 | /@algolia/autocomplete-shared@1.9.3(algoliasearch@4.20.0): 54 | resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} 55 | peerDependencies: 56 | '@algolia/client-search': '>= 4.9.1 < 6' 57 | algoliasearch: '>= 4.9.1 < 6' 58 | peerDependenciesMeta: 59 | '@algolia/client-search': 60 | optional: true 61 | dependencies: 62 | algoliasearch: 4.20.0 63 | dev: true 64 | 65 | /@algolia/cache-browser-local-storage@4.20.0: 66 | resolution: {integrity: sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==} 67 | dependencies: 68 | '@algolia/cache-common': 4.20.0 69 | dev: true 70 | 71 | /@algolia/cache-common@4.20.0: 72 | resolution: {integrity: sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==} 73 | dev: true 74 | 75 | /@algolia/cache-in-memory@4.20.0: 76 | resolution: {integrity: sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==} 77 | dependencies: 78 | '@algolia/cache-common': 4.20.0 79 | dev: true 80 | 81 | /@algolia/client-account@4.20.0: 82 | resolution: {integrity: sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==} 83 | dependencies: 84 | '@algolia/client-common': 4.20.0 85 | '@algolia/client-search': 4.20.0 86 | '@algolia/transporter': 4.20.0 87 | dev: true 88 | 89 | /@algolia/client-analytics@4.20.0: 90 | resolution: {integrity: sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==} 91 | dependencies: 92 | '@algolia/client-common': 4.20.0 93 | '@algolia/client-search': 4.20.0 94 | '@algolia/requester-common': 4.20.0 95 | '@algolia/transporter': 4.20.0 96 | dev: true 97 | 98 | /@algolia/client-common@4.20.0: 99 | resolution: {integrity: sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==} 100 | dependencies: 101 | '@algolia/requester-common': 4.20.0 102 | '@algolia/transporter': 4.20.0 103 | dev: true 104 | 105 | /@algolia/client-personalization@4.20.0: 106 | resolution: {integrity: sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==} 107 | dependencies: 108 | '@algolia/client-common': 4.20.0 109 | '@algolia/requester-common': 4.20.0 110 | '@algolia/transporter': 4.20.0 111 | dev: true 112 | 113 | /@algolia/client-search@4.20.0: 114 | resolution: {integrity: sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==} 115 | dependencies: 116 | '@algolia/client-common': 4.20.0 117 | '@algolia/requester-common': 4.20.0 118 | '@algolia/transporter': 4.20.0 119 | dev: true 120 | 121 | /@algolia/logger-common@4.20.0: 122 | resolution: {integrity: sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==} 123 | dev: true 124 | 125 | /@algolia/logger-console@4.20.0: 126 | resolution: {integrity: sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==} 127 | dependencies: 128 | '@algolia/logger-common': 4.20.0 129 | dev: true 130 | 131 | /@algolia/requester-browser-xhr@4.20.0: 132 | resolution: {integrity: sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==} 133 | dependencies: 134 | '@algolia/requester-common': 4.20.0 135 | dev: true 136 | 137 | /@algolia/requester-common@4.20.0: 138 | resolution: {integrity: sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==} 139 | dev: true 140 | 141 | /@algolia/requester-node-http@4.20.0: 142 | resolution: {integrity: sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==} 143 | dependencies: 144 | '@algolia/requester-common': 4.20.0 145 | dev: true 146 | 147 | /@algolia/transporter@4.20.0: 148 | resolution: {integrity: sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==} 149 | dependencies: 150 | '@algolia/cache-common': 4.20.0 151 | '@algolia/logger-common': 4.20.0 152 | '@algolia/requester-common': 4.20.0 153 | dev: true 154 | 155 | /@babel/helper-string-parser@7.22.5: 156 | resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} 157 | engines: {node: '>=6.9.0'} 158 | dev: true 159 | 160 | /@babel/helper-validator-identifier@7.22.20: 161 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} 162 | engines: {node: '>=6.9.0'} 163 | dev: true 164 | 165 | /@babel/parser@7.23.0: 166 | resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} 167 | engines: {node: '>=6.0.0'} 168 | hasBin: true 169 | dependencies: 170 | '@babel/types': 7.23.0 171 | dev: true 172 | 173 | /@babel/types@7.23.0: 174 | resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} 175 | engines: {node: '>=6.9.0'} 176 | dependencies: 177 | '@babel/helper-string-parser': 7.22.5 178 | '@babel/helper-validator-identifier': 7.22.20 179 | to-fast-properties: 2.0.0 180 | dev: true 181 | 182 | /@docsearch/css@3.5.2: 183 | resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} 184 | dev: true 185 | 186 | /@docsearch/js@3.5.2(search-insights@2.9.0): 187 | resolution: {integrity: sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==} 188 | dependencies: 189 | '@docsearch/react': 3.5.2(search-insights@2.9.0) 190 | preact: 10.18.1 191 | transitivePeerDependencies: 192 | - '@algolia/client-search' 193 | - '@types/react' 194 | - react 195 | - react-dom 196 | - search-insights 197 | dev: true 198 | 199 | /@docsearch/react@3.5.2(search-insights@2.9.0): 200 | resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} 201 | peerDependencies: 202 | '@types/react': '>= 16.8.0 < 19.0.0' 203 | react: '>= 16.8.0 < 19.0.0' 204 | react-dom: '>= 16.8.0 < 19.0.0' 205 | search-insights: '>= 1 < 3' 206 | peerDependenciesMeta: 207 | '@types/react': 208 | optional: true 209 | react: 210 | optional: true 211 | react-dom: 212 | optional: true 213 | search-insights: 214 | optional: true 215 | dependencies: 216 | '@algolia/autocomplete-core': 1.9.3(algoliasearch@4.20.0)(search-insights@2.9.0) 217 | '@algolia/autocomplete-preset-algolia': 1.9.3(algoliasearch@4.20.0) 218 | '@docsearch/css': 3.5.2 219 | algoliasearch: 4.20.0 220 | search-insights: 2.9.0 221 | transitivePeerDependencies: 222 | - '@algolia/client-search' 223 | dev: true 224 | 225 | /@esbuild/android-arm64@0.18.20: 226 | resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} 227 | engines: {node: '>=12'} 228 | cpu: [arm64] 229 | os: [android] 230 | requiresBuild: true 231 | dev: true 232 | optional: true 233 | 234 | /@esbuild/android-arm@0.18.20: 235 | resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} 236 | engines: {node: '>=12'} 237 | cpu: [arm] 238 | os: [android] 239 | requiresBuild: true 240 | dev: true 241 | optional: true 242 | 243 | /@esbuild/android-x64@0.18.20: 244 | resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} 245 | engines: {node: '>=12'} 246 | cpu: [x64] 247 | os: [android] 248 | requiresBuild: true 249 | dev: true 250 | optional: true 251 | 252 | /@esbuild/darwin-arm64@0.18.20: 253 | resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} 254 | engines: {node: '>=12'} 255 | cpu: [arm64] 256 | os: [darwin] 257 | requiresBuild: true 258 | dev: true 259 | optional: true 260 | 261 | /@esbuild/darwin-x64@0.18.20: 262 | resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} 263 | engines: {node: '>=12'} 264 | cpu: [x64] 265 | os: [darwin] 266 | requiresBuild: true 267 | dev: true 268 | optional: true 269 | 270 | /@esbuild/freebsd-arm64@0.18.20: 271 | resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} 272 | engines: {node: '>=12'} 273 | cpu: [arm64] 274 | os: [freebsd] 275 | requiresBuild: true 276 | dev: true 277 | optional: true 278 | 279 | /@esbuild/freebsd-x64@0.18.20: 280 | resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} 281 | engines: {node: '>=12'} 282 | cpu: [x64] 283 | os: [freebsd] 284 | requiresBuild: true 285 | dev: true 286 | optional: true 287 | 288 | /@esbuild/linux-arm64@0.18.20: 289 | resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} 290 | engines: {node: '>=12'} 291 | cpu: [arm64] 292 | os: [linux] 293 | requiresBuild: true 294 | dev: true 295 | optional: true 296 | 297 | /@esbuild/linux-arm@0.18.20: 298 | resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} 299 | engines: {node: '>=12'} 300 | cpu: [arm] 301 | os: [linux] 302 | requiresBuild: true 303 | dev: true 304 | optional: true 305 | 306 | /@esbuild/linux-ia32@0.18.20: 307 | resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} 308 | engines: {node: '>=12'} 309 | cpu: [ia32] 310 | os: [linux] 311 | requiresBuild: true 312 | dev: true 313 | optional: true 314 | 315 | /@esbuild/linux-loong64@0.18.20: 316 | resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} 317 | engines: {node: '>=12'} 318 | cpu: [loong64] 319 | os: [linux] 320 | requiresBuild: true 321 | dev: true 322 | optional: true 323 | 324 | /@esbuild/linux-mips64el@0.18.20: 325 | resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} 326 | engines: {node: '>=12'} 327 | cpu: [mips64el] 328 | os: [linux] 329 | requiresBuild: true 330 | dev: true 331 | optional: true 332 | 333 | /@esbuild/linux-ppc64@0.18.20: 334 | resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} 335 | engines: {node: '>=12'} 336 | cpu: [ppc64] 337 | os: [linux] 338 | requiresBuild: true 339 | dev: true 340 | optional: true 341 | 342 | /@esbuild/linux-riscv64@0.18.20: 343 | resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} 344 | engines: {node: '>=12'} 345 | cpu: [riscv64] 346 | os: [linux] 347 | requiresBuild: true 348 | dev: true 349 | optional: true 350 | 351 | /@esbuild/linux-s390x@0.18.20: 352 | resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} 353 | engines: {node: '>=12'} 354 | cpu: [s390x] 355 | os: [linux] 356 | requiresBuild: true 357 | dev: true 358 | optional: true 359 | 360 | /@esbuild/linux-x64@0.18.20: 361 | resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} 362 | engines: {node: '>=12'} 363 | cpu: [x64] 364 | os: [linux] 365 | requiresBuild: true 366 | dev: true 367 | optional: true 368 | 369 | /@esbuild/netbsd-x64@0.18.20: 370 | resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} 371 | engines: {node: '>=12'} 372 | cpu: [x64] 373 | os: [netbsd] 374 | requiresBuild: true 375 | dev: true 376 | optional: true 377 | 378 | /@esbuild/openbsd-x64@0.18.20: 379 | resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} 380 | engines: {node: '>=12'} 381 | cpu: [x64] 382 | os: [openbsd] 383 | requiresBuild: true 384 | dev: true 385 | optional: true 386 | 387 | /@esbuild/sunos-x64@0.18.20: 388 | resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} 389 | engines: {node: '>=12'} 390 | cpu: [x64] 391 | os: [sunos] 392 | requiresBuild: true 393 | dev: true 394 | optional: true 395 | 396 | /@esbuild/win32-arm64@0.18.20: 397 | resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} 398 | engines: {node: '>=12'} 399 | cpu: [arm64] 400 | os: [win32] 401 | requiresBuild: true 402 | dev: true 403 | optional: true 404 | 405 | /@esbuild/win32-ia32@0.18.20: 406 | resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} 407 | engines: {node: '>=12'} 408 | cpu: [ia32] 409 | os: [win32] 410 | requiresBuild: true 411 | dev: true 412 | optional: true 413 | 414 | /@esbuild/win32-x64@0.18.20: 415 | resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} 416 | engines: {node: '>=12'} 417 | cpu: [x64] 418 | os: [win32] 419 | requiresBuild: true 420 | dev: true 421 | optional: true 422 | 423 | /@jridgewell/sourcemap-codec@1.4.15: 424 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 425 | dev: true 426 | 427 | /@types/linkify-it@3.0.4: 428 | resolution: {integrity: sha512-hPpIeeHb/2UuCw06kSNAOVWgehBLXEo0/fUs0mw3W2qhqX89PI2yvok83MnuctYGCPrabGIoi0fFso4DQ+sNUQ==} 429 | dev: true 430 | 431 | /@types/markdown-it@13.0.5: 432 | resolution: {integrity: sha512-QhJP7hkq3FCrFNx0szMNCT/79CXfcEgUIA3jc5GBfeXqoKsk3R8JZm2wRXJ2DiyjbPE4VMFOSDemLFcUTZmHEQ==} 433 | dependencies: 434 | '@types/linkify-it': 3.0.4 435 | '@types/mdurl': 1.0.4 436 | dev: true 437 | 438 | /@types/mdurl@1.0.4: 439 | resolution: {integrity: sha512-ARVxjAEX5TARFRzpDRVC6cEk0hUIXCCwaMhz8y7S1/PxU6zZS1UMjyobz7q4w/D/R552r4++EhwmXK1N2rAy0A==} 440 | dev: true 441 | 442 | /@types/web-bluetooth@0.0.18: 443 | resolution: {integrity: sha512-v/ZHEj9xh82usl8LMR3GarzFY1IrbXJw5L4QfQhokjRV91q+SelFqxQWSep1ucXEZ22+dSTwLFkXeur25sPIbw==} 444 | dev: true 445 | 446 | /@vitejs/plugin-vue@4.3.1(vite@4.5.0)(vue@3.3.7): 447 | resolution: {integrity: sha512-tUBEtWcF7wFtII7ayNiLNDTCE1X1afySEo+XNVMNkFXaThENyCowIEX095QqbJZGTgoOcSVDJGlnde2NG4jtbQ==} 448 | engines: {node: ^14.18.0 || >=16.0.0} 449 | peerDependencies: 450 | vite: ^4.0.0 451 | vue: ^3.2.25 452 | dependencies: 453 | vite: 4.5.0 454 | vue: 3.3.7 455 | dev: true 456 | 457 | /@vue/compiler-core@3.3.7: 458 | resolution: {integrity: sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==} 459 | dependencies: 460 | '@babel/parser': 7.23.0 461 | '@vue/shared': 3.3.7 462 | estree-walker: 2.0.2 463 | source-map-js: 1.0.2 464 | dev: true 465 | 466 | /@vue/compiler-dom@3.3.7: 467 | resolution: {integrity: sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==} 468 | dependencies: 469 | '@vue/compiler-core': 3.3.7 470 | '@vue/shared': 3.3.7 471 | dev: true 472 | 473 | /@vue/compiler-sfc@3.3.7: 474 | resolution: {integrity: sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==} 475 | dependencies: 476 | '@babel/parser': 7.23.0 477 | '@vue/compiler-core': 3.3.7 478 | '@vue/compiler-dom': 3.3.7 479 | '@vue/compiler-ssr': 3.3.7 480 | '@vue/reactivity-transform': 3.3.7 481 | '@vue/shared': 3.3.7 482 | estree-walker: 2.0.2 483 | magic-string: 0.30.5 484 | postcss: 8.4.31 485 | source-map-js: 1.0.2 486 | dev: true 487 | 488 | /@vue/compiler-ssr@3.3.7: 489 | resolution: {integrity: sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==} 490 | dependencies: 491 | '@vue/compiler-dom': 3.3.7 492 | '@vue/shared': 3.3.7 493 | dev: true 494 | 495 | /@vue/devtools-api@6.5.1: 496 | resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==} 497 | dev: true 498 | 499 | /@vue/reactivity-transform@3.3.7: 500 | resolution: {integrity: sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==} 501 | dependencies: 502 | '@babel/parser': 7.23.0 503 | '@vue/compiler-core': 3.3.7 504 | '@vue/shared': 3.3.7 505 | estree-walker: 2.0.2 506 | magic-string: 0.30.5 507 | dev: true 508 | 509 | /@vue/reactivity@3.3.7: 510 | resolution: {integrity: sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==} 511 | dependencies: 512 | '@vue/shared': 3.3.7 513 | dev: true 514 | 515 | /@vue/runtime-core@3.3.7: 516 | resolution: {integrity: sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ==} 517 | dependencies: 518 | '@vue/reactivity': 3.3.7 519 | '@vue/shared': 3.3.7 520 | dev: true 521 | 522 | /@vue/runtime-dom@3.3.7: 523 | resolution: {integrity: sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw==} 524 | dependencies: 525 | '@vue/runtime-core': 3.3.7 526 | '@vue/shared': 3.3.7 527 | csstype: 3.1.2 528 | dev: true 529 | 530 | /@vue/server-renderer@3.3.7(vue@3.3.7): 531 | resolution: {integrity: sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw==} 532 | peerDependencies: 533 | vue: 3.3.7 534 | dependencies: 535 | '@vue/compiler-ssr': 3.3.7 536 | '@vue/shared': 3.3.7 537 | vue: 3.3.7 538 | dev: true 539 | 540 | /@vue/shared@3.3.7: 541 | resolution: {integrity: sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==} 542 | dev: true 543 | 544 | /@vueuse/core@10.5.0(vue@3.3.7): 545 | resolution: {integrity: sha512-z/tI2eSvxwLRjOhDm0h/SXAjNm8N5ld6/SC/JQs6o6kpJ6Ya50LnEL8g5hoYu005i28L0zqB5L5yAl8Jl26K3A==} 546 | dependencies: 547 | '@types/web-bluetooth': 0.0.18 548 | '@vueuse/metadata': 10.5.0 549 | '@vueuse/shared': 10.5.0(vue@3.3.7) 550 | vue-demi: 0.14.6(vue@3.3.7) 551 | transitivePeerDependencies: 552 | - '@vue/composition-api' 553 | - vue 554 | dev: true 555 | 556 | /@vueuse/integrations@10.5.0(focus-trap@7.5.4)(vue@3.3.7): 557 | resolution: {integrity: sha512-fm5sXLCK0Ww3rRnzqnCQRmfjDURaI4xMsx+T+cec0ngQqHx/JgUtm8G0vRjwtonIeTBsH1Q8L3SucE+7K7upJQ==} 558 | peerDependencies: 559 | async-validator: '*' 560 | axios: '*' 561 | change-case: '*' 562 | drauu: '*' 563 | focus-trap: '*' 564 | fuse.js: '*' 565 | idb-keyval: '*' 566 | jwt-decode: '*' 567 | nprogress: '*' 568 | qrcode: '*' 569 | sortablejs: '*' 570 | universal-cookie: '*' 571 | peerDependenciesMeta: 572 | async-validator: 573 | optional: true 574 | axios: 575 | optional: true 576 | change-case: 577 | optional: true 578 | drauu: 579 | optional: true 580 | focus-trap: 581 | optional: true 582 | fuse.js: 583 | optional: true 584 | idb-keyval: 585 | optional: true 586 | jwt-decode: 587 | optional: true 588 | nprogress: 589 | optional: true 590 | qrcode: 591 | optional: true 592 | sortablejs: 593 | optional: true 594 | universal-cookie: 595 | optional: true 596 | dependencies: 597 | '@vueuse/core': 10.5.0(vue@3.3.7) 598 | '@vueuse/shared': 10.5.0(vue@3.3.7) 599 | focus-trap: 7.5.4 600 | vue-demi: 0.14.6(vue@3.3.7) 601 | transitivePeerDependencies: 602 | - '@vue/composition-api' 603 | - vue 604 | dev: true 605 | 606 | /@vueuse/metadata@10.5.0: 607 | resolution: {integrity: sha512-fEbElR+MaIYyCkeM0SzWkdoMtOpIwO72x8WsZHRE7IggiOlILttqttM69AS13nrDxosnDBYdyy3C5mR1LCxHsw==} 608 | dev: true 609 | 610 | /@vueuse/shared@10.5.0(vue@3.3.7): 611 | resolution: {integrity: sha512-18iyxbbHYLst9MqU1X1QNdMHIjks6wC7XTVf0KNOv5es/Ms6gjVFCAAWTVP2JStuGqydg3DT+ExpFORUEi9yhg==} 612 | dependencies: 613 | vue-demi: 0.14.6(vue@3.3.7) 614 | transitivePeerDependencies: 615 | - '@vue/composition-api' 616 | - vue 617 | dev: true 618 | 619 | /algoliasearch@4.20.0: 620 | resolution: {integrity: sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==} 621 | dependencies: 622 | '@algolia/cache-browser-local-storage': 4.20.0 623 | '@algolia/cache-common': 4.20.0 624 | '@algolia/cache-in-memory': 4.20.0 625 | '@algolia/client-account': 4.20.0 626 | '@algolia/client-analytics': 4.20.0 627 | '@algolia/client-common': 4.20.0 628 | '@algolia/client-personalization': 4.20.0 629 | '@algolia/client-search': 4.20.0 630 | '@algolia/logger-common': 4.20.0 631 | '@algolia/logger-console': 4.20.0 632 | '@algolia/requester-browser-xhr': 4.20.0 633 | '@algolia/requester-common': 4.20.0 634 | '@algolia/requester-node-http': 4.20.0 635 | '@algolia/transporter': 4.20.0 636 | dev: true 637 | 638 | /ansi-sequence-parser@1.1.1: 639 | resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} 640 | dev: true 641 | 642 | /csstype@3.1.2: 643 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} 644 | dev: true 645 | 646 | /esbuild@0.18.20: 647 | resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} 648 | engines: {node: '>=12'} 649 | hasBin: true 650 | requiresBuild: true 651 | optionalDependencies: 652 | '@esbuild/android-arm': 0.18.20 653 | '@esbuild/android-arm64': 0.18.20 654 | '@esbuild/android-x64': 0.18.20 655 | '@esbuild/darwin-arm64': 0.18.20 656 | '@esbuild/darwin-x64': 0.18.20 657 | '@esbuild/freebsd-arm64': 0.18.20 658 | '@esbuild/freebsd-x64': 0.18.20 659 | '@esbuild/linux-arm': 0.18.20 660 | '@esbuild/linux-arm64': 0.18.20 661 | '@esbuild/linux-ia32': 0.18.20 662 | '@esbuild/linux-loong64': 0.18.20 663 | '@esbuild/linux-mips64el': 0.18.20 664 | '@esbuild/linux-ppc64': 0.18.20 665 | '@esbuild/linux-riscv64': 0.18.20 666 | '@esbuild/linux-s390x': 0.18.20 667 | '@esbuild/linux-x64': 0.18.20 668 | '@esbuild/netbsd-x64': 0.18.20 669 | '@esbuild/openbsd-x64': 0.18.20 670 | '@esbuild/sunos-x64': 0.18.20 671 | '@esbuild/win32-arm64': 0.18.20 672 | '@esbuild/win32-ia32': 0.18.20 673 | '@esbuild/win32-x64': 0.18.20 674 | dev: true 675 | 676 | /estree-walker@2.0.2: 677 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 678 | dev: true 679 | 680 | /focus-trap@7.5.4: 681 | resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} 682 | dependencies: 683 | tabbable: 6.2.0 684 | dev: true 685 | 686 | /fsevents@2.3.3: 687 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 688 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 689 | os: [darwin] 690 | requiresBuild: true 691 | dev: true 692 | optional: true 693 | 694 | /jsonc-parser@3.2.0: 695 | resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} 696 | dev: true 697 | 698 | /magic-string@0.30.5: 699 | resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} 700 | engines: {node: '>=12'} 701 | dependencies: 702 | '@jridgewell/sourcemap-codec': 1.4.15 703 | dev: true 704 | 705 | /mark.js@8.11.1: 706 | resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} 707 | dev: true 708 | 709 | /minisearch@6.2.0: 710 | resolution: {integrity: sha512-BECkorDF1TY2rGKt9XHdSeP9TP29yUbrAaCh/C03wpyf1vx3uYcP/+8XlMcpTkgoU0rBVnHMAOaP83Rc9Tm+TQ==} 711 | dev: true 712 | 713 | /nanoid@3.3.6: 714 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 715 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 716 | hasBin: true 717 | dev: true 718 | 719 | /picocolors@1.0.0: 720 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 721 | dev: true 722 | 723 | /postcss@8.4.31: 724 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} 725 | engines: {node: ^10 || ^12 || >=14} 726 | dependencies: 727 | nanoid: 3.3.6 728 | picocolors: 1.0.0 729 | source-map-js: 1.0.2 730 | dev: true 731 | 732 | /preact@10.18.1: 733 | resolution: {integrity: sha512-mKUD7RRkQQM6s7Rkmi7IFkoEHjuFqRQUaXamO61E6Nn7vqF/bo7EZCmSyrUnp2UWHw0O7XjZ2eeXis+m7tf4lg==} 734 | dev: true 735 | 736 | /rollup@3.29.4: 737 | resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} 738 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 739 | hasBin: true 740 | optionalDependencies: 741 | fsevents: 2.3.3 742 | dev: true 743 | 744 | /search-insights@2.9.0: 745 | resolution: {integrity: sha512-bkWW9nIHOFkLwjQ1xqVaMbjjO5vhP26ERsH9Y3pKr8imthofEFIxlnOabkmGcw6ksRj9jWidcI65vvjJH/nTGg==} 746 | dev: true 747 | 748 | /shiki@0.14.5: 749 | resolution: {integrity: sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==} 750 | dependencies: 751 | ansi-sequence-parser: 1.1.1 752 | jsonc-parser: 3.2.0 753 | vscode-oniguruma: 1.7.0 754 | vscode-textmate: 8.0.0 755 | dev: true 756 | 757 | /source-map-js@1.0.2: 758 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 759 | engines: {node: '>=0.10.0'} 760 | dev: true 761 | 762 | /tabbable@6.2.0: 763 | resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} 764 | dev: true 765 | 766 | /to-fast-properties@2.0.0: 767 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 768 | engines: {node: '>=4'} 769 | dev: true 770 | 771 | /vite@4.5.0: 772 | resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} 773 | engines: {node: ^14.18.0 || >=16.0.0} 774 | hasBin: true 775 | peerDependencies: 776 | '@types/node': '>= 14' 777 | less: '*' 778 | lightningcss: ^1.21.0 779 | sass: '*' 780 | stylus: '*' 781 | sugarss: '*' 782 | terser: ^5.4.0 783 | peerDependenciesMeta: 784 | '@types/node': 785 | optional: true 786 | less: 787 | optional: true 788 | lightningcss: 789 | optional: true 790 | sass: 791 | optional: true 792 | stylus: 793 | optional: true 794 | sugarss: 795 | optional: true 796 | terser: 797 | optional: true 798 | dependencies: 799 | esbuild: 0.18.20 800 | postcss: 8.4.31 801 | rollup: 3.29.4 802 | optionalDependencies: 803 | fsevents: 2.3.3 804 | dev: true 805 | 806 | /vitepress@1.0.0-rc.24(search-insights@2.9.0): 807 | resolution: {integrity: sha512-RpnL8cnOGwiRlBbrYQUm9sYkJbtyOt/wYXk2diTcokY4yvks/5lq9LuSt+MURWB6ZqwpSNHvTmxgaSfLoG0/OA==} 808 | hasBin: true 809 | peerDependencies: 810 | markdown-it-mathjax3: ^4.3.2 811 | postcss: ^8.4.31 812 | peerDependenciesMeta: 813 | markdown-it-mathjax3: 814 | optional: true 815 | postcss: 816 | optional: true 817 | dependencies: 818 | '@docsearch/css': 3.5.2 819 | '@docsearch/js': 3.5.2(search-insights@2.9.0) 820 | '@types/markdown-it': 13.0.5 821 | '@vitejs/plugin-vue': 4.3.1(vite@4.5.0)(vue@3.3.7) 822 | '@vue/devtools-api': 6.5.1 823 | '@vueuse/core': 10.5.0(vue@3.3.7) 824 | '@vueuse/integrations': 10.5.0(focus-trap@7.5.4)(vue@3.3.7) 825 | focus-trap: 7.5.4 826 | mark.js: 8.11.1 827 | minisearch: 6.2.0 828 | shiki: 0.14.5 829 | vite: 4.5.0 830 | vue: 3.3.7 831 | transitivePeerDependencies: 832 | - '@algolia/client-search' 833 | - '@types/node' 834 | - '@types/react' 835 | - '@vue/composition-api' 836 | - async-validator 837 | - axios 838 | - change-case 839 | - drauu 840 | - fuse.js 841 | - idb-keyval 842 | - jwt-decode 843 | - less 844 | - lightningcss 845 | - nprogress 846 | - qrcode 847 | - react 848 | - react-dom 849 | - sass 850 | - search-insights 851 | - sortablejs 852 | - stylus 853 | - sugarss 854 | - terser 855 | - typescript 856 | - universal-cookie 857 | dev: true 858 | 859 | /vscode-oniguruma@1.7.0: 860 | resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} 861 | dev: true 862 | 863 | /vscode-textmate@8.0.0: 864 | resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} 865 | dev: true 866 | 867 | /vue-demi@0.14.6(vue@3.3.7): 868 | resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==} 869 | engines: {node: '>=12'} 870 | hasBin: true 871 | requiresBuild: true 872 | peerDependencies: 873 | '@vue/composition-api': ^1.0.0-rc.1 874 | vue: ^3.0.0-0 || ^2.6.0 875 | peerDependenciesMeta: 876 | '@vue/composition-api': 877 | optional: true 878 | dependencies: 879 | vue: 3.3.7 880 | dev: true 881 | 882 | /vue@3.3.7: 883 | resolution: {integrity: sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA==} 884 | peerDependencies: 885 | typescript: '*' 886 | peerDependenciesMeta: 887 | typescript: 888 | optional: true 889 | dependencies: 890 | '@vue/compiler-dom': 3.3.7 891 | '@vue/compiler-sfc': 3.3.7 892 | '@vue/runtime-dom': 3.3.7 893 | '@vue/server-renderer': 3.3.7(vue@3.3.7) 894 | '@vue/shared': 3.3.7 895 | dev: true 896 | -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "github": { 3 | "silent": true 4 | }, 5 | "cleanUrls": true 6 | } --------------------------------------------------------------------------------