Merge branch 'v2-translation' into v2-dev

# Conflicts:
#	packages/ui/certd-client/src/components/plugins/common/remote-select.vue
#	packages/ui/certd-client/src/router/source/modules/certd.ts
#	packages/ui/certd-client/src/views/certd/pipeline/certd-form/use.tsx
#	packages/ui/certd-client/src/views/certd/pipeline/crud.tsx
This commit is contained in:
xiaojunnuo
2025-06-29 00:26:34 +08:00
156 changed files with 10679 additions and 8692 deletions
@@ -6,7 +6,7 @@ import type { MenuRecordRaw } from "../../types";
import { computed, useSlots, watch } from "vue";
import { useRefresh } from "../../hooks";
import { $t, i18n } from "../../locales";
import { $t, i18n } from "/@/locales";
import { preferences, updatePreferences, usePreferences } from "../../preferences";
import { useLockStore } from "../../stores";
import { cloneDeep, mapTree } from "../../utils";
@@ -9,7 +9,7 @@ import { useRoute, useRouter } from "vue-router";
import { useContentMaximize, useTabs } from "../../../hooks";
import { ArrowLeftToLine, ArrowRightLeft, ArrowRightToLine, ExternalLink, FoldHorizontal, Fullscreen, Minimize2, Pin, PinOff, RotateCw, X } from "../../../icons";
import { $t, useI18n } from "../../../locales";
import { $t, useI18n } from "/@/locales";
import { useAccessStore, useTabbarStore } from "../../../stores";
import { filterTree } from "../../../utils";
@@ -6,7 +6,7 @@ import type { IBreadcrumb } from "/@/vben//shadcn-ui";
import { computed } from "vue";
import { useRoute, useRouter } from "vue-router";
import { $t } from "/@/vben/locales";
import { $t } from "/@/locales";
import { VbenBreadcrumbView } from "/@/vben//shadcn-ui";
@@ -1,7 +1,7 @@
<script setup lang="ts">
import { onMounted, onUnmounted, ref } from "vue";
import { $t } from "../../../locales";
import { $t } from "/@/locales";
import { useVbenModal } from "../../../popup-ui";
@@ -4,7 +4,7 @@ import type { MenuRecordRaw } from "../../../types";
import { nextTick, onMounted, onUnmounted, ref, watch } from "vue";
import { ArrowDown, ArrowUp, CornerDownLeft, MdiKeyboardEsc, Search } from "../../../icons";
import { $t } from "../../../locales";
import { $t } from "/@/locales";
import { isWindowsOs } from "../../../utils";
import { useVbenModal } from "../../../popup-ui";
@@ -5,7 +5,7 @@ import { nextTick, onMounted, ref, shallowRef, watch } from "vue";
import { useRouter } from "vue-router";
import { SearchX, X } from "../../../icons";
import { $t } from "../../../locales";
import { $t } from "/@/locales";
import { mapTree, traverseTreeValues, uniqueByField } from "../../../utils";
import { VbenIcon, VbenScrollbar } from "../../../shadcn-ui";
@@ -1,11 +1,11 @@
export { default as Breadcrumb } from './breadcrumb.vue';
export * from './check-updates';
export { default as AuthenticationColorToggle } from './color-toggle.vue';
export * from './global-search';
export { default as LanguageToggle } from './language-toggle.vue';
export { default as AuthenticationLayoutToggle } from './layout-toggle.vue';
export * from './lock-screen';
export * from './notification';
export * from './preferences';
export * from './theme-toggle';
export * from './user-dropdown';
export { default as Breadcrumb } from "./breadcrumb.vue";
export * from "./check-updates";
export { default as AuthenticationColorToggle } from "./color-toggle.vue";
export * from "./global-search";
export { default as LanguageToggle } from "./language-toggle.vue";
export { default as AuthenticationLayoutToggle } from "./layout-toggle.vue";
export * from "./lock-screen";
export * from "./notification";
export * from "./preferences";
export * from "./theme-toggle";
export * from "./user-dropdown";
@@ -1,9 +1,9 @@
<script setup lang="ts">
import type { SupportedLanguagesType } from "/@/vben/locales";
import type { SupportedLanguagesType } from "/@/locales";
import { SUPPORT_LANGUAGES } from "/@/vben/constants";
import { Languages } from "/@/vben/icons";
import { loadLocaleMessages } from "/@/vben/locales";
import { loadLocaleMessages } from "/@/locales";
import { preferences, updatePreferences } from "/@/vben/preferences";
import { VbenDropdownRadioMenu, VbenIconButton } from "/@/vben//shadcn-ui";
@@ -6,31 +6,31 @@ import type { VbenDropdownMenuItem } from "/@/vben//shadcn-ui";
import { computed } from "vue";
import { InspectionPanel, PanelLeft, PanelRight } from "/@/vben/icons";
import { $t } from "/@/vben/locales";
import { $t } from "/@/locales";
import { preferences, updatePreferences, usePreferences } from "/@/vben/preferences";
import { VbenDropdownRadioMenu, VbenIconButton } from "/@/vben//shadcn-ui";
defineOptions({
name: "AuthenticationLayoutToggle"
name: "AuthenticationLayoutToggle",
});
const menus = computed((): VbenDropdownMenuItem[] => [
{
icon: PanelLeft,
label: $t("authentication.layout.alignLeft"),
value: "panel-left"
value: "panel-left",
},
{
icon: InspectionPanel,
label: $t("authentication.layout.center"),
value: "panel-center"
value: "panel-center",
},
{
icon: PanelRight,
label: $t("authentication.layout.alignRight"),
value: "panel-right"
}
value: "panel-right",
},
]);
const { authPanelCenter, authPanelLeft, authPanelRight } = usePreferences();
@@ -38,8 +38,8 @@ const { authPanelCenter, authPanelLeft, authPanelRight } = usePreferences();
function handleUpdate(value: string) {
updatePreferences({
app: {
authPageLayout: value as AuthPageLayoutType
}
authPageLayout: value as AuthPageLayoutType,
},
});
}
</script>
@@ -3,7 +3,7 @@ import type { Recordable } from "../../../types";
import { computed, reactive } from "vue";
import { $t } from "../../../locales";
import { $t } from "/@/locales";
import { useVbenForm, z } from "../../../form-ui";
import { useVbenModal } from "../../../popup-ui";
@@ -2,7 +2,7 @@
import { computed, reactive, ref } from "vue";
import { LockKeyhole } from "../../../icons";
import { $t, useI18n } from "../../../locales";
import { $t, useI18n } from "/@/locales";
import { storeToRefs, useLockStore } from "../../../stores";
import { useScrollLock } from "../../../composables";
@@ -2,7 +2,7 @@
import type { NotificationItem } from "./types";
import { Bell, MailCheck } from "/@/vben/icons";
import { $t } from "/@/vben/locales";
import { $t } from "/@/locales";
import { VbenButton, VbenIconButton, VbenPopover, VbenScrollbar } from "/@/vben//shadcn-ui";
@@ -1,5 +1,5 @@
<script setup lang="ts">
import { $t } from "/@/vben/locales";
import { $t } from "/@/locales";
import SwitchItem from "../switch-item.vue";
@@ -1,6 +1,6 @@
<script setup lang="ts">
import { SUPPORT_LANGUAGES } from "/@/vben/constants";
import { $t } from "/@/vben/locales";
import { $t } from "/@/locales";
import SelectItem from "../select-item.vue";
import SwitchItem from "../switch-item.vue";
@@ -3,7 +3,7 @@ import type { SelectOption } from "/@/vben/types";
import { computed } from "vue";
import { $t } from "/@/vben/locales";
import { $t } from "/@/locales";
import SwitchItem from "../switch-item.vue";
import ToggleItem from "../toggle-item.vue";
@@ -3,7 +3,7 @@ import type { Component } from "vue";
import { computed } from "vue";
import { $t } from "/@/vben/locales";
import { $t } from "/@/locales";
import { ContentCompact, ContentWide } from "../../icons";
@@ -1,7 +1,7 @@
<script setup lang="ts">
import { computed } from "vue";
import { $t } from "/@/vben/locales";
import { $t } from "/@/locales";
import InputItem from "../input-item.vue";
import SwitchItem from "../switch-item.vue";
@@ -1,5 +1,5 @@
<script setup lang="ts">
import { $t } from "/@/vben/locales";
import { $t } from "/@/locales";
import SwitchItem from "../switch-item.vue";
@@ -5,7 +5,7 @@ import type {
SelectOption,
} from '/@/vben/types';
import { $t } from '/@/vben/locales';
import { $t } from '/@/locales';
import SelectItem from '../select-item.vue';
import SwitchItem from '../switch-item.vue';
@@ -6,107 +6,102 @@ import type { LayoutType } from '/@/vben/types';
import { computed } from 'vue';
import { CircleHelp } from '/@/vben/icons';
import { $t } from '/@/vben/locales';
import { $t } from '/@/locales';
import { VbenTooltip } from '/@/vben//shadcn-ui';
import {
FullContent,
HeaderMixedNav,
HeaderNav,
HeaderSidebarNav,
MixedNav,
SidebarMixedNav,
SidebarNav,
FullContent,
HeaderMixedNav,
HeaderNav,
HeaderSidebarNav,
MixedNav,
SidebarMixedNav,
SidebarNav,
} from '../../icons';
interface PresetItem {
name: string;
tip: string;
type: LayoutType;
name: string;
tip: string;
type: LayoutType;
}
defineOptions({
name: 'PreferenceLayout',
name: 'PreferenceLayout',
});
const modelValue = defineModel<LayoutType>({ default: 'sidebar-nav' });
const components: Record<LayoutType, Component> = {
'full-content': FullContent,
'header-nav': HeaderNav,
'mixed-nav': MixedNav,
'sidebar-mixed-nav': SidebarMixedNav,
'sidebar-nav': SidebarNav,
'header-mixed-nav': HeaderMixedNav,
'header-sidebar-nav': HeaderSidebarNav,
'full-content': FullContent,
'header-nav': HeaderNav,
'mixed-nav': MixedNav,
'sidebar-mixed-nav': SidebarMixedNav,
'sidebar-nav': SidebarNav,
'header-mixed-nav': HeaderMixedNav,
'header-sidebar-nav': HeaderSidebarNav,
};
const PRESET = computed((): PresetItem[] => [
{
name: $t('preferences.vertical'),
tip: $t('preferences.verticalTip'),
type: 'sidebar-nav',
},
{
name: $t('preferences.twoColumn'),
tip: $t('preferences.twoColumnTip'),
type: 'sidebar-mixed-nav',
},
{
name: $t('preferences.horizontal'),
tip: $t('preferences.horizontalTip'),
type: 'header-nav',
},
{
name: $t('preferences.headerSidebarNav'),
tip: $t('preferences.headerSidebarNavTip'),
type: 'header-sidebar-nav',
},
{
name: $t('preferences.mixedMenu'),
tip: $t('preferences.mixedMenuTip'),
type: 'mixed-nav',
},
{
name: $t('preferences.headerTwoColumn'),
tip: $t('preferences.headerTwoColumnTip'),
type: 'header-mixed-nav',
},
{
name: $t('preferences.fullContent'),
tip: $t('preferences.fullContentTip'),
type: 'full-content',
},
{
name: $t('preferences.vertical'),
tip: $t('preferences.verticalTip'),
type: 'sidebar-nav',
},
{
name: $t('preferences.twoColumn'),
tip: $t('preferences.twoColumnTip'),
type: 'sidebar-mixed-nav',
},
{
name: $t('preferences.horizontal'),
tip: $t('preferences.horizontalTip'),
type: 'header-nav',
},
{
name: $t('preferences.headerSidebarNav'),
tip: $t('preferences.headerSidebarNavTip'),
type: 'header-sidebar-nav',
},
{
name: $t('preferences.mixedMenu'),
tip: $t('preferences.mixedMenuTip'),
type: 'mixed-nav',
},
{
name: $t('preferences.headerTwoColumn'),
tip: $t('preferences.headerTwoColumnTip'),
type: 'header-mixed-nav',
},
{
name: $t('preferences.fullContent'),
tip: $t('preferences.fullContentTip'),
type: 'full-content',
},
]);
function activeClass(theme: string): string[] {
return theme === modelValue.value ? ['outline-box-active'] : [];
return theme === modelValue.value ? ['outline-box-active'] : [];
}
</script>
<template>
<div class="flex w-full flex-wrap gap-5">
<template v-for="theme in PRESET" :key="theme.name">
<div
class="flex w-[100px] cursor-pointer flex-col"
@click="modelValue = theme.type"
>
<div :class="activeClass(theme.type)" class="outline-box flex-center">
<component :is="components[theme.type]" />
</div>
<div
class="text-muted-foreground flex-center hover:text-foreground mt-2 text-center text-xs"
>
{{ theme.name }}
<VbenTooltip v-if="theme.tip" side="bottom">
<template #trigger>
<CircleHelp class="ml-1 size-3 cursor-help" />
</template>
{{ theme.tip }}
</VbenTooltip>
</div>
</div>
</template>
</div>
<div class="flex w-full flex-wrap gap-5">
<template v-for="theme in PRESET" :key="theme.name">
<div class="flex w-[100px] cursor-pointer flex-col" @click="modelValue = theme.type">
<div :class="activeClass(theme.type)" class="outline-box flex-center">
<component :is="components[theme.type]" />
</div>
<div class="text-muted-foreground flex-center hover:text-foreground mt-2 text-center text-xs">
{{ theme.name }}
<VbenTooltip v-if="theme.tip" side="bottom">
<template #trigger>
<CircleHelp class="ml-1 size-3 cursor-help" />
</template>
{{ theme.tip }}
</VbenTooltip>
</div>
</div>
</template>
</div>
</template>
@@ -1,7 +1,7 @@
<script setup lang="ts">
import type { SelectOption } from '/@/vben/types';
import { $t } from '/@/vben/locales';
import { $t } from '/@/locales';
import SwitchItem from '../switch-item.vue';
import ToggleItem from '../toggle-item.vue';
@@ -1,7 +1,7 @@
<script setup lang="ts">
import type { LayoutType } from '/@/vben/types';
import { $t } from '/@/vben/locales';
import { $t } from '/@/locales';
import NumberFieldItem from '../number-field-item.vue';
import SwitchItem from '../switch-item.vue';
@@ -3,7 +3,7 @@ import type { SelectOption } from '/@/vben/types';
import { computed } from 'vue';
import { $t } from '/@/vben/locales';
import { $t } from '/@/locales';
import NumberFieldItem from '../number-field-item.vue';
import SelectItem from '../select-item.vue';
@@ -1,71 +1,69 @@
<script setup lang="ts">
import type { SelectOption } from '/@/vben/types';
import type { SelectOption } from "/@/vben/types";
import { computed } from 'vue';
import { computed } from "vue";
import { $t } from '/@/vben/locales';
import { $t } from "/@/locales";
import SelectItem from '../select-item.vue';
import SwitchItem from '../switch-item.vue';
import SelectItem from "../select-item.vue";
import SwitchItem from "../switch-item.vue";
defineOptions({
name: 'PreferenceInterfaceControl',
name: "PreferenceInterfaceControl",
});
const widgetGlobalSearch = defineModel<boolean>('widgetGlobalSearch');
const widgetFullscreen = defineModel<boolean>('widgetFullscreen');
const widgetLanguageToggle = defineModel<boolean>('widgetLanguageToggle');
const widgetNotification = defineModel<boolean>('widgetNotification');
const widgetThemeToggle = defineModel<boolean>('widgetThemeToggle');
const widgetSidebarToggle = defineModel<boolean>('widgetSidebarToggle');
const widgetLockScreen = defineModel<boolean>('widgetLockScreen');
const appPreferencesButtonPosition = defineModel<string>(
'appPreferencesButtonPosition',
);
const widgetRefresh = defineModel<boolean>('widgetRefresh');
const widgetGlobalSearch = defineModel<boolean>("widgetGlobalSearch");
const widgetFullscreen = defineModel<boolean>("widgetFullscreen");
const widgetLanguageToggle = defineModel<boolean>("widgetLanguageToggle");
const widgetNotification = defineModel<boolean>("widgetNotification");
const widgetThemeToggle = defineModel<boolean>("widgetThemeToggle");
const widgetSidebarToggle = defineModel<boolean>("widgetSidebarToggle");
const widgetLockScreen = defineModel<boolean>("widgetLockScreen");
const appPreferencesButtonPosition = defineModel<string>("appPreferencesButtonPosition");
const widgetRefresh = defineModel<boolean>("widgetRefresh");
const positionItems = computed((): SelectOption[] => [
{
label: $t('preferences.position.auto'),
value: 'auto',
label: $t("preferences.position.auto"),
value: "auto",
},
{
label: $t('preferences.position.header'),
value: 'header',
label: $t("preferences.position.header"),
value: "header",
},
{
label: $t('preferences.position.fixed'),
value: 'fixed',
label: $t("preferences.position.fixed"),
value: "fixed",
},
]);
</script>
<template>
<SwitchItem v-model="widgetGlobalSearch">
{{ $t('preferences.widget.globalSearch') }}
{{ $t("preferences.widget.globalSearch") }}
</SwitchItem>
<SwitchItem v-model="widgetThemeToggle">
{{ $t('preferences.widget.themeToggle') }}
{{ $t("preferences.widget.themeToggle") }}
</SwitchItem>
<SwitchItem v-model="widgetLanguageToggle">
{{ $t('preferences.widget.languageToggle') }}
{{ $t("preferences.widget.languageToggle") }}
</SwitchItem>
<SwitchItem v-model="widgetFullscreen">
{{ $t('preferences.widget.fullscreen') }}
{{ $t("preferences.widget.fullscreen") }}
</SwitchItem>
<SwitchItem v-model="widgetNotification">
{{ $t('preferences.widget.notification') }}
{{ $t("preferences.widget.notification") }}
</SwitchItem>
<SwitchItem v-model="widgetLockScreen">
{{ $t('preferences.widget.lockScreen') }}
{{ $t("preferences.widget.lockScreen") }}
</SwitchItem>
<SwitchItem v-model="widgetSidebarToggle">
{{ $t('preferences.widget.sidebarToggle') }}
{{ $t("preferences.widget.sidebarToggle") }}
</SwitchItem>
<SwitchItem v-model="widgetRefresh">
{{ $t('preferences.widget.refresh') }}
{{ $t("preferences.widget.refresh") }}
</SwitchItem>
<SelectItem v-model="appPreferencesButtonPosition" :items="positionItems">
{{ $t('preferences.position.title') }}
{{ $t("preferences.position.title") }}
</SelectItem>
</template>
@@ -1,7 +1,7 @@
<script setup lang="ts">
import { computed } from 'vue';
import { $t } from '/@/vben/locales';
import { $t } from '/@/locales';
import { isWindowsOs } from '/@/vben/utils';
import SwitchItem from '../switch-item.vue';
@@ -5,7 +5,7 @@ import type { BuiltinThemeType } from '/@/vben/types';
import { computed, ref, watch } from 'vue';
import { UserRoundPen } from '/@/vben/icons';
import { $t } from '/@/vben/locales';
import { $t } from '/@/locales';
import { BUILT_IN_THEME_PRESETS } from '/@/vben/preferences';
import { convertToHsl, TinyColor } from '/@/vben/utils';
@@ -1,5 +1,5 @@
<script setup lang="ts">
import { $t } from '/@/vben/locales';
import { $t } from '/@/locales';
import SwitchItem from '../switch-item.vue';
@@ -4,7 +4,7 @@ import type { Component } from 'vue';
import type { ThemeModeType } from '/@/vben/types';
import { MoonStar, Sun, SunMoon } from '/@/vben/icons';
import { $t } from '/@/vben/locales';
import { $t } from '/@/locales';
import SwitchItem from '../switch-item.vue';
@@ -1,5 +1,5 @@
<script setup lang="ts">
import type { SupportedLanguagesType } from "/@/vben/locales";
import type { SupportedLanguagesType } from "/@/locales";
import type {
BreadcrumbStyleType,
BuiltinThemeType,
@@ -17,7 +17,7 @@ import type { SegmentedItem } from "/@/vben//shadcn-ui";
import { computed, ref } from "vue";
import { Copy, RotateCw, X } from "/@/vben/icons";
import { $t, loadLocaleMessages } from "/@/vben/locales";
import { $t, loadLocaleMessages } from "/@/locales";
import { clearPreferencesCache, preferences, resetPreferences, usePreferences } from "/@/vben/preferences";
import { useVbenDrawer } from "/@/vben//popup-ui";
@@ -2,7 +2,7 @@
import { computed } from "vue";
import { Settings } from "/@/vben/icons";
import { $t, loadLocaleMessages } from "/@/vben/locales";
import { $t, loadLocaleMessages } from "/@/locales";
import { preferences, updatePreferences } from "/@/vben/preferences";
import { capitalizeFirstLetter } from "/@/vben/utils";
@@ -2,7 +2,7 @@
import type { ThemeModeType } from "/@/vben/types";
import { MoonStar, Sun, SunMoon } from "/@/vben/icons";
import { $t } from "/@/vben/locales";
import { $t } from "/@/locales";
import { preferences, updatePreferences, usePreferences } from "/@/vben/preferences";
import { ToggleGroup, ToggleGroupItem, VbenTooltip } from "/@/vben//shadcn-ui";
@@ -7,7 +7,7 @@ import { computed, useTemplateRef, watch } from "vue";
import { useHoverToggle } from "/@/vben/hooks";
import { LockKeyhole, LogOut } from "/@/vben/icons";
import { $t } from "/@/vben/locales";
import { $t } from "/@/locales";
import { preferences, usePreferences } from "/@/vben/preferences";
import { useLockStore } from "/@/vben/stores";
import { isWindowsOs } from "/@/vben/utils";