@lobehub/chat 1.96.1 → 1.96.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +44 -0
- package/README.md +5 -0
- package/changelog/v1.json +14 -0
- package/locales/ar/models.json +9 -0
- package/locales/ar/providers.json +3 -0
- package/locales/bg-BG/models.json +9 -0
- package/locales/bg-BG/providers.json +3 -0
- package/locales/de-DE/models.json +9 -0
- package/locales/de-DE/providers.json +3 -0
- package/locales/en-US/models.json +9 -0
- package/locales/en-US/providers.json +3 -0
- package/locales/es-ES/models.json +9 -0
- package/locales/es-ES/providers.json +3 -0
- package/locales/fa-IR/models.json +9 -0
- package/locales/fa-IR/providers.json +3 -0
- package/locales/fr-FR/models.json +9 -0
- package/locales/fr-FR/providers.json +3 -0
- package/locales/it-IT/models.json +9 -0
- package/locales/it-IT/providers.json +3 -0
- package/locales/ja-JP/models.json +9 -0
- package/locales/ja-JP/providers.json +3 -0
- package/locales/ko-KR/models.json +9 -0
- package/locales/ko-KR/providers.json +3 -0
- package/locales/nl-NL/models.json +9 -0
- package/locales/nl-NL/providers.json +3 -0
- package/locales/pl-PL/models.json +9 -0
- package/locales/pl-PL/providers.json +3 -0
- package/locales/pt-BR/models.json +9 -0
- package/locales/pt-BR/providers.json +3 -0
- package/locales/ru-RU/models.json +9 -0
- package/locales/ru-RU/providers.json +3 -0
- package/locales/tr-TR/models.json +9 -0
- package/locales/tr-TR/providers.json +3 -0
- package/locales/vi-VN/models.json +9 -0
- package/locales/vi-VN/providers.json +3 -0
- package/locales/zh-CN/models.json +9 -0
- package/locales/zh-CN/providers.json +3 -0
- package/locales/zh-TW/models.json +9 -0
- package/locales/zh-TW/providers.json +3 -0
- package/package.json +7 -14
- package/src/app/[variants]/(auth)/next-auth/signin/AuthSignInBox.tsx +7 -7
- package/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatInput/Mobile/Files/FileItem/File.tsx +2 -3
- package/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatList/ChatItem/Thread.tsx +3 -3
- package/src/app/[variants]/(main)/chat/(workspace)/@topic/features/TopicListContent/SearchResult/index.tsx +2 -2
- package/src/app/[variants]/(main)/chat/(workspace)/@topic/features/TopicListContent/ThreadItem/Content.tsx +5 -5
- package/src/app/[variants]/(main)/chat/(workspace)/@topic/features/TopicListContent/TopicItem/DefaultContent.tsx +3 -6
- package/src/app/[variants]/(main)/chat/(workspace)/@topic/features/TopicListContent/TopicItem/TopicContent.tsx +4 -5
- package/src/app/[variants]/(main)/chat/@session/features/SessionSearchBar.tsx +11 -5
- package/src/app/[variants]/(main)/files/(content)/@menu/features/KnowledgeBase/Item/Content.tsx +4 -6
- package/src/app/[variants]/(main)/files/(content)/NotSupportClient.tsx +6 -5
- package/src/app/[variants]/(main)/files/[id]/Header.tsx +5 -5
- package/src/app/[variants]/(main)/repos/[id]/evals/dataset/DatasetDetail/index.tsx +3 -3
- package/src/app/[variants]/(main)/repos/[id]/evals/evaluation/EvaluationList/index.tsx +4 -3
- package/src/app/[variants]/(main)/repos/[id]/features/Menu/Head/index.tsx +4 -2
- package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/CustomModelOption.tsx +5 -5
- package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/ModelFetcher.tsx +3 -4
- package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/Option.tsx +3 -4
- package/src/app/[variants]/(main)/settings/provider/(list)/ProviderGrid/Card.tsx +5 -12
- package/src/app/[variants]/(main)/settings/provider/(list)/ProviderGrid/index.tsx +7 -8
- package/src/app/[variants]/(main)/settings/provider/ProviderMenu/List.tsx +5 -6
- package/src/app/[variants]/(main)/settings/provider/features/ModelList/DisabledModels.tsx +3 -4
- package/src/app/[variants]/(main)/settings/provider/features/ModelList/EnabledModelList/index.tsx +5 -6
- package/src/app/[variants]/(main)/settings/provider/features/ModelList/ModelItem.tsx +4 -6
- package/src/app/[variants]/(main)/settings/provider/features/ModelList/ModelTitle/index.tsx +6 -6
- package/src/app/[variants]/(main)/settings/provider/features/ModelList/SearchResult.tsx +3 -4
- package/src/app/[variants]/(main)/settings/sync/features/DeviceInfo/DeviceName.tsx +2 -3
- package/src/app/[variants]/(main)/settings/sync/features/DeviceInfo/index.tsx +3 -3
- package/src/app/[variants]/(main)/settings/sync/features/WebRTC/index.tsx +4 -4
- package/src/app/[variants]/oauth/consent/[uid]/ClientError.tsx +4 -6
- package/src/app/[variants]/oauth/consent/[uid]/Consent.tsx +7 -8
- package/src/app/[variants]/oauth/consent/[uid]/Login.tsx +4 -6
- package/src/app/[variants]/oauth/handoff/Client.tsx +6 -6
- package/src/components/InitProgress/index.tsx +3 -3
- package/src/components/Loading/CircleLoading/index.tsx +3 -4
- package/src/components/ModelSelect/index.tsx +3 -6
- package/src/components/StatisticCard/TitleWithPercentage.tsx +4 -7
- package/src/components/StatisticCard/index.tsx +6 -7
- package/src/config/aiModels/openrouter.ts +36 -0
- package/src/features/AgentSetting/AgentPlugin/index.tsx +4 -3
- package/src/features/ChatInput/Desktop/FilePreview/FileItem/index.tsx +3 -4
- package/src/features/ChatInput/components/UploadDetail/UploadStatus.tsx +10 -10
- package/src/features/ChatInput/components/UploadDetail/index.tsx +3 -3
- package/src/features/Conversation/Messages/Assistant/FileChunks/Item/index.tsx +2 -3
- package/src/features/Conversation/Messages/User/BelowMessage.tsx +3 -4
- package/src/features/Conversation/Messages/User/FileListViewer/Item.tsx +3 -3
- package/src/features/Conversation/components/History/index.tsx +2 -3
- package/src/features/DataImporter/ImportDetail.tsx +2 -4
- package/src/features/ElectronTitlebar/Connection/Waiting.tsx +3 -6
- package/src/features/FileManager/FileList/EmptyStatus.tsx +4 -4
- package/src/features/FileManager/FileList/index.tsx +3 -3
- package/src/features/FileManager/UploadDock/Item.tsx +11 -11
- package/src/features/FileManager/UploadDock/index.tsx +3 -4
- package/src/features/FileManager/index.tsx +3 -5
- package/src/tools/local-system/Render/ReadLocalFile/ReadFileView.tsx +5 -6
- package/src/tools/web-browsing/Portal/PageContent/index.tsx +4 -7
- package/src/tools/web-browsing/Portal/Search/ResultList/SearchItem/TitleExtra.tsx +3 -4
- package/src/tools/web-browsing/Portal/Search/ResultList/SearchItem/Video.tsx +4 -3
- package/src/tools/web-browsing/Portal/Search/ResultList/SearchItem/index.tsx +3 -3
- package/src/tools/web-browsing/Render/PageContent/Result.tsx +4 -6
- package/src/tools/web-browsing/Render/Search/SearchResult/SearchResultItem.tsx +3 -3
- package/src/tools/web-browsing/components/SearchBar.tsx +7 -7
@@ -1,7 +1,6 @@
|
|
1
1
|
'use client';
|
2
2
|
|
3
|
-
import { ActionIcon, ScrollShadow } from '@lobehub/ui';
|
4
|
-
import { Typography } from 'antd';
|
3
|
+
import { ActionIcon, ScrollShadow, Text } from '@lobehub/ui';
|
5
4
|
import isEqual from 'fast-deep-equal';
|
6
5
|
import { ArrowDownUpIcon } from 'lucide-react';
|
7
6
|
import { useState } from 'react';
|
@@ -39,9 +38,9 @@ const ProviderList = () => {
|
|
39
38
|
justify={'space-between'}
|
40
39
|
style={{ fontSize: 12, marginTop: 8 }}
|
41
40
|
>
|
42
|
-
<
|
41
|
+
<Text style={{ fontSize: 12 }} type={'secondary'}>
|
43
42
|
{t('menu.list.enabled')}
|
44
|
-
</
|
43
|
+
</Text>
|
45
44
|
<ActionIcon
|
46
45
|
icon={ArrowDownUpIcon}
|
47
46
|
onClick={() => {
|
@@ -63,9 +62,9 @@ const ProviderList = () => {
|
|
63
62
|
{enabledModelProviderList.map((item) => (
|
64
63
|
<ProviderItem {...item} key={item.id} />
|
65
64
|
))}
|
66
|
-
<
|
65
|
+
<Text style={{ fontSize: 12, marginTop: 8 }} type={'secondary'}>
|
67
66
|
{t('menu.list.disabled')}
|
68
|
-
</
|
67
|
+
</Text>
|
69
68
|
{disabledModelProviderList.map((item) => (
|
70
69
|
<ProviderItem {...item} key={item.id} />
|
71
70
|
))}
|
@@ -1,5 +1,4 @@
|
|
1
|
-
import { Button } from '@lobehub/ui';
|
2
|
-
import { Typography } from 'antd';
|
1
|
+
import { Button, Text } from '@lobehub/ui';
|
3
2
|
import isEqual from 'fast-deep-equal';
|
4
3
|
import { ChevronDown } from 'lucide-react';
|
5
4
|
import { memo, useState } from 'react';
|
@@ -22,9 +21,9 @@ const DisabledModels = memo(() => {
|
|
22
21
|
return (
|
23
22
|
disabledModels.length > 0 && (
|
24
23
|
<Flexbox>
|
25
|
-
<
|
24
|
+
<Text style={{ fontSize: 12, marginTop: 8 }} type={'secondary'}>
|
26
25
|
{t('providerModels.list.disabled')}
|
27
|
-
</
|
26
|
+
</Text>
|
28
27
|
{displayModels.map((item) => (
|
29
28
|
<ModelItem {...item} key={item.id} />
|
30
29
|
))}
|
package/src/app/[variants]/(main)/settings/provider/features/ModelList/EnabledModelList/index.tsx
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
import { ActionIcon } from '@lobehub/ui';
|
2
|
-
import { Typography } from 'antd';
|
1
|
+
import { ActionIcon, Text } from '@lobehub/ui';
|
3
2
|
import isEqual from 'fast-deep-equal';
|
4
3
|
import { ArrowDownUpIcon, ToggleLeft } from 'lucide-react';
|
5
4
|
import { useState } from 'react';
|
@@ -24,9 +23,9 @@ const EnabledModelList = () => {
|
|
24
23
|
return (
|
25
24
|
<>
|
26
25
|
<Flexbox horizontal justify={'space-between'}>
|
27
|
-
<
|
26
|
+
<Text style={{ fontSize: 12, marginTop: 8 }} type={'secondary'}>
|
28
27
|
{t('providerModels.list.enabled')}
|
29
|
-
</
|
28
|
+
</Text>
|
30
29
|
{!isEmpty && (
|
31
30
|
<Flexbox horizontal>
|
32
31
|
<ActionIcon
|
@@ -66,9 +65,9 @@ const EnabledModelList = () => {
|
|
66
65
|
</Flexbox>
|
67
66
|
{isEmpty ? (
|
68
67
|
<Center padding={12}>
|
69
|
-
<
|
68
|
+
<Text style={{ fontSize: 12 }} type={'secondary'}>
|
70
69
|
{t('providerModels.list.enabledEmpty')}
|
71
|
-
</
|
70
|
+
</Text>
|
72
71
|
</Center>
|
73
72
|
) : (
|
74
73
|
<Flexbox gap={2}>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { ModelIcon } from '@lobehub/icons';
|
2
|
-
import { ActionIcon, Tag, copyToClipboard } from '@lobehub/ui';
|
3
|
-
import { App, Switch
|
2
|
+
import { ActionIcon, Tag, Text, copyToClipboard } from '@lobehub/ui';
|
3
|
+
import { App, Switch } from 'antd';
|
4
4
|
import { createStyles, useTheme } from 'antd-style';
|
5
5
|
import { LucidePencil, TrashIcon } from 'lucide-react';
|
6
6
|
import { memo, use, useState } from 'react';
|
@@ -297,11 +297,9 @@ const ModelItem = memo<ModelItemProps>(
|
|
297
297
|
</Flexbox>
|
298
298
|
<Flexbox align={'baseline'} gap={8} horizontal>
|
299
299
|
{content.length > 0 && (
|
300
|
-
<
|
301
|
-
style={{ color: theme.colorTextSecondary, fontSize: 12, marginBottom: 0 }}
|
302
|
-
>
|
300
|
+
<Text style={{ color: theme.colorTextSecondary, fontSize: 12, marginBottom: 0 }}>
|
303
301
|
{content.join(' · ')}
|
304
|
-
</
|
302
|
+
</Text>
|
305
303
|
)}
|
306
304
|
</Flexbox>
|
307
305
|
</Flexbox>
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import { ActionIcon, Button, Dropdown } from '@lobehub/ui';
|
2
|
-
import { App, Skeleton, Space
|
1
|
+
import { ActionIcon, Button, Dropdown, Text } from '@lobehub/ui';
|
2
|
+
import { App, Skeleton, Space } from 'antd';
|
3
3
|
import { useTheme } from 'antd-style';
|
4
4
|
import { CircleX, EllipsisVertical, LucideRefreshCcwDot, PlusIcon } from 'lucide-react';
|
5
5
|
import { memo, useState } from 'react';
|
@@ -65,14 +65,14 @@ const ModelTitle = memo<ModelFetcherProps>(
|
|
65
65
|
>
|
66
66
|
<Flexbox align={'center'} gap={0} horizontal justify={'space-between'}>
|
67
67
|
<Flexbox align={'center'} gap={8} horizontal>
|
68
|
-
<
|
68
|
+
<Text strong style={{ fontSize: 16 }}>
|
69
69
|
{t('providerModels.list.title')}
|
70
|
-
</
|
70
|
+
</Text>
|
71
71
|
|
72
72
|
{isLoading ? (
|
73
73
|
<Skeleton.Button active style={{ height: 22 }} />
|
74
74
|
) : (
|
75
|
-
<
|
75
|
+
<Text style={{ fontSize: 12 }} type={'secondary'}>
|
76
76
|
<div style={{ display: 'flex', lineHeight: '24px' }}>
|
77
77
|
{t('providerModels.list.total', { count: totalModels })}
|
78
78
|
{hasRemoteModels && (
|
@@ -89,7 +89,7 @@ const ModelTitle = memo<ModelFetcherProps>(
|
|
89
89
|
/>
|
90
90
|
)}
|
91
91
|
</div>
|
92
|
-
</
|
92
|
+
</Text>
|
93
93
|
)}
|
94
94
|
</Flexbox>
|
95
95
|
{isLoading ? (
|
@@ -1,7 +1,6 @@
|
|
1
1
|
'use client';
|
2
2
|
|
3
|
-
import { ActionIcon } from '@lobehub/ui';
|
4
|
-
import { Typography } from 'antd';
|
3
|
+
import { ActionIcon, Text } from '@lobehub/ui';
|
5
4
|
import isEqual from 'fast-deep-equal';
|
6
5
|
import { ToggleRightIcon } from 'lucide-react';
|
7
6
|
import { memo, useState } from 'react';
|
@@ -26,9 +25,9 @@ const SearchResult = memo(() => {
|
|
26
25
|
return (
|
27
26
|
<>
|
28
27
|
<Flexbox horizontal justify={'space-between'}>
|
29
|
-
<
|
28
|
+
<Text style={{ fontSize: 12, marginTop: 8 }} type={'secondary'}>
|
30
29
|
{t('providerModels.list.searchResult', { count: filteredModels.length })}
|
31
|
-
</
|
30
|
+
</Text>
|
32
31
|
{!isEmpty && (
|
33
32
|
<Flexbox horizontal>
|
34
33
|
<ActionIcon
|
@@ -1,7 +1,6 @@
|
|
1
1
|
'use client';
|
2
2
|
|
3
|
-
import { EditableText } from '@lobehub/ui';
|
4
|
-
import { Typography } from 'antd';
|
3
|
+
import { EditableText, Text } from '@lobehub/ui';
|
5
4
|
import { memo, useState } from 'react';
|
6
5
|
import { useTranslation } from 'react-i18next';
|
7
6
|
import { Flexbox } from 'react-layout-kit';
|
@@ -39,7 +38,7 @@ const DeviceName = memo(() => {
|
|
39
38
|
}}
|
40
39
|
style={{ cursor: 'pointer' }}
|
41
40
|
>
|
42
|
-
<
|
41
|
+
<Text type={'secondary'}>{t('sync.device.deviceName.hint')}</Text>
|
43
42
|
</Flexbox>
|
44
43
|
)}
|
45
44
|
<EditableText
|
@@ -1,6 +1,6 @@
|
|
1
1
|
'use client';
|
2
2
|
|
3
|
-
import {
|
3
|
+
import { Text } from '@lobehub/ui';
|
4
4
|
import { createStyles } from 'antd-style';
|
5
5
|
import { rgba } from 'polished';
|
6
6
|
import { memo } from 'react';
|
@@ -65,9 +65,9 @@ const DeviceCard = memo<DeviceCardProps>(({ browser, os }) => {
|
|
65
65
|
<Flexbox className={styles.container} padding={4}>
|
66
66
|
<Flexbox horizontal paddingBlock={8} paddingInline={12}>
|
67
67
|
<div>
|
68
|
-
<
|
68
|
+
<Text strong style={{ fontSize: 18 }}>
|
69
69
|
{t('sync.device.title')}
|
70
|
-
</
|
70
|
+
</Text>
|
71
71
|
</div>
|
72
72
|
</Flexbox>
|
73
73
|
<Flexbox
|
@@ -1,8 +1,8 @@
|
|
1
1
|
'use client';
|
2
2
|
|
3
3
|
import { SiWebrtc } from '@icons-pack/react-simple-icons';
|
4
|
-
import { Form, type FormGroupItemType, Input, InputPassword, Tooltip } from '@lobehub/ui';
|
5
|
-
import { Form as AntForm, Switch
|
4
|
+
import { Form, type FormGroupItemType, Input, InputPassword, Text, Tooltip } from '@lobehub/ui';
|
5
|
+
import { Form as AntForm, Switch } from 'antd';
|
6
6
|
import { memo } from 'react';
|
7
7
|
import { useTranslation } from 'react-i18next';
|
8
8
|
import { Flexbox } from 'react-layout-kit';
|
@@ -80,9 +80,9 @@ const WebRTC = memo(() => {
|
|
80
80
|
<SiWebrtc style={{ flex: 'none' }} />
|
81
81
|
{t('sync.webrtc.title')}
|
82
82
|
</Flexbox>
|
83
|
-
<
|
83
|
+
<Text style={{ fontWeight: 'normal' }} type={'secondary'}>
|
84
84
|
{t('sync.webrtc.desc')}
|
85
|
-
</
|
85
|
+
</Text>
|
86
86
|
</Flexbox>
|
87
87
|
),
|
88
88
|
};
|
@@ -1,6 +1,6 @@
|
|
1
1
|
'use client';
|
2
2
|
|
3
|
-
import {
|
3
|
+
import { Text } from '@lobehub/ui';
|
4
4
|
import { createStyles } from 'antd-style';
|
5
5
|
import React, { memo } from 'react';
|
6
6
|
import { Center } from 'react-layout-kit';
|
@@ -12,8 +12,6 @@ interface ClientProps {
|
|
12
12
|
};
|
13
13
|
}
|
14
14
|
|
15
|
-
const { Title, Paragraph } = Typography;
|
16
|
-
|
17
15
|
const useStyles = createStyles(({ css, token }) => ({
|
18
16
|
container: css`
|
19
17
|
width: 100%;
|
@@ -32,10 +30,10 @@ const ConsentClientError = memo<ClientProps>(({ error }) => {
|
|
32
30
|
return (
|
33
31
|
<Center className={styles.container}>
|
34
32
|
<div className={styles.error}>
|
35
|
-
<
|
33
|
+
<Text as={'h2'} style={{ color: 'inherit' }}>
|
36
34
|
{error.title}
|
37
|
-
</
|
38
|
-
<
|
35
|
+
</Text>
|
36
|
+
<Text style={{ color: 'inherit' }}>{error.message}</Text>
|
39
37
|
</div>
|
40
38
|
</Center>
|
41
39
|
);
|
@@ -1,7 +1,7 @@
|
|
1
1
|
'use client';
|
2
2
|
|
3
|
-
import { Button } from '@lobehub/ui';
|
4
|
-
import { Card, Divider
|
3
|
+
import { Button, Text } from '@lobehub/ui';
|
4
|
+
import { Card, Divider } from 'antd';
|
5
5
|
import { createStyles } from 'antd-style';
|
6
6
|
import { memo } from 'react';
|
7
7
|
import { useTranslation } from 'react-i18next';
|
@@ -22,8 +22,6 @@ interface ClientProps {
|
|
22
22
|
uid: string;
|
23
23
|
}
|
24
24
|
|
25
|
-
const { Title, Text, Paragraph } = Typography;
|
26
|
-
|
27
25
|
const useStyles = createStyles(({ css, token }) => ({
|
28
26
|
authButton: css`
|
29
27
|
width: 100%;
|
@@ -106,6 +104,7 @@ const useStyles = createStyles(({ css, token }) => ({
|
|
106
104
|
`,
|
107
105
|
title: css`
|
108
106
|
margin-block-end: ${token.marginLG}px;
|
107
|
+
font-size: 24px;
|
109
108
|
color: ${token.colorTextBase};
|
110
109
|
text-align: center;
|
111
110
|
`,
|
@@ -132,17 +131,17 @@ const ConsentClient = memo<ClientProps>(
|
|
132
131
|
isFirstParty={clientMetadata.isFirstParty}
|
133
132
|
logoUrl={clientMetadata.logo}
|
134
133
|
/>
|
135
|
-
<
|
134
|
+
<Text as={'h3'} className={styles.title}>
|
136
135
|
{t('consent.title', { clientName: clientDisplayName })}
|
137
|
-
</
|
136
|
+
</Text>
|
138
137
|
</Flexbox>
|
139
138
|
<Card className={styles.card}>
|
140
139
|
<Flexbox gap={8}>
|
141
140
|
<Flexbox gap={12}>
|
142
|
-
<
|
141
|
+
<Text>{t('consent.description', { clientName: clientDisplayName })}</Text>
|
143
142
|
|
144
143
|
<div className={styles.scopes}>
|
145
|
-
<
|
144
|
+
<Text type={'secondary'}>{t('consent.permissionsTitle')}</Text>
|
146
145
|
{scopes.map((scope) => (
|
147
146
|
<div className={styles.scope} key={scope}>
|
148
147
|
<Text>{getScopeDescription(scope, t)}</Text>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
'use client';
|
2
2
|
|
3
|
-
import { Avatar, Button } from '@lobehub/ui';
|
4
|
-
import { Card, Skeleton
|
3
|
+
import { Avatar, Button, Text } from '@lobehub/ui';
|
4
|
+
import { Card, Skeleton } from 'antd';
|
5
5
|
import { createStyles } from 'antd-style';
|
6
6
|
import React, { memo } from 'react';
|
7
7
|
import { useTranslation } from 'react-i18next';
|
@@ -21,8 +21,6 @@ interface LoginConfirmProps {
|
|
21
21
|
uid: string;
|
22
22
|
}
|
23
23
|
|
24
|
-
const { Title } = Typography;
|
25
|
-
|
26
24
|
const useStyles = createStyles(({ css, token }) => ({
|
27
25
|
authButton: css`
|
28
26
|
width: 100%;
|
@@ -75,9 +73,9 @@ const LoginConfirmClient = memo<LoginConfirmProps>(({ uid, clientMetadata }) =>
|
|
75
73
|
logoUrl={clientMetadata.logo}
|
76
74
|
/>
|
77
75
|
</Flexbox>
|
78
|
-
<
|
76
|
+
<Text as={'h3'} className={styles.title}>
|
79
77
|
{titleText}
|
80
|
-
</
|
78
|
+
</Text>
|
81
79
|
|
82
80
|
<Card className={styles.card}>
|
83
81
|
<Flexbox gap={64}>
|
@@ -1,14 +1,13 @@
|
|
1
1
|
'use client';
|
2
2
|
|
3
|
-
import {
|
3
|
+
import { Text } from '@lobehub/ui';
|
4
|
+
import { Spin } from 'antd';
|
4
5
|
import { createStyles } from 'antd-style';
|
5
6
|
import { useSearchParams } from 'next/navigation';
|
6
7
|
import React, { useEffect, useState } from 'react';
|
7
8
|
import { useTranslation } from 'react-i18next';
|
8
9
|
import { Center, Flexbox } from 'react-layout-kit';
|
9
10
|
|
10
|
-
const { Title, Paragraph } = Typography;
|
11
|
-
|
12
11
|
const useStyles = createStyles(({ css, token }) => ({
|
13
12
|
container: css`
|
14
13
|
width: 100%;
|
@@ -30,6 +29,7 @@ const useStyles = createStyles(({ css, token }) => ({
|
|
30
29
|
`,
|
31
30
|
title: css`
|
32
31
|
margin-block-end: ${token.marginLG}px;
|
32
|
+
font-size: 24px;
|
33
33
|
`,
|
34
34
|
}));
|
35
35
|
|
@@ -86,10 +86,10 @@ const AuthHandoffPage = () => {
|
|
86
86
|
<Center className={styles.container} gap={12}>
|
87
87
|
{!isError && <Spin size="large" />}
|
88
88
|
<Flexbox align="center" className={styles.content} gap={16}>
|
89
|
-
<
|
89
|
+
<Text as={'h3'} className={styles.title}>
|
90
90
|
{status.title}
|
91
|
-
</
|
92
|
-
<
|
91
|
+
</Text>
|
92
|
+
<Text className={styles.message}>{status.desc}</Text>
|
93
93
|
</Flexbox>
|
94
94
|
</Center>
|
95
95
|
);
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import { Icon } from '@lobehub/ui';
|
2
|
-
import { Progress
|
1
|
+
import { Icon, Text } from '@lobehub/ui';
|
2
|
+
import { Progress } from 'antd';
|
3
3
|
import { useTheme } from 'antd-style';
|
4
4
|
import { Loader2 } from 'lucide-react';
|
5
5
|
import { ReactNode, memo } from 'react';
|
@@ -33,7 +33,7 @@ const InitProgress = memo<InitingProps>(({ activeStage, stages }) => {
|
|
33
33
|
/>
|
34
34
|
<Flexbox align={'center'} gap={4} horizontal>
|
35
35
|
{stage?.icon ? stage?.icon : <Icon icon={Loader2} spin />}
|
36
|
-
<
|
36
|
+
<Text type={'secondary'}>{stage?.text}</Text>
|
37
37
|
</Flexbox>
|
38
38
|
</Center>
|
39
39
|
);
|
@@ -1,7 +1,6 @@
|
|
1
1
|
'use client';
|
2
2
|
|
3
|
-
import { Icon } from '@lobehub/ui';
|
4
|
-
import { Typography } from 'antd';
|
3
|
+
import { Icon, Text } from '@lobehub/ui';
|
5
4
|
import { LoaderCircle } from 'lucide-react';
|
6
5
|
import { useTranslation } from 'react-i18next';
|
7
6
|
import { Center, Flexbox } from 'react-layout-kit';
|
@@ -14,9 +13,9 @@ export default () => {
|
|
14
13
|
<div>
|
15
14
|
<Icon icon={LoaderCircle} size={'large'} spin />
|
16
15
|
</div>
|
17
|
-
<
|
16
|
+
<Text style={{ letterSpacing: '0.1em' }} type={'secondary'}>
|
18
17
|
{t('loading')}
|
19
|
-
</
|
18
|
+
</Text>
|
20
19
|
</Flexbox>
|
21
20
|
</Center>
|
22
21
|
);
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { IconAvatarProps, ModelIcon, ProviderIcon } from '@lobehub/icons';
|
2
|
-
import { Avatar, Icon, Tag, Tooltip } from '@lobehub/ui';
|
3
|
-
import { Typography } from 'antd';
|
2
|
+
import { Avatar, Icon, Tag, Text, Tooltip } from '@lobehub/ui';
|
4
3
|
import { createStyles, useResponsive } from 'antd-style';
|
5
4
|
import {
|
6
5
|
Infinity,
|
@@ -188,11 +187,9 @@ export const ModelItemRender = memo<ModelItemRenderProps>(({ showInfoTag = true,
|
|
188
187
|
style={{ flexShrink: 1, minWidth: 0, overflow: 'hidden' }}
|
189
188
|
>
|
190
189
|
<ModelIcon model={model.id} size={20} />
|
191
|
-
<
|
192
|
-
style={mobile ? { maxWidth: '60vw', overflowX: 'auto', whiteSpace: 'nowrap' } : {}}
|
193
|
-
>
|
190
|
+
<Text style={mobile ? { maxWidth: '60vw', overflowX: 'auto', whiteSpace: 'nowrap' } : {}}>
|
194
191
|
{model.displayName || model.id}
|
195
|
-
</
|
192
|
+
</Text>
|
196
193
|
</Flexbox>
|
197
194
|
{showInfoTag && <ModelInfoTags {...model} />}
|
198
195
|
</Flexbox>
|
@@ -1,13 +1,10 @@
|
|
1
|
-
import { Tag } from '@lobehub/ui';
|
2
|
-
import { Typography } from 'antd';
|
1
|
+
import { Tag, Text } from '@lobehub/ui';
|
3
2
|
import { useTheme } from 'antd-style';
|
4
3
|
import { CSSProperties, memo } from 'react';
|
5
4
|
import { Flexbox } from 'react-layout-kit';
|
6
5
|
|
7
6
|
import { calcGrowthPercentage } from './growthPercentage';
|
8
7
|
|
9
|
-
const { Title } = Typography;
|
10
|
-
|
11
8
|
interface TitleWithPercentageProps {
|
12
9
|
count?: number;
|
13
10
|
inverseColor?: boolean;
|
@@ -43,9 +40,9 @@ const TitleWithPercentage = memo<TitleWithPercentageProps>(
|
|
43
40
|
position: 'inherit',
|
44
41
|
}}
|
45
42
|
>
|
46
|
-
<
|
43
|
+
<Text
|
44
|
+
as={'h2'}
|
47
45
|
ellipsis={{ rows: 1, tooltip: title }}
|
48
|
-
level={2}
|
49
46
|
style={{
|
50
47
|
fontSize: 'inherit',
|
51
48
|
fontWeight: 'inherit',
|
@@ -55,7 +52,7 @@ const TitleWithPercentage = memo<TitleWithPercentageProps>(
|
|
55
52
|
}}
|
56
53
|
>
|
57
54
|
{title}
|
58
|
-
</
|
55
|
+
</Text>
|
59
56
|
{count && prvCount && percentage && percentage !== 0 ? (
|
60
57
|
<Tag
|
61
58
|
style={{
|
@@ -2,13 +2,12 @@ import {
|
|
2
2
|
StatisticCard as AntdStatisticCard,
|
3
3
|
StatisticCardProps as AntdStatisticCardProps,
|
4
4
|
} from '@ant-design/pro-components';
|
5
|
-
import {
|
5
|
+
import { Text } from '@lobehub/ui';
|
6
|
+
import { Spin } from 'antd';
|
6
7
|
import { createStyles, useResponsive } from 'antd-style';
|
7
8
|
import { adjustHue } from 'polished';
|
8
9
|
import { memo } from 'react';
|
9
10
|
|
10
|
-
const { Title } = Typography;
|
11
|
-
|
12
11
|
const useStyles = createStyles(
|
13
12
|
({ isDarkMode, css, token, prefixCls, responsive }, highlight: string = '#000') => ({
|
14
13
|
card: css`
|
@@ -182,9 +181,9 @@ const StatisticCard = memo<StatisticCardProps>(
|
|
182
181
|
extra={loading ? <Spin percent={'auto'} size={'small'} /> : extra}
|
183
182
|
title={
|
184
183
|
typeof title === 'string' ? (
|
185
|
-
<
|
186
|
-
|
187
|
-
|
184
|
+
<Text
|
185
|
+
as={'h2'}
|
186
|
+
ellipsis={{ rows: 1, tooltip: true }}
|
188
187
|
style={{
|
189
188
|
fontSize: 'inherit',
|
190
189
|
fontWeight: 'inherit',
|
@@ -194,7 +193,7 @@ const StatisticCard = memo<StatisticCardProps>(
|
|
194
193
|
}}
|
195
194
|
>
|
196
195
|
{title}
|
197
|
-
</
|
196
|
+
</Text>
|
198
197
|
) : (
|
199
198
|
title
|
200
199
|
)
|
@@ -227,6 +227,24 @@ const openrouterChatModels: AIChatModelCard[] = [
|
|
227
227
|
},
|
228
228
|
type: 'chat',
|
229
229
|
},
|
230
|
+
{
|
231
|
+
abilities: {
|
232
|
+
functionCall: true,
|
233
|
+
reasoning: true,
|
234
|
+
vision: true,
|
235
|
+
},
|
236
|
+
contextWindowTokens: 1_048_576,
|
237
|
+
description:
|
238
|
+
'Gemini 2.5 Pro 是 Google 最先进的思维模型,能够对代码、数学和STEM领域的复杂问题进行推理,以及使用长上下文分析大型数据集、代码库和文档。',
|
239
|
+
displayName: 'Gemini 2.5 Pro',
|
240
|
+
id: 'google/gemini-2.5-pro',
|
241
|
+
maxOutput: 65_536,
|
242
|
+
pricing: {
|
243
|
+
input: 1.25,
|
244
|
+
output: 10,
|
245
|
+
},
|
246
|
+
type: 'chat',
|
247
|
+
},
|
230
248
|
{
|
231
249
|
abilities: {
|
232
250
|
functionCall: true,
|
@@ -245,6 +263,24 @@ const openrouterChatModels: AIChatModelCard[] = [
|
|
245
263
|
},
|
246
264
|
type: 'chat',
|
247
265
|
},
|
266
|
+
{
|
267
|
+
abilities: {
|
268
|
+
functionCall: true,
|
269
|
+
reasoning: true,
|
270
|
+
vision: true,
|
271
|
+
},
|
272
|
+
contextWindowTokens: 1_048_576,
|
273
|
+
description:
|
274
|
+
'Gemini 2.5 Flash 是 Google 最先进的主力模型,专为高级推理、编码、数学和科学任务而设计。它包含内置的“思考”能力,使其能够提供具有更高准确性和细致上下文处理的响应。\n\n注意:此模型有两个变体:思考和非思考。输出定价根据思考能力是否激活而有显著差异。如果您选择标准变体(不带“:thinking”后缀),模型将明确避免生成思考令牌。\n\n要利用思考能力并接收思考令牌,您必须选择“:thinking”变体,这将产生更高的思考输出定价。\n\n此外,Gemini 2.5 Flash 可通过“推理最大令牌数”参数进行配置,如文档中所述 (https://openrouter.ai/docs/use-cases/reasoning-tokens#max-tokens-for-reasoning)。',
|
275
|
+
displayName: 'Gemini 2.5 Flash',
|
276
|
+
id: 'google/gemini-2.5-flash',
|
277
|
+
maxOutput: 65_535,
|
278
|
+
pricing: {
|
279
|
+
input: 0.15,
|
280
|
+
output: 0.6,
|
281
|
+
},
|
282
|
+
type: 'chat',
|
283
|
+
},
|
248
284
|
{
|
249
285
|
abilities: {
|
250
286
|
functionCall: true,
|
@@ -1,9 +1,10 @@
|
|
1
1
|
'use client';
|
2
2
|
|
3
3
|
import { Avatar, Button, Form, type FormGroupItemType, Tag, Tooltip } from '@lobehub/ui';
|
4
|
-
import { Empty, Space, Switch
|
4
|
+
import { Empty, Space, Switch } from 'antd';
|
5
5
|
import isEqual from 'fast-deep-equal';
|
6
6
|
import { LucideTrash2, Store } from 'lucide-react';
|
7
|
+
import Link from 'next/link';
|
7
8
|
import { memo, useState } from 'react';
|
8
9
|
import { Trans, useTranslation } from 'react-i18next';
|
9
10
|
import { Center, Flexbox } from 'react-layout-kit';
|
@@ -130,7 +131,7 @@ const AgentPlugin = memo(() => {
|
|
130
131
|
description={
|
131
132
|
<Trans i18nKey={'plugin.empty'} ns={'setting'}>
|
132
133
|
暂无安装插件,
|
133
|
-
<
|
134
|
+
<Link
|
134
135
|
href={'/'}
|
135
136
|
onClick={(e) => {
|
136
137
|
e.preventDefault();
|
@@ -138,7 +139,7 @@ const AgentPlugin = memo(() => {
|
|
138
139
|
}}
|
139
140
|
>
|
140
141
|
前往插件市场
|
141
|
-
</
|
142
|
+
</Link>
|
142
143
|
安装
|
143
144
|
</Trans>
|
144
145
|
}
|
@@ -1,5 +1,4 @@
|
|
1
|
-
import { ActionIcon } from '@lobehub/ui';
|
2
|
-
import { Typography } from 'antd';
|
1
|
+
import { ActionIcon, Text } from '@lobehub/ui';
|
3
2
|
import { createStyles } from 'antd-style';
|
4
3
|
import { Trash2Icon } from 'lucide-react';
|
5
4
|
import { memo } from 'react';
|
@@ -64,9 +63,9 @@ const FileItem = memo<FileItemProps>((props) => {
|
|
64
63
|
<Content {...props} />
|
65
64
|
</Center>
|
66
65
|
<Flexbox flex={1} gap={4} style={{ paddingBottom: 4, paddingInline: 4 }}>
|
67
|
-
<
|
66
|
+
<Text ellipsis={{ tooltip: true }} style={{ fontSize: 12, maxWidth: 100 }}>
|
68
67
|
{file.name}
|
69
|
-
</
|
68
|
+
</Text>
|
70
69
|
|
71
70
|
<UploadDetail size={file.size} status={status} tasks={tasks} uploadState={uploadState} />
|
72
71
|
</Flexbox>
|