From 495a87c03dc183919a70ee92871d80cb01363dda Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Sat, 4 Oct 2025 11:02:21 +0800 Subject: [PATCH 01/25] docs: readme --- README.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3cc6088..8995a51 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,26 @@ -# vue-note +# Vue Note State: **🚧 Work in progress** vue-note is another style to write Vue. It's light, easy and fast! +## Getting Started + +Use the follwing command to install Vue Note exist project + +``` +npm install -D vue-note +``` + +Learn more at [vue-note.liangmi.dev](https://vue-note.liangmi.dev/)! + +## Contribute Guide + +We're so excited that you are willing to help improve Vue Note, before starting your contribution, please take a moment to read the following tips + +- It's best to submitting an [issue](./issues/new) for discussion if you want to make a new feature. +- If you encounter any issues during development or contributing, please check the [Design Philosophy]() documentation first. You can also reach me directly at hi@liangmi.dev. + ## License [MIT](./LICENSE) License, 2025 - Present [Liang Mi](https://github.com/liangmiqwq) From 006bb6e9da66d03f162e3d0ac597d33739ee7779 Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Sat, 4 Oct 2025 11:44:43 +0800 Subject: [PATCH 02/25] wip: --- .gitignore | 1 + package.json | 1 + packages/docs/api-examples.md | 49 ++ packages/docs/index.md | 24 + packages/docs/markdown-examples.md | 85 +++ packages/docs/package.json | 16 + pnpm-lock.yaml | 1056 ++++++++++++++++++++++++++++ pnpm-workspace.yaml | 2 + 8 files changed, 1234 insertions(+) create mode 100644 packages/docs/api-examples.md create mode 100644 packages/docs/index.md create mode 100644 packages/docs/markdown-examples.md create mode 100644 packages/docs/package.json diff --git a/.gitignore b/.gitignore index 95f9ee9..74c02cd 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ lib-cov logs node_modules temp +packages/docs/.vitepress diff --git a/package.json b/package.json index 8d1a1d2..4b34bef 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "dev": "tsdown --watch", "play": "pnpm -C playground dev", "lint": "eslint", + "docs": "pnpm -r --filter vue-note-docs docs:dev", "prepublishOnly": "nr build", "release": "bumpp -r", "test": "vitest", diff --git a/packages/docs/api-examples.md b/packages/docs/api-examples.md new file mode 100644 index 0000000..6bd8bb5 --- /dev/null +++ b/packages/docs/api-examples.md @@ -0,0 +1,49 @@ +--- +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 + + +## Results + +### Theme Data +
{{ theme }}
+ +### Page Data +
{{ page }}
+ +### Page Frontmatter +
{{ frontmatter }}
+``` + + + +## Results + +### Theme Data +
{{ theme }}
+ +### Page Data +
{{ page }}
+ +### Page Frontmatter +
{{ frontmatter }}
+ +## More + +Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata). diff --git a/packages/docs/index.md b/packages/docs/index.md new file mode 100644 index 0000000..8e09315 --- /dev/null +++ b/packages/docs/index.md @@ -0,0 +1,24 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: "Vue Note" + text: "Write Vue template in code comment? What?!" + 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 +--- diff --git a/packages/docs/markdown-examples.md b/packages/docs/markdown-examples.md new file mode 100644 index 0000000..f9258a5 --- /dev/null +++ b/packages/docs/markdown-examples.md @@ -0,0 +1,85 @@ +# 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). diff --git a/packages/docs/package.json b/packages/docs/package.json new file mode 100644 index 0000000..41851b4 --- /dev/null +++ b/packages/docs/package.json @@ -0,0 +1,16 @@ +{ + "name": "vue-note-docs", + "type": "module", + "private": true, + "description": "Document for Vue Note", + "author": "Liang Mi", + "license": "MIT", + "scripts": { + "docs:dev": "vitepress dev", + "docs:build": "vitepress build", + "docs:preview": "vitepress preview" + }, + "devDependencies": { + "vitepress": "catalog:docs" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 75388e5..0561afe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,6 +43,10 @@ catalogs: typescript: specifier: ^5.9.3 version: 5.9.3 + docs: + vitepress: + specifier: ^1.6.4 + version: 1.6.4 testing: tinyexec: specifier: ^1.0.1 @@ -122,6 +126,12 @@ importers: specifier: catalog:testing version: 2.8.1 + packages/docs: + devDependencies: + vitepress: + specifier: catalog:docs + version: 1.6.4(@algolia/client-search@5.39.0)(@types/node@24.6.2)(change-case@5.4.4)(lightningcss@1.30.2)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.3) + packages/vue-note: devDependencies: oxc-parser: @@ -160,6 +170,82 @@ importers: packages: + '@algolia/abtesting@1.5.0': + resolution: {integrity: sha512-W/ohRkbKQsqDWALJg28X15KF7Tcyg53L1MfdOkLgvkcCcofdzGHSimHHeNG05ojjFw9HK8+VPhe/Vwq4MozIJg==} + engines: {node: '>= 14.0.0'} + + '@algolia/autocomplete-core@1.17.7': + resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==} + + '@algolia/autocomplete-plugin-algolia-insights@1.17.7': + resolution: {integrity: sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==} + peerDependencies: + search-insights: '>= 1 < 3' + + '@algolia/autocomplete-preset-algolia@1.17.7': + resolution: {integrity: sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/autocomplete-shared@1.17.7': + resolution: {integrity: sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/client-abtesting@5.39.0': + resolution: {integrity: sha512-Vf0ZVe+qo3sHDrCinouJqlg8VoxM4Qo/KxNIqMYybkuctutfnp3kIY9OmESplOQ/9NGBthU9EG+4d5fBibWK/A==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-analytics@5.39.0': + resolution: {integrity: sha512-V16ITZxYIwcv1arNce65JZmn94Ft6vKlBZ//gXw8AvIH32glJz1KcbaVAUr9p7PYlGZ/XVHP6LxDgrpNdtwgcA==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-common@5.39.0': + resolution: {integrity: sha512-UCJTuwySEQeiKPWV3wruhuI/wHbDYenHzgL9pYsvh6r/u5Z+g61ip1iwdAlFp02CnywzI9O7+AQPh2ManYyHmQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-insights@5.39.0': + resolution: {integrity: sha512-s0ia8M/ZZR+iO2uLNTBrlQdEb6ZMAMcKMHckp5mcoglxrf8gHifL4LmdhGKdAxAn3UIagtqIP0RCnIymHUbm7A==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-personalization@5.39.0': + resolution: {integrity: sha512-vZPIt7Lw+toNsHZUiPhNIc1Z3vUjDp7nzn6AMOaPC73gEuTq2iLPNvM06CSB6aHePo5eMeJIP5YEKBUQUA/PJA==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-query-suggestions@5.39.0': + resolution: {integrity: sha512-jcPQr3iKTWNVli2NYHPv02aNLwixDjPCpOgMp9CZTvEiPI6Ec4jHX+oFr3LDZagOFY9e1xJhc/JrgMGGW1sHnw==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-search@5.39.0': + resolution: {integrity: sha512-/IYpF10BpthGZEJQZMhMqV4AqWr5avcWfZm/SIKK1RvUDmzGqLoW/+xeJVX9C8ZnNkIC8hivbIQFaNaRw0BFZQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/ingestion@1.39.0': + resolution: {integrity: sha512-IgSHKUiuecqLfBlXiuCSdRTdsO3/yvpmXrMFz8fAJ8M4QmDtHkOuD769dmybRYqsbYMHivw+lir4BgbRGMtOIQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/monitoring@1.39.0': + resolution: {integrity: sha512-8Xnd4+609SKC/hqVsuFc4evFBmvA2765/4NcH+Dpr756SKPbL1BY0X8kVxlmM3YBLNqnduSQxHxpDJUK58imCA==} + engines: {node: '>= 14.0.0'} + + '@algolia/recommend@5.39.0': + resolution: {integrity: sha512-D7Ye2Ss/5xqUkQUxKm/VqEJLt5kARd9IMmjdzlxaKhGgNlOemTay0lwBmOVFuJRp7UODjp5c9+K+B8g0ORObIw==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-browser-xhr@5.39.0': + resolution: {integrity: sha512-mgPte1ZJqpk9dkVs44J3wKAbHATvHZNlSpzhMdjMLIg/3qTycSZyDiomLiSlxE8CLsxyBAOJWnyKRHfom+Z1rg==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-fetch@5.39.0': + resolution: {integrity: sha512-LIrCkrxu1WnO3ev1+w6NnZ12JZL/o+2H9w6oWnZAjQZIlA/Ym6M9QHkt+OQ/SwkuoiNkW3DAo+Pi4A2V9FPtqg==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-node-http@5.39.0': + resolution: {integrity: sha512-6beG+egPwXmvhAg+m0STCj+ZssDcjrLzf4L05aKm2nGglMXSSPz0cH/rM+kVD9krNfldiMctURd4wjojW1fV0w==} + engines: {node: '>= 14.0.0'} + '@antfu/eslint-config@5.4.1': resolution: {integrity: sha512-x7BiNkxJRlXXs8tIvg0CgMuNo5IZVWkGLMJotCtCtzWUHW78Pmm8PvtXhvLBbTc8683GGBK616MMztWLh4RNjA==} hasBin: true @@ -250,6 +336,29 @@ packages: '@clack/prompts@0.11.0': resolution: {integrity: sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==} + '@docsearch/css@3.8.2': + resolution: {integrity: sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==} + + '@docsearch/js@3.8.2': + resolution: {integrity: sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==} + + '@docsearch/react@3.8.2': + resolution: {integrity: sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==} + 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 + '@emnapi/core@1.5.0': resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} @@ -267,102 +376,204 @@ packages: resolution: {integrity: sha512-smMc5pDht/UVsCD3hhw/a/e/p8m0RdRYiluXToVfd+d4yaQQh7nn9bACjkk6nXJvat7EWPAxuFkMEFfrxeGa3Q==} engines: {node: '>=20.11.0'} + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + '@esbuild/aix-ppc64@0.25.0': resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm64@0.25.0': resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + '@esbuild/android-arm@0.25.0': resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + '@esbuild/android-x64@0.25.0': resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-arm64@0.25.0': resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + '@esbuild/darwin-x64@0.25.0': resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-arm64@0.25.0': resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + '@esbuild/freebsd-x64@0.25.0': resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm64@0.25.0': resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + '@esbuild/linux-arm@0.25.0': resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-ia32@0.25.0': resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.25.0': resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-mips64el@0.25.0': resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-ppc64@0.25.0': resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-riscv64@0.25.0': resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-s390x@0.25.0': resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + '@esbuild/linux-x64@0.25.0': resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==} engines: {node: '>=18'} @@ -375,6 +586,12 @@ packages: cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.0': resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==} engines: {node: '>=18'} @@ -387,30 +604,60 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.0': resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + '@esbuild/sunos-x64@0.25.0': resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-arm64@0.25.0': resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-ia32@0.25.0': resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@esbuild/win32-x64@0.25.0': resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==} engines: {node: '>=18'} @@ -494,6 +741,12 @@ packages: resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} engines: {node: '>=18.18'} + '@iconify-json/simple-icons@1.2.53': + resolution: {integrity: sha512-8GEW5mshsPAZpVAJmkBG/niR2qn8t4U03Wmz6aSD9R4VMZKTECqbOxH3z4inA0JfZOoTvP4qoK9T2VXAx2Xg5g==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -826,6 +1079,30 @@ packages: cpu: [x64] os: [win32] + '@shikijs/core@2.5.0': + resolution: {integrity: sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==} + + '@shikijs/engine-javascript@2.5.0': + resolution: {integrity: sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==} + + '@shikijs/engine-oniguruma@2.5.0': + resolution: {integrity: sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==} + + '@shikijs/langs@2.5.0': + resolution: {integrity: sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==} + + '@shikijs/themes@2.5.0': + resolution: {integrity: sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==} + + '@shikijs/transformers@2.5.0': + resolution: {integrity: sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==} + + '@shikijs/types@2.5.0': + resolution: {integrity: sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@stylistic/eslint-plugin@5.4.0': resolution: {integrity: sha512-UG8hdElzuBDzIbjG1QDwnYH0MQ73YLXDFHgZzB4Zh/YJfnw8XNsloVtytqzx0I2Qky9THSdpTmi8Vjn/pf/Lew==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -847,12 +1124,24 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + + '@types/markdown-it@14.1.2': + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} @@ -862,6 +1151,9 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/web-bluetooth@0.0.21': + resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + '@typescript-eslint/eslint-plugin@8.44.1': resolution: {integrity: sha512-molgphGqOBT7t4YKCSkbasmu1tb1MgrZ2szGzHbclF7PNmOkSTQVHy+2jXOSnxvR3+Xe1yySHFZoqMpz3TfQsw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -921,6 +1213,16 @@ packages: resolution: {integrity: sha512-576+u0QD+Jp3tZzvfRfxon0EA2lzcDt3lhUbsC6Lgzy9x2VR4E+JUiNyGHi5T8vk0TV+fpJ5GLG1JsJuWCaKhw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@vitejs/plugin-vue@5.2.4': + resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 + vue: ^3.2.25 + '@vitejs/plugin-vue@6.0.1': resolution: {integrity: sha512-+MaE752hU0wfPFJEUAIxqw18+20euHHdxVtMvbFcOEpjEyfqXH/5DCoTHiVJ0J29EhTJdoTkjEv5YBKU9dnoTw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -981,6 +1283,15 @@ packages: '@vue/compiler-ssr@3.5.22': resolution: {integrity: sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==} + '@vue/devtools-api@7.7.7': + resolution: {integrity: sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==} + + '@vue/devtools-kit@7.7.7': + resolution: {integrity: sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==} + + '@vue/devtools-shared@7.7.7': + resolution: {integrity: sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==} + '@vue/reactivity@3.5.22': resolution: {integrity: sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==} @@ -998,6 +1309,56 @@ packages: '@vue/shared@3.5.22': resolution: {integrity: sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==} + '@vueuse/core@12.8.2': + resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==} + + '@vueuse/integrations@12.8.2': + resolution: {integrity: sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==} + peerDependencies: + async-validator: ^4 + axios: ^1 + change-case: ^5 + drauu: ^0.4 + focus-trap: ^7 + fuse.js: ^7 + idb-keyval: ^6 + jwt-decode: ^4 + nprogress: ^0.2 + qrcode: ^1.5 + sortablejs: ^1 + universal-cookie: ^7 + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + + '@vueuse/metadata@12.8.2': + resolution: {integrity: sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==} + + '@vueuse/shared@12.8.2': + resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1011,6 +1372,10 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + algoliasearch@5.39.0: + resolution: {integrity: sha512-DzTfhUxzg9QBNGzU/0kZkxEV72TeA4MmPJ7RVfLnQwHNhhliPo7ynglEWJS791rNlLFoTyrKvkapwr/P3EXV9A==} + engines: {node: '>= 14.0.0'} + ansi-escapes@7.0.0: resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} engines: {node: '>=18'} @@ -1131,6 +1496,12 @@ packages: change-case@5.4.4: resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} @@ -1171,6 +1542,9 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@14.0.1: resolution: {integrity: sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A==} engines: {node: '>=20'} @@ -1192,6 +1566,10 @@ packages: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} + copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + core-js-compat@3.45.1: resolution: {integrity: sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==} @@ -1275,6 +1653,9 @@ packages: electron-to-chromium@1.5.222: resolution: {integrity: sha512-gA7psSwSwQRE60CEoLz6JBCQPIxNeuzB2nL8vE03GK/OHxlvykbLyeiumQy1iH5C2f3YbRAZpGCMT12a/9ih9w==} + emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -1300,6 +1681,11 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + esbuild@0.25.0: resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==} engines: {node: '>=18'} @@ -1587,6 +1973,9 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + focus-trap@7.6.5: + resolution: {integrity: sha512-7Ke1jyybbbPZyZXFxEftUtxFGLMpE2n6A+z//m4CRDlj0hW+o3iYSmh8nFlYMurOiJVDmJRilUQtJr08KfIxlg==} + format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} @@ -1646,9 +2035,18 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -1699,6 +2097,10 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} @@ -1867,6 +2269,9 @@ packages: magic-string@0.30.19: resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + mark.js@8.11.1: + resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} @@ -1900,6 +2305,9 @@ packages: mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-markdown@2.1.2: resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} @@ -2016,6 +2424,12 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + minisearch@7.2.0: + resolution: {integrity: sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + mlly@1.7.4: resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} @@ -2066,6 +2480,9 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} + oniguruma-to-es@3.1.1: + resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==} + open@10.2.0: resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} @@ -2123,6 +2540,9 @@ packages: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + perfect-debounce@2.0.0: resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==} @@ -2163,10 +2583,16 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + preact@10.27.2: + resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -2192,6 +2618,15 @@ packages: resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.0.1: + resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + regexp-ast-analysis@0.7.1: resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -2302,6 +2737,9 @@ packages: resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} engines: {node: ^14.0.0 || >=16.0.0} + search-insights@2.17.3: + resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} + semver@7.7.2: resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} @@ -2315,6 +2753,9 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + shiki@2.5.0: + resolution: {integrity: sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==} + siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -2345,6 +2786,9 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + spdx-exceptions@2.5.0: resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} @@ -2354,6 +2798,10 @@ packages: spdx-license-ids@3.0.21: resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -2372,6 +2820,9 @@ packages: resolution: {integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==} engines: {node: '>=20'} + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + strip-ansi@7.1.0: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} @@ -2387,6 +2838,10 @@ packages: strip-literal@3.0.0: resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + superjson@2.2.2: + resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} + engines: {node: '>=16'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -2395,6 +2850,9 @@ packages: resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} engines: {node: '>=12.20'} + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -2443,6 +2901,9 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + ts-api-utils@2.1.0: resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} @@ -2512,6 +2973,9 @@ packages: unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} @@ -2541,6 +3005,12 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + vite-dev-rpc@1.1.0: resolution: {integrity: sha512-pKXZlgoXGoE8sEKiKJSng4hI1sQ4wi5YT24FCrwrLt6opmkjlqPPVmiPWWJn8M8byMxRGzp1CrFuqQs4M/Z39A==} peerDependencies: @@ -2566,6 +3036,37 @@ packages: '@nuxt/kit': optional: true + vite@5.4.20: + resolution: {integrity: sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + vite@7.1.7: resolution: {integrity: sha512-VbA8ScMvAISJNJVbRDTJdCwqQoAareR/wutevKanhR2/1EkoXVZVkkORaYm/tNVCjP/UDTKtcw3bAkwOUdedmA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2606,6 +3107,18 @@ packages: yaml: optional: true + vitepress@1.6.4: + resolution: {integrity: sha512-+2ym1/+0VVrbhNyRoFFesVvBvHAVMZMK0rw60E3X/5349M1GuVdKeazuksqopEdvkKwKGs21Q729jX81/bkBJg==} + hasBin: true + peerDependencies: + markdown-it-mathjax3: ^4 + postcss: ^8 + peerDependenciesMeta: + markdown-it-mathjax3: + optional: true + postcss: + optional: true + vitest-package-exports@0.1.1: resolution: {integrity: sha512-rXgU5noxaaMA5VJXgVPhXRzPiQ1WFmWwgo8dQFPg9j/yFM028scO0IAylFHVI8XMRevhozEt1usa6RQYQY26lg==} @@ -2698,6 +3211,118 @@ packages: snapshots: + '@algolia/abtesting@1.5.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0) + search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0)': + dependencies: + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0) + '@algolia/client-search': 5.39.0 + algoliasearch: 5.39.0 + + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0)': + dependencies: + '@algolia/client-search': 5.39.0 + algoliasearch: 5.39.0 + + '@algolia/client-abtesting@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/client-analytics@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/client-common@5.39.0': {} + + '@algolia/client-insights@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/client-personalization@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/client-query-suggestions@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/client-search@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/ingestion@1.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/monitoring@1.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/recommend@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/requester-browser-xhr@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + + '@algolia/requester-fetch@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + + '@algolia/requester-node-http@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@antfu/eslint-config@5.4.1(@vue/compiler-sfc@3.5.22)(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.2)(jiti@2.6.0)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@antfu/install-pkg': 1.1.0 @@ -2789,6 +3414,30 @@ snapshots: picocolors: 1.1.1 sisteransi: 1.0.5 + '@docsearch/css@3.8.2': {} + + '@docsearch/js@3.8.2(@algolia/client-search@5.39.0)(search-insights@2.17.3)': + dependencies: + '@docsearch/react': 3.8.2(@algolia/client-search@5.39.0)(search-insights@2.17.3) + preact: 10.27.2 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - react + - react-dom + - search-insights + + '@docsearch/react@3.8.2(@algolia/client-search@5.39.0)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0) + '@docsearch/css': 3.8.2 + algoliasearch: 5.39.0 + optionalDependencies: + search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' + '@emnapi/core@1.5.0': dependencies: '@emnapi/wasi-threads': 1.1.0 @@ -2821,78 +3470,147 @@ snapshots: esquery: 1.6.0 jsdoc-type-pratt-parser: 5.4.0 + '@esbuild/aix-ppc64@0.21.5': + optional: true + '@esbuild/aix-ppc64@0.25.0': optional: true + '@esbuild/android-arm64@0.21.5': + optional: true + '@esbuild/android-arm64@0.25.0': optional: true + '@esbuild/android-arm@0.21.5': + optional: true + '@esbuild/android-arm@0.25.0': optional: true + '@esbuild/android-x64@0.21.5': + optional: true + '@esbuild/android-x64@0.25.0': optional: true + '@esbuild/darwin-arm64@0.21.5': + optional: true + '@esbuild/darwin-arm64@0.25.0': optional: true + '@esbuild/darwin-x64@0.21.5': + optional: true + '@esbuild/darwin-x64@0.25.0': optional: true + '@esbuild/freebsd-arm64@0.21.5': + optional: true + '@esbuild/freebsd-arm64@0.25.0': optional: true + '@esbuild/freebsd-x64@0.21.5': + optional: true + '@esbuild/freebsd-x64@0.25.0': optional: true + '@esbuild/linux-arm64@0.21.5': + optional: true + '@esbuild/linux-arm64@0.25.0': optional: true + '@esbuild/linux-arm@0.21.5': + optional: true + '@esbuild/linux-arm@0.25.0': optional: true + '@esbuild/linux-ia32@0.21.5': + optional: true + '@esbuild/linux-ia32@0.25.0': optional: true + '@esbuild/linux-loong64@0.21.5': + optional: true + '@esbuild/linux-loong64@0.25.0': optional: true + '@esbuild/linux-mips64el@0.21.5': + optional: true + '@esbuild/linux-mips64el@0.25.0': optional: true + '@esbuild/linux-ppc64@0.21.5': + optional: true + '@esbuild/linux-ppc64@0.25.0': optional: true + '@esbuild/linux-riscv64@0.21.5': + optional: true + '@esbuild/linux-riscv64@0.25.0': optional: true + '@esbuild/linux-s390x@0.21.5': + optional: true + '@esbuild/linux-s390x@0.25.0': optional: true + '@esbuild/linux-x64@0.21.5': + optional: true + '@esbuild/linux-x64@0.25.0': optional: true '@esbuild/netbsd-arm64@0.25.0': optional: true + '@esbuild/netbsd-x64@0.21.5': + optional: true + '@esbuild/netbsd-x64@0.25.0': optional: true '@esbuild/openbsd-arm64@0.25.0': optional: true + '@esbuild/openbsd-x64@0.21.5': + optional: true + '@esbuild/openbsd-x64@0.25.0': optional: true + '@esbuild/sunos-x64@0.21.5': + optional: true + '@esbuild/sunos-x64@0.25.0': optional: true + '@esbuild/win32-arm64@0.21.5': + optional: true + '@esbuild/win32-arm64@0.25.0': optional: true + '@esbuild/win32-ia32@0.21.5': + optional: true + '@esbuild/win32-ia32@0.25.0': optional: true + '@esbuild/win32-x64@0.21.5': + optional: true + '@esbuild/win32-x64@0.25.0': optional: true @@ -2977,6 +3695,12 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} + '@iconify-json/simple-icons@1.2.53': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -3186,6 +3910,46 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.0': optional: true + '@shikijs/core@2.5.0': + dependencies: + '@shikijs/engine-javascript': 2.5.0 + '@shikijs/engine-oniguruma': 2.5.0 + '@shikijs/types': 2.5.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@2.5.0': + dependencies: + '@shikijs/types': 2.5.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 3.1.1 + + '@shikijs/engine-oniguruma@2.5.0': + dependencies: + '@shikijs/types': 2.5.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@2.5.0': + dependencies: + '@shikijs/types': 2.5.0 + + '@shikijs/themes@2.5.0': + dependencies: + '@shikijs/types': 2.5.0 + + '@shikijs/transformers@2.5.0': + dependencies: + '@shikijs/core': 2.5.0 + '@shikijs/types': 2.5.0 + + '@shikijs/types@2.5.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + '@stylistic/eslint-plugin@5.4.0(eslint@9.36.0(jiti@2.6.0))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) @@ -3213,12 +3977,25 @@ snapshots: '@types/estree@1.0.8': {} + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + '@types/json-schema@7.0.15': {} + '@types/linkify-it@5.0.0': {} + + '@types/markdown-it@14.1.2': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 + '@types/mdurl@2.0.0': {} + '@types/ms@2.1.0': {} '@types/node@24.6.2': @@ -3227,6 +4004,8 @@ snapshots: '@types/unist@3.0.3': {} + '@types/web-bluetooth@0.0.21': {} + '@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -3320,6 +4099,13 @@ snapshots: '@typescript-eslint/types': 8.44.1 eslint-visitor-keys: 4.2.1 + '@ungap/structured-clone@1.3.0': {} + + '@vitejs/plugin-vue@5.2.4(vite@5.4.20(@types/node@24.6.2)(lightningcss@1.30.2))(vue@3.5.22(typescript@5.9.3))': + dependencies: + vite: 5.4.20(@types/node@24.6.2)(lightningcss@1.30.2) + vue: 3.5.22(typescript@5.9.3) + '@vitejs/plugin-vue@6.0.1(rolldown-vite@7.1.14(@types/node@24.6.2)(esbuild@0.25.0)(jiti@2.6.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.29 @@ -3409,6 +4195,24 @@ snapshots: '@vue/compiler-dom': 3.5.22 '@vue/shared': 3.5.22 + '@vue/devtools-api@7.7.7': + dependencies: + '@vue/devtools-kit': 7.7.7 + + '@vue/devtools-kit@7.7.7': + dependencies: + '@vue/devtools-shared': 7.7.7 + birpc: 2.5.0 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.2 + + '@vue/devtools-shared@7.7.7': + dependencies: + rfdc: 1.4.1 + '@vue/reactivity@3.5.22': dependencies: '@vue/shared': 3.5.22 @@ -3433,6 +4237,34 @@ snapshots: '@vue/shared@3.5.22': {} + '@vueuse/core@12.8.2(typescript@5.9.3)': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 12.8.2 + '@vueuse/shared': 12.8.2(typescript@5.9.3) + vue: 3.5.22(typescript@5.9.3) + transitivePeerDependencies: + - typescript + + '@vueuse/integrations@12.8.2(change-case@5.4.4)(focus-trap@7.6.5)(typescript@5.9.3)': + dependencies: + '@vueuse/core': 12.8.2(typescript@5.9.3) + '@vueuse/shared': 12.8.2(typescript@5.9.3) + vue: 3.5.22(typescript@5.9.3) + optionalDependencies: + change-case: 5.4.4 + focus-trap: 7.6.5 + transitivePeerDependencies: + - typescript + + '@vueuse/metadata@12.8.2': {} + + '@vueuse/shared@12.8.2(typescript@5.9.3)': + dependencies: + vue: 3.5.22(typescript@5.9.3) + transitivePeerDependencies: + - typescript + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -3446,6 +4278,23 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + algoliasearch@5.39.0: + dependencies: + '@algolia/abtesting': 1.5.0 + '@algolia/client-abtesting': 5.39.0 + '@algolia/client-analytics': 5.39.0 + '@algolia/client-common': 5.39.0 + '@algolia/client-insights': 5.39.0 + '@algolia/client-personalization': 5.39.0 + '@algolia/client-query-suggestions': 5.39.0 + '@algolia/client-search': 5.39.0 + '@algolia/ingestion': 1.39.0 + '@algolia/monitoring': 1.39.0 + '@algolia/recommend': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + ansi-escapes@7.0.0: dependencies: environment: 1.1.0 @@ -3568,6 +4417,10 @@ snapshots: change-case@5.4.4: {} + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + character-entities@2.0.2: {} check-error@2.1.1: {} @@ -3603,6 +4456,8 @@ snapshots: colorette@2.0.20: {} + comma-separated-tokens@2.0.3: {} + commander@14.0.1: {} comment-parser@1.4.1: {} @@ -3615,6 +4470,10 @@ snapshots: consola@3.4.2: {} + copy-anything@3.0.5: + dependencies: + is-what: 4.1.16 + core-js-compat@3.45.1: dependencies: browserslist: 4.26.2 @@ -3670,6 +4529,8 @@ snapshots: electron-to-chromium@1.5.222: {} + emoji-regex-xs@1.0.0: {} + emoji-regex@10.4.0: {} empathic@2.0.0: {} @@ -3687,6 +4548,32 @@ snapshots: es-module-lexer@1.7.0: {} + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + esbuild@0.25.0: optionalDependencies: '@esbuild/aix-ppc64': 0.25.0 @@ -4060,6 +4947,10 @@ snapshots: flatted@3.3.3: {} + focus-trap@7.6.5: + dependencies: + tabbable: 6.2.0 + format@0.2.2: {} fsevents@2.3.3: @@ -4106,8 +4997,28 @@ snapshots: has-flag@4.0.0: {} + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + hookable@5.5.3: {} + html-void-elements@3.0.0: {} + ignore@5.3.2: {} ignore@7.0.5: {} @@ -4143,6 +5054,8 @@ snapshots: is-number@7.0.0: {} + is-what@4.1.16: {} + is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 @@ -4297,6 +5210,8 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + mark.js@8.11.1: {} + markdown-table@3.0.4: {} mdast-util-find-and-replace@3.0.2: @@ -4396,6 +5311,18 @@ snapshots: '@types/mdast': 4.0.4 unist-util-is: 6.0.0 + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + mdast-util-to-markdown@2.1.2: dependencies: '@types/mdast': 4.0.4 @@ -4629,6 +5556,10 @@ snapshots: dependencies: brace-expansion: 2.0.1 + minisearch@7.2.0: {} + + mitt@3.0.1: {} + mlly@1.7.4: dependencies: acorn: 8.15.0 @@ -4674,6 +5605,12 @@ snapshots: dependencies: mimic-function: 5.0.1 + oniguruma-to-es@3.1.1: + dependencies: + emoji-regex-xs: 1.0.0 + regex: 6.0.1 + regex-recursion: 6.0.2 + open@10.2.0: dependencies: default-browser: 5.2.1 @@ -4745,6 +5682,8 @@ snapshots: pathval@2.0.0: {} + perfect-debounce@1.0.0: {} + perfect-debounce@2.0.0: {} picocolors@1.1.1: {} @@ -4784,8 +5723,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + preact@10.27.2: {} + prelude-ls@1.2.1: {} + property-information@7.1.0: {} + punycode@2.3.1: {} quansync@0.2.11: {} @@ -4811,6 +5754,16 @@ snapshots: dependencies: '@eslint-community/regexpp': 4.12.1 + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.0.1: + dependencies: + regex-utilities: 2.3.0 + regexp-ast-analysis@0.7.1: dependencies: '@eslint-community/regexpp': 4.12.1 @@ -4931,6 +5884,8 @@ snapshots: refa: 0.12.1 regexp-ast-analysis: 0.7.1 + search-insights@2.17.3: {} + semver@7.7.2: {} shebang-command@2.0.0: @@ -4939,6 +5894,17 @@ snapshots: shebang-regex@3.0.0: {} + shiki@2.5.0: + dependencies: + '@shikijs/core': 2.5.0 + '@shikijs/engine-javascript': 2.5.0 + '@shikijs/engine-oniguruma': 2.5.0 + '@shikijs/langs': 2.5.0 + '@shikijs/themes': 2.5.0 + '@shikijs/types': 2.5.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + siginfo@2.0.0: {} signal-exit@4.1.0: {} @@ -4962,6 +5928,8 @@ snapshots: source-map@0.6.1: {} + space-separated-tokens@2.0.2: {} + spdx-exceptions@2.5.0: {} spdx-expression-parse@4.0.0: @@ -4971,6 +5939,8 @@ snapshots: spdx-license-ids@3.0.21: {} + speakingurl@14.0.1: {} + stackback@0.0.2: {} std-env@3.9.0: {} @@ -4988,6 +5958,11 @@ snapshots: get-east-asian-width: 1.3.0 strip-ansi: 7.1.0 + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + strip-ansi@7.1.0: dependencies: ansi-regex: 6.1.0 @@ -5002,6 +5977,10 @@ snapshots: dependencies: js-tokens: 9.0.1 + superjson@2.2.2: + dependencies: + copy-anything: 3.0.5 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -5010,6 +5989,8 @@ snapshots: dependencies: tslib: 2.8.1 + tabbable@6.2.0: {} + tapable@2.2.1: {} tiny-invariant@1.3.3: {} @@ -5043,6 +6024,8 @@ snapshots: tree-kill@1.2.2: {} + trim-lines@3.0.1: {} + ts-api-utils@2.1.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -5111,6 +6094,10 @@ snapshots: dependencies: '@types/unist': 3.0.3 + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.3 @@ -5150,6 +6137,16 @@ snapshots: util-deprecate@1.0.2: {} + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + vite-dev-rpc@1.1.0(rolldown-vite@7.1.14(@types/node@24.6.2)(esbuild@0.25.0)(jiti@2.6.0)(tsx@4.20.6)(yaml@2.8.1)): dependencies: birpc: 2.5.0 @@ -5196,6 +6193,16 @@ snapshots: transitivePeerDependencies: - supports-color + vite@5.4.20(@types/node@24.6.2)(lightningcss@1.30.2): + dependencies: + esbuild: 0.21.5 + postcss: 8.5.6 + rollup: 4.52.0 + optionalDependencies: + '@types/node': 24.6.2 + fsevents: 2.3.3 + lightningcss: 1.30.2 + vite@7.1.7(@types/node@24.6.2)(jiti@2.6.0)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.0 @@ -5212,6 +6219,55 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 + vitepress@1.6.4(@algolia/client-search@5.39.0)(@types/node@24.6.2)(change-case@5.4.4)(lightningcss@1.30.2)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.3): + dependencies: + '@docsearch/css': 3.8.2 + '@docsearch/js': 3.8.2(@algolia/client-search@5.39.0)(search-insights@2.17.3) + '@iconify-json/simple-icons': 1.2.53 + '@shikijs/core': 2.5.0 + '@shikijs/transformers': 2.5.0 + '@shikijs/types': 2.5.0 + '@types/markdown-it': 14.1.2 + '@vitejs/plugin-vue': 5.2.4(vite@5.4.20(@types/node@24.6.2)(lightningcss@1.30.2))(vue@3.5.22(typescript@5.9.3)) + '@vue/devtools-api': 7.7.7 + '@vue/shared': 3.5.22 + '@vueuse/core': 12.8.2(typescript@5.9.3) + '@vueuse/integrations': 12.8.2(change-case@5.4.4)(focus-trap@7.6.5)(typescript@5.9.3) + focus-trap: 7.6.5 + mark.js: 8.11.1 + minisearch: 7.2.0 + shiki: 2.5.0 + vite: 5.4.20(@types/node@24.6.2)(lightningcss@1.30.2) + vue: 3.5.22(typescript@5.9.3) + optionalDependencies: + postcss: 8.5.6 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - less + - lightningcss + - nprogress + - qrcode + - react + - react-dom + - sass + - sass-embedded + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + vitest-package-exports@0.1.1: dependencies: find-up-simple: 1.0.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index fbc1d96..f200ed2 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -22,6 +22,8 @@ catalogs: tsdown: ^0.15.6 tsx: ^4.20.6 typescript: ^5.9.3 + docs: + vitepress: ^1.6.4 testing: tinyexec: ^1.0.1 vitest: ^3.2.4 From 9956ed64100a69c5331dca76b555eaf0c1c7699a Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Sat, 4 Oct 2025 12:51:09 +0800 Subject: [PATCH 03/25] wip: --- .gitignore | 2 +- README.md | 5 +-- package.json | 1 + packages/docs/.vitepress/config.ts | 40 +++++++++++++++++++ packages/docs/src/advenced/api-reference.md | 0 .../docs/src/advenced/linter-formatter.md | 0 packages/docs/src/advenced/typescript.md | 0 packages/docs/{ => src}/api-examples.md | 0 packages/docs/src/extra/contribute.md | 2 + packages/docs/src/extra/design-philosophy.md | 0 packages/docs/src/guide/flexibility.md | 0 packages/docs/src/guide/introduction.md | 0 packages/docs/src/guide/quick-start.md | 0 packages/docs/{ => src}/index.md | 0 packages/docs/{ => src}/markdown-examples.md | 0 15 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 packages/docs/.vitepress/config.ts create mode 100644 packages/docs/src/advenced/api-reference.md create mode 100644 packages/docs/src/advenced/linter-formatter.md create mode 100644 packages/docs/src/advenced/typescript.md rename packages/docs/{ => src}/api-examples.md (100%) create mode 100644 packages/docs/src/extra/contribute.md create mode 100644 packages/docs/src/extra/design-philosophy.md create mode 100644 packages/docs/src/guide/flexibility.md create mode 100644 packages/docs/src/guide/introduction.md create mode 100644 packages/docs/src/guide/quick-start.md rename packages/docs/{ => src}/index.md (100%) rename packages/docs/{ => src}/markdown-examples.md (100%) diff --git a/.gitignore b/.gitignore index 74c02cd..cad057f 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,4 @@ lib-cov logs node_modules temp -packages/docs/.vitepress +packages/docs/.vitepress/cache diff --git a/README.md b/README.md index 8995a51..7c69e47 100644 --- a/README.md +++ b/README.md @@ -16,10 +16,7 @@ Learn more at [vue-note.liangmi.dev](https://vue-note.liangmi.dev/)! ## Contribute Guide -We're so excited that you are willing to help improve Vue Note, before starting your contribution, please take a moment to read the following tips - -- It's best to submitting an [issue](./issues/new) for discussion if you want to make a new feature. -- If you encounter any issues during development or contributing, please check the [Design Philosophy]() documentation first. You can also reach me directly at hi@liangmi.dev. +We're so excited that you are willing to help improve Vue Note, before starting your contribution, please take a moment to read the [Contribute Guide](https://vue-note.liangmi.dev/extra/contribute) ## License diff --git a/package.json b/package.json index 4b34bef..1c0bc34 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "play": "pnpm -C playground dev", "lint": "eslint", "docs": "pnpm -r --filter vue-note-docs docs:dev", + "docs:build": "pnpm -r --filter vue-note-docs docs:build", "prepublishOnly": "nr build", "release": "bumpp -r", "test": "vitest", diff --git a/packages/docs/.vitepress/config.ts b/packages/docs/.vitepress/config.ts new file mode 100644 index 0000000..e80ed35 --- /dev/null +++ b/packages/docs/.vitepress/config.ts @@ -0,0 +1,40 @@ +import { defineConfig } from 'vitepress' + +export default defineConfig({ + title: 'Vue Note', + description: 'Write Vue template in code comment', + srcDir: './src', + themeConfig: { + nav: [], + sidebar: { + '/': [ + { text: 'Guide', items: [ + { text: 'Introduction', link: '/guide/introduction' }, + { text: 'Quick Start', link: '/guide/quick-start' }, + { text: 'Flexibility', link: '/guide/flexibility' }, + ] }, + { text: 'Advenced', items: [ + { text: 'Linter & Formatter', link: '/advenced/linter-formatter' }, + { text: 'TypeScript', link: '/advenced/typescript' }, + { text: 'API Reference', link: '/advenced/api-reference' }, + + ] }, + { text: 'Extra Topic', items: [ + { text: 'Design Philosophy', link: '/extra/design-philosophy' }, + { text: 'Contribute Guide', link: '/extra/contribute' }, + ] }, + ], + }, + socialLinks: [ + { icon: 'github', link: 'https://github.com/liangmiQwQ/vue-note' }, + ], + editLink: { + pattern: 'https://github.com/liangmiQwQ/vue-note/edit/main/packages/docs/src/:path', + text: 'Suggest changes to this page', + }, + footer: { + message: 'Released under the MIT License.', + copyright: 'Copyright 2025 - Present Liang Mi', + }, + }, +}) diff --git a/packages/docs/src/advenced/api-reference.md b/packages/docs/src/advenced/api-reference.md new file mode 100644 index 0000000..e69de29 diff --git a/packages/docs/src/advenced/linter-formatter.md b/packages/docs/src/advenced/linter-formatter.md new file mode 100644 index 0000000..e69de29 diff --git a/packages/docs/src/advenced/typescript.md b/packages/docs/src/advenced/typescript.md new file mode 100644 index 0000000..e69de29 diff --git a/packages/docs/api-examples.md b/packages/docs/src/api-examples.md similarity index 100% rename from packages/docs/api-examples.md rename to packages/docs/src/api-examples.md diff --git a/packages/docs/src/extra/contribute.md b/packages/docs/src/extra/contribute.md new file mode 100644 index 0000000..d8e91a6 --- /dev/null +++ b/packages/docs/src/extra/contribute.md @@ -0,0 +1,2 @@ +- It's best to submitting an [issue](./issues/new) for discussion if you want to make a new feature. +- If you encounter any issues during development or contributing, please check the [Design Philosophy](https://vue-note.liangmi.dev/extra/contribute) documentation first. You can also reach me directly at hi@liangmi.dev. diff --git a/packages/docs/src/extra/design-philosophy.md b/packages/docs/src/extra/design-philosophy.md new file mode 100644 index 0000000..e69de29 diff --git a/packages/docs/src/guide/flexibility.md b/packages/docs/src/guide/flexibility.md new file mode 100644 index 0000000..e69de29 diff --git a/packages/docs/src/guide/introduction.md b/packages/docs/src/guide/introduction.md new file mode 100644 index 0000000..e69de29 diff --git a/packages/docs/src/guide/quick-start.md b/packages/docs/src/guide/quick-start.md new file mode 100644 index 0000000..e69de29 diff --git a/packages/docs/index.md b/packages/docs/src/index.md similarity index 100% rename from packages/docs/index.md rename to packages/docs/src/index.md diff --git a/packages/docs/markdown-examples.md b/packages/docs/src/markdown-examples.md similarity index 100% rename from packages/docs/markdown-examples.md rename to packages/docs/src/markdown-examples.md From 595ee3caac2f3470d6e67c3ee9ddaf86dbd5163d Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Sat, 4 Oct 2025 13:17:15 +0800 Subject: [PATCH 04/25] wip: --- packages/docs/.vitepress/config.ts | 43 +++++++++++-------- packages/docs/.vitepress/theme/custom.css | 4 ++ packages/docs/.vitepress/theme/index.ts | 4 ++ packages/docs/src/{api-examples.md => d.md} | 0 .../docs/src/{markdown-examples.md => do.md} | 0 packages/docs/src/index.md | 4 +- 6 files changed, 34 insertions(+), 21 deletions(-) create mode 100644 packages/docs/.vitepress/theme/custom.css create mode 100644 packages/docs/.vitepress/theme/index.ts rename packages/docs/src/{api-examples.md => d.md} (100%) rename packages/docs/src/{markdown-examples.md => do.md} (100%) diff --git a/packages/docs/.vitepress/config.ts b/packages/docs/.vitepress/config.ts index e80ed35..9b797a5 100644 --- a/packages/docs/.vitepress/config.ts +++ b/packages/docs/.vitepress/config.ts @@ -1,29 +1,34 @@ import { defineConfig } from 'vitepress' +const SidebarNav = [ + { text: 'Guide', items: [ + { text: 'Introduction', link: '/guide/introduction' }, + { text: 'Quick Start', link: '/guide/quick-start' }, + { text: 'Flexibility', link: '/guide/flexibility' }, + ] }, + { text: 'Advenced', items: [ + { text: 'Linter & Formatter', link: '/advenced/linter-formatter' }, + { text: 'TypeScript', link: '/advenced/typescript' }, + { text: 'API Reference', link: '/advenced/api-reference' }, + + ] }, + { text: 'Extra Topic', items: [ + { text: 'Design Philosophy', link: '/extra/design-philosophy' }, + { text: 'Contribute Guide', link: '/extra/contribute' }, + ] }, +] + export default defineConfig({ title: 'Vue Note', - description: 'Write Vue template in code comment', + description: 'Write Vue template in code comment?', srcDir: './src', themeConfig: { - nav: [], + nav: SidebarNav, + search: { + provider: 'local', + }, sidebar: { - '/': [ - { text: 'Guide', items: [ - { text: 'Introduction', link: '/guide/introduction' }, - { text: 'Quick Start', link: '/guide/quick-start' }, - { text: 'Flexibility', link: '/guide/flexibility' }, - ] }, - { text: 'Advenced', items: [ - { text: 'Linter & Formatter', link: '/advenced/linter-formatter' }, - { text: 'TypeScript', link: '/advenced/typescript' }, - { text: 'API Reference', link: '/advenced/api-reference' }, - - ] }, - { text: 'Extra Topic', items: [ - { text: 'Design Philosophy', link: '/extra/design-philosophy' }, - { text: 'Contribute Guide', link: '/extra/contribute' }, - ] }, - ], + '/': SidebarNav, }, socialLinks: [ { icon: 'github', link: 'https://github.com/liangmiQwQ/vue-note' }, diff --git a/packages/docs/.vitepress/theme/custom.css b/packages/docs/.vitepress/theme/custom.css new file mode 100644 index 0000000..1e16261 --- /dev/null +++ b/packages/docs/.vitepress/theme/custom.css @@ -0,0 +1,4 @@ +:root { + --vp-c-brand-1: #5eff89ff; + --vp-c-brand-2: #c5ff74ff; +} diff --git a/packages/docs/.vitepress/theme/index.ts b/packages/docs/.vitepress/theme/index.ts new file mode 100644 index 0000000..42fe9a9 --- /dev/null +++ b/packages/docs/.vitepress/theme/index.ts @@ -0,0 +1,4 @@ +import DefaultTheme from 'vitepress/theme' +import './custom.css' + +export default DefaultTheme diff --git a/packages/docs/src/api-examples.md b/packages/docs/src/d.md similarity index 100% rename from packages/docs/src/api-examples.md rename to packages/docs/src/d.md diff --git a/packages/docs/src/markdown-examples.md b/packages/docs/src/do.md similarity index 100% rename from packages/docs/src/markdown-examples.md rename to packages/docs/src/do.md diff --git a/packages/docs/src/index.md b/packages/docs/src/index.md index 8e09315..1fe5b63 100644 --- a/packages/docs/src/index.md +++ b/packages/docs/src/index.md @@ -4,8 +4,8 @@ layout: home hero: name: "Vue Note" - text: "Write Vue template in code comment? What?!" - tagline: My great project tagline + text: "Write Vue template in code comment?" + tagline: A easier and more flexible way to write Vue actions: - theme: brand text: Markdown Examples From aa206441256227e53bb441b945b6bc81d964664c Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Sat, 4 Oct 2025 14:02:04 +0800 Subject: [PATCH 05/25] wip: --- packages/docs/.vitepress/theme/custom.css | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/docs/.vitepress/theme/custom.css b/packages/docs/.vitepress/theme/custom.css index 1e16261..093c1f8 100644 --- a/packages/docs/.vitepress/theme/custom.css +++ b/packages/docs/.vitepress/theme/custom.css @@ -1,4 +1,12 @@ :root { - --vp-c-brand-1: #5eff89ff; - --vp-c-brand-2: #c5ff74ff; + --vp-home-hero-name-color: transparent; + --vp-c-brand-1: #4ab940ff; + --vp-c-brand-2: #36982dff; + --vp-c-brand-3: #267d1eff; + --vp-home-hero-name-background: linear-gradient( + 170deg, + var(--vp-c-brand-1) 40%, + var(--vp-c-brand-2) 60% + ); } + From 68632e0bba2109539c5163fdfbb8dfde95fef2a9 Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Sat, 4 Oct 2025 14:26:43 +0800 Subject: [PATCH 06/25] wip: --- packages/docs/.vitepress/config.ts | 6 + packages/docs/.vitepress/theme/custom.css | 10 +- packages/docs/.vitepress/theme/index.ts | 1 + packages/docs/package.json | 2 + packages/docs/src/index.md | 8 +- packages/docs/uno.config.ts | 12 + pnpm-lock.yaml | 469 ++++++++++++++++++++++ pnpm-workspace.yaml | 2 + tsdown.config.ts | 2 +- 9 files changed, 502 insertions(+), 10 deletions(-) create mode 100644 packages/docs/uno.config.ts diff --git a/packages/docs/.vitepress/config.ts b/packages/docs/.vitepress/config.ts index 9b797a5..2387676 100644 --- a/packages/docs/.vitepress/config.ts +++ b/packages/docs/.vitepress/config.ts @@ -1,3 +1,4 @@ +import UnoCSS from 'unocss/vite' import { defineConfig } from 'vitepress' const SidebarNav = [ @@ -42,4 +43,9 @@ export default defineConfig({ copyright: 'Copyright 2025 - Present Liang Mi', }, }, + vite: { + plugins: [ + UnoCSS(), + ], + }, }) diff --git a/packages/docs/.vitepress/theme/custom.css b/packages/docs/.vitepress/theme/custom.css index 093c1f8..d87cef4 100644 --- a/packages/docs/.vitepress/theme/custom.css +++ b/packages/docs/.vitepress/theme/custom.css @@ -1,12 +1,12 @@ :root { --vp-home-hero-name-color: transparent; - --vp-c-brand-1: #4ab940ff; - --vp-c-brand-2: #36982dff; - --vp-c-brand-3: #267d1eff; + --vp-c-brand-1: hsla(120, 60%, 40%); + --vp-c-brand-2: hsl(120, 50%, 50%); + --vp-c-brand-3: hsl(120, 60%, 42%); --vp-home-hero-name-background: linear-gradient( 170deg, - var(--vp-c-brand-1) 40%, - var(--vp-c-brand-2) 60% + var(--vp-c-brand-2) 40%, + var(--vp-c-brand-3) 60% ); } diff --git a/packages/docs/.vitepress/theme/index.ts b/packages/docs/.vitepress/theme/index.ts index 42fe9a9..17622a8 100644 --- a/packages/docs/.vitepress/theme/index.ts +++ b/packages/docs/.vitepress/theme/index.ts @@ -1,4 +1,5 @@ import DefaultTheme from 'vitepress/theme' import './custom.css' +import 'uno.css' export default DefaultTheme diff --git a/packages/docs/package.json b/packages/docs/package.json index 41851b4..6248273 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -11,6 +11,8 @@ "docs:preview": "vitepress preview" }, "devDependencies": { + "@iconify-json/logos": "catalog:docs", + "unocss": "catalog:docs", "vitepress": "catalog:docs" } } diff --git a/packages/docs/src/index.md b/packages/docs/src/index.md index 1fe5b63..72cd7af 100644 --- a/packages/docs/src/index.md +++ b/packages/docs/src/index.md @@ -8,11 +8,11 @@ hero: tagline: A easier and more flexible way to write Vue actions: - theme: brand - text: Markdown Examples - link: /markdown-examples + text: Quick Start + link: /guide/quick-start - theme: alt - text: API Examples - link: /api-examples + text: Why Vue Note + link: /guide/introduction features: - title: Feature A diff --git a/packages/docs/uno.config.ts b/packages/docs/uno.config.ts new file mode 100644 index 0000000..d8165bb --- /dev/null +++ b/packages/docs/uno.config.ts @@ -0,0 +1,12 @@ +import { defineConfig, presetAttributify, presetIcons, presetWind4, transformerDirectives } from 'unocss' + +export default defineConfig({ + presets: [ + presetWind4(), + presetIcons(), + presetAttributify(), + ], + transformers: [ + transformerDirectives(), + ], +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0561afe..bd9ce1f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -44,6 +44,12 @@ catalogs: specifier: ^5.9.3 version: 5.9.3 docs: + '@iconify-json/logos': + specifier: ^1.2.9 + version: 1.2.9 + unocss: + specifier: ^66.5.2 + version: 66.5.2 vitepress: specifier: ^1.6.4 version: 1.6.4 @@ -128,6 +134,12 @@ importers: packages/docs: devDependencies: + '@iconify-json/logos': + specifier: catalog:docs + version: 1.2.9 + unocss: + specifier: catalog:docs + version: 66.5.2(postcss@8.5.6)(vite@7.1.7(@types/node@24.6.2)(jiti@2.6.0)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1)) vitepress: specifier: catalog:docs version: 1.6.4(@algolia/client-search@5.39.0)(@types/node@24.6.2)(change-case@5.4.4)(lightningcss@1.30.2)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.3) @@ -309,6 +321,13 @@ packages: engines: {node: '>=20'} hasBin: true + '@antfu/utils@9.2.1': + resolution: {integrity: sha512-TMilPqXyii1AsiEii6l6ubRzbo76p6oshUSYPaKsmXDavyMLqjzVDkcp3pHp5ELMUNJHATcEOGxKTTsX9yYhGg==} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.28.3': resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} engines: {node: '>=6.9.0'} @@ -321,11 +340,24 @@ packages: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} + '@babel/parser@7.27.7': + resolution: {integrity: sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/parser@7.28.4': resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.7': + resolution: {integrity: sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==} + engines: {node: '>=6.9.0'} + '@babel/types@7.28.4': resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} @@ -741,12 +773,18 @@ packages: resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} engines: {node: '>=18.18'} + '@iconify-json/logos@1.2.9': + resolution: {integrity: sha512-G6VCdFnwZcrT6Eveq3m43oJfLw/CX8plwFcE+2jgv3fiGB64pTmnU7Yd1MNZ/eA+/Re2iEDhuCfSNOWTHwwK8w==} + '@iconify-json/simple-icons@1.2.53': resolution: {integrity: sha512-8GEW5mshsPAZpVAJmkBG/niR2qn8t4U03Wmz6aSD9R4VMZKTECqbOxH3z4inA0JfZOoTvP4qoK9T2VXAx2Xg5g==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + '@iconify/utils@3.0.2': + resolution: {integrity: sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1216,6 +1254,92 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@unocss/astro@66.5.2': + resolution: {integrity: sha512-JUiJL4wkDTCFgReQ+c1Nqb47EfryJvGiSp9MxXclCUbp5hegqq7yMg3BMpJ4QzHmf5EeDFO38eRBKV57hd0Iew==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 + peerDependenciesMeta: + vite: + optional: true + + '@unocss/cli@66.5.2': + resolution: {integrity: sha512-WFj3fd5LqPX2/NvG/kX4vxML14F5yU6e0yPezO+7fjrJ9V31m1AFQWfiT2p8HbNUcQd9jZ9lcoWLm3Q1FsdPDA==} + engines: {node: '>=14'} + hasBin: true + + '@unocss/config@66.5.2': + resolution: {integrity: sha512-rREBBt2a6aZJ21TCeKG3/wjHfTNPbIwdrJtIVrN7hLcljW2vnWuyYabZ1yASK8+lnNsMoBoU5mbakgrPF0MItA==} + engines: {node: '>=14'} + + '@unocss/core@66.5.2': + resolution: {integrity: sha512-POSEpwj2FJtrDgzSq6nVhAJbnGIYPqtEMTpzQXfeFqPDMidAXjaH/xZUeTdHDbI9Jg700smrRXJtFJrJFXkmiQ==} + + '@unocss/extractor-arbitrary-variants@66.5.2': + resolution: {integrity: sha512-MNHzhA4RKJJVo6D5Uc+SkPfeugO1KXDt0GFg0FkOUKTTnahxyXNvd9BG9HHYlKSiaYCgUhFmysNhv04Gza+CNg==} + + '@unocss/inspector@66.5.2': + resolution: {integrity: sha512-8PuM01lrsOuyas3K+5LqeoeiujIGk72ivvJsP4/T8h03XQWzpS7NPJU6JVJQUcYZAE+WtqFcPJ8wcg0ERKNPdA==} + + '@unocss/postcss@66.5.2': + resolution: {integrity: sha512-tZrWVcGm1cJghYqRFgiCb/HCnWehdJ3/6lUlXN5Ogfu4agCa3f8QES43+6TMpuTKdqkjXvMI3jZFKNMgN+/wlg==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + + '@unocss/preset-attributify@66.5.2': + resolution: {integrity: sha512-/FigYbT1uA5DLy5dVV2QuTizvSge8jZZZu3uGAu25p59m/h/6ZjvkCoiKcTkvmNUuZfj/ZPZmAE8GoSn1uR++A==} + + '@unocss/preset-icons@66.5.2': + resolution: {integrity: sha512-vjSwttkZrU8FfIo4TCkSOAIba0xbWE6N3/xEdK3tjq+FSgClzs9SmO06KLJHSntJ/N5JYA0wpkPS5mLYxGMwqw==} + + '@unocss/preset-mini@66.5.2': + resolution: {integrity: sha512-YLOuYq7GNoWNgF3P41AtcvnOodSP49x0RNM4PR/ntGddl0BfsFaKeCGzt8DpbvavhQpBn0+kt4GP3RajKooAIQ==} + + '@unocss/preset-tagify@66.5.2': + resolution: {integrity: sha512-6AusDr1rD+HK22F4kwPLWqOImV3W+0nyPMsUwLVHQeaZktpSFSqaIQCI6aIVWyftvW/paST1Xc4HEHb7rKBF/w==} + + '@unocss/preset-typography@66.5.2': + resolution: {integrity: sha512-Ez3VWrNlJVa9cywsI/IwUdZ4OUeeUvf04pZmf+bwSU3CHqfonRT8K3+ndHQfuTJYbIb1k3few+cc1P1W7NP7Xw==} + + '@unocss/preset-uno@66.5.2': + resolution: {integrity: sha512-+raFp6uRwvQVIS7y8JoQI+5PPodl+uNsHxL9uH/JkelB5++ACrcP/ShN8RrDD97K+wtSP+3kr9SsK6dk0f2Mpg==} + + '@unocss/preset-web-fonts@66.5.2': + resolution: {integrity: sha512-xMFUE8Bhe2X/VlUBtdXTnDrrZL+WE99RaiBNLS1F1Na5r4Fc5Ck0p8a+SnMB7GDx5gtwf1ekKwi0pAP8+vIJnQ==} + + '@unocss/preset-wind3@66.5.2': + resolution: {integrity: sha512-qgzLiPd6CkepLLssBod7ejQ4sKKqAvCOyjqpp0eFmHVUKGBEGPzOI1/WnbrAzvTHDonbSc52kB/XEWlgWmDhhA==} + + '@unocss/preset-wind4@66.5.2': + resolution: {integrity: sha512-493Vb1do+05+3tdE0kU+SUKAPG9Spd+hItKfc09OL276T1DMj7AZzIq5q+rj9e+bOAjWAAutjw94RPNjKlU3fA==} + + '@unocss/preset-wind@66.5.2': + resolution: {integrity: sha512-jJN7kLXNAn/6VpYWTrIJGsXAhziPlPhK7bdnilbVnrlTSOluG6peCE6gdUyjdlLDyYELzz8qZ7ZvOo77IsBkPQ==} + + '@unocss/reset@66.5.2': + resolution: {integrity: sha512-DirXdqrkSp3fThRGOz0s0ehsYBpLb72Vh4QlPfMFuwHHFC9P9IDTLMUj5kD51A9fdy07Wrmhs7T5CQ//DlfOdQ==} + + '@unocss/rule-utils@66.5.2': + resolution: {integrity: sha512-2eR5TBTO+cmPY9ahFjyEu8qP/NFPI02dVpI0rgGKdyDMv/PnO9+yS/9rKgrmXsN3nPYHjOrLutRXkF/xxm/t3w==} + engines: {node: '>=14'} + + '@unocss/transformer-attributify-jsx@66.5.2': + resolution: {integrity: sha512-mTa+fMKVz96He21E6FYCJyd0QbL6Xr5JjdqZEEFZiwt9N884g89pHZOlEURmrkQBrWc5NwSfzNB7lCkhuUOIFQ==} + + '@unocss/transformer-compile-class@66.5.2': + resolution: {integrity: sha512-50UTeKH6zycAzF44+6eCW13uPy5bw3W3Z8miEAIj0cNaKHTul0QYQFhLT3R804cnkAdX/Cp6IE/HSivxeP5ueQ==} + + '@unocss/transformer-directives@66.5.2': + resolution: {integrity: sha512-hwbAdV1Vr001ojaXR8rVt4jJvPnrAjl9h2SQWjaqyGkLntnKvFB8JSTS9CT0cyv1GrwiBAwdnVIdioLAQ3GPbg==} + + '@unocss/transformer-variant-group@66.5.2': + resolution: {integrity: sha512-ZgH4hgoIbbh92pszsT2M93e/DcEmN+s9yjYPPCa0qxvTQb6aANM02Z6T7OE0ltQ0NShELfIS4oSGUKY6ezHwug==} + + '@unocss/vite@66.5.2': + resolution: {integrity: sha512-0OcvZHV7ag8ml9z1pG0T92b81CP8nOv21o9vZnQUJN4Uw+8fnVA9xCh1X68IfDNr5Q8nS5zz/Fjr/pC89Cb+og==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 + '@vitejs/plugin-vue@5.2.4': resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -1400,6 +1524,10 @@ packages: resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} engines: {node: '>=14'} + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + are-docs-informative@0.0.2: resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} engines: {node: '>=14'} @@ -1429,6 +1557,10 @@ packages: resolution: {integrity: sha512-wrH5NNqren/QMtKUEEJf7z86YjfqW/2uw3IL3/xpqZUC95SSVIFXYQeeGjL6FT/X68IROu6RMehZQS5foy2BXw==} hasBin: true + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + birpc@2.5.0: resolution: {integrity: sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==} @@ -1509,6 +1641,10 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} @@ -1577,6 +1713,10 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -1650,6 +1790,9 @@ packages: oxc-resolver: optional: true + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + electron-to-chromium@1.5.222: resolution: {integrity: sha512-gA7psSwSwQRE60CEoLz6JBCQPIxNeuzB2nL8vE03GK/OHxlvykbLyeiumQy1iH5C2f3YbRAZpGCMT12a/9ih9w==} @@ -2010,6 +2153,10 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -2031,6 +2178,10 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -2067,6 +2218,10 @@ packages: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + is-builtin-module@5.0.0: resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} engines: {node: '>=18.20'} @@ -2112,6 +2267,9 @@ packages: resolution: {integrity: sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==} hasBin: true + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} @@ -2156,6 +2314,9 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -2314,6 +2475,9 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -2462,6 +2626,10 @@ packages: node-releases@2.0.21: resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -2473,6 +2641,9 @@ packages: object-deep-merge@1.0.5: resolution: {integrity: sha512-3DioFgOzetbxbeUq8pB2NunXo8V0n4EvqsWM/cJoI6IA9zghd7cl/2pBOuWRf4dlvA+fcg5ugFMZaN2/RuoaGg==} + ofetch@1.4.1: + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + ohash@2.0.11: resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} @@ -2606,6 +2777,10 @@ packages: rc9@2.1.2: resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + readdirp@4.1.2: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} @@ -2985,6 +3160,18 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + unocss@66.5.2: + resolution: {integrity: sha512-GCFq6ilalDE33dbjZKgeBHgKGLL/t87XM5sS0aqhD0RgzHhbT2f6Jtsmmg2Q3GASlk5uvJLxh9ifUvPQ13BdyQ==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 66.5.2 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + unplugin-utils@0.3.0: resolution: {integrity: sha512-JLoggz+PvLVMJo+jZt97hdIIIZ2yTzGgft9e9q8iMrC4ewufl62ekeW7mixBghonn2gVb/ICjyvlmOCUBnJLQg==} engines: {node: '>=20.19.0'} @@ -3156,6 +3343,9 @@ packages: peerDependencies: eslint: ^8.57.0 || ^9.0.0 + vue-flow-layout@0.2.0: + resolution: {integrity: sha512-zKgsWWkXq0xrus7H4Mc+uFs1ESrmdTXlO0YNbR6wMdPaFvosL3fMB8N7uTV308UhGy9UvTrGhIY7mVz9eN+L0Q==} + vue@3.5.22: resolution: {integrity: sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==} peerDependencies: @@ -3382,6 +3572,14 @@ snapshots: tinyexec: 1.0.1 tinyglobby: 0.2.15 + '@antfu/utils@9.2.1': {} + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/generator@7.28.3': dependencies: '@babel/parser': 7.28.4 @@ -3394,10 +3592,32 @@ snapshots: '@babel/helper-validator-identifier@7.27.1': {} + '@babel/parser@7.27.7': + dependencies: + '@babel/types': 7.28.4 + '@babel/parser@7.28.4': dependencies: '@babel/types': 7.28.4 + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + + '@babel/traverse@7.27.7': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + debug: 4.4.3 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.28.4': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -3695,12 +3915,29 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} + '@iconify-json/logos@1.2.9': + dependencies: + '@iconify/types': 2.0.0 + '@iconify-json/simple-icons@1.2.53': dependencies: '@iconify/types': 2.0.0 '@iconify/types@2.0.0': {} + '@iconify/utils@3.0.2': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@antfu/utils': 9.2.1 + '@iconify/types': 2.0.0 + debug: 4.4.3 + globals: 15.15.0 + kolorist: 1.8.0 + local-pkg: 1.1.2 + mlly: 1.7.4 + transitivePeerDependencies: + - supports-color + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -4101,6 +4338,155 @@ snapshots: '@ungap/structured-clone@1.3.0': {} + '@unocss/astro@66.5.2(vite@7.1.7(@types/node@24.6.2)(jiti@2.6.0)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1))': + dependencies: + '@unocss/core': 66.5.2 + '@unocss/reset': 66.5.2 + '@unocss/vite': 66.5.2(vite@7.1.7(@types/node@24.6.2)(jiti@2.6.0)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1)) + optionalDependencies: + vite: 7.1.7(@types/node@24.6.2)(jiti@2.6.0)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1) + + '@unocss/cli@66.5.2': + dependencies: + '@jridgewell/remapping': 2.3.5 + '@unocss/config': 66.5.2 + '@unocss/core': 66.5.2 + '@unocss/preset-uno': 66.5.2 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.4.2 + magic-string: 0.30.19 + pathe: 2.0.3 + perfect-debounce: 1.0.0 + tinyglobby: 0.2.15 + unplugin-utils: 0.3.0 + + '@unocss/config@66.5.2': + dependencies: + '@unocss/core': 66.5.2 + unconfig: 7.3.3 + + '@unocss/core@66.5.2': {} + + '@unocss/extractor-arbitrary-variants@66.5.2': + dependencies: + '@unocss/core': 66.5.2 + + '@unocss/inspector@66.5.2': + dependencies: + '@unocss/core': 66.5.2 + '@unocss/rule-utils': 66.5.2 + colorette: 2.0.20 + gzip-size: 6.0.0 + sirv: 3.0.2 + vue-flow-layout: 0.2.0 + + '@unocss/postcss@66.5.2(postcss@8.5.6)': + dependencies: + '@unocss/config': 66.5.2 + '@unocss/core': 66.5.2 + '@unocss/rule-utils': 66.5.2 + css-tree: 3.1.0 + postcss: 8.5.6 + tinyglobby: 0.2.15 + + '@unocss/preset-attributify@66.5.2': + dependencies: + '@unocss/core': 66.5.2 + + '@unocss/preset-icons@66.5.2': + dependencies: + '@iconify/utils': 3.0.2 + '@unocss/core': 66.5.2 + ofetch: 1.4.1 + transitivePeerDependencies: + - supports-color + + '@unocss/preset-mini@66.5.2': + dependencies: + '@unocss/core': 66.5.2 + '@unocss/extractor-arbitrary-variants': 66.5.2 + '@unocss/rule-utils': 66.5.2 + + '@unocss/preset-tagify@66.5.2': + dependencies: + '@unocss/core': 66.5.2 + + '@unocss/preset-typography@66.5.2': + dependencies: + '@unocss/core': 66.5.2 + '@unocss/rule-utils': 66.5.2 + + '@unocss/preset-uno@66.5.2': + dependencies: + '@unocss/core': 66.5.2 + '@unocss/preset-wind3': 66.5.2 + + '@unocss/preset-web-fonts@66.5.2': + dependencies: + '@unocss/core': 66.5.2 + ofetch: 1.4.1 + + '@unocss/preset-wind3@66.5.2': + dependencies: + '@unocss/core': 66.5.2 + '@unocss/preset-mini': 66.5.2 + '@unocss/rule-utils': 66.5.2 + + '@unocss/preset-wind4@66.5.2': + dependencies: + '@unocss/core': 66.5.2 + '@unocss/extractor-arbitrary-variants': 66.5.2 + '@unocss/rule-utils': 66.5.2 + + '@unocss/preset-wind@66.5.2': + dependencies: + '@unocss/core': 66.5.2 + '@unocss/preset-wind3': 66.5.2 + + '@unocss/reset@66.5.2': {} + + '@unocss/rule-utils@66.5.2': + dependencies: + '@unocss/core': 66.5.2 + magic-string: 0.30.19 + + '@unocss/transformer-attributify-jsx@66.5.2': + dependencies: + '@babel/parser': 7.27.7 + '@babel/traverse': 7.27.7 + '@unocss/core': 66.5.2 + transitivePeerDependencies: + - supports-color + + '@unocss/transformer-compile-class@66.5.2': + dependencies: + '@unocss/core': 66.5.2 + + '@unocss/transformer-directives@66.5.2': + dependencies: + '@unocss/core': 66.5.2 + '@unocss/rule-utils': 66.5.2 + css-tree: 3.1.0 + + '@unocss/transformer-variant-group@66.5.2': + dependencies: + '@unocss/core': 66.5.2 + + '@unocss/vite@66.5.2(vite@7.1.7(@types/node@24.6.2)(jiti@2.6.0)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1))': + dependencies: + '@jridgewell/remapping': 2.3.5 + '@unocss/config': 66.5.2 + '@unocss/core': 66.5.2 + '@unocss/inspector': 66.5.2 + chokidar: 3.6.0 + magic-string: 0.30.19 + pathe: 2.0.3 + tinyglobby: 0.2.15 + unplugin-utils: 0.3.0 + vite: 7.1.7(@types/node@24.6.2)(jiti@2.6.0)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1) + '@vitejs/plugin-vue@5.2.4(vite@5.4.20(@types/node@24.6.2)(lightningcss@1.30.2))(vue@3.5.22(typescript@5.9.3))': dependencies: vite: 5.4.20(@types/node@24.6.2)(lightningcss@1.30.2) @@ -4311,6 +4697,11 @@ snapshots: ansis@4.2.0: {} + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + are-docs-informative@0.0.2: {} argparse@2.0.1: {} @@ -4332,6 +4723,8 @@ snapshots: baseline-browser-mapping@2.8.6: {} + binary-extensions@2.3.0: {} + birpc@2.5.0: {} boolbase@1.0.0: {} @@ -4425,6 +4818,18 @@ snapshots: check-error@2.1.1: {} + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + chokidar@4.0.3: dependencies: readdirp: 4.1.2 @@ -4484,6 +4889,11 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + cssesc@3.0.0: {} csstype@3.1.3: {} @@ -4527,6 +4937,8 @@ snapshots: dts-resolver@2.1.2: {} + duplexer@0.1.2: {} + electron-to-chromium@1.5.222: {} emoji-regex-xs@1.0.0: {} @@ -4983,6 +5395,8 @@ snapshots: dependencies: is-glob: 4.0.3 + globals@11.12.0: {} + globals@14.0.0: {} globals@15.15.0: {} @@ -4995,6 +5409,10 @@ snapshots: graphemer@1.4.0: {} + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + has-flag@4.0.0: {} hast-util-to-html@9.0.5: @@ -5032,6 +5450,10 @@ snapshots: indent-string@5.0.0: {} + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + is-builtin-module@5.0.0: dependencies: builtin-modules: 5.0.0 @@ -5064,6 +5486,8 @@ snapshots: jiti@2.6.0: {} + js-tokens@4.0.0: {} + js-tokens@9.0.1: {} js-yaml@4.1.0: @@ -5097,6 +5521,8 @@ snapshots: dependencies: json-buffer: 3.0.1 + kolorist@1.8.0: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -5339,6 +5765,8 @@ snapshots: dependencies: '@types/mdast': 4.0.4 + mdn-data@2.12.2: {} + merge2@1.4.1: {} micromark-core-commonmark@2.0.2: @@ -5583,6 +6011,8 @@ snapshots: node-releases@2.0.21: {} + normalize-path@3.0.0: {} + nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -5599,6 +6029,12 @@ snapshots: dependencies: type-fest: 4.2.0 + ofetch@1.4.1: + dependencies: + destr: 2.0.3 + node-fetch-native: 1.6.6 + ufo: 1.5.4 + ohash@2.0.11: {} onetime@7.0.0: @@ -5740,6 +6176,10 @@ snapshots: defu: 6.1.4 destr: 2.0.3 + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + readdirp@4.1.2: {} recast@0.23.11: @@ -6113,6 +6553,33 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 + unocss@66.5.2(postcss@8.5.6)(vite@7.1.7(@types/node@24.6.2)(jiti@2.6.0)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1)): + dependencies: + '@unocss/astro': 66.5.2(vite@7.1.7(@types/node@24.6.2)(jiti@2.6.0)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1)) + '@unocss/cli': 66.5.2 + '@unocss/core': 66.5.2 + '@unocss/postcss': 66.5.2(postcss@8.5.6) + '@unocss/preset-attributify': 66.5.2 + '@unocss/preset-icons': 66.5.2 + '@unocss/preset-mini': 66.5.2 + '@unocss/preset-tagify': 66.5.2 + '@unocss/preset-typography': 66.5.2 + '@unocss/preset-uno': 66.5.2 + '@unocss/preset-web-fonts': 66.5.2 + '@unocss/preset-wind': 66.5.2 + '@unocss/preset-wind3': 66.5.2 + '@unocss/preset-wind4': 66.5.2 + '@unocss/transformer-attributify-jsx': 66.5.2 + '@unocss/transformer-compile-class': 66.5.2 + '@unocss/transformer-directives': 66.5.2 + '@unocss/transformer-variant-group': 66.5.2 + '@unocss/vite': 66.5.2(vite@7.1.7(@types/node@24.6.2)(jiti@2.6.0)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1)) + optionalDependencies: + vite: 7.1.7(@types/node@24.6.2)(jiti@2.6.0)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1) + transitivePeerDependencies: + - postcss + - supports-color + unplugin-utils@0.3.0: dependencies: pathe: 2.0.3 @@ -6327,6 +6794,8 @@ snapshots: transitivePeerDependencies: - supports-color + vue-flow-layout@0.2.0: {} + vue@3.5.22(typescript@5.9.3): dependencies: '@vue/compiler-dom': 3.5.22 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index f200ed2..2c663cb 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -23,6 +23,8 @@ catalogs: tsx: ^4.20.6 typescript: ^5.9.3 docs: + '@iconify-json/logos': ^1.2.9 + unocss: ^66.5.2 vitepress: ^1.6.4 testing: tinyexec: ^1.0.1 diff --git a/tsdown.config.ts b/tsdown.config.ts index 2f6f30e..0adec4c 100644 --- a/tsdown.config.ts +++ b/tsdown.config.ts @@ -8,7 +8,7 @@ export default defineConfig({ dts: true, workspace: { include: ['packages/*'], - exclude: ['playground'], + exclude: ['playground', 'packages/docs'], }, tsconfig: join(import.meta.dirname, 'tsconfig.json'), sourcemap: process.env.NODE_ENV === 'development', From 7c6cb1124c782e53e89465e5e647395c39b9461c Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Sat, 4 Oct 2025 17:55:36 +0800 Subject: [PATCH 07/25] wip: --- packages/docs/src/public/favicon.svg | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 packages/docs/src/public/favicon.svg diff --git a/packages/docs/src/public/favicon.svg b/packages/docs/src/public/favicon.svg new file mode 100644 index 0000000..9ff8466 --- /dev/null +++ b/packages/docs/src/public/favicon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + From ac1bbf8eb80b9da7f325dc88700e986126dc02e8 Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Sat, 4 Oct 2025 17:55:54 +0800 Subject: [PATCH 08/25] wip: --- packages/docs/.vitepress/config.ts | 4 ++++ packages/docs/package.json | 2 +- packages/docs/src/index.md | 22 ++++++++++++++++------ pnpm-lock.yaml | 16 ++++++++-------- pnpm-workspace.yaml | 2 +- 5 files changed, 30 insertions(+), 16 deletions(-) diff --git a/packages/docs/.vitepress/config.ts b/packages/docs/.vitepress/config.ts index 2387676..f34ec7b 100644 --- a/packages/docs/.vitepress/config.ts +++ b/packages/docs/.vitepress/config.ts @@ -23,7 +23,11 @@ export default defineConfig({ title: 'Vue Note', description: 'Write Vue template in code comment?', srcDir: './src', + head: [ + ['link', { rel: 'icon', href: '/favicon.svg', type: 'image/svg+xml' }], + ], themeConfig: { + logo: '/favicon.svg', nav: SidebarNav, search: { provider: 'local', diff --git a/packages/docs/package.json b/packages/docs/package.json index 6248273..31ee6c4 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -11,7 +11,7 @@ "docs:preview": "vitepress preview" }, "devDependencies": { - "@iconify-json/logos": "catalog:docs", + "@iconify-json/carbon": "catalog:docs", "unocss": "catalog:docs", "vitepress": "catalog:docs" } diff --git a/packages/docs/src/index.md b/packages/docs/src/index.md index 72cd7af..23a9b21 100644 --- a/packages/docs/src/index.md +++ b/packages/docs/src/index.md @@ -6,6 +6,9 @@ hero: name: "Vue Note" text: "Write Vue template in code comment?" tagline: A easier and more flexible way to write Vue + image: + src: /favicon.svg + alt: Vue Note actions: - theme: brand text: Quick Start @@ -15,10 +18,17 @@ hero: link: /guide/introduction 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 + - icon: + title: Flexible Components + details: Declare your component anywhere, even in another component + link: /guide/flexibility + linkText: Flexibility + + - icon: + title: Vue Native DX + details: Keep all macros and reactivity you love, while enjoying seamless integration with the Vue ecosystem + + - icon: + title: Zero Overhead + details: Leverage native Vue compiler optimizations to achieve maximum performance without any runtime cost. --- diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bd9ce1f..fc998d8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -44,9 +44,9 @@ catalogs: specifier: ^5.9.3 version: 5.9.3 docs: - '@iconify-json/logos': - specifier: ^1.2.9 - version: 1.2.9 + '@iconify-json/carbon': + specifier: ^1.2.13 + version: 1.2.13 unocss: specifier: ^66.5.2 version: 66.5.2 @@ -134,9 +134,9 @@ importers: packages/docs: devDependencies: - '@iconify-json/logos': + '@iconify-json/carbon': specifier: catalog:docs - version: 1.2.9 + version: 1.2.13 unocss: specifier: catalog:docs version: 66.5.2(postcss@8.5.6)(vite@7.1.7(@types/node@24.6.2)(jiti@2.6.0)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1)) @@ -773,8 +773,8 @@ packages: resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} engines: {node: '>=18.18'} - '@iconify-json/logos@1.2.9': - resolution: {integrity: sha512-G6VCdFnwZcrT6Eveq3m43oJfLw/CX8plwFcE+2jgv3fiGB64pTmnU7Yd1MNZ/eA+/Re2iEDhuCfSNOWTHwwK8w==} + '@iconify-json/carbon@1.2.13': + resolution: {integrity: sha512-vXrFFKkfYaZSwf4WfnRQJQMnpEzxlPlupwZZlS1WvOAuNnWahsUudHycaMpoBzDqBfniH4KQ2b5qnw0VMKoJug==} '@iconify-json/simple-icons@1.2.53': resolution: {integrity: sha512-8GEW5mshsPAZpVAJmkBG/niR2qn8t4U03Wmz6aSD9R4VMZKTECqbOxH3z4inA0JfZOoTvP4qoK9T2VXAx2Xg5g==} @@ -3915,7 +3915,7 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} - '@iconify-json/logos@1.2.9': + '@iconify-json/carbon@1.2.13': dependencies: '@iconify/types': 2.0.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2c663cb..fc5d018 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -23,7 +23,7 @@ catalogs: tsx: ^4.20.6 typescript: ^5.9.3 docs: - '@iconify-json/logos': ^1.2.9 + '@iconify-json/carbon': ^1.2.13 unocss: ^66.5.2 vitepress: ^1.6.4 testing: From 7fb67bd7b73d6d7888ba970cafba62747fbcd9fc Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Sat, 4 Oct 2025 18:05:34 +0800 Subject: [PATCH 09/25] wip: --- packages/docs/.vitepress/theme/custom.css | 2 ++ packages/docs/src/public/favicon.svg | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/docs/.vitepress/theme/custom.css b/packages/docs/.vitepress/theme/custom.css index d87cef4..412347b 100644 --- a/packages/docs/.vitepress/theme/custom.css +++ b/packages/docs/.vitepress/theme/custom.css @@ -3,6 +3,8 @@ --vp-c-brand-1: hsla(120, 60%, 40%); --vp-c-brand-2: hsl(120, 50%, 50%); --vp-c-brand-3: hsl(120, 60%, 42%); + --vp-home-hero-image-background-image: url('/favicon.svg'); + --vp-home-hero-image-filter: blur(20px); --vp-home-hero-name-background: linear-gradient( 170deg, var(--vp-c-brand-2) 40%, diff --git a/packages/docs/src/public/favicon.svg b/packages/docs/src/public/favicon.svg index 9ff8466..9fa3bb1 100644 --- a/packages/docs/src/public/favicon.svg +++ b/packages/docs/src/public/favicon.svg @@ -1,4 +1,4 @@ - + From 416ea2461b3f028bfc028bb53db8dc368359b1b9 Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Sat, 4 Oct 2025 21:52:18 +0800 Subject: [PATCH 10/25] wip: --- packages/docs/src/guide/introduction.md | 82 +++++++++++++++++++++++++ playground/src/app.ts | 6 ++ 2 files changed, 88 insertions(+) diff --git a/packages/docs/src/guide/introduction.md b/packages/docs/src/guide/introduction.md index e69de29..f649e6a 100644 --- a/packages/docs/src/guide/introduction.md +++ b/packages/docs/src/guide/introduction.md @@ -0,0 +1,82 @@ +# What is Vue Note? + +**Vue Note** provides a new way to write **Vue components**. It allows you to write Vue components not only in `.vue` **Single-File Components (SFCs)**, but **anywhere you want**. + +Here is a mini example: + +```typescript +import { defineCommentComponent, defineTemplate } from 'vue-note' + +export default defineCommentComponent(() => { + defineTemplate(/* @template +
Hello World
+ */) +}) +``` + +## Why Vue Note? + +Have you noticed the **competition** between [Vue](https://vuejs.org/) and [React](https://react.dev)? + +Some developers believe the core reason for React's popularity is its **flexibility**. React is built on top of **JSX**, and writing JSX is essentially writing JavaScript — you can treat any JSX expression as a regular JavaScript expression. + +```tsx +export default function MyApp({ buttonName }) { + const MyButton = buttonName + ? ( + + ) + : ( + + ) + + return ( +
+

Welcome to my app

+ { MyButton } +
+ ) +} +``` + +What about Vue? Vue is **more focused on compiler optimizations** to make the runtime environment faster, so it needs a **more stable structure** (SFC). However, this comes at the cost of **flexibility** — something crucial for large or complex projects. + +There have been attempts to make Vue more flexible. For example, [Vue JSX](https://github.com/vuejs/babel-plugin-jsx) allows writing JSX that compiles to Vue, and [Vue Vine](https://vue-vine.dev) enables writing multiple components in a single file. +But the former doesn't perform as well as native Vue, while the latter's flexibility is still limited and sacrifices some native Vue features. + +That's why **Vue Note** was created. You can write the same functionality as the JSX example above, but with **native Vue's DX, reactivity and performance**: + +```typescript +import { defineProps } from 'vue' +import { defineCommentComponent, defineTemplate } from 'vue-note' + +export default defineCommentComponent(() => { + const props = defineProps<{ buttonName?: string }>() + + const MyButton = props.buttonName + ? defineCommentComponent(() => { + defineTemplate(/* @template + + */) + }) + : defineCommentComponent(() => { + defineTemplate(/* @template + + */) + }) + + defineTemplate(/* @template +
+

Welcome to my app

+ +
+ */) +}) +``` + +In **Vue Note**, a component is a **JavaScript expression** — just like in JSX, but backed by **Vue's reactivity system** and **compiler optimizations**. + +Learn more about our **flexibility approach** in [Flexibility](/guide/flexibility) and our **design philosophy** in [Design Philosophy](/extra/design-philosophy). diff --git a/playground/src/app.ts b/playground/src/app.ts index 3d9439e..8170c22 100644 --- a/playground/src/app.ts +++ b/playground/src/app.ts @@ -25,6 +25,12 @@ const Counter = defineCommentComponent(() => { export default defineCommentComponent(() => { const message = ref('Good Morning') + const Component = defineCommentComponent(() => { + defineTemplate(/* @template +

Good Morning

+ */) + }) + defineTemplate(/* @template
{{ message }}
From 8246f9b614bd934f485413f69ed89a3e6ed1d403 Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Sat, 4 Oct 2025 22:10:43 +0800 Subject: [PATCH 11/25] wip: --- packages/docs/src/guide/quick-start.md | 58 ++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/packages/docs/src/guide/quick-start.md b/packages/docs/src/guide/quick-start.md index e69de29..1f330cc 100644 --- a/packages/docs/src/guide/quick-start.md +++ b/packages/docs/src/guide/quick-start.md @@ -0,0 +1,58 @@ +# Installation + +::: warning +**Before starting use Vue Note, you should know the following tips:** + +- Vue Note only supports **Vue 3.2.25+** with **Vite**. +- Vue Note currently only provides **TypeScript** support +::: + +Run the following command to install Vue Note: +```bash +npm install -D vue-note +``` + +or with pnpm +```bash +pnpm add -D vue-note +``` + +And add the plugin in your `vite.config.ts` + +```typescript{3,7} +import { defineConfig } from 'vite' +import Vue from '@vitejs/plugin-vue' +import { VueNote } from 'vue-note/vite' + +export default defineConfig({ + plugins: [ + VueNote(), + Vue(), + ], +}) + +``` + +Then, write Vue component anywhere you want! + +```typescript +// main.ts + +import { createApp } from 'vue' + +createApp(defineCommentComponent(() => { + defineTemplate(/* @template

Hello World

*/) +})).mount('#app') +``` + +Or import it into the existing SFC + +```vue + + + +``` From a5e737d8effbc3a27b952add71c14aea36ca5890 Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Sat, 4 Oct 2025 22:22:48 +0800 Subject: [PATCH 12/25] wip: --- packages/docs/.vitepress/theme/custom.css | 6 +++++- packages/docs/src/public/favicon.svg | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/docs/.vitepress/theme/custom.css b/packages/docs/.vitepress/theme/custom.css index 412347b..97be148 100644 --- a/packages/docs/.vitepress/theme/custom.css +++ b/packages/docs/.vitepress/theme/custom.css @@ -4,7 +4,7 @@ --vp-c-brand-2: hsl(120, 50%, 50%); --vp-c-brand-3: hsl(120, 60%, 42%); --vp-home-hero-image-background-image: url('/favicon.svg'); - --vp-home-hero-image-filter: blur(20px); + --vp-home-hero-image-filter: blur(15px); --vp-home-hero-name-background: linear-gradient( 170deg, var(--vp-c-brand-2) 40%, @@ -12,3 +12,7 @@ ); } +.dark { + --vp-home-hero-image-background-image: url('/favicon.svg'); + --vp-home-hero-image-filter: blur(0px); +} diff --git a/packages/docs/src/public/favicon.svg b/packages/docs/src/public/favicon.svg index 9fa3bb1..84694c4 100644 --- a/packages/docs/src/public/favicon.svg +++ b/packages/docs/src/public/favicon.svg @@ -7,5 +7,7 @@ - + + + From 4a5a54b41e1b48f3e72a558dbb0661d6d82a8aa0 Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Sun, 5 Oct 2025 07:20:07 +0800 Subject: [PATCH 13/25] wip: --- playground/src/app.ts | 9 +++++++++ playground/src/component.ts | 26 ++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 playground/src/component.ts diff --git a/playground/src/app.ts b/playground/src/app.ts index 8170c22..00efd08 100644 --- a/playground/src/app.ts +++ b/playground/src/app.ts @@ -1,3 +1,4 @@ +/* eslint-disable ts/explicit-function-return-type */ /* eslint-disable unused-imports/no-unused-vars */ import { ref } from 'vue' import { defineCommentComponent, defineTemplate } from 'vue-note' @@ -31,9 +32,17 @@ export default defineCommentComponent(() => { */) }) + const BUTTON_NAME_LIST = [undefined, 'Mike', 'Cindy'] + const buttonName = ref() + + function handleButtonName() { + buttonName.value = BUTTON_NAME_LIST[BUTTON_NAME_LIST.findIndex(e => e === buttonName.value) + 1] + } + defineTemplate(/* @template
{{ message }}
+ */) }) diff --git a/playground/src/component.ts b/playground/src/component.ts new file mode 100644 index 0000000..4ef5044 --- /dev/null +++ b/playground/src/component.ts @@ -0,0 +1,26 @@ +/* eslint-disable unused-imports/no-unused-vars */ +import { computed, defineProps } from 'vue' +import { defineCommentComponent, defineTemplate } from 'vue-note' + +export default defineCommentComponent(() => { + const props = defineProps<{ buttonName?: string }>() + + const MyButton = computed(() => props.buttonName + ? defineCommentComponent(() => { + defineTemplate(/* @template + + */) + }) + : defineCommentComponent(() => { + defineTemplate(/* @template + + */) + })) + + defineTemplate(/* @template +
+

Welcome to my app

+ +
+ */) +}) From 567eda61553418f50a232aa9c4441adcf34855b6 Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Sun, 5 Oct 2025 09:10:11 +0800 Subject: [PATCH 14/25] wip: --- packages/docs/src/guide/flexibility.md | 3 +++ packages/docs/src/guide/introduction.md | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/docs/src/guide/flexibility.md b/packages/docs/src/guide/flexibility.md index e69de29..49b4567 100644 --- a/packages/docs/src/guide/flexibility.md +++ b/packages/docs/src/guide/flexibility.md @@ -0,0 +1,3 @@ +# Flexibility + +Thanks to the design of Vue Note, every component can be regarded as a JavaScript experssion, it allows you to achieve similar effects as JSX similar but in Vue, here are some examples. diff --git a/packages/docs/src/guide/introduction.md b/packages/docs/src/guide/introduction.md index f649e6a..6eb9c6c 100644 --- a/packages/docs/src/guide/introduction.md +++ b/packages/docs/src/guide/introduction.md @@ -1,6 +1,6 @@ # What is Vue Note? -**Vue Note** provides a new way to write **Vue components**. It allows you to write Vue components not only in `.vue` **Single-File Components (SFCs)**, but **anywhere you want**. +**Vue Note** provides a new way to write **Vue components**. It allows you to define Vue components **directly in TypeScript/JavaScript files**. Here is a mini example: From 157bfc612b64b64e025d5735974052bc93003d67 Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Sun, 5 Oct 2025 09:48:36 +0800 Subject: [PATCH 15/25] wip: --- packages/docs/src/guide/introduction.md | 64 ++++++++----------------- 1 file changed, 19 insertions(+), 45 deletions(-) diff --git a/packages/docs/src/guide/introduction.md b/packages/docs/src/guide/introduction.md index 6eb9c6c..9599e03 100644 --- a/packages/docs/src/guide/introduction.md +++ b/packages/docs/src/guide/introduction.md @@ -16,67 +16,41 @@ export default defineCommentComponent(() => { ## Why Vue Note? -Have you noticed the **competition** between [Vue](https://vuejs.org/) and [React](https://react.dev)? - -Some developers believe the core reason for React's popularity is its **flexibility**. React is built on top of **JSX**, and writing JSX is essentially writing JavaScript — you can treat any JSX expression as a regular JavaScript expression. - -```tsx -export default function MyApp({ buttonName }) { - const MyButton = buttonName - ? ( - - ) - : ( - - ) - - return ( -
-

Welcome to my app

- { MyButton } -
- ) -} -``` - -What about Vue? Vue is **more focused on compiler optimizations** to make the runtime environment faster, so it needs a **more stable structure** (SFC). However, this comes at the cost of **flexibility** — something crucial for large or complex projects. +Vue's [Single File Components (SFCs)](https://vuejs.org/guide/scaling-up/sfc.html) are powerful and intuitive, but they may introduce challenges in some situations, such as file overhead when creating many small components or dynamic component creation in complex applications. -There have been attempts to make Vue more flexible. For example, [Vue JSX](https://github.com/vuejs/babel-plugin-jsx) allows writing JSX that compiles to Vue, and [Vue Vine](https://vue-vine.dev) enables writing multiple components in a single file. -But the former doesn't perform as well as native Vue, while the latter's flexibility is still limited and sacrifices some native Vue features. +While solutions like [Vue Vine](https://vue-vine.dev) have explored ways to address these issues by enabling multiple components in a single file, Vue Note takes inspiration from Vue Vine and goes further to offer a flexible, experimental tool that enhances Vue's ecosystem. -That's why **Vue Note** was created. You can write the same functionality as the JSX example above, but with **native Vue's DX, reactivity and performance**: +Vue Note is designed as a complement to Vue's existing tools, not a replacement. It shines in scenarios where traditional SFCs feel cumbersome, such as when you need lightweight, inline components or want to reduce file overhead. Here is an example of a dynamic button component in Vue Note, showcasing its ability to define components concisely: ```typescript import { defineProps } from 'vue' import { defineCommentComponent, defineTemplate } from 'vue-note' export default defineCommentComponent(() => { - const props = defineProps<{ buttonName?: string }>() - - const MyButton = props.buttonName - ? defineCommentComponent(() => { - defineTemplate(/* @template - - */) - }) - : defineCommentComponent(() => { - defineTemplate(/* @template - - */) - }) + const props = defineProps<{ name: string }>() + + const MyButton = defineCommentComponent(() => { + defineTemplate(/* @template + + */) + }) defineTemplate(/* @template
-

Welcome to my app

+

Hi {{ props.name }}, Hello World!

*/) }) ``` -In **Vue Note**, a component is a **JavaScript expression** — just like in JSX, but backed by **Vue's reactivity system** and **compiler optimizations**. +## What Makes Vue Note Special? + +Inspired by Vue Vine, Vue Note builds on the idea of flexible component creation while addressing some of Vue Vine's limitations. Unlike Vue Vine, which focuses on multi-component files, Vue Note offers: + +- Template string support: Write templates using concise, inline strings for rapid prototyping. +- Full macro compatibility: Seamlessly use Vue's `defineProps`, `defineEmits`, and other macros you like. +- True inline components: Define components anywhere in your code, reducing the need for separate files. +- Seamless Vue ecosystem integration: Retain Vue's reactivity and compiler optimizations without compromise. Learn more about our **flexibility approach** in [Flexibility](/guide/flexibility) and our **design philosophy** in [Design Philosophy](/extra/design-philosophy). From ae6e4202e9829d02a07cb75ebdc8b39d294ed3a3 Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Sun, 5 Oct 2025 14:02:24 +0800 Subject: [PATCH 16/25] wip: --- packages/docs/src/guide/introduction.md | 54 +++++++++++++++++++------ 1 file changed, 41 insertions(+), 13 deletions(-) diff --git a/packages/docs/src/guide/introduction.md b/packages/docs/src/guide/introduction.md index 9599e03..652a27e 100644 --- a/packages/docs/src/guide/introduction.md +++ b/packages/docs/src/guide/introduction.md @@ -14,13 +14,50 @@ export default defineCommentComponent(() => { }) ``` -## Why Vue Note? +## Why we need another style to write Vue? -Vue's [Single File Components (SFCs)](https://vuejs.org/guide/scaling-up/sfc.html) are powerful and intuitive, but they may introduce challenges in some situations, such as file overhead when creating many small components or dynamic component creation in complex applications. +Vue has already provided a excellent and effecient way to build application through [Single File Components (SFCs)](https://vuejs.org/guide/scaling-up/sfc.html). It's clean, structured most of the time. -While solutions like [Vue Vine](https://vue-vine.dev) have explored ways to address these issues by enabling multiple components in a single file, Vue Note takes inspiration from Vue Vine and goes further to offer a flexible, experimental tool that enhances Vue's ecosystem. +However, as projects grow **larger or more complex**, some developers may find it **inflexible** to always define component in `.vue` files. -Vue Note is designed as a complement to Vue's existing tools, not a replacement. It shines in scenarios where traditional SFCs feel cumbersome, such as when you need lightweight, inline components or want to reduce file overhead. Here is an example of a dynamic button component in Vue Note, showcasing its ability to define components concisely: +::: info *Real-world* example: you are trying building a `Card` component for unified ui. You need to create a directory like this: + +```log +components/Card +├── Card.vue +├── CardContent.vue +├── CardDescription.vue +├── CardFooter.vue +├── CardHeader.vue +├── CardTitle.vue +└── index.ts +``` + +And export all of them at `index.ts` after writing the component codes in these six files + +```typescript +export { default as Card } from './Card.vue' +export { default as CardContent } from './CardContent.vue' +export { default as CardDescription } from './CardDescription.vue' +export { default as CardFooter } from './CardFooter.vue' +export { default as CardHeader } from './CardHeader.vue' +export { default as CardTitle } from './CardTitle.vue' +``` + +This is the thing what [ShadCN Vue](https://github.com/unovue/shadcn-vue/tree/a8f4019014c52bb28210769a410d929a9fc6a9af/apps/www/src/registry/default/ui/card) are actually doing, Maybe it is still not bad for 7 component, but if we need to build a [SideBar](https://github.com/unovue/shadcn-vue/tree/a8f4019014c52bb28210769a410d929a9fc6a9af/apps/www/src/registry/default/ui/sidebar) with more than 10 or 20 components? + +This can lead to higher maintenance overhead and scattered logic across multiple files. +::: + +How to make it better? There are some possible solutions: + +- [Vue Vine](https://vue-vine.dev/) provides a fantastic way to make components by defining function. However, it still comes with flexibility limitations and design choices that developers need to adapt to. For example, it has its own way to defining props and have special rules on template strings, which may need time to learn and switch for developers. +- [Vue JSX](https://github.com/vuejs/babel-plugin-jsx) provides the flexibility of JSX for component construction, but developers may need to adapt to a different mental model compared to Vue's template-first approach. Additionally, some compile-time performance trade-offs should be considered when opting for JSX. +- Vue Note + +Inspired by [Vue Vine](https://vue-vine.dev/), Vue Note allows you **write components as JavaScript expressions**, much like JSX in React, but with Vue's template reactivity and compiler optimizations. + +You can even define a component in another component *(Although this is not recommended in most cases)* ```typescript import { defineProps } from 'vue' @@ -44,13 +81,4 @@ export default defineCommentComponent(() => { }) ``` -## What Makes Vue Note Special? - -Inspired by Vue Vine, Vue Note builds on the idea of flexible component creation while addressing some of Vue Vine's limitations. Unlike Vue Vine, which focuses on multi-component files, Vue Note offers: - -- Template string support: Write templates using concise, inline strings for rapid prototyping. -- Full macro compatibility: Seamlessly use Vue's `defineProps`, `defineEmits`, and other macros you like. -- True inline components: Define components anywhere in your code, reducing the need for separate files. -- Seamless Vue ecosystem integration: Retain Vue's reactivity and compiler optimizations without compromise. - Learn more about our **flexibility approach** in [Flexibility](/guide/flexibility) and our **design philosophy** in [Design Philosophy](/extra/design-philosophy). From a4d0143bbcc5fe1b1982015e493c6781cbe59ea3 Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Mon, 6 Oct 2025 14:13:36 +0800 Subject: [PATCH 17/25] wip: --- packages/docs/src/extra/credits.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 packages/docs/src/extra/credits.md diff --git a/packages/docs/src/extra/credits.md b/packages/docs/src/extra/credits.md new file mode 100644 index 0000000..e94d007 --- /dev/null +++ b/packages/docs/src/extra/credits.md @@ -0,0 +1 @@ +# Credits From b6513b63a9b60d21ac73b751e9e3f52c5daeec7f Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Mon, 6 Oct 2025 14:13:46 +0800 Subject: [PATCH 18/25] wip: --- packages/docs/.vitepress/config.ts | 1 + packages/docs/src/guide/flexibility.md | 189 ++++++++++++++++++++++++- 2 files changed, 189 insertions(+), 1 deletion(-) diff --git a/packages/docs/.vitepress/config.ts b/packages/docs/.vitepress/config.ts index f34ec7b..576faef 100644 --- a/packages/docs/.vitepress/config.ts +++ b/packages/docs/.vitepress/config.ts @@ -16,6 +16,7 @@ const SidebarNav = [ { text: 'Extra Topic', items: [ { text: 'Design Philosophy', link: '/extra/design-philosophy' }, { text: 'Contribute Guide', link: '/extra/contribute' }, + { text: 'Credits', link: '/extra/credits' }, ] }, ] diff --git a/packages/docs/src/guide/flexibility.md b/packages/docs/src/guide/flexibility.md index 49b4567..29cff17 100644 --- a/packages/docs/src/guide/flexibility.md +++ b/packages/docs/src/guide/flexibility.md @@ -1,3 +1,190 @@ # Flexibility -Thanks to the design of Vue Note, every component can be regarded as a JavaScript experssion, it allows you to achieve similar effects as JSX similar but in Vue, here are some examples. +Because of the design of Vue Note, every component can be **regarded as a JavaScript experssion**, it allows you to achieve similar effects as JSX similar but in Vue, it brings **more flexibility but also more performance traps**. Here are some tips and examples may help you to learn how to use Vue Note properly. + +## Keep balance between performance and flexibility + +Although Vue Note provides a flxeibile way to write component, It's also **really important** to understand the performance implications. Using `defineCommentComponent` the wrong way can make your app slow. + +### Bad Example: Making Components Too Often + +Here's what **not to do**. The `defineCommentComponent` runs again every time foo changes: + +```typescript +export default defineCommentComponent(() => { + const props = defineProps<{ foo: boolean }>() + + const DynamicComponent = computed(() => + props.foo + ? defineCommentComponent(() => { + defineTemplate(/* @template +

foo

+ */) + }) + : defineCommentComponent(() => { + defineTemplate(/* @template +

not foo

+ */) + }) + ) + + defineTemplate(/* @template + + */) +}) +``` + +### Better Way: Use `v-if` and `v-else` + +Here's a good solution using `v-if` and `v-else`: + +```typescript +export default defineCommentComponent(() => { + const props = defineProps<{ foo: boolean }>() + + const DynamicComponent = defineCommentComponent(() => { + defineTemplate(/* @template +

foo

+

not foo

+ */) + }) + + defineTemplate(/* @template + + */) +}) +``` + +### Or Even Simpler: + +```typescript +export default defineCommentComponent(() => { + const props = defineProps<{ foo: boolean }>() + + defineTemplate(/* @template +

foo

+

not foo

+ */) +}) +``` + +### The Main Rule + +Try to run `defineCommentComponent` as few times as possible: + +- Define components at the top level if possible +- Use `v-if` and `v-else` to show/hide things if possible +- **Don't** define components inside computed or watch unless you know what you are doing +- **Don't** make new components when data changes unless you know what you are doing + +This way your app stays fast but still does what you want! + +## Examples + +Here are some examples about how to use Vue Note with good performance and comfortable flexibility + +If you have also some good examples, you can contribute your code by [editing this page.](https://github.com/liangmiQwQ/vue-note/edit/main/packages/docs/src/guide/flexibility.md) + +### Making a `Card` component + +```typescript +import { defineCommentComponent } from 'vue-note' + +export const Card = { + wrapper: defineCommentComponent(/* Your component... */), + header: defineCommentComponent(/* Your component... */), + description: defineCommentComponent(/* Your component... */), + body: defineCommentComponent(/* Your component... */), + footer: defineCommentComponent(/* Your component... */), +} +``` + +```vue + + + +``` + +### Conditional Complex UI Components + +> Forked from [Vite Devtools](https://github.com/vitejs/devtools/blob/59bc9ed77aa56ff3a6c70e01267af4ddb1288031/packages/vite/src/app/pages/session/%5Bsession%5D.vue) + +```typescript +const panels = { + module: defineCommentComponent(/* your component */), + asset: defineCommentComponent(/* your component */), + plugin: defineCommentComponent(/* your component */), + chunk: defineCommentComponent(/* your component */), +} + +function useDetailsPanel() { + const router = useRouter() + const route = useRoute() + + const currentPanelType = computed(() => + Object.keys(panels).find( + key => typeof route.query[key] !== 'undefined' + ) + ) + const CurrentPanel = computed(() => + currentPanelType.value + && panels[currentPanelType.value] + ) + + function closeCurrentPanel() { + if (currentPanelType.value) { + router.replace({ query: { + ...route.query, + [currentPanelType.value]: undefined + } }) + } + } + + return { + data: route.query[currentPanelType], + CurrentPanel, + closeCurrentPanel + } +} +``` + +```vue + + + +``` From cdaa9ae4152a9a8fe4ba2b071f84cfbae2eb940d Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Mon, 6 Oct 2025 18:56:40 +0800 Subject: [PATCH 19/25] wip: --- packages/docs/src/advenced/api-reference.md | 92 +++++++++++++++++++ .../docs/src/advenced/linter-formatter.md | 1 + packages/docs/src/advenced/typescript.md | 1 + packages/docs/src/extra/design-philosophy.md | 3 + packages/docs/src/guide/quick-start.md | 1 - 5 files changed, 97 insertions(+), 1 deletion(-) diff --git a/packages/docs/src/advenced/api-reference.md b/packages/docs/src/advenced/api-reference.md index e69de29..ad234de 100644 --- a/packages/docs/src/advenced/api-reference.md +++ b/packages/docs/src/advenced/api-reference.md @@ -0,0 +1,92 @@ +# Api Reference + +## Macros + +::: warning +Please only call the macro in `.ts` file but not `.vue` or `.tsx` file, otherwise something unexpected may get happended. +::: + +### `defineCommentComponent` + +```typescript +import { defineCommentComponent } from 'vue-note' + +declare function defineCommentComponent(component: () => void): Component +``` + +Can be used to define a component with Vue Note. + +```typescript +import { defineCommentComponent, defineTemplate } from 'vue-note' + +export default defineCommentComponent(() => { + // Function body will turn into + + +``` + +### `defineTemplate` + +```typescript +import { defineTemplate } from 'vue-note' + +declare function defineTemplate(): void +``` + +Can be used to define template in a comment component. **Can be ONLY called in [`defineCommentComponent`](#definecommentcomponent) function body and for only ONE time**. + +And although there is no params requires, you need to write the component with a JavaScript block comment(multi-line comment) in the following struct + +```typescript +defineTemplate(/* @template */) +``` + +or with any format + +```typescript +defineTemplate(/* @template + +*/) +``` + +## Vite + +### `VueNote` + +Get the VueNote Vite plugin + +```typescript +declare function VueNote(): PluginOption +``` + +and use it in [Vite Config](https://vite.dev/config/) + +```typescript{3,7} +import { defineConfig } from 'vite' +import Vue from '@vitejs/plugin-vue' +import { VueNote } from 'vue-note/vite' + +export default defineConfig({ + plugins: [ + VueNote(), + Vue(), + ], +}) + +``` diff --git a/packages/docs/src/advenced/linter-formatter.md b/packages/docs/src/advenced/linter-formatter.md index e69de29..c8a89a6 100644 --- a/packages/docs/src/advenced/linter-formatter.md +++ b/packages/docs/src/advenced/linter-formatter.md @@ -0,0 +1 @@ +State: **🚧 Work in progress** diff --git a/packages/docs/src/advenced/typescript.md b/packages/docs/src/advenced/typescript.md index e69de29..c8a89a6 100644 --- a/packages/docs/src/advenced/typescript.md +++ b/packages/docs/src/advenced/typescript.md @@ -0,0 +1 @@ +State: **🚧 Work in progress** diff --git a/packages/docs/src/extra/design-philosophy.md b/packages/docs/src/extra/design-philosophy.md index e69de29..6a473b4 100644 --- a/packages/docs/src/extra/design-philosophy.md +++ b/packages/docs/src/extra/design-philosophy.md @@ -0,0 +1,3 @@ +# Design Philosophy + +To make diff --git a/packages/docs/src/guide/quick-start.md b/packages/docs/src/guide/quick-start.md index 1f330cc..1399c40 100644 --- a/packages/docs/src/guide/quick-start.md +++ b/packages/docs/src/guide/quick-start.md @@ -37,7 +37,6 @@ Then, write Vue component anywhere you want! ```typescript // main.ts - import { createApp } from 'vue' createApp(defineCommentComponent(() => { From 9e86f5c785a3ae0a23511d36a762a396c41a9be7 Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Mon, 6 Oct 2025 22:22:55 +0800 Subject: [PATCH 20/25] wip: --- packages/docs/src/extra/contribute.md | 2 +- packages/docs/src/extra/credits.md | 8 ++- packages/docs/src/extra/design-philosophy.md | 56 +++++++++++++++++++- 3 files changed, 63 insertions(+), 3 deletions(-) diff --git a/packages/docs/src/extra/contribute.md b/packages/docs/src/extra/contribute.md index d8e91a6..c7d2420 100644 --- a/packages/docs/src/extra/contribute.md +++ b/packages/docs/src/extra/contribute.md @@ -1,2 +1,2 @@ - It's best to submitting an [issue](./issues/new) for discussion if you want to make a new feature. -- If you encounter any issues during development or contributing, please check the [Design Philosophy](https://vue-note.liangmi.dev/extra/contribute) documentation first. You can also reach me directly at hi@liangmi.dev. +- If you encounter any issues during development or contributing, please check the [Design Philosophy](https://vue-note.liangmi.dev/extra/contribute) documentation first. You can also reach me directly at [hi@liangmi.dev](mailto:hi@liangmi.dev). diff --git a/packages/docs/src/extra/credits.md b/packages/docs/src/extra/credits.md index e94d007..c43a9d2 100644 --- a/packages/docs/src/extra/credits.md +++ b/packages/docs/src/extra/credits.md @@ -1 +1,7 @@ -# Credits +# Credits (in alphabetical order) + +- [oxc](https://oxc.rs/) for its wonderful and fast parser and walker +- [Recast](https://github.com/benjamn/recast) for its powerful TypeScript code generation capabilities +- [tsdown](https://github.com/rolldown/tsdown) for its fast and easy-config TypeScript bundling +- [Vite](https://vite.dev) for its fast and wonderful developing experience +- [Vue Vine](https://vue-vine.dev/) for pioneering a new template syntax that serves as a great inspiration diff --git a/packages/docs/src/extra/design-philosophy.md b/packages/docs/src/extra/design-philosophy.md index 6a473b4..4b58033 100644 --- a/packages/docs/src/extra/design-philosophy.md +++ b/packages/docs/src/extra/design-philosophy.md @@ -1,3 +1,57 @@ # Design Philosophy -To make +To make Vue Note easier to use, there are a few tips you'd better know when designing or making a new feature. + +## Keep the original Vue experience + +### What we want to achieve + +We want developers to have a great experience when using Vue Note. The target is to **make it feel just like using regular Vue Single File Components (SFCs)**, or even **better**. + +This means: +- **Full Vue.js compatibility**: All Vue.js features should work exactly the same way, even compile-time syntax, like `defineProps`, `defineEmits` +- **Third-party library support**: Any Vue library should work without any changes + +### Why it is important + +Vue.js has been tested by millions of developers. When we're not actually sure we have a better solution, **it's safer to use what the community already knows and trusts.** It is easier to change ourselves than to change the community. + +Also, we hope developers should **be able to switch between Vue Note and regular Vue without learning too many new things**. This makes adoption easier and reduces worries about compatibility. + +When we don't break existing syntax, developers don't need to find workarounds or learn special tricks. Everything just works the way they expect. **It also bring better DX.** + +### How we make it work + +Instead of rewriting everything, **we need to try to reuse the code what Vue or the community has already done**, for example, we use `@vue/compiler-sfc` instead of using `@vue/compiler-dom` to make sure all the macro and the scripts work the same as native Vue. It also bring us **less code for us to maintain and fewer bugs.** + +However, if sometimes our code does change how Vue work. We also need to fix it to ensure the developer experience stays the same. Here is a example. + +::: info A example about Component importing + +In Vue Note, when you write a component like this: + +```typescript +import { Button } from 'some-ui-library' + +defineCommentComponent(() => { + defineTemplate(/* @template + + */) +}) +``` + +The `Button` import is outside the component function, so Vue's compiler can't find it and may cause unexpected bug. This may break the developer experience. To fix this, we inject a fake import statement: + +```typescript +import { Button } from 'vue-note' +``` + +and remove it later (after `vue/compiler-sfc` compiled) + +This makes Vue's compiler think `Button` comes from `vue-note`, preserving the expected behavior without requiring developers to change their import patterns. + +::: + +Another important think is that we should design smarter for less breaking changes. For example, we don't wrap templates in template string because that would break how template strings work inside templates. We use the block JavaScript comment since Vue templates don't support regular JavaScript comments anyway. + +In a word, the final goal is that we want Vue Note to feel like a **natural extension** of Vue.js, not a completely different framework. This makes it easier for developers to adopt and use in their projects. From ee1cf1788fe89d06a1daf945997a5b9a6a308986 Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Tue, 7 Oct 2025 09:03:48 +0800 Subject: [PATCH 21/25] =?UTF-8?q?=E6=9C=9F=E7=9B=BC:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/docs/src/extra/credits.md | 1 + packages/docs/src/extra/design-philosophy.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/docs/src/extra/credits.md b/packages/docs/src/extra/credits.md index c43a9d2..25b58f7 100644 --- a/packages/docs/src/extra/credits.md +++ b/packages/docs/src/extra/credits.md @@ -1,5 +1,6 @@ # Credits (in alphabetical order) +- [Antfu's Starter-TS](https://github.com/antfu/starter-ts) for its excellent tools and workespace config - [oxc](https://oxc.rs/) for its wonderful and fast parser and walker - [Recast](https://github.com/benjamn/recast) for its powerful TypeScript code generation capabilities - [tsdown](https://github.com/rolldown/tsdown) for its fast and easy-config TypeScript bundling diff --git a/packages/docs/src/extra/design-philosophy.md b/packages/docs/src/extra/design-philosophy.md index 4b58033..d266f24 100644 --- a/packages/docs/src/extra/design-philosophy.md +++ b/packages/docs/src/extra/design-philosophy.md @@ -52,6 +52,6 @@ This makes Vue's compiler think `Button` comes from `vue-note`, preserving the e ::: -Another important think is that we should design smarter for less breaking changes. For example, we don't wrap templates in template string because that would break how template strings work inside templates. We use the block JavaScript comment since Vue templates don't support regular JavaScript comments anyway. +Another important think is that we need **good design**. For example, we don't wrap templates in template string because that would break how template strings work inside templates. We use the block JavaScript comment since Vue templates don't support regular JavaScript comments anyway. In a word, the final goal is that we want Vue Note to feel like a **natural extension** of Vue.js, not a completely different framework. This makes it easier for developers to adopt and use in their projects. From e7bac258a8a124b87a19c4d2e6378772d028a2ba Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Tue, 7 Oct 2025 09:16:03 +0800 Subject: [PATCH 22/25] wip: --- packages/docs/src/extra/contribute.md | 63 +++++++++++++++++++- packages/docs/src/extra/design-philosophy.md | 8 +-- 2 files changed, 65 insertions(+), 6 deletions(-) diff --git a/packages/docs/src/extra/contribute.md b/packages/docs/src/extra/contribute.md index c7d2420..0040fc0 100644 --- a/packages/docs/src/extra/contribute.md +++ b/packages/docs/src/extra/contribute.md @@ -1,2 +1,61 @@ -- It's best to submitting an [issue](./issues/new) for discussion if you want to make a new feature. -- If you encounter any issues during development or contributing, please check the [Design Philosophy](https://vue-note.liangmi.dev/extra/contribute) documentation first. You can also reach me directly at [hi@liangmi.dev](mailto:hi@liangmi.dev). +# Contributing Guide + +Thank you for your interest in contributing to vue-note! This guide will help you get started with development. + +## Project Structure + +This is a monorepo using pnpm workspaces: + +- **Main package**: `packages/vue-note/` - Core compiler and Vite plugin +- **Playground**: `playground/` - Development playground for testing + +## Development Setup + +### Preparation + +- Node.js latest LTS +- pnpm ([ni](https://github.com/antfu-collective/ni) recommended) + +### Development Commands + +```bash +# Build the project +pnpm build + +# Build in watch mode +pnpm dev + +# Run playground development server +pnpm play + +# Run tests +pnpm test + +# Run type checking +pnpm typecheck + +# Run linting +pnpm lint +``` + +## Before Submitting PR + +Ensure your changes pass: + +- `pnpm build` - Build succeeds +- `pnpm test` - All tests pass +- `pnpm typecheck` - No TypeScript errors +- `pnpm lint` - Code style compliance + +Your PR should pass the GitHub CI checks, which run these same commands. + +## Contribution Guidelines + +- It's best to submit an [issue](https://github.com/liangmiQwQ/vue-note/issues/new) for discussion if you want to make a new feature. +- If you encounter any issues during development or contributing, please check the [Design Philosophy](https://vue-note.liangmi.dev/extra/design-philosophy) documentation first. You can also reach me directly at [hi@liangmi.dev](mailto:hi@liangmi.dev). + +## Thank You! + +Your contributions are greatly appreciated! Whether you're fixing bugs, adding features, or improving documentation, every contribution helps make vue-note better for everyone. + +If you have any questions or need help getting started, don't hesitate to reach out! diff --git a/packages/docs/src/extra/design-philosophy.md b/packages/docs/src/extra/design-philosophy.md index d266f24..c9b2352 100644 --- a/packages/docs/src/extra/design-philosophy.md +++ b/packages/docs/src/extra/design-philosophy.md @@ -26,16 +26,16 @@ Instead of rewriting everything, **we need to try to reuse the code what Vue or However, if sometimes our code does change how Vue work. We also need to fix it to ensure the developer experience stays the same. Here is a example. -::: info A example about Component importing +::: info An example of Component importing In Vue Note, when you write a component like this: ```typescript -import { Button } from 'some-ui-library' +import { Button } from 'some-ui-library' // ⬅️ Outside defineCommentComponent(() => { defineTemplate(/* @template - + // ⬅️ Inside */) }) ``` @@ -52,6 +52,6 @@ This makes Vue's compiler think `Button` comes from `vue-note`, preserving the e ::: -Another important think is that we need **good design**. For example, we don't wrap templates in template string because that would break how template strings work inside templates. We use the block JavaScript comment since Vue templates don't support regular JavaScript comments anyway. +Another important thing is that we need **good design**. For example, we don't wrap templates in template string because that would break how template strings work inside templates. We use the block JavaScript comment since Vue templates don't support regular JavaScript comments anyway. In a word, the final goal is that we want Vue Note to feel like a **natural extension** of Vue.js, not a completely different framework. This makes it easier for developers to adopt and use in their projects. From c441171f0283f9549e59f1bb59cb149a8b48594d Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Tue, 7 Oct 2025 09:26:59 +0800 Subject: [PATCH 23/25] chore: --- packages/docs/src/d.md | 49 ------------------------ packages/docs/src/do.md | 85 ----------------------------------------- 2 files changed, 134 deletions(-) delete mode 100644 packages/docs/src/d.md delete mode 100644 packages/docs/src/do.md diff --git a/packages/docs/src/d.md b/packages/docs/src/d.md deleted file mode 100644 index 6bd8bb5..0000000 --- a/packages/docs/src/d.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -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 - - -## Results - -### Theme Data -
{{ theme }}
- -### Page Data -
{{ page }}
- -### Page Frontmatter -
{{ frontmatter }}
-``` - - - -## Results - -### Theme Data -
{{ theme }}
- -### Page Data -
{{ page }}
- -### Page Frontmatter -
{{ frontmatter }}
- -## More - -Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata). diff --git a/packages/docs/src/do.md b/packages/docs/src/do.md deleted file mode 100644 index f9258a5..0000000 --- a/packages/docs/src/do.md +++ /dev/null @@ -1,85 +0,0 @@ -# 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). From 65599067a909c349fd4896fceac688d8677dc99b Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Tue, 7 Oct 2025 09:31:09 +0800 Subject: [PATCH 24/25] chore: --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 7c69e47..adae74f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ +

+ +

# Vue Note State: **🚧 Work in progress** From e834a19134fe0fb5cceec18e9a876a71b7fcf095 Mon Sep 17 00:00:00 2001 From: liangmiQwQ Date: Tue, 7 Oct 2025 09:31:21 +0800 Subject: [PATCH 25/25] fix: --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index adae74f..a32e532 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@

+ # Vue Note State: **🚧 Work in progress**