@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.
Files changed (101) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +5 -0
  3. package/changelog/v1.json +14 -0
  4. package/locales/ar/models.json +9 -0
  5. package/locales/ar/providers.json +3 -0
  6. package/locales/bg-BG/models.json +9 -0
  7. package/locales/bg-BG/providers.json +3 -0
  8. package/locales/de-DE/models.json +9 -0
  9. package/locales/de-DE/providers.json +3 -0
  10. package/locales/en-US/models.json +9 -0
  11. package/locales/en-US/providers.json +3 -0
  12. package/locales/es-ES/models.json +9 -0
  13. package/locales/es-ES/providers.json +3 -0
  14. package/locales/fa-IR/models.json +9 -0
  15. package/locales/fa-IR/providers.json +3 -0
  16. package/locales/fr-FR/models.json +9 -0
  17. package/locales/fr-FR/providers.json +3 -0
  18. package/locales/it-IT/models.json +9 -0
  19. package/locales/it-IT/providers.json +3 -0
  20. package/locales/ja-JP/models.json +9 -0
  21. package/locales/ja-JP/providers.json +3 -0
  22. package/locales/ko-KR/models.json +9 -0
  23. package/locales/ko-KR/providers.json +3 -0
  24. package/locales/nl-NL/models.json +9 -0
  25. package/locales/nl-NL/providers.json +3 -0
  26. package/locales/pl-PL/models.json +9 -0
  27. package/locales/pl-PL/providers.json +3 -0
  28. package/locales/pt-BR/models.json +9 -0
  29. package/locales/pt-BR/providers.json +3 -0
  30. package/locales/ru-RU/models.json +9 -0
  31. package/locales/ru-RU/providers.json +3 -0
  32. package/locales/tr-TR/models.json +9 -0
  33. package/locales/tr-TR/providers.json +3 -0
  34. package/locales/vi-VN/models.json +9 -0
  35. package/locales/vi-VN/providers.json +3 -0
  36. package/locales/zh-CN/models.json +9 -0
  37. package/locales/zh-CN/providers.json +3 -0
  38. package/locales/zh-TW/models.json +9 -0
  39. package/locales/zh-TW/providers.json +3 -0
  40. package/package.json +7 -14
  41. package/src/app/[variants]/(auth)/next-auth/signin/AuthSignInBox.tsx +7 -7
  42. package/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatInput/Mobile/Files/FileItem/File.tsx +2 -3
  43. package/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatList/ChatItem/Thread.tsx +3 -3
  44. package/src/app/[variants]/(main)/chat/(workspace)/@topic/features/TopicListContent/SearchResult/index.tsx +2 -2
  45. package/src/app/[variants]/(main)/chat/(workspace)/@topic/features/TopicListContent/ThreadItem/Content.tsx +5 -5
  46. package/src/app/[variants]/(main)/chat/(workspace)/@topic/features/TopicListContent/TopicItem/DefaultContent.tsx +3 -6
  47. package/src/app/[variants]/(main)/chat/(workspace)/@topic/features/TopicListContent/TopicItem/TopicContent.tsx +4 -5
  48. package/src/app/[variants]/(main)/chat/@session/features/SessionSearchBar.tsx +11 -5
  49. package/src/app/[variants]/(main)/files/(content)/@menu/features/KnowledgeBase/Item/Content.tsx +4 -6
  50. package/src/app/[variants]/(main)/files/(content)/NotSupportClient.tsx +6 -5
  51. package/src/app/[variants]/(main)/files/[id]/Header.tsx +5 -5
  52. package/src/app/[variants]/(main)/repos/[id]/evals/dataset/DatasetDetail/index.tsx +3 -3
  53. package/src/app/[variants]/(main)/repos/[id]/evals/evaluation/EvaluationList/index.tsx +4 -3
  54. package/src/app/[variants]/(main)/repos/[id]/features/Menu/Head/index.tsx +4 -2
  55. package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/CustomModelOption.tsx +5 -5
  56. package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/ModelFetcher.tsx +3 -4
  57. package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/Option.tsx +3 -4
  58. package/src/app/[variants]/(main)/settings/provider/(list)/ProviderGrid/Card.tsx +5 -12
  59. package/src/app/[variants]/(main)/settings/provider/(list)/ProviderGrid/index.tsx +7 -8
  60. package/src/app/[variants]/(main)/settings/provider/ProviderMenu/List.tsx +5 -6
  61. package/src/app/[variants]/(main)/settings/provider/features/ModelList/DisabledModels.tsx +3 -4
  62. package/src/app/[variants]/(main)/settings/provider/features/ModelList/EnabledModelList/index.tsx +5 -6
  63. package/src/app/[variants]/(main)/settings/provider/features/ModelList/ModelItem.tsx +4 -6
  64. package/src/app/[variants]/(main)/settings/provider/features/ModelList/ModelTitle/index.tsx +6 -6
  65. package/src/app/[variants]/(main)/settings/provider/features/ModelList/SearchResult.tsx +3 -4
  66. package/src/app/[variants]/(main)/settings/sync/features/DeviceInfo/DeviceName.tsx +2 -3
  67. package/src/app/[variants]/(main)/settings/sync/features/DeviceInfo/index.tsx +3 -3
  68. package/src/app/[variants]/(main)/settings/sync/features/WebRTC/index.tsx +4 -4
  69. package/src/app/[variants]/oauth/consent/[uid]/ClientError.tsx +4 -6
  70. package/src/app/[variants]/oauth/consent/[uid]/Consent.tsx +7 -8
  71. package/src/app/[variants]/oauth/consent/[uid]/Login.tsx +4 -6
  72. package/src/app/[variants]/oauth/handoff/Client.tsx +6 -6
  73. package/src/components/InitProgress/index.tsx +3 -3
  74. package/src/components/Loading/CircleLoading/index.tsx +3 -4
  75. package/src/components/ModelSelect/index.tsx +3 -6
  76. package/src/components/StatisticCard/TitleWithPercentage.tsx +4 -7
  77. package/src/components/StatisticCard/index.tsx +6 -7
  78. package/src/config/aiModels/openrouter.ts +36 -0
  79. package/src/features/AgentSetting/AgentPlugin/index.tsx +4 -3
  80. package/src/features/ChatInput/Desktop/FilePreview/FileItem/index.tsx +3 -4
  81. package/src/features/ChatInput/components/UploadDetail/UploadStatus.tsx +10 -10
  82. package/src/features/ChatInput/components/UploadDetail/index.tsx +3 -3
  83. package/src/features/Conversation/Messages/Assistant/FileChunks/Item/index.tsx +2 -3
  84. package/src/features/Conversation/Messages/User/BelowMessage.tsx +3 -4
  85. package/src/features/Conversation/Messages/User/FileListViewer/Item.tsx +3 -3
  86. package/src/features/Conversation/components/History/index.tsx +2 -3
  87. package/src/features/DataImporter/ImportDetail.tsx +2 -4
  88. package/src/features/ElectronTitlebar/Connection/Waiting.tsx +3 -6
  89. package/src/features/FileManager/FileList/EmptyStatus.tsx +4 -4
  90. package/src/features/FileManager/FileList/index.tsx +3 -3
  91. package/src/features/FileManager/UploadDock/Item.tsx +11 -11
  92. package/src/features/FileManager/UploadDock/index.tsx +3 -4
  93. package/src/features/FileManager/index.tsx +3 -5
  94. package/src/tools/local-system/Render/ReadLocalFile/ReadFileView.tsx +5 -6
  95. package/src/tools/web-browsing/Portal/PageContent/index.tsx +4 -7
  96. package/src/tools/web-browsing/Portal/Search/ResultList/SearchItem/TitleExtra.tsx +3 -4
  97. package/src/tools/web-browsing/Portal/Search/ResultList/SearchItem/Video.tsx +4 -3
  98. package/src/tools/web-browsing/Portal/Search/ResultList/SearchItem/index.tsx +3 -3
  99. package/src/tools/web-browsing/Render/PageContent/Result.tsx +4 -6
  100. package/src/tools/web-browsing/Render/Search/SearchResult/SearchResultItem.tsx +3 -3
  101. package/src/tools/web-browsing/components/SearchBar.tsx +7 -7
@@ -1,6 +1,6 @@
1
1
  import { CheckCircleFilled } from '@ant-design/icons';
2
- import { Icon } from '@lobehub/ui';
3
- import { Progress, Typography } from 'antd';
2
+ import { Icon, Text } from '@lobehub/ui';
3
+ import { Progress } from 'antd';
4
4
  import { useTheme } from 'antd-style';
5
5
  import { Loader2Icon } from 'lucide-react';
6
6
  import { memo } from 'react';
@@ -26,9 +26,9 @@ const UploadStatus = memo<UploadStateProps>(({ status, size, uploadState }) => {
26
26
  return (
27
27
  <Flexbox align={'center'} gap={4} horizontal>
28
28
  <Icon icon={Loader2Icon} size={12} spin />
29
- <Typography.Text style={{ fontSize: 12 }} type={'secondary'}>
29
+ <Text style={{ fontSize: 12 }} type={'secondary'}>
30
30
  {t('upload.preview.status.pending')}
31
- </Typography.Text>
31
+ </Text>
32
32
  </Flexbox>
33
33
  );
34
34
  }
@@ -37,9 +37,9 @@ const UploadStatus = memo<UploadStateProps>(({ status, size, uploadState }) => {
37
37
  return (
38
38
  <Flexbox align={'center'} gap={4} horizontal>
39
39
  <Progress percent={uploadState?.progress} size={14} type="circle" />
40
- <Typography.Text style={{ fontSize: 12 }} type={'secondary'}>
40
+ <Text style={{ fontSize: 12 }} type={'secondary'}>
41
41
  {formatSize(size * ((uploadState?.progress || 0) / 100), 0)} / {formatSize(size)}
42
- </Typography.Text>
42
+ </Text>
43
43
  </Flexbox>
44
44
  );
45
45
  }
@@ -48,9 +48,9 @@ const UploadStatus = memo<UploadStateProps>(({ status, size, uploadState }) => {
48
48
  return (
49
49
  <Flexbox align={'center'} gap={4} horizontal>
50
50
  <Progress percent={uploadState?.progress} size={14} type="circle" />
51
- <Typography.Text style={{ fontSize: 12 }} type={'secondary'}>
51
+ <Text style={{ fontSize: 12 }} type={'secondary'}>
52
52
  {formatSize(size)}
53
- </Typography.Text>
53
+ </Text>
54
54
  </Flexbox>
55
55
  );
56
56
  }
@@ -59,9 +59,9 @@ const UploadStatus = memo<UploadStateProps>(({ status, size, uploadState }) => {
59
59
  return (
60
60
  <Flexbox align={'center'} gap={4} horizontal>
61
61
  <CheckCircleFilled style={{ color: theme.colorSuccess, fontSize: 12 }} />
62
- <Typography.Text style={{ fontSize: 12 }} type={'secondary'}>
62
+ <Text style={{ fontSize: 12 }} type={'secondary'}>
63
63
  {formatSize(size)}
64
- </Typography.Text>
64
+ </Text>
65
65
  </Flexbox>
66
66
  );
67
67
  }
@@ -1,4 +1,4 @@
1
- import { Typography } from 'antd';
1
+ import { Text } from '@lobehub/ui';
2
2
  import { createStyles } from 'antd-style';
3
3
  import { memo } from 'react';
4
4
  import { useTranslation } from 'react-i18next';
@@ -34,9 +34,9 @@ const UploadDetail = memo<UploadDetailProps>(({ uploadState, status, size, tasks
34
34
  <Flexbox align={'center'} gap={8} height={22} horizontal>
35
35
  <UploadStatus size={size} status={status} uploadState={uploadState} />
36
36
  {!!tasks && Object.keys(tasks).length === 0 ? (
37
- <Typography.Text style={{ fontSize: 12 }} type={'secondary'}>
37
+ <Text style={{ fontSize: 12 }} type={'secondary'}>
38
38
  {t('upload.preview.prepareTasks')}
39
- </Typography.Text>
39
+ </Text>
40
40
  ) : (
41
41
  <div>
42
42
  <FileParsingStatus {...tasks} className={styles.status} hideEmbeddingButton />
@@ -1,5 +1,4 @@
1
- import { Tooltip } from '@lobehub/ui';
2
- import { Typography } from 'antd';
1
+ import { Text, Tooltip } from '@lobehub/ui';
3
2
  import { memo } from 'react';
4
3
  import { Center, Flexbox } from 'react-layout-kit';
5
4
 
@@ -33,7 +32,7 @@ const ChunkItem = memo<ChunkItemProps>(({ id, fileId, similarity, text, filename
33
32
  >
34
33
  <FileIcon fileName={filename} fileType={fileType} size={20} variant={'raw'} />
35
34
  <Flexbox gap={12} horizontal justify={'space-between'} style={{ maxWidth: 200 }}>
36
- <Typography.Text ellipsis={{ tooltip: false }}>{filename}</Typography.Text>
35
+ <Text ellipsis>{filename}</Text>
37
36
  {/*<Typography.Text*/}
38
37
  {/* ellipsis={{ suffix: '...' }}*/}
39
38
  {/* style={{ fontSize: 12, lineHeight: 1 }}*/}
@@ -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 isEqual from 'fast-deep-equal';
5
4
  import { RotateCwIcon, Trash2 } from 'lucide-react';
@@ -50,9 +49,9 @@ export const UserBelowMessage = memo<ChatMessage>(({ ragQuery, content, id }) =>
50
49
  !isEqual(ragQuery, content) && (
51
50
  <Flexbox className={styles.container}>
52
51
  <Flexbox align={'center'} className={styles.content} gap={4} horizontal>
53
- <Typography.Text style={{ fontSize: 12 }} type={'secondary'}>
52
+ <Text style={{ fontSize: 12 }} type={'secondary'}>
54
53
  {ragQuery}
55
- </Typography.Text>
54
+ </Text>
56
55
  </Flexbox>
57
56
  <Flexbox className={styles.action} horizontal>
58
57
  <ActionIcon
@@ -1,4 +1,4 @@
1
- import { Typography } from 'antd';
1
+ import { Text } from '@lobehub/ui';
2
2
  import { createStyles } from 'antd-style';
3
3
  import { memo } from 'react';
4
4
  import { Flexbox } from 'react-layout-kit';
@@ -43,8 +43,8 @@ const FileItem = memo<ChatFileItem>(({ id, fileType, size, name }) => {
43
43
  >
44
44
  <FileIcon fileName={name} fileType={fileType} />
45
45
  <Flexbox style={{ overflow: 'hidden' }}>
46
- <Typography.Text ellipsis>{name}</Typography.Text>
47
- <Typography.Text type={'secondary'}>{formatSize(size)}</Typography.Text>
46
+ <Text ellipsis>{name}</Text>
47
+ <Text type={'secondary'}>{formatSize(size)}</Text>
48
48
  </Flexbox>
49
49
  </Flexbox>
50
50
  );
@@ -1,6 +1,5 @@
1
1
  import { ModelTag } from '@lobehub/icons';
2
- import { Icon, Markdown } from '@lobehub/ui';
3
- import { Typography } from 'antd';
2
+ import { Icon, Markdown, Text } from '@lobehub/ui';
4
3
  import { createStyles } from 'antd-style';
5
4
  import { ScrollText } from 'lucide-react';
6
5
  import { memo } from 'react';
@@ -50,7 +49,7 @@ const History = memo(() => {
50
49
  <Center height={20} width={20}>
51
50
  <Icon icon={ScrollText} size={16} style={{ color: theme.colorTextDescription }} />
52
51
  </Center>
53
- <Typography.Text type={'secondary'}>{t('historySummary')}</Typography.Text>
52
+ <Text type={'secondary'}>{t('historySummary')}</Text>
54
53
  {model && (
55
54
  <div>
56
55
  <ModelTag model={model} />
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { Button, Modal } from '@lobehub/ui';
4
- import { Table, Typography } from 'antd';
3
+ import { Button, Modal, Text } from '@lobehub/ui';
4
+ import { Table } from 'antd';
5
5
  import { createStyles } from 'antd-style';
6
6
  import { Info } from 'lucide-react';
7
7
  import { useState } from 'react';
@@ -10,8 +10,6 @@ import { Flexbox } from 'react-layout-kit';
10
10
 
11
11
  import { ImportPgDataStructure } from '@/types/export';
12
12
 
13
- const { Text } = Typography;
14
-
15
13
  const getNonEmptyTables = (data: ImportPgDataStructure) => {
16
14
  const result = [];
17
15
 
@@ -1,8 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { useWatchBroadcast } from '@lobechat/electron-client-ipc';
4
- import { Button, Icon } from '@lobehub/ui';
5
- import { Typography } from 'antd';
4
+ import { Button, Icon, Text } from '@lobehub/ui';
6
5
  import { createStyles, cx, keyframes } from 'antd-style';
7
6
  import { WifiIcon } from 'lucide-react';
8
7
  import { memo } from 'react';
@@ -10,8 +9,6 @@ import { useTranslation } from 'react-i18next';
10
9
 
11
10
  import { useElectronStore } from '@/store/electron';
12
11
 
13
- const { Text, Title } = Typography;
14
-
15
12
  const airdropPulse = keyframes`
16
13
  0% {
17
14
  transform: translate(-50%, -50%) scale(0.8);
@@ -189,9 +186,9 @@ const WaitingOAuth = memo<WaitingOAuthProps>(({ setWaiting, setIsOpen }) => {
189
186
 
190
187
  <Icon className={styles.radarIcon} icon={WifiIcon} size={40} />
191
188
  </div>
192
- <Title className={styles.title} level={4}>
189
+ <Text as={'h4'} className={styles.title}>
193
190
  {t('waitingOAuth.title')}
194
- </Title>
191
+ </Text>
195
192
  <Text className={styles.description}>{t('waitingOAuth.description')}</Text>
196
193
  <Button onClick={handleCancel}>{t('waitingOAuth.cancel')}</Button>{' '}
197
194
  <Text className={styles.helpText}>{t('waitingOAuth.helpText')}</Text>
@@ -1,5 +1,5 @@
1
- import { FileTypeIcon, Icon } from '@lobehub/ui';
2
- import { Typography, Upload } from 'antd';
1
+ import { FileTypeIcon, Icon, Text } from '@lobehub/ui';
2
+ import { Upload } from 'antd';
3
3
  import { createStyles, useTheme } from 'antd-style';
4
4
  import { ArrowUpIcon, PlusIcon } from 'lucide-react';
5
5
  import { useTranslation } from 'react-i18next';
@@ -76,8 +76,8 @@ const EmptyStatus = ({ showKnowledgeBase, knowledgeBaseId }: EmptyStatusProps) =
76
76
  return (
77
77
  <Center gap={24} height={'100%'} style={{ paddingBottom: 100 }} width={'100%'}>
78
78
  <Flexbox justify={'center'} style={{ textAlign: 'center' }}>
79
- <Typography.Title level={4}>{t('FileManager.emptyStatus.title')}</Typography.Title>
80
- <Typography.Text type={'secondary'}>{t('FileManager.emptyStatus.or')}</Typography.Text>
79
+ <Text as={'h4'}>{t('FileManager.emptyStatus.title')}</Text>
80
+ <Text type={'secondary'}>{t('FileManager.emptyStatus.or')}</Text>
81
81
  </Flexbox>
82
82
  <Flexbox gap={12} horizontal>
83
83
  {showKnowledgeBase && (
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { Typography } from 'antd';
3
+ import { Text } from '@lobehub/ui';
4
4
  import { createStyles } from 'antd-style';
5
5
  import { useQueryState } from 'nuqs';
6
6
  import { rgba } from 'polished';
@@ -109,9 +109,9 @@ const FileList = memo<FileListProps>(({ knowledgeBaseId, category }) => {
109
109
  components={{
110
110
  Footer: () => (
111
111
  <Center style={{ height: 64 }}>
112
- <Typography.Text style={{ fontSize: 12 }} type={'secondary'}>
112
+ <Text style={{ fontSize: 12 }} type={'secondary'}>
113
113
  {t('FileManager.bottom')}
114
- </Typography.Text>
114
+ </Text>
115
115
  </Center>
116
116
  ),
117
117
  }}
@@ -1,4 +1,4 @@
1
- import { Typography } from 'antd';
1
+ import { Text } from '@lobehub/ui';
2
2
  import { createStyles } from 'antd-style';
3
3
  import { ReactNode, memo, useMemo } from 'react';
4
4
  import { useTranslation } from 'react-i18next';
@@ -52,41 +52,41 @@ const UploadItem = memo<UploadItemProps>(({ file, status, uploadState }) => {
52
52
  ].filter(Boolean);
53
53
 
54
54
  return (
55
- <Typography.Text style={{ fontSize: 12 }} type={'secondary'}>
55
+ <Text style={{ fontSize: 12 }} type={'secondary'}>
56
56
  {uploadState?.progress ? formatSize(size * (uploadState.progress / 100)) : '-'}/
57
57
  {formatSize(size)}
58
58
  {textArray.length === 0 ? '' : ' · ' + textArray.join(' · ')}
59
- </Typography.Text>
59
+ </Text>
60
60
  );
61
61
  }
62
62
  case 'pending': {
63
63
  return (
64
- <Typography.Text style={{ fontSize: 12 }} type={'secondary'}>
64
+ <Text style={{ fontSize: 12 }} type={'secondary'}>
65
65
  {formatSize(size)} · {t('uploadDock.body.item.pending')}
66
- </Typography.Text>
66
+ </Text>
67
67
  );
68
68
  }
69
69
 
70
70
  case 'processing': {
71
71
  return (
72
- <Typography.Text style={{ fontSize: 12 }} type={'secondary'}>
72
+ <Text style={{ fontSize: 12 }} type={'secondary'}>
73
73
  {formatSize(size)} · {t('uploadDock.body.item.processing')}
74
- </Typography.Text>
74
+ </Text>
75
75
  );
76
76
  }
77
77
 
78
78
  case 'success': {
79
79
  return (
80
- <Typography.Text style={{ fontSize: 12 }} type={'secondary'}>
80
+ <Text style={{ fontSize: 12 }} type={'secondary'}>
81
81
  {formatSize(size)} · {t('uploadDock.body.item.done')}
82
- </Typography.Text>
82
+ </Text>
83
83
  );
84
84
  }
85
85
  case 'error': {
86
86
  return (
87
- <Typography.Text style={{ fontSize: 12 }} type={'danger'}>
87
+ <Text style={{ fontSize: 12 }} type={'danger'}>
88
88
  {formatSize(size)} · {t('uploadDock.body.item.error')}
89
- </Typography.Text>
89
+ </Text>
90
90
  );
91
91
  }
92
92
  default: {
@@ -1,6 +1,5 @@
1
1
  import { CheckCircleFilled, CloseCircleFilled } from '@ant-design/icons';
2
- import { ActionIcon, Icon } from '@lobehub/ui';
3
- import { Typography } from 'antd';
2
+ import { ActionIcon, Icon, Text } from '@lobehub/ui';
4
3
  import { createStyles } from 'antd-style';
5
4
  import isEqual from 'fast-deep-equal';
6
5
  import { UploadIcon, XIcon } from 'lucide-react';
@@ -149,7 +148,7 @@ const UploadDock = memo(() => {
149
148
  ))}
150
149
  </Flexbox>
151
150
  <Center style={{ height: 40, minHeight: 40 }}>
152
- <Typography.Text
151
+ <Text
153
152
  onClick={() => {
154
153
  setExpand(false);
155
154
  }}
@@ -157,7 +156,7 @@ const UploadDock = memo(() => {
157
156
  type={'secondary'}
158
157
  >
159
158
  {t('uploadDock.body.collapse')}
160
- </Typography.Text>
159
+ </Text>
161
160
  </Center>
162
161
  </Flexbox>
163
162
  ) : (
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { Typography } from 'antd';
3
+ import { Text } from '@lobehub/ui';
4
4
  import dynamic from 'next/dynamic';
5
5
  import { memo } from 'react';
6
6
  import { Flexbox } from 'react-layout-kit';
@@ -21,11 +21,9 @@ const FileManager = memo<FileManagerProps>(({ title, knowledgeBaseId, category }
21
21
  <>
22
22
  <Header knowledgeBaseId={knowledgeBaseId} />
23
23
  <Flexbox gap={12} height={'100%'}>
24
- <Typography.Text
25
- style={{ fontSize: 16, fontWeight: 'bold', marginBlock: 16, marginInline: 24 }}
26
- >
24
+ <Text strong style={{ fontSize: 16, marginBlock: 16, marginInline: 24 }}>
27
25
  {title}
28
- </Typography.Text>
26
+ </Text>
29
27
  <FileList category={category} knowledgeBaseId={knowledgeBaseId} />
30
28
  </Flexbox>
31
29
  <UploadDock />
@@ -1,6 +1,5 @@
1
1
  import { LocalReadFileResult } from '@lobechat/electron-client-ipc';
2
- import { ActionIcon, Icon, Markdown } from '@lobehub/ui';
3
- import { Typography } from 'antd';
2
+ import { ActionIcon, Icon, Markdown, Text } from '@lobehub/ui';
4
3
  import { createStyles } from 'antd-style';
5
4
  import { AlignLeft, Asterisk, ChevronDownIcon, ExternalLink, FolderOpen } from 'lucide-react';
6
5
  import React, { memo, useState } from 'react';
@@ -118,9 +117,9 @@ const ReadFileView = memo<ReadFileViewProps>(
118
117
  <Flexbox align={'center'} flex={1} gap={0} horizontal style={{ overflow: 'hidden' }}>
119
118
  <FileIcon fileName={filename} fileType={fileType} size={24} variant={'raw'} />
120
119
  <Flexbox horizontal>
121
- <Typography.Text className={styles.fileName} ellipsis>
120
+ <Text className={styles.fileName} ellipsis>
122
121
  {filename}
123
- </Typography.Text>
122
+ </Text>
124
123
  {/* Actions on Hover */}
125
124
  <Flexbox className={styles.actions} gap={2} horizontal style={{ marginLeft: 8 }}>
126
125
  <ActionIcon
@@ -174,9 +173,9 @@ const ReadFileView = memo<ReadFileViewProps>(
174
173
  </Flexbox>
175
174
 
176
175
  {/* Path */}
177
- <Typography.Text className={styles.path} ellipsis type={'secondary'}>
176
+ <Text className={styles.path} ellipsis type={'secondary'}>
178
177
  {path}
179
- </Typography.Text>
178
+ </Text>
180
179
 
181
180
  {isExpanded && (
182
181
  <Flexbox className={styles.previewBox} style={{ maxHeight: 240, overflow: 'auto' }}>
@@ -1,5 +1,5 @@
1
- import { Alert, CopyButton, Highlighter, Icon, Markdown, Segmented } from '@lobehub/ui';
2
- import { Descriptions, Typography } from 'antd';
1
+ import { Alert, CopyButton, Highlighter, Icon, Markdown, Segmented, Text } from '@lobehub/ui';
2
+ import { Descriptions } from 'antd';
3
3
  import { createStyles } from 'antd-style';
4
4
  import { ExternalLink } from 'lucide-react';
5
5
  import Link from 'next/link';
@@ -148,12 +148,9 @@ const PageContent = memo<PageContentProps>(({ result }) => {
148
148
  </Flexbox>
149
149
  </Flexbox>
150
150
  {description && (
151
- <Typography.Paragraph
152
- className={styles.description}
153
- ellipsis={{ expandable: false, rows: 4 }}
154
- >
151
+ <Text className={styles.description} ellipsis={{ rows: 4 }}>
155
152
  {description}
156
- </Typography.Paragraph>
153
+ </Text>
157
154
  )}
158
155
  <Flexbox align={'center'} className={styles.url} gap={4} horizontal>
159
156
  {result.data.siteName && <div>{result.data.siteName} · </div>}
@@ -1,5 +1,4 @@
1
- import { Tag, Tooltip } from '@lobehub/ui';
2
- import { Typography } from 'antd';
1
+ import { Tag, Text, Tooltip } from '@lobehub/ui';
3
2
  import { memo } from 'react';
4
3
  import { useTranslation } from 'react-i18next';
5
4
  import { Flexbox } from 'react-layout-kit';
@@ -27,12 +26,12 @@ const TitleExtra = memo<TitleExtraProps>(({ category, score, highlight, engines
27
26
  {score.toFixed(1)}
28
27
  </Tag>
29
28
  ) : (
30
- <Typography.Text
29
+ <Text
31
30
  style={{ textAlign: 'center', width: 32, wordBreak: 'keep-all' }}
32
31
  type={'secondary'}
33
32
  >
34
33
  {score.toFixed(1)}
35
- </Typography.Text>
34
+ </Text>
36
35
  )}
37
36
  </Tooltip>
38
37
  <CategoryAvatar category={category || 'general'} />
@@ -1,4 +1,5 @@
1
- import { Avatar as AntAvatar, Typography } from 'antd';
1
+ import { Text } from '@lobehub/ui';
2
+ import { Avatar as AntAvatar } from 'antd';
2
3
  import { createStyles } from 'antd-style';
3
4
  import { memo, useState } from 'react';
4
5
  import { Flexbox } from 'react-layout-kit';
@@ -122,9 +123,9 @@ const VideoItem = memo<SearchResultProps>(
122
123
  score={score}
123
124
  />
124
125
  </Flexbox>
125
- <Typography.Text className={styles.url} type={'secondary'}>
126
+ <Text className={styles.url} type={'secondary'}>
126
127
  {url}
127
- </Typography.Text>
128
+ </Text>
128
129
  <Flexbox className={styles.desc}>{content}</Flexbox>
129
130
  </Flexbox>
130
131
  </Flexbox>
@@ -1,4 +1,4 @@
1
- import { Typography } from 'antd';
1
+ import { Text } from '@lobehub/ui';
2
2
  import { createStyles } from 'antd-style';
3
3
  import { memo } from 'react';
4
4
  import { Flexbox } from 'react-layout-kit';
@@ -78,9 +78,9 @@ const SearchItem = memo<SearchResultProps>((props) => {
78
78
  score={score}
79
79
  />
80
80
  </Flexbox>
81
- <Typography.Text className={styles.url} type={'secondary'}>
81
+ <Text className={styles.url} type={'secondary'}>
82
82
  {url}
83
- </Typography.Text>
83
+ </Text>
84
84
  <Flexbox className={styles.desc}>{content}</Flexbox>
85
85
  </Flexbox>
86
86
  </Flexbox>
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
 
3
3
  import { CrawlErrorResult, CrawlSuccessResult } from '@lobechat/web-crawler';
4
- import { Alert, Highlighter, Icon } from '@lobehub/ui';
5
- import { Descriptions, Typography } from 'antd';
4
+ import { Alert, Highlighter, Icon, Text } from '@lobehub/ui';
5
+ import { Descriptions } from 'antd';
6
6
  import { createStyles } from 'antd-style';
7
7
  import { ExternalLink } from 'lucide-react';
8
8
  import Link from 'next/link';
@@ -13,8 +13,6 @@ import { Center, Flexbox } from 'react-layout-kit';
13
13
  import { useChatStore } from '@/store/chat';
14
14
  import { WebBrowsingManifest } from '@/tools/web-browsing';
15
15
 
16
- const { Paragraph } = Typography;
17
-
18
16
  const useStyles = createStyles(({ token, css }) => {
19
17
  return {
20
18
  cardBody: css`
@@ -146,9 +144,9 @@ const CrawlerResultCard = memo<CrawlerData>(({ result, messageId, crawler, origi
146
144
  </Center>
147
145
  </Link>
148
146
  </Flexbox>
149
- <Paragraph className={styles.description} ellipsis={{ expandable: false, rows: 2 }}>
147
+ <Text className={styles.description} ellipsis={{ rows: 2 }}>
150
148
  {description || result.content?.slice(0, 40)}
151
- </Paragraph>
149
+ </Text>
152
150
  </Flexbox>
153
151
  <div className={styles.footer}>
154
152
  <Descriptions
@@ -1,4 +1,4 @@
1
- import { Typography } from 'antd';
1
+ import { Text } from '@lobehub/ui';
2
2
  import { createStyles } from 'antd-style';
3
3
  import Link from 'next/link';
4
4
  import { memo } from 'react';
@@ -54,9 +54,9 @@ const SearchResultItem = memo<UniformSearchResult>(({ url, title }) => {
54
54
  <div className={styles.title}>{title}</div>
55
55
  <Flexbox align={'center'} gap={4} horizontal>
56
56
  <WebFavicon size={14} title={title} url={url} />
57
- <Typography.Text className={styles.url} type={'secondary'}>
57
+ <Text className={styles.url} type={'secondary'}>
58
58
  {host.replace('www.', '')}
59
- </Typography.Text>
59
+ </Text>
60
60
  </Flexbox>
61
61
  </Flexbox>
62
62
  </Link>
@@ -1,5 +1,5 @@
1
- import { Button, Input, Select, Tooltip } from '@lobehub/ui';
2
- import { Checkbox, Radio, Space, Typography } from 'antd';
1
+ import { Button, Input, Select, Text, Tooltip } from '@lobehub/ui';
2
+ import { Checkbox, Radio, Space } from 'antd';
3
3
  import { SearchIcon } from 'lucide-react';
4
4
  import { ReactNode, memo, useState } from 'react';
5
5
  import { useTranslation } from 'react-i18next';
@@ -115,9 +115,9 @@ const SearchBar = memo<SearchBarProps>(
115
115
  />
116
116
  ) : (
117
117
  <Flexbox align={'flex-start'} gap={8} horizontal>
118
- <Typography.Text style={{ marginTop: 2, wordBreak: 'keep-all' }} type={'secondary'}>
118
+ <Text style={{ marginTop: 2, wordBreak: 'keep-all' }} type={'secondary'}>
119
119
  {t('search.searchEngine.title')}
120
- </Typography.Text>
120
+ </Text>
121
121
  <Checkbox.Group
122
122
  onChange={(checkedValue) => {
123
123
  setEngines(checkedValue);
@@ -164,9 +164,9 @@ const SearchBar = memo<SearchBarProps>(
164
164
  />
165
165
  ) : (
166
166
  <Flexbox align="flex-start" gap={8} horizontal>
167
- <Typography.Text style={{ marginTop: 2, wordBreak: 'keep-all' }} type={'secondary'}>
167
+ <Text style={{ marginTop: 2, wordBreak: 'keep-all' }} type={'secondary'}>
168
168
  {t('search.searchCategory.title')}
169
- </Typography.Text>
169
+ </Text>
170
170
  <Checkbox.Group
171
171
  onChange={(checkedValue) => setCategories(checkedValue)}
172
172
  options={Object.keys(CATEGORY_ICON_MAP).map((item) => ({
@@ -184,7 +184,7 @@ const SearchBar = memo<SearchBarProps>(
184
184
  )}
185
185
 
186
186
  <Flexbox align={'center'} gap={16} horizontal wrap={'wrap'}>
187
- <Typography.Text type={'secondary'}>{t('search.searchTimeRange.title')}</Typography.Text>
187
+ <Text type={'secondary'}>{t('search.searchTimeRange.title')}</Text>
188
188
  <Radio.Group
189
189
  onChange={(e) => setTimeRange(e.target.value)}
190
190
  optionType="button"