refactor: refactor locales, separate locales within apps,fixed #12

pull/48/MERGE
vben 2024-07-07 00:17:44 +08:00
parent 3571511394
commit 208d4188fc
77 changed files with 486 additions and 394 deletions

View File

@ -169,7 +169,10 @@
"packages/@vben-core/shared/design-tokens/src/**/*.css"
],
"i18n-ally.localesPaths": ["packages/locales/src/langs"],
"i18n-ally.localesPaths": [
"packages/@core/locales/src/langs",
"apps/*/src/locales/langs"
],
"i18n-ally.enabledParsers": ["json", "ts", "js", "yaml"],
"i18n-ally.sourceLanguage": "en",
"i18n-ally.displayLanguage": "zh-CN",

View File

@ -16,7 +16,7 @@
- @vben/constants@5.0.1
- @vben/hooks@5.0.1
- @vben/icons@5.0.1
- @vben/locales@5.0.1
- #/locales@5.0.1
- @vben/styles@5.0.1
- @vben/types@5.0.1
- @vben/utils@5.0.1

View File

@ -26,6 +26,7 @@
},
"dependencies": {
"@vben-core/helpers": "workspace:*",
"@vben-core/locales": "workspace:*",
"@vben-core/preferences": "workspace:*",
"@vben-core/request": "workspace:*",
"@vben-core/stores": "workspace:*",
@ -34,7 +35,6 @@
"@vben/constants": "workspace:*",
"@vben/icons": "workspace:*",
"@vben/layouts": "workspace:*",
"@vben/locales": "workspace:*",
"@vben/styles": "workspace:*",
"@vben/types": "workspace:*",
"@vben/universal-ui": "workspace:*",

View File

@ -6,7 +6,7 @@ import { preferences, usePreferences } from '@vben-core/preferences';
import { App, ConfigProvider, theme } from 'ant-design-vue';
import { antdLocale } from '#/forward';
import { antdLocale } from '#/locales';
defineOptions({ name: 'App' });

View File

@ -1,10 +1,9 @@
import { createApp } from 'vue';
import { setupI18n } from '@vben/locales';
import '@vben/styles';
import { preferences } from '@vben-core/preferences';
import { loadThirdPartyMessage } from '#/forward';
import { loadMessages, setupI18n } from '#/locales';
import { setupStore } from '#/store';
import App from './app.vue';
@ -16,7 +15,7 @@ async function bootstrap(namespace: string) {
// 国际化 i18n 配置
await setupI18n(app, {
defaultLocale: preferences.app.locale,
loadThirdPartyMessage,
loadMessages,
});
// 配置 pinia-store

View File

@ -2,13 +2,13 @@ import type { GeneratorMenuAndRoutesOptions } from '@vben/access';
import type { ComponentRecordType } from '@vben/types';
import { generateMenusAndRoutes } from '@vben/access';
import { $t } from '@vben/locales';
import { preferences } from '@vben-core/preferences';
import { message } from 'ant-design-vue';
import { getAllMenus } from '#/apis';
import { BasicLayout, IFrameView } from '#/layouts';
import { $t } from '#/locales';
const forbiddenPage = () => import('#/views/_essential/fallback/forbidden.vue');

View File

@ -1,2 +1,2 @@
export * from './locale';
export * from './access';
export * from './request';

View File

@ -7,11 +7,11 @@ import { useRouter } from 'vue-router';
import { LOGIN_PATH } from '@vben/constants';
import { IcRoundCreditScore, MdiDriveDocument, MdiGithub } from '@vben/icons';
import { BasicLayout } from '@vben/layouts';
import { $t } from '@vben/locales';
import { openWindow } from '@vben/utils';
import { Notification, UserDropdown } from '@vben/widgets';
import { preferences } from '@vben-core/preferences';
import { $t } from '#/locales';
import { resetRoutes } from '#/router';
import { useAppStore } from '#/store';

View File

@ -3,11 +3,41 @@ import type { Locale } from 'ant-design-vue/es/locale';
import { ref } from 'vue';
import { $t, loadLocalesMap, setupI18n } from '@vben-core/locales';
import defaultLocale from 'ant-design-vue/es/locale/zh_CN';
import dayjs from 'dayjs';
const antdLocale = ref<Locale>(defaultLocale);
const modules = import.meta.glob('./langs/*.y(a)?ml');
const localesMap = loadLocalesMap(modules);
/**
*
* @param lang
*/
async function loadMessages(lang: SupportedLanguagesType) {
const [appLocaleMessages] = await Promise.all([
localesMap[lang](),
loadThirdPartyMessage(lang),
]);
return appLocaleMessages.default;
}
/**
*
* @param lang
*/
async function loadThirdPartyMessage(lang: SupportedLanguagesType) {
await Promise.all([loadAntdLocale(lang), loadDayjsLocale(lang)]);
}
/**
* dayjs
* @param lang
*/
async function loadDayjsLocale(lang: SupportedLanguagesType) {
let locale;
switch (lang) {
@ -19,13 +49,18 @@ async function loadDayjsLocale(lang: SupportedLanguagesType) {
locale = await import('dayjs/locale/en');
break;
}
// 默认使用英语
default: {
locale = await import('dayjs/locale/en');
} // 默认使用英语
}
}
dayjs.locale(locale);
}
/**
* antd
* @param lang
*/
async function loadAntdLocale(lang: SupportedLanguagesType) {
switch (lang) {
case 'zh-CN': {
@ -41,8 +76,4 @@ async function loadAntdLocale(lang: SupportedLanguagesType) {
}
}
async function loadThirdPartyMessage(land: SupportedLanguagesType) {
await Promise.all([loadAntdLocale(land), loadDayjsLocale(land)]);
}
export { antdLocale, loadThirdPartyMessage };
export { $t, antdLocale, loadMessages, setupI18n };

View File

@ -0,0 +1,28 @@
page:
demos:
title: Demos
access:
title: Access Control
frontend-control: Front-end Control
backend-control: Backend Control
page: Page visit
button: Button control
loading-menu: In the loading menu
access-test-1: Super visit
access-test-2: Admin visit
access-test-3: User visit
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: Fallback Page

View File

@ -0,0 +1,27 @@
page:
demos:
title: 演示
access:
title: 访问控制
frontend-control: 前端控制
backend-control: 后端控制
page: 页面访问
button: 按钮控制
access-test-1: Super 可见
access-test-2: Admin 可见
access-test-3: User 可见
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: 缺省页

View File

@ -1,13 +1,13 @@
import type { Router } from 'vue-router';
import { LOGIN_PATH } from '@vben/constants';
import { $t } from '@vben/locales';
import { startProgress, stopProgress } from '@vben/utils';
import { preferences } from '@vben-core/preferences';
import { useTitle } from '@vueuse/core';
import { generateAccess } from '#/forward/access';
import { generateAccess } from '#/forward';
import { $t } from '#/locales';
import { dynamicRoutes, essentialsRouteNames } from '#/router/routes';
import { useAccessStore } from '#/store';

View File

@ -1,9 +1,9 @@
import type { RouteRecordRaw } from 'vue-router';
import { DEFAULT_HOME_PATH } from '@vben/constants';
import { $t } from '@vben/locales';
import { AuthPageLayout } from '#/layouts';
import { $t } from '#/locales';
import Login from '#/views/_essential/authentication/login.vue';
/** 全局404页面 */

View File

@ -1,8 +1,7 @@
import type { RouteRecordRaw } from 'vue-router';
import { $t } from '@vben/locales/helper';
import { BasicLayout } from '#/layouts';
import { $t } from '#/locales';
const routes: RouteRecordRaw[] = [
{

View File

@ -1,8 +1,7 @@
import type { RouteRecordRaw } from 'vue-router';
import { $t } from '@vben/locales/helper';
import { BasicLayout, IFrameView } from '#/layouts';
import { $t } from '#/locales';
const routes: RouteRecordRaw[] = [
{

View File

@ -2,9 +2,8 @@ import type { RouteRecordRaw } from 'vue-router';
import { VBEN_GITHUB_URL, VBEN_LOGO } from '@vben/constants';
import { $t } from '@vben/locales/helper';
import { BasicLayout, IFrameView } from '#/layouts';
import { $t } from '#/locales';
const routes: RouteRecordRaw[] = [
{

View File

@ -1,11 +1,11 @@
<script lang="ts" setup>
import type { LoginAndRegisterParams } from '@vben/universal-ui';
import { $t } from '@vben/locales';
import { AuthenticationLogin } from '@vben/universal-ui';
import { App } from 'ant-design-vue';
import { $t } from '#/locales';
import { useAccessStore } from '#/store';
defineOptions({ name: 'Login' });

View File

@ -55,7 +55,7 @@
"postcss": "^8.4.39",
"postcss-antd-fixes": "^0.2.0",
"postcss-import": "^16.1.0",
"postcss-preset-env": "^9.5.15",
"postcss-preset-env": "^9.5.16",
"tailwindcss": "^3.4.4",
"tailwindcss-animate": "^1.0.7"
},

View File

@ -4,7 +4,7 @@ import type { DefineApplicationOptions } from '../typing';
import { defineConfig, loadEnv, mergeConfig } from 'vite';
import { getApplicationConditionPlugins } from '../plugins';
import { loadApplicationPlugins } from '../plugins';
import { getCommonConfig } from './common';
function defineApplicationConfig(options: DefineApplicationOptions = {}) {
@ -15,7 +15,7 @@ function defineApplicationConfig(options: DefineApplicationOptions = {}) {
const isBuild = command === 'build';
const env = loadEnv(mode, root);
const plugins = await getApplicationConditionPlugins({
const plugins = await loadApplicationPlugins({
compress: false,
compressTypes: ['brotli', 'gzip'],
devtools: true,

View File

@ -6,7 +6,7 @@ import { readPackageJSON } from '@vben/node-utils';
import { defineConfig, mergeConfig } from 'vite';
import { getLibraryConditionPlugins } from '../plugins';
import { loadLibraryPlugins } from '../plugins';
import { getCommonConfig } from './common';
function defineLibraryConfig(options: DefineLibraryOptions = {}) {
@ -16,7 +16,7 @@ function defineLibraryConfig(options: DefineLibraryOptions = {}) {
const { library = {}, vite = {} } = options;
const isBuild = command === 'build';
const plugins = await getLibraryConditionPlugins({
const plugins = await loadLibraryPlugins({
dts: false,
injectLibCss: true,
injectMetadata: true,

View File

@ -9,7 +9,7 @@ import type {
import { join } from 'node:path';
import { getPackage } from '@vben/node-utils';
import { getPackage, getPackages } from '@vben/node-utils';
import viteVueI18nPlugin from '@intlify/unplugin-vue-i18n/vite';
import viteVue from '@vitejs/plugin-vue';
@ -33,9 +33,7 @@ import { viteLicensePlugin } from './license';
* vite
* @param conditionPlugins
*/
async function getConditionEstablishedPlugins(
conditionPlugins: ConditionPlugin[],
) {
async function loadConditionPlugins(conditionPlugins: ConditionPlugin[]) {
const plugins: PluginOption[] = [];
for (const conditionPlugin of conditionPlugins) {
if (conditionPlugin.condition) {
@ -49,7 +47,7 @@ async function getConditionEstablishedPlugins(
/**
* vite
*/
async function getCommonConditionPlugins(
async function loadCommonPlugins(
options: CommonPluginOptions,
): Promise<ConditionPlugin[]> {
const { devtools, injectMetadata, isBuild, visualizer } = options;
@ -89,7 +87,7 @@ async function getCommonConditionPlugins(
/**
* vite
*/
async function getApplicationConditionPlugins(
async function loadApplicationPlugins(
options: ApplicationPluginOptions,
): Promise<PluginOption[]> {
// 单独取否则commonOptions拿不到
@ -112,15 +110,33 @@ async function getApplicationConditionPlugins(
...commonOptions
} = options;
const commonPlugins = await getCommonConditionPlugins(commonOptions);
const commonPlugins = await loadCommonPlugins(commonOptions);
return await getConditionEstablishedPlugins([
return await loadConditionPlugins([
...commonPlugins,
{
condition: i18n,
plugins: async () => {
const pkg = await getPackage('@vben/locales');
const include = `${join(pkg?.dir ?? '', isBuild ? 'dist' : 'src', 'langs')}/*.yaml`;
const { packages } = await getPackages();
const pkg = await getPackage('@vben-core/locales');
const include: string[] = [
`${join(pkg?.dir ?? '', isBuild ? 'dist' : 'src', 'langs')}/*.yaml`,
];
// 加载所有应用的国际化文件
for (const { dir, relativeDir } of packages) {
if (
// 排除非应用目录
!relativeDir.startsWith('apps') ||
// 排除mock目录
relativeDir.includes('backend-mock')
) {
continue;
}
include.push(`${join(dir, 'src', 'locales', 'langs')}/*.yaml`);
}
return [
viteVueI18nPlugin({
compositionOnly: true,
@ -204,14 +220,14 @@ async function getApplicationConditionPlugins(
/**
* vite
*/
async function getLibraryConditionPlugins(
async function loadLibraryPlugins(
options: LibraryPluginOptions,
): Promise<PluginOption[]> {
// 单独取否则commonOptions拿不到
const isBuild = options.isBuild;
const { dts, injectLibCss, ...commonOptions } = options;
const commonPlugins = await getCommonConditionPlugins(commonOptions);
return await getConditionEstablishedPlugins([
const commonPlugins = await loadCommonPlugins(commonOptions);
return await loadConditionPlugins([
...commonPlugins,
{
condition: isBuild && !!dts,
@ -225,8 +241,8 @@ async function getLibraryConditionPlugins(
}
export {
getApplicationConditionPlugins,
getLibraryConditionPlugins,
loadApplicationPlugins,
loadLibraryPlugins,
viteCompressPlugin,
viteDtsPlugin,
viteHtmlPlugin,

View File

@ -5,7 +5,6 @@ export default defineBuildConfig({
declaration: true,
entries: [
'src/index',
'src/helper',
{
builder: 'mkdist',
input: './src/langs',

View File

@ -1,12 +1,12 @@
{
"name": "@vben/locales",
"name": "@vben-core/locales",
"version": "5.0.0",
"homepage": "https://github.com/vbenjs/vue-vben-admin",
"bugs": "https://github.com/vbenjs/vue-vben-admin/issues",
"repository": {
"type": "git",
"url": "git+https://github.com/vbenjs/vue-vben-admin.git",
"directory": "packages/locales"
"directory": "packages/@vben-core/forward/locales"
},
"license": "MIT",
"type": "module",
@ -30,11 +30,6 @@
},
"./langs/*": {
"default": "./dist/langs/*"
},
"./helper": {
"types": "./src/helper.ts",
"development": "./src/helper.ts",
"default": "./dist/helper.mjs"
}
},
"publishConfig": {
@ -45,6 +40,9 @@
}
}
},
"peerDependencies": {
"vite": "latest"
},
"dependencies": {
"@intlify/core-base": "^9.13.1",
"@vben-core/typings": "workspace:*",

View File

@ -8,6 +8,7 @@ import { createI18n } from 'vue-i18n';
const loadedLanguages = new Set<string>();
// TODOimport.meta.env 和 import.meta.glob 是源码依赖会导致该包依赖外部项目必须是vite才可以
const i18n = createI18n({
globalInjection: true,
legacy: false,
@ -20,13 +21,22 @@ const i18n = createI18n({
const modules = import.meta.glob('./langs/*.y(a)?ml');
const localesMap: Record<Locale, ImportLocaleFn> = {};
const localesMap = loadLocalesMap(modules);
for (const [path, loadLocale] of Object.entries(modules)) {
const key = path.match(/([\w-]*)\.y(a)?ml/)?.[1];
if (key) {
localesMap[key] = loadLocale as ImportLocaleFn;
/**
* Load locale modules
* @param modules
*/
function loadLocalesMap(modules: Record<string, () => Promise<unknown>>) {
const localesMap: Record<Locale, ImportLocaleFn> = {};
for (const [path, loadLocale] of Object.entries(modules)) {
const key = path.match(/([\w-]*)\.y(a)?ml/)?.[1];
if (key) {
localesMap[key] = loadLocale as ImportLocaleFn;
}
}
return localesMap;
}
/**
@ -52,11 +62,11 @@ async function loadI18nMessages(lang: SupportedLanguagesType) {
return setI18nLanguage(lang);
}
const messages = await localesMap[lang]();
const message = await localesMap[lang]();
i18n.global.setLocaleMessage(lang, messages.default);
i18n.global.setLocaleMessage(lang, message.default);
loadedLanguages.add(lang);
return setI18nLanguage(lang);
}
export { i18n, loadI18nMessages, setI18nLanguage };
export { i18n, loadI18nMessages, loadLocalesMap, setI18nLanguage };

View File

@ -0,0 +1,33 @@
import type {
ImportLocaleFn,
LoadMessageFn,
LocaleSetupOptions,
SupportedLanguagesType,
} from './typing';
import type { App } from 'vue';
import { i18n, loadI18nMessages, loadLocalesMap } from './i18n';
const $t = i18n.global.t;
let loadMessages: LoadMessageFn;
async function loadLocaleMessages(lang: SupportedLanguagesType) {
const mergeMessage = await loadMessages(lang);
await loadI18nMessages(lang);
i18n.global.mergeLocaleMessage(lang, mergeMessage);
}
async function setupI18n(app: App, options: LocaleSetupOptions = {}) {
const { defaultLocale = 'zh-CN' } = options;
// app可以自行扩展一些第三方库和组件库的国际化
loadMessages = options.loadMessages || (async () => ({}));
app.use(i18n);
await loadLocaleMessages(defaultLocale);
}
export { $t, loadLocaleMessages, loadLocalesMap, setupI18n };
export { useI18n } from 'vue-i18n';
export type { Locale } from 'vue-i18n';
export type { ImportLocaleFn };

View File

@ -1,32 +1,4 @@
page:
demos:
title: Demos
access:
title: Access Control
frontend-control: Front-end Control
# menuVisibleWithForbidden: Menu is visible
backend-control: Backend Control
page: Page visit
button: Button control
loading-menu: In the loading menu
access-test-1: Super visit
access-test-2: Admin visit
access-test-3: User visit
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: Fallback Page
essentials:
login: Login
register: Register

View File

@ -1,32 +1,4 @@
page:
demos:
title: 演示
access:
title: 访问控制
frontend-control: 前端控制
# menuVisibleWithForbidden: 菜单可见
backend-control: 后端控制
page: 页面访问
button: 按钮控制
access-test-1: Super 可见
access-test-2: Admin 可见
access-test-3: User 可见
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: 注册

View File

@ -2,6 +2,10 @@ import type { SupportedLanguagesType } from '@vben-core/typings';
type ImportLocaleFn = () => Promise<{ default: Record<string, string> }>;
type LoadMessageFn = (
lang: SupportedLanguagesType,
) => Promise<Record<string, string>>;
interface LocaleSetupOptions {
/**
* Default language
@ -9,11 +13,16 @@ interface LocaleSetupOptions {
*/
defaultLocale?: SupportedLanguagesType;
/**
* Load third-party library messages
* Load message function
* @param lang
* @returns
*/
loadThirdPartyMessage?: (lang: SupportedLanguagesType) => Promise<void>;
loadMessages?: LoadMessageFn;
}
export type { ImportLocaleFn, LocaleSetupOptions, SupportedLanguagesType };
export type {
ImportLocaleFn,
LoadMessageFn,
LocaleSetupOptions,
SupportedLanguagesType,
};

View File

@ -37,10 +37,10 @@
}
},
"dependencies": {
"@vben-core/locales": "workspace:*",
"@vben-core/preferences": "workspace:*",
"@vben-core/stores": "workspace:*",
"@vben-core/toolkit": "workspace:*",
"@vben/locales": "workspace:*",
"vue": "^3.4.31",
"vue-router": "^4.4.0"
},

View File

@ -6,7 +6,7 @@ import type { RouteRecordRaw } from 'vue-router';
import type { GeneratorMenuAndRoutesOptions } from '../types';
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import { mapTree } from '@vben-core/toolkit';
/**

View File

@ -40,13 +40,13 @@
"@vben-core/helpers": "workspace:*",
"@vben-core/iconify": "workspace:*",
"@vben-core/layout-ui": "workspace:*",
"@vben-core/locales": "workspace:*",
"@vben-core/menu-ui": "workspace:*",
"@vben-core/preferences": "workspace:*",
"@vben-core/shadcn-ui": "workspace:*",
"@vben-core/stores": "workspace:*",
"@vben-core/tabs-ui": "workspace:*",
"@vben-core/toolkit": "workspace:*",
"@vben/locales": "workspace:*",
"@vben/widgets": "workspace:*",
"vue": "^3.4.31",
"vue-router": "^4.4.0"

View File

@ -1,7 +1,7 @@
<script setup lang="ts">
import { computed } from 'vue';
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import { preferences, usePreferences } from '@vben-core/preferences';
import AuthenticationFromView from './from-view.vue';

View File

@ -4,8 +4,8 @@ import type { VbenDropdownMenuItem } from '@vben-core/shadcn-ui';
import { computed } from 'vue';
import { $t } from '@vben/locales';
import { MdiDockBottom, MdiDockLeft, MdiDockRight } from '@vben-core/iconify';
import { $t } from '@vben-core/locales';
import {
preferences,
updatePreferences,

View File

@ -1,9 +1,9 @@
<script lang="ts" setup>
import { computed } from 'vue';
import { $t } from '@vben/locales';
import { PreferencesWidget } from '@vben/widgets';
import { VbenAdminLayout } from '@vben-core/layout-ui';
import { $t } from '@vben-core/locales';
import {
preferences,
updatePreferences,

View File

@ -8,7 +8,6 @@ import type {
import { computed, ref, watch } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import { $t, useI18n } from '@vben/locales';
import {
IcRoundClose,
IcRoundMultipleStop,
@ -19,6 +18,7 @@ import {
MdiPin,
MdiPinOff,
} from '@vben-core/iconify';
import { $t, useI18n } from '@vben-core/locales';
import {
storeToRefs,
useCoreAccessStore,

View File

@ -5,7 +5,7 @@ import type { IBreadcrumb } from '@vben-core/shadcn-ui';
import { computed } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import { VbenBackgroundBreadcrumb, VbenBreadcrumb } from '@vben-core/shadcn-ui';
interface Props {

View File

@ -42,9 +42,9 @@
"dependencies": {
"@vben-core/design": "workspace:*",
"@vben-core/iconify": "workspace:*",
"@vben-core/locales": "workspace:*",
"@vben-core/shadcn-ui": "workspace:*",
"@vben/constants": "workspace:*",
"@vben/locales": "workspace:*",
"@vben/types": "workspace:*",
"@vueuse/integrations": "^10.11.0",
"qrcode": "^1.5.3",

View File

@ -5,7 +5,7 @@ import { computed, onBeforeUnmount, reactive, ref } from 'vue';
import { useRouter } from 'vue-router';
import { LOGIN_PATH } from '@vben/constants';
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import { VbenButton, VbenInput, VbenPinInput } from '@vben-core/shadcn-ui';
import Title from './auth-title.vue';

View File

@ -3,7 +3,7 @@ import { computed, reactive } from 'vue';
import { useRouter } from 'vue-router';
import { LOGIN_PATH } from '@vben/constants';
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import { VbenButton, VbenInput } from '@vben-core/shadcn-ui';
import Title from './auth-title.vue';

View File

@ -4,7 +4,7 @@ import type { LoginEmits } from './typings';
import { computed, reactive } from 'vue';
import { useRouter } from 'vue-router';
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import {
VbenButton,
VbenCheckbox,

View File

@ -3,7 +3,7 @@ import { ref } from 'vue';
import { useRouter } from 'vue-router';
import { LOGIN_PATH } from '@vben/constants';
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import { VbenButton } from '@vben-core/shadcn-ui';
import { useQRCode } from '@vueuse/integrations/useQRCode';

View File

@ -5,7 +5,7 @@ import { computed, reactive } from 'vue';
import { useRouter } from 'vue-router';
import { LOGIN_PATH } from '@vben/constants';
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import {
VbenButton,
VbenCheckbox,

View File

@ -1,6 +1,6 @@
<script setup lang="ts">
import { $t } from '@vben/locales';
import { MdiGithub, MdiGoogle, MdiQqchat, MdiWechat } from '@vben-core/iconify';
import { $t } from '@vben-core/locales';
import { VbenIconButton } from '@vben-core/shadcn-ui';
defineOptions({

View File

@ -4,8 +4,8 @@ import type { FallbackProps } from './fallback';
import { computed, defineAsyncComponent } from 'vue';
import { useRouter } from 'vue-router';
import { $t } from '@vben/locales';
import { IcRoundArrowBackIosNew, IcRoundRefresh } from '@vben-core/iconify';
import { $t } from '@vben-core/locales';
import { VbenButton } from '@vben-core/shadcn-ui';
interface Props extends FallbackProps {}

View File

@ -43,10 +43,10 @@
"@vben-core/colorful": "workspace:*",
"@vben-core/design": "workspace:*",
"@vben-core/iconify": "workspace:*",
"@vben-core/locales": "workspace:*",
"@vben-core/preferences": "workspace:*",
"@vben-core/shadcn-ui": "workspace:*",
"@vben-core/toolkit": "workspace:*",
"@vben/locales": "workspace:*",
"@vueuse/core": "^10.11.0",
"vue": "^3.4.31",
"vue-router": "^4.4.0"

View File

@ -51,19 +51,19 @@ onUnmounted(() => {
});
</script>
<template>
<div ref="wrapperEl" class="coze-assistant"></div>
<div ref="wrapperEl" class="coze-vben-admin-assistant"></div>
</template>
<style>
.coze-assistant {
.coze-vben-admin-assistant {
position: fixed;
right: 30px;
bottom: 60px;
z-index: 1000;
img {
width: 42px !important;
height: 42px !important;
width: 50px !important;
height: 50px !important;
border-radius: 50%;
}
}

View File

@ -3,7 +3,6 @@ import type { MenuRecordRaw } from '@vben/types';
import { onMounted, onUnmounted, ref, watch } from 'vue';
import { $t } from '@vben/locales';
import {
IcRoundArrowDownward,
IcRoundArrowUpward,
@ -11,6 +10,7 @@ import {
IcRoundSubdirectoryArrowLeft,
MdiKeyboardEsc,
} from '@vben-core/iconify';
import { $t } from '@vben-core/locales';
import {
Dialog,
DialogContent,

View File

@ -4,8 +4,8 @@ import type { MenuRecordRaw } from '@vben/types';
import { nextTick, onMounted, ref, shallowRef, watch } from 'vue';
import { useRouter } from 'vue-router';
import { $t } from '@vben/locales';
import { IcRoundClose, IcRoundSearchOff } from '@vben-core/iconify';
import { $t } from '@vben-core/locales';
import { VbenIcon, VbenScrollbar } from '@vben-core/shadcn-ui';
import { mapTree, traverseTreeValues, uniqueByField } from '@vben-core/toolkit';

View File

@ -1,8 +1,8 @@
<script setup lang="ts">
import type { SupportedLanguagesType } from '@vben/types';
import { loadLocaleMessages } from '@vben/locales';
import { IcBaselineLanguage } from '@vben-core/iconify';
import { loadLocaleMessages } from '@vben-core/locales';
import {
SUPPORT_LANGUAGES,
preferences,

View File

@ -1,11 +1,11 @@
<script lang="ts" setup>
import type { NotificationItem } from './interface';
import { $t } from '@vben/locales';
import {
IcRoundMarkEmailRead,
IcRoundNotificationsNone,
} from '@vben-core/iconify';
import { $t } from '@vben-core/locales';
import {
VbenButton,
VbenIconButton,

View File

@ -1,5 +1,5 @@
<script setup lang="ts">
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import SwitchItem from '../switch-item.vue';

View File

@ -1,7 +1,7 @@
<script setup lang="ts">
import type { SelectListItem } from '@vben/types';
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import { SUPPORT_LANGUAGES } from '@vben-core/preferences';
import SelectItem from '../select-item.vue';

View File

@ -3,7 +3,7 @@ import type { SelectListItem } from '@vben/types';
import { computed } from 'vue';
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import SwitchItem from '../switch-item.vue';
import ToggleItem from '../toggle-item.vue';

View File

@ -1,7 +1,7 @@
<script setup lang="ts">
import { type Component, computed } from 'vue';
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import { ContentCompact, ContentWide } from '../../icons';

View File

@ -1,5 +1,5 @@
<script setup lang="ts">
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import InputItem from '../input-item.vue';
import SwitchItem from '../switch-item.vue';

View File

@ -1,5 +1,5 @@
<script setup lang="ts">
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import SwitchItem from '../switch-item.vue';

View File

@ -1,7 +1,7 @@
<script setup lang="ts">
import type { LayoutHeaderModeType, SelectListItem } from '@vben/types';
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import SelectItem from '../select-item.vue';
import SwitchItem from '../switch-item.vue';

View File

@ -1,5 +1,5 @@
<script setup lang="ts">
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import SwitchItem from '../switch-item.vue';

View File

@ -3,8 +3,8 @@ import type { LayoutType } from '@vben/types';
import { type Component, computed } from 'vue';
import { $t } from '@vben/locales';
import { MdiQuestionMarkCircleOutline } from '@vben-core/iconify';
import { $t } from '@vben-core/locales';
import { VbenTooltip } from '@vben-core/shadcn-ui';
import {

View File

@ -1,7 +1,7 @@
<script setup lang="ts">
import type { SelectListItem } from '@vben/types';
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import SwitchItem from '../switch-item.vue';
import ToggleItem from '../toggle-item.vue';

View File

@ -1,5 +1,5 @@
<script setup lang="ts">
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import NumberFieldItem from '../number-field-item.vue';
import SwitchItem from '../switch-item.vue';

View File

@ -1,5 +1,5 @@
<script setup lang="ts">
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import SwitchItem from '../switch-item.vue';

View File

@ -1,7 +1,7 @@
<script setup lang="ts">
import { computed } from 'vue';
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import { isWindowsOs } from '@vben-core/toolkit';
import SwitchItem from '../switch-item.vue';

View File

@ -3,9 +3,9 @@ import type { BuiltinThemeType } from '@vben/types';
import { computed, ref } from 'vue';
import { $t } from '@vben/locales';
import { TinyColor, convertToHsl } from '@vben-core/colorful';
import { MdiEditBoxOutline } from '@vben-core/iconify';
import { $t } from '@vben-core/locales';
import {
BUILT_IN_THEME_PRESETS,
type BuiltinThemePreset,

View File

@ -1,5 +1,5 @@
<script setup lang="ts">
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import SwitchItem from '../switch-item.vue';

View File

@ -3,12 +3,12 @@ import type { ThemeModeType } from '@vben-core/preferences';
import type { Component } from 'vue';
import { $t } from '@vben/locales';
import {
IcRoundMotionPhotosAuto,
IcRoundWbSunny,
MdiMoonAndStars,
} from '@vben-core/iconify';
import { $t } from '@vben-core/locales';
import SwitchItem from '../switch-item.vue';

View File

@ -1,5 +1,5 @@
<script lang="ts" setup>
import { loadLocaleMessages } from '@vben/locales';
import { loadLocaleMessages } from '@vben-core/locales';
import { preferences, updatePreferences } from '@vben-core/preferences';
import Preferences from './preferences.vue';

View File

@ -15,8 +15,8 @@ import type { SegmentedItem } from '@vben-core/shadcn-ui';
import { computed, ref } from 'vue';
import { $t, loadLocaleMessages } from '@vben/locales';
import { IcRoundFolderCopy, IcRoundRestartAlt } from '@vben-core/iconify';
import { $t, loadLocaleMessages } from '@vben-core/locales';
import {
clearPreferencesCache,
preferences,

View File

@ -1,5 +1,5 @@
<script setup lang="ts">
import { $t } from '@vben/locales';
import { $t } from '@vben-core/locales';
import { VbenButton } from '@vben-core/shadcn-ui';
import IconSetting from './icons/setting.vue';

View File

@ -1,10 +1,10 @@
<script lang="ts" setup>
import { $t } from '@vben/locales';
import {
IcRoundMotionPhotosAuto,
IcRoundWbSunny,
MdiMoonAndStars,
} from '@vben-core/iconify';
import { $t } from '@vben-core/locales';
import {
type ThemeModeType,
preferences,

View File

@ -4,8 +4,8 @@ import type { AnyFunction } from '@vben/types';
import type { Component } from 'vue';
import { computed, ref } from 'vue';
import { $t } from '@vben/locales';
import { IcRoundLogout, IcRoundSettingsSuggest } from '@vben-core/iconify';
import { $t } from '@vben-core/locales';
import { preferences, usePreferences } from '@vben-core/preferences';
import {
Badge,

View File

@ -1,8 +0,0 @@
/**
* IDE I18
*/
function $t(key: string) {
return key;
}
export { $t };

View File

@ -1,26 +0,0 @@
import type { LocaleSetupOptions, SupportedLanguagesType } from './typing';
import type { App } from 'vue';
import { i18n, loadI18nMessages } from './i18n';
const $t = i18n.global.t;
let loadThirdPartyMessage: (lang: SupportedLanguagesType) => Promise<void>;
async function loadLocaleMessages(lang: SupportedLanguagesType) {
await loadI18nMessages(lang);
await loadThirdPartyMessage(lang);
}
async function setupI18n(app: App, options: LocaleSetupOptions = {}) {
const { defaultLocale = 'zh-CN' } = options;
// app可以自行扩展一些第三方库和组件库的国际化
loadThirdPartyMessage = options.loadThirdPartyMessage || (async () => {});
app.use(i18n);
await loadLocaleMessages(defaultLocale);
}
export { $t, loadLocaleMessages, setupI18n };
export type { CompileError } from '@intlify/core-base';
export { useI18n } from 'vue-i18n';

View File

@ -183,6 +183,9 @@ importers:
'@vben-core/helpers':
specifier: workspace:*
version: link:../../packages/@core/forward/helpers
'@vben-core/locales':
specifier: workspace:*
version: link:../../packages/@core/locales
'@vben-core/preferences':
specifier: workspace:*
version: link:../../packages/@core/forward/preferences
@ -207,9 +210,6 @@ importers:
'@vben/layouts':
specifier: workspace:*
version: link:../../packages/business/layouts
'@vben/locales':
specifier: workspace:*
version: link:../../packages/locales
'@vben/styles':
specifier: workspace:*
version: link:../../packages/styles
@ -462,8 +462,8 @@ importers:
specifier: ^16.1.0
version: 16.1.0(postcss@8.4.39)
postcss-preset-env:
specifier: ^9.5.15
version: 9.5.15(postcss@8.4.39)
specifier: ^9.5.16
version: 9.5.16(postcss@8.4.39)
tailwindcss:
specifier: ^3.4.4
version: 3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))
@ -627,6 +627,24 @@ importers:
specifier: ^4.4.0
version: 4.4.0(vue@3.4.31(typescript@5.5.3))
packages/@core/locales:
dependencies:
'@intlify/core-base':
specifier: ^9.13.1
version: 9.13.1
'@vben-core/typings':
specifier: workspace:*
version: link:../shared/typings
vite:
specifier: latest
version: 5.3.3(@types/node@20.14.10)(sass@1.77.6)(terser@5.31.1)
vue:
specifier: ^3.4.31
version: 3.4.31(typescript@5.5.3)
vue-i18n:
specifier: ^9.13.1
version: 9.13.1(vue@3.4.31(typescript@5.5.3))
packages/@core/shared/cache: {}
packages/@core/shared/colorful:
@ -796,6 +814,9 @@ importers:
packages/business/access:
dependencies:
'@vben-core/locales':
specifier: workspace:*
version: link:../../@core/locales
'@vben-core/preferences':
specifier: workspace:*
version: link:../../@core/forward/preferences
@ -805,9 +826,6 @@ importers:
'@vben-core/toolkit':
specifier: workspace:*
version: link:../../@core/shared/toolkit
'@vben/locales':
specifier: workspace:*
version: link:../../locales
vue:
specifier: ^3.4.31
version: 3.4.31(typescript@5.5.3)
@ -848,6 +866,9 @@ importers:
'@vben-core/layout-ui':
specifier: workspace:*
version: link:../../@core/ui-kit/layout-ui
'@vben-core/locales':
specifier: workspace:*
version: link:../../@core/locales
'@vben-core/menu-ui':
specifier: workspace:*
version: link:../../@core/ui-kit/menu-ui
@ -866,9 +887,6 @@ importers:
'@vben-core/toolkit':
specifier: workspace:*
version: link:../../@core/shared/toolkit
'@vben/locales':
specifier: workspace:*
version: link:../../locales
'@vben/widgets':
specifier: workspace:*
version: link:../widgets
@ -894,15 +912,15 @@ importers:
'@vben-core/iconify':
specifier: workspace:*
version: link:../../@core/shared/iconify
'@vben-core/locales':
specifier: workspace:*
version: link:../../@core/locales
'@vben-core/shadcn-ui':
specifier: workspace:*
version: link:../../@core/ui-kit/shadcn-ui
'@vben/constants':
specifier: workspace:*
version: link:../../constants
'@vben/locales':
specifier: workspace:*
version: link:../../locales
'@vben/types':
specifier: workspace:*
version: link:../../types
@ -934,6 +952,9 @@ importers:
'@vben-core/iconify':
specifier: workspace:*
version: link:../../@core/shared/iconify
'@vben-core/locales':
specifier: workspace:*
version: link:../../@core/locales
'@vben-core/preferences':
specifier: workspace:*
version: link:../../@core/forward/preferences
@ -943,9 +964,6 @@ importers:
'@vben-core/toolkit':
specifier: workspace:*
version: link:../../@core/shared/toolkit
'@vben/locales':
specifier: workspace:*
version: link:../../locales
'@vueuse/core':
specifier: ^10.11.0
version: 10.11.0(vue@3.4.31(typescript@5.5.3))
@ -971,21 +989,6 @@ importers:
specifier: workspace:*
version: link:../@core/shared/iconify
packages/locales:
dependencies:
'@intlify/core-base':
specifier: ^9.13.1
version: 9.13.1
'@vben-core/typings':
specifier: workspace:*
version: link:../@core/shared/typings
vue:
specifier: ^3.4.31
version: 3.4.31(typescript@5.5.3)
vue-i18n:
specifier: ^9.13.1
version: 9.13.1(vue@3.4.31(typescript@5.5.3))
packages/styles:
dependencies:
'@vben-core/design':
@ -2208,30 +2211,30 @@ packages:
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
engines: {node: '>=12'}
'@csstools/cascade-layer-name-parser@1.0.12':
resolution: {integrity: sha512-iNCCOnaoycAfcIot3v/orjkTol+j8+Z5xgpqxUpZSdqeaxCADQZtldHhlvzDipmi7OoWdcJUO6DRZcnkMSBEIg==}
'@csstools/cascade-layer-name-parser@1.0.13':
resolution: {integrity: sha512-MX0yLTwtZzr82sQ0zOjqimpZbzjMaK/h2pmlrLK7DCzlmiZLYFpoO94WmN1akRVo6ll/TdpHb53vihHLUMyvng==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
'@csstools/css-parser-algorithms': ^2.7.0
'@csstools/css-tokenizer': ^2.3.2
'@csstools/css-parser-algorithms': ^2.7.1
'@csstools/css-tokenizer': ^2.4.1
'@csstools/color-helpers@4.2.1':
resolution: {integrity: sha512-CEypeeykO9AN7JWkr1OEOQb0HRzZlPWGwV0Ya6DuVgFdDi6g3ma/cPZ5ZPZM4AWQikDpq/0llnGGlIL+j8afzw==}
engines: {node: ^14 || ^16 || >=18}
'@csstools/css-calc@1.2.3':
resolution: {integrity: sha512-rlOh81K3CvtY969Od5b1h29YT6MpCHejMCURKrRrXFeCpz67HGaBNvBmWT5S7S+CKn+V7KJ+qxSmK8jNd/aZWA==}
'@csstools/css-calc@1.2.4':
resolution: {integrity: sha512-tfOuvUQeo7Hz+FcuOd3LfXVp+342pnWUJ7D2y8NUpu1Ww6xnTbHLpz018/y6rtbHifJ3iIEf9ttxXd8KG7nL0Q==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
'@csstools/css-parser-algorithms': ^2.7.0
'@csstools/css-tokenizer': ^2.3.2
'@csstools/css-parser-algorithms': ^2.7.1
'@csstools/css-tokenizer': ^2.4.1
'@csstools/css-color-parser@2.0.3':
resolution: {integrity: sha512-Qqhb5I/gEh1wI4brf6Kmy0Xn4J1IqO8OTDKWGRsBYtL4bGkHcV9i0XI2Mmo/UYFtSRoXW/RmKTcMh6sCI433Cw==}
'@csstools/css-color-parser@2.0.4':
resolution: {integrity: sha512-yUb0mk/k2yVNcQvRmd9uikpu6D0aamFJGgU++5d0lng6ucaJkhKyhDCQCj9rVuQYntvFQKqyU6UfTPQWU2UkXQ==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
'@csstools/css-parser-algorithms': ^2.7.0
'@csstools/css-tokenizer': ^2.3.2
'@csstools/css-parser-algorithms': ^2.7.1
'@csstools/css-tokenizer': ^2.4.1
'@csstools/css-parser-algorithms@2.7.0':
resolution: {integrity: sha512-qvBMcOU/uWFCH/VO0MYe0AMs0BGMWAt6FTryMbFIKYtZtVnqTZtT8ktv5o718llkaGZWomJezJZjq3vJDHeJNQ==}
@ -2239,10 +2242,20 @@ packages:
peerDependencies:
'@csstools/css-tokenizer': ^2.3.2
'@csstools/css-parser-algorithms@2.7.1':
resolution: {integrity: sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
'@csstools/css-tokenizer': ^2.4.1
'@csstools/css-tokenizer@2.3.3':
resolution: {integrity: sha512-fTaF0vRcXVJ4cmwg8nHofydDjitKMDBzC8cCu+O/Lg13C4PdkC15GVjGpbmWauOOnhomVSTg5I5LpLJFJE2Hfw==}
engines: {node: ^14 || ^16 || >=18}
'@csstools/css-tokenizer@2.4.1':
resolution: {integrity: sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==}
engines: {node: ^14 || ^16 || >=18}
'@csstools/media-query-list-parser@2.1.12':
resolution: {integrity: sha512-t1/CdyVJzOQUiGUcIBXRzTAkWTFPxiPnoKwowKW2z9Uj78c2bBWI/X94BeVfUwVq1xtCjD7dnO8kS6WONgp8Jw==}
engines: {node: ^14 || ^16 || >=18}
@ -2250,26 +2263,33 @@ packages:
'@csstools/css-parser-algorithms': ^2.7.0
'@csstools/css-tokenizer': ^2.3.2
'@csstools/media-query-list-parser@2.1.13':
resolution: {integrity: sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
'@csstools/css-parser-algorithms': ^2.7.1
'@csstools/css-tokenizer': ^2.4.1
'@csstools/postcss-cascade-layers@4.0.6':
resolution: {integrity: sha512-Xt00qGAQyqAODFiFEJNkTpSUz5VfYqnDLECdlA/Vv17nl/OIV5QfTRHGAXrBGG5YcJyHpJ+GF9gF/RZvOQz4oA==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
'@csstools/postcss-color-function@3.0.17':
resolution: {integrity: sha512-hi6g5KHMvxpxf01LCVu5xnNxX5h2Vkn9aKRmspn2esWjWtshuTXVOavTjwvogA+Eycm9Rn21QTYNU+qbKw6IeQ==}
'@csstools/postcss-color-function@3.0.18':
resolution: {integrity: sha512-Ry8b3HCyadiBLObsGShdoJNoZkQTHz5q5HVY/hkwwBkq8q702amvcGJs06tpzFTwHL+jPc7vULUpYtK4MIJHwA==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
'@csstools/postcss-color-mix-function@2.0.17':
resolution: {integrity: sha512-Y65GHGCY1R+9+/5KrJjN7gAF1NZydng4AGknMggeUJIyo2ckLb4vBrlDmpIcHDdjQtV5631j1hxvalVTbpoiFw==}
'@csstools/postcss-color-mix-function@2.0.18':
resolution: {integrity: sha512-CtklpScpGZ3ZwUQMOCYlsWw8vMu+rjvKUJsa1zpFSvesoUK89JBC6+LzEhTlb1jMcyrY2ErySEQDOt+MMRse0A==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
'@csstools/postcss-exponential-functions@1.0.8':
resolution: {integrity: sha512-/4WHpu4MrCCsUWRaDreyBcdF+5xnudk1JJLg6aWREeMaSpr3vsD0eywmOXct3xUm28TCqKS//S86IlcDJJdzoQ==}
'@csstools/postcss-exponential-functions@1.0.9':
resolution: {integrity: sha512-x1Avr15mMeuX7Z5RJUl7DmjhUtg+Amn5DZRD0fQ2TlTFTcJS8U1oxXQ9e5mA62S2RJgUU6db20CRoJyDvae2EQ==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
@ -2280,20 +2300,20 @@ packages:
peerDependencies:
postcss: ^8.4
'@csstools/postcss-gamut-mapping@1.0.10':
resolution: {integrity: sha512-iPz4/cO8YiNjAYdtAiKGBdKZdFlAvDtUr2AgvAMxCa83e9MwTIKmsJZC3Frw7VYmkfknmdElEZr1FJU+PmB2PA==}
'@csstools/postcss-gamut-mapping@1.0.11':
resolution: {integrity: sha512-KrHGsUPXRYxboXmJ9wiU/RzDM7y/5uIefLWKFSc36Pok7fxiPyvkSHO51kh+RLZS1W5hbqw9qaa6+tKpTSxa5g==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
'@csstools/postcss-gradients-interpolation-method@4.0.18':
resolution: {integrity: sha512-rZH7RnNYY911I/n8+DRrcri89GffptdyuFDGGj/UbxDISFirdR1uI/wcur9KYR/uFHXqrnJjrfi1cisfB7bL+g==}
'@csstools/postcss-gradients-interpolation-method@4.0.19':
resolution: {integrity: sha512-aGKMXy2EhkyidYvfuILqoO6tk8bEIVS9obc6OAc1JwRLeQBkbPtL56eKd1DnyEfgJ+6v/4zA1Ko0AqPwAjA50w==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
'@csstools/postcss-hwb-function@3.0.16':
resolution: {integrity: sha512-nlC4D5xB7pomgR4kDZ1lqbVqrs6gxPqsM2OE5CkCn0EqCMxtqqtadtbK2dcFwzyujv3DL4wYNo+fgF4rJgLPZA==}
'@csstools/postcss-hwb-function@3.0.17':
resolution: {integrity: sha512-Oe8WBtP29K5EBCqOKOfKAUaDFWYw+16WCDuwaYJMS0o8oZdPwmxLaBDsqXlNK03zXe9McYBli8fBHyRiVEVJGQ==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
@ -2316,8 +2336,8 @@ packages:
peerDependencies:
postcss: ^8.4
'@csstools/postcss-light-dark-function@1.0.6':
resolution: {integrity: sha512-bu+cxKpcTrMDMkVCv7QURwKNPZEuXA3J0Udvz3HfmQHt4+OIvvfvDpTgejFXdOliCU4zK9/QdqebPcYneygZtg==}
'@csstools/postcss-light-dark-function@1.0.7':
resolution: {integrity: sha512-49LSrZR/d2Iql7Sq4C+k5SDvn0RvqXzCt//kWihVimxCUvZHGxrHeV777Hfr0lTfPlgfPdkCVdlaLM5XZTqIng==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
@ -2346,20 +2366,20 @@ packages:
peerDependencies:
postcss: ^8.4
'@csstools/postcss-logical-viewport-units@2.0.10':
resolution: {integrity: sha512-nGP0KanI/jXrUMpaIBz6mdy/vNs3d/cjbNYuoEc7lCdNkntmxZvwxC2zIKI8QzGWaYsh9jahozMVceZ0jNyjgg==}
'@csstools/postcss-logical-viewport-units@2.0.11':
resolution: {integrity: sha512-ElITMOGcjQtvouxjd90WmJRIw1J7KMP+M+O87HaVtlgOOlDt1uEPeTeii8qKGe2AiedEp0XOGIo9lidbiU2Ogg==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
'@csstools/postcss-media-minmax@1.1.7':
resolution: {integrity: sha512-AjLG+vJvhrN2geUjYNvzncW1TJ+vC4QrVPGrLPxOSJ2QXC94krQErSW4aXMj0b13zhvVWeqf2NHIOVQknqV9cg==}
'@csstools/postcss-media-minmax@1.1.8':
resolution: {integrity: sha512-KYQCal2i7XPNtHAUxCECdrC7tuxIWQCW+s8eMYs5r5PaAiVTeKwlrkRS096PFgojdNCmHeG0Cb7njtuNswNf+w==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
'@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.10':
resolution: {integrity: sha512-DXae3i7OYJTejxcoUuf/AOIpy+6FWfGGKo/I3WefZI538l3k+ErU6V2xQOx/UmUXT2FDIdE1Ucl9JkZib2rEsA==}
'@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.11':
resolution: {integrity: sha512-YD6jrib20GRGQcnOu49VJjoAnQ/4249liuz7vTpy/JfgqQ1Dlc5eD4HPUMNLOw9CWey9E6Etxwf/xc/ZF8fECA==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
@ -2376,8 +2396,8 @@ packages:
peerDependencies:
postcss: ^8.4
'@csstools/postcss-oklab-function@3.0.17':
resolution: {integrity: sha512-kIng3Xmw6NKUvD/eEoHGwbyDFXDsuzsVGtNo3ndgZYYqy+DLiD+3drxwRKiViE5LUieLB1ERczXpLVmpSw61eg==}
'@csstools/postcss-oklab-function@3.0.18':
resolution: {integrity: sha512-qxcctjXBgGKYl/CUSh13zaKdB57meIDvgTwF1o4EKzzuJ4RM+t79GuWWAnVKesbAwQXn6k/JQb8LfOeH8g1t2w==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
@ -2388,8 +2408,8 @@ packages:
peerDependencies:
postcss: ^8.4
'@csstools/postcss-relative-color-syntax@2.0.17':
resolution: {integrity: sha512-EVckAtG8bocItZflXLJ50Su+gwg/4Jhkz1BztyNsT0/svwS6QMAeLjyUA75OsgtejNWQHvBMWna4xc9LCqdjrQ==}
'@csstools/postcss-relative-color-syntax@2.0.18':
resolution: {integrity: sha512-C39i9fId7kz7VOJps2/ZJjsbppNMy5zF6ly+7xkJBPS89XlhBzKYTBObhRXDZDKfzXPZ4fwKOfqv5z+Cr+IIKg==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
@ -2400,8 +2420,8 @@ packages:
peerDependencies:
postcss: ^8.4
'@csstools/postcss-stepped-value-functions@3.0.9':
resolution: {integrity: sha512-uAw1J8hiZ0mM1DLaziI7CP5oagSwDnS5kufuROGIJFzESYfTqNVS3b7FgDZto9AxXdkwI+Sn48+cvG8PwzGMog==}
'@csstools/postcss-stepped-value-functions@3.0.10':
resolution: {integrity: sha512-MZwo0D0TYrQhT5FQzMqfy/nGZ28D1iFtpN7Su1ck5BPHS95+/Y5O9S4kEvo76f2YOsqwYcT8ZGehSI1TnzuX2g==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
@ -2412,8 +2432,8 @@ packages:
peerDependencies:
postcss: ^8.4
'@csstools/postcss-trigonometric-functions@3.0.9':
resolution: {integrity: sha512-rCAtKX3EsH91ZIHoxFzAAcMQeQCS+PsjzHl6fvsGXz/SV3lqzSmO7MWgFXyPktC2zjZXgOObAJ/2QkhMqVpgNg==}
'@csstools/postcss-trigonometric-functions@3.0.10':
resolution: {integrity: sha512-G9G8moTc2wiad61nY5HfvxLiM/myX0aYK4s1x8MQlPH29WDPxHQM7ghGgvv2qf2xH+rrXhztOmjGHJj4jsEqXw==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
@ -7249,8 +7269,8 @@ packages:
peerDependencies:
postcss: ^8.4.6
postcss-color-functional-notation@6.0.12:
resolution: {integrity: sha512-LGLWl6EDofJwDHMElYvt4YU9AeH+oijzOfeKhE0ebuu0aBSDeEg7CfFXMi0iiXWV1VKxn3MLGOtcBNnOiQS9Yg==}
postcss-color-functional-notation@6.0.13:
resolution: {integrity: sha512-c2zzoZPJG1/tH1wrFOstQ2q/bvzFXNIDPFJu+l9idwwpVXbgrD4ThiuIcQxCBhOVY+CJ/Kb7DKiRLNsjTjj/+A==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
@ -7279,20 +7299,20 @@ packages:
peerDependencies:
postcss: ^8.4.31
postcss-custom-media@10.0.7:
resolution: {integrity: sha512-o2k5nnvRZhF36pr1fGFM7a1EMTcNdKNO70Tp1g2lfpYgiwIctR7ic4acBCDHBMYRcQ8mFlaBB1QsEywqrSIaFQ==}
postcss-custom-media@10.0.8:
resolution: {integrity: sha512-V1KgPcmvlGdxTel4/CyQtBJEFhMVpEmRGFrnVtgfGIHj5PJX9vO36eFBxKBeJn+aCDTed70cc+98Mz3J/uVdGQ==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
postcss-custom-properties@13.3.11:
resolution: {integrity: sha512-CAIgz03I/GMhVbAKIi3u3P8j5JY2KHl0TlePcfUX3OUy8t0ynnWvyJaS1D92pEAw1LjmeKWi7+aIU0s53iYdOQ==}
postcss-custom-properties@13.3.12:
resolution: {integrity: sha512-oPn/OVqONB2ZLNqN185LDyaVByELAA/u3l2CS2TS16x2j2XsmV4kd8U49+TMxmUsEU9d8fB/I10E6U7kB0L1BA==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
postcss-custom-selectors@7.1.11:
resolution: {integrity: sha512-IoGprXOueDJL5t3ZuWR+QzPpmrQCFNhvoICsg0vDSehGwWNG0YV/Z4A+zouGRonC7NJThoV+A8A74IEMqMQUQw==}
postcss-custom-selectors@7.1.12:
resolution: {integrity: sha512-ctIoprBMJwByYMGjXG0F7IT2iMF2hnamQ+aWZETyBM0aAlyaYdVZTeUkk8RB+9h9wP+NdN3f01lfvKl2ZSqC0g==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
@ -7384,8 +7404,8 @@ packages:
peerDependencies:
postcss: ^8.4.21
postcss-lab-function@6.0.17:
resolution: {integrity: sha512-QzjC6/3J6XKZzHGuUKhWNvlDMfWo+08dQOfQj4vWQdpZFdOxCh9QCR4w4XbV68EkdzywJie1mcm81jwFyV0+kg==}
postcss-lab-function@6.0.18:
resolution: {integrity: sha512-7/V6sqQW06dVC8hhT6qe913UPhD+PSDdoMUn5jByP+FRDg4ErWXFayl2rpW398hI2QTmOeNLUsTBa0lzbsXZZg==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
@ -7548,8 +7568,8 @@ packages:
peerDependencies:
postcss: ^8.4
postcss-preset-env@9.5.15:
resolution: {integrity: sha512-z/2akOVQChOGAdzaUR4pQrDOM3xGZc5/k4THHWyREbWAfngaJATA2SkEQMkiyV5Y/EoSwE0nt0IiaIs6CMmxfQ==}
postcss-preset-env@9.5.16:
resolution: {integrity: sha512-bQhNpSW4WE4k4Tq3xWf9Al9bN4r609aXXzE4ZoPs/KPBSjhTohUMVmXvUJ2wleSbx4II8nyC9tgiPIysPAFh6A==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
postcss: ^8.4
@ -11021,65 +11041,76 @@ snapshots:
dependencies:
'@jridgewell/trace-mapping': 0.3.9
'@csstools/cascade-layer-name-parser@1.0.12(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)':
'@csstools/cascade-layer-name-parser@1.0.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)':
dependencies:
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
'@csstools/color-helpers@4.2.1': {}
'@csstools/css-calc@1.2.3(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)':
'@csstools/css-calc@1.2.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)':
dependencies:
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
'@csstools/css-color-parser@2.0.3(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)':
'@csstools/css-color-parser@2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)':
dependencies:
'@csstools/color-helpers': 4.2.1
'@csstools/css-calc': 1.2.3(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-calc': 1.2.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
'@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3)':
dependencies:
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1)':
dependencies:
'@csstools/css-tokenizer': 2.4.1
'@csstools/css-tokenizer@2.3.3': {}
'@csstools/css-tokenizer@2.4.1': {}
'@csstools/media-query-list-parser@2.1.12(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)':
dependencies:
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/media-query-list-parser@2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)':
dependencies:
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
'@csstools/postcss-cascade-layers@4.0.6(postcss@8.4.39)':
dependencies:
'@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.0)
postcss: 8.4.39
postcss-selector-parser: 6.1.0
'@csstools/postcss-color-function@3.0.17(postcss@8.4.39)':
'@csstools/postcss-color-function@3.0.18(postcss@8.4.39)':
dependencies:
'@csstools/css-color-parser': 2.0.3(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
'@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.39)
'@csstools/utilities': 1.0.0(postcss@8.4.39)
postcss: 8.4.39
'@csstools/postcss-color-mix-function@2.0.17(postcss@8.4.39)':
'@csstools/postcss-color-mix-function@2.0.18(postcss@8.4.39)':
dependencies:
'@csstools/css-color-parser': 2.0.3(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
'@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.39)
'@csstools/utilities': 1.0.0(postcss@8.4.39)
postcss: 8.4.39
'@csstools/postcss-exponential-functions@1.0.8(postcss@8.4.39)':
'@csstools/postcss-exponential-functions@1.0.9(postcss@8.4.39)':
dependencies:
'@csstools/css-calc': 1.2.3(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-calc': 1.2.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
postcss: 8.4.39
'@csstools/postcss-font-format-keywords@3.0.2(postcss@8.4.39)':
@ -11088,27 +11119,27 @@ snapshots:
postcss: 8.4.39
postcss-value-parser: 4.2.0
'@csstools/postcss-gamut-mapping@1.0.10(postcss@8.4.39)':
'@csstools/postcss-gamut-mapping@1.0.11(postcss@8.4.39)':
dependencies:
'@csstools/css-color-parser': 2.0.3(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
postcss: 8.4.39
'@csstools/postcss-gradients-interpolation-method@4.0.18(postcss@8.4.39)':
'@csstools/postcss-gradients-interpolation-method@4.0.19(postcss@8.4.39)':
dependencies:
'@csstools/css-color-parser': 2.0.3(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
'@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.39)
'@csstools/utilities': 1.0.0(postcss@8.4.39)
postcss: 8.4.39
'@csstools/postcss-hwb-function@3.0.16(postcss@8.4.39)':
'@csstools/postcss-hwb-function@3.0.17(postcss@8.4.39)':
dependencies:
'@csstools/css-color-parser': 2.0.3(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
'@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.39)
'@csstools/utilities': 1.0.0(postcss@8.4.39)
postcss: 8.4.39
@ -11130,10 +11161,10 @@ snapshots:
postcss: 8.4.39
postcss-selector-parser: 6.1.0
'@csstools/postcss-light-dark-function@1.0.6(postcss@8.4.39)':
'@csstools/postcss-light-dark-function@1.0.7(postcss@8.4.39)':
dependencies:
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
'@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.39)
'@csstools/utilities': 1.0.0(postcss@8.4.39)
postcss: 8.4.39
@ -11155,25 +11186,25 @@ snapshots:
postcss: 8.4.39
postcss-value-parser: 4.2.0
'@csstools/postcss-logical-viewport-units@2.0.10(postcss@8.4.39)':
'@csstools/postcss-logical-viewport-units@2.0.11(postcss@8.4.39)':
dependencies:
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-tokenizer': 2.4.1
'@csstools/utilities': 1.0.0(postcss@8.4.39)
postcss: 8.4.39
'@csstools/postcss-media-minmax@1.1.7(postcss@8.4.39)':
'@csstools/postcss-media-minmax@1.1.8(postcss@8.4.39)':
dependencies:
'@csstools/css-calc': 1.2.3(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/media-query-list-parser': 2.1.12(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-calc': 1.2.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
'@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
postcss: 8.4.39
'@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.10(postcss@8.4.39)':
'@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.11(postcss@8.4.39)':
dependencies:
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/media-query-list-parser': 2.1.12(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
'@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
postcss: 8.4.39
'@csstools/postcss-nested-calc@3.0.2(postcss@8.4.39)':
@ -11187,11 +11218,11 @@ snapshots:
postcss: 8.4.39
postcss-value-parser: 4.2.0
'@csstools/postcss-oklab-function@3.0.17(postcss@8.4.39)':
'@csstools/postcss-oklab-function@3.0.18(postcss@8.4.39)':
dependencies:
'@csstools/css-color-parser': 2.0.3(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
'@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.39)
'@csstools/utilities': 1.0.0(postcss@8.4.39)
postcss: 8.4.39
@ -11201,11 +11232,11 @@ snapshots:
postcss: 8.4.39
postcss-value-parser: 4.2.0
'@csstools/postcss-relative-color-syntax@2.0.17(postcss@8.4.39)':
'@csstools/postcss-relative-color-syntax@2.0.18(postcss@8.4.39)':
dependencies:
'@csstools/css-color-parser': 2.0.3(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
'@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.39)
'@csstools/utilities': 1.0.0(postcss@8.4.39)
postcss: 8.4.39
@ -11215,11 +11246,11 @@ snapshots:
postcss: 8.4.39
postcss-selector-parser: 6.1.0
'@csstools/postcss-stepped-value-functions@3.0.9(postcss@8.4.39)':
'@csstools/postcss-stepped-value-functions@3.0.10(postcss@8.4.39)':
dependencies:
'@csstools/css-calc': 1.2.3(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-calc': 1.2.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
postcss: 8.4.39
'@csstools/postcss-text-decoration-shorthand@3.0.7(postcss@8.4.39)':
@ -11228,11 +11259,11 @@ snapshots:
postcss: 8.4.39
postcss-value-parser: 4.2.0
'@csstools/postcss-trigonometric-functions@3.0.9(postcss@8.4.39)':
'@csstools/postcss-trigonometric-functions@3.0.10(postcss@8.4.39)':
dependencies:
'@csstools/css-calc': 1.2.3(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-calc': 1.2.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
postcss: 8.4.39
'@csstools/postcss-unset-value@3.0.1(postcss@8.4.39)':
@ -16421,11 +16452,11 @@ snapshots:
postcss: 8.4.39
postcss-value-parser: 4.2.0
postcss-color-functional-notation@6.0.12(postcss@8.4.39):
postcss-color-functional-notation@6.0.13(postcss@8.4.39):
dependencies:
'@csstools/css-color-parser': 2.0.3(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
'@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.39)
'@csstools/utilities': 1.0.0(postcss@8.4.39)
postcss: 8.4.39
@ -16456,28 +16487,28 @@ snapshots:
postcss: 8.4.39
postcss-value-parser: 4.2.0
postcss-custom-media@10.0.7(postcss@8.4.39):
postcss-custom-media@10.0.8(postcss@8.4.39):
dependencies:
'@csstools/cascade-layer-name-parser': 1.0.12(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/media-query-list-parser': 2.1.12(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/cascade-layer-name-parser': 1.0.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
'@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
postcss: 8.4.39
postcss-custom-properties@13.3.11(postcss@8.4.39):
postcss-custom-properties@13.3.12(postcss@8.4.39):
dependencies:
'@csstools/cascade-layer-name-parser': 1.0.12(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/cascade-layer-name-parser': 1.0.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
'@csstools/utilities': 1.0.0(postcss@8.4.39)
postcss: 8.4.39
postcss-value-parser: 4.2.0
postcss-custom-selectors@7.1.11(postcss@8.4.39):
postcss-custom-selectors@7.1.12(postcss@8.4.39):
dependencies:
'@csstools/cascade-layer-name-parser': 1.0.12(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/cascade-layer-name-parser': 1.0.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
postcss: 8.4.39
postcss-selector-parser: 6.1.0
@ -16560,11 +16591,11 @@ snapshots:
camelcase-css: 2.0.1
postcss: 8.4.39
postcss-lab-function@6.0.17(postcss@8.4.39):
postcss-lab-function@6.0.18(postcss@8.4.39):
dependencies:
'@csstools/css-color-parser': 2.0.3(@csstools/css-parser-algorithms@2.7.0(@csstools/css-tokenizer@2.3.3))(@csstools/css-tokenizer@2.3.3)
'@csstools/css-parser-algorithms': 2.7.0(@csstools/css-tokenizer@2.3.3)
'@csstools/css-tokenizer': 2.3.3
'@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
'@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.39)
'@csstools/utilities': 1.0.0(postcss@8.4.39)
postcss: 8.4.39
@ -16709,36 +16740,36 @@ snapshots:
postcss: 8.4.39
postcss-value-parser: 4.2.0
postcss-preset-env@9.5.15(postcss@8.4.39):
postcss-preset-env@9.5.16(postcss@8.4.39):
dependencies:
'@csstools/postcss-cascade-layers': 4.0.6(postcss@8.4.39)
'@csstools/postcss-color-function': 3.0.17(postcss@8.4.39)
'@csstools/postcss-color-mix-function': 2.0.17(postcss@8.4.39)
'@csstools/postcss-exponential-functions': 1.0.8(postcss@8.4.39)
'@csstools/postcss-color-function': 3.0.18(postcss@8.4.39)
'@csstools/postcss-color-mix-function': 2.0.18(postcss@8.4.39)
'@csstools/postcss-exponential-functions': 1.0.9(postcss@8.4.39)
'@csstools/postcss-font-format-keywords': 3.0.2(postcss@8.4.39)
'@csstools/postcss-gamut-mapping': 1.0.10(postcss@8.4.39)
'@csstools/postcss-gradients-interpolation-method': 4.0.18(postcss@8.4.39)
'@csstools/postcss-hwb-function': 3.0.16(postcss@8.4.39)
'@csstools/postcss-gamut-mapping': 1.0.11(postcss@8.4.39)
'@csstools/postcss-gradients-interpolation-method': 4.0.19(postcss@8.4.39)
'@csstools/postcss-hwb-function': 3.0.17(postcss@8.4.39)
'@csstools/postcss-ic-unit': 3.0.6(postcss@8.4.39)
'@csstools/postcss-initial': 1.0.1(postcss@8.4.39)
'@csstools/postcss-is-pseudo-class': 4.0.8(postcss@8.4.39)
'@csstools/postcss-light-dark-function': 1.0.6(postcss@8.4.39)
'@csstools/postcss-light-dark-function': 1.0.7(postcss@8.4.39)
'@csstools/postcss-logical-float-and-clear': 2.0.1(postcss@8.4.39)
'@csstools/postcss-logical-overflow': 1.0.1(postcss@8.4.39)
'@csstools/postcss-logical-overscroll-behavior': 1.0.1(postcss@8.4.39)
'@csstools/postcss-logical-resize': 2.0.1(postcss@8.4.39)
'@csstools/postcss-logical-viewport-units': 2.0.10(postcss@8.4.39)
'@csstools/postcss-media-minmax': 1.1.7(postcss@8.4.39)
'@csstools/postcss-media-queries-aspect-ratio-number-values': 2.0.10(postcss@8.4.39)
'@csstools/postcss-logical-viewport-units': 2.0.11(postcss@8.4.39)
'@csstools/postcss-media-minmax': 1.1.8(postcss@8.4.39)
'@csstools/postcss-media-queries-aspect-ratio-number-values': 2.0.11(postcss@8.4.39)
'@csstools/postcss-nested-calc': 3.0.2(postcss@8.4.39)
'@csstools/postcss-normalize-display-values': 3.0.2(postcss@8.4.39)
'@csstools/postcss-oklab-function': 3.0.17(postcss@8.4.39)
'@csstools/postcss-oklab-function': 3.0.18(postcss@8.4.39)
'@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.39)
'@csstools/postcss-relative-color-syntax': 2.0.17(postcss@8.4.39)
'@csstools/postcss-relative-color-syntax': 2.0.18(postcss@8.4.39)
'@csstools/postcss-scope-pseudo-class': 3.0.1(postcss@8.4.39)
'@csstools/postcss-stepped-value-functions': 3.0.9(postcss@8.4.39)
'@csstools/postcss-stepped-value-functions': 3.0.10(postcss@8.4.39)
'@csstools/postcss-text-decoration-shorthand': 3.0.7(postcss@8.4.39)
'@csstools/postcss-trigonometric-functions': 3.0.9(postcss@8.4.39)
'@csstools/postcss-trigonometric-functions': 3.0.10(postcss@8.4.39)
'@csstools/postcss-unset-value': 3.0.1(postcss@8.4.39)
autoprefixer: 10.4.19(postcss@8.4.39)
browserslist: 4.23.1
@ -16749,12 +16780,12 @@ snapshots:
postcss: 8.4.39
postcss-attribute-case-insensitive: 6.0.3(postcss@8.4.39)
postcss-clamp: 4.1.0(postcss@8.4.39)
postcss-color-functional-notation: 6.0.12(postcss@8.4.39)
postcss-color-functional-notation: 6.0.13(postcss@8.4.39)
postcss-color-hex-alpha: 9.0.4(postcss@8.4.39)
postcss-color-rebeccapurple: 9.0.3(postcss@8.4.39)
postcss-custom-media: 10.0.7(postcss@8.4.39)
postcss-custom-properties: 13.3.11(postcss@8.4.39)
postcss-custom-selectors: 7.1.11(postcss@8.4.39)
postcss-custom-media: 10.0.8(postcss@8.4.39)
postcss-custom-properties: 13.3.12(postcss@8.4.39)
postcss-custom-selectors: 7.1.12(postcss@8.4.39)
postcss-dir-pseudo-class: 8.0.1(postcss@8.4.39)
postcss-double-position-gradients: 5.0.6(postcss@8.4.39)
postcss-focus-visible: 9.0.1(postcss@8.4.39)
@ -16762,7 +16793,7 @@ snapshots:
postcss-font-variant: 5.0.0(postcss@8.4.39)
postcss-gap-properties: 5.0.1(postcss@8.4.39)
postcss-image-set-function: 6.0.3(postcss@8.4.39)
postcss-lab-function: 6.0.17(postcss@8.4.39)
postcss-lab-function: 6.0.18(postcss@8.4.39)
postcss-logical: 7.0.1(postcss@8.4.39)
postcss-nesting: 12.1.5(postcss@8.4.39)
postcss-opacity-percentage: 2.0.0(postcss@8.4.39)

View File

@ -6,6 +6,7 @@ packages:
- "packages/@core/ui-kit/*"
- "packages/@core/forward/*"
- "packages/@core/helpers"
- "packages/@core/locales"
- "packages/business/*"
- "apps/*"
- "scripts/*"

View File

@ -60,6 +60,10 @@
"name": "@vben-core/stores",
"path": "packages/@core/forward/stores",
},
{
"name": "@vben-core/locales",
"path": "packages/@core/locales",
},
{
"name": "@vben-core/cache",
"path": "packages/@core/shared/cache",
@ -132,10 +136,6 @@
"name": "@vben/icons",
"path": "packages/icons",
},
{
"name": "@vben/locales",
"path": "packages/locales",
},
{
"name": "@vben/styles",
"path": "packages/styles",