feat: lighten ai agent admin frontend

This commit is contained in:
2026-06-11 18:03:43 +08:00
parent ecf29e2278
commit 15229cc5ab
316 changed files with 898 additions and 60944 deletions
@@ -1,27 +1,11 @@
<script lang="ts" setup>
import { computed, defineAsyncComponent, useSlots } from 'vue';
import { preferences, usePreferences } from '@vben/preferences';
import { useAccessStore } from '@vben/stores';
import { preferences } from '@vben/preferences';
const GlobalSearch = defineAsyncComponent(
() => import('../../widgets/global-search/global-search.vue'),
);
const LanguageToggle = defineAsyncComponent(
() => import('../../widgets/language-toggle.vue'),
);
const ThemeToggle = defineAsyncComponent(
() => import('../../widgets/theme-toggle/theme-toggle.vue'),
);
const TimezoneButton = defineAsyncComponent(
() => import('../../widgets/timezone/timezone-button.vue'),
);
const VbenFullScreen = defineAsyncComponent(
() =>
import(
'../../../../../@core/ui-kit/shadcn-ui/src/components/full-screen/full-screen.vue'
),
);
interface Props {
/**
@@ -40,18 +24,10 @@ withDefaults(defineProps<Props>(), {
const REFERENCE_VALUE = 50;
const accessStore = useAccessStore();
const { globalSearchShortcutKey } = usePreferences();
const slots = useSlots();
const rightSlots = computed(() => {
const list = [{ index: REFERENCE_VALUE + 100, name: 'user-dropdown' }];
if (preferences.widget.globalSearch) {
list.push({
index: REFERENCE_VALUE,
name: 'global-search',
});
}
if (preferences.widget.themeToggle) {
list.push({
@@ -59,24 +35,6 @@ const rightSlots = computed(() => {
name: 'theme-toggle',
});
}
if (preferences.widget.languageToggle) {
list.push({
index: REFERENCE_VALUE + 30,
name: 'language-toggle',
});
}
if (preferences.widget.timezone) {
list.push({
index: REFERENCE_VALUE + 40,
name: 'timezone',
});
}
if (preferences.widget.fullscreen) {
list.push({
index: REFERENCE_VALUE + 50,
name: 'fullscreen',
});
}
if (preferences.widget.notification) {
list.push({
index: REFERENCE_VALUE + 60,
@@ -133,26 +91,9 @@ const leftSlots = computed(() => {
<div class="flex h-full min-w-0 flex-shrink-0 items-center">
<template v-for="slot in rightSlots" :key="slot.name">
<slot :name="slot.name">
<template v-if="slot.name === 'global-search'">
<GlobalSearch
:enable-shortcut-key="globalSearchShortcutKey"
:menus="accessStore.accessMenus"
class="mr-1 sm:mr-4"
/>
</template>
<template v-else-if="slot.name === 'theme-toggle'">
<template v-if="slot.name === 'theme-toggle'">
<ThemeToggle class="mr-1 mt-[2px]" />
</template>
<template v-else-if="slot.name === 'language-toggle'">
<LanguageToggle class="mr-1" />
</template>
<template v-else-if="slot.name === 'fullscreen'">
<VbenFullScreen class="mr-1" />
</template>
<template v-else-if="slot.name === 'timezone'">
<TimezoneButton class="mr-1 mt-[2px]" />
</template>
</slot>
</template>
</div>