chore: update locale
parent
36a4fcfad2
commit
c58aa26dbf
|
@ -2,20 +2,20 @@ import type { UserInfo } from '@vben/types';
|
|||
|
||||
import type { UserApiType } from '../types';
|
||||
|
||||
import { request } from '#/forward';
|
||||
import { get, post } from '#/forward';
|
||||
|
||||
/**
|
||||
* 登录
|
||||
*/
|
||||
async function userLogin(data: UserApiType.LoginParams) {
|
||||
return request<UserApiType.LoginResult>('/login', { data, method: 'post' });
|
||||
return post<UserApiType.LoginResult>('/login', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户信息
|
||||
*/
|
||||
async function getUserInfo() {
|
||||
return request<UserInfo>('/getUserInfo', { method: 'get' });
|
||||
return get<UserInfo>('/getUserInfo');
|
||||
}
|
||||
|
||||
export { getUserInfo, userLogin };
|
||||
|
|
|
@ -81,9 +81,9 @@ function setupRequestInterceptors(client: RequestClient) {
|
|||
);
|
||||
}
|
||||
|
||||
const { request } = createRequestClient();
|
||||
const { get, post, request } = createRequestClient();
|
||||
|
||||
// 其他配置的请求方法
|
||||
// const { request: xxxRequest } = createRequest();
|
||||
|
||||
export { request };
|
||||
export { get, post, request };
|
||||
|
|
|
@ -0,0 +1,235 @@
|
|||
import type { RouteRecordRaw } from 'vue-router';
|
||||
|
||||
import { $t } from '@vben/locales/helper';
|
||||
|
||||
import { BasicLayout, IFrameView } from '#/layouts';
|
||||
|
||||
const routes: RouteRecordRaw[] = [
|
||||
{
|
||||
component: BasicLayout,
|
||||
meta: {
|
||||
icon: 'ic:baseline-view-in-ar',
|
||||
keepAlive: true,
|
||||
order: 1000,
|
||||
title: $t('page.demos.title'),
|
||||
},
|
||||
name: 'Demos',
|
||||
path: '/demos',
|
||||
redirect: '/demos/fallback/403',
|
||||
children: [
|
||||
{
|
||||
meta: {
|
||||
icon: 'mdi:lightbulb-error-outline',
|
||||
title: $t('page.demos.fallback.title'),
|
||||
},
|
||||
name: 'FallbackLayout',
|
||||
path: '/fallback',
|
||||
redirect: '/fallback/403',
|
||||
children: [
|
||||
{
|
||||
name: 'Fallback403',
|
||||
path: '403',
|
||||
component: () =>
|
||||
import('#/views/_essential/fallback/forbidden.vue'),
|
||||
meta: {
|
||||
icon: 'mdi:do-not-disturb-alt',
|
||||
title: '403',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Fallback404',
|
||||
path: '404',
|
||||
component: () =>
|
||||
import('#/views/_essential/fallback/not-found.vue'),
|
||||
meta: {
|
||||
icon: 'mdi:table-off',
|
||||
title: '404',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Fallback500',
|
||||
path: '500',
|
||||
component: () =>
|
||||
import('#/views/_essential/fallback/internal-error.vue'),
|
||||
meta: {
|
||||
icon: 'mdi:server-network-off',
|
||||
title: '500',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'FallbackOffline',
|
||||
path: 'offline',
|
||||
component: () => import('#/views/_essential/fallback/offline.vue'),
|
||||
meta: {
|
||||
icon: 'mdi:offline',
|
||||
title: $t('fallback.offline'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
meta: {
|
||||
icon: 'ic:round-settings-input-composite',
|
||||
title: $t('page.demos.outside.title'),
|
||||
},
|
||||
name: 'Outside',
|
||||
path: '/outside',
|
||||
redirect: '/outside/iframe',
|
||||
children: [
|
||||
{
|
||||
name: 'iframe',
|
||||
path: 'iframe',
|
||||
meta: {
|
||||
icon: 'mdi:newspaper-variant-outline',
|
||||
title: $t('page.demos.outside.embedded'),
|
||||
},
|
||||
redirect: '/outside/iframe/vue-document',
|
||||
children: [
|
||||
{
|
||||
name: 'VueDocument',
|
||||
path: 'vue-document',
|
||||
component: IFrameView,
|
||||
meta: {
|
||||
icon: 'logos:vue',
|
||||
iframeSrc: 'https://cn.vuejs.org/',
|
||||
keepAlive: true,
|
||||
title: 'Vue',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Tailwindcss',
|
||||
path: 'tailwindcss',
|
||||
component: IFrameView,
|
||||
meta: {
|
||||
icon: 'devicon:tailwindcss',
|
||||
iframeSrc: 'https://tailwindcss.com/',
|
||||
// keepAlive: true,
|
||||
title: 'Tailwindcss',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'ExternalLink',
|
||||
path: 'external-link',
|
||||
meta: {
|
||||
icon: 'mdi:newspaper-variant-multiple-outline',
|
||||
title: $t('page.demos.outside.external-link'),
|
||||
},
|
||||
redirect: '/outside/external-link/vite',
|
||||
children: [
|
||||
{
|
||||
name: 'Vite',
|
||||
path: 'vite',
|
||||
component: IFrameView,
|
||||
meta: {
|
||||
icon: 'logos:vitejs',
|
||||
link: 'https://vitejs.dev/',
|
||||
title: 'Vite',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'VueUse',
|
||||
path: 'vue-use',
|
||||
component: IFrameView,
|
||||
meta: {
|
||||
icon: 'logos:vueuse',
|
||||
link: 'https://vueuse.org',
|
||||
title: 'VueUse',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
meta: {
|
||||
icon: 'ic:round-menu',
|
||||
title: $t('page.demos.nested.title'),
|
||||
},
|
||||
name: 'Nested',
|
||||
path: 'nested',
|
||||
redirect: '/demos/nested/menu1',
|
||||
children: [
|
||||
{
|
||||
name: 'Menu1',
|
||||
path: 'menu1',
|
||||
component: () => import('#/views/demos/nested/menu-1.vue'),
|
||||
meta: {
|
||||
icon: 'ic:round-menu',
|
||||
keepAlive: true,
|
||||
title: $t('page.demos.nested.menu1'),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Menu2',
|
||||
path: 'menu2',
|
||||
meta: {
|
||||
icon: 'ic:round-menu',
|
||||
keepAlive: true,
|
||||
title: $t('page.demos.nested.menu2'),
|
||||
},
|
||||
redirect: '/nested/menu2/menu2-1',
|
||||
children: [
|
||||
{
|
||||
name: 'Menu21',
|
||||
path: 'menu2-1',
|
||||
component: () => import('#/views/demos/nested/menu-2-1.vue'),
|
||||
meta: {
|
||||
icon: 'ic:round-menu',
|
||||
keepAlive: true,
|
||||
title: $t('page.demos.nested.menu21'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'Menu3',
|
||||
path: 'menu3',
|
||||
meta: {
|
||||
icon: 'ic:round-menu',
|
||||
title: $t('page.demos.nested.menu3'),
|
||||
},
|
||||
redirect: '/nested/menu3/menu3-1',
|
||||
children: [
|
||||
{
|
||||
name: 'Menu31',
|
||||
path: 'menu3-1',
|
||||
component: () => import('#/views/demos/nested/menu-3-1.vue'),
|
||||
meta: {
|
||||
icon: 'ic:round-menu',
|
||||
keepAlive: true,
|
||||
title: $t('page.demos.nested.menu31'),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Menu32',
|
||||
path: 'menu3-2',
|
||||
meta: {
|
||||
icon: 'ic:round-menu',
|
||||
title: $t('page.demos.nested.menu32'),
|
||||
},
|
||||
redirect: '/nested/menu3/menu3-2/menu3-2-1',
|
||||
children: [
|
||||
{
|
||||
name: 'Menu321',
|
||||
path: 'menu3-2-1',
|
||||
component: () =>
|
||||
import('#/views/demos/nested/menu-3-2-1.vue'),
|
||||
meta: {
|
||||
icon: 'ic:round-menu',
|
||||
keepAlive: true,
|
||||
title: $t('page.demos.nested.menu321'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
export default routes;
|
|
@ -1,59 +0,0 @@
|
|||
import type { RouteRecordRaw } from 'vue-router';
|
||||
|
||||
import { $t } from '@vben/locales/helper';
|
||||
|
||||
import { BasicLayout } from '#/layouts';
|
||||
|
||||
const routes: RouteRecordRaw[] = [
|
||||
{
|
||||
component: BasicLayout,
|
||||
meta: {
|
||||
icon: 'mdi:lightbulb-error-outline',
|
||||
title: $t('page.fallback.title'),
|
||||
},
|
||||
name: 'FallbackLayout',
|
||||
path: '/fallback',
|
||||
redirect: '/fallback/403',
|
||||
children: [
|
||||
{
|
||||
name: 'Fallback403',
|
||||
path: '403',
|
||||
component: () => import('#/views/_essential/fallback/forbidden.vue'),
|
||||
meta: {
|
||||
icon: 'mdi:do-not-disturb-alt',
|
||||
title: '403',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Fallback404',
|
||||
path: '404',
|
||||
component: () => import('#/views/_essential/fallback/not-found.vue'),
|
||||
meta: {
|
||||
icon: 'mdi:table-off',
|
||||
title: '404',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Fallback500',
|
||||
path: '500',
|
||||
component: () =>
|
||||
import('#/views/_essential/fallback/internal-error.vue'),
|
||||
meta: {
|
||||
icon: 'mdi:server-network-off',
|
||||
title: '500',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'FallbackOffline',
|
||||
path: 'offline',
|
||||
component: () => import('#/views/_essential/fallback/offline.vue'),
|
||||
meta: {
|
||||
icon: 'mdi:offline',
|
||||
title: $t('fallback.offline'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
export default routes;
|
|
@ -1,98 +0,0 @@
|
|||
import type { RouteRecordRaw } from 'vue-router';
|
||||
|
||||
import { $t } from '@vben/locales/helper';
|
||||
|
||||
import { BasicLayout } from '#/layouts';
|
||||
|
||||
const routes: RouteRecordRaw[] = [
|
||||
{
|
||||
component: BasicLayout,
|
||||
meta: {
|
||||
icon: 'ic:round-menu',
|
||||
keepAlive: true,
|
||||
order: 1000,
|
||||
title: $t('page.nested.title'),
|
||||
},
|
||||
name: 'Nested',
|
||||
path: '/nested',
|
||||
redirect: '/nested/menu1',
|
||||
children: [
|
||||
{
|
||||
name: 'Menu1',
|
||||
path: 'menu1',
|
||||
component: () => import('#/views/nested/menu-1.vue'),
|
||||
meta: {
|
||||
icon: 'ic:round-menu',
|
||||
keepAlive: true,
|
||||
title: $t('page.nested.menu1'),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Menu2',
|
||||
path: 'menu2',
|
||||
meta: {
|
||||
icon: 'ic:round-menu',
|
||||
keepAlive: true,
|
||||
title: $t('page.nested.menu2'),
|
||||
},
|
||||
redirect: '/nested/menu2/menu2-1',
|
||||
children: [
|
||||
{
|
||||
name: 'Menu21',
|
||||
path: 'menu2-1',
|
||||
component: () => import('#/views/nested/menu-2-1.vue'),
|
||||
meta: {
|
||||
icon: 'ic:round-menu',
|
||||
keepAlive: true,
|
||||
title: $t('page.nested.menu21'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'Menu3',
|
||||
path: 'menu3',
|
||||
meta: {
|
||||
icon: 'ic:round-menu',
|
||||
title: $t('page.nested.menu3'),
|
||||
},
|
||||
redirect: '/nested/menu3/menu3-1',
|
||||
children: [
|
||||
{
|
||||
name: 'Menu31',
|
||||
path: 'menu3-1',
|
||||
component: () => import('#/views/nested/menu-3-1.vue'),
|
||||
meta: {
|
||||
icon: 'ic:round-menu',
|
||||
keepAlive: true,
|
||||
title: $t('page.nested.menu31'),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Menu32',
|
||||
path: 'menu3-2',
|
||||
meta: {
|
||||
icon: 'ic:round-menu',
|
||||
title: $t('page.nested.menu32'),
|
||||
},
|
||||
redirect: '/nested/menu3/menu3-2/menu3-2-1',
|
||||
children: [
|
||||
{
|
||||
name: 'Menu321',
|
||||
path: 'menu3-2-1',
|
||||
component: () => import('#/views/nested/menu-3-2-1.vue'),
|
||||
meta: {
|
||||
icon: 'ic:round-menu',
|
||||
keepAlive: true,
|
||||
title: $t('page.nested.menu321'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
export default routes;
|
|
@ -1,86 +0,0 @@
|
|||
import type { RouteRecordRaw } from 'vue-router';
|
||||
|
||||
import { $t } from '@vben/locales/helper';
|
||||
|
||||
import { BasicLayout, IFrameView } from '#/layouts';
|
||||
|
||||
const routes: RouteRecordRaw[] = [
|
||||
{
|
||||
component: BasicLayout,
|
||||
meta: {
|
||||
icon: 'ic:round-settings-input-composite',
|
||||
title: $t('page.outside.title'),
|
||||
},
|
||||
name: 'Outside',
|
||||
path: '/outside',
|
||||
redirect: '/outside/iframe',
|
||||
children: [
|
||||
{
|
||||
name: 'iframe',
|
||||
path: 'iframe',
|
||||
meta: {
|
||||
icon: 'mdi:newspaper-variant-outline',
|
||||
title: $t('page.outside.embedded'),
|
||||
},
|
||||
redirect: '/outside/iframe/vue-document',
|
||||
children: [
|
||||
{
|
||||
name: 'VueDocument',
|
||||
path: 'vue-document',
|
||||
component: IFrameView,
|
||||
meta: {
|
||||
icon: 'logos:vue',
|
||||
iframeSrc: 'https://cn.vuejs.org/',
|
||||
keepAlive: true,
|
||||
title: 'Vue',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Tailwindcss',
|
||||
path: 'tailwindcss',
|
||||
component: IFrameView,
|
||||
meta: {
|
||||
icon: 'devicon:tailwindcss',
|
||||
iframeSrc: 'https://tailwindcss.com/',
|
||||
// keepAlive: true,
|
||||
title: 'Tailwindcss',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'ExternalLink',
|
||||
path: 'external-link',
|
||||
meta: {
|
||||
icon: 'mdi:newspaper-variant-multiple-outline',
|
||||
title: $t('page.outside.external-link'),
|
||||
},
|
||||
redirect: '/outside/external-link/vite',
|
||||
children: [
|
||||
{
|
||||
name: 'Vite',
|
||||
path: 'vite',
|
||||
component: IFrameView,
|
||||
meta: {
|
||||
icon: 'logos:vitejs',
|
||||
link: 'https://vitejs.dev/',
|
||||
title: 'Vite',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'VueUse',
|
||||
path: 'vue-use',
|
||||
component: IFrameView,
|
||||
meta: {
|
||||
icon: 'logos:vueuse',
|
||||
link: 'https://vueuse.org',
|
||||
title: 'VueUse',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
export default routes;
|
|
@ -10,9 +10,10 @@ const routes: RouteRecordRaw[] = [
|
|||
{
|
||||
component: BasicLayout,
|
||||
meta: {
|
||||
badgeType: 'dot',
|
||||
icon: VBEN_LOGO,
|
||||
order: 9999,
|
||||
title: 'Vben',
|
||||
title: 'Vben Admin',
|
||||
},
|
||||
name: 'AboutLayout',
|
||||
path: '/vben-admin',
|
||||
|
@ -23,6 +24,7 @@ const routes: RouteRecordRaw[] = [
|
|||
path: 'about',
|
||||
component: () => import('#/views/_essential/vben/about/index.vue'),
|
||||
meta: {
|
||||
badgeType: 'dot',
|
||||
icon: 'mdi:creative-commons',
|
||||
title: $t('page.vben.about'),
|
||||
},
|
||||
|
|
|
@ -3,5 +3,5 @@ import { Fallback } from '@vben/universal-ui';
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<Fallback status="hello" />
|
||||
<Fallback status="comming-soon" />
|
||||
</template>
|
||||
|
|
|
@ -5,5 +5,5 @@ defineOptions({ name: 'Menu1' });
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<Fallback status="hello" />
|
||||
<Fallback status="comming-soon" />
|
||||
</template>
|
|
@ -5,5 +5,5 @@ defineOptions({ name: 'Menu21' });
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<Fallback status="hello" />
|
||||
<Fallback status="comming-soon" />
|
||||
</template>
|
|
@ -5,5 +5,5 @@ defineOptions({ name: 'Menu31' });
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<Fallback status="hello" />
|
||||
<Fallback status="comming-soon" />
|
||||
</template>
|
|
@ -5,5 +5,5 @@ defineOptions({ name: 'Menu321' });
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<Fallback status="hello" />
|
||||
<Fallback status="comming-soon" />
|
||||
</template>
|
|
@ -3,8 +3,8 @@ import { defineConfig } from '@vben/vite-config';
|
|||
export default defineConfig({
|
||||
application: ({ mode }) => {
|
||||
return {
|
||||
compress: true,
|
||||
compressTypes: ['brotli', 'gzip'],
|
||||
compress: false,
|
||||
compressTypes: ['brotli', 'gzip'] as const,
|
||||
importmap: false,
|
||||
importmapOptions: {
|
||||
// 通过 Importmap CDN 方式引入,
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
"dayjs": "^1.11.11",
|
||||
"find-up": "^7.0.0",
|
||||
"nanoid": "^5.0.7",
|
||||
"pkg-types": "^1.1.1",
|
||||
"pkg-types": "^1.1.2",
|
||||
"prettier": "^3.3.2",
|
||||
"rimraf": "^5.0.7",
|
||||
"zx": "^7.2.3"
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
"tailwindcss": "^3.4.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@iconify/json": "^2.2.223",
|
||||
"@iconify/json": "^2.2.224",
|
||||
"@iconify/tailwind": "^1.1.1",
|
||||
"@tailwindcss/forms": "^0.5.7",
|
||||
"@tailwindcss/nesting": "0.0.0-insiders.565cd3e",
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@changesets/changelog-github": "^0.5.0",
|
||||
"@changesets/cli": "^2.27.6",
|
||||
"@changesets/cli": "^2.27.7",
|
||||
"@ls-lint/ls-lint": "^2.2.3",
|
||||
"@types/jsdom": "^21.1.7",
|
||||
"@types/node": "^20.14.9",
|
||||
|
|
|
@ -49,10 +49,10 @@ const appName = computed(() => preferences.app.name);
|
|||
<div class="flex-col-center -enter-x mr-20 h-full">
|
||||
<SloganIcon :alt="appName" class="animate-float h-64 w-2/5" />
|
||||
<div class="text-1xl mt-6 font-sans text-white lg:text-2xl">
|
||||
{{ $t('authentication.layout-title') }}
|
||||
{{ $t('authentication.page-title') }}
|
||||
</div>
|
||||
<div class="dark:text-muted-foreground mt-2 text-white/60">
|
||||
{{ $t('authentication.layout-desc') }}
|
||||
{{ $t('authentication.page-desc') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -21,17 +21,17 @@ const menus = computed((): VbenDropdownMenuItem[] => [
|
|||
{
|
||||
icon: MdiDockLeft,
|
||||
key: 'panel-left',
|
||||
text: $t('layout.align-left'),
|
||||
text: $t('authentication.layout.align-left'),
|
||||
},
|
||||
{
|
||||
icon: MdiDockBottom,
|
||||
key: 'panel-center',
|
||||
text: $t('layout.center'),
|
||||
text: $t('authentication.layout.center'),
|
||||
},
|
||||
{
|
||||
icon: MdiDockRight,
|
||||
key: 'panel-right',
|
||||
text: $t('layout.align-right'),
|
||||
text: $t('authentication.layout.align-right'),
|
||||
},
|
||||
]);
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ function useContentSpinner() {
|
|||
};
|
||||
|
||||
router.beforeEach((to) => {
|
||||
if (to.meta.loaded || !enableLoading.value) {
|
||||
if (to.meta.loaded || !enableLoading.value || to.meta.iframeSrc) {
|
||||
return true;
|
||||
}
|
||||
startTime.value = performance.now();
|
||||
|
@ -34,7 +34,7 @@ function useContentSpinner() {
|
|||
});
|
||||
|
||||
router.afterEach((to) => {
|
||||
if (to.meta.loaded || !enableLoading.value) {
|
||||
if (to.meta.loaded || !enableLoading.value || to.meta.iframeSrc) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ interface FallbackProps {
|
|||
/**
|
||||
* @zh_CN 内置类型
|
||||
*/
|
||||
status?: '403' | '404' | '500' | 'hello' | 'offline';
|
||||
status?: '403' | '404' | '500' | 'comming-soon' | 'offline';
|
||||
/**
|
||||
* @zh_CN 页面提示语
|
||||
*/
|
||||
|
|
|
@ -19,14 +19,16 @@ const props = withDefaults(defineProps<Props>(), {
|
|||
homePath: '/',
|
||||
image: '',
|
||||
showBack: true,
|
||||
status: 'hello',
|
||||
status: 'comming-soon',
|
||||
title: '',
|
||||
});
|
||||
|
||||
const Icon403 = defineAsyncComponent(() => import('./icons/icon-403.vue'));
|
||||
const Icon404 = defineAsyncComponent(() => import('./icons/icon-404.vue'));
|
||||
const Icon500 = defineAsyncComponent(() => import('./icons/icon-500.vue'));
|
||||
const IconHello = defineAsyncComponent(() => import('./icons/icon-hello.vue'));
|
||||
const IconHello = defineAsyncComponent(
|
||||
() => import('./icons/icon-comming-soon.vue'),
|
||||
);
|
||||
const IconOffline = defineAsyncComponent(
|
||||
() => import('./icons/icon-offline.vue'),
|
||||
);
|
||||
|
@ -49,7 +51,7 @@ const titleText = computed(() => {
|
|||
case 'offline': {
|
||||
return $t('fallback.offline-error');
|
||||
}
|
||||
case 'hello': {
|
||||
case 'comming-soon': {
|
||||
return $t('fallback.coming-soon');
|
||||
}
|
||||
default: {
|
||||
|
@ -95,7 +97,7 @@ const fallbackIcon = computed(() => {
|
|||
case 'offline': {
|
||||
return IconOffline;
|
||||
}
|
||||
case 'hello': {
|
||||
case 'comming-soon': {
|
||||
return IconHello;
|
||||
}
|
||||
default: {
|
||||
|
|
|
@ -71,7 +71,7 @@ if (props.enableShortcutKey) {
|
|||
<span
|
||||
class="text-muted-foreground group-hover:text-foreground hidden text-sm duration-300 md:block"
|
||||
>
|
||||
{{ $t('search.search') }}
|
||||
{{ $t('widgets.search.title') }}
|
||||
</span>
|
||||
<span
|
||||
v-if="enableShortcutKey"
|
||||
|
@ -94,7 +94,7 @@ if (props.enableShortcutKey) {
|
|||
<IcRoundSearch class="mt-1 size-4" />
|
||||
<input
|
||||
v-model="keyword"
|
||||
:placeholder="$t('search.search-navigate')"
|
||||
:placeholder="$t('widgets.search.search-navigate')"
|
||||
class="ring-none placeholder:text-muted-foreground w-[80%] rounded-md border border-none bg-transparent p-2 text-sm outline-none ring-0 ring-offset-transparent focus-visible:ring-transparent"
|
||||
/>
|
||||
</DialogTitle>
|
||||
|
@ -106,16 +106,16 @@ if (props.enableShortcutKey) {
|
|||
>
|
||||
<div class="flex items-center">
|
||||
<IcRoundSubdirectoryArrowLeft class="mr-1" />
|
||||
{{ $t('search.select') }}
|
||||
{{ $t('widgets.search.select') }}
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<IcRoundArrowUpward class="mr-2" />
|
||||
<IcRoundArrowDownward class="mr-2" />
|
||||
{{ $t('search.navigate') }}
|
||||
{{ $t('widgets.search.navigate') }}
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<MdiKeyboardEsc class="mr-1" />
|
||||
{{ $t('search.close') }}
|
||||
{{ $t('widgets.search.close') }}
|
||||
</div>
|
||||
</DialogFooter>
|
||||
</DialogContent>
|
||||
|
|
|
@ -223,7 +223,7 @@ onMounted(() => {
|
|||
>
|
||||
<IcRoundSearchOff class="size-12" />
|
||||
<p class="my-10 text-xs">
|
||||
{{ $t('search.no-results') }}
|
||||
{{ $t('widgets.search.no-results') }}
|
||||
<span class="text-foreground text-sm font-medium">
|
||||
"{{ keyword }}"
|
||||
</span>
|
||||
|
@ -235,7 +235,7 @@ onMounted(() => {
|
|||
class="text-muted-foreground text-center"
|
||||
>
|
||||
<p class="my-10 text-xs">
|
||||
{{ $t('search.no-recent') }}
|
||||
{{ $t('widgets.search.no-recent') }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
@ -244,7 +244,7 @@ onMounted(() => {
|
|||
v-if="searchHistory.length > 0 && !keyword"
|
||||
class="text-muted-foreground mb-2 text-xs"
|
||||
>
|
||||
{{ $t('search.recent') }}
|
||||
{{ $t('widgets.search.recent') }}
|
||||
</li>
|
||||
<li
|
||||
v-for="(item, index) in uniqueByField(searchResults, 'path')"
|
||||
|
|
|
@ -13,7 +13,7 @@ const logoVisible = defineModel<boolean>('logoVisible');
|
|||
|
||||
<template>
|
||||
<SwitchItem v-model="tabsVisible">
|
||||
{{ $t('preferences.tabs-visible') }}
|
||||
{{ $t('preferences.tabbar.enable') }}
|
||||
</SwitchItem>
|
||||
<SwitchItem v-model="logoVisible">
|
||||
{{ $t('preferences.logo-visible') }}
|
||||
|
|
|
@ -28,18 +28,18 @@ const stylesItems: SelectListItem[] = [
|
|||
:disabled="disabled"
|
||||
:items="stylesItems"
|
||||
>
|
||||
{{ $t('preferences.navigation-style') }}
|
||||
{{ $t('preferences.navigation-menu.style') }}
|
||||
</ToggleItem>
|
||||
<SwitchItem
|
||||
v-model="navigationSplit"
|
||||
:disabled="disabledNavigationSplit || disabled"
|
||||
>
|
||||
{{ $t('preferences.navigation-split') }}
|
||||
{{ $t('preferences.navigation-menu.split') }}
|
||||
<template #tip>
|
||||
{{ $t('preferences.navigation-split-tip') }}
|
||||
{{ $t('preferences.navigation-menu.split-tip') }}
|
||||
</template>
|
||||
</SwitchItem>
|
||||
<SwitchItem v-model="navigationAccordion" :disabled="disabled">
|
||||
{{ $t('preferences.navigation-accordion') }}
|
||||
{{ $t('preferences.navigation-menu.accordion') }}
|
||||
</SwitchItem>
|
||||
</template>
|
||||
|
|
|
@ -15,10 +15,10 @@ const tabbarShowIcon = defineModel<boolean>('tabbarShowIcon');
|
|||
|
||||
<template>
|
||||
<SwitchItem v-model="tabbarEnable" :disabled="disabled">
|
||||
{{ $t('preferences.tabs-visible') }}
|
||||
{{ $t('preferences.tabbar.enable') }}
|
||||
</SwitchItem>
|
||||
<SwitchItem v-model="tabbarShowIcon" :disabled="!tabbarEnable">
|
||||
{{ $t('preferences.tabs-icon') }}
|
||||
{{ $t('preferences.tabbar.icon') }}
|
||||
</SwitchItem>
|
||||
<!-- <SwitchItem v-model="sideCollapseShowTitle" :disabled="!tabsVisible">
|
||||
{{ $t('preferences.collapse-show-title') }}
|
||||
|
|
|
@ -28,50 +28,50 @@ const inputValue = computed(() => {
|
|||
function typeView(name: BuiltinThemeType) {
|
||||
switch (name) {
|
||||
case 'default': {
|
||||
return $t('preferences.theme.default');
|
||||
return $t('preferences.theme.builtin.default');
|
||||
}
|
||||
case 'violet': {
|
||||
return $t('preferences.theme.violet');
|
||||
return $t('preferences.theme.builtin.violet');
|
||||
}
|
||||
case 'pink': {
|
||||
return $t('preferences.theme.pink');
|
||||
return $t('preferences.theme.builtin.pink');
|
||||
}
|
||||
case 'rose': {
|
||||
return $t('preferences.theme.rose');
|
||||
return $t('preferences.theme.builtin.rose');
|
||||
}
|
||||
case 'sky-blue': {
|
||||
return $t('preferences.theme.sky-blue');
|
||||
return $t('preferences.theme.builtin.sky-blue');
|
||||
}
|
||||
case 'deep-blue': {
|
||||
return $t('preferences.theme.deep-blue');
|
||||
return $t('preferences.theme.builtin.deep-blue');
|
||||
}
|
||||
|
||||
case 'green': {
|
||||
return $t('preferences.theme.green');
|
||||
return $t('preferences.theme.builtin.green');
|
||||
}
|
||||
case 'deep-green': {
|
||||
return $t('preferences.theme.deep-green');
|
||||
return $t('preferences.theme.builtin.deep-green');
|
||||
}
|
||||
case 'orange': {
|
||||
return $t('preferences.theme.orange');
|
||||
return $t('preferences.theme.builtin.orange');
|
||||
}
|
||||
case 'yellow': {
|
||||
return $t('preferences.theme.yellow');
|
||||
return $t('preferences.theme.builtin.yellow');
|
||||
}
|
||||
case 'zinc': {
|
||||
return $t('preferences.theme.zinc');
|
||||
return $t('preferences.theme.builtin.zinc');
|
||||
}
|
||||
case 'neutral': {
|
||||
return $t('preferences.theme.neutral');
|
||||
return $t('preferences.theme.builtin.neutral');
|
||||
}
|
||||
case 'slate': {
|
||||
return $t('preferences.theme.slate');
|
||||
return $t('preferences.theme.builtin.slate');
|
||||
}
|
||||
case 'gray': {
|
||||
return $t('preferences.theme.gray');
|
||||
return $t('preferences.theme.builtin.gray');
|
||||
}
|
||||
case 'custom': {
|
||||
return $t('preferences.theme.custom');
|
||||
return $t('preferences.theme.builtin.custom');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,9 +18,9 @@ const appColorGrayMode = defineModel<boolean>('appColorGrayMode', {
|
|||
|
||||
<template>
|
||||
<SwitchItem v-model="appColorWeakMode">
|
||||
{{ $t('preferences.weak-mode') }}
|
||||
{{ $t('preferences.theme.weak-mode') }}
|
||||
</SwitchItem>
|
||||
<SwitchItem v-model="appColorGrayMode">
|
||||
{{ $t('preferences.gray-mode') }}
|
||||
{{ $t('preferences.theme.gray-mode') }}
|
||||
</SwitchItem>
|
||||
</template>
|
||||
|
|
|
@ -43,10 +43,10 @@ function activeClass(theme: string): string[] {
|
|||
function nameView(name: string) {
|
||||
switch (name) {
|
||||
case 'light': {
|
||||
return $t('preferences.light');
|
||||
return $t('preferences.theme.light');
|
||||
}
|
||||
case 'dark': {
|
||||
return $t('preferences.dark');
|
||||
return $t('preferences.theme.dark');
|
||||
}
|
||||
case 'auto': {
|
||||
return $t('preferences.follow-system');
|
||||
|
@ -79,7 +79,7 @@ function nameView(name: string) {
|
|||
:disabled="modelValue !== 'light'"
|
||||
class="mt-6"
|
||||
>
|
||||
{{ $t('preferences.dark-menu') }}
|
||||
{{ $t('preferences.theme.dark-menu') }}
|
||||
</SwitchItem>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
@ -233,7 +233,7 @@ async function handleReset() {
|
|||
:color-primary-presets="colorPrimaryPresets"
|
||||
/>
|
||||
</Block> -->
|
||||
<Block :title="$t('preferences.theme.builtin')">
|
||||
<Block :title="$t('preferences.theme.builtin.title')">
|
||||
<BuiltinTheme
|
||||
v-model="themeBuiltinType"
|
||||
v-model:theme-color-primary="themeColorPrimary"
|
||||
|
@ -275,7 +275,7 @@ async function handleReset() {
|
|||
/>
|
||||
</Block>
|
||||
|
||||
<Block :title="$t('preferences.navigation-menu')">
|
||||
<Block :title="$t('preferences.navigation-menu.title')">
|
||||
<Navigation
|
||||
v-model:navigation-accordion="navigationAccordion"
|
||||
v-model:navigation-split="navigationSplit"
|
||||
|
@ -298,7 +298,7 @@ async function handleReset() {
|
|||
/>
|
||||
</Block>
|
||||
|
||||
<Block :title="$t('preferences.tabs')">
|
||||
<Block :title="$t('preferences.tabbar.title')">
|
||||
<Tabbar
|
||||
v-model:tabbar-enable="tabbarEnable"
|
||||
v-model:tabbar-show-icon="tabbarShowIcon"
|
||||
|
|
|
@ -39,12 +39,12 @@ const PRESETS = [
|
|||
{
|
||||
icon: IcRoundWbSunny,
|
||||
name: 'light',
|
||||
title: $t('preferences.light'),
|
||||
title: $t('preferences.theme.light'),
|
||||
},
|
||||
{
|
||||
icon: MdiMoonAndStars,
|
||||
name: 'dark',
|
||||
title: $t('preferences.dark'),
|
||||
title: $t('preferences.theme.dark'),
|
||||
},
|
||||
{
|
||||
icon: IcRoundMotionPhotosAuto,
|
||||
|
|
|
@ -1,3 +1,35 @@
|
|||
page:
|
||||
demos:
|
||||
title: Demos
|
||||
nested:
|
||||
title: Nested Menu
|
||||
menu1: Menu 1
|
||||
menu2: Menu 2
|
||||
menu21: Menu 2-1
|
||||
menu3: Menu 3
|
||||
menu31: Menu 3-1
|
||||
menu32: Menu 3-2
|
||||
menu321: Menu 3-2-1
|
||||
outside:
|
||||
title: External Page
|
||||
embedded: embedded Page
|
||||
external-link: External Link
|
||||
fallback:
|
||||
title: Exception Page
|
||||
essentials:
|
||||
login: Login
|
||||
register: Register
|
||||
code-login: Code Login
|
||||
qrcode-login: Qrcode Login
|
||||
forget-password: Forget Password
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
analytics: Analytics
|
||||
workspace: Workspace
|
||||
vben:
|
||||
about: About
|
||||
document: Document
|
||||
|
||||
common:
|
||||
back: Back
|
||||
back-to-home: Back To Home
|
||||
|
@ -6,15 +38,9 @@ common:
|
|||
prompt: Prompt
|
||||
cancel: Cancel
|
||||
confirm: Comfirm
|
||||
search: Search
|
||||
not-data: No data
|
||||
refresh: Refresh
|
||||
|
||||
layout:
|
||||
center: Align Center
|
||||
align-left: Align Left
|
||||
align-right: Align Right
|
||||
|
||||
fallback:
|
||||
page-not-found: Oops! Page Not Found
|
||||
page-not-found-desc: Sorry, we couldn't find the page you were looking for.
|
||||
|
@ -36,33 +62,32 @@ widgets:
|
|||
notifications: Notifications
|
||||
make-all-as-read: Make all as read
|
||||
clear-notifications: Clear
|
||||
|
||||
search:
|
||||
search: Search
|
||||
search-navigate: Search Navigate
|
||||
select: To select
|
||||
navigate: To navigate
|
||||
close: To close
|
||||
no-results: No results for
|
||||
no-recent: No recent searches
|
||||
recent: Recent
|
||||
search:
|
||||
title: Search
|
||||
search-navigate: Search Navigate
|
||||
select: To select
|
||||
navigate: To navigate
|
||||
close: To close
|
||||
no-results: No results for
|
||||
no-recent: No recent searches
|
||||
recent: Recent
|
||||
|
||||
authentication:
|
||||
layout-title: Plug-and-play backend system
|
||||
layout-desc: Efficient, versatile frontend template
|
||||
welcome-back: Welcome Back
|
||||
page-title: Plug-and-play backend system
|
||||
page-desc: Efficient, versatile frontend template
|
||||
login-success: Login successful
|
||||
login-success-desc: Welcome back
|
||||
welcome-back: Welcome Back
|
||||
login-subtitle: Enter your account details to manage your projects
|
||||
username: Username
|
||||
password: Password
|
||||
username-tip: Username is required
|
||||
password-tip: Password is required
|
||||
account-tip: Don't have an account yet?
|
||||
remember-me: Remember Me
|
||||
create-an-account: Create an account
|
||||
create-account: Create account
|
||||
already-account: Already have an account?
|
||||
remember-me: Remember Me
|
||||
account-tip: Don't have an account yet?
|
||||
sign-up: Sign Up
|
||||
sign-up-subtitle: Make managing your applications simple and fun
|
||||
comfirm-password: Comfirm Password
|
||||
|
@ -90,51 +115,21 @@ authentication:
|
|||
send-code: Get Security code
|
||||
send-text: "Reacquire in {0}s"
|
||||
third-party-login: Or continue with
|
||||
|
||||
page:
|
||||
essentials:
|
||||
login: Login
|
||||
register: Register
|
||||
code-login: Code Login
|
||||
qrcode-login: Qrcode Login
|
||||
forget-password: Forget Password
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
analytics: Analytics
|
||||
workspace: Workspace
|
||||
vben:
|
||||
about: About
|
||||
document: Document
|
||||
outside:
|
||||
title: External Page
|
||||
embedded: embedded Page
|
||||
external-link: External Link
|
||||
nested:
|
||||
title: Nested Menu
|
||||
menu1: Menu 1
|
||||
menu2: Menu 2
|
||||
menu21: Menu 2-1
|
||||
menu3: Menu 3
|
||||
menu31: Menu 3-1
|
||||
menu32: Menu 3-2
|
||||
menu321: Menu 3-2-1
|
||||
fallback:
|
||||
title: Exception Page
|
||||
layout:
|
||||
center: Align Center
|
||||
align-left: Align Left
|
||||
align-right: Align Right
|
||||
|
||||
preferences:
|
||||
title: Preferences
|
||||
subtitle: Customize Preferences & Preview in Real Time
|
||||
reset-tip: The data has changed, click to reset
|
||||
ai-assistant: Ai Assistant
|
||||
# appearance
|
||||
appearance: Appearance
|
||||
theme-color: Theme Color
|
||||
# layout
|
||||
layout: Layout
|
||||
general: General
|
||||
content: Content
|
||||
other: Other
|
||||
light: Light
|
||||
dark: Dark
|
||||
dark-menu: Semi Dark Menu
|
||||
wide: Fluid
|
||||
compact: Fixed Width
|
||||
follow-system: Follow System
|
||||
|
@ -151,29 +146,34 @@ preferences:
|
|||
full-content-tip: Display only the main content, no menus
|
||||
weak-mode: Color Weak Mode
|
||||
gray-mode: Gray Mode
|
||||
language: Language
|
||||
dynamic-title: Dynamic Title
|
||||
normal: Normal
|
||||
plain: Plain
|
||||
rounded: Rounded
|
||||
collapse: Collpase Menu
|
||||
collapse-show-title: Display menu name
|
||||
navigation-menu: Navigation Menu
|
||||
navigation-style: Navigation menu style
|
||||
navigation-split: Navigation Menu Separation
|
||||
navigation-accordion: Sidebar Navigation Menu Accordion mode
|
||||
navigation-split-tip: When enabled, the sidebar shows the top bar's submenu
|
||||
interface-control: Interface Layout Control
|
||||
copy: Copy Preferences
|
||||
copy-success: Copy successful. Please replace in `src/preferences.ts` of the app
|
||||
reset-success: Preferences reset successfully
|
||||
sidebar: Sidebar
|
||||
side-visible: Display Sidebar
|
||||
tabs-visible: Display Tab Bar
|
||||
tabs: Tabs
|
||||
tabs-icon: Display Tabbar Icon
|
||||
mode: Mode
|
||||
logo-visible: Display Logo
|
||||
# general
|
||||
general: General
|
||||
language: Language
|
||||
dynamic-title: Dynamic Title
|
||||
ai-assistant: Ai Assistant
|
||||
tabbar:
|
||||
title: Tabbar
|
||||
enable: Enable Tab Bar
|
||||
icon: Display Tabbar Icon
|
||||
navigation-menu:
|
||||
title: Navigation Menu
|
||||
style: Navigation menu style
|
||||
split: Navigation Menu Separation
|
||||
accordion: Sidebar Navigation Menu Accordion mode
|
||||
split-tip: When enabled, the sidebar shows the top bar's submenu
|
||||
breadcrumb:
|
||||
title: Breadcrumb
|
||||
home: Display the home button
|
||||
|
@ -189,23 +189,29 @@ preferences:
|
|||
progress: Page transition progress
|
||||
theme:
|
||||
title: Theme
|
||||
builtin: Built-in
|
||||
radius: Radius
|
||||
default: Default
|
||||
violet: Violet
|
||||
pink: Pink
|
||||
rose: Rose
|
||||
sky-blue: Sky Blue
|
||||
deep-blue: Deep Blue
|
||||
green: Green
|
||||
deep-green: Deep Green
|
||||
orange: Orange
|
||||
yellow: Yellow
|
||||
zinc: Zinc
|
||||
neutral: Neutral
|
||||
slate: Slate
|
||||
gray: Gray
|
||||
custom: Custom
|
||||
light: Light
|
||||
dark: Dark
|
||||
dark-menu: Semi Dark Menu
|
||||
weak-mode: Color Weak Mode
|
||||
gray-mode: Gray Mode
|
||||
builtin:
|
||||
title: Built-in
|
||||
default: Default
|
||||
violet: Violet
|
||||
pink: Pink
|
||||
rose: Rose
|
||||
sky-blue: Sky Blue
|
||||
deep-blue: Deep Blue
|
||||
green: Green
|
||||
deep-green: Deep Green
|
||||
orange: Orange
|
||||
yellow: Yellow
|
||||
zinc: Zinc
|
||||
neutral: Neutral
|
||||
slate: Slate
|
||||
gray: Gray
|
||||
custom: Custom
|
||||
header:
|
||||
title: Header
|
||||
visible: Display Header
|
||||
|
|
|
@ -1,3 +1,35 @@
|
|||
page:
|
||||
demos:
|
||||
title: 演示
|
||||
nested:
|
||||
title: 嵌套菜单
|
||||
menu1: 菜单 1
|
||||
menu2: 菜单 2
|
||||
menu21: 菜单 2-1
|
||||
menu3: 菜单 3
|
||||
menu31: 菜单 3-1
|
||||
menu32: 菜单 3-2
|
||||
menu321: 菜单 3-2-1
|
||||
outside:
|
||||
title: 外部页面
|
||||
embedded: 内嵌
|
||||
external-link: 外链
|
||||
fallback:
|
||||
title: 异常页面
|
||||
essentials:
|
||||
login: 登陆
|
||||
register: 注册
|
||||
code-login: 验证码登陆
|
||||
qrcode-login: 二维码登陆
|
||||
forget-password: 忘记密码
|
||||
dashboard:
|
||||
title: 概览
|
||||
analytics: 分析页
|
||||
workspace: 工作台
|
||||
vben:
|
||||
about: 关于
|
||||
document: 文档
|
||||
|
||||
common:
|
||||
back: 返回
|
||||
back-to-home: 返回首页
|
||||
|
@ -9,11 +41,6 @@ common:
|
|||
not-data: 暂无数据
|
||||
refresh: 刷新
|
||||
|
||||
layout:
|
||||
center: 居中
|
||||
align-left: 居左
|
||||
align-right: 居右
|
||||
|
||||
fallback:
|
||||
page-not-found: 哎呀!未找到页面
|
||||
page-not-found-desc: 抱歉,我们无法找到您要找的页面。
|
||||
|
@ -35,23 +62,22 @@ widgets:
|
|||
notifications: 通知
|
||||
make-all-as-read: 全部标记为已读
|
||||
clear-notifications: 清空
|
||||
|
||||
search:
|
||||
search: 搜索
|
||||
search-navigate: 搜索导航菜单
|
||||
select: 选择
|
||||
navigate: 导航
|
||||
close: 关闭
|
||||
no-results: 未找到搜索结果
|
||||
no-recent: 没有搜索历史
|
||||
recent: 搜索历史
|
||||
search:
|
||||
title: 搜索
|
||||
search-navigate: 搜索导航菜单
|
||||
select: 选择
|
||||
navigate: 导航
|
||||
close: 关闭
|
||||
no-results: 未找到搜索结果
|
||||
no-recent: 没有搜索历史
|
||||
recent: 搜索历史
|
||||
|
||||
authentication:
|
||||
layout-title: 开箱即用的大型中后台管理系统
|
||||
layout-desc: 工程化、高性能、跨组件库的前端模版
|
||||
welcome-back: 欢迎回来
|
||||
page-title: 开箱即用的大型中后台管理系统
|
||||
page-desc: 工程化、高性能、跨组件库的前端模版
|
||||
login-success: 登录成功
|
||||
login-success-desc: 欢迎回来
|
||||
welcome-back: 欢迎回来
|
||||
login-subtitle: 请输入您的帐户信息以开始管理您的项目
|
||||
username: 账号
|
||||
password: 密码
|
||||
|
@ -89,57 +115,26 @@ authentication:
|
|||
send-code: 获取验证码
|
||||
send-text: "{0}秒后重新获取"
|
||||
third-party-login: 其他登录方式
|
||||
|
||||
page:
|
||||
essentials:
|
||||
login: 登陆
|
||||
register: 注册
|
||||
code-login: 验证码登陆
|
||||
qrcode-login: 二维码登陆
|
||||
forget-password: 忘记密码
|
||||
dashboard:
|
||||
title: 概览
|
||||
analytics: 分析页
|
||||
workspace: 工作台
|
||||
vben:
|
||||
about: 关于
|
||||
document: 文档
|
||||
outside:
|
||||
title: 外部页面
|
||||
embedded: 内嵌
|
||||
external-link: 外链
|
||||
nested:
|
||||
title: 嵌套菜单
|
||||
menu1: 菜单 1
|
||||
menu2: 菜单 2
|
||||
menu21: 菜单 2-1
|
||||
menu3: 菜单 3
|
||||
menu31: 菜单 3-1
|
||||
menu32: 菜单 3-2
|
||||
menu321: 菜单 3-2-1
|
||||
fallback:
|
||||
title: 异常页面
|
||||
layout:
|
||||
center: 居中
|
||||
align-left: 居左
|
||||
align-right: 居右
|
||||
|
||||
preferences:
|
||||
title: 偏好设置
|
||||
subtitle: 自定义偏好设置 & 实时预览
|
||||
reset-tip: 数据有变化,点击可进行重置
|
||||
# appearance
|
||||
appearance: 外观
|
||||
theme-color: 主题色
|
||||
# layout
|
||||
layout: 布局
|
||||
general: 通用
|
||||
content: 内容
|
||||
other: 其它
|
||||
light: 浅色
|
||||
dark: 深色
|
||||
dark-menu: 深色菜单
|
||||
language: 语言
|
||||
dynamic-title: 动态标题
|
||||
ai-assistant: Ai 助手
|
||||
collapse: 折叠菜单
|
||||
collapse-show-title: 显示菜单名
|
||||
wide: 流式
|
||||
compact: 定宽
|
||||
follow-system: 跟随系统
|
||||
collapse: 折叠菜单
|
||||
collapse-show-title: 显示菜单名
|
||||
vertical: 垂直
|
||||
vertical-tip: 侧边垂直菜单模式
|
||||
horizontal: 水平
|
||||
|
@ -151,14 +146,6 @@ preferences:
|
|||
split-menu: 切割菜单
|
||||
full-content: 内容全屏
|
||||
full-content-tip: 不显示任何菜单,只显示内容主体
|
||||
follow-system: 跟随系统
|
||||
weak-mode: 色弱模式
|
||||
gray-mode: 灰色模式
|
||||
navigation-menu: 导航菜单
|
||||
navigation-style: 导航菜单风格
|
||||
navigation-accordion: 侧边导航菜单手风琴模式
|
||||
navigation-split: 导航菜单分离
|
||||
navigation-split-tip: 开启时,侧边栏显示顶栏对应菜单的子菜单
|
||||
interface-control: 界面布局控制
|
||||
normal: 默认
|
||||
plain: 朴素
|
||||
|
@ -168,11 +155,24 @@ preferences:
|
|||
reset-success: 重置偏好设置成功
|
||||
sidebar: 侧边栏
|
||||
side-visible: 显示侧边栏
|
||||
tabs-visible: 显示标签栏
|
||||
tabs: 标签栏
|
||||
tabs-icon: 显示标签栏图标
|
||||
mode: 模式
|
||||
logo-visible: 显示 Logo
|
||||
# general
|
||||
general: 通用
|
||||
language: 语言
|
||||
dynamic-title: 动态标题
|
||||
ai-assistant: Ai 助手
|
||||
|
||||
tabbar:
|
||||
title: 标签栏
|
||||
enable: 启用标签栏
|
||||
icon: 显示标签栏图标
|
||||
navigation-menu:
|
||||
title: 导航菜单
|
||||
style: 导航菜单风格
|
||||
accordion: 侧边导航菜单手风琴模式
|
||||
split: 导航菜单分离
|
||||
split-tip: 开启时,侧边栏显示顶栏对应菜单的子菜单
|
||||
breadcrumb:
|
||||
title: 面包屑导航
|
||||
enable: 开启面包屑导航
|
||||
|
@ -188,23 +188,29 @@ preferences:
|
|||
progress: 页面切换进度条
|
||||
theme:
|
||||
title: 主题
|
||||
builtin: 内置主题
|
||||
radius: 圆角
|
||||
default: 默认
|
||||
violet: 紫罗兰
|
||||
pink: 樱花粉
|
||||
rose: 玫瑰红
|
||||
sky-blue: 天蓝色
|
||||
deep-blue: 深蓝色
|
||||
green: 浅绿色
|
||||
deep-green: 深绿色
|
||||
orange: 橙黄色
|
||||
yellow: 柠檬黄
|
||||
zinc: 锌色灰
|
||||
neutral: 中性色
|
||||
slate: 石板灰
|
||||
gray: 中灰色
|
||||
custom: 自定义
|
||||
light: 浅色
|
||||
dark: 深色
|
||||
dark-menu: 深色菜单
|
||||
weak-mode: 色弱模式
|
||||
gray-mode: 灰色模式
|
||||
builtin:
|
||||
title: 内置主题
|
||||
default: 默认
|
||||
violet: 紫罗兰
|
||||
pink: 樱花粉
|
||||
rose: 玫瑰红
|
||||
sky-blue: 天蓝色
|
||||
deep-blue: 深蓝色
|
||||
green: 浅绿色
|
||||
deep-green: 深绿色
|
||||
orange: 橙黄色
|
||||
yellow: 柠檬黄
|
||||
zinc: 锌色灰
|
||||
neutral: 中性色
|
||||
slate: 石板灰
|
||||
gray: 中灰色
|
||||
custom: 自定义
|
||||
header:
|
||||
title: 顶栏
|
||||
mode-static: 静止
|
||||
|
|
|
@ -18,8 +18,8 @@ importers:
|
|||
specifier: ^0.5.0
|
||||
version: 0.5.0(encoding@0.1.13)
|
||||
'@changesets/cli':
|
||||
specifier: ^2.27.6
|
||||
version: 2.27.6
|
||||
specifier: ^2.27.7
|
||||
version: 2.27.7
|
||||
'@ls-lint/ls-lint':
|
||||
specifier: ^2.2.3
|
||||
version: 2.2.3
|
||||
|
@ -342,8 +342,8 @@ importers:
|
|||
specifier: ^5.0.7
|
||||
version: 5.0.7
|
||||
pkg-types:
|
||||
specifier: ^1.1.1
|
||||
version: 1.1.1
|
||||
specifier: ^1.1.2
|
||||
version: 1.1.2
|
||||
prettier:
|
||||
specifier: ^3.3.2
|
||||
version: 3.3.2
|
||||
|
@ -357,8 +357,8 @@ importers:
|
|||
internal/tailwind-config:
|
||||
dependencies:
|
||||
'@iconify/json':
|
||||
specifier: ^2.2.223
|
||||
version: 2.2.223
|
||||
specifier: ^2.2.224
|
||||
version: 2.2.224
|
||||
'@iconify/tailwind':
|
||||
specifier: ^1.1.1
|
||||
version: 1.1.1
|
||||
|
@ -1775,11 +1775,11 @@ packages:
|
|||
resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
|
||||
'@changesets/apply-release-plan@7.0.3':
|
||||
resolution: {integrity: sha512-klL6LCdmfbEe9oyfLxnidIf/stFXmrbFO/3gT5LU5pcyoZytzJe4gWpTBx3BPmyNPl16dZ1xrkcW7b98e3tYkA==}
|
||||
'@changesets/apply-release-plan@7.0.4':
|
||||
resolution: {integrity: sha512-HLFwhKWayKinWAul0Vj+76jVx1Pc2v55MGPVjZ924Y/ROeSsBMFutv9heHmCUj48lJyRfOTJG5+ar+29FUky/A==}
|
||||
|
||||
'@changesets/assemble-release-plan@6.0.2':
|
||||
resolution: {integrity: sha512-n9/Tdq+ze+iUtjmq0mZO3pEhJTKkku9hUxtUadW30jlN7kONqJG3O6ALeXrmc6gsi/nvoCuKjqEJ68Hk8RbMTQ==}
|
||||
'@changesets/assemble-release-plan@6.0.3':
|
||||
resolution: {integrity: sha512-bLNh9/Lgl1VwkjWZTq8JmRqH+hj7/Yzfz0jsQ/zJJ+FTmVqmqPj3szeKOri8O/hEM8JmHW019vh2gTO9iq5Cuw==}
|
||||
|
||||
'@changesets/changelog-git@0.2.0':
|
||||
resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==}
|
||||
|
@ -1787,24 +1787,24 @@ packages:
|
|||
'@changesets/changelog-github@0.5.0':
|
||||
resolution: {integrity: sha512-zoeq2LJJVcPJcIotHRJEEA2qCqX0AQIeFE+L21L8sRLPVqDhSXY8ZWAt2sohtBpFZkBwu+LUwMSKRr2lMy3LJA==}
|
||||
|
||||
'@changesets/cli@2.27.6':
|
||||
resolution: {integrity: sha512-PB7KS5JkCQ4WSXlnfThn8CXAHVwYxFdZvYTimhi12fls/tzj9iimUhKsYwkrKSbw1AiVlGCZtihj5Wkt6siIjA==}
|
||||
'@changesets/cli@2.27.7':
|
||||
resolution: {integrity: sha512-6lr8JltiiXPIjDeYg4iM2MeePP6VN/JkmqBsVA5XRiy01hGS3y629LtSDvKcycj/w/5Eur1rEwby/MjcYS+e2A==}
|
||||
hasBin: true
|
||||
|
||||
'@changesets/config@3.0.1':
|
||||
resolution: {integrity: sha512-nCr8pOemUjvGJ8aUu8TYVjqnUL+++bFOQHBVmtNbLvKzIDkN/uiP/Z4RKmr7NNaiujIURHySDEGFPftR4GbTUA==}
|
||||
'@changesets/config@3.0.2':
|
||||
resolution: {integrity: sha512-cdEhS4t8woKCX2M8AotcV2BOWnBp09sqICxKapgLHf9m5KdENpWjyrFNMjkLqGJtUys9U+w93OxWT0czorVDfw==}
|
||||
|
||||
'@changesets/errors@0.2.0':
|
||||
resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==}
|
||||
|
||||
'@changesets/get-dependents-graph@2.1.0':
|
||||
resolution: {integrity: sha512-QOt6pQq9RVXKGHPVvyKimJDYJumx7p4DO5MO9AhRJYgAPgv0emhNqAqqysSVKHBm4sxKlGN4S1zXOIb5yCFuhQ==}
|
||||
'@changesets/get-dependents-graph@2.1.1':
|
||||
resolution: {integrity: sha512-LRFjjvigBSzfnPU2n/AhFsuWR5DK++1x47aq6qZ8dzYsPtS/I5mNhIGAS68IAxh1xjO9BTtz55FwefhANZ+FCA==}
|
||||
|
||||
'@changesets/get-github-info@0.6.0':
|
||||
resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==}
|
||||
|
||||
'@changesets/get-release-plan@4.0.2':
|
||||
resolution: {integrity: sha512-rOalz7nMuMV2vyeP7KBeAhqEB7FM2GFPO5RQSoOoUKKH9L6wW3QyPA2K+/rG9kBrWl2HckPVES73/AuwPvbH3w==}
|
||||
'@changesets/get-release-plan@4.0.3':
|
||||
resolution: {integrity: sha512-6PLgvOIwTSdJPTtpdcr3sLtGatT+Jr22+cQwEBJBy6wP0rjB4yJ9lv583J9fVpn1bfQlBkDa8JxbS2g/n9lIyA==}
|
||||
|
||||
'@changesets/get-version-range-type@0.4.0':
|
||||
resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==}
|
||||
|
@ -2863,8 +2863,8 @@ packages:
|
|||
resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
|
||||
deprecated: Use @eslint/object-schema instead
|
||||
|
||||
'@iconify/json@2.2.223':
|
||||
resolution: {integrity: sha512-SKQnMyKVehUEYrKDEu/MIochMNFLAdNNGQOez0l6OEyVD6IDyM1vc8vGQFFFXcjHHadaRemxBScWqlimPuYyGA==}
|
||||
'@iconify/json@2.2.224':
|
||||
resolution: {integrity: sha512-VK7nFjtxUeyp+K311SbbeU8cxlZifiUWh0yYaXks4Sj0DTzubKTDMzRCuTcO/QdEQ/0qwDE8m2nn5+wQjS66gQ==}
|
||||
|
||||
'@iconify/tailwind@1.1.1':
|
||||
resolution: {integrity: sha512-4mmA//qjZigv7D4KlqcVSYTqfRIJzyts2/lSCAJfCL0rVMIE76+ifJnaE5jxCo1+nYGBF8FsFo0qFOs+sX4EnA==}
|
||||
|
@ -6726,8 +6726,8 @@ packages:
|
|||
resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
pkg-types@1.1.1:
|
||||
resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==}
|
||||
pkg-types@1.1.2:
|
||||
resolution: {integrity: sha512-VEGf1he2DR5yowYRl0XJhWJq5ktm9gYIsH+y8sNJpHlxch7JPDaufgrsl4vYjd9hMUY8QVjoNncKbow9I7exyA==}
|
||||
|
||||
please-upgrade-node@3.2.0:
|
||||
resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==}
|
||||
|
@ -9913,10 +9913,10 @@ snapshots:
|
|||
'@babel/helper-validator-identifier': 7.24.7
|
||||
to-fast-properties: 2.0.0
|
||||
|
||||
'@changesets/apply-release-plan@7.0.3':
|
||||
'@changesets/apply-release-plan@7.0.4':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.7
|
||||
'@changesets/config': 3.0.1
|
||||
'@changesets/config': 3.0.2
|
||||
'@changesets/get-version-range-type': 0.4.0
|
||||
'@changesets/git': 3.0.0
|
||||
'@changesets/should-skip-package': 0.1.0
|
||||
|
@ -9930,11 +9930,11 @@ snapshots:
|
|||
resolve-from: 5.0.0
|
||||
semver: 7.6.2
|
||||
|
||||
'@changesets/assemble-release-plan@6.0.2':
|
||||
'@changesets/assemble-release-plan@6.0.3':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.7
|
||||
'@changesets/errors': 0.2.0
|
||||
'@changesets/get-dependents-graph': 2.1.0
|
||||
'@changesets/get-dependents-graph': 2.1.1
|
||||
'@changesets/should-skip-package': 0.1.0
|
||||
'@changesets/types': 6.0.0
|
||||
'@manypkg/get-packages': 1.1.3
|
||||
|
@ -9952,16 +9952,16 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- encoding
|
||||
|
||||
'@changesets/cli@2.27.6':
|
||||
'@changesets/cli@2.27.7':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.7
|
||||
'@changesets/apply-release-plan': 7.0.3
|
||||
'@changesets/assemble-release-plan': 6.0.2
|
||||
'@changesets/apply-release-plan': 7.0.4
|
||||
'@changesets/assemble-release-plan': 6.0.3
|
||||
'@changesets/changelog-git': 0.2.0
|
||||
'@changesets/config': 3.0.1
|
||||
'@changesets/config': 3.0.2
|
||||
'@changesets/errors': 0.2.0
|
||||
'@changesets/get-dependents-graph': 2.1.0
|
||||
'@changesets/get-release-plan': 4.0.2
|
||||
'@changesets/get-dependents-graph': 2.1.1
|
||||
'@changesets/get-release-plan': 4.0.3
|
||||
'@changesets/git': 3.0.0
|
||||
'@changesets/logger': 0.1.0
|
||||
'@changesets/pre': 2.0.0
|
||||
|
@ -9987,10 +9987,10 @@ snapshots:
|
|||
spawndamnit: 2.0.0
|
||||
term-size: 2.2.1
|
||||
|
||||
'@changesets/config@3.0.1':
|
||||
'@changesets/config@3.0.2':
|
||||
dependencies:
|
||||
'@changesets/errors': 0.2.0
|
||||
'@changesets/get-dependents-graph': 2.1.0
|
||||
'@changesets/get-dependents-graph': 2.1.1
|
||||
'@changesets/logger': 0.1.0
|
||||
'@changesets/types': 6.0.0
|
||||
'@manypkg/get-packages': 1.1.3
|
||||
|
@ -10001,7 +10001,7 @@ snapshots:
|
|||
dependencies:
|
||||
extendable-error: 0.1.7
|
||||
|
||||
'@changesets/get-dependents-graph@2.1.0':
|
||||
'@changesets/get-dependents-graph@2.1.1':
|
||||
dependencies:
|
||||
'@changesets/types': 6.0.0
|
||||
'@manypkg/get-packages': 1.1.3
|
||||
|
@ -10016,11 +10016,11 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- encoding
|
||||
|
||||
'@changesets/get-release-plan@4.0.2':
|
||||
'@changesets/get-release-plan@4.0.3':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.7
|
||||
'@changesets/assemble-release-plan': 6.0.2
|
||||
'@changesets/config': 3.0.1
|
||||
'@changesets/assemble-release-plan': 6.0.3
|
||||
'@changesets/config': 3.0.2
|
||||
'@changesets/pre': 2.0.0
|
||||
'@changesets/read': 0.6.0
|
||||
'@changesets/types': 6.0.0
|
||||
|
@ -10947,7 +10947,7 @@ snapshots:
|
|||
|
||||
'@humanwhocodes/object-schema@2.0.3': {}
|
||||
|
||||
'@iconify/json@2.2.223':
|
||||
'@iconify/json@2.2.224':
|
||||
dependencies:
|
||||
'@iconify/types': 2.0.0
|
||||
pathe: 1.1.2
|
||||
|
@ -14338,7 +14338,7 @@ snapshots:
|
|||
esbuild: 0.20.2
|
||||
jiti: 1.21.6
|
||||
pathe: 1.1.2
|
||||
pkg-types: 1.1.1
|
||||
pkg-types: 1.1.2
|
||||
tsx: 4.16.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
@ -14973,7 +14973,7 @@ snapshots:
|
|||
mlly: 1.7.1
|
||||
mri: 1.2.0
|
||||
pathe: 1.1.2
|
||||
pkg-types: 1.1.1
|
||||
pkg-types: 1.1.2
|
||||
postcss: 8.4.39
|
||||
postcss-nested: 6.0.1(postcss@8.4.39)
|
||||
semver: 7.6.2
|
||||
|
@ -14986,7 +14986,7 @@ snapshots:
|
|||
dependencies:
|
||||
acorn: 8.12.0
|
||||
pathe: 1.1.2
|
||||
pkg-types: 1.1.1
|
||||
pkg-types: 1.1.2
|
||||
ufo: 1.5.3
|
||||
|
||||
mockjs@1.1.0:
|
||||
|
@ -15330,7 +15330,7 @@ snapshots:
|
|||
dependencies:
|
||||
find-up: 4.1.0
|
||||
|
||||
pkg-types@1.1.1:
|
||||
pkg-types@1.1.2:
|
||||
dependencies:
|
||||
confbox: 0.1.7
|
||||
mlly: 1.7.1
|
||||
|
@ -16922,7 +16922,7 @@ snapshots:
|
|||
mkdist: 1.5.1(sass@1.77.6)(typescript@5.5.2)(vue-tsc@2.0.24(typescript@5.5.2))
|
||||
mlly: 1.7.1
|
||||
pathe: 1.1.2
|
||||
pkg-types: 1.1.1
|
||||
pkg-types: 1.1.2
|
||||
pretty-bytes: 6.1.1
|
||||
rollup: 3.29.4
|
||||
rollup-plugin-dts: 6.1.1(rollup@3.29.4)(typescript@5.5.2)
|
||||
|
|
Loading…
Reference in New Issue