Compare commits

..

1 Commits

Author SHA1 Message Date
Soybean
159d1145b5 feat(projects): release v1.0.0 tauri branch 2024-03-31 17:29:53 +08:00
40 changed files with 4026 additions and 169 deletions

View File

@@ -1,28 +1,6 @@
# Changelog
## [v1.0.1](https://github.com/soybeanjs/soybean-admin/compare/tauri-v1.0.0...v1.0.1) (24-04-03)
###    🐞 Bug Fixes
- **projects**:
- fix flatRequest error type. fixed #376 &nbsp;-&nbsp; by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/376 [<samp>(1ec5e)</samp>](https://github.com/soybeanjs/soybean-admin/commit/1ec5ea0)
- add maxWidth for GlobalTab to fix bg with gap. fixed #350 &nbsp;-&nbsp; by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/350 [<samp>(cc539)</samp>](https://github.com/soybeanjs/soybean-admin/commit/cc53997)
### &nbsp;&nbsp;&nbsp;📖 Documentation
- **projects**: update README.md &nbsp;-&nbsp; by @honghuangdc [<samp>(76011)</samp>](https://github.com/soybeanjs/soybean-admin/commit/76011af)
### &nbsp;&nbsp;&nbsp;🏡 Chore
- **projects**:
- update deps &nbsp;-&nbsp; by @honghuangdc [<samp>(4babb)</samp>](https://github.com/soybeanjs/soybean-admin/commit/4babbe1)
- update pnpm version &nbsp;-&nbsp; by @honghuangdc [<samp>(9125c)</samp>](https://github.com/soybeanjs/soybean-admin/commit/9125cc9)
### &nbsp;&nbsp;&nbsp;❤️ Contributors
[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)&nbsp;&nbsp;
## [v1.0.0](https://github.com/soybeanjs/soybean-admin/compare/v0.10.4...v1.0.0) (24-03-31)
### &nbsp;&nbsp;&nbsp;🚀 Features

View File

@@ -48,7 +48,7 @@
- [预览地址](https://antd.soybeanjs.cn/)
- [Github 仓库](https://github.com/soybeanjs/soybean-admin-antd)
- [Gitee 仓库](https://gitee.com/honghuangdc/soybean-admin-antd)
-
- **旧版:**
- [预览地址](https://legacy.soybeanjs.cn/)
- [Github 仓库](https://github.com/soybeanjs/soybean-admin/tree/legacy)

View File

@@ -1,7 +1,7 @@
import { defineConfig } from '@soybeanjs/eslint-config';
export default defineConfig(
{ vue: true, unocss: true },
{ vue: true, unocss: true, ignores: ['src-tauri/target'] },
{
rules: {
'vue/multi-word-component-names': [

View File

@@ -1,8 +1,8 @@
{
"name": "soybean-admin",
"type": "module",
"version": "1.0.1",
"packageManager": "pnpm@8.15.6",
"version": "1.0.0",
"packageManager": "pnpm@8.15.5",
"description": "A fresh and elegant admin template, based on Vue3、Vite3、TypeScript、NaiveUI and UnoCSS. 一个基于Vue3、Vite3、TypeScript、NaiveUI and UnoCSS的清新优雅的中后台模版。",
"author": {
"name": "Soybean",
@@ -29,16 +29,19 @@
],
"scripts": {
"build": "vite build --mode prod",
"build:tauri": "pnpm tauri build",
"build:test": "vite build --mode test",
"cleanup": "sa cleanup",
"commit": "sa git-commit",
"dev": "vite --mode test",
"dev:prod": "vite --mode prod",
"dev:tauri": "pnpm tauri dev",
"gen-route": "sa gen-route",
"lint": "eslint . --fix",
"prepare": "simple-git-hooks",
"preview": "vite preview",
"release": "sa release",
"tauri-icon": "pnpm tauri icon ./public/logo.png",
"typecheck": "vue-tsc --noEmit --skipLibCheck",
"update-pkg": "sa update-pkg"
},
@@ -69,15 +72,16 @@
"@sa/scripts": "workspace:*",
"@sa/uno-preset": "workspace:*",
"@soybeanjs/eslint-config": "1.2.5",
"@tauri-apps/cli": "1.5.11",
"@types/lodash-es": "4.17.12",
"@types/node": "20.12.2",
"@types/nprogress": "0.2.3",
"@unocss/eslint-config": "0.58.9",
"@unocss/preset-icons": "0.58.9",
"@unocss/preset-uno": "0.58.9",
"@unocss/transformer-directives": "0.58.9",
"@unocss/transformer-variant-group": "0.58.9",
"@unocss/vite": "0.58.9",
"@unocss/eslint-config": "0.58.8",
"@unocss/preset-icons": "0.58.8",
"@unocss/preset-uno": "0.58.8",
"@unocss/transformer-directives": "0.58.8",
"@unocss/transformer-variant-group": "0.58.8",
"@unocss/vite": "0.58.8",
"@vitejs/plugin-vue": "5.0.4",
"@vitejs/plugin-vue-jsx": "3.1.0",
"eslint": "8.57.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@sa/axios",
"version": "1.0.1",
"version": "1.0.0",
"exports": {
".": "./src/index.ts"
},

View File

@@ -145,10 +145,9 @@ export function createFlatRequest<ResponseData = any, State = Record<string, unk
) {
const { instance, opts, cancelRequest, cancelAllRequest } = createCommonRequest<ResponseData>(axiosConfig, options);
const flatRequest: FlatRequestInstance<State, ResponseData> = async function flatRequest<
T = any,
R extends ResponseType = 'json'
>(config: CustomAxiosRequestConfig) {
const flatRequest: FlatRequestInstance<State> = async function flatRequest<T = any, R extends ResponseType = 'json'>(
config: CustomAxiosRequestConfig
) {
try {
const response: AxiosResponse<ResponseData> = await instance(config);
@@ -164,7 +163,7 @@ export function createFlatRequest<ResponseData = any, State = Record<string, unk
} catch (error) {
return { data: null, error };
}
} as FlatRequestInstance<State, ResponseData>;
} as FlatRequestInstance<State>;
flatRequest.cancelRequest = cancelRequest;
flatRequest.cancelAllRequest = cancelAllRequest;

View File

@@ -85,17 +85,15 @@ export type FlatResponseSuccessData<T = any> = {
error: null;
};
export type FlatResponseFailData<ResponseData = any> = {
export type FlatResponseFailData<T = any> = {
data: null;
error: AxiosError<ResponseData>;
error: AxiosError<T>;
};
export type FlatResponseData<T = any, ResponseData = any> =
| FlatResponseSuccessData<T>
| FlatResponseFailData<ResponseData>;
export type FlatResponseData<T = any> = FlatResponseSuccessData<T> | FlatResponseFailData<T>;
export interface FlatRequestInstance<S = Record<string, unknown>, ResponseData = any> extends RequestInstanceCommon<S> {
export interface FlatRequestInstance<S = Record<string, unknown>> extends RequestInstanceCommon<S> {
<T = any, R extends ResponseType = 'json'>(
config: CustomAxiosRequestConfig<R>
): Promise<FlatResponseData<MappedType<R, T>, ResponseData>>;
): Promise<FlatResponseData<MappedType<R, T>>>;
}

View File

@@ -1,6 +1,6 @@
{
"name": "@sa/color-palette",
"version": "1.0.1",
"version": "1.0.0",
"exports": {
".": "./src/index.ts"
},

View File

@@ -1,6 +1,6 @@
{
"name": "@sa/hooks",
"version": "1.0.1",
"version": "1.0.0",
"exports": {
".": "./src/index.ts"
},

View File

@@ -16,19 +16,19 @@ export type HookRequestInstanceResponseSuccessData<T = any> = {
error: Ref<null>;
};
export type HookRequestInstanceResponseFailData<ResponseData = any> = {
export type HookRequestInstanceResponseFailData<T = any> = {
data: Ref<null>;
error: Ref<AxiosError<ResponseData>>;
error: Ref<AxiosError<T>>;
};
export type HookRequestInstanceResponseData<T = any, ResponseData = any> = {
export type HookRequestInstanceResponseData<T = any> = {
loading: Ref<boolean>;
} & (HookRequestInstanceResponseSuccessData<T> | HookRequestInstanceResponseFailData<ResponseData>);
} & (HookRequestInstanceResponseSuccessData<T> | HookRequestInstanceResponseFailData<T>);
export interface HookRequestInstance<ResponseData = any> {
export interface HookRequestInstance {
<T = any, R extends ResponseType = 'json'>(
config: CustomAxiosRequestConfig
): HookRequestInstanceResponseData<MappedType<R, T>, ResponseData>;
): HookRequestInstanceResponseData<MappedType<R, T>>;
cancelRequest: (requestId: string) => void;
cancelAllRequest: () => void;
}
@@ -45,13 +45,13 @@ export default function createHookRequest<ResponseData = any>(
) {
const request = createFlatRequest<ResponseData>(axiosConfig, options);
const hookRequest: HookRequestInstance<ResponseData> = function hookRequest<T = any, R extends ResponseType = 'json'>(
const hookRequest: HookRequestInstance = function hookRequest<T = any, R extends ResponseType = 'json'>(
config: CustomAxiosRequestConfig
) {
const { loading, startLoading, endLoading } = useLoading();
const data = ref<MappedType<R, T> | null>(null) as Ref<MappedType<R, T>>;
const error = ref<AxiosError<ResponseData> | null>(null) as Ref<AxiosError<ResponseData> | null>;
const data = ref<MappedType<R, T> | null>(null);
const error = ref<AxiosError<MappedType<R, T>> | null>(null);
startLoading();
@@ -70,7 +70,7 @@ export default function createHookRequest<ResponseData = any>(
data,
error
};
} as HookRequestInstance<ResponseData>;
} as HookRequestInstance;
hookRequest.cancelRequest = request.cancelRequest;
hookRequest.cancelAllRequest = request.cancelAllRequest;

View File

@@ -1,6 +1,6 @@
{
"name": "@sa/materials",
"version": "1.0.1",
"version": "1.0.0",
"exports": {
".": "./src/index.ts"
},

View File

@@ -1,6 +1,6 @@
{
"name": "@sa/fetch",
"version": "1.0.1",
"version": "1.0.0",
"exports": {
".": "./src/index.ts"
},

View File

@@ -1,6 +1,6 @@
{
"name": "@sa/scripts",
"version": "1.0.1",
"version": "1.0.0",
"bin": {
"sa": "./bin.ts"
},

View File

@@ -1,6 +1,6 @@
{
"name": "@sa/uno-preset",
"version": "1.0.1",
"version": "1.0.0",
"exports": {
".": "./src/index.ts"
},

View File

@@ -1,6 +1,6 @@
{
"name": "@sa/utils",
"version": "1.0.1",
"version": "1.0.0",
"exports": {
".": "./src/index.ts"
},

326
pnpm-lock.yaml generated
View File

@@ -80,7 +80,10 @@ importers:
version: link:packages/uno-preset
'@soybeanjs/eslint-config':
specifier: 1.2.5
version: 1.2.5(@unocss/eslint-config@0.58.9)(eslint-plugin-vue@9.24.0)(eslint@8.57.0)(typescript@5.4.3)(vue-eslint-parser@9.4.2)
version: 1.2.5(@unocss/eslint-config@0.58.8)(eslint-plugin-vue@9.24.0)(eslint@8.57.0)(typescript@5.4.3)(vue-eslint-parser@9.4.2)
'@tauri-apps/cli':
specifier: ^1.5.11
version: 1.5.11
'@types/lodash-es':
specifier: 4.17.12
version: 4.17.12
@@ -91,23 +94,23 @@ importers:
specifier: 0.2.3
version: 0.2.3
'@unocss/eslint-config':
specifier: 0.58.9
version: 0.58.9(eslint@8.57.0)(typescript@5.4.3)
specifier: 0.58.8
version: 0.58.8(eslint@8.57.0)(typescript@5.4.3)
'@unocss/preset-icons':
specifier: 0.58.9
version: 0.58.9
specifier: 0.58.8
version: 0.58.8
'@unocss/preset-uno':
specifier: 0.58.9
version: 0.58.9
specifier: 0.58.8
version: 0.58.8
'@unocss/transformer-directives':
specifier: 0.58.9
version: 0.58.9
specifier: 0.58.8
version: 0.58.8
'@unocss/transformer-variant-group':
specifier: 0.58.9
version: 0.58.9
specifier: 0.58.8
version: 0.58.8
'@unocss/vite':
specifier: 0.58.9
version: 0.58.9(vite@5.2.7)
specifier: 0.58.8
version: 0.58.8(vite@5.2.7)
'@vitejs/plugin-vue':
specifier: 5.0.4
version: 5.0.4(vite@5.2.7)(vue@3.4.21)
@@ -214,7 +217,7 @@ importers:
devDependencies:
'@soybeanjs/changelog':
specifier: 0.3.15
version: 0.3.15(@unocss/eslint-config@0.58.9)(eslint-plugin-vue@9.24.0)(eslint@8.57.0)(typescript@5.4.3)(vue-eslint-parser@9.4.2)
version: 0.3.15(@unocss/eslint-config@0.58.8)(eslint-plugin-vue@9.24.0)(eslint@8.57.0)(typescript@5.4.3)(vue-eslint-parser@9.4.2)
bumpp:
specifier: 9.4.0
version: 9.4.0
@@ -1182,7 +1185,7 @@ packages:
resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
engines: {node: '>=10.10.0'}
dependencies:
'@humanwhocodes/object-schema': 2.0.3
'@humanwhocodes/object-schema': 2.0.2
debug: 4.3.4
minimatch: 3.1.2
transitivePeerDependencies:
@@ -1194,8 +1197,8 @@ packages:
engines: {node: '>=12.22'}
dev: true
/@humanwhocodes/object-schema@2.0.3:
resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
/@humanwhocodes/object-schema@2.0.2:
resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==}
dev: true
/@iconify/json@2.2.196:
@@ -1619,11 +1622,11 @@ packages:
engines: {node: '>=14.16'}
dev: true
/@soybeanjs/changelog@0.3.15(@unocss/eslint-config@0.58.9)(eslint-plugin-vue@9.24.0)(eslint@8.57.0)(typescript@5.4.3)(vue-eslint-parser@9.4.2):
/@soybeanjs/changelog@0.3.15(@unocss/eslint-config@0.58.8)(eslint-plugin-vue@9.24.0)(eslint@8.57.0)(typescript@5.4.3)(vue-eslint-parser@9.4.2):
resolution: {integrity: sha512-DnRx5MSiOxrwcfdfoAD8WByiKOPMVmI5ABlm8KcAlRHiFw0jDK4IfU0K2PfVba9lK/ZCpzplMcjC7Fn2qqt5Vg==}
engines: {node: '>=14'}
dependencies:
'@soybeanjs/eslint-config': 1.2.5(@unocss/eslint-config@0.58.9)(eslint-plugin-vue@9.24.0)(eslint@8.57.0)(typescript@5.4.3)(vue-eslint-parser@9.4.2)
'@soybeanjs/eslint-config': 1.2.5(@unocss/eslint-config@0.58.8)(eslint-plugin-vue@9.24.0)(eslint@8.57.0)(typescript@5.4.3)(vue-eslint-parser@9.4.2)
cli-progress: 3.12.0
convert-gitmoji: 0.1.5
dayjs: 1.11.10
@@ -1652,7 +1655,7 @@ packages:
- vue-eslint-parser
dev: true
/@soybeanjs/eslint-config@1.2.5(@unocss/eslint-config@0.58.9)(eslint-plugin-vue@9.24.0)(eslint@8.57.0)(typescript@5.4.3)(vue-eslint-parser@9.4.2):
/@soybeanjs/eslint-config@1.2.5(@unocss/eslint-config@0.58.8)(eslint-plugin-vue@9.24.0)(eslint@8.57.0)(typescript@5.4.3)(vue-eslint-parser@9.4.2):
resolution: {integrity: sha512-XtwhOKJ/hyUu8Os9jKriuq/0sqQtexPg4ZctIBcgw89qRMD7EnQwQTpddk+BOBXGt3GaLdaV7LiUNg4e8hTovA==}
peerDependencies:
'@toml-tools/parser': '*'
@@ -1707,7 +1710,7 @@ packages:
'@eslint/js': 8.57.0
'@typescript-eslint/eslint-plugin': 7.2.0(@typescript-eslint/parser@7.2.0)(eslint@8.57.0)(typescript@5.4.3)
'@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.4.3)
'@unocss/eslint-config': 0.58.9(eslint@8.57.0)(typescript@5.4.3)
'@unocss/eslint-config': 0.58.8(eslint@8.57.0)(typescript@5.4.3)
eslint: 8.57.0
eslint-config-prettier: 9.1.0(eslint@8.57.0)
eslint-parser-plain: 0.1.0
@@ -1738,6 +1741,117 @@ packages:
defer-to-connect: 2.0.1
dev: true
/@tauri-apps/cli-darwin-arm64@1.5.11:
resolution: {integrity: sha512-2NLSglDb5VfvTbMtmOKWyD+oaL/e8Z/ZZGovHtUFyUSFRabdXc6cZOlcD1BhFvYkHqm+TqGaz5qtPR5UbqDs8A==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/@tauri-apps/cli-darwin-x64@1.5.11:
resolution: {integrity: sha512-/RQllHiJRH2fJOCudtZlaUIjofkHzP3zZgxi71ZUm7Fy80smU5TDfwpwOvB0wSVh0g/ciDjMArCSTo0MRvL+ag==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/@tauri-apps/cli-linux-arm-gnueabihf@1.5.11:
resolution: {integrity: sha512-IlBuBPKmMm+a5LLUEK6a21UGr9ZYd6zKuKLq6IGM4tVweQa8Sf2kP2Nqs74dMGIUrLmMs0vuqdURpykQg+z4NQ==}
engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@tauri-apps/cli-linux-arm64-gnu@1.5.11:
resolution: {integrity: sha512-w+k1bNHCU/GbmXshtAhyTwqosThUDmCEFLU4Zkin1vl2fuAtQry2RN7thfcJFepblUGL/J7yh3Q/0+BCjtspKQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [glibc]
requiresBuild: true
dev: true
optional: true
/@tauri-apps/cli-linux-arm64-musl@1.5.11:
resolution: {integrity: sha512-PN6/dl+OfYQ/qrAy4HRAfksJ2AyWQYn2IA/2Wwpaa7SDRz2+hzwTQkvajuvy0sQ5L2WCG7ymFYRYMbpC6Hk9Pg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [musl]
requiresBuild: true
dev: true
optional: true
/@tauri-apps/cli-linux-x64-gnu@1.5.11:
resolution: {integrity: sha512-MTVXLi89Nj7Apcvjezw92m7ZqIDKT5SFKZtVPCg6RoLUBTzko/BQoXYIRWmdoz2pgkHDUHgO2OMJ8oKzzddXbw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [glibc]
requiresBuild: true
dev: true
optional: true
/@tauri-apps/cli-linux-x64-musl@1.5.11:
resolution: {integrity: sha512-kwzAjqFpz7rvTs7WGZLy/a5nS5t15QKr3E9FG95MNF0exTl3d29YoAUAe1Mn0mOSrTJ9Z+vYYAcI/QdcsGBP+w==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [musl]
requiresBuild: true
dev: true
optional: true
/@tauri-apps/cli-win32-arm64-msvc@1.5.11:
resolution: {integrity: sha512-L+5NZ/rHrSUrMxjj6YpFYCXp6wHnq8c8SfDTBOX8dO8x+5283/vftb4vvuGIsLS4UwUFXFnLt3XQr44n84E67Q==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@tauri-apps/cli-win32-ia32-msvc@1.5.11:
resolution: {integrity: sha512-oVlD9IVewrY0lZzTdb71kNXkjdgMqFq+ohb67YsJb4Rf7o8A9DTlFds1XLCe3joqLMm4M+gvBKD7YnGIdxQ9vA==}
engines: {node: '>= 10'}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@tauri-apps/cli-win32-x64-msvc@1.5.11:
resolution: {integrity: sha512-1CexcqUFCis5ypUIMOKllxUBrna09McbftWENgvVXMfA+SP+yPDPAVb8fIvUcdTIwR/yHJwcIucmTB4anww4vg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@tauri-apps/cli@1.5.11:
resolution: {integrity: sha512-B475D7phZrq5sZ3kDABH4g2mEoUIHtnIO+r4ZGAAfsjMbZCwXxR/jlMGTEL+VO3YzjpF7gQe38IzB4vLBbVppw==}
engines: {node: '>= 10'}
hasBin: true
optionalDependencies:
'@tauri-apps/cli-darwin-arm64': 1.5.11
'@tauri-apps/cli-darwin-x64': 1.5.11
'@tauri-apps/cli-linux-arm-gnueabihf': 1.5.11
'@tauri-apps/cli-linux-arm64-gnu': 1.5.11
'@tauri-apps/cli-linux-arm64-musl': 1.5.11
'@tauri-apps/cli-linux-x64-gnu': 1.5.11
'@tauri-apps/cli-linux-x64-musl': 1.5.11
'@tauri-apps/cli-win32-arm64-msvc': 1.5.11
'@tauri-apps/cli-win32-ia32-msvc': 1.5.11
'@tauri-apps/cli-win32-x64-msvc': 1.5.11
dev: true
/@tootallnate/once@2.0.0:
resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
engines: {node: '>= 10'}
@@ -1911,12 +2025,12 @@ packages:
'@typescript-eslint/visitor-keys': 7.2.0
dev: true
/@typescript-eslint/scope-manager@7.5.0:
resolution: {integrity: sha512-Z1r7uJY0MDeUlql9XJ6kRVgk/sP11sr3HKXn268HZyqL7i4cEfrdFuSSY/0tUqT37l5zT0tJOsuDP16kio85iA==}
/@typescript-eslint/scope-manager@7.4.0:
resolution: {integrity: sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==}
engines: {node: ^18.18.0 || >=20.0.0}
dependencies:
'@typescript-eslint/types': 7.5.0
'@typescript-eslint/visitor-keys': 7.5.0
'@typescript-eslint/types': 7.4.0
'@typescript-eslint/visitor-keys': 7.4.0
dev: true
/@typescript-eslint/type-utils@7.2.0(eslint@8.57.0)(typescript@5.4.3):
@@ -1944,8 +2058,8 @@ packages:
engines: {node: ^16.0.0 || >=18.0.0}
dev: true
/@typescript-eslint/types@7.5.0:
resolution: {integrity: sha512-tv5B4IHeAdhR7uS4+bf8Ov3k793VEVHd45viRRkehIUZxm0WF82VPiLgHzA/Xl4TGPg1ZD49vfxBKFPecD5/mg==}
/@typescript-eslint/types@7.4.0:
resolution: {integrity: sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==}
engines: {node: ^18.18.0 || >=20.0.0}
dev: true
@@ -1971,8 +2085,8 @@ packages:
- supports-color
dev: true
/@typescript-eslint/typescript-estree@7.5.0(typescript@5.4.3):
resolution: {integrity: sha512-YklQQfe0Rv2PZEueLTUffiQGKQneiIEKKnfIqPIOxgM9lKSZFCjT5Ad4VqRKj/U4+kQE3fa8YQpskViL7WjdPQ==}
/@typescript-eslint/typescript-estree@7.4.0(typescript@5.4.3):
resolution: {integrity: sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==}
engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
typescript: '*'
@@ -1980,8 +2094,8 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/types': 7.5.0
'@typescript-eslint/visitor-keys': 7.5.0
'@typescript-eslint/types': 7.4.0
'@typescript-eslint/visitor-keys': 7.4.0
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
@@ -2012,8 +2126,8 @@ packages:
- typescript
dev: true
/@typescript-eslint/utils@7.5.0(eslint@8.57.0)(typescript@5.4.3):
resolution: {integrity: sha512-3vZl9u0R+/FLQcpy2EHyRGNqAS/ofJ3Ji8aebilfJe+fobK8+LbIFmrHciLVDxjDoONmufDcnVSF38KwMEOjzw==}
/@typescript-eslint/utils@7.4.0(eslint@8.57.0)(typescript@5.4.3):
resolution: {integrity: sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==}
engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
eslint: ^8.56.0
@@ -2021,9 +2135,9 @@ packages:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
'@types/json-schema': 7.0.15
'@types/semver': 7.5.8
'@typescript-eslint/scope-manager': 7.5.0
'@typescript-eslint/types': 7.5.0
'@typescript-eslint/typescript-estree': 7.5.0(typescript@5.4.3)
'@typescript-eslint/scope-manager': 7.4.0
'@typescript-eslint/types': 7.4.0
'@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3)
eslint: 8.57.0
semver: 7.6.0
transitivePeerDependencies:
@@ -2039,11 +2153,11 @@ packages:
eslint-visitor-keys: 3.4.3
dev: true
/@typescript-eslint/visitor-keys@7.5.0:
resolution: {integrity: sha512-mcuHM/QircmA6O7fy6nn2w/3ditQkj+SgtOc8DW3uQ10Yfj42amm2i+6F2K4YAOPNNTmE6iM1ynM6lrSwdendA==}
/@typescript-eslint/visitor-keys@7.4.0:
resolution: {integrity: sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==}
engines: {node: ^18.18.0 || >=20.0.0}
dependencies:
'@typescript-eslint/types': 7.5.0
'@typescript-eslint/types': 7.4.0
eslint-visitor-keys: 3.4.3
dev: true
@@ -2051,36 +2165,36 @@ packages:
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
dev: true
/@unocss/config@0.58.9:
resolution: {integrity: sha512-90wRXIyGNI8UenWxvHUcH4l4rgq813MsTzYWsf6ZKyLLvkFjV2b2EfGXI27GPvZ7fVE1OAqx+wJNTw8CyQxwag==}
/@unocss/config@0.58.8:
resolution: {integrity: sha512-x0/FCP1vuU7z2Y1e4m5fazLEr9DyXQZ9aM8Rt72V8ElD9CmEwxGmxt6MVB+LkuXglH3srr9Btnhuir4P6jI92g==}
engines: {node: '>=14'}
dependencies:
'@unocss/core': 0.58.9
unconfig: 0.3.12
'@unocss/core': 0.58.8
unconfig: 0.3.11
dev: true
/@unocss/core@0.58.9:
resolution: {integrity: sha512-wYpPIPPsOIbIoMIDuH8ihehJk5pAZmyFKXIYO/Kro98GEOFhz6lJoLsy6/PZuitlgp2/TSlubUuWGjHWvp5osw==}
/@unocss/core@0.58.8:
resolution: {integrity: sha512-R3KuNTzF6G+bb2Qqg4LNLTWHh4TGU8iQJ4KOlpWHrPKAhDSCZ3XY9lSXoepCPwv+JcGEwA97Msa3zZ5p+QDoFg==}
dev: true
/@unocss/eslint-config@0.58.9(eslint@8.57.0)(typescript@5.4.3):
resolution: {integrity: sha512-7Cf9NVPQqdhd6rbe2JDlqY9bBwuFfxvZOmeEUcKaI10QNNrDNvnMKd8rToxCdm5RToSjNeuj66V/scl8Kv8rfQ==}
/@unocss/eslint-config@0.58.8(eslint@8.57.0)(typescript@5.4.3):
resolution: {integrity: sha512-u+iDhN7G5k/o9w8pJ7jrD76ZxL8unVSBARPuD5xjqeGHGOdaDoIY2arRKdE9pKaBNSrNQr4VcZbT+5KiHG1/Tg==}
engines: {node: '>=14'}
dependencies:
'@unocss/eslint-plugin': 0.58.9(eslint@8.57.0)(typescript@5.4.3)
'@unocss/eslint-plugin': 0.58.8(eslint@8.57.0)(typescript@5.4.3)
transitivePeerDependencies:
- eslint
- supports-color
- typescript
dev: true
/@unocss/eslint-plugin@0.58.9(eslint@8.57.0)(typescript@5.4.3):
resolution: {integrity: sha512-StlHO850jow2w/PTA01opkGAD6WO+iu65fxel062gp/aeoO/cRwVlQntVX7Z8QHDGXnftjW83RjvX9LqW8+iLw==}
/@unocss/eslint-plugin@0.58.8(eslint@8.57.0)(typescript@5.4.3):
resolution: {integrity: sha512-xJrWTx2iR1reI/HYymSQsdNXQVohq0woEWnsaEed6lVUNMGnjMjqbVcGVj+5IBxR9tWc/tIz7tLXGkz8x3xqOg==}
engines: {node: '>=14'}
dependencies:
'@typescript-eslint/utils': 7.5.0(eslint@8.57.0)(typescript@5.4.3)
'@unocss/config': 0.58.9
'@unocss/core': 0.58.9
'@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.4.3)
'@unocss/config': 0.58.8
'@unocss/core': 0.58.8
magic-string: 0.30.8
synckit: 0.9.0
transitivePeerDependencies:
@@ -2089,94 +2203,94 @@ packages:
- typescript
dev: true
/@unocss/extractor-arbitrary-variants@0.58.9:
resolution: {integrity: sha512-M/BvPdbEEMdhcFQh/z2Bf9gylO1Ky/ZnpIvKWS1YJPLt4KA7UWXSUf+ZNTFxX+X58Is5qAb5hNh/XBQmL3gbXg==}
/@unocss/extractor-arbitrary-variants@0.58.8:
resolution: {integrity: sha512-zQ7W3wTWWbJvG9T+1b9HqJGtEzcrc3d/TG7JJqdon6vBc64xA2AMf9DNRVlNdzkrU2Kl31TRd6bLST6iMncovw==}
dependencies:
'@unocss/core': 0.58.9
'@unocss/core': 0.58.8
dev: true
/@unocss/inspector@0.58.9:
resolution: {integrity: sha512-uRzqkCNeBmEvFePXcfIFcQPMlCXd9/bLwa5OkBthiOILwQdH1uRIW3GWAa2SWspu+kZLP0Ly3SjZ9Wqi+5ZtTw==}
/@unocss/inspector@0.58.8:
resolution: {integrity: sha512-nLmIIwOXnoTpsUFuvlKj8t8xxBi3gMw0+osW9xrYxt5whkV05IUfMwSTFQ3yDhKpmEW8fmUEMqrmu0sdLtRRZA==}
dependencies:
'@unocss/core': 0.58.9
'@unocss/rule-utils': 0.58.9
'@unocss/core': 0.58.8
'@unocss/rule-utils': 0.58.8
gzip-size: 6.0.0
sirv: 2.0.4
dev: true
/@unocss/preset-icons@0.58.9:
resolution: {integrity: sha512-9dS48+yAunsbS0ylOW2Wisozwpn3nGY1CqTiidkUnrMnrZK3al579A7srUX9NyPWWDjprO7eU/JkWbdDQSmFFA==}
/@unocss/preset-icons@0.58.8:
resolution: {integrity: sha512-T6xf7pE9+CiTzJgPlHUbxg27agTw/QmUp0FUt+LJr8Nvs4jwe2GDKvAiXrMfCw+s6yOqVFgxPcLpKQWoS5QhEA==}
dependencies:
'@iconify/utils': 2.1.22
'@unocss/core': 0.58.9
'@unocss/core': 0.58.8
ofetch: 1.3.4
transitivePeerDependencies:
- supports-color
dev: true
/@unocss/preset-mini@0.58.9:
resolution: {integrity: sha512-m4aDGYtueP8QGsU3FsyML63T/w5Mtr4htme2jXy6m50+tzC1PPHaIBstMTMQfLc6h8UOregPJyGHB5iYQZGEvQ==}
/@unocss/preset-mini@0.58.8:
resolution: {integrity: sha512-dCn9ny8Fpiya8qwc2dRkh8YCH5xwf+iD3MxP9YgfweO1o816onBJVqb03xEJT/MOxYkpuRFVJGU+cVSpehamiw==}
dependencies:
'@unocss/core': 0.58.9
'@unocss/extractor-arbitrary-variants': 0.58.9
'@unocss/rule-utils': 0.58.9
'@unocss/core': 0.58.8
'@unocss/extractor-arbitrary-variants': 0.58.8
'@unocss/rule-utils': 0.58.8
dev: true
/@unocss/preset-uno@0.58.9:
resolution: {integrity: sha512-Fze+X2Z/EegCkRdDRgwwvFBmXBenNR1AG8KxAyz8iPeWbhOBaRra2sn2ScryrfH6SbJHpw26ZyJXycAdS0Fq3A==}
/@unocss/preset-uno@0.58.8:
resolution: {integrity: sha512-zqIZLAX6g04B/9rVuGyVNd7/Jdng2rKfw9i9UFG6x0xYN1y+WuyV7+FN66bIJMj7EB17CusHWVMllHRKToOrmw==}
dependencies:
'@unocss/core': 0.58.9
'@unocss/preset-mini': 0.58.9
'@unocss/preset-wind': 0.58.9
'@unocss/rule-utils': 0.58.9
'@unocss/core': 0.58.8
'@unocss/preset-mini': 0.58.8
'@unocss/preset-wind': 0.58.8
'@unocss/rule-utils': 0.58.8
dev: true
/@unocss/preset-wind@0.58.9:
resolution: {integrity: sha512-7l+7Vx5UoN80BmJKiqDXaJJ6EUqrnUQYv8NxCThFi5lYuHzxsYWZPLU3k3XlWRUQt8XL+6rYx7mMBmD7EUSHyw==}
/@unocss/preset-wind@0.58.8:
resolution: {integrity: sha512-7ktb0wJgZg9q2xlNXfgx2pRjg22WJ+B3ENIk9+DB88pty2f6dYo24l8ZyJXQbHglgCilY64NP0fNHkBlUF9olg==}
dependencies:
'@unocss/core': 0.58.9
'@unocss/preset-mini': 0.58.9
'@unocss/rule-utils': 0.58.9
'@unocss/core': 0.58.8
'@unocss/preset-mini': 0.58.8
'@unocss/rule-utils': 0.58.8
dev: true
/@unocss/rule-utils@0.58.9:
resolution: {integrity: sha512-45bDa+elmlFLthhJmKr2ltKMAB0yoXnDMQ6Zp5j3OiRB7dDMBkwYRPvHLvIe+34Ey7tDt/kvvDPtWMpPl2quUQ==}
/@unocss/rule-utils@0.58.8:
resolution: {integrity: sha512-F7TKtTkiV9ICf8JMYO1+Eq/5zrrV7Fw966rQfHfIKrN6Vwo3tw84b5R0bLJghAFtb9UuD7q9eCfy6WBQK0d7Tw==}
engines: {node: '>=14'}
dependencies:
'@unocss/core': 0.58.9
'@unocss/core': 0.58.8
magic-string: 0.30.8
dev: true
/@unocss/scope@0.58.9:
resolution: {integrity: sha512-BIwcpx0R3bE0rYa9JVDJTk0GX32EBvnbvufBpNkWfC5tb7g+B7nMkVq9ichanksYCCxrIQQo0mrIz5PNzu9sGA==}
/@unocss/scope@0.58.8:
resolution: {integrity: sha512-FpXGSWQU+XfguSPrFm9NfZYKmDikxu4KB+fvVzgHkN3e+UQ7QSHFHREbdc+E8x0HPMNkoNnYVaCr0qgIBUEKFA==}
dev: true
/@unocss/transformer-directives@0.58.9:
resolution: {integrity: sha512-pLOUsdoY2ugVntJXg0xuGjO9XZ2xCiMxTPRtpZ4TsEzUtdEzMswR06Y8VWvNciTB/Zqxcz9ta8rD0DKePOfSuw==}
/@unocss/transformer-directives@0.58.8:
resolution: {integrity: sha512-KdNzgmL5gdls1MTRvB7DKJRbLai1t8JeKCN+0H1lygzKMAhp8zItRei/F0MaSdbWdviNnGcAXqbCkbmGR72vaA==}
dependencies:
'@unocss/core': 0.58.9
'@unocss/rule-utils': 0.58.9
'@unocss/core': 0.58.8
'@unocss/rule-utils': 0.58.8
css-tree: 2.3.1
dev: true
/@unocss/transformer-variant-group@0.58.9:
resolution: {integrity: sha512-3A6voHSnFcyw6xpcZT6oxE+KN4SHRnG4z862tdtWvRGcN+jGyNr20ylEZtnbk4xj0VNMeGHHQRZ0WLvmrAwvOQ==}
/@unocss/transformer-variant-group@0.58.8:
resolution: {integrity: sha512-Fa9lCHsR6scg9BuAvyltdRpSVJJxP5OCU8OJmkOhGlJnkcrV8X/9ynPvVuV82awoImn5CBoo4fyQ+f9vCdWycw==}
dependencies:
'@unocss/core': 0.58.9
'@unocss/core': 0.58.8
dev: true
/@unocss/vite@0.58.9(vite@5.2.7):
resolution: {integrity: sha512-mmppBuulAHCal+sC0Qz36Y99t0HicAmznpj70Kzwl7g/yvXwm58/DW2OnpCWw+uA8/JBft/+z3zE+XvrI+T1HA==}
/@unocss/vite@0.58.8(vite@5.2.7):
resolution: {integrity: sha512-Eh0cG1I/BivvhUPdFxPi/z7Q+LMDnjHgL/dIE6/tmJK9rerdGeOBCAXxEetZfvBrOhWVnsOW/ydesyAhkzRg3w==}
peerDependencies:
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0
dependencies:
'@ampproject/remapping': 2.3.0
'@rollup/pluginutils': 5.1.0
'@unocss/config': 0.58.9
'@unocss/core': 0.58.9
'@unocss/inspector': 0.58.9
'@unocss/scope': 0.58.9
'@unocss/transformer-directives': 0.58.9
'@unocss/config': 0.58.8
'@unocss/core': 0.58.8
'@unocss/inspector': 0.58.8
'@unocss/scope': 0.58.8
'@unocss/transformer-directives': 0.58.8
chokidar: 3.6.0
fast-glob: 3.3.2
magic-string: 0.30.8
@@ -2728,8 +2842,8 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
caniuse-lite: 1.0.30001605
electron-to-chromium: 1.4.723
caniuse-lite: 1.0.30001603
electron-to-chromium: 1.4.722
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.23.0)
dev: true
@@ -2903,8 +3017,8 @@ packages:
resolution: {integrity: sha512-ceOhN1DL7Y4O6M0j9ICgmTYziV89WMd96SvSl0REd8PMgrY0B/WBOPoed5S1KUmJqXgUXh8gzSe6E3ae27upsQ==}
dev: false
/caniuse-lite@1.0.30001605:
resolution: {integrity: sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==}
/caniuse-lite@1.0.30001603:
resolution: {integrity: sha512-iL2iSS0eDILMb9n5yKQoTBim9jMZ0Yrk8g0N9K7UzYyWnfIKzXBZD5ngpM37ZcL/cv0Mli8XtVMRYMQAfFpi5Q==}
dev: true
/chalk@1.1.3:
@@ -3560,8 +3674,8 @@ packages:
zrender: 5.5.0
dev: false
/electron-to-chromium@1.4.723:
resolution: {integrity: sha512-rxFVtrMGMFROr4qqU6n95rUi9IlfIm+lIAt+hOToy/9r6CDv0XiEcQdC3VP71y1pE5CFTzKV0RvxOGYCPWWHPw==}
/electron-to-chromium@1.4.722:
resolution: {integrity: sha512-5nLE0TWFFpZ80Crhtp4pIp8LXCztjYX41yUcV6b+bKR2PqzjskTMOOlBi1VjBHlvHwS+4gar7kNKOrsbsewEZQ==}
dev: true
/emoji-regex@10.3.0:
@@ -7785,8 +7899,8 @@ packages:
/ufo@1.5.3:
resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==}
/unconfig@0.3.12:
resolution: {integrity: sha512-oDtfWDC0TMYFuwdt7E7CaqYZGqq1wAiC12PRTFe/93IkgNi+wVlF/LCjcD/bgNkGoopb0RsU363Ge3YXy7NGSw==}
/unconfig@0.3.11:
resolution: {integrity: sha512-bV/nqePAKv71v3HdVUn6UefbsDKQWRX+bJIkiSm0+twIds6WiD2bJLWWT3i214+J/B4edufZpG2w7Y63Vbwxow==}
dependencies:
'@antfu/utils': 0.7.7
defu: 6.1.4

BIN
public/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

3
src-tauri/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
# Generated by Cargo
# will have compiled files and executables
/target/

3664
src-tauri/Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

26
src-tauri/Cargo.toml Normal file
View File

@@ -0,0 +1,26 @@
[package]
name = "app"
version = "0.1.0"
description = "A Tauri App"
authors = ["you"]
license = ""
repository = ""
default-run = "app"
edition = "2021"
rust-version = "1.60"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[build-dependencies]
tauri-build = { version = "1.5.1", features = [] }
[dependencies]
serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }
tauri = { version = "1.6.1", features = [] }
[features]
# this feature is used for production builds or when `devPath` points to the filesystem and the built-in dev server is disabled.
# If you use cargo directly instead of tauri's cli you can use this feature flag to switch between tauri's `dev` and `build` modes.
# DO NOT REMOVE!!
custom-protocol = [ "tauri/custom-protocol" ]

3
src-tauri/build.rs Normal file
View File

@@ -0,0 +1,3 @@
fn main() {
tauri_build::build()
}

BIN
src-tauri/icons/128x128.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
src-tauri/icons/32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
src-tauri/icons/icon.icns Normal file

Binary file not shown.

BIN
src-tauri/icons/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
src-tauri/icons/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

8
src-tauri/src/main.rs Normal file
View File

@@ -0,0 +1,8 @@
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
fn main() {
tauri::Builder::default()
.run(tauri::generate_context!())
.expect("error while running tauri application");
}

60
src-tauri/tauri.conf.json Normal file
View File

@@ -0,0 +1,60 @@
{
"$schema": "../node_modules/@tauri-apps/cli/schema.json",
"build": {
"beforeBuildCommand": "npm run build",
"beforeDevCommand": "npm run dev",
"devPath": "http://localhost:9527",
"distDir": "../dist"
},
"package": {
"productName": "soybean-admin",
"version": "1.0.0"
},
"tauri": {
"allowlist": {
"all": false
},
"bundle": {
"active": true,
"category": "DeveloperTool",
"copyright": "",
"deb": {
"depends": []
},
"externalBin": [],
"icon": ["icons/32x32.png", "icons/128x128.png", "icons/128x128@2x.png", "icons/icon.icns", "icons/icon.ico"],
"identifier": "cn.soybeanjs.admin",
"longDescription": "",
"macOS": {
"entitlements": null,
"exceptionDomain": "",
"frameworks": [],
"providerShortName": null,
"signingIdentity": null
},
"resources": [],
"shortDescription": "",
"targets": "all",
"windows": {
"certificateThumbprint": null,
"digestAlgorithm": "sha256",
"timestampUrl": ""
}
},
"security": {
"csp": null
},
"updater": {
"active": false
},
"windows": [
{
"fullscreen": false,
"height": 768,
"resizable": true,
"title": "SoybeanAdmin",
"width": 1366
}
]
}
}

View File

@@ -184,7 +184,7 @@ init();
<template #prefix>
<SvgIcon :icon="tab.icon" :local-icon="tab.localIcon" class="inline-block align-text-bottom text-16px" />
</template>
<div class="max-w-240px ellipsis-text">{{ tab.label }}</div>
<span>{{ tab.label }}</span>
</PageTab>
</div>
</BetterScroll>