|
1 |
| -import { Icon } from '@lobehub/ui'; |
| 1 | +import { ActionIcon, Icon } from '@lobehub/ui'; |
2 | 2 | import { Dropdown } from 'antd';
|
3 | 3 | import { createStyles } from 'antd-style';
|
4 | 4 | import type { ItemType } from 'antd/es/menu/interface';
|
5 |
| -import { LucideArrowRight } from 'lucide-react'; |
| 5 | +import { LucideArrowRight, LucideBolt } from 'lucide-react'; |
| 6 | +import Link from 'next/link'; |
6 | 7 | import { useRouter } from 'next/navigation';
|
7 | 8 | import { PropsWithChildren, memo, useMemo } from 'react';
|
8 | 9 | import { useTranslation } from 'react-i18next';
|
@@ -86,17 +87,45 @@ const ModelSwitchPanel = memo<PropsWithChildren>(({ children }) => {
|
86 | 87 | return items;
|
87 | 88 | };
|
88 | 89 |
|
| 90 | + if (enabledList.length === 0) |
| 91 | + return [ |
| 92 | + { |
| 93 | + key: `no-provider`, |
| 94 | + label: ( |
| 95 | + <Flexbox gap={8} horizontal style={{ color: theme.colorTextTertiary }}> |
| 96 | + {t('ModelSwitchPanel.emptyProvider')} |
| 97 | + <Icon icon={LucideArrowRight} /> |
| 98 | + </Flexbox> |
| 99 | + ), |
| 100 | + onClick: () => { |
| 101 | + router.push(isDeprecatedEdition ? '/settings/llm' : `/settings/provider`); |
| 102 | + }, |
| 103 | + }, |
| 104 | + ]; |
| 105 | + |
89 | 106 | // otherwise show with provider group
|
90 | 107 | return enabledList.map((provider) => ({
|
91 | 108 | children: getModelItems(provider),
|
92 | 109 | key: provider.id,
|
93 | 110 | label: (
|
94 |
| - <ProviderItemRender |
95 |
| - logo={provider.logo} |
96 |
| - name={provider.name} |
97 |
| - provider={provider.id} |
98 |
| - source={provider.source} |
99 |
| - /> |
| 111 | + <Flexbox horizontal justify="space-between"> |
| 112 | + <ProviderItemRender |
| 113 | + logo={provider.logo} |
| 114 | + name={provider.name} |
| 115 | + provider={provider.id} |
| 116 | + source={provider.source} |
| 117 | + /> |
| 118 | + <Link |
| 119 | + href={isDeprecatedEdition ? '/settings/llm' : `/settings/provider/${provider.id}`} |
| 120 | + prefetch={false} |
| 121 | + > |
| 122 | + <ActionIcon |
| 123 | + icon={LucideBolt} |
| 124 | + size={'small'} |
| 125 | + title={t('ModelSwitchPanel.goToSettings')} |
| 126 | + /> |
| 127 | + </Link> |
| 128 | + </Flexbox> |
100 | 129 | ),
|
101 | 130 | type: 'group',
|
102 | 131 | }));
|
|
0 commit comments