chore: init website project

pull/48/MERGE
vben 2024-05-29 22:13:31 +08:00
parent 59b4f7d9f8
commit c531f0c154
12 changed files with 724 additions and 4 deletions

1
.gitignore vendored
View File

@ -4,6 +4,7 @@ dist
dist-ssr
coverage
*.local
**/*/.vitepress/cache/deps
.cache
.turbo
.stylelintcache

View File

@ -8,7 +8,7 @@
}
}
@layer utilities {
@layer components {
.flex-center {
@apply flex items-center justify-center;
}

View File

@ -634,7 +634,7 @@ importers:
version: 10.10.0(vue@3.4.27(typescript@5.4.5))
'@vueuse/integrations':
specifier: ^10.10.0
version: 10.10.0(async-validator@4.2.5)(axios@1.7.2)(nprogress@0.2.0)(qrcode@1.5.3)(vue@3.4.27(typescript@5.4.5))
version: 10.10.0(async-validator@4.2.5)(axios@1.7.2)(focus-trap@7.5.4)(nprogress@0.2.0)(qrcode@1.5.3)(vue@3.4.27(typescript@5.4.5))
qrcode:
specifier: ^1.5.3
version: 1.5.3
@ -808,8 +808,82 @@ importers:
specifier: ^0.2.8
version: 0.2.8
website:
devDependencies:
vitepress:
specifier: ^1.2.2
version: 1.2.2(@algolia/client-search@4.23.3)(@types/node@20.12.12)(async-validator@4.2.5)(axios@1.7.2)(nprogress@0.2.0)(postcss@8.4.38)(qrcode@1.5.3)(sass@1.77.2)(search-insights@2.14.0)(terser@5.31.0)(typescript@5.4.5)
vue:
specifier: 3.4.27
version: 3.4.27(typescript@5.4.5)
packages:
'@algolia/autocomplete-core@1.9.3':
resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==}
'@algolia/autocomplete-plugin-algolia-insights@1.9.3':
resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==}
peerDependencies:
search-insights: '>= 1 < 3'
'@algolia/autocomplete-preset-algolia@1.9.3':
resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==}
peerDependencies:
'@algolia/client-search': '>= 4.9.1 < 6'
algoliasearch: '>= 4.9.1 < 6'
'@algolia/autocomplete-shared@1.9.3':
resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==}
peerDependencies:
'@algolia/client-search': '>= 4.9.1 < 6'
algoliasearch: '>= 4.9.1 < 6'
'@algolia/cache-browser-local-storage@4.23.3':
resolution: {integrity: sha512-vRHXYCpPlTDE7i6UOy2xE03zHF2C8MEFjPN2v7fRbqVpcOvAUQK81x3Kc21xyb5aSIpYCjWCZbYZuz8Glyzyyg==}
'@algolia/cache-common@4.23.3':
resolution: {integrity: sha512-h9XcNI6lxYStaw32pHpB1TMm0RuxphF+Ik4o7tcQiodEdpKK+wKufY6QXtba7t3k8eseirEMVB83uFFF3Nu54A==}
'@algolia/cache-in-memory@4.23.3':
resolution: {integrity: sha512-yvpbuUXg/+0rbcagxNT7un0eo3czx2Uf0y4eiR4z4SD7SiptwYTpbuS0IHxcLHG3lq22ukx1T6Kjtk/rT+mqNg==}
'@algolia/client-account@4.23.3':
resolution: {integrity: sha512-hpa6S5d7iQmretHHF40QGq6hz0anWEHGlULcTIT9tbUssWUriN9AUXIFQ8Ei4w9azD0hc1rUok9/DeQQobhQMA==}
'@algolia/client-analytics@4.23.3':
resolution: {integrity: sha512-LBsEARGS9cj8VkTAVEZphjxTjMVCci+zIIiRhpFun9jGDUlS1XmhCW7CTrnaWeIuCQS/2iPyRqSy1nXPjcBLRA==}
'@algolia/client-common@4.23.3':
resolution: {integrity: sha512-l6EiPxdAlg8CYhroqS5ybfIczsGUIAC47slLPOMDeKSVXYG1n0qGiz4RjAHLw2aD0xzh2EXZ7aRguPfz7UKDKw==}
'@algolia/client-personalization@4.23.3':
resolution: {integrity: sha512-3E3yF3Ocr1tB/xOZiuC3doHQBQ2zu2MPTYZ0d4lpfWads2WTKG7ZzmGnsHmm63RflvDeLK/UVx7j2b3QuwKQ2g==}
'@algolia/client-search@4.23.3':
resolution: {integrity: sha512-P4VAKFHqU0wx9O+q29Q8YVuaowaZ5EM77rxfmGnkHUJggh28useXQdopokgwMeYw2XUht49WX5RcTQ40rZIabw==}
'@algolia/logger-common@4.23.3':
resolution: {integrity: sha512-y9kBtmJwiZ9ZZ+1Ek66P0M68mHQzKRxkW5kAAXYN/rdzgDN0d2COsViEFufxJ0pb45K4FRcfC7+33YB4BLrZ+g==}
'@algolia/logger-console@4.23.3':
resolution: {integrity: sha512-8xoiseoWDKuCVnWP8jHthgaeobDLolh00KJAdMe9XPrWPuf1by732jSpgy2BlsLTaT9m32pHI8CRfrOqQzHv3A==}
'@algolia/recommend@4.23.3':
resolution: {integrity: sha512-9fK4nXZF0bFkdcLBRDexsnGzVmu4TSYZqxdpgBW2tEyfuSSY54D4qSRkLmNkrrz4YFvdh2GM1gA8vSsnZPR73w==}
'@algolia/requester-browser-xhr@4.23.3':
resolution: {integrity: sha512-jDWGIQ96BhXbmONAQsasIpTYWslyjkiGu0Quydjlowe+ciqySpiDUrJHERIRfELE5+wFc7hc1Q5hqjGoV7yghw==}
'@algolia/requester-common@4.23.3':
resolution: {integrity: sha512-xloIdr/bedtYEGcXCiF2muajyvRhwop4cMZo+K2qzNht0CMzlRkm8YsDdj5IaBhshqfgmBb3rTg4sL4/PpvLYw==}
'@algolia/requester-node-http@4.23.3':
resolution: {integrity: sha512-zgu++8Uj03IWDEJM3fuNl34s746JnZOWn1Uz5taV1dFyJhVM/kTNw9Ik7YJWiUNHJQXcaD8IXD1eCb0nq/aByA==}
'@algolia/transporter@4.23.3':
resolution: {integrity: sha512-Wjl5gttqnf/gQKJA+dafnD0Y6Yw97yvfY8R9h0dQltX1GXTgNs1zWgvtWW0tHl1EgMdhAyw189uWiZMnL3QebQ==}
'@alloc/quick-lru@5.2.0':
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
@ -1486,6 +1560,29 @@ packages:
resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==}
engines: {node: '>=14'}
'@docsearch/css@3.6.0':
resolution: {integrity: sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==}
'@docsearch/js@3.6.0':
resolution: {integrity: sha512-QujhqINEElrkIfKwyyyTfbsfMAYCkylInLYMRqHy7PHc8xTBQCow73tlo/Kc7oIwBrCLf0P3YhjlOeV4v8hevQ==}
'@docsearch/react@3.6.0':
resolution: {integrity: sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==}
peerDependencies:
'@types/react': '>= 16.8.0 < 19.0.0'
react: '>= 16.8.0 < 19.0.0'
react-dom: '>= 16.8.0 < 19.0.0'
search-insights: '>= 1 < 3'
peerDependenciesMeta:
'@types/react':
optional: true
react:
optional: true
react-dom:
optional: true
search-insights:
optional: true
'@dual-bundle/import-meta-resolve@4.1.0':
resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==}
@ -1927,7 +2024,6 @@ packages:
'@ls-lint/ls-lint@2.2.3':
resolution: {integrity: sha512-ekM12jNm/7O2I/hsRv9HvYkRdfrHpiV1epVuI2NP+eTIcEgdIdKkKCs9KgQydu/8R5YXTov9aHdOgplmCHLupw==}
cpu: [x64, arm64, s390x]
os: [darwin, linux, win32]
hasBin: true
@ -2173,6 +2269,12 @@ packages:
'@rushstack/ts-command-line@4.19.1':
resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==}
'@shikijs/core@1.6.1':
resolution: {integrity: sha512-CqYyepN4SnBopaoXYwng4NO8riB5ask/LTCkhOFq+GNGtr2X+aKeD767eYdqYukeixEUvv4bXdyTYVaogj7KBw==}
'@shikijs/transformers@1.6.1':
resolution: {integrity: sha512-m/h2Dh99XWvTzHL8MUQmEnrB+/gxDljIfgDNR00Zg941KENqORx8Hi9sKpGYjCgXoEJKASZlEMQdPnkHj9/8aQ==}
'@simonwep/pickr@1.8.2':
resolution: {integrity: sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==}
@ -2267,6 +2369,15 @@ packages:
'@types/jsonfile@6.1.4':
resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==}
'@types/linkify-it@5.0.0':
resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
'@types/markdown-it@14.1.1':
resolution: {integrity: sha512-4NpsnpYl2Gt1ljyBGrKMxFYAYvpqbnnkgP/i/g+NLpjEUa3obn1XJCur9YbEXKDAkaXqsR1LbDnGEJ0MmKFxfg==}
'@types/mdurl@2.0.0':
resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
'@types/minimatch@3.0.5':
resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==}
@ -2454,6 +2565,9 @@ packages:
'@vue/devtools-api@6.6.1':
resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==}
'@vue/devtools-api@7.2.1':
resolution: {integrity: sha512-6oNCtyFOrNdqm6GUkFujsCgFlpbsHLnZqq7edeM/+cxAbMyCWvsaCsIMUaz7AiluKLccCGEM8fhOsjaKgBvb7g==}
'@vue/devtools-core@7.2.1':
resolution: {integrity: sha512-OyWl455UnJIVgZ6lo5WQ79WbDMoXtSRwyNKp9WzCZ0HhuQywIk4qv59KtLRe75uVmtGBde4hXNaSyRm+x9bY6g==}
@ -2595,6 +2709,9 @@ packages:
ajv@8.14.0:
resolution: {integrity: sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA==}
algoliasearch@4.23.3:
resolution: {integrity: sha512-Le/3YgNvjW9zxIQMRhUHuhiUjAlKY/zsdZpfq4dlLqg6mEm0nL6yk+7f2hDOtLpxsgE4jSzDmvHL7nXdBp5feg==}
ansi-align@3.0.1:
resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
@ -3893,6 +4010,9 @@ packages:
flatted@3.3.1:
resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
focus-trap@7.5.4:
resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==}
follow-redirects@1.15.6:
resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==}
engines: {node: '>=4.0'}
@ -4772,6 +4892,9 @@ packages:
map-stream@0.1.0:
resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==}
mark.js@8.11.1:
resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==}
mathml-tag-names@2.1.3:
resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==}
@ -4914,6 +5037,9 @@ packages:
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
engines: {node: '>=16 || 14 >=14.17'}
minisearch@6.3.0:
resolution: {integrity: sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==}
minizlib@2.1.2:
resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
engines: {node: '>= 8'}
@ -5740,6 +5866,9 @@ packages:
resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
engines: {node: ^10 || ^12 || >=14}
preact@10.22.0:
resolution: {integrity: sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw==}
preferred-pm@3.1.3:
resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==}
engines: {node: '>=10'}
@ -6133,6 +6262,9 @@ packages:
scule@1.3.0:
resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==}
search-insights@2.14.0:
resolution: {integrity: sha512-OLN6MsPMCghDOqlCtsIsYgtsC0pnwVTyT9Mu6A3ewOj1DxvzZF6COrn2g86E/c05xbktB0XN04m/t1Z+n+fTGw==}
semver-compare@1.0.0:
resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==}
@ -6191,6 +6323,9 @@ packages:
shell-quote@1.8.1:
resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
shiki@1.6.1:
resolution: {integrity: sha512-1Pu/A1rtsG6HZvQm4W0NExQ45e02og+rPog7PDaFDiMumZgOYnZIu4JtGQeAIfMwdbKSjJQoCUr79vDLKUUxWA==}
short-tree@3.0.0:
resolution: {integrity: sha512-Yd9NFs/o9QSoH4/wTjxk4Xe0+CIzitDRN1Qg7iBeTSejKjlCg/3PbgiRwDUVuaIxD0RRdv7Iz9jKr7e0HljtUg==}
engines: {node: ^14.13.1 || >=16.0.0}
@ -6513,6 +6648,9 @@ packages:
resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==}
engines: {node: ^14.18.0 || >=16.0.0}
tabbable@6.2.0:
resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
table@6.8.2:
resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==}
engines: {node: '>=10.0.0'}
@ -6939,6 +7077,18 @@ packages:
terser:
optional: true
vitepress@1.2.2:
resolution: {integrity: sha512-uZ3nXR5NY4nYj3RJWCo5jev9qlNZAQo5SUXu1U0QSUx84cUm/o7hCTDVjZ4njVSVui+PsV1oAbdQOg8ygbaf4w==}
hasBin: true
peerDependencies:
markdown-it-mathjax3: ^4
postcss: ^8
peerDependenciesMeta:
markdown-it-mathjax3:
optional: true
postcss:
optional: true
vitest@2.0.0-beta.3:
resolution: {integrity: sha512-ItxDOo9yzTy4A+BQoUDlegpIbFb4c/KuALBoHogvhBwHkTZwkPVHGkJRsNB4Kj1yvuwV+Mnhdh+PB9TLSN/t4Q==}
engines: {node: ^18.0.0 || >=20.0.0}
@ -7244,6 +7394,110 @@ packages:
snapshots:
'@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.14.0)':
dependencies:
'@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.14.0)
'@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
- search-insights
'@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.14.0)':
dependencies:
'@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)
search-insights: 2.14.0
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
'@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)':
dependencies:
'@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)
'@algolia/client-search': 4.23.3
algoliasearch: 4.23.3
'@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)':
dependencies:
'@algolia/client-search': 4.23.3
algoliasearch: 4.23.3
'@algolia/cache-browser-local-storage@4.23.3':
dependencies:
'@algolia/cache-common': 4.23.3
'@algolia/cache-common@4.23.3': {}
'@algolia/cache-in-memory@4.23.3':
dependencies:
'@algolia/cache-common': 4.23.3
'@algolia/client-account@4.23.3':
dependencies:
'@algolia/client-common': 4.23.3
'@algolia/client-search': 4.23.3
'@algolia/transporter': 4.23.3
'@algolia/client-analytics@4.23.3':
dependencies:
'@algolia/client-common': 4.23.3
'@algolia/client-search': 4.23.3
'@algolia/requester-common': 4.23.3
'@algolia/transporter': 4.23.3
'@algolia/client-common@4.23.3':
dependencies:
'@algolia/requester-common': 4.23.3
'@algolia/transporter': 4.23.3
'@algolia/client-personalization@4.23.3':
dependencies:
'@algolia/client-common': 4.23.3
'@algolia/requester-common': 4.23.3
'@algolia/transporter': 4.23.3
'@algolia/client-search@4.23.3':
dependencies:
'@algolia/client-common': 4.23.3
'@algolia/requester-common': 4.23.3
'@algolia/transporter': 4.23.3
'@algolia/logger-common@4.23.3': {}
'@algolia/logger-console@4.23.3':
dependencies:
'@algolia/logger-common': 4.23.3
'@algolia/recommend@4.23.3':
dependencies:
'@algolia/cache-browser-local-storage': 4.23.3
'@algolia/cache-common': 4.23.3
'@algolia/cache-in-memory': 4.23.3
'@algolia/client-common': 4.23.3
'@algolia/client-search': 4.23.3
'@algolia/logger-common': 4.23.3
'@algolia/logger-console': 4.23.3
'@algolia/requester-browser-xhr': 4.23.3
'@algolia/requester-common': 4.23.3
'@algolia/requester-node-http': 4.23.3
'@algolia/transporter': 4.23.3
'@algolia/requester-browser-xhr@4.23.3':
dependencies:
'@algolia/requester-common': 4.23.3
'@algolia/requester-common@4.23.3': {}
'@algolia/requester-node-http@4.23.3':
dependencies:
'@algolia/requester-common': 4.23.3
'@algolia/transporter@4.23.3':
dependencies:
'@algolia/cache-common': 4.23.3
'@algolia/logger-common': 4.23.3
'@algolia/requester-common': 4.23.3
'@alloc/quick-lru@5.2.0': {}
'@ampproject/remapping@2.3.0':
@ -8065,6 +8319,30 @@ snapshots:
'@ctrl/tinycolor@4.1.0': {}
'@docsearch/css@3.6.0': {}
'@docsearch/js@3.6.0(@algolia/client-search@4.23.3)(search-insights@2.14.0)':
dependencies:
'@docsearch/react': 3.6.0(@algolia/client-search@4.23.3)(search-insights@2.14.0)
preact: 10.22.0
transitivePeerDependencies:
- '@algolia/client-search'
- '@types/react'
- react
- react-dom
- search-insights
'@docsearch/react@3.6.0(@algolia/client-search@4.23.3)(search-insights@2.14.0)':
dependencies:
'@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.14.0)
'@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)
'@docsearch/css': 3.6.0
algoliasearch: 4.23.3
optionalDependencies:
search-insights: 2.14.0
transitivePeerDependencies:
- '@algolia/client-search'
'@dual-bundle/import-meta-resolve@4.1.0': {}
'@emotion/hash@0.9.1': {}
@ -8680,6 +8958,12 @@ snapshots:
transitivePeerDependencies:
- '@types/node'
'@shikijs/core@1.6.1': {}
'@shikijs/transformers@1.6.1':
dependencies:
shiki: 1.6.1
'@simonwep/pickr@1.8.2':
dependencies:
core-js: 3.37.1
@ -8777,6 +9061,15 @@ snapshots:
dependencies:
'@types/node': 20.12.12
'@types/linkify-it@5.0.0': {}
'@types/markdown-it@14.1.1':
dependencies:
'@types/linkify-it': 5.0.0
'@types/mdurl': 2.0.0
'@types/mdurl@2.0.0': {}
'@types/minimatch@3.0.5': {}
'@types/minimist@1.2.5': {}
@ -9031,6 +9324,12 @@ snapshots:
'@vue/devtools-api@6.6.1': {}
'@vue/devtools-api@7.2.1(vue@3.4.27(typescript@5.4.5))':
dependencies:
'@vue/devtools-kit': 7.2.1(vue@3.4.27(typescript@5.4.5))
transitivePeerDependencies:
- vue
'@vue/devtools-core@7.2.1(vite@5.2.11(@types/node@20.12.12)(sass@1.77.2)(terser@5.31.0))(vue@3.4.27(typescript@5.4.5))':
dependencies:
'@vue/devtools-kit': 7.2.1(vue@3.4.27(typescript@5.4.5))
@ -9120,7 +9419,7 @@ snapshots:
- '@vue/composition-api'
- vue
'@vueuse/integrations@10.10.0(async-validator@4.2.5)(axios@1.7.2)(nprogress@0.2.0)(qrcode@1.5.3)(vue@3.4.27(typescript@5.4.5))':
'@vueuse/integrations@10.10.0(async-validator@4.2.5)(axios@1.7.2)(focus-trap@7.5.4)(nprogress@0.2.0)(qrcode@1.5.3)(vue@3.4.27(typescript@5.4.5))':
dependencies:
'@vueuse/core': 10.10.0(vue@3.4.27(typescript@5.4.5))
'@vueuse/shared': 10.10.0(vue@3.4.27(typescript@5.4.5))
@ -9128,6 +9427,7 @@ snapshots:
optionalDependencies:
async-validator: 4.2.5
axios: 1.7.2
focus-trap: 7.5.4
nprogress: 0.2.0
qrcode: 1.5.3
transitivePeerDependencies:
@ -9195,6 +9495,24 @@ snapshots:
require-from-string: 2.0.2
uri-js: 4.4.1
algoliasearch@4.23.3:
dependencies:
'@algolia/cache-browser-local-storage': 4.23.3
'@algolia/cache-common': 4.23.3
'@algolia/cache-in-memory': 4.23.3
'@algolia/client-account': 4.23.3
'@algolia/client-analytics': 4.23.3
'@algolia/client-common': 4.23.3
'@algolia/client-personalization': 4.23.3
'@algolia/client-search': 4.23.3
'@algolia/logger-common': 4.23.3
'@algolia/logger-console': 4.23.3
'@algolia/recommend': 4.23.3
'@algolia/requester-browser-xhr': 4.23.3
'@algolia/requester-common': 4.23.3
'@algolia/requester-node-http': 4.23.3
'@algolia/transporter': 4.23.3
ansi-align@3.0.1:
dependencies:
string-width: 4.2.3
@ -10713,6 +11031,10 @@ snapshots:
flatted@3.3.1: {}
focus-trap@7.5.4:
dependencies:
tabbable: 6.2.0
follow-redirects@1.15.6: {}
for-each@0.3.3:
@ -11609,6 +11931,8 @@ snapshots:
map-stream@0.1.0: {}
mark.js@8.11.1: {}
mathml-tag-names@2.1.3: {}
mdn-data@2.0.28: {}
@ -11737,6 +12061,8 @@ snapshots:
minipass@7.1.2: {}
minisearch@6.3.0: {}
minizlib@2.1.2:
dependencies:
minipass: 3.3.6
@ -12551,6 +12877,8 @@ snapshots:
picocolors: 1.0.1
source-map-js: 1.2.0
preact@10.22.0: {}
preferred-pm@3.1.3:
dependencies:
find-up: 5.0.0
@ -12900,6 +13228,8 @@ snapshots:
scule@1.3.0: {}
search-insights@2.14.0: {}
semver-compare@1.0.0: {}
semver-diff@4.0.0:
@ -12950,6 +13280,10 @@ snapshots:
shell-quote@1.8.1: {}
shiki@1.6.1:
dependencies:
'@shikijs/core': 1.6.1
short-tree@3.0.0:
dependencies:
'@types/bintrees': 1.0.6
@ -13318,6 +13652,8 @@ snapshots:
'@pkgr/core': 0.1.1
tslib: 2.6.2
tabbable@6.2.0: {}
table@6.8.2:
dependencies:
ajv: 8.14.0
@ -13847,6 +14183,53 @@ snapshots:
sass: 1.77.2
terser: 5.31.0
vitepress@1.2.2(@algolia/client-search@4.23.3)(@types/node@20.12.12)(async-validator@4.2.5)(axios@1.7.2)(nprogress@0.2.0)(postcss@8.4.38)(qrcode@1.5.3)(sass@1.77.2)(search-insights@2.14.0)(terser@5.31.0)(typescript@5.4.5):
dependencies:
'@docsearch/css': 3.6.0
'@docsearch/js': 3.6.0(@algolia/client-search@4.23.3)(search-insights@2.14.0)
'@shikijs/core': 1.6.1
'@shikijs/transformers': 1.6.1
'@types/markdown-it': 14.1.1
'@vitejs/plugin-vue': 5.0.4(vite@5.2.11(@types/node@20.12.12)(sass@1.77.2)(terser@5.31.0))(vue@3.4.27(typescript@5.4.5))
'@vue/devtools-api': 7.2.1(vue@3.4.27(typescript@5.4.5))
'@vue/shared': 3.4.27
'@vueuse/core': 10.10.0(vue@3.4.27(typescript@5.4.5))
'@vueuse/integrations': 10.10.0(async-validator@4.2.5)(axios@1.7.2)(focus-trap@7.5.4)(nprogress@0.2.0)(qrcode@1.5.3)(vue@3.4.27(typescript@5.4.5))
focus-trap: 7.5.4
mark.js: 8.11.1
minisearch: 6.3.0
shiki: 1.6.1
vite: 5.2.11(@types/node@20.12.12)(sass@1.77.2)(terser@5.31.0)
vue: 3.4.27(typescript@5.4.5)
optionalDependencies:
postcss: 8.4.38
transitivePeerDependencies:
- '@algolia/client-search'
- '@types/node'
- '@types/react'
- '@vue/composition-api'
- async-validator
- axios
- change-case
- drauu
- fuse.js
- idb-keyval
- jwt-decode
- less
- lightningcss
- nprogress
- qrcode
- react
- react-dom
- sass
- search-insights
- sortablejs
- stylus
- sugarss
- terser
- typescript
- universal-cookie
vitest@2.0.0-beta.3(@types/node@20.12.12)(jsdom@24.1.0)(sass@1.77.2)(terser@5.31.0):
dependencies:
'@vitest/expect': 2.0.0-beta.3

View File

@ -7,3 +7,4 @@ packages:
- "packages/business/*"
- "apps/*"
- "scripts/*"
- "website"

View File

@ -128,5 +128,9 @@
"name": "@vben/vsh",
"path": "scripts/vsh",
},
{
"name": "@vben/website",
"path": "website",
},
],
}

View File

@ -0,0 +1,31 @@
import { defineConfig } from 'vitepress';
// https://vitepress.dev/reference/site-config
export default defineConfig({
description: 'A VitePress Site',
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
nav: [
{ link: '/', text: 'Home' },
{ link: '/markdown-examples', text: 'Examples' },
],
sidebar: [
{
text: 'Examples',
items: [
{ link: '/markdown-examples', text: 'Markdown Examples' },
{ link: '/api-examples', text: 'Runtime API Examples' },
],
},
],
socialLinks: [
{ icon: 'github', link: 'https://github.com/vuejs/vitepress' },
],
},
title: 'My Awesome Project',
vite: {
server: { port: 6173 },
},
});

View File

@ -0,0 +1,20 @@
// https://vitepress.dev/guide/custom-theme
import './style.css';
import type { Theme } from 'vitepress';
import DefaultTheme from 'vitepress/theme';
import { h } from 'vue';
export default {
Layout: () => {
return h(DefaultTheme.Layout, null, {
// https://vitepress.dev/guide/extending-default-theme#layout-slots
});
},
// eslint-disable-next-line @typescript-eslint/no-unused-vars
enhanceApp({ app, router, siteData }) {
// ...
},
extends: DefaultTheme,
} satisfies Theme;

View File

@ -0,0 +1,122 @@
/**
* Customize default theme styling by overriding CSS variables:
* https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css
*/
/**
* Colors
*
* Each colors have exact same color scale system with 3 levels of solid
* colors with different brightness, and 1 soft color.
*
* - `XXX-1`: The most solid color used mainly for colored text. It must
* satisfy the contrast ratio against when used on top of `XXX-soft`.
*
* - `XXX-2`: The color used mainly for hover state of the button.
*
* - `XXX-3`: The color for solid background, such as bg color of the button.
* It must satisfy the contrast ratio with pure white (#ffffff) text on
* top of it.
*
* - `XXX-soft`: The color used for subtle background such as custom container
* or badges. It must satisfy the contrast ratio when putting `XXX-1` colors
* on top of it.
*
* The soft color must be semi transparent alpha channel. This is crucial
* because it allows adding multiple "soft" colors on top of each other
* to create a accent, such as when having inline code block inside
* custom containers.
*
* - `default`: The color used purely for subtle indication without any
* special meanings attched to it such as bg color for menu hover state.
*
* - `brand`: Used for primary brand colors, such as link text, button with
* brand theme, etc.
*
* - `tip`: Used to indicate useful information. The default theme uses the
* brand color for this by default.
*
* - `warning`: Used to indicate warning to the users. Used in custom
* container, badges, etc.
*
* - `danger`: Used to show error, or dangerous message to the users. Used
* in custom container, badges, etc.
* -------------------------------------------------------------------------- */
:root {
--vp-c-default-1: var(--vp-c-gray-1);
--vp-c-default-2: var(--vp-c-gray-2);
--vp-c-default-3: var(--vp-c-gray-3);
--vp-c-default-soft: var(--vp-c-gray-soft);
--vp-c-brand-1: var(--vp-c-indigo-1);
--vp-c-brand-2: var(--vp-c-indigo-2);
--vp-c-brand-3: var(--vp-c-indigo-3);
--vp-c-brand-soft: var(--vp-c-indigo-soft);
--vp-c-tip-1: var(--vp-c-brand-1);
--vp-c-tip-2: var(--vp-c-brand-2);
--vp-c-tip-3: var(--vp-c-brand-3);
--vp-c-tip-soft: var(--vp-c-brand-soft);
--vp-c-warning-1: var(--vp-c-yellow-1);
--vp-c-warning-2: var(--vp-c-yellow-2);
--vp-c-warning-3: var(--vp-c-yellow-3);
--vp-c-warning-soft: var(--vp-c-yellow-soft);
--vp-c-danger-1: var(--vp-c-red-1);
--vp-c-danger-2: var(--vp-c-red-2);
--vp-c-danger-3: var(--vp-c-red-3);
--vp-c-danger-soft: var(--vp-c-red-soft);
/**
* Component: Button
* -------------------------------------------------------------------------- */
--vp-button-brand-border: transparent;
--vp-button-brand-text: var(--vp-c-white);
--vp-button-brand-bg: var(--vp-c-brand-3);
--vp-button-brand-hover-border: transparent;
--vp-button-brand-hover-text: var(--vp-c-white);
--vp-button-brand-hover-bg: var(--vp-c-brand-2);
--vp-button-brand-active-border: transparent;
--vp-button-brand-active-text: var(--vp-c-white);
--vp-button-brand-active-bg: var(--vp-c-brand-1);
/**
* Component: Home
* -------------------------------------------------------------------------- */
--vp-home-hero-name-color: transparent;
--vp-home-hero-name-background: linear-gradient(120deg, #bd34fe 30%, #41d1ff);
--vp-home-hero-image-background-image: linear-gradient(
-45deg,
#bd34fe 50%,
#47caff 50%
);
--vp-home-hero-image-filter: blur(44px);
/**
* Component: Custom Block
* -------------------------------------------------------------------------- */
--vp-custom-block-tip-border: transparent;
--vp-custom-block-tip-text: var(--vp-c-text-1);
--vp-custom-block-tip-bg: var(--vp-c-brand-soft);
--vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);
}
@media (min-width: 640px) {
:root {
--vp-home-hero-image-filter: blur(56px);
}
}
@media (min-width: 960px) {
:root {
--vp-home-hero-image-filter: blur(68px);
}
}
/**
* Component: Algolia
* -------------------------------------------------------------------------- */
.DocSearch {
--docsearch-primary-color: var(--vp-c-brand-1) !important;
}

55
website/api-examples.md Normal file
View File

@ -0,0 +1,55 @@
---
outline: deep
---
# Runtime API Examples
This page demonstrates usage of some of the runtime APIs provided by VitePress.
The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files:
```md
<script setup>
import { useData } from 'vitepress'
const { theme, page, frontmatter } = useData()
</script>
## Results
### Theme Data
<pre>{{ theme }}</pre>
### Page Data
<pre>{{ page }}</pre>
### Page Frontmatter
<pre>{{ frontmatter }}</pre>
```
<script setup>
import { useData } from 'vitepress'
const { site, theme, page, frontmatter } = useData()
</script>
## Results
### Theme Data
<pre>{{ theme }}</pre>
### Page Data
<pre>{{ page }}</pre>
### Page Frontmatter
<pre>{{ frontmatter }}</pre>
## More
Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata).

24
website/index.md Normal file
View File

@ -0,0 +1,24 @@
---
# https://vitepress.dev/reference/default-theme-home-page
layout: home
hero:
name: 'My Awesome Project'
text: 'A VitePress Site'
tagline: My great project tagline
actions:
- theme: brand
text: Markdown Examples
link: /markdown-examples
- theme: alt
text: API Examples
link: /api-examples
features:
- title: Feature A
details: Lorem ipsum dolor sit amet, consectetur adipiscing elit
- title: Feature B
details: Lorem ipsum dolor sit amet, consectetur adipiscing elit
- title: Feature C
details: Lorem ipsum dolor sit amet, consectetur adipiscing elit
---

View File

@ -0,0 +1,65 @@
# Markdown Extension Examples
This page demonstrates some of the built-in markdown extensions provided by VitePress.
## Syntax Highlighting
VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting:
**Input**
````md
```js{4}
export default {
data () {
return {
msg: 'Highlighted!'
}
}
}
```
````
**Output**
```js{4}
export default {
data () {
return {
msg: 'Highlighted!'
}
}
}
```
## Custom Containers
**Input**
```md
::: info This is an info box. :::
::: tip This is a tip. :::
::: warning This is a warning. :::
::: danger This is a dangerous warning. :::
::: details This is a details block. :::
```
**Output**
::: info This is an info box. :::
::: tip This is a tip. :::
::: warning This is a warning. :::
::: danger This is a dangerous warning. :::
::: details This is a details block. :::
## More
Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown).

14
website/package.json Normal file
View File

@ -0,0 +1,14 @@
{
"name": "@vben/website",
"version": "0.1.0",
"private": true,
"scripts": {
"docs:dev": "vitepress dev",
"docs:build": "vitepress build",
"docs:preview": "vitepress preview"
},
"devDependencies": {
"vitepress": "^1.2.2",
"vue": "3.4.27"
}
}