├── .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 |
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 |
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 | 
27 | 
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 |  
49 | 
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 | }
--------------------------------------------------------------------------------