{"_id":"@bndynet/vue-site","_rev":"25-90009eff9426cc5e497bcece2e51fa32","name":"@bndynet/vue-site","dist-tags":{"latest":"1.5.0"},"versions":{"0.1.0":{"name":"@bndynet/vue-site","version":"0.1.0","_id":"@bndynet/vue-site@0.1.0","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"661a753e0b49e01921597e92156a67236fe6c46d","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-0.1.0.tgz","fileCount":27,"integrity":"sha512-i7P/2OWKNlbVSpBDHnaInpWZUYkH12TOXmR/l36UoMGQC3A+qzRSk7vdSZzThk0JZ/4/JtMu7X/Dqgivp/zUXw==","signatures":[{"sig":"MEUCIQCuGAWwpePbn4IwhwWCXSLs438no0+k1QWyYyrqsbI1jQIgKtVfVhh/IWB4+YqwmvJOgXSGSzCldgPdRVEKaOoQ/v4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1235285},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"5c900c3fc24c79274c45ee972f3000fdefc999ed","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib","clean":"rimraf dist example/example-dist","preview":"npm run build:lib && cd example && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"bndy","email":"zb@bndy.net"},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.11.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_0.1.0_1775907392457_0.6935507233994069","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@bndynet/vue-site","version":"0.1.1","_id":"@bndynet/vue-site@0.1.1","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"6e88c7f747e13da36ca976d13cf7ef6b0d5b5b69","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-0.1.1.tgz","fileCount":27,"integrity":"sha512-y8+pEj8cngiUxcN4aJsLwtPCh/uIxA3RST0fcvQpGfUvITgbd0r2ATJL2ZepB6huOh3zck3Hc1gqoSccDMzXUQ==","signatures":[{"sig":"MEUCIQDsDRmVTgbstYru7SNP2vR/e+VObrxYkhumsH1ZYlRKQgIgZttpTtpBXzKaLHa7qYAIgHzhpwnoEikColq+G7T59/A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1236431},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"c075f3a839abb8b6ea48fbaa1155d1a143988568","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib","clean":"rimraf dist example/example-dist","preview":"npm run build:lib && cd example && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.11.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_0.1.1_1775912193004_0.10210244768729937","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@bndynet/vue-site","version":"0.1.2","_id":"@bndynet/vue-site@0.1.2","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"1a8159b435814eef01665b1708e226e428c88339","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-0.1.2.tgz","fileCount":27,"integrity":"sha512-d7u0lzd0+D7glosNUsquidFm/pyBzi+o01pYaTDuqmK+OtEo9/4q6IrKUAbkIv8c9CPaXwxR/IH1jFZHRf0HDQ==","signatures":[{"sig":"MEYCIQDem6xe5n6xizNG6dIfapIhNMsn3WtMZuBFG1WFBO6lpAIhAPnGQfGwZKhhgdSxXcuMYG8xgs8ekt8zeEn7Y0bCMruB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1237992},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"023d1f566d37530d3c0e1755ddc48267b8322351","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib","clean":"rimraf dist example/example-dist","preview":"npm run build:lib && cd example && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.11.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_0.1.2_1775913856064_0.8178667654061653","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@bndynet/vue-site","version":"0.1.3","_id":"@bndynet/vue-site@0.1.3","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"54fad416c7119cb0f0609807dcc20bdb3da8f645","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-0.1.3.tgz","fileCount":27,"integrity":"sha512-O3tQddKe70CWlM+QbSnJ7bK3aDLZeaUVkF953ywD9HZ71JJiFsqlKJuLdBi4tYl9C22LospjUh5vBjOT7vPP9A==","signatures":[{"sig":"MEUCIQCSx3RzFBfQIK66rK43cpezISXjUoys2V5CtIg9oXfSCwIgPRz0V12TqqdNUP/+dTKxxqafOAtU+cudPyM2xlNnRA4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1242412},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"a84115287fd0b5e83ae39a8aab7b1d547e1f986c","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib","clean":"rimraf dist example/example-dist","preview":"npm run build:lib && cd example && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.11.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_0.1.3_1775920513966_0.5954044968023797","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@bndynet/vue-site","version":"0.1.4","_id":"@bndynet/vue-site@0.1.4","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"417010a25a2bca26380a7cd7deae08235dd509cb","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-0.1.4.tgz","fileCount":27,"integrity":"sha512-nspf0eiUIWtlfmsMQkrrvVsr3KXI1zYs1bJ/fJWGepiUdCGqlWOElI7Pc4SFKZVq+GdF3rodwBdCbMebumGPGQ==","signatures":[{"sig":"MEUCIQCoBKy8ryQOlJsJUchfhv8AshAWUr/1fBCbCMmBVCAyNAIgf+ckjysJWTR6nSRy2wbz3raosxb1GxP2D3mDU97Rs3c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1243870},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"3c89927b7320a5be5ff8a7195126cd1969896fa9","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib","clean":"rimraf dist example/example-dist","preview":"npm run build:lib && cd example && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.11.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_0.1.4_1775922827731_0.703567800887976","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@bndynet/vue-site","version":"0.1.5","_id":"@bndynet/vue-site@0.1.5","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"ec53d8b197b474285d70289d6670a14b4f0e1cd9","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-0.1.5.tgz","fileCount":27,"integrity":"sha512-3LSP0ffKyyrerf4ES80OmWeerxQfcqSG+nL5Sh5yQJqd/He+/iEl/L8sGBdKqz3r3xh8PYyLVzoIPAZeiFcBfQ==","signatures":[{"sig":"MEQCIFTnOQo4TRViz5hg4nb2y0bBUVD/WOGpKOhbiU4YBxsCAiA5do1pNUFzmwm0V7zUBR5hsCQgLGWzUcmAfL2Gb/gDqQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1244881},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"c4af0c19508131b662a36867de7ad46cbe02adcc","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib","clean":"rimraf dist example/example-dist","preview":"npm run build:lib && cd example && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.11.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_0.1.5_1775924534933_0.8405419214765797","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@bndynet/vue-site","version":"0.1.6","_id":"@bndynet/vue-site@0.1.6","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"7853845e2947557529bed0433964488083399ff9","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-0.1.6.tgz","fileCount":27,"integrity":"sha512-NFZo2CqJdFhmCVjpGZ5UeIhas7Ti5ryVbqR+MUGDl2BwJ0mmdFEiTVYV5cU4QohZnefmH7qUhLg9xWvKNoYjng==","signatures":[{"sig":"MEUCIQCWucGaLpYc7fFqHk2e7mbJ6aTzmIad798Bb3NRJVoCDgIgTirVAIMkTYQazXU7N54x2ZhZJtMxXqKS5P0uusvC+yk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1250457},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"593dba862993b20658ef9705ab4fb8dc13be104c","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib","clean":"rimraf dist example/example-dist","preview":"npm run build:lib && cd example && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.11.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_0.1.6_1775972453356_0.19109420533987742","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@bndynet/vue-site","version":"0.1.7","_id":"@bndynet/vue-site@0.1.7","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"a78b6bd1bfb8fc03193952b005637e2381d45e44","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-0.1.7.tgz","fileCount":27,"integrity":"sha512-kggzHDUgvOHkLNJibsLOUFuuFIo0NU7Gd2xhxmsy9tc/y6Hisly807gRyMJUz9MPLiQ7v7quZyoHoWZfOhzwiw==","signatures":[{"sig":"MEUCIGsaG1oqQsEzqWz0fcu8ejrEs07UbjKQkBbQ25zEgGeyAiEApnfpICisw5lffqpvdTUQJ+tyHPm3D8nJkbD5cmv5N00=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1251134},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"c0f77d131b9fa374b7bb17502d493d69af535b7f","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib","clean":"rimraf dist example/example-dist","preview":"npm run build:lib && cd example && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.11.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_0.1.7_1775972892816_0.1863485178680151","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@bndynet/vue-site","version":"0.1.8","_id":"@bndynet/vue-site@0.1.8","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"150dc30b4c0c26b173560083ec7fb2a926beb2bd","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-0.1.8.tgz","fileCount":27,"integrity":"sha512-AdiUq8WaXK1/cCuwwQ1ZSj7fhLNhT3LhEU337Ia36jZW+WtSl5+JBdEf2MT22EwakNUpIjHubaPvAF0bapJeug==","signatures":[{"sig":"MEUCIQD2xYKiypeJTHxJkgkmW1yn23Di1gCCWo2RlZq75jN5QgIgb+D6aQUxDYCQdtFv++CyAsVzF9q2vd9BSP4nMHXRpB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1250958},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"b800863c552baeaeb6bf224f7a5838ddc7c620d7","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib","clean":"rimraf dist example/example-dist","preview":"npm run build:lib && cd example && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.11.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_0.1.8_1775974229484_0.4379328007769323","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@bndynet/vue-site","version":"0.1.9","_id":"@bndynet/vue-site@0.1.9","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"aa8c975cd566df5c5d558387ceccf228e3512fab","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-0.1.9.tgz","fileCount":27,"integrity":"sha512-MRCYIYdLq2CEV4RAhqaSx4BS2uLaarX+SMZuauH+LDDMy+b9PsmyD85fAQ2M0eM990rh1sF5oW9zXatTkDiDpA==","signatures":[{"sig":"MEYCIQDFW+t+1n5dnoNzvl4DEMuTWmzvtNGHJ1k601gtl5eNogIhAPnonQpkw/UnJQXmybWGkoqVuRgxP9XrO3eaLsxEu+ev","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@0.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1252876},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"e074f390b4f3024ef0e36d8f7388209054acd50c","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib","clean":"rimraf dist example/example-dist","preview":"npm run build:lib && cd example && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.11.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_0.1.9_1775980963671_0.4679782225327278","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@bndynet/vue-site","version":"0.1.10","_id":"@bndynet/vue-site@0.1.10","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"27d7fbcd9de7b9ed10eacf003c4b7111ab42297c","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-0.1.10.tgz","fileCount":27,"integrity":"sha512-sqFaaFOqbneCCuOF6HsTT8CoM38gzMidioZlcnOQcPmjz2lBIR2l1aZyQIsPxO4Bw3LCxJHEQUpOGrLa5OiSOA==","signatures":[{"sig":"MEUCIDuS/jrtQKMaT/D/Ktx6FSECQy1ZcGQkBoNnPFzf4a6rAiEA4HdOgP7xzVPA9GDkSXCGaUwcNChB++1U4TJtveTQwHY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@0.1.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1252959},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"e207e152200c88a9d87728b35a09140c77baf854","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib","clean":"rimraf dist example/example-dist","preview":"npm run build:lib && cd example && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.11.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_0.1.10_1776737666947_0.18587568640219954","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@bndynet/vue-site","version":"0.1.11","_id":"@bndynet/vue-site@0.1.11","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"8c59187f6cba3dfea784e6580836532ce936d6fe","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-0.1.11.tgz","fileCount":27,"integrity":"sha512-sQxriNuO3MGtjBVQgO7akXRlm2Kglch3s7AxL7+5AhLYsDdd/2Vlb9mqBG2fD5+EqK9vvZkpxIZhrUZXISBABQ==","signatures":[{"sig":"MEYCIQDgQwaELwRv3IEc0i8Yu4hMX7LqLIzrHIhXHDpafpSgGgIhAPyFOTu1NrhAnScA+yV2X7MnZSqb0vX7QkGBF0XI9Ulh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@0.1.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1253429},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"8d15f6336692319358c86fdcc4e2eff97d51d033","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib","clean":"rimraf dist example/example-dist","preview":"npm run build:lib && cd example && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.11.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_0.1.11_1777362460007_0.8708143010301947","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@bndynet/vue-site","version":"0.1.12","_id":"@bndynet/vue-site@0.1.12","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"65227c6688508ed673c83b1221e7457926404d73","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-0.1.12.tgz","fileCount":27,"integrity":"sha512-D2p6a1FtFkKYMm8hJiRP9/BwKhmMCUIsmQiixyz990lrwZaLOBxp9z/YJh0zpaPGijVVDbe2sGOimDHvwF1a0Q==","signatures":[{"sig":"MEUCIQD26mwo3UpSYEgtmv+lbuHRPuPDcv83AaaNfZo638pwnQIgYV3ThJ63s6+4zISZgzfGlwaDQvd2mtDZ4lzEkpYZjgQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@0.1.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1253715},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"65744ac8aa786d7df32cc239c929cdd599b75d67","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib","clean":"rimraf dist example/example-dist","preview":"npm run build:lib && cd example && npm run build && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.11.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_0.1.12_1777530260158_0.014346206191206967","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@bndynet/vue-site","version":"1.0.0","_id":"@bndynet/vue-site@1.0.0","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"bb8ef3dfce05ae8fe7044ea5f6761376309d6457","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-1.0.0.tgz","fileCount":27,"integrity":"sha512-yZzbFxR47kXlgp+j8u5s5c1tAhZ9VGAUiaPUpmNN8R4l99dEgw5kUg91KU6xry9b8K/G/Z7VztLnNNuCfrx32Q==","signatures":[{"sig":"MEYCIQDaIZoKWd8qsc5mTLFpIK7tvIfRjL1HSzcoRHG0VviD9gIhANIFijnqhEv1KI4FXb8NAExRXDcQGhAAxr1SGDhZS4WH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1259364},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"881beb27a5026f7836e58deed31a84a4f0cfd756","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib","clean":"rimraf dist example/example-dist","preview":"npm run build:lib && cd example && npm run build && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.13.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_1.0.0_1780102233003_0.4427148769708402","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bndynet/vue-site","version":"1.0.1","_id":"@bndynet/vue-site@1.0.1","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"33a76d4756789a57d16b34f3d8c9d899b573881b","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-1.0.1.tgz","fileCount":28,"integrity":"sha512-nyf58TyEL1Im7hhpDB8gbkmbP/Ajo8mZczgE8RY4nJmIlPBecy7lf8tABAZV2poGvKvRls6zQ1Cgf8SKscLrYw==","signatures":[{"sig":"MEUCIArRsJZ3mKAQ4c66rTeo2t47I44od4DKcrcWB6T8Rbm2AiEA4zOqH9sug1WD3Jy3zyaMXqetg8Mp/jRqLJfBbNyESII=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1271786},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"499ffaa96f2f09c7b4149a963df35e115be5b536","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib","clean":"rimraf dist example/example-dist","preview":"npm run build:lib && cd example && npm run build && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.13.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_1.0.1_1780321425806_0.205904257065453","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bndynet/vue-site","version":"1.0.2","_id":"@bndynet/vue-site@1.0.2","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"02771057a88863f7f3ae45d3ada7129b9a2af03e","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-1.0.2.tgz","fileCount":28,"integrity":"sha512-UdpHtGVRiC8TnVFcOfTdI7sCgaEYXsredrCJLTBlnTZZ77fY0Ap/MrFrpyy1BDf9cd2rOC+A/a9xF45O+xWlSA==","signatures":[{"sig":"MEUCIQCSx+SJdRoDf40Ig8raTlj+3uKFvpiQomr21VzJlbSRtAIgfh3/NOCxHVzQtcrs1fBgyITY0QENCeyBLPxlQxOStOs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1271786},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"1669ec34ff21fa5efef9ecb538de32596479a93c","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib","clean":"rimraf dist example/example-dist","preview":"npm run build:lib && cd example && npm run build && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.13.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_1.0.2_1780322311695_0.13400148429629","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bndynet/vue-site","version":"1.0.4","_id":"@bndynet/vue-site@1.0.4","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"cdba606da2fe445b128838086da20bdfc9cd4150","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-1.0.4.tgz","fileCount":28,"integrity":"sha512-H4qfK+AubySGqb9jg7vtmDd3lvmh4G18gA1zmN3e+lHi+qxsnAghT1FxBdSSV/0kLeA42ebToQXxoqaXTf3BHg==","signatures":[{"sig":"MEUCIAcCHNghxso4eduGx0B//iZBxRpDzoJMJpFSe96Ks9buAiEAvk2o+irjVHP4doF3e3yL7z0KSXiBiqeN5boNJoVpAI0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@1.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1276875},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"8792b8856b173fc2a8cd13bf452ff644ac6aab8d","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib && npm install --prefix example && npm run build --prefix example","clean":"rimraf dist example/example-dist","start":"npm run dev","preview":"npm run build:lib && cd example && npm run build && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.13.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_1.0.4_1780752147714_0.6171748434036901","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bndynet/vue-site","version":"1.2.0","_id":"@bndynet/vue-site@1.2.0","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"afc2d2afca45961ec48747ef133efb8407b793dd","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-1.2.0.tgz","fileCount":34,"integrity":"sha512-l9OPVx4rb76aQGrOGV27kp+lVtCfIMk/c3mZC8Qeh/XrYPdUzOwhQydt4fWbERLi+bRU6PStLSCPsHcwpFfGJg==","signatures":[{"sig":"MEUCIBScqglu3KLoBXzzjPZA1wjypx/4sITLD6SkuJxH66qbAiEA4TBSDQAI4Cv7SFL2wcNuf2UT8OR+cksikZvbS771M3s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1348141},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"6e2f3f726186ce193dee482e0637bbadd21e6f36","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib && npm install --prefix example && npm run build --prefix example","clean":"rimraf dist example/example-dist","start":"npm run dev","preview":"npm run build:lib && cd example && npm run build && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.13.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_1.2.0_1781425289227_0.1362188091560017","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@bndynet/vue-site","version":"1.2.1","_id":"@bndynet/vue-site@1.2.1","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"e336e35a50fe246aee59abfc6ecf8939a9f206bd","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-1.2.1.tgz","fileCount":34,"integrity":"sha512-KgNI3VWWWaiFMPZqTB5eAmNmm57tuo/CuZxSbat3Zelw9gZ0zkBlJOGvE1TuzmDYGlCW9mGt127Whg5GgDJgRg==","signatures":[{"sig":"MEUCICTwegS/gTiwQgSNaitQ8u3aiHUb1kbu7WfMmZeWXBh3AiEAk1/UpmZWcMXQFPyoYh8kC9Mbyd+wp//x8rT0RuW5Zs0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1349801},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"d02e257df396b9fd6821d80f01875aa3e5a32643","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib && npm install --prefix example && npm run build --prefix example","clean":"rimraf dist example/example-dist","start":"npm run dev","preview":"npm run build:lib && cd example && npm run build && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.13.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_1.2.1_1782994983574_0.3577634424163312","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bndynet/vue-site","version":"1.3.0","_id":"@bndynet/vue-site@1.3.0","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"f60d30ca1dfe31ce2d9a44a5d09e2ae1a3e9e347","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-1.3.0.tgz","fileCount":35,"integrity":"sha512-th6SndLkhsp54rp5wxyc+oiG+XKBCwJ/SIJE/eXRSMkext4jVHYdepbNTrGcBHcjS//7GFd8J9JJFoAsHBerjg==","signatures":[{"sig":"MEUCIA6CWOjWSQTWjDJvN88IRf3ia0LpsL9dqA8RAojnZkFhAiEAvf+iEc9hlxABrMXdmtxfC8+qcQ9hHxEf8WBYKbdYiKU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1415154},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"632042aee7891f74a608857923cb671e3df3d145","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib && npm install --prefix example && npm run build --prefix example","clean":"rimraf dist example/example-dist","start":"npm run dev","preview":"npm run build:lib && cd example && npm run build && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.16.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0","unplugin-auto-import":"^21.0.0","unplugin-vue-components":"^32.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_1.3.0_1783514136981_0.009385645062941927","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@bndynet/vue-site","version":"1.3.1","_id":"@bndynet/vue-site@1.3.1","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"9f8d5394d32b8508925a1fa03a4a028009bfd721","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-1.3.1.tgz","fileCount":35,"integrity":"sha512-3lSoqpVER4f9wFu11rywVVRkItFcNHgwhOEFf6nKZzgnpOCNxdvOoXpl5nlaCC1kkMRaa7jzOPTYUKJ1dA1P3Q==","signatures":[{"sig":"MEUCIQCUjP3mHAxtIdvOSCYsZHVB9MYS3d6Q8zG9rLxm4NSDWwIgIK3/P7ZsCV2izxhbGK3SF9uaBWsj0bZoEBJIguuIaPg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":510395},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"98cf51c2c1d2f66e1d1c3746f96a9667439b082c","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib && npm install --prefix example && npm run build --prefix example","clean":"rimraf dist example/example-dist","start":"npm run dev","preview":"npm run build:lib && cd example && npm run build && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.16.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0","unplugin-auto-import":"^21.0.0","unplugin-vue-components":"^32.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_1.3.1_1783604674950_0.0523189677109539","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@bndynet/vue-site","version":"1.3.2","_id":"@bndynet/vue-site@1.3.2","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"5848462f59f089178f0e5bfdd0c22a147b8ac92a","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-1.3.2.tgz","fileCount":35,"integrity":"sha512-25hPw2fVBCI2qUsJZQNrJnwgkctlHYm3j8PDXqDR6U7Y+CCkLkAPhdR+oKBhU1v8ZSwOdS2g7HentBBKTJDfRQ==","signatures":[{"sig":"MEUCIHAbZFmH40+NhHcKAPvcP8F2CmXlpwV17iJrj55/aj+HAiEA8zT6YWZnsFJ/F8CLJpOLQGWg4QqYwWZT35wMirM/G8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@1.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":510517},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"ff56c04e6b913bb5eb3c33e9706cddb39413cea3","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib && npm install --prefix example && npm run build --prefix example","clean":"rimraf dist example/example-dist","start":"npm run dev","preview":"npm run build:lib && cd example && npm run build && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.16.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0","unplugin-auto-import":"^21.0.0","unplugin-vue-components":"^32.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_1.3.2_1783687183014_0.671308013882016","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bndynet/vue-site","version":"1.4.0","_id":"@bndynet/vue-site@1.4.0","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"c5d5f5af55d02a72d8c70f06d1ed318d846997fe","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-1.4.0.tgz","fileCount":35,"integrity":"sha512-pUTihmbl5D6uHGX3P89d28B0gwcSDsR2XH6Hg3J5isCEKjtvpD6lHhz5eO16ENg5Hc9A10B/F+v0OlAWLkzkxQ==","signatures":[{"sig":"MEQCICiHohen6InMkT25dKQxWq/Ux/pPJT1WEbcoWSW0hzuQAiApfPZSRYd8zVzRt2ai0wMNzxbS/iks6HEQC/EAJbAN2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":520048},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"c051a9d8fb31929c8e527c7ea60aa816ba26fa11","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib && npm install --prefix example && npm run build --prefix example","clean":"rimraf dist example/example-dist","start":"npm run dev","preview":"npm run build:lib && cd example && npm run build && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch --emptyOutDir false"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.16.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0","unplugin-auto-import":"^21.0.0","unplugin-vue-components":"^32.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_1.4.0_1784551451643_0.24866081336153778","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@bndynet/vue-site","version":"1.4.1","_id":"@bndynet/vue-site@1.4.1","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"homepage":"https://github.com/bndynet/vue-site#readme","bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"dist":{"shasum":"dfad1407bd6a96eea57a6e10f727069e6d3152fc","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-1.4.1.tgz","fileCount":35,"integrity":"sha512-NsEtKtfQsnSd+7HKi/M7wXD4ejp9GKCbv4qRbc3YVNwkXd/Lyo1Rig8GVCgtu3wE0iwzKgRxwswt+DyA35kVjQ==","signatures":[{"sig":"MEYCIQCagWgofJHq5kD9iUfii0BWmLeFuLxCcMpyF8of33ASsAIhAMWW5WBIuilWTUIQOML9nbPsPtyecyUww3pYffZj3WOI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@1.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":521609},"main":"./dist/index.es.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"d614de2c76804decde9788345dd11a45c3d22e11","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib && npm install --prefix example && npm run build --prefix example","clean":"rimraf dist example/example-dist","start":"npm run dev","preview":"npm run build:lib && cd example && npm run build && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch --emptyOutDir false"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.16.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0","unplugin-auto-import":"^21.0.0","unplugin-vue-components":"^32.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-site_1.4.1_1784637164285_0.24319358986937933","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"_id":"@bndynet/vue-site@1.5.0","bin":{"vs":"bin/vue-site.mjs","vue-site":"bin/vue-site.mjs"},"bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"dist":{"shasum":"e5723ac4701231bb3aa8cac8e7c68bb5756d17cb","tarball":"https://registry.npmjs.org/@bndynet/vue-site/-/vue-site-1.5.0.tgz","fileCount":35,"integrity":"sha512-RvTcOcCaKE6IxCCMbNhI+uJaShuewCSHJeduz0fhieWJz2G1nTKHFad8IvbDGLEoVHlvdjBkFhH/Wdrrsg243A==","signatures":[{"sig":"MEYCIQDXj5n25kEL4UhCDfhb8R3J9+ltz6fosrfhGLLKNgov5wIhAOZ+2ckpQjGpTXhcuJAHOI01CGaygXxacEFKBrQ7y43u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDGQlNGSIVmSGlSqmLHuhNiwa8mh73t2XpntiL2OcZMsgIhALFr9oHtNSrVDlzWJ51UCv5tOlvDYueAkJv1+905jhtj"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bndynet%2fvue-site@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":522953},"main":"./dist/index.es.js","name":"@bndynet/vue-site","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js"},"./style.css":"./dist/style.css"},"gitHead":"c16f3360d3c31ec570f5442a59277b59316570ba","scripts":{"dev":"npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"","lint":"node -e \"process.exit(0)\"","test":"node -e \"process.exit(0)\"","build":"npm run build:lib && npm install --prefix example && npm run build --prefix example","clean":"rimraf dist example/example-dist","start":"npm run dev","preview":"npm run build:lib && cd example && npm run build && npm run preview","build:lib":"vite build","dev:example":"npm --prefix example run dev","build:lib:watch":"vite build --watch --emptyOutDir false"},"version":"1.5.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5bcd49c1-95a3-45aa-b7d2-6745e54d5b18"}},"homepage":"https://github.com/bndynet/vue-site#readme","repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"_npmVersion":"11.19.0","description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","directories":{},"maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"_nodeVersion":"24.20.0","dependencies":{"vue":"^3.5.0","vite":"^6.2.0","vue-router":"^4.5.0","markdown-it":"^14.1.0","element-plus":"^2.13.7","highlight.js":"^11.11.0","lucide-vue-next":"^0.475.0","@vitejs/plugin-vue":"^5.2.0","unplugin-auto-import":"^21.0.0","unplugin-vue-components":"^32.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","vue-tsc":"^2.2.0","typescript":"~5.7.0","concurrently":"^9.2.1","vite-plugin-dts":"^4.5.0","@types/markdown-it":"^14.1.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vue-site_1.5.0_1789785764135_0.4185516620267593"}}},"time":{"created":"2026-04-11T11:36:32.297Z","modified":"2026-09-19T02:42:44.600Z","0.1.0":"2026-04-11T11:36:32.688Z","0.1.1":"2026-04-11T12:56:33.181Z","0.1.2":"2026-04-11T13:24:16.241Z","0.1.3":"2026-04-11T15:15:14.120Z","0.1.4":"2026-04-11T15:53:47.882Z","0.1.5":"2026-04-11T16:22:15.142Z","0.1.6":"2026-04-12T05:40:53.562Z","0.1.7":"2026-04-12T05:48:13.050Z","0.1.8":"2026-04-12T06:10:29.716Z","0.1.9":"2026-04-12T08:02:43.887Z","0.1.10":"2026-04-21T02:14:27.078Z","0.1.11":"2026-04-28T07:47:40.186Z","0.1.12":"2026-04-30T06:24:20.331Z","1.0.0":"2026-05-30T00:50:33.460Z","1.0.1":"2026-06-01T13:43:45.990Z","1.0.2":"2026-06-01T13:58:31.876Z","1.0.4":"2026-06-06T13:22:27.905Z","1.2.0":"2026-06-14T08:21:29.436Z","1.2.1":"2026-07-02T12:23:03.711Z","1.3.0":"2026-07-08T12:35:37.115Z","1.3.1":"2026-07-09T13:44:35.202Z","1.3.2":"2026-07-10T12:39:43.204Z","1.4.0":"2026-07-20T12:44:11.806Z","1.4.1":"2026-07-21T12:32:44.446Z","1.5.0":"2026-09-19T02:42:44.238Z"},"bugs":{"url":"https://github.com/bndynet/vue-site/issues"},"homepage":"https://github.com/bndynet/vue-site#readme","repository":{"url":"git+https://github.com/bndynet/vue-site.git","type":"git"},"description":"A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.","maintainers":[{"name":"bndy","email":"zb@bndy.net"}],"readme":"# @bndynet/vue-site\n\n可配置的 Vue 3 站点框架：一个依赖包、一份 `site.config.ts` 以及 Markdown 页面 —— 即可获得侧边栏、语法高亮代码块、亮色/暗色主题。无需手写 `main.ts`、`index.html` 或 `vite.config.ts`。\n\n## 特性\n\n- 配置驱动的导航（使用 Lucide 图标名）\n- 通过 `visible` 断言进行权限控制的导航（同步或异步；隐藏条目并跳过其路由）\n- 通过 `auth` + 中心化的 `authorize` 策略实现按页面授权（导航守卫 + 登录重定向）\n- Hash 或 HTML5（`web`）路由历史模式，可在 `site.config.ts` 中配置\n- 支持 Markdown（`?raw`）或 Vue 页面\n- highlight.js、亮色/暗色主题 + localStorage 持久化\n- 内置多语言支持（语言切换器、`LocalizedString` 配置、按语言区分的页面）—— 参见[国际化](#国际化-i18n)\n- 将项目的 `README.md` 作为首页\n- 完整的 TypeScript 类型\n\n## 快速开始\n\n**安装**\n\n```bash\nnpm install @bndynet/vue-site\n```\n\n在当前目录创建初始文件：\n\n```bash\nnpx vue-site init\n```\n\n该命令会创建 `site.config.ts`、`env.d.ts` 和 `README.md`，绝不会覆盖已有文件。\n也可以手动创建配置：\n\n**`site.config.ts`**\n\n```typescript\nimport { defineConfig } from '@bndynet/vue-site'\n\nexport default defineConfig({\n  title: 'My Project',\n  favicon: '/favicon.ico',\n  nav: [\n    { label: 'Home', icon: 'home', page: () => import('./README.md?raw') },\n    { label: 'Guide', icon: 'book-open', page: () => import('./pages/guide.md?raw') },\n  ],\n})\n```\n\n**目录结构**\n\n```\nmy-site/\n  package.json\n  site.config.ts\n  env.d.ts\n  public/favicon.ico\n  README.md\n  pages/guide.md\n```\n\n**CLI**（`vue-site` 与 `vs` 等价）\n\n```bash\nnpx vue-site init\nnpx vue-site dev\nnpx vue-site build\nnpx vue-site preview\n```\n\n`init` 可以安全地重复执行：它只创建缺失的初始文件，不会改动已有配置、类型声明或 README。\n\n可以通过 `--config` / `-c` 为不同环境选择配置文件。指定的文件必须直接位于当前站点根目录，\n扩展名可以是 `.ts`、`.js`、`.mts` 或 `.mjs`；`dev`、`build`、`preview` 都支持该参数：\n\n```bash\nnpx vue-site dev --config site.config.dev.ts\nnpx vue-site build --config site.config.prod.ts\nnpx vue-site preview -c site.config.prod.ts\n```\n\n省略 `--config` 时，CLI 仍会依次自动查找 `site.config.ts`、`site.config.js`、\n`site.config.mts`、`site.config.mjs`。\n\n子路径部署：在 CLI 上传入 Vite 的公共 base（会覆盖 `site.config` 中的 `env.vite.base`）：\n\n```bash\nnpx vue-site build --config site.config.prod.ts --base=/app/\n# 或\nnpx vue-site build --base /app/\n```\n\n如果愿意，可以在 `package.json` 的 scripts 中加上 `\"dev\": \"vue-site dev\"`（或 `vs dev`）。\n\n## 配置参考\n\n### `SiteConfig`\n\n| 属性 | 说明 |\n|----------|-------------|\n| `title` | 站点标题（侧边栏 + 标签页）。`LocalizedString` |\n| `nav` | `NavItem[]` |\n| `navPosition` | 可选的导航位置：`'top'` 强制使用顶部/分层导航，`'sidebar'` 强制将完整导航树放在侧边栏。不传时保持基于导航深度的自动行为 |\n| `defaultPath` | 站点打开时的路径；`/` 和未知路径会重定向到此。必须匹配一个已注册的路由（某个 `nav` 条目解析后的路径，或某个 `pages` 条目的 `path`）。默认为第一个顶级 `nav` 条目 |\n| `favicon` | 浏览器标签页图标 URL。可使用 public 资源路径、远程 URL 或导入后的资源 URL |\n| `logo` | Logo 的 URL 或导入的图片 |\n| `theme` | 见下方 `ThemeConfig`；设为 `false` 可禁用主题（隐藏切换器、强制使用固定的 `light` 调色板、不进行 localStorage 持久化） |\n| `i18n` | 多语言配置（`I18nConfig`）—— 参见[国际化](#国际化-i18n) |\n| `footer` | 页脚文本。`LocalizedString` |\n| `readme` | 当没有 `README.md` 时作为首页的原始内容 |\n| `links` | 头部链接：Lucide `icon` + `link`，可选的 `title`（`LocalizedString`） |\n| `pages` | `StandalonePage[]` —— 位于 `nav` 树之外的全屏路由（无顶部栏/侧边栏/页脚） |\n| `auth` | 中心化的授权策略（`AuthConfig`）—— 参见[按页面授权](#按页面授权-auth) |\n| `router` | 历史模式（`RouterConfig`）—— `hash`（默认）或 HTML5 `web`；参见[路由历史](#路由历史-router) |\n| `packageRepository` | 通常由 CLI 从 `package.json` 设置；单独使用 `createSiteApp` 时可省略 |\n| `custom` | 公开的业务自定义配置；组件内通过 `useSiteConfig().config.custom` 读取，其他代码通过 `getSiteConfig().custom` 读取；参见[自定义客户端配置](#自定义客户端配置-custom) |\n| `env` | 开发/构建选项 —— 见下文 |\n| `bootstrap` | 可选的站点根目录相对路径（如 `./bootstrap.ts`）—— 在 Vue 应用之前加载一次的模块 |\n| `configureApp` | 可选的 `(app) => void \\| Promise<void>`，在路由安装之后、`mount` 之前执行（参见 [`configureApp` 中的本地包](#在-configureapp-中使用本地包)） |\n\n### 自定义客户端配置（`custom`）\n\n`custom` 用于存放框架无需解释、只需原样保留的公开业务配置：\n\n```typescript\n// site.config.ts\nexport default defineConfig({\n  title: '我的站点',\n  nav: [/* ... */],\n  custom: {\n    apiBaseUrl: 'http://localhost/api/v1',\n  },\n})\n```\n\n```typescript\n// Vue 组件中\nconst { config } = useSiteConfig()\nconst apiBaseUrl = config.custom?.apiBaseUrl\n```\n\n`utils.ts` 等普通模块没有 Vue 注入上下文，应改用 `getSiteConfig()` 读取当前配置：\n\n```typescript\n// utils/api.ts\nimport { getSiteConfig } from '@bndynet/vue-site'\n\nexport function getApiBaseUrl() {\n  return getSiteConfig().custom?.apiBaseUrl\n}\n```\n\n请在 `createSiteApp()` 已开始执行后的运行时代码中调用 `getSiteConfig()`。不要在被\n`site.config.ts` 导入的模块顶层立即求值，因为此时当前配置尚未注册。\n\n如果不同构建环境使用不同的值，可以选择不同的配置文件：\n\n```typescript\n// site.config.prod.ts\nexport default defineConfig({\n  title: '我的站点',\n  nav: [/* ... */],\n  custom: {\n    apiBaseUrl: 'https://prod.com/api/v1',\n  },\n})\n```\n\n```bash\nnpx vue-site build --config site.config.prod.ts\n```\n\n`custom` 的类型是 `SiteCustomConfig`。可以通过模块扩充为业务字段提供强类型：\n\n```typescript\n// site-custom.d.ts\nimport '@bndynet/vue-site'\n\ndeclare module '@bndynet/vue-site' {\n  interface SiteCustomConfig {\n    apiBaseUrl: string\n  }\n}\n```\n\n所有 `custom` 值都会进入客户端代码，用户可以查看。不要在这里存放密码、Token、私钥或其他密钥。\n\n### `NavItem`\n\n| 属性 | 说明 |\n|----------|-------------|\n| `label` | 侧边栏文本。`LocalizedString` |\n| `icon` | [Lucide](https://lucide.dev/icons) 图标名 |\n| `page` | 页面内容。最简单的是一个**文件路径字符串**，如 `'./pages/AdminView.vue'` 或 `'./README.md'`（自动加载各语言的同名文件，找不到时回退到基础文件）。也接受加载器（`() => import('./Page.vue')` / `() => import('./page.md?raw')`）或 `localizedPage(...)` 的返回值。见[按语言区分的页面内容](#按语言区分的页面内容)与[高级页面加载器](#高级页面加载器) |\n| `path` | 路由路径（省略时从 `label` 的默认语言值派生；切换语言时保持稳定） |\n| `layout` | 页面内容宽度：`'default'` 保持标准居中阅读宽度，`'wide'` 使用更宽的居中画布，`'full'` 以无框架内边距的方式填满可用父容器。对分组和链接无效。 |\n| `children` | 嵌套分组 |\n| `link` | 渲染为超链接（内部路由路径或外部 URL），而非页面路由 |\n| `visible` | `() => boolean \\| Promise<boolean>`，在启动时等待执行一次。返回 `false` 会从导航中隐藏该条目并跳过其路由（无法通过直接 URL 访问）。被隐藏的父项会隐藏其整个子树；没有剩余子项的分组会被剪除。对后续变化不具响应性。 |\n| `auth` | 由 `auth.authorize` 解释的授权规则（`AuthRule`）。会保持路由注册并通过导航守卫强制执行（因此直接访问 URL 会重定向到登录页）。需要配置 `SiteConfig.auth`。参见[按页面授权](#按页面授权-auth)。 |\n\n### `StandalonePage`\n\n| 属性 | 说明 |\n|----------|-------------|\n| `path` | 路由路径，按原样使用（如 `/landing`） |\n| `page` | 页面内容。接受形式与 `NavItem.page` 相同 |\n| `layout` | 可选内容宽度。省略时保持 standalone 默认行为：全屏、无内边距画布。 |\n| `visible` | `() => boolean \\| Promise<boolean>`，在启动时等待执行一次。返回 `false` 会跳过该路由注册。 |\n| `auth` | 授权规则（`AuthRule`），由与 `NavItem.auth` 相同的导航守卫强制执行。 |\n\n### 页面布局\n\n当默认阅读宽度太窄时，可以在 `NavItem` 页面上设置 `layout`：\n\n```typescript\nexport default defineConfig({\n  nav: [\n    { label: 'Docs', icon: 'book', page: './pages/docs.md' },\n    { label: 'Reports', icon: 'table', layout: 'wide', page: './pages/reports.vue' },\n    { label: 'Dashboard', icon: 'gauge', layout: 'full', page: './pages/dashboard.vue' },\n  ],\n})\n```\n\n### `ThemeConfig`\n\n内置主题为 `light`、`dark`，外加始终可用的额外主题 `sepia` 和 `ocean`（在每个站点的切换器中都会显示）。在 `SiteConfig` 上设置 `theme: false` 可完全禁用主题。\n\n| 属性 | 默认值 | 说明 |\n|----------|---------|-------------|\n| `default` | `light` | `light`、`dark`、内置额外主题 id（`sepia`、`ocean`），或某个 `extraThemes[].id` |\n| `colors` | — | 全局 CSS 变量覆盖 |\n| `palettes` | — | 仅针对内置 light/dark 的部分覆盖 |\n| `extraThemes` | — | 额外主题：`id`、`label`、`icon`，可选 `basedOn`、`palette`；复用内置 id（`sepia`/`ocean`）即可覆盖它。导入 `builtinThemePalettes` 获取完整默认值 |\n\n## 国际化（`i18n`）\n\n设置 `i18n` 以启用多语言支持。框架会在头部添加语言切换器，\n针对当前激活的语言解析每一个 `LocalizedString` 字段（`title`、`nav[].label`、`footer`、`links[].title`），\n并通过 `useLocale()` / `useLocalize()` 暴露当前语言。\n\n```typescript\nimport { defineConfig } from '@bndynet/vue-site'\n\nexport default defineConfig({\n  i18n: {\n    locales: [\n      { code: 'en', label: 'English' },\n      { code: 'zh', label: '简体中文', icon: 'languages' },\n    ],\n    defaultLocale: 'en',\n  },\n  title: { en: 'My Site', zh: '我的站点' }, // 一个 LocalizedString\n  footer: { en: '© 2026', zh: '© 2026 版权所有' },\n  nav: [\n    { label: { en: 'Home', zh: '首页' }, icon: 'home', page: '../README.md' },\n    {\n      label: { en: 'Guide', zh: '指南' },\n      icon: 'book',\n      // 按语言区分的内容：./pages/guide.md（基础）+ guide.zh.md，由 CLI 自动发现。\n      page: './pages/guide.md',\n    },\n  ],\n})\n```\n\n### 按语言区分的页面内容\n\n把 `page` 指向一个**文件路径字符串**，框架就会为当前语言加载正确的文件 —— 无需任何额外接线：\n\n```typescript\nimport { defineConfig, tk } from '@bndynet/vue-site'\n\nexport default defineConfig({\n  i18n: { locales: [{ code: 'en' }, { code: 'zh' }], defaultLocale: 'en' },\n  nav: [\n    // 加载 ../README.md；当语言为 `zh` 时自动改用 ../README.zh.md。\n    { label: tk('nav.home'), icon: 'home', page: '../README.md' },\n    // Vue 页面同理：Dashboard.vue + Dashboard.zh.vue。\n    { label: tk('nav.dash'), icon: 'gauge', page: './pages/Dashboard.vue' },\n  ],\n})\n```\n\n- 在基础文件旁边以 `名.<code>.<ext>` 命名各语言变体 —— `README.zh.md`、`Dashboard.zh.vue`……\n- 没有对应文件的语言会回退到**基础文件**（`README.md`）。解析顺序：精确匹配 → 主子标签（`zh-TW` → `zh`）→ 基础文件。\n- **新增语言只需放入一个 `名.<code>` 文件 —— 无需改配置。**\n- 支持 Markdown（`.md`）和 Vue（`.vue`）。基础名称不能包含点号（`README.md` ✓，`my.page.md` ✗）。\n\n> 字符串形式由 `vue-site` CLI 在构建时解析。如果你自行嵌入该库（不使用 CLI —— 见[库模式](#库模式)），\n> 请改用[高级页面加载器](#高级页面加载器)中的加载器。\n\n### 高级页面加载器\n\n> **一般用不到。** 上面的文件路径字符串已能覆盖大多数站点。只有在你需要一个普通的单文件加载器、\n> 各语言文件**不同名**，或在**不使用 CLI**（库模式）时，才需要用到这些。\n\n除了字符串，`page` 还接受一个**加载器函数**或 `localizedPage(...)` 的返回值：\n\n- **单文件、不做多语言** —— 一个普通的动态导入：\n\n  ```typescript\n  page: () => import('./pages/Dashboard.vue')   // Markdown 用 () => import('./guide.md?raw')\n  ```\n\n- **显式语言映射** —— 当各语言文件不共享基础名称（字符串形式无法推断）时：\n\n  ```typescript\n  import { localizedPage } from '@bndynet/vue-site'\n\n  page: localizedPage({\n    en: () => import('./pages/guide-en.md?raw'),\n    zh: () => import('./pages/guide-zh.md?raw'),\n  })\n  ```\n\n- **glob（库模式）** —— 与字符串形式相同的自动发现，但显式写出，因此不依赖 CLI：\n\n  ```typescript\n  page: localizedPage(import.meta.glob(['../README.md', '../README.*.md'], { query: '?raw' }))\n  ```\n\n  `page: '../README.md'` 正是 CLI 帮你生成的这一段。（Vue 页面去掉 `{ query: '?raw' }` 即可。）\n\n所有 `localizedPage` 形式在当前语言没有对应文件时都会回退（精确匹配 → 主子标签 → 基础文件 → 第一个）。\n\n### 工作原理\n\n- **初始语言**：已存储的选择（localStorage）> 浏览器语言（`navigator.language`，当开启 `detectBrowser` 时）> `defaultLocale` > 第一个条目。\n- **`LocalizedString`** 为 `string | Record<LocaleCode, string> | MessageRef`。普通字符串会原样返回\n  （单语言配置照常工作），语言映射保存内联的按语言文本，而 `MessageRef`（用 `tk('id')` 构建）\n  引用中心化消息文件中的某个键 —— 参见[中心化消息文件](#消息文件与键-tk--t)。\n- **稳定的 URL**：路由路径从**默认语言**的 label（或显式 `path`）派生，因此切换语言永远不会改变 URL。\n- **响应式**：切换语言会实时更新 label、标题、页脚和页面内容（页面内容通过 `localizedPage` 重新加载）。\n  仅当 `locales.length > 1` 时才会出现切换器。\n- **UI 字符串**：框架自带内置字符串（目前为 `en`、`zh`）用于主题/语言切换器和页面错误提示；\n  可通过 `i18n.messages` 按语言覆盖或扩展它们。\n\n### `I18nConfig`\n\n| 属性 | 默认值 | 说明 |\n|----------|---------|-------------|\n| `locales` | 自动发现的 `locales/*.json` | `{ code, label, icon? }[]` —— 支持的语言，按显示顺序排列。可选：省略时从自动加载的文件名派生（使用内置标签）。第一个条目为回退项 |\n| `defaultLocale` | `locales[0].code` | 当没有存储值且检测未命中时使用的初始语言 |\n| `detectBrowser` | `true` | 首次访问时从 `navigator.language(s)` 检测初始语言 |\n| `storageKey` | `vue-site-locale` | 用于存储所选语言的 localStorage 键 |\n| `messages` | 自动从 `locales/<code>.json` 加载 | `Record<LocaleCode, Record<string, string>>` —— 额外/覆盖的翻译，会合并到自动加载的文件和内置 UI 字符串之上 |\n\n### 消息文件与键（`tk` / `t`）\n\n与其到处内联 `{ en, zh }`，不如把所有翻译放在纯 JSON 中 —— **每种语言一个文件** —— 并通过键引用它们。\n这是零配置的：CLI 会在你的 `site.config.ts` 旁自动发现 `locales/<code>.json`。\n你无需编写任何粘合代码（无需 `index.ts`，无需 `messages` 字段），甚至不必列出语言。\n\n```jsonc\n// locales/en.json —— 嵌套分组（推荐），会被展平为点号分隔的 id\n{\n  \"site\": { \"title\": \"My Site\" },\n  \"nav\": { \"home\": \"Home\", \"guide\": \"Guide\" }\n}\n```\n\n```jsonc\n// locales/zh.json\n{\n  \"site\": { \"title\": \"我的站点\" },\n  \"nav\": { \"home\": \"首页\", \"guide\": \"指南\" }\n}\n```\n\n> 文件可以是**嵌套的**（如上）或**扁平的**（`{ \"site.title\": \"My Site\" }`）—— 嵌套分组会被\n> 展平为点号分隔的 id，因此 `tk('site.title')` / `t('site.title')` 两种写法都能工作。\n\n```typescript\n// site.config.ts —— 在配置中用 tk() 引用键，在页面中用 t()\nimport { defineConfig, tk } from '@bndynet/vue-site'\n\nexport default defineConfig({\n  // `i18n` 可以完全省略：语言列表会从文件名（en、zh、……）派生，\n  // 并带有友好的内置标签。仅当需要自定义 label/icon/顺序时才声明它。\n  i18n: {\n    locales: [\n      { code: 'en', label: 'English' },\n      { code: 'zh', label: '简体中文', icon: 'languages' },\n    ],\n    defaultLocale: 'en',\n  },\n  title: tk('site.title'),\n  nav: [\n    { label: tk('nav.home'), icon: 'home', page: '../README.md' },\n    {\n      label: tk('nav.guide'),\n      icon: 'book',\n      page: './pages/guide.md',\n    },\n  ],\n})\n```\n\n键的解析会依次回退：当前语言的主子标签 → `defaultLocale` → `en` → id 本身，并对 `{name}`\n占位符进行插值。`tk()` 与内联 `{ en, zh }` 映射可以自由混用 —— 对共享/集中管理的文本用 `tk()`，\n对一次性字符串用内联映射。\n\n**自动发现的细节与覆盖**\n\n- 约定是 `locales/<code>.json`（如 `locales/en.json`、`locales/zh.json`），相对于配置目录解析。\n  `code` 即文件名（一个 `LocaleCode`，如 `en` 或 `zh-TW`）。\n- 仍支持显式的 `i18n.messages`，并会**覆盖**自动加载的键（按 id）；显式的 `i18n.locales`\n  控制 label/icon/顺序。两者均为可选。\n- 自动发现是 **CLI** 特性。如果你自行嵌入该库（不使用 `vue-site` CLI 而直接调用 `createSiteApp`），\n  请直接传入 `i18n.messages` —— 例如用显式 import 从 JSON 构建（避免在 `site.config.ts` 中使用\n  `import.meta.glob`，CLI 会在 Node 中预加载它）。\n\n### 在你自己的页面中本地化\n\n`useLocalize()` 返回 `t(id, params?)`（从中心目录解析消息 id，并对 `{name}` 进行插值）、\n`localize(value)`（解析任意 `LocalizedString` —— `tk()` 引用、内联映射或普通字符串），\n以及响应式的 `locale` ref。`useLocale()` 返回 `{ locale, setLocale, locales }`，\n用于构建自定义切换器。它们都可在由 `createSiteApp` 渲染的任意组件中工作。\n\n```vue\n<script setup lang=\"ts\">\nimport { useLocalize } from '@bndynet/vue-site'\n\nconst { t, localize, locale } = useLocalize()\n</script>\n\n<template>\n  <!-- 来自中心消息文件的键 -->\n  <h1>{{ t('nav.home') }}</h1>\n  <!-- 或内联，用于一次性文本 -->\n  <p>{{ localize({ en: 'Hello', zh: '你好' }) }} — {{ locale }}</p>\n</template>\n```\n\n## 按页面授权（`auth`）\n\n基于当前用户对单个页面进行门控。为任意 `NavItem` 或 `StandalonePage` 添加 `auth` 规则，\n并在 `SiteConfig` 中提供单一的 `auth.authorize` 策略来决定访问权限。\n\n```typescript\nimport { defineConfig } from '@bndynet/vue-site'\n\nexport default defineConfig({\n  title: 'My Site',\n  auth: {\n    loginPath: '/login',\n    authorize: ({ rule }) => {\n      const user = getCurrentUser() // 你自己的认证状态\n      if (!user) return '/login' // 未登录 -> 重定向（字符串）\n      if (rule === true) return true // `auth: true` -> 任意已登录用户\n      if (typeof rule === 'string') return user.roles.includes(rule)\n      if (Array.isArray(rule)) return rule.some((r) => user.roles.includes(r))\n      return true\n    },\n  },\n  nav: [\n    { label: 'Home', icon: 'home', page: () => import('../README.md?raw') },\n    { label: 'Dashboard', icon: 'gauge', auth: true, page: () => import('./pages/Dash.vue') },\n    { label: 'Admin', icon: 'shield', auth: ['admin'], page: () => import('./pages/Admin.vue') },\n  ],\n  pages: [\n    { path: '/login', page: () => import('./pages/Login.vue') }, // 无 `auth` -> 始终可访问\n  ],\n})\n```\n\n### 工作原理\n\n- `authorize` 在**每次导航时**运行（一个 Vue Router `beforeEach` 守卫）。它接收 `{ rule, item, to, from }`，\n  并返回 `true`（允许）、`false`（拒绝）或一个路径 `string`（重定向，例如到登录页）。\n- 返回 `false` 时，用户会被发送到 `auth.loginPath`，并把请求的路径作为 `redirect` 查询参数\n  （`/login?redirect=/admin`）；如果未设置 `loginPath`，则取消该次导航。\n- `authorize` 也会在 auth 过滤后的导航菜单刷新时运行（仅带 `rule` / `item`），以从导航菜单中隐藏未授权的条目。\n  框架会在导航完成后刷新此菜单；如果你在没有导航的情况下改变登录状态，请调用\n  `useSiteConfig().refreshAuthNav()`。\n- 受保护的路由仍保持**注册**，因此直接访问受保护 URL 会触发守卫（及你的登录重定向），\n  而不是静默地 404。\n- 登录页本身**不能**携带 `auth` 规则（且 `loginPath` 始终被守卫允许），以避免重定向循环。\n\n### `AuthConfig`\n\n| 属性 | 说明 |\n|----------|-------------|\n| `authorize` | `(ctx: AuthContext) => boolean \\| string \\| Promise<boolean \\| string>`。`true` 允许，`false` 拒绝，`string` 重定向。 |\n| `loginPath` | 将被拒绝的用户发送到何处（带 `?redirect=`）。可选；不设置时，拒绝将取消导航。 |\n\n`AuthRule` 为 `boolean \\| string \\| string[] \\| ((ctx: AuthContext) => boolean \\| Promise<boolean>)`。\n框架从不检查规则；它会将规则转发给 `authorize`，因此其含义完全由你决定。\n\n### `visible` 与 `auth` 对比\n\n| | `visible` | `auth` |\n|--|-----------|--------|\n| 决定 | 条目/路由是否**存在** | **当前用户**是否可以进入 |\n| 时机 | 构建/启动（一次） | 导航（每次）+ 刷新时的菜单过滤 |\n| 路由是否注册 | 否（无法通过 URL 访问） | 是（受守卫保护；可重定向到登录） |\n| 对登录/登出的响应 | 否 | 守卫：是；菜单过滤：导航后或 `refreshAuthNav()` 后是 |\n| 最适合 | 环境 / 功能开关 / 静态裁剪 | 登录状态、角色、登录重定向 |\n\n用 `visible` 进行静态存在性裁剪，用 `auth` 进行基于用户的访问控制。它们可以组合在同一个条目上。\n\n## 路由历史（`router`）\n\n默认情况下路由使用 **hash** 历史模式（`#/path`），它无需任何服务器配置即可在任意静态主机上工作，\n且与公共 base 无关。要获得干净的 URL，请切换到 HTML5 历史模式：\n\n```typescript\nexport default defineConfig({\n  title: 'My Site',\n  router: { mode: 'web' }, // /app/admin 而不是 /app/#/admin\n  nav: [/* ... */],\n})\n```\n\n### `RouterConfig`\n\n| 属性 | 默认值 | 说明 |\n|----------|---------|-------------|\n| `mode` | `hash` | `hash`（`#/path`，无需服务器配置）或 `web`（HTML5 干净 URL） |\n| `base` | `import.meta.env.BASE_URL` | `web` 模式的 base 路径。CLI 会自动从 `--base` / `env.vite.base` 设置它；仅当从自定义入口调用 `createSiteApp` 时才需要覆盖。 |\n\n注意：\n\n- **`web` 模式需要 SPA 回退**：请配置你的主机为未知路径提供 `index.html`，否则深链接 / 刷新会 404。\n  Hash 模式无需任何配置。\n- **子路径部署**：使用 CLI 时，`--base=/app/` 会在 `web` 模式下被自动用作历史 base。\n  在[库模式](#库模式)下，请从你自己的入口传入 `router: { mode: 'web', base: import.meta.env.BASE_URL }`。\n\n## `env`（`SiteEnvConfig`）\n\n| 属性 | 说明 |\n|----------|-------------|\n| `port` | 开发服务器端口 |\n| `outDir` | 构建输出（相对于站点根目录；默认 `{folder}-dist`） |\n| `customElements` | 自定义元素的标签前缀（如 `['chat-', 'i-']`） |\n| `watchPackages` | 本地包 —— 参见 [env.watchPackages](#envwatchpackages) |\n| `vite` | Vite 覆盖配置（不含 `root`）；框架会合并别名、`server.fs.allow`、`build.outDir` 等 |\n\n### `env.watchPackages`\n\n- **字符串** —— 仅包名（如工作区软链接 / `npm link`）。会跳过依赖预打包；文件监听遵循 Vite 默认行为。\n- **`{ name, entryPath }`** —— `name` 必须匹配导入说明符（如 `@scope/pkg`）。`entryPath` **相对于\n  你运行 CLI 的目录**（包含 `site.config.*` 的文件夹）。Vite 会将该包解析为你的**源码入口**以支持开发 HMR，\n  并将包目录加入 `server.fs.allow`。\n- 如果你将 **`env.vite.resolve.alias` 用作数组**（`{ find, replacement }[]`），CLI 仍会正确合并\n  `watchPackages` 的别名（仅对象展开会破坏这一点）。\n- 如果某个包列在此处，**不要**在 `site.config.ts` 中再为同一个包添加**顶层值导入** —— 配置预加载在\n  Node 中运行并会解析到 `node_modules`，而应用使用的是 Vite。请改用 **`configureApp` + 动态 `import()`**\n  （见下一节）。\n\n### 在 `configureApp` 中使用本地包\n\n`configureApp` 可以是 **`async`** 的，因此你可以在路由安装之后 `await import('your-package')`。\n该动态导入在浏览器中、在 Vite 下运行，因此它遵循 `watchPackages`，且不会在 CLI 配置加载期间运行。\n\n```typescript\nexport default defineConfig({\n  env: {\n    watchPackages: [{ name: '@acme/widgets', entryPath: '../widgets/src/index.ts' }],\n  },\n  async configureApp(app) {\n    const w = await import('@acme/widgets')\n    w.register(app)\n  },\n})\n```\n\n### 开发服务器文件系统访问\n\nCLI 允许 `server.fs` 读取站点根目录下、已安装的 `vue-site` 包目录、站点根目录的**父目录**\n（用于 `../…` 导入），以及 —— 当不会扩展到文件系统根目录时 —— **祖父目录**（在 monorepo 中常见，\n如 `../../packages/...`）。如有需要，可通过 `env.vite.server.fs.allow` 添加更多路径。\n带 `{ entryPath }` 的 `watchPackages` 条目也会为这些包树扩展 `fs.allow`。\n\n## 库模式\n\n拥有自己的 `index.html` + Vite 配置：\n\n```typescript\nimport { createSiteApp } from '@bndynet/vue-site'\nimport '@bndynet/vue-site/style.css'\nimport config from './site.config'\n\nconst app = await createSiteApp(config)\napp.mount('#app')\n```\n\n在你的入口中使用顶层 `await`（或一个 async IIFE）：`createSiteApp` 是异步的，当 `configureApp`\n返回 `Promise` 时会 **await** 它。如果你在配置中设置了可选的 `bootstrap`，该模块会在应用创建前加载；\n如果省略 `bootstrap`，则跳过该步骤。\n\n导出：`createSiteApp`、`defineConfig`、`useTheme`、`useSiteConfig`、`getSiteConfig`、`useLocale`、`useLocalize`、`tk`、`resolveLocalized`、`resolveField`、`resolveMessage`、`mergeCatalog`、`flattenMessages`、`isMessageRef`、`localizedPage`、`builtinMessages`、`themeRefKey`、`localeRefKey`。类型：`SiteConfig`、`SiteEnvConfig`、`SiteViteConfig`、`SiteCustomConfig`、`SiteExternalLink`、`NavItem`、`StandalonePage`、`PageLayout`、`AuthRule`、`AuthContext`、`AuthConfig`、`RouterConfig`、`ThemeConfig`、`ThemeOption`、`ThemePaletteVars`、`ResolvedNavItem`、`I18nConfig`、`LocaleOption`、`LocaleCode`、`LocalizedString`、`MessageRef`、`MessageTree`、`MessageCatalog`、`PageLoader`、`LocalizedPageOptions`。\n\n### 在 Vue 页面中使用主题（`useTheme`）\n\n从 `@bndynet/vue-site` 导入 `useTheme`。它返回一个响应式的 `theme` ref（当前激活的主题 id，\n如 `light`、`dark` 或某个 `extraThemes[].id`），外加 `setTheme` 和 `toggleTheme`。\n根布局还会在 `document.documentElement` 上设置 `data-theme` 属性并应用 CSS 变量，\n因此你可以用 `var(--color-*)` 来设置样式，无需 JavaScript。\n\ntheme ref 由 `createSiteApp()` **提供**（与你的应用同一个 Vue 运行时），所以 `watch(theme, …)`\n能可靠工作，即使其他工具可能会从嵌套的 `node_modules` 加载第二份 `vue`。\n\n```vue\n<script setup lang=\"ts\">\nimport { watch } from 'vue'\nimport { useTheme } from '@bndynet/vue-site'\n\nconst { theme, setTheme, toggleTheme } = useTheme()\n\nwatch(theme, (next, prev) => {\n  if (prev !== undefined) console.log('theme:', prev, '→', next)\n})\n</script>\n\n<template>\n  <p>当前主题：{{ theme }}</p>\n</template>\n```\n\n`watch` 仅在你的组件初始化之后主题**发生变化**时运行（例如用户点击主题控件之后）。\n除非你传入 `{ immediate: true }`，否则它不会在初始值上运行。\n\n## 升级\n\n```bash\nnpm update @bndynet/vue-site\n```\n\n## 开发本仓库\n\n```bash\ngit clone https://github.com/bndynet/vue-site.git && cd vue-site\nnpm install\nnpm run dev    # 监听构建 lib + 示例站点\nnpm run build  # `dist/` + `example/example-dist`\n```\n\n### 在其他项目中使用本地构建\n\n已发布的入口指向 `dist/`。在更改 `src/` 下的库**源码**后，需在使用方看到更新之前运行\n`npm run build:lib`（或 `build:lib:watch`）。对 **`bin/vue-site.mjs`** 的更改会在下一次运行\n`vue-site` 时生效，无需重新构建 lib。\n\n```bash\ncd /path/to/vue-site\nnpm install && npm run build:lib\nnpm link\n\ncd /path/to/consumer\nnpm link @bndynet/vue-site\n```\n\n编辑文件后无需再次运行 `npm link`；软链接会保持。完成后在使用方运行\n`npm unlink @bndynet/vue-site` 和 `npm install`。\n\n## 许可证\n\nMIT\n","readmeFilename":"README.zh.md"}