Migration Summary: ant-design-vue → antdv-next Core Changes package.json - Replaced "ant-design-vue": "catalog:" with "antdv-next": "catalog:" bootstrap.ts - Changed @vben/styles/antd to @vben/styles/antdv-next adapter/component/index.ts - Major rewrite: Removed dynamic defineAsyncComponent imports from ant-design-vue/es/... Added static imports from antdv-next main entry Renamed RangePicker → DateRangePicker, Textarea → TextArea Defined local types for Rule, Locale, UploadRequestOption, FileType, Key Bulk Import Replacements (100+ files) from ant-design-vue → from antdv-next from ant-design-vue/es/locale/... → from antdv-next/locale/... from ant-design-vue/es/... → removed (use main entry) from ant-design-vue/lib/... → removed (use main entry) Component API Differences Handled ant-design-vue antdv-next Files affected Form.Item FormItem 475 references Tabs.TabPane TabPane 240 references Select.Option SelectOption 151 references Descriptions.Item DescriptionsItem 2 references Timeline.Item TimelineItem 2 references Radio.Group RadioGroup 20 references Collapse.Panel CollapsePanel 9 references Layout.Content/Sider/Header/Footer LayoutContent/LayoutSider/... 14 references Dropdown#overlay slot Dropdown#popupRender 6 references RangePicker DateRangePicker 15+ references Textarea TextArea 37 references ButtonGroup Space (fallback) 12 references Known Issues (requires manual attention) List component - Not available in antdv-next. 4 files have TODO comments where List/List.Item/List.Item.Meta are used @form-create/ant-design-vue - Kept as-is (compatible with antdv-next at runtime) Type errors - ~366 type errors remain (vs 189 in web-antd), mostly pre-existing business logic issues and minor API differences
40 lines
838 B
Vue
40 lines
838 B
Vue
<script lang="ts" setup>
|
|
import { computed } from 'vue';
|
|
|
|
import { useAntdDesignTokens } from '@vben/hooks';
|
|
import { preferences, usePreferences } from '@vben/preferences';
|
|
|
|
import { App, ConfigProvider, theme } from 'antdv-next';
|
|
|
|
import { antdLocale } from '#/locales';
|
|
|
|
defineOptions({ name: 'App' });
|
|
|
|
const { isDark } = usePreferences();
|
|
const { tokens } = useAntdDesignTokens();
|
|
|
|
const tokenTheme = computed(() => {
|
|
const algorithm = isDark.value
|
|
? [theme.darkAlgorithm]
|
|
: [theme.defaultAlgorithm];
|
|
|
|
// antd 紧凑模式算法
|
|
if (preferences.app.compact) {
|
|
algorithm.push(theme.compactAlgorithm);
|
|
}
|
|
|
|
return {
|
|
algorithm,
|
|
token: tokens,
|
|
};
|
|
});
|
|
</script>
|
|
|
|
<template>
|
|
<ConfigProvider :locale="antdLocale" :theme="tokenTheme">
|
|
<App>
|
|
<RouterView />
|
|
</App>
|
|
</ConfigProvider>
|
|
</template>
|