From a85565a13b228ad644c38f2681acd4eec8ed3a3b Mon Sep 17 00:00:00 2001 From: Tenny Date: Mon, 1 Jul 2024 14:28:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20tabbar=20=E9=80=89?= =?UTF-8?q?=E9=A1=B9=E5=8D=A1=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat: 新增 tabs 标签页样式 --- docs/.vitepress/config.ts | 8 + docs/.vitepress/theme/index.ts | 4 +- docs/components/tabbar.md | 266 ++++++++++ docs/components/tabs.md | 277 ++++++++++ package.json | 18 +- pnpm-lock.yaml | 762 +++++++++++++-------------- src/components/form/Form.vue | 2 +- src/components/icon/Search.vue | 4 +- src/components/tabbar/Tabbar.vue | 107 ++++ src/components/tabbar/TabbarItem.vue | 46 ++ src/components/tabbar/constant.ts | 6 + src/index.ts | 7 +- src/style.css | 7 + style/collapse-item/index.css | 79 --- style/collapse-item/index.js | 1 - style/collapse/index.css | 80 +++ style/form-item/index.css | 36 -- style/form-item/index.js | 1 - style/form/index.css | 36 ++ style/tabbar/index.css | 120 +++++ style/tabbar/index.js | 1 + style/util/tabs.css | 4 + 22 files changed, 1359 insertions(+), 513 deletions(-) create mode 100644 docs/components/tabbar.md create mode 100644 docs/components/tabs.md create mode 100644 src/components/tabbar/Tabbar.vue create mode 100644 src/components/tabbar/TabbarItem.vue create mode 100644 src/components/tabbar/constant.ts delete mode 100644 style/collapse-item/index.css delete mode 100644 style/collapse-item/index.js delete mode 100644 style/form-item/index.css delete mode 100644 style/form-item/index.js create mode 100644 style/tabbar/index.css create mode 100644 style/tabbar/index.js create mode 100644 style/util/tabs.css diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 926e75a9..1acaf1e1 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -64,6 +64,14 @@ export default defineConfig({ text: 'DescriptionPanel 简介面板', link: '/components/descriptionpanel', }, + { + text: 'Tabbar 标签栏', + link: '/components/tabbar', + }, + { + text: 'Tabs 标签页', + link: '/components/tabs', + }, ], }, ], diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts index 32ea1659..ee476864 100644 --- a/docs/.vitepress/theme/index.ts +++ b/docs/.vitepress/theme/index.ts @@ -21,12 +21,12 @@ import '../../../style/shadow'; import '../../../style/table'; import '../../../style/switch'; import '../../../style/form'; -import '../../../style/form-item'; import '../../../style/collapse'; -import '../../../style/collapse-item'; import '../../../style/progress'; import '../../../style/loading-bar'; import '../../../style/description-panel'; +import '../../../style/tabbar'; +import '../../../style/util/tabs.css'; export default { extends: DefaultTheme, diff --git a/docs/components/tabbar.md b/docs/components/tabbar.md new file mode 100644 index 00000000..c96f9ef8 --- /dev/null +++ b/docs/components/tabbar.md @@ -0,0 +1,266 @@ +# Tabbar 标签栏 + +使用场景如下: + +1. 底部导航栏,用于在不同页面之间进行切换 +2. 标签切换 +3. 选项卡 + +## 演示 + + + +### 导航栏模式 + +将 `type` 设置为 `nav`[默认] + + + + + + + + +### 选项卡 + +基础的、简洁的选项卡,初始选中第2项 + + + + + + + + +### 排列方式 + +主轴的排列方式,只对 `bar` 类型生效。只需要将 `justify-content` 的属性设置为 [justify-content可用值](https://developer.mozilla.org/zh-CN/docs/Web/CSS/justify-content#%E5%80%BC) 即可。 + + + + + + + + +### 卡片式 + +具有卡片风格的标签。只需要设置 `type` 属性为 `card` 就可以使选项卡改变为标签风格。 +同时可以通过 `gap` 调整选项卡之间的间距。 + + + + + + + + +## API + +### Tabbar Props + +| 参数 | 说明 | 类型 | 默认值 | +| ----------------- | ---------------- | -------------------- | ------------ | +| `v-model` | 选中的选项卡 | `string` | - | +| `type` | 风格 | `nav`、`bar`、`card` | `nav` | +| `justify-content` | 主轴的排列方式 | `string` | `flex-start` | +| `gap` | 选项卡之间的间距 | `number` | `0` | + +### Tabbar Events + +| 事件名 | 说明 | 参数 | +| `change` | 选项卡切换时触发 | `(active: string) => void` | + +### TabbarItem Props + +| 参数 | 说明 | 类型 | 默认值 | +| ------ | ---------------- | ------------------ | ------ | +| `name` | 选项卡的唯一标识 | `string` \| `name` | - | + +### TabbarItem Slots + +| 插槽名 | 说明 | +| --------- | ------------ | +| `icon` | 选项卡的图标 | +| `default` | 选项卡的内容 | + +### Tabbar Css Vars + +| 变量名 | 说明 | 默认值 | +| -------------------------------- | ------------------------ | -------------------------------- | +| `--nt-tabbar-hover-color` | 选项卡的鼠标悬浮时的颜色 | `var(--nt-primary-color-light1)` | +| `--nt-tabbar-active-color` | 选项卡的选中时的颜色 | `var(--nt-primary-color)` | +| `--nt-tabbar-item-gap` | 选项卡之间的间距 | `0` | +| `--nt-tabbar-height` | 选项卡的高度 | `38px`[`nav`时默认为: `50px`] | +| `--nt-tabbar-line-color` | 下划线的颜色 | `var(--nt-primary-color)` | +| `--nt-tabbar-card-border-color` | 卡片选项卡的边框颜色 | `#f5f7fa` | +| `--nt-tabbar-card-border-radius` | 卡片选项卡的边框圆角 | `5px` | diff --git a/docs/components/tabs.md b/docs/components/tabs.md new file mode 100644 index 00000000..eee04752 --- /dev/null +++ b/docs/components/tabs.md @@ -0,0 +1,277 @@ +# Tabs 标签页 + +选项卡切换组件;其实这个模块的内容就是 [Tabbar 标签栏](/components/tabbar) + 内容区域;所以就没有单独抽取为组件,转而提供 `css` 样式表,通过手动引入样式就能达到效果。 + +## 引入 + +```js +import '@asteres/neatui-vue/style/util/tabs.css'; +``` + +## 演示 + + + +### 基础用法 + +基础的、简洁的标签页。 + + + + + + + + +### 简单登录注册 + +通过组件搭配: [form 表单](/components/form)、[input 输入框](/components/input)、[button 按钮](/components/button)、[tabbar 选项卡](/components/tabbar) 等组件,实现简单的登录注册。 + + + + + + + + +### 卡片风格 + +通过设置 `tabbar` 的 `type=card` 来使用卡片风格。 + + + + + + + + +## 基本结构 + +```html +
+ +
+ +
+
+``` diff --git a/package.json b/package.json index 2efde4b2..582de78a 100644 --- a/package.json +++ b/package.json @@ -12,21 +12,21 @@ "inspect:eslint": "eslint --inspect-config" }, "devDependencies": { - "@types/node": "^20.14.8", - "@typescript-eslint/eslint-plugin": "^7.13.1", - "@typescript-eslint/parser": "^7.13.1", + "@types/node": "^20.14.9", + "@typescript-eslint/eslint-plugin": "^7.14.1", + "@typescript-eslint/parser": "^7.14.1", "@vitejs/plugin-vue": "^5.0.5", - "eslint": "^9.5.0", + "eslint": "^9.6.0", "eslint-plugin-vue": "^9.26.0", - "globals": "^15.6.0", + "globals": "^15.7.0", "less": "^4.2.0", "prettier": "^3.3.2", - "shiki": "^1.9.0", + "shiki": "^1.10.0", "typescript": "^5.5.2", - "vite": "^5.3.1", + "vite": "^5.3.2", "vite-plugin-dts": "^3.9.1", "vitepress": "^1.2.3", - "vue-tsc": "^2.0.22" + "vue-tsc": "^2.0.24" }, "peerDependencies": { "vue": "^3.3.11" @@ -64,7 +64,7 @@ }, "license": "MulanPSL-2.0", "dependencies": { - "ph-utils": "^0.6.2", + "ph-utils": "^0.8.1", "qrcode-generator-es": "^0.0.4" }, "packageManager": "pnpm@9.0.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index accf4588..4a462a6f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,36 +9,36 @@ importers: .: dependencies: ph-utils: - specifier: ^0.6.2 - version: 0.6.2 + specifier: ^0.8.1 + version: 0.8.1 qrcode-generator-es: specifier: ^0.0.4 version: 0.0.4 vue: specifier: ^3.3.11 - version: 3.4.30(typescript@5.5.2) + version: 3.4.31(typescript@5.5.2) devDependencies: '@types/node': - specifier: ^20.14.8 - version: 20.14.8 + specifier: ^20.14.9 + version: 20.14.9 '@typescript-eslint/eslint-plugin': - specifier: ^7.13.1 - version: 7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(typescript@5.5.2) + specifier: ^7.14.1 + version: 7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(typescript@5.5.2) '@typescript-eslint/parser': - specifier: ^7.13.1 - version: 7.13.1(eslint@9.5.0)(typescript@5.5.2) + specifier: ^7.14.1 + version: 7.14.1(eslint@9.6.0)(typescript@5.5.2) '@vitejs/plugin-vue': specifier: ^5.0.5 - version: 5.0.5(vite@5.3.1(@types/node@20.14.8)(less@4.2.0))(vue@3.4.30(typescript@5.5.2)) + version: 5.0.5(vite@5.3.2(@types/node@20.14.9)(less@4.2.0))(vue@3.4.31(typescript@5.5.2)) eslint: - specifier: ^9.5.0 - version: 9.5.0 + specifier: ^9.6.0 + version: 9.6.0 eslint-plugin-vue: specifier: ^9.26.0 - version: 9.26.0(eslint@9.5.0) + version: 9.26.0(eslint@9.6.0) globals: - specifier: ^15.6.0 - version: 15.6.0 + specifier: ^15.7.0 + version: 15.7.0 less: specifier: ^4.2.0 version: 4.2.0 @@ -46,23 +46,23 @@ importers: specifier: ^3.3.2 version: 3.3.2 shiki: - specifier: ^1.9.0 - version: 1.9.0 + specifier: ^1.10.0 + version: 1.10.0 typescript: specifier: ^5.5.2 version: 5.5.2 vite: - specifier: ^5.3.1 - version: 5.3.1(@types/node@20.14.8)(less@4.2.0) + specifier: ^5.3.2 + version: 5.3.2(@types/node@20.14.9)(less@4.2.0) vite-plugin-dts: specifier: ^3.9.1 - version: 3.9.1(@types/node@20.14.8)(rollup@4.18.0)(typescript@5.5.2)(vite@5.3.1(@types/node@20.14.8)(less@4.2.0)) + version: 3.9.1(@types/node@20.14.9)(rollup@4.18.0)(typescript@5.5.2)(vite@5.3.2(@types/node@20.14.9)(less@4.2.0)) vitepress: specifier: ^1.2.3 - version: 1.2.3(@algolia/client-search@4.23.3)(@types/node@20.14.8)(less@4.2.0)(postcss@8.4.38)(search-insights@2.14.0)(typescript@5.5.2) + version: 1.2.3(@algolia/client-search@4.24.0)(@types/node@20.14.9)(less@4.2.0)(postcss@8.4.39)(search-insights@2.14.0)(typescript@5.5.2) vue-tsc: - specifier: ^2.0.22 - version: 2.0.22(typescript@5.5.2) + specifier: ^2.0.24 + version: 2.0.24(typescript@5.5.2) packages: @@ -86,50 +86,50 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/cache-browser-local-storage@4.23.3': - resolution: {integrity: sha512-vRHXYCpPlTDE7i6UOy2xE03zHF2C8MEFjPN2v7fRbqVpcOvAUQK81x3Kc21xyb5aSIpYCjWCZbYZuz8Glyzyyg==} + '@algolia/cache-browser-local-storage@4.24.0': + resolution: {integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==} - '@algolia/cache-common@4.23.3': - resolution: {integrity: sha512-h9XcNI6lxYStaw32pHpB1TMm0RuxphF+Ik4o7tcQiodEdpKK+wKufY6QXtba7t3k8eseirEMVB83uFFF3Nu54A==} + '@algolia/cache-common@4.24.0': + resolution: {integrity: sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==} - '@algolia/cache-in-memory@4.23.3': - resolution: {integrity: sha512-yvpbuUXg/+0rbcagxNT7un0eo3czx2Uf0y4eiR4z4SD7SiptwYTpbuS0IHxcLHG3lq22ukx1T6Kjtk/rT+mqNg==} + '@algolia/cache-in-memory@4.24.0': + resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==} - '@algolia/client-account@4.23.3': - resolution: {integrity: sha512-hpa6S5d7iQmretHHF40QGq6hz0anWEHGlULcTIT9tbUssWUriN9AUXIFQ8Ei4w9azD0hc1rUok9/DeQQobhQMA==} + '@algolia/client-account@4.24.0': + resolution: {integrity: sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==} - '@algolia/client-analytics@4.23.3': - resolution: {integrity: sha512-LBsEARGS9cj8VkTAVEZphjxTjMVCci+zIIiRhpFun9jGDUlS1XmhCW7CTrnaWeIuCQS/2iPyRqSy1nXPjcBLRA==} + '@algolia/client-analytics@4.24.0': + resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==} - '@algolia/client-common@4.23.3': - resolution: {integrity: sha512-l6EiPxdAlg8CYhroqS5ybfIczsGUIAC47slLPOMDeKSVXYG1n0qGiz4RjAHLw2aD0xzh2EXZ7aRguPfz7UKDKw==} + '@algolia/client-common@4.24.0': + resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==} - '@algolia/client-personalization@4.23.3': - resolution: {integrity: sha512-3E3yF3Ocr1tB/xOZiuC3doHQBQ2zu2MPTYZ0d4lpfWads2WTKG7ZzmGnsHmm63RflvDeLK/UVx7j2b3QuwKQ2g==} + '@algolia/client-personalization@4.24.0': + resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==} - '@algolia/client-search@4.23.3': - resolution: {integrity: sha512-P4VAKFHqU0wx9O+q29Q8YVuaowaZ5EM77rxfmGnkHUJggh28useXQdopokgwMeYw2XUht49WX5RcTQ40rZIabw==} + '@algolia/client-search@4.24.0': + resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==} - '@algolia/logger-common@4.23.3': - resolution: {integrity: sha512-y9kBtmJwiZ9ZZ+1Ek66P0M68mHQzKRxkW5kAAXYN/rdzgDN0d2COsViEFufxJ0pb45K4FRcfC7+33YB4BLrZ+g==} + '@algolia/logger-common@4.24.0': + resolution: {integrity: sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==} - '@algolia/logger-console@4.23.3': - resolution: {integrity: sha512-8xoiseoWDKuCVnWP8jHthgaeobDLolh00KJAdMe9XPrWPuf1by732jSpgy2BlsLTaT9m32pHI8CRfrOqQzHv3A==} + '@algolia/logger-console@4.24.0': + resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==} - '@algolia/recommend@4.23.3': - resolution: {integrity: sha512-9fK4nXZF0bFkdcLBRDexsnGzVmu4TSYZqxdpgBW2tEyfuSSY54D4qSRkLmNkrrz4YFvdh2GM1gA8vSsnZPR73w==} + '@algolia/recommend@4.24.0': + resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==} - '@algolia/requester-browser-xhr@4.23.3': - resolution: {integrity: sha512-jDWGIQ96BhXbmONAQsasIpTYWslyjkiGu0Quydjlowe+ciqySpiDUrJHERIRfELE5+wFc7hc1Q5hqjGoV7yghw==} + '@algolia/requester-browser-xhr@4.24.0': + resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==} - '@algolia/requester-common@4.23.3': - resolution: {integrity: sha512-xloIdr/bedtYEGcXCiF2muajyvRhwop4cMZo+K2qzNht0CMzlRkm8YsDdj5IaBhshqfgmBb3rTg4sL4/PpvLYw==} + '@algolia/requester-common@4.24.0': + resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==} - '@algolia/requester-node-http@4.23.3': - resolution: {integrity: sha512-zgu++8Uj03IWDEJM3fuNl34s746JnZOWn1Uz5taV1dFyJhVM/kTNw9Ik7YJWiUNHJQXcaD8IXD1eCb0nq/aByA==} + '@algolia/requester-node-http@4.24.0': + resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==} - '@algolia/transporter@4.23.3': - resolution: {integrity: sha512-Wjl5gttqnf/gQKJA+dafnD0Y6Yw97yvfY8R9h0dQltX1GXTgNs1zWgvtWW0tHl1EgMdhAyw189uWiZMnL3QebQ==} + '@algolia/transporter@4.24.0': + resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==} '@babel/helper-string-parser@7.24.7': resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} @@ -315,20 +315,20 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.10.1': - resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.16.0': - resolution: {integrity: sha512-/jmuSd74i4Czf1XXn7wGRWZCuyaUZ330NH1Bek0Pplatt4Sy1S5haN21SCLLdbeKslQ+S0wEJ+++v5YibSi+Lg==} + '@eslint/config-array@0.17.0': + resolution: {integrity: sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.1.0': resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.5.0': - resolution: {integrity: sha512-A7+AOT2ICkodvtsWnxZP4Xxk3NbZ3VMHd8oihydLRGrJgqqdEz1qSeEgXYyT/Cu8h1TWWsQRejIx48mtjZ5y1w==} + '@eslint/js@9.6.0': + resolution: {integrity: sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': @@ -482,11 +482,11 @@ packages: '@rushstack/ts-command-line@4.19.1': resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==} - '@shikijs/core@1.9.0': - resolution: {integrity: sha512-cbSoY8P/jgGByG8UOl3jnP/CWg/Qk+1q+eAKWtcrU3pNoILF8wTsLB0jT44qUBV8Ce1SvA9uqcM9Xf+u3fJFBw==} + '@shikijs/core@1.10.0': + resolution: {integrity: sha512-BZcr6FCmPfP6TXaekvujZcnkFmJHZ/Yglu97r/9VjzVndQA56/F4WjUKtJRQUnK59Wi7p/UTAOekMfCJv7jnYg==} - '@shikijs/transformers@1.9.0': - resolution: {integrity: sha512-wo8dNbZtFtVhKtw8BnXIT/FDTGMwEdWcQSIRa78ou14JGkMYxSCBN942W5+IRUifP5BwVUWgkXBYX/M3FUFkeg==} + '@shikijs/transformers@1.10.0': + resolution: {integrity: sha512-5Eu/kuJu7/CzAjFlTJkyyPoLTLSVQZ31Ps81cjIeR/3PDJ2RUuX1/R8d0qFziBKToym1LXbNiXoJQq0mg5+Cwg==} '@types/argparse@1.0.38': resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} @@ -503,14 +503,14 @@ packages: '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - '@types/node@20.14.8': - resolution: {integrity: sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==} + '@types/node@20.14.9': + resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} '@types/web-bluetooth@0.0.20': resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} - '@typescript-eslint/eslint-plugin@7.13.1': - resolution: {integrity: sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==} + '@typescript-eslint/eslint-plugin@7.14.1': + resolution: {integrity: sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -520,8 +520,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@7.13.1': - resolution: {integrity: sha512-1ELDPlnLvDQ5ybTSrMhRTFDfOQEOXNM+eP+3HT/Yq7ruWpciQw+Avi73pdEbA4SooCawEWo3dtYbF68gN7Ed1A==} + '@typescript-eslint/parser@7.14.1': + resolution: {integrity: sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -530,12 +530,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@7.13.1': - resolution: {integrity: sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==} + '@typescript-eslint/scope-manager@7.14.1': + resolution: {integrity: sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/type-utils@7.13.1': - resolution: {integrity: sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==} + '@typescript-eslint/type-utils@7.14.1': + resolution: {integrity: sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -544,12 +544,12 @@ packages: typescript: optional: true - '@typescript-eslint/types@7.13.1': - resolution: {integrity: sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==} + '@typescript-eslint/types@7.14.1': + resolution: {integrity: sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/typescript-estree@7.13.1': - resolution: {integrity: sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==} + '@typescript-eslint/typescript-estree@7.14.1': + resolution: {integrity: sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -557,14 +557,14 @@ packages: typescript: optional: true - '@typescript-eslint/utils@7.13.1': - resolution: {integrity: sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==} + '@typescript-eslint/utils@7.14.1': + resolution: {integrity: sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/visitor-keys@7.13.1': - resolution: {integrity: sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==} + '@typescript-eslint/visitor-keys@7.14.1': + resolution: {integrity: sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==} engines: {node: ^18.18.0 || >=20.0.0} '@vitejs/plugin-vue@5.0.5': @@ -577,41 +577,41 @@ packages: '@volar/language-core@1.11.1': resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} - '@volar/language-core@2.3.2': - resolution: {integrity: sha512-tx2BCWPpSNEW5fbE4XfERqgTtESHfsh8zoRDtpf3fsiDAPJI+2emqlxz2Dqcb4O0kFZzVnWINDOx/j6j1H3Vgw==} + '@volar/language-core@2.4.0-alpha.5': + resolution: {integrity: sha512-CX+0vrNoCcO3tGZYIn7kNHug/u6+EImfbZe0tI6x/lCZc0MBJ7t9f6AKJT+mHJZ3ePhva6NVNv8mY1tNEURd5A==} '@volar/source-map@1.11.1': resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} - '@volar/source-map@2.3.2': - resolution: {integrity: sha512-YGQ5UFNj+ngpklp3SNzTHzaq7e5Rqlcb01ym+oR8mtu7BfkfBxmtCv8YNXEVZ/oU6MF8s3cibpZhOn696MRsYg==} + '@volar/source-map@2.4.0-alpha.5': + resolution: {integrity: sha512-5OxMPGqbxaMuFXfj10k3xWwmJ2nb0b20kNaONAKxwUQxGY6nh6skX5AAFhIAbC8woplsVJpR0tAhgQR4S96VYQ==} '@volar/typescript@1.11.1': resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} - '@volar/typescript@2.3.2': - resolution: {integrity: sha512-HJ1mjiEU/R1Wg3lrBp9jqNZvMOkNLA8+ryHhrzHAjV7pv214mQT/mB/1msu3mduh1Q2iDETU4Vttl5RA7ZPezg==} + '@volar/typescript@2.4.0-alpha.5': + resolution: {integrity: sha512-D9nzGP09afyLlsXC5rzVeLzEaMLOmW1GGPyOiuXRRGTLshX+/cp+MNsUbwUd3pih0OhRmpUFl4VHpUGA2M4iBw==} - '@vue/compiler-core@3.4.30': - resolution: {integrity: sha512-ZL8y4Xxdh8O6PSwfdZ1IpQ24PjTAieOz3jXb/MDTfDtANcKBMxg1KLm6OX2jofsaQGYfIVzd3BAG22i56/cF1w==} + '@vue/compiler-core@3.4.31': + resolution: {integrity: sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==} - '@vue/compiler-dom@3.4.30': - resolution: {integrity: sha512-+16Sd8lYr5j/owCbr9dowcNfrHd+pz+w2/b5Lt26Oz/kB90C9yNbxQ3bYOvt7rI2bxk0nqda39hVcwDFw85c2Q==} + '@vue/compiler-dom@3.4.31': + resolution: {integrity: sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==} - '@vue/compiler-sfc@3.4.30': - resolution: {integrity: sha512-8vElKklHn/UY8+FgUFlQrYAPbtiSB2zcgeRKW7HkpSRn/JjMRmZvuOtwDx036D1aqKNSTtXkWRfqx53Qb+HmMg==} + '@vue/compiler-sfc@3.4.31': + resolution: {integrity: sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==} - '@vue/compiler-ssr@3.4.30': - resolution: {integrity: sha512-ZJ56YZGXJDd6jky4mmM0rNaNP6kIbQu9LTKZDhcpddGe/3QIalB1WHHmZ6iZfFNyj5mSypTa4+qDJa5VIuxMSg==} + '@vue/compiler-ssr@3.4.31': + resolution: {integrity: sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==} - '@vue/devtools-api@7.3.4': - resolution: {integrity: sha512-E5dJlLW+NgGb+WS33y99ioOJL2OXpVhje6VwXGJ/q5fNizJDpe67Ml0GBSrlYOKNSjZs2mwcZd7B3e12th3Q0g==} + '@vue/devtools-api@7.3.5': + resolution: {integrity: sha512-BSdBBu5hOIv+gBJC9jzYMh5bC27FQwjWLSb8fVAniqlL9gvsqvK27xTgczMf+hgctlszMYQnRm3bpY/j8vhPqw==} - '@vue/devtools-kit@7.3.4': - resolution: {integrity: sha512-DalQZWaFLRyA4qfKT0WT7e+q2AwvYoTwd0pWqswHqcpviXw+oU6FlSJHMrEACB3lBHjN1KBS9Kh527sWIe1vcg==} + '@vue/devtools-kit@7.3.5': + resolution: {integrity: sha512-wwfi10gJ1HMtjzcd8aIOnzBHlIRqsYDgcDyrKvkeyc0Gbcoe7UrkXRVHZUOtcxxoplHA0PwpT6wFg0uUCmi8Ww==} - '@vue/devtools-shared@7.3.4': - resolution: {integrity: sha512-5S5cHh7oWLZdboujnLteR3rT8UGfKHfA34aGLyFRB/B5TqBxmeLW1Rq32xW6TCDEy4isoYsYHGwJVp6DQcpiDA==} + '@vue/devtools-shared@7.3.5': + resolution: {integrity: sha512-Rqii3VazmWTi67a86rYopi61n5Ved05EybJCwyrfoO9Ok3MaS/4yRFl706ouoISMlyrASJFEzM0/AiDA6w4f9A==} '@vue/language-core@1.8.27': resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} @@ -621,30 +621,30 @@ packages: typescript: optional: true - '@vue/language-core@2.0.22': - resolution: {integrity: sha512-dNTAAtEOuMiz7N1s5tKpypnVVCtawxVSF5BukD0ELcYSw+DSbrSlYYSw8GuwvurodCeYFSHsmslE+c2sYDNoiA==} + '@vue/language-core@2.0.24': + resolution: {integrity: sha512-997YD6Lq/66LXr3ZOLNxDCmyn13z9NP8LU1UZn9hGCDWhzlbXAIP0hOgL3w3x4RKEaWTaaRtsHP9DzHvmduruQ==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@vue/reactivity@3.4.30': - resolution: {integrity: sha512-bVJurnCe3LS0JII8PPoAA63Zd2MBzcKrEzwdQl92eHCcxtIbxD2fhNwJpa+KkM3Y/A4T5FUnmdhgKwOf6BfbcA==} + '@vue/reactivity@3.4.31': + resolution: {integrity: sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q==} - '@vue/runtime-core@3.4.30': - resolution: {integrity: sha512-qaFEbnNpGz+tlnkaualomogzN8vBLkgzK55uuWjYXbYn039eOBZrWxyXWq/7qh9Bz2FPifZqGjVDl/FXiq9L2g==} + '@vue/runtime-core@3.4.31': + resolution: {integrity: sha512-LDkztxeUPazxG/p8c5JDDKPfkCDBkkiNLVNf7XZIUnJ+66GVGkP+TIh34+8LtPisZ+HMWl2zqhIw0xN5MwU1cw==} - '@vue/runtime-dom@3.4.30': - resolution: {integrity: sha512-tV6B4YiZRj5QsaJgw2THCy5C1H+2UeywO9tqgWEc21tn85qHEERndHN/CxlyXvSBFrpmlexCIdnqPuR9RM9thw==} + '@vue/runtime-dom@3.4.31': + resolution: {integrity: sha512-2Auws3mB7+lHhTFCg8E9ZWopA6Q6L455EcU7bzcQ4x6Dn4cCPuqj6S2oBZgN2a8vJRS/LSYYxwFFq2Hlx3Fsaw==} - '@vue/server-renderer@3.4.30': - resolution: {integrity: sha512-TBD3eqR1DeDc0cMrXS/vEs/PWzq1uXxnvjoqQuDGFIEHFIwuDTX/KWAQKIBjyMWLFHEeTDGYVsYci85z2UbTDg==} + '@vue/server-renderer@3.4.31': + resolution: {integrity: sha512-D5BLbdvrlR9PE3by9GaUp1gQXlCNadIZytMIb8H2h3FMWJd4oUfkUTEH2wAr3qxoRz25uxbTcbqd3WKlm9EHQA==} peerDependencies: - vue: 3.4.30 + vue: 3.4.31 - '@vue/shared@3.4.30': - resolution: {integrity: sha512-CLg+f8RQCHQnKvuHY9adMsMaQOcqclh6Z5V9TaoMgy0ut0tz848joZ7/CYFFyF/yZ5i2yaw7Fn498C+CNZVHIg==} + '@vue/shared@3.4.31': + resolution: {integrity: sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==} '@vueuse/core@10.11.0': resolution: {integrity: sha512-x3sD4Mkm7PJ+pcq3HX8PLPBadXCAlSDR/waK87dz0gQE+qJnaaFhc/dZVfJz+IUYzTMVGum2QlR7ImiJQN4s6g==} @@ -709,8 +709,8 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - algoliasearch@4.23.3: - resolution: {integrity: sha512-Le/3YgNvjW9zxIQMRhUHuhiUjAlKY/zsdZpfq4dlLqg6mEm0nL6yk+7f2hDOtLpxsgE4jSzDmvHL7nXdBp5feg==} + algoliasearch@4.24.0: + resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==} ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -851,8 +851,8 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.5.0: - resolution: {integrity: sha512-+NAOZFrW/jFTS3dASCGBxX1pkFD0/fsO+hfAkJ4TyYKwgsXZbqzrw+seCYFCcPCYXvnD67tAnglU7GQTz6kcVw==} + eslint@9.6.0: + resolution: {integrity: sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true @@ -949,8 +949,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@15.6.0: - resolution: {integrity: sha512-UzcJi88Hw//CurUIRa9Jxb0vgOCcuD/MNjwmXp633cyaRKkCWACkoqHCtfZv43b1kqXGg/fpOa8bwgacCeXsVg==} + globals@15.7.0: + resolution: {integrity: sha512-ivatRXWwKC6ImcdKO7dOwXuXR5XFrdwo45qFwD7D0qOkEPzzJdLXC3BHceBdyrPOD3p1suPaWi4Y4NMm2D++AQ==} engines: {node: '>=18'} globby@11.1.0: @@ -1116,8 +1116,8 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} minisearch@6.3.0: @@ -1192,8 +1192,8 @@ packages: perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - ph-utils@0.6.2: - resolution: {integrity: sha512-laeDS2cn4t5rn4odt5K1Y70B9SgFZCAvhag1csLIM3wcIW74zOt7rYrEp9pCPzS8unGMIlcDgERN3oue2ZXZDg==} + ph-utils@0.8.1: + resolution: {integrity: sha512-MIip3liBpMagKTp52lQlMJGG7KmMCyLq+LNgoR97cG7Zvx+CgLCMuuCHzzUOOlsmMEd3WhcHI6FjRb9KKWAEsA==} picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} @@ -1210,8 +1210,8 @@ packages: resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} engines: {node: '>=4'} - postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + postcss@8.4.39: + resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} engines: {node: ^10 || ^12 || >=14} preact@10.22.0: @@ -1296,8 +1296,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.9.0: - resolution: {integrity: sha512-i6//Lqgn7+7nZA0qVjoYH0085YdNk4MC+tJV4bo+HgjgRMJ0JmkLZzFAuvVioJqLkcGDK5GAMpghZEZkCnwxpQ==} + shiki@1.10.0: + resolution: {integrity: sha512-YD2sXQ+TMD/F9BimV9Jn0wj35pqOvywvOG/3PB6hGHyGKlM7TJ9tyJ02jOb2kF8F0HfJwKNYrh3sW7jEcuRlXA==} slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} @@ -1414,8 +1414,8 @@ packages: vite: optional: true - vite@5.3.1: - resolution: {integrity: sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==} + vite@5.3.2: + resolution: {integrity: sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -1483,14 +1483,14 @@ packages: peerDependencies: typescript: '*' - vue-tsc@2.0.22: - resolution: {integrity: sha512-lMBIwPBO0sxCcmvu45yt1b035AaQ8/XSXQDk8m75y4j0jSXY/y/XzfEtssQ9JMS47lDaR10O3/926oCs8OeGUw==} + vue-tsc@2.0.24: + resolution: {integrity: sha512-1qi4P8L7yS78A7OJ7CDDxUIZPD6nVxoQEgX3DkRZNi1HI1qOfzOJwQlNpmwkogSVD6S/XcanbW9sktzpSxz6rA==} hasBin: true peerDependencies: - typescript: '*' + typescript: '>=5.0.0' - vue@3.4.30: - resolution: {integrity: sha512-NcxtKCwkdf1zPsr7Y8+QlDBCGqxvjLXF2EX+yi76rV5rrz90Y6gK1cq0olIhdWGgrlhs9ElHuhi9t3+W5sG5Xw==} + vue@3.4.31: + resolution: {integrity: sha512-njqRrOy7W3YLAlVqSKpBebtZpDVg21FPoaq1I7f/+qqBThK9ChAIjkRWgeP6Eat+8C+iia4P3OYqpATP21BCoQ==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -1524,109 +1524,109 @@ packages: snapshots: - '@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.14.0)': + '@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.14.0)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.14.0) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.14.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.14.0)': + '@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.14.0)': dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) search-insights: 2.14.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)': + '@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)': dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) - '@algolia/client-search': 4.23.3 - algoliasearch: 4.23.3 + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + '@algolia/client-search': 4.24.0 + algoliasearch: 4.24.0 - '@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)': + '@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)': dependencies: - '@algolia/client-search': 4.23.3 - algoliasearch: 4.23.3 + '@algolia/client-search': 4.24.0 + algoliasearch: 4.24.0 - '@algolia/cache-browser-local-storage@4.23.3': + '@algolia/cache-browser-local-storage@4.24.0': dependencies: - '@algolia/cache-common': 4.23.3 + '@algolia/cache-common': 4.24.0 - '@algolia/cache-common@4.23.3': {} + '@algolia/cache-common@4.24.0': {} - '@algolia/cache-in-memory@4.23.3': + '@algolia/cache-in-memory@4.24.0': dependencies: - '@algolia/cache-common': 4.23.3 + '@algolia/cache-common': 4.24.0 - '@algolia/client-account@4.23.3': + '@algolia/client-account@4.24.0': dependencies: - '@algolia/client-common': 4.23.3 - '@algolia/client-search': 4.23.3 - '@algolia/transporter': 4.23.3 + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/transporter': 4.24.0 - '@algolia/client-analytics@4.23.3': + '@algolia/client-analytics@4.24.0': dependencies: - '@algolia/client-common': 4.23.3 - '@algolia/client-search': 4.23.3 - '@algolia/requester-common': 4.23.3 - '@algolia/transporter': 4.23.3 + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 - '@algolia/client-common@4.23.3': + '@algolia/client-common@4.24.0': dependencies: - '@algolia/requester-common': 4.23.3 - '@algolia/transporter': 4.23.3 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 - '@algolia/client-personalization@4.23.3': + '@algolia/client-personalization@4.24.0': dependencies: - '@algolia/client-common': 4.23.3 - '@algolia/requester-common': 4.23.3 - '@algolia/transporter': 4.23.3 + '@algolia/client-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 - '@algolia/client-search@4.23.3': + '@algolia/client-search@4.24.0': dependencies: - '@algolia/client-common': 4.23.3 - '@algolia/requester-common': 4.23.3 - '@algolia/transporter': 4.23.3 + '@algolia/client-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 - '@algolia/logger-common@4.23.3': {} + '@algolia/logger-common@4.24.0': {} - '@algolia/logger-console@4.23.3': + '@algolia/logger-console@4.24.0': dependencies: - '@algolia/logger-common': 4.23.3 + '@algolia/logger-common': 4.24.0 - '@algolia/recommend@4.23.3': + '@algolia/recommend@4.24.0': dependencies: - '@algolia/cache-browser-local-storage': 4.23.3 - '@algolia/cache-common': 4.23.3 - '@algolia/cache-in-memory': 4.23.3 - '@algolia/client-common': 4.23.3 - '@algolia/client-search': 4.23.3 - '@algolia/logger-common': 4.23.3 - '@algolia/logger-console': 4.23.3 - '@algolia/requester-browser-xhr': 4.23.3 - '@algolia/requester-common': 4.23.3 - '@algolia/requester-node-http': 4.23.3 - '@algolia/transporter': 4.23.3 + '@algolia/cache-browser-local-storage': 4.24.0 + '@algolia/cache-common': 4.24.0 + '@algolia/cache-in-memory': 4.24.0 + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/logger-console': 4.24.0 + '@algolia/requester-browser-xhr': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/requester-node-http': 4.24.0 + '@algolia/transporter': 4.24.0 - '@algolia/requester-browser-xhr@4.23.3': + '@algolia/requester-browser-xhr@4.24.0': dependencies: - '@algolia/requester-common': 4.23.3 + '@algolia/requester-common': 4.24.0 - '@algolia/requester-common@4.23.3': {} + '@algolia/requester-common@4.24.0': {} - '@algolia/requester-node-http@4.23.3': + '@algolia/requester-node-http@4.24.0': dependencies: - '@algolia/requester-common': 4.23.3 + '@algolia/requester-common': 4.24.0 - '@algolia/transporter@4.23.3': + '@algolia/transporter@4.24.0': dependencies: - '@algolia/cache-common': 4.23.3 - '@algolia/logger-common': 4.23.3 - '@algolia/requester-common': 4.23.3 + '@algolia/cache-common': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/requester-common': 4.24.0 '@babel/helper-string-parser@7.24.7': {} @@ -1644,9 +1644,9 @@ snapshots: '@docsearch/css@3.6.0': {} - '@docsearch/js@3.6.0(@algolia/client-search@4.23.3)(search-insights@2.14.0)': + '@docsearch/js@3.6.0(@algolia/client-search@4.24.0)(search-insights@2.14.0)': dependencies: - '@docsearch/react': 3.6.0(@algolia/client-search@4.23.3)(search-insights@2.14.0) + '@docsearch/react': 3.6.0(@algolia/client-search@4.24.0)(search-insights@2.14.0) preact: 10.22.0 transitivePeerDependencies: - '@algolia/client-search' @@ -1655,12 +1655,12 @@ snapshots: - react-dom - search-insights - '@docsearch/react@3.6.0(@algolia/client-search@4.23.3)(search-insights@2.14.0)': + '@docsearch/react@3.6.0(@algolia/client-search@4.24.0)(search-insights@2.14.0)': dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.14.0) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.14.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) '@docsearch/css': 3.6.0 - algoliasearch: 4.23.3 + algoliasearch: 4.24.0 optionalDependencies: search-insights: 2.14.0 transitivePeerDependencies: @@ -1735,14 +1735,14 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.5.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.6.0)': dependencies: - eslint: 9.5.0 + eslint: 9.6.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.10.1': {} + '@eslint-community/regexpp@4.11.0': {} - '@eslint/config-array@0.16.0': + '@eslint/config-array@0.17.0': dependencies: '@eslint/object-schema': 2.1.4 debug: 4.3.5 @@ -1764,7 +1764,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.5.0': {} + '@eslint/js@9.6.0': {} '@eslint/object-schema@2.1.4': {} @@ -1774,23 +1774,23 @@ snapshots: '@jridgewell/sourcemap-codec@1.4.15': {} - '@microsoft/api-extractor-model@7.28.13(@types/node@20.14.8)': + '@microsoft/api-extractor-model@7.28.13(@types/node@20.14.9)': dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@20.14.8) + '@rushstack/node-core-library': 4.0.2(@types/node@20.14.9) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.43.0(@types/node@20.14.8)': + '@microsoft/api-extractor@7.43.0(@types/node@20.14.9)': dependencies: - '@microsoft/api-extractor-model': 7.28.13(@types/node@20.14.8) + '@microsoft/api-extractor-model': 7.28.13(@types/node@20.14.9) '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@20.14.8) + '@rushstack/node-core-library': 4.0.2(@types/node@20.14.9) '@rushstack/rig-package': 0.5.2 - '@rushstack/terminal': 0.10.0(@types/node@20.14.8) - '@rushstack/ts-command-line': 4.19.1(@types/node@20.14.8) + '@rushstack/terminal': 0.10.0(@types/node@20.14.9) + '@rushstack/ts-command-line': 4.19.1(@types/node@20.14.9) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.8 @@ -1877,7 +1877,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.18.0': optional: true - '@rushstack/node-core-library@4.0.2(@types/node@20.14.8)': + '@rushstack/node-core-library@4.0.2(@types/node@20.14.9)': dependencies: fs-extra: 7.0.1 import-lazy: 4.0.0 @@ -1886,34 +1886,34 @@ snapshots: semver: 7.5.4 z-schema: 5.0.5 optionalDependencies: - '@types/node': 20.14.8 + '@types/node': 20.14.9 '@rushstack/rig-package@0.5.2': dependencies: resolve: 1.22.8 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.10.0(@types/node@20.14.8)': + '@rushstack/terminal@0.10.0(@types/node@20.14.9)': dependencies: - '@rushstack/node-core-library': 4.0.2(@types/node@20.14.8) + '@rushstack/node-core-library': 4.0.2(@types/node@20.14.9) supports-color: 8.1.1 optionalDependencies: - '@types/node': 20.14.8 + '@types/node': 20.14.9 - '@rushstack/ts-command-line@4.19.1(@types/node@20.14.8)': + '@rushstack/ts-command-line@4.19.1(@types/node@20.14.9)': dependencies: - '@rushstack/terminal': 0.10.0(@types/node@20.14.8) + '@rushstack/terminal': 0.10.0(@types/node@20.14.9) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 transitivePeerDependencies: - '@types/node' - '@shikijs/core@1.9.0': {} + '@shikijs/core@1.10.0': {} - '@shikijs/transformers@1.9.0': + '@shikijs/transformers@1.10.0': dependencies: - shiki: 1.9.0 + shiki: 1.10.0 '@types/argparse@1.0.38': {} @@ -1928,21 +1928,21 @@ snapshots: '@types/mdurl@2.0.0': {} - '@types/node@20.14.8': + '@types/node@20.14.9': dependencies: undici-types: 5.26.5 '@types/web-bluetooth@0.0.20': {} - '@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(typescript@5.5.2)': + '@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(typescript@5.5.2)': dependencies: - '@eslint-community/regexpp': 4.10.1 - '@typescript-eslint/parser': 7.13.1(eslint@9.5.0)(typescript@5.5.2) - '@typescript-eslint/scope-manager': 7.13.1 - '@typescript-eslint/type-utils': 7.13.1(eslint@9.5.0)(typescript@5.5.2) - '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.5.2) - '@typescript-eslint/visitor-keys': 7.13.1 - eslint: 9.5.0 + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 7.14.1(eslint@9.6.0)(typescript@5.5.2) + '@typescript-eslint/scope-manager': 7.14.1 + '@typescript-eslint/type-utils': 7.14.1(eslint@9.6.0)(typescript@5.5.2) + '@typescript-eslint/utils': 7.14.1(eslint@9.6.0)(typescript@5.5.2) + '@typescript-eslint/visitor-keys': 7.14.1 + eslint: 9.6.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -1952,46 +1952,46 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2)': + '@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2)': dependencies: - '@typescript-eslint/scope-manager': 7.13.1 - '@typescript-eslint/types': 7.13.1 - '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.5.2) - '@typescript-eslint/visitor-keys': 7.13.1 + '@typescript-eslint/scope-manager': 7.14.1 + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.2) + '@typescript-eslint/visitor-keys': 7.14.1 debug: 4.3.5 - eslint: 9.5.0 + eslint: 9.6.0 optionalDependencies: typescript: 5.5.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.13.1': + '@typescript-eslint/scope-manager@7.14.1': dependencies: - '@typescript-eslint/types': 7.13.1 - '@typescript-eslint/visitor-keys': 7.13.1 + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/visitor-keys': 7.14.1 - '@typescript-eslint/type-utils@7.13.1(eslint@9.5.0)(typescript@5.5.2)': + '@typescript-eslint/type-utils@7.14.1(eslint@9.6.0)(typescript@5.5.2)': dependencies: - '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.5.2) - '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.5.2) + '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.2) + '@typescript-eslint/utils': 7.14.1(eslint@9.6.0)(typescript@5.5.2) debug: 4.3.5 - eslint: 9.5.0 + eslint: 9.6.0 ts-api-utils: 1.3.0(typescript@5.5.2) optionalDependencies: typescript: 5.5.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@7.13.1': {} + '@typescript-eslint/types@7.14.1': {} - '@typescript-eslint/typescript-estree@7.13.1(typescript@5.5.2)': + '@typescript-eslint/typescript-estree@7.14.1(typescript@5.5.2)': dependencies: - '@typescript-eslint/types': 7.13.1 - '@typescript-eslint/visitor-keys': 7.13.1 + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/visitor-keys': 7.14.1 debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.4 + minimatch: 9.0.5 semver: 7.6.2 ts-api-utils: 1.3.0(typescript@5.5.2) optionalDependencies: @@ -1999,89 +1999,89 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.13.1(eslint@9.5.0)(typescript@5.5.2)': + '@typescript-eslint/utils@7.14.1(eslint@9.6.0)(typescript@5.5.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) - '@typescript-eslint/scope-manager': 7.13.1 - '@typescript-eslint/types': 7.13.1 - '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.5.2) - eslint: 9.5.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@typescript-eslint/scope-manager': 7.14.1 + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.2) + eslint: 9.6.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.13.1': + '@typescript-eslint/visitor-keys@7.14.1': dependencies: - '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/types': 7.14.1 eslint-visitor-keys: 3.4.3 - '@vitejs/plugin-vue@5.0.5(vite@5.3.1(@types/node@20.14.8)(less@4.2.0))(vue@3.4.30(typescript@5.5.2))': + '@vitejs/plugin-vue@5.0.5(vite@5.3.2(@types/node@20.14.9)(less@4.2.0))(vue@3.4.31(typescript@5.5.2))': dependencies: - vite: 5.3.1(@types/node@20.14.8)(less@4.2.0) - vue: 3.4.30(typescript@5.5.2) + vite: 5.3.2(@types/node@20.14.9)(less@4.2.0) + vue: 3.4.31(typescript@5.5.2) '@volar/language-core@1.11.1': dependencies: '@volar/source-map': 1.11.1 - '@volar/language-core@2.3.2': + '@volar/language-core@2.4.0-alpha.5': dependencies: - '@volar/source-map': 2.3.2 + '@volar/source-map': 2.4.0-alpha.5 '@volar/source-map@1.11.1': dependencies: muggle-string: 0.3.1 - '@volar/source-map@2.3.2': {} + '@volar/source-map@2.4.0-alpha.5': {} '@volar/typescript@1.11.1': dependencies: '@volar/language-core': 1.11.1 path-browserify: 1.0.1 - '@volar/typescript@2.3.2': + '@volar/typescript@2.4.0-alpha.5': dependencies: - '@volar/language-core': 2.3.2 + '@volar/language-core': 2.4.0-alpha.5 path-browserify: 1.0.1 vscode-uri: 3.0.8 - '@vue/compiler-core@3.4.30': + '@vue/compiler-core@3.4.31': dependencies: '@babel/parser': 7.24.7 - '@vue/shared': 3.4.30 + '@vue/shared': 3.4.31 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.0 - '@vue/compiler-dom@3.4.30': + '@vue/compiler-dom@3.4.31': dependencies: - '@vue/compiler-core': 3.4.30 - '@vue/shared': 3.4.30 + '@vue/compiler-core': 3.4.31 + '@vue/shared': 3.4.31 - '@vue/compiler-sfc@3.4.30': + '@vue/compiler-sfc@3.4.31': dependencies: '@babel/parser': 7.24.7 - '@vue/compiler-core': 3.4.30 - '@vue/compiler-dom': 3.4.30 - '@vue/compiler-ssr': 3.4.30 - '@vue/shared': 3.4.30 + '@vue/compiler-core': 3.4.31 + '@vue/compiler-dom': 3.4.31 + '@vue/compiler-ssr': 3.4.31 + '@vue/shared': 3.4.31 estree-walker: 2.0.2 magic-string: 0.30.10 - postcss: 8.4.38 + postcss: 8.4.39 source-map-js: 1.2.0 - '@vue/compiler-ssr@3.4.30': + '@vue/compiler-ssr@3.4.31': dependencies: - '@vue/compiler-dom': 3.4.30 - '@vue/shared': 3.4.30 + '@vue/compiler-dom': 3.4.31 + '@vue/shared': 3.4.31 - '@vue/devtools-api@7.3.4': + '@vue/devtools-api@7.3.5': dependencies: - '@vue/devtools-kit': 7.3.4 + '@vue/devtools-kit': 7.3.5 - '@vue/devtools-kit@7.3.4': + '@vue/devtools-kit@7.3.5': dependencies: - '@vue/devtools-shared': 7.3.4 + '@vue/devtools-shared': 7.3.5 birpc: 0.2.17 hookable: 5.5.3 mitt: 3.0.1 @@ -2089,7 +2089,7 @@ snapshots: speakingurl: 14.0.1 superjson: 2.2.1 - '@vue/devtools-shared@7.3.4': + '@vue/devtools-shared@7.3.5': dependencies: rfdc: 1.4.1 @@ -2097,68 +2097,68 @@ snapshots: dependencies: '@volar/language-core': 1.11.1 '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.4.30 - '@vue/shared': 3.4.30 + '@vue/compiler-dom': 3.4.31 + '@vue/shared': 3.4.31 computeds: 0.0.1 - minimatch: 9.0.4 + minimatch: 9.0.5 muggle-string: 0.3.1 path-browserify: 1.0.1 vue-template-compiler: 2.7.16 optionalDependencies: typescript: 5.5.2 - '@vue/language-core@2.0.22(typescript@5.5.2)': + '@vue/language-core@2.0.24(typescript@5.5.2)': dependencies: - '@volar/language-core': 2.3.2 - '@vue/compiler-dom': 3.4.30 - '@vue/shared': 3.4.30 + '@volar/language-core': 2.4.0-alpha.5 + '@vue/compiler-dom': 3.4.31 + '@vue/shared': 3.4.31 computeds: 0.0.1 - minimatch: 9.0.4 + minimatch: 9.0.5 muggle-string: 0.4.1 path-browserify: 1.0.1 vue-template-compiler: 2.7.16 optionalDependencies: typescript: 5.5.2 - '@vue/reactivity@3.4.30': + '@vue/reactivity@3.4.31': dependencies: - '@vue/shared': 3.4.30 + '@vue/shared': 3.4.31 - '@vue/runtime-core@3.4.30': + '@vue/runtime-core@3.4.31': dependencies: - '@vue/reactivity': 3.4.30 - '@vue/shared': 3.4.30 + '@vue/reactivity': 3.4.31 + '@vue/shared': 3.4.31 - '@vue/runtime-dom@3.4.30': + '@vue/runtime-dom@3.4.31': dependencies: - '@vue/reactivity': 3.4.30 - '@vue/runtime-core': 3.4.30 - '@vue/shared': 3.4.30 + '@vue/reactivity': 3.4.31 + '@vue/runtime-core': 3.4.31 + '@vue/shared': 3.4.31 csstype: 3.1.3 - '@vue/server-renderer@3.4.30(vue@3.4.30(typescript@5.5.2))': + '@vue/server-renderer@3.4.31(vue@3.4.31(typescript@5.5.2))': dependencies: - '@vue/compiler-ssr': 3.4.30 - '@vue/shared': 3.4.30 - vue: 3.4.30(typescript@5.5.2) + '@vue/compiler-ssr': 3.4.31 + '@vue/shared': 3.4.31 + vue: 3.4.31(typescript@5.5.2) - '@vue/shared@3.4.30': {} + '@vue/shared@3.4.31': {} - '@vueuse/core@10.11.0(vue@3.4.30(typescript@5.5.2))': + '@vueuse/core@10.11.0(vue@3.4.31(typescript@5.5.2))': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.11.0 - '@vueuse/shared': 10.11.0(vue@3.4.30(typescript@5.5.2)) - vue-demi: 0.14.8(vue@3.4.30(typescript@5.5.2)) + '@vueuse/shared': 10.11.0(vue@3.4.31(typescript@5.5.2)) + vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.2)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/integrations@10.11.0(focus-trap@7.5.4)(vue@3.4.30(typescript@5.5.2))': + '@vueuse/integrations@10.11.0(focus-trap@7.5.4)(vue@3.4.31(typescript@5.5.2))': dependencies: - '@vueuse/core': 10.11.0(vue@3.4.30(typescript@5.5.2)) - '@vueuse/shared': 10.11.0(vue@3.4.30(typescript@5.5.2)) - vue-demi: 0.14.8(vue@3.4.30(typescript@5.5.2)) + '@vueuse/core': 10.11.0(vue@3.4.31(typescript@5.5.2)) + '@vueuse/shared': 10.11.0(vue@3.4.31(typescript@5.5.2)) + vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.2)) optionalDependencies: focus-trap: 7.5.4 transitivePeerDependencies: @@ -2167,9 +2167,9 @@ snapshots: '@vueuse/metadata@10.11.0': {} - '@vueuse/shared@10.11.0(vue@3.4.30(typescript@5.5.2))': + '@vueuse/shared@10.11.0(vue@3.4.31(typescript@5.5.2))': dependencies: - vue-demi: 0.14.8(vue@3.4.30(typescript@5.5.2)) + vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.2)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -2187,23 +2187,23 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - algoliasearch@4.23.3: - dependencies: - '@algolia/cache-browser-local-storage': 4.23.3 - '@algolia/cache-common': 4.23.3 - '@algolia/cache-in-memory': 4.23.3 - '@algolia/client-account': 4.23.3 - '@algolia/client-analytics': 4.23.3 - '@algolia/client-common': 4.23.3 - '@algolia/client-personalization': 4.23.3 - '@algolia/client-search': 4.23.3 - '@algolia/logger-common': 4.23.3 - '@algolia/logger-console': 4.23.3 - '@algolia/recommend': 4.23.3 - '@algolia/requester-browser-xhr': 4.23.3 - '@algolia/requester-common': 4.23.3 - '@algolia/requester-node-http': 4.23.3 - '@algolia/transporter': 4.23.3 + algoliasearch@4.24.0: + dependencies: + '@algolia/cache-browser-local-storage': 4.24.0 + '@algolia/cache-common': 4.24.0 + '@algolia/cache-in-memory': 4.24.0 + '@algolia/client-account': 4.24.0 + '@algolia/client-analytics': 4.24.0 + '@algolia/client-common': 4.24.0 + '@algolia/client-personalization': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/logger-console': 4.24.0 + '@algolia/recommend': 4.24.0 + '@algolia/requester-browser-xhr': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/requester-node-http': 4.24.0 + '@algolia/transporter': 4.24.0 ansi-regex@5.0.1: {} @@ -2323,16 +2323,16 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-plugin-vue@9.26.0(eslint@9.5.0): + eslint-plugin-vue@9.26.0(eslint@9.6.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) - eslint: 9.5.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + eslint: 9.6.0 globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.0 semver: 7.6.2 - vue-eslint-parser: 9.4.3(eslint@9.5.0) + vue-eslint-parser: 9.4.3(eslint@9.6.0) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color @@ -2351,13 +2351,13 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.5.0: + eslint@9.6.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) - '@eslint-community/regexpp': 4.10.1 - '@eslint/config-array': 0.16.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@eslint-community/regexpp': 4.11.0 + '@eslint/config-array': 0.17.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.5.0 + '@eslint/js': 9.6.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 @@ -2483,7 +2483,7 @@ snapshots: globals@14.0.0: {} - globals@15.6.0: {} + globals@15.7.0: {} globby@11.1.0: dependencies: @@ -2634,7 +2634,7 @@ snapshots: dependencies: brace-expansion: 1.1.11 - minimatch@9.0.4: + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 @@ -2697,7 +2697,7 @@ snapshots: perfect-debounce@1.0.0: {} - ph-utils@0.6.2: {} + ph-utils@0.8.1: {} picocolors@1.0.1: {} @@ -2711,7 +2711,7 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss@8.4.38: + postcss@8.4.39: dependencies: nanoid: 3.3.7 picocolors: 1.0.1 @@ -2798,9 +2798,9 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.9.0: + shiki@1.10.0: dependencies: - '@shikijs/core': 1.9.0 + '@shikijs/core': 1.10.0 slash@3.0.0: {} @@ -2872,9 +2872,9 @@ snapshots: validator@13.12.0: {} - vite-plugin-dts@3.9.1(@types/node@20.14.8)(rollup@4.18.0)(typescript@5.5.2)(vite@5.3.1(@types/node@20.14.8)(less@4.2.0)): + vite-plugin-dts@3.9.1(@types/node@20.14.9)(rollup@4.18.0)(typescript@5.5.2)(vite@5.3.2(@types/node@20.14.9)(less@4.2.0)): dependencies: - '@microsoft/api-extractor': 7.43.0(@types/node@20.14.8) + '@microsoft/api-extractor': 7.43.0(@types/node@20.14.9) '@rollup/pluginutils': 5.1.0(rollup@4.18.0) '@vue/language-core': 1.8.27(typescript@5.5.2) debug: 4.3.5 @@ -2883,42 +2883,42 @@ snapshots: typescript: 5.5.2 vue-tsc: 1.8.27(typescript@5.5.2) optionalDependencies: - vite: 5.3.1(@types/node@20.14.8)(less@4.2.0) + vite: 5.3.2(@types/node@20.14.9)(less@4.2.0) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite@5.3.1(@types/node@20.14.8)(less@4.2.0): + vite@5.3.2(@types/node@20.14.9)(less@4.2.0): dependencies: esbuild: 0.21.5 - postcss: 8.4.38 + postcss: 8.4.39 rollup: 4.18.0 optionalDependencies: - '@types/node': 20.14.8 + '@types/node': 20.14.9 fsevents: 2.3.3 less: 4.2.0 - vitepress@1.2.3(@algolia/client-search@4.23.3)(@types/node@20.14.8)(less@4.2.0)(postcss@8.4.38)(search-insights@2.14.0)(typescript@5.5.2): + vitepress@1.2.3(@algolia/client-search@4.24.0)(@types/node@20.14.9)(less@4.2.0)(postcss@8.4.39)(search-insights@2.14.0)(typescript@5.5.2): dependencies: '@docsearch/css': 3.6.0 - '@docsearch/js': 3.6.0(@algolia/client-search@4.23.3)(search-insights@2.14.0) - '@shikijs/core': 1.9.0 - '@shikijs/transformers': 1.9.0 + '@docsearch/js': 3.6.0(@algolia/client-search@4.24.0)(search-insights@2.14.0) + '@shikijs/core': 1.10.0 + '@shikijs/transformers': 1.10.0 '@types/markdown-it': 14.1.1 - '@vitejs/plugin-vue': 5.0.5(vite@5.3.1(@types/node@20.14.8)(less@4.2.0))(vue@3.4.30(typescript@5.5.2)) - '@vue/devtools-api': 7.3.4 - '@vue/shared': 3.4.30 - '@vueuse/core': 10.11.0(vue@3.4.30(typescript@5.5.2)) - '@vueuse/integrations': 10.11.0(focus-trap@7.5.4)(vue@3.4.30(typescript@5.5.2)) + '@vitejs/plugin-vue': 5.0.5(vite@5.3.2(@types/node@20.14.9)(less@4.2.0))(vue@3.4.31(typescript@5.5.2)) + '@vue/devtools-api': 7.3.5 + '@vue/shared': 3.4.31 + '@vueuse/core': 10.11.0(vue@3.4.31(typescript@5.5.2)) + '@vueuse/integrations': 10.11.0(focus-trap@7.5.4)(vue@3.4.31(typescript@5.5.2)) focus-trap: 7.5.4 mark.js: 8.11.1 minisearch: 6.3.0 - shiki: 1.9.0 - vite: 5.3.1(@types/node@20.14.8)(less@4.2.0) - vue: 3.4.30(typescript@5.5.2) + shiki: 1.10.0 + vite: 5.3.2(@types/node@20.14.9)(less@4.2.0) + vue: 3.4.31(typescript@5.5.2) optionalDependencies: - postcss: 8.4.38 + postcss: 8.4.39 transitivePeerDependencies: - '@algolia/client-search' - '@types/node' @@ -2948,14 +2948,14 @@ snapshots: vscode-uri@3.0.8: {} - vue-demi@0.14.8(vue@3.4.30(typescript@5.5.2)): + vue-demi@0.14.8(vue@3.4.31(typescript@5.5.2)): dependencies: - vue: 3.4.30(typescript@5.5.2) + vue: 3.4.31(typescript@5.5.2) - vue-eslint-parser@9.4.3(eslint@9.5.0): + vue-eslint-parser@9.4.3(eslint@9.6.0): dependencies: debug: 4.3.5 - eslint: 9.5.0 + eslint: 9.6.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 @@ -2977,20 +2977,20 @@ snapshots: semver: 7.6.2 typescript: 5.5.2 - vue-tsc@2.0.22(typescript@5.5.2): + vue-tsc@2.0.24(typescript@5.5.2): dependencies: - '@volar/typescript': 2.3.2 - '@vue/language-core': 2.0.22(typescript@5.5.2) + '@volar/typescript': 2.4.0-alpha.5 + '@vue/language-core': 2.0.24(typescript@5.5.2) semver: 7.6.2 typescript: 5.5.2 - vue@3.4.30(typescript@5.5.2): + vue@3.4.31(typescript@5.5.2): dependencies: - '@vue/compiler-dom': 3.4.30 - '@vue/compiler-sfc': 3.4.30 - '@vue/runtime-dom': 3.4.30 - '@vue/server-renderer': 3.4.30(vue@3.4.30(typescript@5.5.2)) - '@vue/shared': 3.4.30 + '@vue/compiler-dom': 3.4.31 + '@vue/compiler-sfc': 3.4.31 + '@vue/runtime-dom': 3.4.31 + '@vue/server-renderer': 3.4.31(vue@3.4.31(typescript@5.5.2)) + '@vue/shared': 3.4.31 optionalDependencies: typescript: 5.5.2 diff --git a/src/components/form/Form.vue b/src/components/form/Form.vue index 541573b6..15af5329 100644 --- a/src/components/form/Form.vue +++ b/src/components/form/Form.vue @@ -60,7 +60,7 @@ if (props.model != null && validator != null) { if (value !== oldValues[i]) { // 数据验证, 验证单一字段; validator - .validateKey(keys[i], value) + .validateKey(keys[i], value, props.model) .then(() => { errors.value[keys[i]] = undefined; }) diff --git a/src/components/icon/Search.vue b/src/components/icon/Search.vue index 006d39bb..2188c807 100644 --- a/src/components/icon/Search.vue +++ b/src/components/icon/Search.vue @@ -1,8 +1,8 @@ diff --git a/src/components/tabbar/Tabbar.vue b/src/components/tabbar/Tabbar.vue new file mode 100644 index 00000000..ee7cdfcd --- /dev/null +++ b/src/components/tabbar/Tabbar.vue @@ -0,0 +1,107 @@ + + diff --git a/src/components/tabbar/TabbarItem.vue b/src/components/tabbar/TabbarItem.vue new file mode 100644 index 00000000..4846bd61 --- /dev/null +++ b/src/components/tabbar/TabbarItem.vue @@ -0,0 +1,46 @@ + diff --git a/src/components/tabbar/constant.ts b/src/components/tabbar/constant.ts new file mode 100644 index 00000000..8fcac33f --- /dev/null +++ b/src/components/tabbar/constant.ts @@ -0,0 +1,6 @@ +import type { InjectionKey, ModelRef } from 'vue'; + +export const tabbarContext = Symbol('tabbarContext') as InjectionKey<{ + active: ModelRef; + change: (name: string | number) => void; +}>; diff --git a/src/index.ts b/src/index.ts index 53822a1d..0e19f7aa 100644 --- a/src/index.ts +++ b/src/index.ts @@ -12,6 +12,10 @@ export { default as ArrowLeftIcon } from './components/icon/ArrowLeft.vue'; export { default as ArrowRightIcon } from './components/icon/ArrowRight.vue'; export { default as ArrowUpIcon } from './components/icon/ArrowUp.vue'; export { default as ArrowDownIcon } from './components/icon/ArrowDown.vue'; +export { default as ReductionIcon } from './components/icon/Reduction.vue'; +export { default as RefreshLeftIcon } from './components/icon/RefreshLeft.vue'; +export { default as RefreshRightIcon } from './components/icon/RefreshRight.vue'; +export { default as SortIcon } from './components/icon/Sort.vue'; export { default as Input } from './components/Input.vue'; export { default as Clickoutside } from './directives/clickoutside'; export { default as Table } from './components/Table.vue'; @@ -31,10 +35,11 @@ export { default as RadioGroup } from './components/RadioGroup.vue'; export { default as Switch } from './components/Switch.vue'; export { default as FormItem } from './components/form/FormItem.vue'; export { default as Form } from './components/form/Form.vue'; - export { default as useFormReset } from './hooks/useFormReset'; export { default as Collapse } from './components/collapse/Collapse.vue'; export { default as CollapseItem } from './components/collapse/CollapseItem.vue'; export { default as Progress } from './components/Progress.vue'; export { default as LoadingBar } from './components/LoadingBar'; export { default as DescriptionPanel } from './components/DescriptionPanel.vue'; +export { default as Tabbar } from './components/tabbar/Tabbar.vue'; +export { default as TabbarItem } from './components/tabbar/TabbarItem.vue'; diff --git a/src/style.css b/src/style.css index b91725eb..56ec8218 100644 --- a/src/style.css +++ b/src/style.css @@ -195,3 +195,10 @@ flex-direction: column; justify-content: space-between; } + +.login-form-wrapper { + width: 400px; + border-radius: 5px; + border: 1px solid #e6e6e6; + padding: 15px; +} diff --git a/style/collapse-item/index.css b/style/collapse-item/index.css deleted file mode 100644 index 1fad15a4..00000000 --- a/style/collapse-item/index.css +++ /dev/null @@ -1,79 +0,0 @@ -.nt-collapse-item { - border-bottom: 1px solid var(--nt-collapse-border-color); - color: #333; - font-size: 14px; - margin-top: var(--nt-collapse-item-space, 0px); -} -.nt-collapse-item:first-child { - border-top-left-radius: var(--nt-collapse-border-radius, 0px); - border-top-right-radius: var(--nt-collapse-border-radius, 0px); -} -.nt-collapse-item:last-child { - border-bottom-left-radius: var(--nt-collapse-border-radius, 0px); - border-bottom-right-radius: var(--nt-collapse-border-radius, 0px); -} - -.nt-collapse-item__header { - display: flex; - align-items: center; - padding: 10px 0; - cursor: pointer; - justify-content: flex-start; -} - -.nt-collapse-item--content { - overflow-y: hidden; - border-bottom-left-radius: inherit; - border-bottom-right-radius: inherit; -} - -.nt-collapse-content--box { - padding-bottom: 15px; -} - -.nt-collapse-arrow-icon { - transform: rotate3d(0, 0, 1, 0deg); - transition: transform 0.3s ease-in-out; -} -.nt-collapse-arrow__left { - margin-right: 5px; -} -.nt-collapse-arrow__right { - margin-left: 5px; -} - -.nt-collapse-item--active .nt-collapse-arrow-icon { - transform: rotate3d(0, 0, 1, 90deg); -} - -.nt-collapse--background .nt-collapse-item { - border-left: 1px solid var(--nt-collapse-border-color); - border-right: 1px solid var(--nt-collapse-border-color); - background-color: rgba(0, 0, 0, 0.02); -} -.nt-collapse--background .nt-collapse-item:first-child { - border-top: 1px solid var(--nt-collapse-border-color); -} -.nt-collapse--background .nt-collapse-item__header { - padding: 10px 15px; -} - -.nt-collapse--background .nt-collapse-item--content { - border-top: 1px solid var(--nt-collapse-border-color); - background-color: #ffffff; -} -.nt-collapse--background .nt-collapse-content--box { - padding: 15px; -} - -.collapse-enter-active, -.collapse-leave-active { - transition: height 0.15s linear; -} - -.nt-collapse--space.nt-collapse--background .nt-collapse-item { - border-top: 1px solid var(--nt-collapse-border-color); -} -.nt-collapse--space .nt-collapse-item { - border-radius: var(--nt-collapse-border-radius, 0px); -} diff --git a/style/collapse-item/index.js b/style/collapse-item/index.js deleted file mode 100644 index 4582418a..00000000 --- a/style/collapse-item/index.js +++ /dev/null @@ -1 +0,0 @@ -import "./index.css"; \ No newline at end of file diff --git a/style/collapse/index.css b/style/collapse/index.css index e99de3b2..ebd751e2 100644 --- a/style/collapse/index.css +++ b/style/collapse/index.css @@ -4,3 +4,83 @@ /* 圆角 */ --nt-collapse-border-radius: 0px; } + +.nt-collapse-item { + border-bottom: 1px solid var(--nt-collapse-border-color); + color: #333; + font-size: 14px; + margin-top: var(--nt-collapse-item-space, 0px); +} +.nt-collapse-item:first-child { + border-top-left-radius: var(--nt-collapse-border-radius, 0px); + border-top-right-radius: var(--nt-collapse-border-radius, 0px); +} +.nt-collapse-item:last-child { + border-bottom-left-radius: var(--nt-collapse-border-radius, 0px); + border-bottom-right-radius: var(--nt-collapse-border-radius, 0px); +} + +.nt-collapse-item__header { + display: flex; + align-items: center; + padding: 10px 0; + cursor: pointer; + justify-content: flex-start; +} + +.nt-collapse-item--content { + overflow-y: hidden; + border-bottom-left-radius: inherit; + border-bottom-right-radius: inherit; +} + +.nt-collapse-content--box { + padding-bottom: 15px; +} + +.nt-collapse-arrow-icon { + transform: rotate3d(0, 0, 1, 0deg); + transition: transform 0.3s ease-in-out; +} +.nt-collapse-arrow__left { + margin-right: 5px; +} +.nt-collapse-arrow__right { + margin-left: 5px; +} + +.nt-collapse-item--active .nt-collapse-arrow-icon { + transform: rotate3d(0, 0, 1, 90deg); +} + +.nt-collapse--background .nt-collapse-item { + border-left: 1px solid var(--nt-collapse-border-color); + border-right: 1px solid var(--nt-collapse-border-color); + background-color: rgba(0, 0, 0, 0.02); +} +.nt-collapse--background .nt-collapse-item:first-child { + border-top: 1px solid var(--nt-collapse-border-color); +} +.nt-collapse--background .nt-collapse-item__header { + padding: 10px 15px; +} + +.nt-collapse--background .nt-collapse-item--content { + border-top: 1px solid var(--nt-collapse-border-color); + background-color: #ffffff; +} +.nt-collapse--background .nt-collapse-content--box { + padding: 15px; +} + +.collapse-enter-active, +.collapse-leave-active { + transition: height 0.15s linear; +} + +.nt-collapse--space.nt-collapse--background .nt-collapse-item { + border-top: 1px solid var(--nt-collapse-border-color); +} +.nt-collapse--space .nt-collapse-item { + border-radius: var(--nt-collapse-border-radius, 0px); +} diff --git a/style/form-item/index.css b/style/form-item/index.css deleted file mode 100644 index ba2203a3..00000000 --- a/style/form-item/index.css +++ /dev/null @@ -1,36 +0,0 @@ -.nt-form-item { - display: flex; - margin-bottom: 20px; - font-size: 14px; -} -.nt-form-item__label { - display: inline-flex; - align-items: flex-start; - justify-content: flex-end; - width: var(--nt-form-label-width, 80px); - height: var(--nt-form-edit-height, 32px); - line-height: var(--nt-form-edit-height, 32px); - color: #606266; - padding: 0 10px 0 0; -} -.nt-form-item.is-required .nt-form-item__label::before { - content: '*'; - margin-right: 4px; - color: var(--nt-warn-color, #f56c6c); -} -.nt-form-item__content { - flex: 1; - position: relative; -} -.nt-form-item__error { - font-size: 12px; - line-height: 1; - position: absolute; - top: 100%; - left: 0; - color: var(--nt-error-color, #ed3f13); - padding-top: 3px; -} -.nt-form-item.is-error .nt-input { - border-color: var(--nt-error-color, #ed3f13); -} diff --git a/style/form-item/index.js b/style/form-item/index.js deleted file mode 100644 index 4582418a..00000000 --- a/style/form-item/index.js +++ /dev/null @@ -1 +0,0 @@ -import "./index.css"; \ No newline at end of file diff --git a/style/form/index.css b/style/form/index.css index e69de29b..ba2203a3 100644 --- a/style/form/index.css +++ b/style/form/index.css @@ -0,0 +1,36 @@ +.nt-form-item { + display: flex; + margin-bottom: 20px; + font-size: 14px; +} +.nt-form-item__label { + display: inline-flex; + align-items: flex-start; + justify-content: flex-end; + width: var(--nt-form-label-width, 80px); + height: var(--nt-form-edit-height, 32px); + line-height: var(--nt-form-edit-height, 32px); + color: #606266; + padding: 0 10px 0 0; +} +.nt-form-item.is-required .nt-form-item__label::before { + content: '*'; + margin-right: 4px; + color: var(--nt-warn-color, #f56c6c); +} +.nt-form-item__content { + flex: 1; + position: relative; +} +.nt-form-item__error { + font-size: 12px; + line-height: 1; + position: absolute; + top: 100%; + left: 0; + color: var(--nt-error-color, #ed3f13); + padding-top: 3px; +} +.nt-form-item.is-error .nt-input { + border-color: var(--nt-error-color, #ed3f13); +} diff --git a/style/tabbar/index.css b/style/tabbar/index.css new file mode 100644 index 00000000..d2873f77 --- /dev/null +++ b/style/tabbar/index.css @@ -0,0 +1,120 @@ +.nt-tabbar { + --nt-tabbar-hover-color: var(--nt-primary-color-light1); + --nt-tabbar-active-color: var(--nt-primary-color); + --nt-tabbar-item-gap: 0; + --nt-tabbar-height: 38px; + position: relative; + overflow: hidden; + height: var(--nt-tabbar-height); +} + +.nt-tabbar-wrapper { + display: flex; + flex-wrap: nowrap; + height: 100%; + align-items: stretch; +} + +.nt-tabbar-item { + color: #666; + transition: all 0.3s ease-in-out; + cursor: pointer; + display: inline-flex; + justify-content: center; + align-items: center; +} + +.nt-tabbar-item:hover { + color: var(--nt-tabbar-hover-color); +} +.nt-tabbar-item.active { + color: var(--nt-tabbar-active-color); +} + +.nt-tabbar-item-icon { + font-size: 18px; + margin-bottom: 5px; + display: flex; + justify-content: center; + align-items: center; +} +.nt-tabbar-item-icon.only { + font-size: 24px; + margin-bottom: 0; +} +/* nav */ +.nt-tabbar--nav { + --nt-tabbar-height: 50px; + width: 100%; +} + +.nt-tabbar--nav .nt-tabbar-item { + flex-grow: 1; + display: inline-flex; + flex-direction: column; + justify-content: center; + align-items: center; + font-size: 12px; + line-height: 1; +} + +/* bar */ +.nt-tabbar--bar { + --nt-tabbar-bar-vertical-padding: 10px; + --nt-tabbar-item-gap: 30px; + --nt-tabbar-line-color: var(--nt-primary-color); + overflow: auto; + white-space: nowrap; +} + +.nt-tabbar--bar .nt-tabbar-item:not(:first-child) { + margin-left: var(--nt-tabbar-item-gap); +} +.nt-tabbar--bar-line { + position: absolute; + width: 32px; + left: 0; + bottom: 0; + border-radius: 1px; + height: 2px; + background-color: var(--nt-tabbar-line-color); + transition: all 0.3s ease-in-out; +} + +/* card */ +.nt-tabbar--card { + --nt-tabbar-card-border-color: #f5f7fa; + --nt-tabbar-line-color: #fff; + --nt-tabbar-item-gap: 0; + --nt-tabbar-card-border-radius: 5px; +} +.nt-tabbar-card-border { + position: absolute; + left: 0; + right: 0; + bottom: 0; + height: 1px; + background-color: var(--nt-tabbar-card-border-color); +} +.nt-tabbar--card .nt-tabbar-item { + padding: 0 15px; + background: #f5f7fa; + border: 1px solid #f0f0f0; +} + +.nt-tabbar--card .nt-tabbar-item:first-child { + border-top-left-radius: var(--nt-tabbar-card-border-radius); +} +.nt-tabbar--card .nt-tabbar-item:last-child { + border-top-right-radius: var(--nt-tabbar-card-border-radius); +} +.nt-tabbar-gap .nt-tabbar-item { + border-top-left-radius: var(--nt-tabbar-card-border-radius); + border-top-right-radius: var(--nt-tabbar-card-border-radius); +} +.nt-tabbar--card .nt-tabbar-item:not(:first-child) { + margin-left: var(--nt-tabbar-item-gap); +} +.nt-tabbar--card .nt-tabbar-item.active { + background: #fff; +} diff --git a/style/tabbar/index.js b/style/tabbar/index.js new file mode 100644 index 00000000..6a9a4b13 --- /dev/null +++ b/style/tabbar/index.js @@ -0,0 +1 @@ +import './index.css'; diff --git a/style/util/tabs.css b/style/util/tabs.css new file mode 100644 index 00000000..9370fd71 --- /dev/null +++ b/style/util/tabs.css @@ -0,0 +1,4 @@ +.nt-tabs .nt-tabbar { + margin-bottom: 15px; +} +