feat: add RoutesMenu component

Signed-off-by: Ryan Wang <i@ryanc.cc>
pull/3445/head
Ryan Wang 2022-04-12 18:06:13 +08:00
parent 52009c87c6
commit 22fd24c06d
11 changed files with 401 additions and 298 deletions

View File

@ -18,32 +18,32 @@
},
"dependencies": {
"pinia": "^2.0.13",
"vue": "^3.2.31",
"vue": "^3.2.32",
"vue-router": "^4.0.14"
},
"devDependencies": {
"@iconify-json/ri": "^1.1.1",
"@rushstack/eslint-patch": "^1.1.1",
"@rushstack/eslint-patch": "^1.1.2",
"@types/jsdom": "^16.2.14",
"@types/node": "^16.11.26",
"@vitejs/plugin-vue": "^2.3.1",
"@vitejs/plugin-vue-jsx": "^1.3.9",
"@vue/eslint-config-prettier": "^7.0.0",
"@vue/eslint-config-typescript": "^10.0.0",
"@vue/test-utils": "^2.0.0-rc.18",
"@vue/test-utils": "^2.0.0-rc.19",
"@vue/tsconfig": "^0.1.3",
"autoprefixer": "^10.4.4",
"c8": "^7.11.0",
"cypress": "^9.5.3",
"eslint": "^8.12.0",
"cypress": "^9.5.4",
"eslint": "^8.13.0",
"eslint-plugin-cypress": "^2.12.1",
"eslint-plugin-vue": "^8.5.0",
"histoire": "^0.2.1",
"eslint-plugin-vue": "^8.6.0",
"histoire": "^0.2.3",
"husky": "^7.0.4",
"jsdom": "^19.0.0",
"postcss": "^8.4.12",
"prettier": "^2.6.1",
"sass": "^1.49.10",
"prettier": "^2.6.2",
"sass": "^1.50.0",
"start-server-and-test": "^1.14.0",
"tailwindcss": "^3.0.23",
"tailwindcss-themeable": "^1.3.0",

View File

@ -2,28 +2,28 @@ lockfileVersion: 5.3
specifiers:
'@iconify-json/ri': ^1.1.1
'@rushstack/eslint-patch': ^1.1.1
'@rushstack/eslint-patch': ^1.1.2
'@types/jsdom': ^16.2.14
'@types/node': ^16.11.26
'@vitejs/plugin-vue': ^2.3.1
'@vitejs/plugin-vue-jsx': ^1.3.9
'@vue/eslint-config-prettier': ^7.0.0
'@vue/eslint-config-typescript': ^10.0.0
'@vue/test-utils': ^2.0.0-rc.18
'@vue/test-utils': ^2.0.0-rc.19
'@vue/tsconfig': ^0.1.3
autoprefixer: ^10.4.4
c8: ^7.11.0
cypress: ^9.5.3
eslint: ^8.12.0
cypress: ^9.5.4
eslint: ^8.13.0
eslint-plugin-cypress: ^2.12.1
eslint-plugin-vue: ^8.5.0
histoire: ^0.2.1
eslint-plugin-vue: ^8.6.0
histoire: ^0.2.3
husky: ^7.0.4
jsdom: ^19.0.0
pinia: ^2.0.13
postcss: ^8.4.12
prettier: ^2.6.1
sass: ^1.49.10
prettier: ^2.6.2
sass: ^1.50.0
start-server-and-test: ^1.14.0
tailwindcss: ^3.0.23
tailwindcss-themeable: ^1.3.0
@ -31,45 +31,45 @@ specifiers:
unplugin-icons: ^0.14.1
vite: ^2.9.1
vitest: ^0.5.9
vue: ^3.2.31
vue: ^3.2.32
vue-router: ^4.0.14
vue-tsc: ^0.31.4
dependencies:
pinia: 2.0.13_typescript@4.5.5+vue@3.2.31
vue: 3.2.31
vue-router: 4.0.14_vue@3.2.31
pinia: 2.0.13_typescript@4.5.5+vue@3.2.32
vue: 3.2.32
vue-router: 4.0.14_vue@3.2.32
devDependencies:
'@iconify-json/ri': 1.1.1
'@rushstack/eslint-patch': 1.1.1
'@rushstack/eslint-patch': 1.1.2
'@types/jsdom': 16.2.14
'@types/node': 16.11.26
'@vitejs/plugin-vue': 2.3.1_vite@2.9.1+vue@3.2.31
'@vitejs/plugin-vue': 2.3.1_vite@2.9.1+vue@3.2.32
'@vitejs/plugin-vue-jsx': 1.3.9
'@vue/eslint-config-prettier': 7.0.0_eslint@8.12.0+prettier@2.6.1
'@vue/eslint-config-typescript': 10.0.0_12acf70a972713d732433d1dac9f7809
'@vue/test-utils': 2.0.0-rc.18_vue@3.2.31
'@vue/eslint-config-prettier': 7.0.0_eslint@8.13.0+prettier@2.6.2
'@vue/eslint-config-typescript': 10.0.0_8e23fb6c49b76b8310cfa1d54d571553
'@vue/test-utils': 2.0.0-rc.19_vue@3.2.32
'@vue/tsconfig': 0.1.3_@types+node@16.11.26
autoprefixer: 10.4.4_postcss@8.4.12
c8: 7.11.0
cypress: 9.5.3
eslint: 8.12.0
eslint-plugin-cypress: 2.12.1_eslint@8.12.0
eslint-plugin-vue: 8.5.0_eslint@8.12.0
histoire: 0.2.1_095f2bcd7e5ef9151eeb916a391a390e
cypress: 9.5.4
eslint: 8.13.0
eslint-plugin-cypress: 2.12.1_eslint@8.13.0
eslint-plugin-vue: 8.6.0_eslint@8.13.0
histoire: 0.2.3_417a7bdfac150843f8884b9c2318ab57
husky: 7.0.4
jsdom: 19.0.0
postcss: 8.4.12
prettier: 2.6.1
sass: 1.49.10
prettier: 2.6.2
sass: 1.50.0
start-server-and-test: 1.14.0
tailwindcss: 3.0.23_autoprefixer@10.4.4
tailwindcss-themeable: 1.3.0
typescript: 4.5.5
unplugin-icons: 0.14.1_vite@2.9.1
vite: 2.9.1_sass@1.49.10
vitest: 0.5.9_4807d2e4359e51ec3e91e3dc341f010f
vite: 2.9.1_sass@1.50.0
vitest: 0.5.9_39aeabd420cf4e1004f43b8be80a240c
vue-tsc: 0.31.4_typescript@4.5.5
packages:
@ -307,6 +307,7 @@ packages:
resolution: {integrity: sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==}
engines: {node: '>=6.0.0'}
hasBin: true
dev: true
/@babel/parser/7.17.7:
resolution: {integrity: sha512-bm3AQf45vR4gKggRfvJdYJ0gFLoCbsPxiFLSH6hTVYABptNHY6l9NrhnucVjQ/X+SPtLANT9lc0fFhikj+VBRA==}
@ -318,7 +319,6 @@ packages:
resolution: {integrity: sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==}
engines: {node: '>=6.0.0'}
hasBin: true
dev: true
/@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.17.8:
resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
@ -454,7 +454,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
debug: 4.3.3
debug: 4.3.4
espree: 9.3.1
globals: 13.12.1
ignore: 5.2.0
@ -486,8 +486,15 @@ packages:
'@hapi/hoek': 9.2.1
dev: true
/@histoire/controls/0.2.1:
resolution: {integrity: sha512-To5FmkmIBg8fgF4ZBJn0W4XV5V66Ox+Rjwm2cxrdao8jEEzgp4OgMeP7CnlkZIUBRHYdnHzUPPhUMuFoEL1Bfg==}
/@histoire/controls/0.2.3_vue@3.2.32:
resolution: {integrity: sha512-pkEW5lnMaDrwko/EXXO5muLzQ1TMo3ssrIE1NFW6qWwPuHEMaqxa08lDWlErjYm1qF8KnANiVhJB28QhmlYDOA==}
dependencies:
'@iconify/vue': 3.2.1_vue@3.2.32
'@vueuse/core': 8.2.5_vue@3.2.32
floating-vue: 2.0.0-beta.15_vue@3.2.32
transitivePeerDependencies:
- '@vue/composition-api'
- vue
dev: true
/@humanwhocodes/config-array/0.9.5:
@ -495,7 +502,7 @@ packages:
engines: {node: '>=10.10.0'}
dependencies:
'@humanwhocodes/object-schema': 1.2.1
debug: 4.3.3
debug: 4.3.4
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@ -528,12 +535,12 @@ packages:
- supports-color
dev: true
/@iconify/vue/3.1.4_vue@3.2.31:
resolution: {integrity: sha512-oJm0VPl1fhlsbBX9tBeAbtmZ5iHCxCkVQdCi81lxdA3cqc9yqBlCloqObX93/YWNM5N8j/j0Efk6iSwsihOoNA==}
/@iconify/vue/3.2.1_vue@3.2.32:
resolution: {integrity: sha512-c4R6ZgFo1JrJ8aPMMgOPgfU7lBswihMGR+yWe/P4ZukC3kTkeT4+lkt9Pc/itVFMkwva/S/7u9YofmYv57fnNQ==}
peerDependencies:
vue: 3.x
dependencies:
vue: 3.2.31
vue: 3.2.32
dev: true
/@istanbuljs/schema/0.1.3:
@ -590,8 +597,8 @@ packages:
picomatch: 2.3.1
dev: true
/@rushstack/eslint-patch/1.1.1:
resolution: {integrity: sha512-BUyKJGdDWqvWC5GEhyOiUrGNi9iJUr4CU0O2WxJL6QJhHeeA/NVBalH+FeK0r/x/W0rPymXt5s78TDS7d6lCwg==}
/@rushstack/eslint-patch/1.1.2:
resolution: {integrity: sha512-oe5WJEDaVsW8fBlGT7udrSCgOwWfoYHQOmSpnh8X+0GXpqqcRCP8k4y+Dxb0taWJDPpB+rdDUtumIiBwkY9qGA==}
dev: true
/@sideway/address/4.1.3:
@ -699,7 +706,7 @@ packages:
dev: true
optional: true
/@typescript-eslint/eslint-plugin/5.13.0_f0c916b49e2a4313d39e430155342595:
/@typescript-eslint/eslint-plugin/5.13.0_d671d8c8646347886ec85f66fc3e83eb:
resolution: {integrity: sha512-vLktb2Uec81fxm/cfz2Hd6QaWOs8qdmVAZXLdOBX6JFJDhf6oDZpMzZ4/LZ6SFM/5DgDcxIMIvy3F+O9yZBuiQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@ -710,12 +717,12 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/parser': 5.13.0_eslint@8.12.0+typescript@4.5.5
'@typescript-eslint/parser': 5.13.0_eslint@8.13.0+typescript@4.5.5
'@typescript-eslint/scope-manager': 5.13.0
'@typescript-eslint/type-utils': 5.13.0_eslint@8.12.0+typescript@4.5.5
'@typescript-eslint/utils': 5.13.0_eslint@8.12.0+typescript@4.5.5
'@typescript-eslint/type-utils': 5.13.0_eslint@8.13.0+typescript@4.5.5
'@typescript-eslint/utils': 5.13.0_eslint@8.13.0+typescript@4.5.5
debug: 4.3.3
eslint: 8.12.0
eslint: 8.13.0
functional-red-black-tree: 1.0.1
ignore: 5.2.0
regexpp: 3.2.0
@ -726,7 +733,7 @@ packages:
- supports-color
dev: true
/@typescript-eslint/parser/5.13.0_eslint@8.12.0+typescript@4.5.5:
/@typescript-eslint/parser/5.13.0_eslint@8.13.0+typescript@4.5.5:
resolution: {integrity: sha512-GdrU4GvBE29tm2RqWOM0P5QfCtgCyN4hXICj/X9ibKED16136l9ZpoJvCL5pSKtmJzA+NRDzQ312wWMejCVVfg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@ -740,7 +747,7 @@ packages:
'@typescript-eslint/types': 5.13.0
'@typescript-eslint/typescript-estree': 5.13.0_typescript@4.5.5
debug: 4.3.3
eslint: 8.12.0
eslint: 8.13.0
typescript: 4.5.5
transitivePeerDependencies:
- supports-color
@ -754,7 +761,7 @@ packages:
'@typescript-eslint/visitor-keys': 5.13.0
dev: true
/@typescript-eslint/type-utils/5.13.0_eslint@8.12.0+typescript@4.5.5:
/@typescript-eslint/type-utils/5.13.0_eslint@8.13.0+typescript@4.5.5:
resolution: {integrity: sha512-/nz7qFizaBM1SuqAKb7GLkcNn2buRdDgZraXlkhz+vUGiN1NZ9LzkA595tHHeduAiS2MsHqMNhE2zNzGdw43Yg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@ -764,9 +771,9 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/utils': 5.13.0_eslint@8.12.0+typescript@4.5.5
'@typescript-eslint/utils': 5.13.0_eslint@8.13.0+typescript@4.5.5
debug: 4.3.3
eslint: 8.12.0
eslint: 8.13.0
tsutils: 3.21.0_typescript@4.5.5
typescript: 4.5.5
transitivePeerDependencies:
@ -799,7 +806,7 @@ packages:
- supports-color
dev: true
/@typescript-eslint/utils/5.13.0_eslint@8.12.0+typescript@4.5.5:
/@typescript-eslint/utils/5.13.0_eslint@8.13.0+typescript@4.5.5:
resolution: {integrity: sha512-+9oHlPWYNl6AwwoEt5TQryEHwiKRVjz7Vk6kaBeD3/kwHE5YqTGHtm/JZY8Bo9ITOeKutFaXnBlMgSATMJALUQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@ -809,9 +816,9 @@ packages:
'@typescript-eslint/scope-manager': 5.13.0
'@typescript-eslint/types': 5.13.0
'@typescript-eslint/typescript-estree': 5.13.0_typescript@4.5.5
eslint: 8.12.0
eslint: 8.13.0
eslint-scope: 5.1.1
eslint-utils: 3.0.0_eslint@8.12.0
eslint-utils: 3.0.0_eslint@8.13.0
transitivePeerDependencies:
- supports-color
- typescript
@ -839,15 +846,15 @@ packages:
- supports-color
dev: true
/@vitejs/plugin-vue/2.3.1_vite@2.9.1+vue@3.2.31:
/@vitejs/plugin-vue/2.3.1_vite@2.9.1+vue@3.2.32:
resolution: {integrity: sha512-YNzBt8+jt6bSwpt7LP890U1UcTOIZZxfpE5WOJ638PNxSEKOqAi0+FSKS0nVeukfdZ0Ai/H7AFd6k3hayfGZqQ==}
engines: {node: '>=12.0.0'}
peerDependencies:
vite: ^2.5.10
vue: ^3.2.25
dependencies:
vite: 2.9.1_sass@1.49.10
vue: 3.2.31
vite: 2.9.1_sass@1.50.0
vue: 3.2.32
dev: true
/@volar/code-gen/0.31.4:
@ -940,33 +947,51 @@ packages:
'@vue/shared': 3.2.31
estree-walker: 2.0.2
source-map: 0.6.1
dev: true
/@vue/compiler-core/3.2.32:
resolution: {integrity: sha512-bRQ8Rkpm/aYFElDWtKkTPHeLnX5pEkNxhPUcqu5crEJIilZH0yeFu/qUAcV4VfSE2AudNPkQSOwMZofhnuutmA==}
dependencies:
'@babel/parser': 7.17.8
'@vue/shared': 3.2.32
estree-walker: 2.0.2
source-map: 0.6.1
dev: false
/@vue/compiler-dom/3.2.31:
resolution: {integrity: sha512-60zIlFfzIDf3u91cqfqy9KhCKIJgPeqxgveH2L+87RcGU/alT6BRrk5JtUso0OibH3O7NXuNOQ0cDc9beT0wrg==}
dependencies:
'@vue/compiler-core': 3.2.31
'@vue/shared': 3.2.31
dev: true
/@vue/compiler-sfc/3.2.31:
resolution: {integrity: sha512-748adc9msSPGzXgibHiO6T7RWgfnDcVQD+VVwYgSsyyY8Ans64tALHZANrKtOzvkwznV/F4H7OAod/jIlp/dkQ==}
/@vue/compiler-dom/3.2.32:
resolution: {integrity: sha512-maa3PNB/NxR17h2hDQfcmS02o1f9r9QIpN1y6fe8tWPrS1E4+q8MqrvDDQNhYVPd84rc3ybtyumrgm9D5Rf/kg==}
dependencies:
'@babel/parser': 7.17.3
'@vue/compiler-core': 3.2.31
'@vue/compiler-dom': 3.2.31
'@vue/compiler-ssr': 3.2.31
'@vue/reactivity-transform': 3.2.31
'@vue/shared': 3.2.31
'@vue/compiler-core': 3.2.32
'@vue/shared': 3.2.32
dev: false
/@vue/compiler-sfc/3.2.32:
resolution: {integrity: sha512-uO6+Gh3AVdWm72lRRCjMr8nMOEqc6ezT9lWs5dPzh1E9TNaJkMYPaRtdY9flUv/fyVQotkfjY/ponjfR+trPSg==}
dependencies:
'@babel/parser': 7.17.8
'@vue/compiler-core': 3.2.32
'@vue/compiler-dom': 3.2.32
'@vue/compiler-ssr': 3.2.32
'@vue/reactivity-transform': 3.2.32
'@vue/shared': 3.2.32
estree-walker: 2.0.2
magic-string: 0.25.9
postcss: 8.4.12
source-map: 0.6.1
dev: false
/@vue/compiler-ssr/3.2.31:
resolution: {integrity: sha512-mjN0rqig+A8TVDnsGPYJM5dpbjlXeHUm2oZHZwGyMYiGT/F4fhJf/cXy8QpjnLQK4Y9Et4GWzHn9PS8AHUnSkw==}
/@vue/compiler-ssr/3.2.32:
resolution: {integrity: sha512-ZklVUF/SgTx6yrDUkaTaBL/JMVOtSocP+z5Xz/qIqqLdW/hWL90P+ob/jOQ0Xc/om57892Q7sRSrex0wujOL2Q==}
dependencies:
'@vue/compiler-dom': 3.2.31
'@vue/shared': 3.2.31
'@vue/compiler-dom': 3.2.32
'@vue/shared': 3.2.32
dev: false
/@vue/devtools-api/6.0.12:
@ -975,41 +1000,41 @@ packages:
/@vue/devtools-api/6.1.4:
resolution: {integrity: sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ==}
/@vue/eslint-config-prettier/7.0.0_eslint@8.12.0+prettier@2.6.1:
/@vue/eslint-config-prettier/7.0.0_eslint@8.13.0+prettier@2.6.2:
resolution: {integrity: sha512-/CTc6ML3Wta1tCe1gUeO0EYnVXfo3nJXsIhZ8WJr3sov+cGASr6yuiibJTL6lmIBm7GobopToOuB3B6AWyV0Iw==}
peerDependencies:
eslint: '>= 7.28.0'
prettier: '>= 2.0.0'
dependencies:
eslint: 8.12.0
eslint-config-prettier: 8.5.0_eslint@8.12.0
eslint-plugin-prettier: 4.0.0_b253a92c95b42c3296c682f11cccb3bd
prettier: 2.6.1
eslint: 8.13.0
eslint-config-prettier: 8.5.0_eslint@8.13.0
eslint-plugin-prettier: 4.0.0_1815ac95b7fb26c13c7d48a8eef62d0f
prettier: 2.6.2
dev: true
/@vue/eslint-config-typescript/10.0.0_12acf70a972713d732433d1dac9f7809:
/@vue/eslint-config-typescript/10.0.0_8e23fb6c49b76b8310cfa1d54d571553:
resolution: {integrity: sha512-F94cL8ug3FaYXlCfU5/wiGjk1qeadmoBpRGAOBq+qre3Smdupa59dd6ZJrsfRODpsMPyTG7330juMDsUvpZ3Rw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
eslint-plugin-vue: ^8.0.1
dependencies:
'@typescript-eslint/eslint-plugin': 5.13.0_f0c916b49e2a4313d39e430155342595
'@typescript-eslint/parser': 5.13.0_eslint@8.12.0+typescript@4.5.5
eslint: 8.12.0
eslint-plugin-vue: 8.5.0_eslint@8.12.0
vue-eslint-parser: 8.3.0_eslint@8.12.0
'@typescript-eslint/eslint-plugin': 5.13.0_d671d8c8646347886ec85f66fc3e83eb
'@typescript-eslint/parser': 5.13.0_eslint@8.13.0+typescript@4.5.5
eslint: 8.13.0
eslint-plugin-vue: 8.6.0_eslint@8.13.0
vue-eslint-parser: 8.3.0_eslint@8.13.0
transitivePeerDependencies:
- supports-color
- typescript
dev: true
/@vue/reactivity-transform/3.2.31:
resolution: {integrity: sha512-uS4l4z/W7wXdI+Va5pgVxBJ345wyGFKvpPYtdSgvfJfX/x2Ymm6ophQlXXB6acqGHtXuBqNyyO3zVp9b1r0MOA==}
/@vue/reactivity-transform/3.2.32:
resolution: {integrity: sha512-CW1W9zaJtE275tZSWIfQKiPG0iHpdtSlmTqYBu7Y62qvtMgKG5yOxtvBs4RlrZHlaqFSE26avLAgQiTp4YHozw==}
dependencies:
'@babel/parser': 7.17.3
'@vue/compiler-core': 3.2.31
'@vue/shared': 3.2.31
'@babel/parser': 7.17.8
'@vue/compiler-core': 3.2.32
'@vue/shared': 3.2.32
estree-walker: 2.0.2
magic-string: 0.25.9
dev: false
@ -1018,41 +1043,53 @@ packages:
resolution: {integrity: sha512-HVr0l211gbhpEKYr2hYe7hRsV91uIVGFYNHj73njbARVGHQvIojkImKMaZNDdoDZOIkMsBc9a1sMqR+WZwfSCw==}
dependencies:
'@vue/shared': 3.2.31
dev: true
/@vue/runtime-core/3.2.31:
resolution: {integrity: sha512-Kcog5XmSY7VHFEMuk4+Gap8gUssYMZ2+w+cmGI6OpZWYOEIcbE0TPzzPHi+8XTzAgx1w/ZxDFcXhZeXN5eKWsA==}
/@vue/reactivity/3.2.32:
resolution: {integrity: sha512-4zaDumuyDqkuhbb63hRd+YHFGopW7srFIWesLUQ2su/rJfWrSq3YUvoKAJE8Eu1EhZ2Q4c1NuwnEreKj1FkDxA==}
dependencies:
'@vue/reactivity': 3.2.31
'@vue/shared': 3.2.31
'@vue/shared': 3.2.32
dev: false
/@vue/runtime-dom/3.2.31:
resolution: {integrity: sha512-N+o0sICVLScUjfLG7u9u5XCjvmsexAiPt17GNnaWHJUfsKed5e85/A3SWgKxzlxx2SW/Hw7RQxzxbXez9PtY3g==}
/@vue/runtime-core/3.2.32:
resolution: {integrity: sha512-uKKzK6LaCnbCJ7rcHvsK0azHLGpqs+Vi9B28CV1mfWVq1F3Bj8Okk3cX+5DtD06aUh4V2bYhS2UjjWiUUKUF0w==}
dependencies:
'@vue/runtime-core': 3.2.31
'@vue/shared': 3.2.31
'@vue/reactivity': 3.2.32
'@vue/shared': 3.2.32
dev: false
/@vue/runtime-dom/3.2.32:
resolution: {integrity: sha512-AmlIg+GPqjkNoADLjHojEX5RGcAg+TsgXOOcUrtDHwKvA8mO26EnLQLB8nylDjU6AMJh2CIYn8NEgyOV5ZIScQ==}
dependencies:
'@vue/runtime-core': 3.2.32
'@vue/shared': 3.2.32
csstype: 2.6.19
dev: false
/@vue/server-renderer/3.2.31_vue@3.2.31:
resolution: {integrity: sha512-8CN3Zj2HyR2LQQBHZ61HexF5NReqngLT3oahyiVRfSSvak+oAvVmu8iNLSu6XR77Ili2AOpnAt1y8ywjjqtmkg==}
/@vue/server-renderer/3.2.32_vue@3.2.32:
resolution: {integrity: sha512-TYKpZZfRJpGTTiy/s6bVYwQJpAUx3G03z4G7/3O18M11oacrMTVHaHjiPuPqf3xQtY8R4LKmQ3EOT/DRCA/7Wg==}
peerDependencies:
vue: 3.2.31
vue: 3.2.32
dependencies:
'@vue/compiler-ssr': 3.2.31
'@vue/shared': 3.2.31
vue: 3.2.31
'@vue/compiler-ssr': 3.2.32
'@vue/shared': 3.2.32
vue: 3.2.32
dev: false
/@vue/shared/3.2.31:
resolution: {integrity: sha512-ymN2pj6zEjiKJZbrf98UM2pfDd6F2H7ksKw7NDt/ZZ1fh5Ei39X5tABugtT03ZRlWd9imccoK0hE8hpjpU7irQ==}
dev: true
/@vue/test-utils/2.0.0-rc.18_vue@3.2.31:
resolution: {integrity: sha512-aifolXjVdsogjaLmDoZ0FU8vN+R67aWmg9OuVeED4w5Ij5GFQLrlhM19uhWe/r5xXUL4fXMk3pX5wW6FJP1NcQ==}
/@vue/shared/3.2.32:
resolution: {integrity: sha512-bjcixPErUsAnTQRQX4Z5IQnICYjIfNCyCl8p29v1M6kfVzvwOICPw+dz48nNuWlTOOx2RHhzHdazJibE8GSnsw==}
dev: false
/@vue/test-utils/2.0.0-rc.19_vue@3.2.32:
resolution: {integrity: sha512-vQ/34z9NH/pqJzl9YTWtTq/vrx5JzLbMojcBB0qydeb7FtGqxp11nLYCgVso+pa8ZOSn2j+OQfjc5aBnb32uzw==}
peerDependencies:
vue: ^3.0.1
dependencies:
vue: 3.2.31
vue: 3.2.32
dev: true
/@vue/tsconfig/0.1.3_@types+node@16.11.26:
@ -1066,8 +1103,8 @@ packages:
'@types/node': 16.11.26
dev: true
/@vueuse/core/8.1.1_vue@3.2.31:
resolution: {integrity: sha512-NmpizOcQXW0OHV0qa6YwFtw5hQBe0RxMuxQoIIbCa6jRT16MTweFPecIM6VgA1e5vZJtAO7p//TgLSpzi3joZQ==}
/@vueuse/core/8.2.5_vue@3.2.32:
resolution: {integrity: sha512-5prZAA1Ji2ltwNUnzreu6WIXYqHYP/9U2BiY5mD/650VYLpVcwVlYznJDFcLCmEWI3o3Vd34oS1FUf+6Mh68GQ==}
peerDependencies:
'@vue/composition-api': ^1.1.0
vue: ^2.6.0 || ^3.2.0
@ -1077,18 +1114,18 @@ packages:
vue:
optional: true
dependencies:
'@vueuse/metadata': 8.1.1
'@vueuse/shared': 8.1.1_vue@3.2.31
vue: 3.2.31
vue-demi: 0.12.1_vue@3.2.31
'@vueuse/metadata': 8.2.5
'@vueuse/shared': 8.2.5_vue@3.2.32
vue: 3.2.32
vue-demi: 0.12.1_vue@3.2.32
dev: true
/@vueuse/metadata/8.1.1:
resolution: {integrity: sha512-TSmA3UaSmBcV8pJ7fnHAL7NjSE1RQZlpJklg6YysFxwxDb0MZlo+Q8j9U1hLBZT1fnAjwZMaoxilanHN8ZwugQ==}
/@vueuse/metadata/8.2.5:
resolution: {integrity: sha512-Lk9plJjh9cIdiRdcj16dau+2LANxIdFCiTgdfzwYXbflxq0QnMBeOD2qHgKDE7fuVrtPcVWj8VSuZEx1HRfNQA==}
dev: true
/@vueuse/shared/8.1.1_vue@3.2.31:
resolution: {integrity: sha512-lWRcK8W9+q1t1XMxW9JIljXFQLIViInTOEF7wUHcISQNAYwHtHgr0z+U5SRM8tA4eJd/dVs/2BV1/z2DG7aKEg==}
/@vueuse/shared/8.2.5_vue@3.2.32:
resolution: {integrity: sha512-lNWo+7sk6JCuOj4AiYM+6HZ6fq4xAuVq1sVckMQKgfCJZpZRe4i8es+ZULO5bYTKP+VrOCtqrLR2GzEfrbr3YQ==}
peerDependencies:
'@vue/composition-api': ^1.1.0
vue: ^2.6.0 || ^3.2.0
@ -1098,8 +1135,8 @@ packages:
vue:
optional: true
dependencies:
vue: 3.2.31
vue-demi: 0.12.1_vue@3.2.31
vue: 3.2.32
vue-demi: 0.12.1_vue@3.2.32
dev: true
/abab/2.0.5:
@ -1327,8 +1364,8 @@ packages:
engines: {node: '>=8'}
dev: true
/birpc/0.1.0:
resolution: {integrity: sha512-nQ5QDTH0JITjPxAdL1PRLp3f//1FOu5nHwYQYxxabE78Jp+V/mrskcWmHBhHCrKN+eErj3lVLKrv66tMGf5MSg==}
/birpc/0.1.1:
resolution: {integrity: sha512-B64AGL4ug2IS2jvV/zjTYDD1L+2gOJTT7Rv+VaK7KVQtQOo/xZbCDsh7g727ipckmU+QJYRqo5RcifVr0Kgcmg==}
dev: true
/blob-util/2.0.2:
@ -1687,8 +1724,8 @@ packages:
resolution: {integrity: sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==}
dev: false
/cypress/9.5.3:
resolution: {integrity: sha512-ItelIVmqMTnKYbo1JrErhsGgQGjWOxCpHT1TfMvwnIXKXN/OSlPjEK7rbCLYDZhejQL99PmUqul7XORI24Ik0A==}
/cypress/9.5.4:
resolution: {integrity: sha512-6AyJAD8phe7IMvOL4oBsI9puRNOWxZjl8z1lgixJMcgJ85JJmyKeP6uqNA0dI1z14lmJ7Qklf2MOgP/xdAqJ/Q==}
engines: {node: '>=12.0.0'}
hasBin: true
requiresBuild: true
@ -1710,7 +1747,7 @@ packages:
commander: 5.1.0
common-tags: 1.8.2
dayjs: 1.10.8
debug: 4.3.3_supports-color@8.1.1
debug: 4.3.4_supports-color@8.1.1
enquirer: 2.3.6
eventemitter2: 6.4.5
execa: 4.1.0
@ -1793,19 +1830,6 @@ packages:
ms: 2.1.2
dev: true
/debug/4.3.3_supports-color@8.1.1:
resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
dependencies:
ms: 2.1.2
supports-color: 8.1.1
dev: true
/debug/4.3.4:
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
engines: {node: '>=6.0'}
@ -1818,6 +1842,19 @@ packages:
ms: 2.1.2
dev: true
/debug/4.3.4_supports-color@8.1.1:
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
dependencies:
ms: 2.1.2
supports-color: 8.1.1
dev: true
/decimal.js/10.3.1:
resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==}
dev: true
@ -2227,25 +2264,25 @@ packages:
source-map: 0.6.1
dev: true
/eslint-config-prettier/8.5.0_eslint@8.12.0:
/eslint-config-prettier/8.5.0_eslint@8.13.0:
resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==}
hasBin: true
peerDependencies:
eslint: '>=7.0.0'
dependencies:
eslint: 8.12.0
eslint: 8.13.0
dev: true
/eslint-plugin-cypress/2.12.1_eslint@8.12.0:
/eslint-plugin-cypress/2.12.1_eslint@8.13.0:
resolution: {integrity: sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA==}
peerDependencies:
eslint: '>= 3.2.1'
dependencies:
eslint: 8.12.0
eslint: 8.13.0
globals: 11.12.0
dev: true
/eslint-plugin-prettier/4.0.0_b253a92c95b42c3296c682f11cccb3bd:
/eslint-plugin-prettier/4.0.0_1815ac95b7fb26c13c7d48a8eef62d0f:
resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==}
engines: {node: '>=6.0.0'}
peerDependencies:
@ -2256,23 +2293,23 @@ packages:
eslint-config-prettier:
optional: true
dependencies:
eslint: 8.12.0
eslint-config-prettier: 8.5.0_eslint@8.12.0
prettier: 2.6.1
eslint: 8.13.0
eslint-config-prettier: 8.5.0_eslint@8.13.0
prettier: 2.6.2
prettier-linter-helpers: 1.0.0
dev: true
/eslint-plugin-vue/8.5.0_eslint@8.12.0:
resolution: {integrity: sha512-i1uHCTAKOoEj12RDvdtONWrGzjFm/djkzqfhmQ0d6M/W8KM81mhswd/z+iTZ0jCpdUedW3YRgcVfQ37/J4zoYQ==}
/eslint-plugin-vue/8.6.0_eslint@8.13.0:
resolution: {integrity: sha512-abXiF2J18n/7ZPy9foSlJyouKf54IqpKlNvNmzhM93N0zs3QUxZG/oBd3tVPOJTKg7SlhBUtPxugpqzNbgGpQQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
dependencies:
eslint: 8.12.0
eslint-utils: 3.0.0_eslint@8.12.0
eslint: 8.13.0
eslint-utils: 3.0.0_eslint@8.13.0
natural-compare: 1.4.0
semver: 7.3.5
vue-eslint-parser: 8.3.0_eslint@8.12.0
vue-eslint-parser: 8.3.0_eslint@8.13.0
transitivePeerDependencies:
- supports-color
dev: true
@ -2293,13 +2330,13 @@ packages:
estraverse: 5.3.0
dev: true
/eslint-utils/3.0.0_eslint@8.12.0:
/eslint-utils/3.0.0_eslint@8.13.0:
resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
peerDependencies:
eslint: '>=5'
dependencies:
eslint: 8.12.0
eslint: 8.13.0
eslint-visitor-keys: 2.1.0
dev: true
@ -2313,8 +2350,8 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/eslint/8.12.0:
resolution: {integrity: sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q==}
/eslint/8.13.0:
resolution: {integrity: sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
hasBin: true
dependencies:
@ -2323,11 +2360,11 @@ packages:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
debug: 4.3.3
debug: 4.3.4
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.1.1
eslint-utils: 3.0.0_eslint@8.12.0
eslint-utils: 3.0.0_eslint@8.13.0
eslint-visitor-keys: 3.3.0
espree: 9.3.1
esquery: 1.4.0
@ -2466,7 +2503,7 @@ packages:
engines: {node: '>= 10.17.0'}
hasBin: true
dependencies:
debug: 4.3.3_supports-color@8.1.1
debug: 4.3.4_supports-color@8.1.1
get-stream: 5.2.0
yauzl: 2.10.0
optionalDependencies:
@ -2573,14 +2610,14 @@ packages:
resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==}
dev: true
/floating-vue/2.0.0-beta.8_vue@3.2.31:
resolution: {integrity: sha512-xyMcqMo5xBZPp3AF9lg0B70/XnFvGUxl6HFP1BKHnbJO4NX2xl6r54Gq7ZQCOOxHl70Olzji3oxiXZRoJwMPsg==}
/floating-vue/2.0.0-beta.15_vue@3.2.32:
resolution: {integrity: sha512-Aj0uEPIGG4cGgM4ma9SjJTVQqvQ7efbktuf2O7snfEP4jrHst/H3CTJggbnmz+ql8QwqRFwDP995b6xlRHyX0A==}
peerDependencies:
vue: ^3.2.0
dependencies:
'@floating-ui/dom': 0.1.10
vue: 3.2.31
vue-resize: 2.0.0-alpha.1_vue@3.2.31
vue: 3.2.32
vue-resize: 2.0.0-alpha.1_vue@3.2.32
dev: true
/follow-redirects/1.14.9_debug@4.3.2:
@ -2794,16 +2831,16 @@ packages:
resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==}
dev: true
/happy-dom/2.47.2:
resolution: {integrity: sha512-AuB34J7tZGHHdgGcES4SuUntaVqsWpHUiRfl2j/HCYBY+XsAPUcysadrBWGbRMGkEgCCIR7zet+I3V9pNB3wXA==}
/happy-dom/2.55.0:
resolution: {integrity: sha512-CHDMBRau+l/yKQL+ANmexRAC8FRCuYbXRSpu/GbLVyfqkrlBzV7OSNd5C5HZ+pVFtFv1bFJYC5r+xrqgGQuq5w==}
dependencies:
css.escape: 1.5.1
he: 1.2.0
node-fetch: 2.6.7
sync-request: 6.1.0
webidl-conversions: 7.0.0
whatwg-encoding: 1.0.5
whatwg-mimetype: 2.3.0
whatwg-encoding: 2.0.0
whatwg-mimetype: 3.0.0
transitivePeerDependencies:
- encoding
dev: true
@ -2846,44 +2883,44 @@ packages:
hasBin: true
dev: true
/histoire/0.2.1_095f2bcd7e5ef9151eeb916a391a390e:
resolution: {integrity: sha512-/mOIJfhl7FWoI5QmHfPTgwnB4j5LQR0xqhjW6QWMOTaWmEv8QiKgxwCW+oSoj+24c3XKPODF4HBI6tpXliknvg==}
/histoire/0.2.3_417a7bdfac150843f8884b9c2318ab57:
resolution: {integrity: sha512-9JjlV1fw2cDwn7doDATC9dma/soy/tvZH2tXYSMoWaqdBxQZi9ieiiAEDZjP/Y6q36lS5bmR25CGAnhbVPdhYQ==}
hasBin: true
peerDependencies:
vite: ^2.8.3
vite: ^2.9.0
vue: ^3.2.31
dependencies:
'@histoire/controls': 0.2.1
'@iconify/vue': 3.1.4_vue@3.2.31
'@vitejs/plugin-vue': 2.3.1_vite@2.9.1+vue@3.2.31
'@vueuse/core': 8.1.1_vue@3.2.31
birpc: 0.1.0
'@histoire/controls': 0.2.3_vue@3.2.32
'@iconify/vue': 3.2.1_vue@3.2.32
'@vitejs/plugin-vue': 2.3.1_vite@2.9.1+vue@3.2.32
'@vueuse/core': 8.2.5_vue@3.2.32
birpc: 0.1.1
case: 1.6.3
chokidar: 3.5.3
connect: 3.7.0
defu: 5.0.1
diacritics: 1.3.0
floating-vue: 2.0.0-beta.8_vue@3.2.31
floating-vue: 2.0.0-beta.15_vue@3.2.32
fs-extra: 10.0.1
globby: 13.1.1
happy-dom: 2.47.2
happy-dom: 2.55.0
markdown-it: 12.3.2
markdown-it-anchor: 8.4.1_markdown-it@12.3.2
markdown-it-anchor: 8.6.2_markdown-it@12.3.2
markdown-it-attrs: 4.1.3_markdown-it@12.3.2
markdown-it-emoji: 2.0.0
mrmime: 1.0.0
pathe: 0.2.0
picocolors: 1.0.0
pinia: 2.0.13_typescript@4.5.5+vue@3.2.31
pinia: 2.0.13_typescript@4.5.5+vue@3.2.32
sade: 1.8.1
scroll-into-view-if-needed: 2.2.29
shiki: 0.10.1
sirv: 2.0.2
tinypool: 0.1.2
vite: 2.9.1_sass@1.49.10
vite-node: 0.7.6_sass@1.49.10
vue: 3.2.31
vue-router: 4.0.14_vue@3.2.31
vite: 2.9.1_sass@1.50.0
vite-node: 0.7.6_sass@1.50.0
vue: 3.2.32
vue-router: 4.0.14_vue@3.2.32
transitivePeerDependencies:
- '@types/markdown-it'
- '@vue/composition-api'
@ -2981,13 +3018,6 @@ packages:
hasBin: true
dev: true
/iconv-lite/0.4.24:
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
engines: {node: '>=0.10.0'}
dependencies:
safer-buffer: 2.1.2
dev: true
/iconv-lite/0.6.3:
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
engines: {node: '>=0.10.0'}
@ -3442,8 +3472,8 @@ packages:
resolution: {integrity: sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=}
dev: true
/markdown-it-anchor/8.4.1_markdown-it@12.3.2:
resolution: {integrity: sha512-sLODeRetZ/61KkKLJElaU3NuU2z7MhXf12Ml1WJMSdwpngeofneCRF+JBbat8HiSqhniOMuTemXMrsI7hA6XyA==}
/markdown-it-anchor/8.6.2_markdown-it@12.3.2:
resolution: {integrity: sha512-JNaekTlIwwyYGBN3zifZDxgz4bSL8sbEj58fdTZGmPSMMGXBZapFjcZk2I33Jy79c1fvCKHpF7MA/67FOTjvzA==}
peerDependencies:
'@types/markdown-it': '*'
markdown-it: '*'
@ -3767,7 +3797,7 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
/pinia/2.0.13_typescript@4.5.5+vue@3.2.31:
/pinia/2.0.13_typescript@4.5.5+vue@3.2.32:
resolution: {integrity: sha512-B7rSqm1xNpwcPMnqns8/gVBfbbi7lWTByzS6aPZ4JOXSJD4Y531rZHDCoYWBwLyHY/8hWnXljgiXp6rRyrofcw==}
peerDependencies:
'@vue/composition-api': ^1.4.0
@ -3781,8 +3811,8 @@ packages:
dependencies:
'@vue/devtools-api': 6.1.4
typescript: 4.5.5
vue: 3.2.31
vue-demi: 0.12.1_vue@3.2.31
vue: 3.2.32
vue-demi: 0.12.1_vue@3.2.32
/postcss-js/4.0.0_postcss@8.4.12:
resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==}
@ -3854,8 +3884,8 @@ packages:
fast-diff: 1.2.0
dev: true
/prettier/2.6.1:
resolution: {integrity: sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==}
/prettier/2.6.2:
resolution: {integrity: sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==}
engines: {node: '>=10.13.0'}
hasBin: true
dev: true
@ -4126,8 +4156,8 @@ packages:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
dev: true
/sass/1.49.10:
resolution: {integrity: sha512-w37zfWJwKu4I78U4z63u1mmgoncq+v3iOB4yzQMPyAPVHHawaQSnu9C9ysGQnZEhW609jkcLioJcMCqm75JMdg==}
/sass/1.50.0:
resolution: {integrity: sha512-cLsD6MEZ5URXHStxApajEh7gW189kkjn4Rc8DQweMyF+o5HF5nfEz8QYLMlPsTOD88DknatTmBWkOcw5/LnJLQ==}
engines: {node: '>=12.0.0'}
hasBin: true
dependencies:
@ -4652,7 +4682,7 @@ packages:
optional: true
dependencies:
chokidar: 3.5.3
vite: 2.9.1_sass@1.49.10
vite: 2.9.1_sass@1.50.0
webpack-sources: 3.2.3
webpack-virtual-modules: 0.4.3
dev: true
@ -4709,23 +4739,23 @@ packages:
extsprintf: 1.3.0
dev: true
/vite-node/0.7.6_sass@1.49.10:
/vite-node/0.7.6_sass@1.50.0:
resolution: {integrity: sha512-WeBR3JOHX3MD4SzJDwIjrJHd+lpaPHpcQf1sbDDgm7k98JqdTGiz9X+C/17EwHUwCd1lgPf5Nu4L3asIGPuXYw==}
engines: {node: '>=14.14.0'}
hasBin: true
dependencies:
kolorist: 1.5.1
minimist: 1.2.5
minimist: 1.2.6
mlly: 0.4.3
pathe: 0.2.0
vite: 2.9.1_sass@1.49.10
vite: 2.9.1_sass@1.50.0
transitivePeerDependencies:
- less
- sass
- stylus
dev: true
/vite/2.9.1_sass@1.49.10:
/vite/2.9.1_sass@1.50.0:
resolution: {integrity: sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==}
engines: {node: '>=12.2.0'}
hasBin: true
@ -4745,12 +4775,12 @@ packages:
postcss: 8.4.12
resolve: 1.22.0
rollup: 2.69.0
sass: 1.49.10
sass: 1.50.0
optionalDependencies:
fsevents: 2.3.2
dev: true
/vitest/0.5.9_4807d2e4359e51ec3e91e3dc341f010f:
/vitest/0.5.9_39aeabd420cf4e1004f43b8be80a240c:
resolution: {integrity: sha512-R8lRP9Q1yIbwr8pDf2gvw4PFe8H5YMyHhBcdyfnUh6toLfCR10jrdI/WkNxdo5I4H/9XrMX9t+SAavdJExNdKg==}
engines: {node: '>=14.14.0'}
hasBin: true
@ -4777,7 +4807,7 @@ packages:
local-pkg: 0.4.1
tinypool: 0.1.2
tinyspy: 0.3.0
vite: 2.9.1_sass@1.49.10
vite: 2.9.1_sass@1.50.0
transitivePeerDependencies:
- less
- sass
@ -4907,7 +4937,7 @@ packages:
vscode-typescript-languageservice: 0.31.4
dev: true
/vue-demi/0.12.1_vue@3.2.31:
/vue-demi/0.12.1_vue@3.2.32:
resolution: {integrity: sha512-QL3ny+wX8c6Xm1/EZylbgzdoDolye+VpCXRhI2hug9dJTP3OUJ3lmiKN3CsVV3mOJKwFi0nsstbgob0vG7aoIw==}
engines: {node: '>=12'}
hasBin: true
@ -4919,16 +4949,16 @@ packages:
'@vue/composition-api':
optional: true
dependencies:
vue: 3.2.31
vue: 3.2.32
/vue-eslint-parser/8.3.0_eslint@8.12.0:
/vue-eslint-parser/8.3.0_eslint@8.13.0:
resolution: {integrity: sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: '>=6.0.0'
dependencies:
debug: 4.3.3
eslint: 8.12.0
eslint: 8.13.0
eslint-scope: 7.1.1
eslint-visitor-keys: 3.3.0
espree: 9.3.1
@ -4939,21 +4969,21 @@ packages:
- supports-color
dev: true
/vue-resize/2.0.0-alpha.1_vue@3.2.31:
/vue-resize/2.0.0-alpha.1_vue@3.2.32:
resolution: {integrity: sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg==}
peerDependencies:
vue: ^3.0.0
dependencies:
vue: 3.2.31
vue: 3.2.32
dev: true
/vue-router/4.0.14_vue@3.2.31:
/vue-router/4.0.14_vue@3.2.32:
resolution: {integrity: sha512-wAO6zF9zxA3u+7AkMPqw9LjoUCjSxfFvINQj3E/DceTt6uEz1XZLraDhdg2EYmvVwTBSGlLYsUw8bDmx0754Mw==}
peerDependencies:
vue: ^3.2.0
dependencies:
'@vue/devtools-api': 6.0.12
vue: 3.2.31
vue: 3.2.32
/vue-tsc/0.31.4_typescript@4.5.5:
resolution: {integrity: sha512-8RnKGmQRo/0rbXkyZmKCOdT62fNWyEaMdS/BDAPE+saGNAniUZsjpOSOjAiLwsQc5qgeI9/mY1W3o4tX7H/7MA==}
@ -4966,14 +4996,14 @@ packages:
vscode-vue-languageservice: 0.31.4
dev: true
/vue/3.2.31:
resolution: {integrity: sha512-odT3W2tcffTiQCy57nOT93INw1auq5lYLLYtWpPYQQYQOOdHiqFct9Xhna6GJ+pJQaF67yZABraH47oywkJgFw==}
/vue/3.2.32:
resolution: {integrity: sha512-6L3jKZApF042OgbCkh+HcFeAkiYi3Lovi8wNhWqIK98Pi5efAMLZzRHgi91v+60oIRxdJsGS9sTMsb+yDpY8Eg==}
dependencies:
'@vue/compiler-dom': 3.2.31
'@vue/compiler-sfc': 3.2.31
'@vue/runtime-dom': 3.2.31
'@vue/server-renderer': 3.2.31_vue@3.2.31
'@vue/shared': 3.2.31
'@vue/compiler-dom': 3.2.32
'@vue/compiler-sfc': 3.2.32
'@vue/runtime-dom': 3.2.32
'@vue/server-renderer': 3.2.32_vue@3.2.32
'@vue/shared': 3.2.32
dev: false
/w3c-hr-time/1.0.2:
@ -5021,12 +5051,6 @@ packages:
resolution: {integrity: sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==}
dev: true
/whatwg-encoding/1.0.5:
resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==}
dependencies:
iconv-lite: 0.4.24
dev: true
/whatwg-encoding/2.0.0:
resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==}
engines: {node: '>=12'}
@ -5034,10 +5058,6 @@ packages:
iconv-lite: 0.6.3
dev: true
/whatwg-mimetype/2.3.0:
resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==}
dev: true
/whatwg-mimetype/3.0.0:
resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==}
engines: {node: '>=12'}

View File

@ -1,65 +1,13 @@
<script lang="ts" setup>
import { RouterView } from "vue-router";
import { VMenu, VMenuItem, VMenuLabel } from "@/components/base/menu";
import { IconDashboard } from "@/core/icons";
import { VRoutesMenu } from "@/components/base/menu";
import { menus } from "@/router/menus.config";
</script>
<template>
<div class="flex">
<div class="navbar h-screen w-72 p-4" style="background: #fff">
<VMenu :open-ids="['dashboard']">
<VMenuLabel>首页</VMenuLabel>
<VMenuItem id="dashboard" title="仪表盘">
<template #icon>
<Component :is="IconDashboard" />
</template>
<VMenuItem title="子菜单">
<template #icon>
<Component :is="IconDashboard" />
</template>
</VMenuItem>
<VMenuItem title="子菜单">
<template #icon>
<Component :is="IconDashboard" />
</template>
<VMenuItem title="子菜单">
<template #icon>
<Component :is="IconDashboard" />
</template>
</VMenuItem>
</VMenuItem>
<VMenuItem title="子菜单">
<template #icon>
<Component :is="IconDashboard" />
</template>
</VMenuItem>
</VMenuItem>
<VMenuItem title="仪表盘">
<template #icon>
<Component :is="IconDashboard" />
</template>
</VMenuItem>
<VMenuItem title="仪表盘">
<template #icon>
<Component :is="IconDashboard" />
</template>
<VMenuItem title="子菜单1">
<template #icon>
<Component :is="IconDashboard" />
</template>
</VMenuItem>
<VMenuItem title="子菜单1">
<template #icon>
<Component :is="IconDashboard" />
</template>
</VMenuItem>
<VMenuItem title="子菜单1">
<template #icon>
<Component :is="IconDashboard" />
</template>
</VMenuItem>
</VMenuItem>
</VMenu>
<VRoutesMenu :menus="menus" />
</div>
<div class="flex-1">
<RouterView />

View File

@ -11,6 +11,10 @@ const props = defineProps({
type: String,
default: "",
},
active: {
type: Boolean,
default: false,
},
});
const emit = defineEmits(["select"]);
@ -26,7 +30,7 @@ if (openIds?.includes(props.id)) {
}
const hasSubmenus = computed(() => {
return slots.default;
return slots.default && slots.default().length > 0;
});
function handleClick() {
@ -40,11 +44,11 @@ function handleClick() {
<template>
<li
class="menu-item"
:class="{ 'has-submenus': hasSubmenus }"
class="menu-item"
@click.stop="handleClick"
>
<div class="menu-item-title">
<div :class="{ active }" class="menu-item-title">
<span v-if="$slots.icon" class="menu-icon self-center mr-3">
<slot name="icon" />
</span>

View File

@ -0,0 +1,64 @@
import { computed, defineComponent } from "vue";
import type { PropType } from "vue";
import type { MenuGroupType, MenuItemType } from "@/router/menus.config";
import { VMenu, VMenuItem, VMenuLabel } from "@/components/base/menu/index";
import { useRoute, useRouter } from "vue-router";
import type { RouteLocationMatched } from "vue-router";
const VRoutesMenu = defineComponent({
name: "VRoutesMenu",
props: {
menus: {
type: Object as PropType<MenuGroupType[]>,
},
},
setup(props) {
const route = useRoute();
const { push } = useRouter();
const openIds = computed(() => {
return route.matched.map((item: RouteLocationMatched) => item.path);
});
async function handleSelect(id: string) {
await push(id);
}
function renderItems(items: MenuItemType[] | undefined) {
return items?.map((item) => {
return (
<>
{item.children?.length ? (
<VMenuItem key={item.path} id={item.path} title={item.name}>
{renderItems(item.children)}
</VMenuItem>
) : (
<VMenuItem
key={item.path}
id={item.path}
title={item.name}
onSelect={handleSelect}
active={route.path === item.path}
/>
)}
</>
);
});
}
return () => (
<VMenu openIds={openIds.value}>
{props.menus?.map((menu: MenuGroupType) => {
return (
<>
{menu.name && <VMenuLabel>{menu.name}</VMenuLabel>}
{menu.items?.length && renderItems(menu.items)}
</>
);
})}
</VMenu>
);
},
});
export { VRoutesMenu };

View File

@ -39,7 +39,7 @@ exports[`Menu > should work with openIds prop 1`] = `
<ul class=\\"sub-menu-items transition-all\\" style=\\"display: none;\\"></ul>
</transition-stub>
</li>
<li class=\\"menu-item has-submenus\\">
<li class=\\"has-submenus menu-item\\">
<div class=\\"menu-item-title\\">
<!--v-if--><span class=\\"menu-title self-center flex-1\\">Menu Item 3</span><span class=\\"open menu-icon-collapse self-center transition-all\\"><svg preserveAspectRatio=\\"xMidYMid meet\\" viewBox=\\"0 0 24 24\\" width=\\"1.2em\\" height=\\"1.2em\\"><path fill=\\"currentColor\\" d=\\"m13.172 12l-4.95-4.95l1.414-1.414L16 12l-6.364 6.364l-1.414-1.414z\\"></path></svg></span>
</div>
@ -82,7 +82,7 @@ exports[`Menu > should work with sub menus 1`] = `
<ul class=\\"sub-menu-items transition-all\\" style=\\"display: none;\\"></ul>
</transition-stub>
</li>
<li class=\\"menu-item has-submenus\\">
<li class=\\"has-submenus menu-item\\">
<div class=\\"menu-item-title\\">
<!--v-if--><span class=\\"menu-title self-center flex-1\\">Menu Item 3</span><span class=\\"open menu-icon-collapse self-center transition-all\\"><svg preserveAspectRatio=\\"xMidYMid meet\\" viewBox=\\"0 0 24 24\\" width=\\"1.2em\\" height=\\"1.2em\\"><path fill=\\"currentColor\\" d=\\"m13.172 12l-4.95-4.95l1.414-1.414L16 12l-6.364 6.364l-1.414-1.414z\\"></path></svg></span>
</div>

View File

@ -1,3 +1,5 @@
export { default as VMenu } from "./Menu.vue";
export { default as VMenuItem } from "./MenuItem.vue";
export { default as VMenuLabel } from "./MenuLabel.vue";
// @ts-ignore
export { VRoutesMenu } from "./RoutesMenu.tsx";

View File

@ -18,7 +18,7 @@ export const menus: MenuGroupType[] = [
items: [
{
name: "仪表盘",
path: "/dashboard",
path: "/",
icon: IconDashboard,
},
],
@ -33,12 +33,12 @@ export const menus: MenuGroupType[] = [
children: [
{
name: "分类",
path: "/categories",
path: "/posts/categories",
icon: IconDashboard,
},
{
name: "标签",
path: "/tags",
path: "/posts/tags",
icon: IconDashboard,
},
],

View File

@ -3,16 +3,76 @@ import type { RouteRecordRaw } from "vue-router";
export const routes: Array<RouteRecordRaw> = [
{
path: "/",
name: "home",
component: () => import("../views/HomeView.vue"),
children: [
name: "Dashboard",
component: () => import("../views/AboutView.vue"),
},
{
path: "/about",
name: "about",
component: () => import("../views/AboutView.vue"),
},
{
path: "/posts",
name: "Posts",
component: () => import("../views/AboutView.vue"),
children: [
{
path: "/posts/categories",
name: "Categories",
component: () => import("../views/AboutView.vue"),
},
{
path: "/posts/tags",
name: "Tags",
component: () => import("../views/AboutView.vue"),
},
],
},
{
path: "/sheets",
name: "Sheets",
component: () => import("../views/AboutView.vue"),
},
{
path: "/comment",
name: "Comment",
component: () => import("../views/AboutView.vue"),
},
{
path: "/attachment",
name: "Attachment",
component: () => import("../views/AboutView.vue"),
},
{
path: "/themes",
name: "Themes",
component: () => import("../views/AboutView.vue"),
},
{
path: "/menus",
name: "Menus",
component: () => import("../views/AboutView.vue"),
},
{
path: "/visual",
name: "Visual",
component: () => import("../views/AboutView.vue"),
},
{
path: "/plugins",
name: "Plugins",
component: () => import("../views/AboutView.vue"),
},
{
path: "/users",
name: "Users",
component: () => import("../views/AboutView.vue"),
},
{
path: "/settings",
name: "Settings",
component: () => import("../views/AboutView.vue"),
},
];
export default routes;

View File

@ -1,6 +1,11 @@
<script lang="ts" setup>
import { useRoute } from "vue-router";
const route = useRoute();
</script>
<template>
<div class="about">
<h1>About</h1>
<p>This is the about page.</p>
<pre>Route: {{ route }}</pre>
</div>
</template>