= {
argTypes: {
variant: {
control: { type: 'select' },
- options: ['solid', 'bordered', 'light', 'flat', 'faded', 'shadow', 'ghost']
- },
- color: {
- control: { type: 'select' },
- options: ['default', 'primary', 'secondary', 'success', 'warning', 'danger']
+ options: ['default', 'destructive', 'outline', 'secondary', 'ghost', 'link']
},
size: {
control: { type: 'select' },
- options: ['sm', 'md', 'lg']
+ options: ['default', 'sm', 'lg', 'icon', 'icon-sm', 'icon-lg']
},
- radius: {
- control: { type: 'select' },
- options: ['none', 'sm', 'md', 'lg', 'full']
- },
- isDisabled: {
+ disabled: {
control: { type: 'boolean' }
},
- isLoading: {
- control: { type: 'boolean' }
- },
- fullWidth: {
- control: { type: 'boolean' }
- },
- isIconOnly: {
+ asChild: {
control: { type: 'boolean' }
}
}
@@ -55,27 +41,12 @@ export const Default: Story = {
export const Variants: Story = {
render: () => (
-
-
-
-
-
-
+
+
+
+
-
- )
-}
-
-// 不同颜色
-export const Colors: Story = {
- render: () => (
-
-
-
-
-
-
-
+
)
}
@@ -83,23 +54,21 @@ export const Colors: Story = {
// 不同尺寸
export const Sizes: Story = {
render: () => (
-
+
-
+
)
}
-// 不同圆角
-export const Radius: Story = {
+// 图标按钮
+export const IconButtons: Story = {
render: () => (
-
-
-
-
-
-
+
+
+
+
)
}
@@ -109,8 +78,7 @@ export const States: Story = {
render: () => (
-
-
+
)
}
@@ -119,9 +87,15 @@ export const States: Story = {
export const WithIcons: Story = {
render: () => (
-
-
-
+
+
+
)
}
@@ -130,9 +104,7 @@ export const WithIcons: Story = {
export const FullWidth: Story = {
render: () => (
-
+
)
}
@@ -141,10 +113,45 @@ export const FullWidth: Story = {
export const Interactive: Story = {
render: () => (
-
-
)
}
+
+// 组合示例
+export const Combinations: Story = {
+ render: () => (
+
+
+
+ Small Default
+
+
+ Small Destructive
+
+
+ Small Outline
+
+
+
+ Default
+ Destructive
+ Outline
+
+
+
+ Large Default
+
+
+ Large Destructive
+
+
+ Large Outline
+
+
+
+ )
+}
diff --git a/packages/ui/stories/components/base/CopyButton.stories.tsx b/packages/ui/stories/components/base/CopyButton.stories.tsx
index fbe0b2faaf..db78b10c6a 100644
--- a/packages/ui/stories/components/base/CopyButton.stories.tsx
+++ b/packages/ui/stories/components/base/CopyButton.stories.tsx
@@ -1,6 +1,6 @@
import type { Meta, StoryObj } from '@storybook/react'
-import CopyButton from '../../../src/components/base/CopyButton'
+import CopyButton from '../../../src/components/primitives/copyButton'
const meta: Meta
= {
title: 'Base/CopyButton',
diff --git a/packages/ui/stories/components/base/CustomCollapse.stories.tsx b/packages/ui/stories/components/base/CustomCollapse.stories.tsx
deleted file mode 100644
index c05dbbfc54..0000000000
--- a/packages/ui/stories/components/base/CustomCollapse.stories.tsx
+++ /dev/null
@@ -1,459 +0,0 @@
-import { Button } from '@heroui/react'
-import type { Meta, StoryObj } from '@storybook/react'
-import { AlertTriangle, CreditCard, Info, Monitor, Settings, Shield } from 'lucide-react'
-import { useState } from 'react'
-
-import CustomCollapse, { Accordion, AccordionItem } from '../../../src/components/base/CustomCollapse'
-
-const meta: Meta = {
- title: 'Base/CustomCollapse',
- component: CustomCollapse,
- parameters: {
- layout: 'padded'
- },
- tags: ['autodocs'],
- argTypes: {
- children: {
- control: false,
- description: '面板内容'
- },
- accordionProps: {
- control: false,
- description: 'Accordion 组件的属性'
- },
- accordionItemProps: {
- control: false,
- description: 'AccordionItem 组件的属性'
- }
- }
-}
-
-export default meta
-type Story = StoryObj
-
-// 基础用法
-export const Default: Story = {
- args: {
- accordionItemProps: {
- title: '默认折叠面板'
- },
- children: (
-
-
这是折叠面板的内容。
-
可以包含任何内容,包括文本、图片、表单等。
-
- )
- }
-}
-
-// 带副标题
-export const WithSubtitle: Story = {
- args: {
- accordionProps: {
- defaultExpandedKeys: ['1']
- },
- accordionItemProps: {
- title: '带副标题的折叠面板',
- subtitle: 这是副标题内容
- },
- children: (
-
-
面板内容
-
可以在 subtitle 属性中设置副标题
-
- )
- }
-}
-
-// HeroUI 样式变体
-export const VariantLight: Story = {
- args: {
- accordionProps: {
- variant: 'light'
- },
- accordionItemProps: {
- title: 'Light 变体'
- },
- children: (
-
-
这是 HeroUI 的 Light 变体样式。
-
- )
- }
-}
-
-export const VariantShadow: Story = {
- args: {
- accordionProps: {
- variant: 'shadow',
- className: 'p-2'
- },
- accordionItemProps: {
- title: 'Shadow 变体',
- subtitle: '带阴影的面板样式'
- },
- children: (
-
-
这是 HeroUI 的 Shadow 变体样式。
-
- )
- }
-}
-
-export const VariantBordered: Story = {
- args: {
- accordionProps: {
- variant: 'bordered'
- },
- accordionItemProps: {
- title: 'Bordered 变体(默认)'
- },
- children: (
-
-
这是 HeroUI 的 Bordered 变体样式。
-
- )
- }
-}
-
-export const VariantSplitted: Story = {
- args: {
- accordionProps: {
- variant: 'splitted'
- },
- accordionItemProps: {
- title: 'Splitted 变体'
- },
- children: (
-
-
这是 HeroUI 的 Splitted 变体样式。
-
- )
- }
-}
-
-// 富内容标题
-export const RichLabel: Story = {
- args: {
- accordionItemProps: {
- title: (
-
-
- 设置面板
-
- )
- },
- children: (
-
-
-
- 通知设置
-
- 开启
-
-
-
- 自动更新
-
- 关闭
-
-
-
-
- )
- }
-}
-
-// 带警告提示
-export const WithWarning: Story = {
- args: {
- accordionItemProps: {
- title: (
-
-
- 连接的设备
-
- ),
- subtitle: (
-
- 2个问题需要立即修复
-
- )
- },
- children: (
-
-
检测到以下设备连接异常:
-
- - 外部显示器连接不稳定
- - 蓝牙键盘配对失败
-
-
- )
- }
-}
-
-// 禁用状态
-export const Disabled: Story = {
- args: {
- accordionProps: {
- isDisabled: true,
- defaultExpandedKeys: ['1']
- },
- accordionItemProps: {
- title: '禁用的折叠面板'
- },
- children: (
-
- )
- }
-}
-
-// 受控模式
-export const ControlledMode: Story = {
- render: function ControlledMode() {
- const [selectedKeys, setSelectedKeys] = useState>(new Set(['1']))
-
- return (
-
-
- setSelectedKeys(new Set(['1']))} color="primary">
- 展开
-
- setSelectedKeys(new Set())} color="default">
- 收起
-
-
-
{
- if (keys !== 'all') {
- setSelectedKeys(keys as Set)
- }
- }
- }}
- accordionItemProps={{
- title: '受控的折叠面板'
- }}>
-
-
这是一个受控的折叠面板
-
通过按钮控制展开和收起状态
-
-
-
当前状态:{selectedKeys.size > 0 ? '展开' : '收起'}
-
- )
- }
-}
-
-// 多个单面板组合
-export const MultipleSinglePanels: Story = {
- render: () => (
-
- )
-}
-
-// 使用原生 HeroUI Accordion 的多面板示例
-export const NativeAccordionMultiple: Story = {
- render: () => (
-
-
原生 HeroUI Accordion 多面板
-
- }
- subtitle={
-
- 2个问题需要立即修复
-
- }>
-
-
- }
- subtitle="3个应用有读取权限">
-
-
- }
- subtitle={请完善您的个人资料}>
-
-
-
- 卡片已过期
- *4812
-
- }
- startContent={}
- subtitle={请立即更新}>
-
-
-
-
- )
-}
-
-// 富内容面板
-export const RichContent: Story = {
- args: {
- accordionItemProps: {
- title: (
-
-
-
- 详细信息
-
-
e.stopPropagation()}>
-
- 保存
-
-
- 取消
-
-
-
- )
- },
- children: (
-
-
-
基本信息
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )
- }
-}
-
-// 自定义样式
-export const CustomStyles: Story = {
- args: {
- accordionProps: {
- style: {
- backgroundColor: 'rgba(255, 193, 7, 0.1)',
- borderColor: 'var(--color-warning)'
- }
- },
- accordionItemProps: {
- title: (
-
- )
- },
- children: (
-
- )
- }
-}
-
-// 原生 HeroUI Accordion 多面板受控模式
-export const NativeAccordionControlled: Story = {
- render: function NativeAccordionControlled() {
- const [activeKeys, setActiveKeys] = useState>(new Set(['1']))
-
- return (
-
-
- setActiveKeys(new Set(['1', '2', '3']))} color="primary">
- 全部展开
-
- setActiveKeys(new Set())} color="default">
- 全部收起
-
- setActiveKeys(new Set(['2']))} color="default">
- 只展开第二个
-
-
-
{
- if (keys !== 'all') {
- setActiveKeys(keys as Set)
- }
- }}>
-
-
-
-
-
-
-
-
-
-
-
- 当前展开的面板:{activeKeys.size > 0 ? Array.from(activeKeys).join(', ') : '无'}
-
-
- )
- }
-}
diff --git a/packages/ui/stories/components/base/CustomTag.stories.tsx b/packages/ui/stories/components/base/CustomTag.stories.tsx
index 5b3ac9121f..5e8bc1e6e0 100644
--- a/packages/ui/stories/components/base/CustomTag.stories.tsx
+++ b/packages/ui/stories/components/base/CustomTag.stories.tsx
@@ -2,7 +2,7 @@ import type { Meta, StoryObj } from '@storybook/react-vite'
import { AlertTriangleIcon, StarIcon } from 'lucide-react'
import { action } from 'storybook/actions'
-import CustomTag from '../../../src/components/base/CustomTag'
+import CustomTag from '../../../src/components/primitives/customTag'
const meta: Meta = {
title: 'Base/CustomTag',
diff --git a/packages/ui/stories/components/base/DividerWithText.stories.tsx b/packages/ui/stories/components/base/DividerWithText.stories.tsx
index f5e68a54ce..915f10b0cc 100644
--- a/packages/ui/stories/components/base/DividerWithText.stories.tsx
+++ b/packages/ui/stories/components/base/DividerWithText.stories.tsx
@@ -1,6 +1,6 @@
import type { Meta, StoryObj } from '@storybook/react'
-import DividerWithText from '../../../src/components/base/DividerWithText'
+import DividerWithText from '../../../src/components/primitives/dividerWithText'
const meta: Meta = {
title: 'Base/DividerWithText',
diff --git a/packages/ui/stories/components/base/EmojiAvatar.stories.tsx b/packages/ui/stories/components/base/EmojiAvatar.stories.tsx
index 54e6e09903..e1c2368214 100644
--- a/packages/ui/stories/components/base/EmojiAvatar.stories.tsx
+++ b/packages/ui/stories/components/base/EmojiAvatar.stories.tsx
@@ -1,6 +1,6 @@
import type { Meta, StoryObj } from '@storybook/react'
-import EmojiAvatar from '../../../src/components/base/Avatar/EmojiAvatar'
+import EmojiAvatar from '../../../src/components/primitives/Avatar/EmojiAvatar'
const meta: Meta = {
title: 'Display/EmojiAvatar',
diff --git a/packages/ui/stories/components/base/EmojiIcon.stories.tsx b/packages/ui/stories/components/base/EmojiIcon.stories.tsx
index 2b9438abd3..d76d277f9d 100644
--- a/packages/ui/stories/components/base/EmojiIcon.stories.tsx
+++ b/packages/ui/stories/components/base/EmojiIcon.stories.tsx
@@ -1,6 +1,6 @@
import type { Meta, StoryObj } from '@storybook/react'
-import EmojiIcon from '../../../src/components/base/EmojiIcon'
+import EmojiIcon from '../../../src/components/primitives/emojiIcon'
const meta: Meta = {
title: 'Base/EmojiIcon',
diff --git a/packages/ui/stories/components/base/ErrorBoundary.stories.tsx b/packages/ui/stories/components/base/ErrorBoundary.stories.tsx
index 16e9ea39f2..e40f62e3ae 100644
--- a/packages/ui/stories/components/base/ErrorBoundary.stories.tsx
+++ b/packages/ui/stories/components/base/ErrorBoundary.stories.tsx
@@ -2,8 +2,8 @@ import { Button } from '@heroui/react'
import type { Meta, StoryObj } from '@storybook/react'
import { useState } from 'react'
-import type { CustomFallbackProps } from '../../../src/components/base/ErrorBoundary'
-import { ErrorBoundary } from '../../../src/components/base/ErrorBoundary'
+import type { CustomFallbackProps } from '../../../src/components/primitives/ErrorBoundary'
+import { ErrorBoundary } from '../../../src/components/primitives/ErrorBoundary'
// 错误组件 - 用于触发错误
const ThrowErrorComponent = ({ shouldThrow = false, errorMessage = '这是一个模拟错误' }) => {
diff --git a/packages/ui/stories/components/base/IndicatorLight.stories.tsx b/packages/ui/stories/components/base/IndicatorLight.stories.tsx
index 5278f4d984..dbb080ae6d 100644
--- a/packages/ui/stories/components/base/IndicatorLight.stories.tsx
+++ b/packages/ui/stories/components/base/IndicatorLight.stories.tsx
@@ -1,6 +1,6 @@
import type { Meta, StoryObj } from '@storybook/react'
-import IndicatorLight from '../../../src/components/base/IndicatorLight'
+import IndicatorLight from '../../../src/components/primitives/indicatorLight'
const meta: Meta = {
title: 'Base/IndicatorLight',
diff --git a/packages/ui/stories/components/base/Spinner.stories.tsx b/packages/ui/stories/components/base/Spinner.stories.tsx
index 68d3fc305b..730f5e56bd 100644
--- a/packages/ui/stories/components/base/Spinner.stories.tsx
+++ b/packages/ui/stories/components/base/Spinner.stories.tsx
@@ -2,7 +2,7 @@ import { Button } from '@heroui/react'
import type { Meta, StoryObj } from '@storybook/react'
import { useState } from 'react'
-import Spinner from '../../../src/components/base/Spinner'
+import Spinner from '../../../src/components/primitives/spinner'
const meta: Meta = {
title: 'Base/Spinner',
diff --git a/packages/ui/stories/components/base/StatusTag.stories.tsx b/packages/ui/stories/components/base/StatusTag.stories.tsx
deleted file mode 100644
index ab843d4f8e..0000000000
--- a/packages/ui/stories/components/base/StatusTag.stories.tsx
+++ /dev/null
@@ -1,176 +0,0 @@
-import type { Meta, StoryObj } from '@storybook/react'
-
-import { ErrorTag, InfoTag, StatusTag, SuccessTag, WarnTag } from '../../../src/components/base/StatusTag'
-
-const meta: Meta = {
- title: 'Base/StatusTag',
- component: StatusTag,
- parameters: {
- layout: 'centered'
- },
- tags: ['autodocs'],
- argTypes: {
- type: {
- control: { type: 'select' },
- options: ['success', 'error', 'warning', 'info']
- },
- iconSize: { control: { type: 'range', min: 10, max: 24, step: 1 } },
- message: { control: 'text' },
- color: { control: 'color' }
- }
-}
-
-export default meta
-type Story = StoryObj
-
-// Default
-export const Default: Story = {
- args: {
- type: 'success',
- message: 'Success'
- }
-}
-
-// All Types
-export const AllTypes: Story = {
- render: () => (
-
-
-
-
-
-
- )
-}
-
-// Convenience Components
-export const ConvenienceComponents: Story = {
- render: () => (
-
-
-
-
-
-
- )
-}
-
-// Different Icon Sizes
-export const IconSizes: Story = {
- render: () => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )
-}
-
-// Custom Colors
-export const CustomColors: Story = {
- render: () => (
-
-
-
-
-
-
- )
-}
-
-// In Context
-export const InContext: Story = {
- render: () => (
-
-
-
Form Submission
-
Your form has been processed.
-
-
-
-
-
Validation Error
-
Please fix the following issues:
-
-
-
-
-
System Status
-
-
-
-
-
-
-
-
- )
-}
-
-// Use Cases
-export const UseCases: Story = {
- render: () => (
-
-
-
Success States
-
-
-
-
-
-
-
-
-
-
Error States
-
-
-
-
-
-
-
-
-
-
Warning States
-
-
-
-
-
-
-
-
-
-
Info States
-
-
-
-
-
-
-
-
- )
-}
-
-// Long Messages
-export const LongMessages: Story = {
- render: () => (
-
-
-
-
-
-
- )
-}
diff --git a/packages/ui/stories/components/base/TextBadge.stories.tsx b/packages/ui/stories/components/base/TextBadge.stories.tsx
deleted file mode 100644
index a62120193d..0000000000
--- a/packages/ui/stories/components/base/TextBadge.stories.tsx
+++ /dev/null
@@ -1,383 +0,0 @@
-import type { Meta, StoryObj } from '@storybook/react'
-
-import TextBadge from '../../../src/components/base/TextBadge'
-
-const meta: Meta = {
- title: 'Base/TextBadge',
- component: TextBadge,
- parameters: {
- layout: 'centered'
- },
- tags: ['autodocs'],
- argTypes: {
- text: {
- control: 'text',
- description: '徽章显示的文字'
- },
- style: {
- control: false,
- description: '自定义样式对象'
- }
- }
-}
-
-export default meta
-type Story = StoryObj
-
-export const Default: Story = {
- args: {
- text: '新'
- }
-}
-
-export const ShortText: Story = {
- args: {
- text: 'V2'
- }
-}
-
-export const LongText: Story = {
- args: {
- text: '热门推荐'
- }
-}
-
-export const Numbers: Story = {
- args: {
- text: '99+'
- }
-}
-
-export const Status: Story = {
- args: {
- text: '已完成'
- }
-}
-
-export const Version: Story = {
- args: {
- text: 'v1.2.0'
- }
-}
-
-export const CustomStyle: Story = {
- args: {
- text: '自定义',
- style: {
- backgroundColor: '#10b981',
- color: 'white',
- fontSize: '11px'
- }
- }
-}
-
-export const CustomClassName: Story = {
- args: {
- text: '特殊样式',
- className:
- 'bg-purple-100 dark:bg-purple-900/30 text-purple-600 dark:text-purple-400 border border-purple-200 dark:border-purple-700'
- }
-}
-
-export const ColorVariations: Story = {
- render: () => (
-
- )
-}
-
-export const StatusBadges: Story = {
- render: () => (
-
- )
-}
-
-export const InUserInterface: Story = {
- render: () => (
-
-
界面应用示例
-
-
- {/* 导航菜单 */}
-
-
导航菜单
-
-
-
- {/* 卡片列表 */}
-
-
文章列表
-
-
-
-
-
React 18 新特性介绍
-
介绍 React 18 的并发特性...
-
-
-
-
-
-
-
-
-
-
-
-
Node.js 性能优化指南
-
深入了解 Node.js 性能优化...
-
-
-
-
-
-
-
-
-
-
-
-
TypeScript 最佳实践
-
TypeScript 开发的最佳实践...
-
-
-
-
-
-
-
-
-
-
- {/* 用户列表 */}
-
-
-
- )
-}
-
-export const VersionTags: Story = {
- render: () => (
-
- )
-}
-
-export const NumberBadges: Story = {
- render: () => (
-
-
数字徽章
-
-
-
通知数量
-
-
- 消息
-
-
-
- 任务
-
-
-
- 评论
-
-
-
-
-
-
-
统计数据
-
-
- 访问量
-
-
-
- 下载
-
-
-
- 收藏
-
-
-
-
-
-
- )
-}
-
-export const SizeVariations: Story = {
- render: () => (
-
- )
-}
-
-export const OutlineBadges: Story = {
- render: () => (
-
- )
-}
diff --git a/packages/ui/stories/components/display/Ellipsis.stories.tsx b/packages/ui/stories/components/display/Ellipsis.stories.tsx
index 38608e5ca3..add2c98e06 100644
--- a/packages/ui/stories/components/display/Ellipsis.stories.tsx
+++ b/packages/ui/stories/components/display/Ellipsis.stories.tsx
@@ -1,6 +1,6 @@
import type { Meta, StoryObj } from '@storybook/react'
-import Ellipsis from '../../../src/components/display/Ellipsis'
+import Ellipsis from '../../../src/components/composites/Ellipsis'
const meta = {
title: 'Display/Ellipsis',
diff --git a/packages/ui/stories/components/display/ExpandableText.stories.tsx b/packages/ui/stories/components/display/ExpandableText.stories.tsx
index 3f73cb82f9..2f02cec9f1 100644
--- a/packages/ui/stories/components/display/ExpandableText.stories.tsx
+++ b/packages/ui/stories/components/display/ExpandableText.stories.tsx
@@ -1,6 +1,6 @@
import type { Meta, StoryObj } from '@storybook/react'
-import ExpandableText from '../../../src/components/display/ExpandableText'
+import ExpandableText from '../../../src/components/composites/ExpandableText'
const meta: Meta = {
title: 'Display/ExpandableText',
diff --git a/packages/ui/stories/components/display/ListItem.stories.tsx b/packages/ui/stories/components/display/ListItem.stories.tsx
index c700e72170..71ceff3410 100644
--- a/packages/ui/stories/components/display/ListItem.stories.tsx
+++ b/packages/ui/stories/components/display/ListItem.stories.tsx
@@ -16,7 +16,7 @@ import {
} from 'lucide-react'
import { action } from 'storybook/actions'
-import ListItem from '../../../src/components/display/ListItem'
+import ListItem from '../../../src/components/composites/ListItem'
const meta: Meta = {
title: 'Display/ListItem',
diff --git a/packages/ui/stories/components/display/MaxContextCount.stories.tsx b/packages/ui/stories/components/display/MaxContextCount.stories.tsx
index 361ce1cb6d..7713fe6631 100644
--- a/packages/ui/stories/components/display/MaxContextCount.stories.tsx
+++ b/packages/ui/stories/components/display/MaxContextCount.stories.tsx
@@ -1,6 +1,6 @@
import type { Meta, StoryObj } from '@storybook/react'
-import MaxContextCount from '../../../src/components/display/MaxContextCount'
+import MaxContextCount from '../../../src/components/composites/MaxContextCount'
const meta: Meta = {
title: 'Display/MaxContextCount',
diff --git a/packages/ui/stories/components/display/ThinkingEffect.stories.tsx b/packages/ui/stories/components/display/ThinkingEffect.stories.tsx
index 8faed695b8..89425d9be3 100644
--- a/packages/ui/stories/components/display/ThinkingEffect.stories.tsx
+++ b/packages/ui/stories/components/display/ThinkingEffect.stories.tsx
@@ -2,7 +2,7 @@ import { Button } from '@heroui/react'
import type { Meta, StoryObj } from '@storybook/react'
import { useEffect, useMemo, useState } from 'react'
-import ThinkingEffect from '../../../src/components/display/ThinkingEffect'
+import ThinkingEffect from '../../../src/components/composites/ThinkingEffect'
const meta: Meta = {
title: 'Display/ThinkingEffect',
diff --git a/packages/ui/stories/components/interactive/CodeEditor.stories.tsx b/packages/ui/stories/components/interactive/CodeEditor.stories.tsx
index c5ccbe6c5b..03be17e036 100644
--- a/packages/ui/stories/components/interactive/CodeEditor.stories.tsx
+++ b/packages/ui/stories/components/interactive/CodeEditor.stories.tsx
@@ -1,8 +1,8 @@
import type { Meta, StoryObj } from '@storybook/react-vite'
import { action } from 'storybook/actions'
-import type { LanguageConfig } from '../../../src/components/interactive/CodeEditor'
-import CodeEditor, { getCmThemeByName, getCmThemeNames } from '../../../src/components/interactive/CodeEditor'
+import type { LanguageConfig } from '../../../src/components/composites/CodeEditor'
+import CodeEditor, { getCmThemeByName, getCmThemeNames } from '../../../src/components/composites/CodeEditor'
// 示例语言配置 - 为 Storybook 提供更丰富的语言支持演示
const exampleLanguageConfig: LanguageConfig = {
diff --git a/packages/ui/stories/components/interactive/Selector.stories.tsx b/packages/ui/stories/components/interactive/Selector.stories.tsx
index 15f3e0925d..6d853ddde0 100644
--- a/packages/ui/stories/components/interactive/Selector.stories.tsx
+++ b/packages/ui/stories/components/interactive/Selector.stories.tsx
@@ -1,7 +1,7 @@
import type { Meta } from '@storybook/react'
import { useState } from 'react'
-import Selector from '../../../src/components/base/Selector'
+import Selector from '../../../src/components/primitives/Selector'
const meta: Meta = {
title: 'Interactive/Selector',
diff --git a/packages/ui/stories/components/interactive/Sortable.stories.tsx b/packages/ui/stories/components/interactive/Sortable.stories.tsx
index 33c456403e..701616dcff 100644
--- a/packages/ui/stories/components/interactive/Sortable.stories.tsx
+++ b/packages/ui/stories/components/interactive/Sortable.stories.tsx
@@ -2,7 +2,7 @@ import type { Meta, StoryObj } from '@storybook/react-vite'
import clsx from 'clsx'
import { useMemo, useState } from 'react'
-import { Sortable } from '../../../src/components/interactive/Sortable'
+import { Sortable } from '../../../src/components/composites/Sortable'
import { useDndReorder } from '../../../src/hooks'
type ExampleItem = { id: number; label: string }
diff --git a/packages/ui/stories/components/layout/HorizontalScrollContainer.stories.tsx b/packages/ui/stories/components/layout/HorizontalScrollContainer.stories.tsx
index 8d67057943..5546365f3b 100644
--- a/packages/ui/stories/components/layout/HorizontalScrollContainer.stories.tsx
+++ b/packages/ui/stories/components/layout/HorizontalScrollContainer.stories.tsx
@@ -1,7 +1,7 @@
import type { Meta, StoryObj } from '@storybook/react-vite'
import { useState } from 'react'
-import HorizontalScrollContainer from '../../../src/components/layout/HorizontalScrollContainer'
+import HorizontalScrollContainer from '../../../src/components/composites/HorizontalScrollContainer'
const meta: Meta = {
title: 'Layout/HorizontalScrollContainer',
diff --git a/packages/ui/stories/components/layout/Scrollbar.stories.tsx b/packages/ui/stories/components/layout/Scrollbar.stories.tsx
index 8c8cd0cb90..46334333a7 100644
--- a/packages/ui/stories/components/layout/Scrollbar.stories.tsx
+++ b/packages/ui/stories/components/layout/Scrollbar.stories.tsx
@@ -1,6 +1,6 @@
import type { Meta, StoryObj } from '@storybook/react-vite'
-import Scrollbar from '../../../src/components/layout/Scrollbar'
+import Scrollbar from '../../../src/components/composites/Scrollbar'
const meta: Meta = {
title: 'Layout/Scrollbar',
diff --git a/src/renderer/src/components/Buttons/ActionIconButton.tsx b/src/renderer/src/components/Buttons/ActionIconButton.tsx
index a492a48571..9779a6aa7f 100644
--- a/src/renderer/src/components/Buttons/ActionIconButton.tsx
+++ b/src/renderer/src/components/Buttons/ActionIconButton.tsx
@@ -1,8 +1,7 @@
-import { cn } from '@cherrystudio/ui'
-import { Button, type ButtonProps } from '@cherrystudio/ui'
+import { Button, cn } from '@cherrystudio/ui'
import React, { memo } from 'react'
-interface ActionIconButtonProps extends Omit {
+interface ActionIconButtonProps extends Omit, 'ref'> {
icon: React.ReactNode
active?: boolean
}
@@ -13,19 +12,17 @@ interface ActionIconButtonProps extends Omit {
const ActionIconButton: React.FC = ({ icon, active = false, className, ...props }) => {
return (
+ {...props}>
+ {icon}
+
)
}
diff --git a/src/renderer/src/components/CodeBlockView/HtmlArtifactsCard.tsx b/src/renderer/src/components/CodeBlockView/HtmlArtifactsCard.tsx
index 77e46137e6..e9d087b2fa 100644
--- a/src/renderer/src/components/CodeBlockView/HtmlArtifactsCard.tsx
+++ b/src/renderer/src/components/CodeBlockView/HtmlArtifactsCard.tsx
@@ -89,32 +89,24 @@ const HtmlArtifactsCard: FC = ({ html, onSave, isStreaming = false }) =>
- } onPress={() => setIsPopupOpen(true)} color="primary">
+ setIsPopupOpen(true)}>
+
{t('chat.artifacts.button.preview')}
>
) : (
- }
- onPress={() => setIsPopupOpen(true)}
- variant="light"
- isDisabled={!hasContent}>
+ setIsPopupOpen(true)} variant="ghost" disabled={!hasContent}>
+
{t('chat.artifacts.button.preview')}
- }
- onPress={handleOpenExternal}
- variant="light"
- isDisabled={!hasContent}>
+
+
{t('chat.artifacts.button.openExternal')}
- }
- onPress={handleDownload}
- variant="light"
- isDisabled={!hasContent}>
+
+
{t('code_block.download.label')}
diff --git a/src/renderer/src/components/CodeBlockView/HtmlArtifactsPopup.tsx b/src/renderer/src/components/CodeBlockView/HtmlArtifactsPopup.tsx
index d7f14b209a..8e155d8be0 100644
--- a/src/renderer/src/components/CodeBlockView/HtmlArtifactsPopup.tsx
+++ b/src/renderer/src/components/CodeBlockView/HtmlArtifactsPopup.tsx
@@ -85,23 +85,23 @@ const HtmlArtifactsPopup: React.FC = ({ open, title, ht
e.stopPropagation()}>
}
- onPress={() => setViewMode('split')}>
+ variant={viewMode === 'split' ? 'default' : 'secondary'}
+ onClick={() => setViewMode('split')}>
+
{t('html_artifacts.split')}
}
- onPress={() => setViewMode('code')}>
+ variant={viewMode === 'code' ? 'default' : 'secondary'}
+ onClick={() => setViewMode('code')}>
+
{t('html_artifacts.code')}
}
- onPress={() => setViewMode('preview')}>
+ variant={viewMode === 'preview' ? 'default' : 'secondary'}
+ onClick={() => setViewMode('preview')}>
+
{t('html_artifacts.preview')}
@@ -127,17 +127,17 @@ const HtmlArtifactsPopup: React.FC = ({ open, title, ht
]
}}>
- } isIconOnly className="nodrag" />
+
+
+
- setIsFullscreen(!isFullscreen)}
- variant="light"
- startContent={isFullscreen ? : }
- isIconOnly
- className="nodrag"
- />
- } isIconOnly className="nodrag" />
+ setIsFullscreen(!isFullscreen)} variant="ghost" size="icon" className="nodrag">
+ {isFullscreen ? : }
+
+
+
+
)
@@ -165,7 +165,7 @@ const HtmlArtifactsPopup: React.FC = ({ open, title, ht
/>
-
+
{saved ? (
) : (
diff --git a/src/renderer/src/components/ConfirmDialog.tsx b/src/renderer/src/components/ConfirmDialog.tsx
index 5ac0ae1273..e8749d819f 100644
--- a/src/renderer/src/components/ConfirmDialog.tsx
+++ b/src/renderer/src/components/ConfirmDialog.tsx
@@ -1,4 +1,4 @@
-import { Button } from '@heroui/react'
+import { Button } from '@cherrystudio/ui'
import { CheckIcon, XIcon } from 'lucide-react'
import type { FC } from 'react'
import { createPortal } from 'react-dom'
@@ -28,11 +28,13 @@ const ConfirmDialog: FC = ({ x, y, message, onConfirm, onCancel }) => {
{message}
-
-
+
+
-
-
+
+
diff --git a/src/renderer/src/components/ContentSearch.tsx b/src/renderer/src/components/ContentSearch.tsx
index 0dc6d32145..6eb4ea7b1e 100644
--- a/src/renderer/src/components/ContentSearch.tsx
+++ b/src/renderer/src/components/ContentSearch.tsx
@@ -365,8 +365,7 @@ export const ContentSearch = React.forwardRef(
{showUserToggle && (
}
@@ -375,7 +374,7 @@ export const ContentSearch = React.forwardRef(
)}
(
}
@@ -408,16 +407,16 @@ export const ContentSearch = React.forwardRef(
}
/>
}
/>
- } />
+ } />
diff --git a/src/renderer/src/components/ErrorBoundary.tsx b/src/renderer/src/components/ErrorBoundary.tsx
index 12e9ab5935..28ece64f38 100644
--- a/src/renderer/src/components/ErrorBoundary.tsx
+++ b/src/renderer/src/components/ErrorBoundary.tsx
@@ -24,10 +24,10 @@ const DefaultFallback: ComponentType = (props: FallbackProps): Re
type="error"
action={
-
+
{t('error.boundary.default.devtools')}
-
+
{t('error.boundary.default.reload')}
diff --git a/src/renderer/src/components/ExpandableText.tsx b/src/renderer/src/components/ExpandableText.tsx
index fc28d73ba4..2d98dd08fa 100644
--- a/src/renderer/src/components/ExpandableText.tsx
+++ b/src/renderer/src/components/ExpandableText.tsx
@@ -22,7 +22,7 @@ const ExpandableText = ({
const button = useMemo(() => {
return (
-
+
{isExpanded ? t('common.collapse') : t('common.expand')}
)
diff --git a/src/renderer/src/components/InputEmbeddingDimension.tsx b/src/renderer/src/components/InputEmbeddingDimension.tsx
index f5d8134e96..74a46a211c 100644
--- a/src/renderer/src/components/InputEmbeddingDimension.tsx
+++ b/src/renderer/src/components/InputEmbeddingDimension.tsx
@@ -78,12 +78,11 @@ const InputEmbeddingDimension = ({
}
- isIconOnly
- />
+ disabled={disabled || loading}
+ onClick={handleFetchDimension}
+ size="icon-sm">
+
+
)
diff --git a/src/renderer/src/components/LocalBackupManager.tsx b/src/renderer/src/components/LocalBackupManager.tsx
index 527dfeb7b4..3018a331de 100644
--- a/src/renderer/src/components/LocalBackupManager.tsx
+++ b/src/renderer/src/components/LocalBackupManager.tsx
@@ -196,18 +196,17 @@ export function LocalBackupManager({ visible, onClose, localBackupDir, restoreMe
handleRestore(record.fileName)}
- isDisabled={restoring || deleting}>
+ variant="ghost"
+ onClick={() => handleRestore(record.fileName)}
+ disabled={restoring || deleting}>
{t('settings.data.local.backup.manager.restore.text')}
handleDeleteSingle(record.fileName)}
- isDisabled={deleting || restoring}>
+ variant="ghost"
+ onClick={() => handleDeleteSingle(record.fileName)}
+ disabled={deleting || restoring}>
{t('settings.data.local.backup.manager.delete.text')}
@@ -232,19 +231,19 @@ export function LocalBackupManager({ visible, onClose, localBackupDir, restoreMe
transitionName="animation-move-down"
classNames={{ footer: 'flex justify-end gap-1' }}
footer={[
- } onPress={fetchBackupFiles} isDisabled={loading}>
+
+
{t('settings.data.local.backup.manager.refresh')}
,
}
- onPress={handleDeleteSelected}
- isDisabled={selectedRowKeys.length === 0 || deleting}
- isLoading={deleting}>
+ variant="destructive"
+ onClick={handleDeleteSelected}
+ disabled={selectedRowKeys.length === 0 || deleting}>
+
{t('settings.data.local.backup.manager.delete.selected')} ({selectedRowKeys.length})
,
-
+
{t('common.close')}
]}>
diff --git a/src/renderer/src/components/LocalBackupModals.tsx b/src/renderer/src/components/LocalBackupModals.tsx
index ab0160ff2a..d65e8044ac 100644
--- a/src/renderer/src/components/LocalBackupModals.tsx
+++ b/src/renderer/src/components/LocalBackupModals.tsx
@@ -35,10 +35,10 @@ export function LocalBackupModal({
onCancel={handleCancel}
classNames={{ footer: 'flex justify-end gap-1' }}
footer={[
-
+
{t('common.cancel')}
,
-
+
{t('common.confirm')}
]}>
diff --git a/src/renderer/src/components/MinApp/MinappPopupContainer.tsx b/src/renderer/src/components/MinApp/MinappPopupContainer.tsx
index 6f532f15a2..d7c2b40a26 100644
--- a/src/renderer/src/components/MinApp/MinappPopupContainer.tsx
+++ b/src/renderer/src/components/MinApp/MinappPopupContainer.tsx
@@ -130,7 +130,7 @@ const GoogleLoginTip = ({
banner
onClose={handleClose}
action={
-
+
{t('common.open')} Google
}
diff --git a/src/renderer/src/components/ModelSelectButton.tsx b/src/renderer/src/components/ModelSelectButton.tsx
index f564bf978a..9697453ac1 100644
--- a/src/renderer/src/components/ModelSelectButton.tsx
+++ b/src/renderer/src/components/ModelSelectButton.tsx
@@ -24,13 +24,9 @@ const ModelSelectButton = ({ model, onSelectModel, modelFilter, noTooltip, toolt
const button = useMemo(() => {
return (
- }
- variant="light"
- radius="full"
- isIconOnly
- onPress={onClick}
- />
+
+
+
)
}, [model, onClick])
diff --git a/src/renderer/src/components/NutstorePathSelector.tsx b/src/renderer/src/components/NutstorePathSelector.tsx
index ffd9fb8288..52ef3232aa 100644
--- a/src/renderer/src/components/NutstorePathSelector.tsx
+++ b/src/renderer/src/components/NutstorePathSelector.tsx
@@ -36,10 +36,10 @@ function NewFolder(props: NewFolderProps) {
setName(e.target.value)} />
- onConfirm(name)}>
+ onConfirm(name)}>
{t('settings.data.nutstore.new_folder.button.confirm')}
- onCancel()}>
+ onCancel()}>
{t('settings.data.nutstore.new_folder.button.cancel')}
@@ -235,14 +235,14 @@ export function NustorePathSelectorFooter(props: FooterProps) {
return (
- {t('settings.data.nutstore.pathSelector.return')}
-
+ {t('settings.data.nutstore.pathSelector.return')}
+
{t('settings.data.nutstore.new_folder.button.label')}
- {t('settings.data.nutstore.new_folder.button.cancel')}
-
+ {t('settings.data.nutstore.new_folder.button.cancel')}
+
{t('backup.confirm.button')}
diff --git a/src/renderer/src/components/OAuth/OAuthButton.tsx b/src/renderer/src/components/OAuth/OAuthButton.tsx
index 5584adc329..6d786427bb 100644
--- a/src/renderer/src/components/OAuth/OAuthButton.tsx
+++ b/src/renderer/src/components/OAuth/OAuthButton.tsx
@@ -1,4 +1,4 @@
-import { Button, type ButtonProps } from '@cherrystudio/ui'
+import { Button } from '@cherrystudio/ui'
import { getProviderLabel } from '@renderer/i18n/label'
import type { Provider } from '@renderer/types'
import {
@@ -12,7 +12,7 @@ import {
import type { FC } from 'react'
import { useTranslation } from 'react-i18next'
-interface Props extends ButtonProps {
+interface Props extends React.ComponentProps {
provider: Provider
onSuccess?: (key: string) => void
}
@@ -54,7 +54,7 @@ const OAuthButton: FC = ({ provider, onSuccess, ...buttonProps }) => {
}
return (
-
+
{t('settings.provider.oauth.button', { provider: getProviderLabel(provider.id) })}
)
diff --git a/src/renderer/src/components/Popups/ApiKeyListPopup/item.tsx b/src/renderer/src/components/Popups/ApiKeyListPopup/item.tsx
index cfd228afff..d7f5f52907 100644
--- a/src/renderer/src/components/Popups/ApiKeyListPopup/item.tsx
+++ b/src/renderer/src/components/Popups/ApiKeyListPopup/item.tsx
@@ -109,22 +109,17 @@ const ApiKeyItem: FC = ({
}
- onPress={handleSave}
- isDisabled={disabled}
- isIconOnly
- />
+ variant={hasUnsavedChanges ? 'default' : 'ghost'}
+ onClick={handleSave}
+ disabled={disabled}
+ size="icon">
+
+
- }
- onPress={handleCancelEdit}
- isDisabled={disabled}
- isIconOnly
- />
+
+
+
>
@@ -146,23 +141,15 @@ const ApiKeyItem: FC = ({
{showHealthCheck && (
- }
- onPress={onCheck}
- isDisabled={disabled}
- isIconOnly
- />
+
+
+
)}
- }
- onPress={handleEdit}
- isDisabled={disabled}
- isIconOnly
- />
+
+
+
= ({
cancelText={t('common.cancel')}
okButtonProps={{ color: 'danger' }}>
- } isDisabled={disabled} isIconOnly />
+
+
+
diff --git a/src/renderer/src/components/Popups/ApiKeyListPopup/list.tsx b/src/renderer/src/components/Popups/ApiKeyListPopup/list.tsx
index 7fafa7c10e..cb12681390 100644
--- a/src/renderer/src/components/Popups/ApiKeyListPopup/list.tsx
+++ b/src/renderer/src/components/Popups/ApiKeyListPopup/list.tsx
@@ -143,25 +143,21 @@ export const ApiKeyList: FC = ({ provider, updateProvider, show
cancelText={t('common.cancel')}
okButtonProps={{ color: 'danger' }}>
- }
- isDisabled={isChecking || !!pendingNewKey}
- color="danger"
- isIconOnly
- />
+
+
+
{/* 批量检查 */}
}
- onPress={checkAllKeysConnectivity}
- isDisabled={isChecking || !!pendingNewKey}
- isIconOnly
- />
+ variant="ghost"
+ onClick={checkAllKeysConnectivity}
+ disabled={isChecking || !!pendingNewKey}
+ size="icon">
+
+
)}
@@ -169,11 +165,10 @@ export const ApiKeyList: FC = ({ provider, updateProvider, show
{/* 添加新 key */}
}
+ onClick={handleAddNew}
autoFocus={shouldAutoFocus()}
- isDisabled={isChecking || !!pendingNewKey}>
+ disabled={isChecking || !!pendingNewKey}>
+
{t('common.add')}
diff --git a/src/renderer/src/components/Popups/MultiSelectionPopup.tsx b/src/renderer/src/components/Popups/MultiSelectionPopup.tsx
index 35f840139c..a707aa5798 100644
--- a/src/renderer/src/components/Popups/MultiSelectionPopup.tsx
+++ b/src/renderer/src/components/Popups/MultiSelectionPopup.tsx
@@ -37,37 +37,34 @@ const MultiSelectActionPopup: FC = ({ topic }) => {
}
- isDisabled={isActionDisabled}
- onPress={() => handleAction('save')}
- isIconOnly
- />
+ className="rounded-full"
+ variant="ghost"
+ disabled={isActionDisabled}
+ onClick={() => handleAction('save')}
+ size="icon">
+
+
}
- isDisabled={isActionDisabled}
- onPress={() => handleAction('copy')}
- isIconOnly
- />
+ className="rounded-full"
+ variant="ghost"
+ disabled={isActionDisabled}
+ onClick={() => handleAction('copy')}
+ size="icon">
+
+
- }
- onPress={() => handleAction('delete')}
- isIconOnly
- />
+ handleAction('delete')} size="icon">
+
+
- } onPress={handleClose} isIconOnly />
+
+
+
diff --git a/src/renderer/src/components/Popups/PrivacyPopup.tsx b/src/renderer/src/components/Popups/PrivacyPopup.tsx
index 0cc80a427e..08da177215 100644
--- a/src/renderer/src/components/Popups/PrivacyPopup.tsx
+++ b/src/renderer/src/components/Popups/PrivacyPopup.tsx
@@ -93,11 +93,11 @@ const PopupContainer: React.FC = ({ title, showDeclineButton = true, reso
width={900}
footer={[
showDeclineButton && (
-
+
{i18n.language.startsWith('zh') ? '拒绝' : 'Decline'}
),
-
+
{i18n.language.startsWith('zh') ? '同意并继续' : 'Accept and Continue'}
].filter(Boolean)}>
diff --git a/src/renderer/src/components/Popups/agent/AgentModal.tsx b/src/renderer/src/components/Popups/agent/AgentModal.tsx
index ea8e7dda7c..32b4e0bc68 100644
--- a/src/renderer/src/components/Popups/agent/AgentModal.tsx
+++ b/src/renderer/src/components/Popups/agent/AgentModal.tsx
@@ -362,7 +362,7 @@ export const AgentModal: React.FC = ({ agent, isOpen: _isOpen, onClose: _
@@ -448,7 +448,7 @@ export const AgentModal: React.FC = ({ agent, isOpen: _isOpen, onClose: _
{path}
- removeAccessiblePath(path)}>
+ removeAccessiblePath(path)}>
{t('common.delete')}
@@ -466,7 +466,7 @@ export const AgentModal: React.FC
= ({ agent, isOpen: _isOpen, onClose: _
/>
- {t('common.close')}
+ {t('common.close')}
{isEditing(agent) ? t('common.confirm') : t('common.add')}
diff --git a/src/renderer/src/components/Popups/agent/SessionModal.tsx b/src/renderer/src/components/Popups/agent/SessionModal.tsx
index 368c943a1c..ae9aebebc7 100644
--- a/src/renderer/src/components/Popups/agent/SessionModal.tsx
+++ b/src/renderer/src/components/Popups/agent/SessionModal.tsx
@@ -305,7 +305,7 @@ export const SessionModal: React.FC = ({
- {t('common.close')}
+ {t('common.close')}
{isEditing(session) ? t('common.confirm') : t('common.add')}
diff --git a/src/renderer/src/components/Preview/ImageToolButton.tsx b/src/renderer/src/components/Preview/ImageToolButton.tsx
index f836d6ec35..18eafa82de 100644
--- a/src/renderer/src/components/Preview/ImageToolButton.tsx
+++ b/src/renderer/src/components/Preview/ImageToolButton.tsx
@@ -4,13 +4,15 @@ import { memo } from 'react'
interface ImageToolButtonProps {
tooltip: string
icon: React.ReactNode
- onPress: () => void
+ onClick: () => void
}
-const ImageToolButton = ({ tooltip, icon, onPress }: ImageToolButtonProps) => {
+const ImageToolButton = ({ tooltip, icon, onClick }: ImageToolButtonProps) => {
return (
-
+
+ {icon}
+
)
}
diff --git a/src/renderer/src/components/Preview/ImageToolbar.tsx b/src/renderer/src/components/Preview/ImageToolbar.tsx
index ffd4dff153..11d9695c25 100644
--- a/src/renderer/src/components/Preview/ImageToolbar.tsx
+++ b/src/renderer/src/components/Preview/ImageToolbar.tsx
@@ -36,9 +36,9 @@ const ImageToolbar = ({ pan, zoom, dialog, className }: ImageToolbarProps) => {
}
- onPress={() => pan(0, -panDistance)}
+ onClick={() => pan(0, -panDistance)}
/>
- } onPress={dialog} />
+ } onClick={dialog} />
{/* Left, Reset, Right */}
@@ -46,13 +46,13 @@ const ImageToolbar = ({ pan, zoom, dialog, className }: ImageToolbarProps) => {
}
- onPress={() => pan(-panDistance, 0)}
+ onClick={() => pan(-panDistance, 0)}
/>
- } onPress={handleReset} />
+ } onClick={handleReset} />
}
- onPress={() => pan(panDistance, 0)}
+ onClick={() => pan(panDistance, 0)}
/>
@@ -61,17 +61,17 @@ const ImageToolbar = ({ pan, zoom, dialog, className }: ImageToolbarProps) => {
}
- onPress={() => zoom(-zoomDelta)}
+ onClick={() => zoom(-zoomDelta)}
/>
}
- onPress={() => pan(0, panDistance)}
+ onClick={() => pan(0, panDistance)}
/>
}
- onPress={() => zoom(zoomDelta)}
+ onClick={() => zoom(zoomDelta)}
/>
diff --git a/src/renderer/src/components/Preview/__tests__/ImageToolButton.test.tsx b/src/renderer/src/components/Preview/__tests__/ImageToolButton.test.tsx
index 19e0c60c00..c4cd44d00c 100644
--- a/src/renderer/src/components/Preview/__tests__/ImageToolButton.test.tsx
+++ b/src/renderer/src/components/Preview/__tests__/ImageToolButton.test.tsx
@@ -30,7 +30,7 @@ describe('ImageToolButton', () => {
const defaultProps = {
tooltip: 'Test tooltip',
icon: Icon,
- onPress: vi.fn()
+ onClick: vi.fn()
}
it('should match snapshot', () => {
diff --git a/src/renderer/src/components/RichEditor/components/ImageUploader.tsx b/src/renderer/src/components/RichEditor/components/ImageUploader.tsx
index 4ff13843dd..d85db79687 100644
--- a/src/renderer/src/components/RichEditor/components/ImageUploader.tsx
+++ b/src/renderer/src/components/RichEditor/components/ImageUploader.tsx
@@ -175,10 +175,10 @@ export const ImageUploader: React.FC = ({ onImageSelect, vis
prefix={}
style={{ flex: 1 }}
/>
- setUrlInput('')} className="border border-gray-300 bg-white text-gray-700">
+ setUrlInput('')} className="border border-gray-300 bg-white text-gray-700">
{t('common.clear')}
-
+
{t('richEditor.imageUploader.embedImage')}
diff --git a/src/renderer/src/components/RichEditor/components/LinkEditor.tsx b/src/renderer/src/components/RichEditor/components/LinkEditor.tsx
index 12cd8aad61..cd2bff24b3 100644
--- a/src/renderer/src/components/RichEditor/components/LinkEditor.tsx
+++ b/src/renderer/src/components/RichEditor/components/LinkEditor.tsx
@@ -147,16 +147,16 @@ const LinkEditor: React.FC = ({
{showRemove && (
-
+
{t('richEditor.link.remove')}
)}
-
+
{t('common.cancel')}
-
+
{t('common.save')}
diff --git a/src/renderer/src/components/RichEditor/components/MathInputDialog.tsx b/src/renderer/src/components/RichEditor/components/MathInputDialog.tsx
index 241e1a5235..3eb4294293 100644
--- a/src/renderer/src/components/RichEditor/components/MathInputDialog.tsx
+++ b/src/renderer/src/components/RichEditor/components/MathInputDialog.tsx
@@ -149,10 +149,10 @@ const MathInputDialog: React.FC = ({
style={{ marginBottom: 12, fontFamily: 'monospace' }}
/>
-
+
{t('common.cancel')}
-
+
{t('common.confirm')}
diff --git a/src/renderer/src/components/RichEditor/extensions/code-block-shiki/CodeBlockNodeView.tsx b/src/renderer/src/components/RichEditor/extensions/code-block-shiki/CodeBlockNodeView.tsx
index b989c545cf..c8fd140ff7 100644
--- a/src/renderer/src/components/RichEditor/extensions/code-block-shiki/CodeBlockNodeView.tsx
+++ b/src/renderer/src/components/RichEditor/extensions/code-block-shiki/CodeBlockNodeView.tsx
@@ -67,14 +67,9 @@ const CodeBlockNodeView: FC = (props) => {
style={{ minWidth: 90 }}
/>
- }
- isIconOnly
- className="code-block-copy-btn"
- onPress={handleCopy}
- />
+
+
+
diff --git a/src/renderer/src/components/S3BackupManager.tsx b/src/renderer/src/components/S3BackupManager.tsx
index 6f92477193..f4e50047de 100644
--- a/src/renderer/src/components/S3BackupManager.tsx
+++ b/src/renderer/src/components/S3BackupManager.tsx
@@ -232,14 +232,10 @@ export function S3BackupManager({ visible, onClose, s3Config, restoreMethod }: S
width: 160,
render: (_: any, record: BackupFile) => (
<>
- handleRestore(record.fileName)} isDisabled={restoring || deleting}>
+ handleRestore(record.fileName)} disabled={restoring || deleting}>
{t('settings.data.s3.manager.restore')}
- handleDeleteSingle(record.fileName)}
- isDisabled={deleting || restoring}>
+ handleDeleteSingle(record.fileName)} disabled={deleting || restoring}>
{t('settings.data.s3.manager.delete.label')}
>
@@ -254,26 +250,6 @@ export function S3BackupManager({ visible, onClose, s3Config, restoreMethod }: S
}
}
- const footerContent = (
-
- } onPress={fetchBackupFiles} isDisabled={loading}>
- {t('settings.data.s3.manager.refresh')}
-
- }
- onPress={handleDeleteSelected}
- isDisabled={selectedRowKeys.length === 0 || deleting}
- isLoading={deleting}>
- {t('settings.data.s3.manager.delete.selected', { count: selectedRowKeys.length })}
-
-
- {t('settings.data.s3.manager.close')}
-
-
- )
-
return (
+ footer={[
+
+
+ {t('settings.data.s3.manager.refresh')}
+ ,
+
+
+ {t('settings.data.s3.manager.delete.selected', { count: selectedRowKeys.length })}
+ ,
+
+ {t('settings.data.s3.manager.close')}
+
+ ]}>
= ({ text, onTranslated, disabled, style, isLoa
content={t('chat.input.translate', { target_language: getLanguageByLangcode(targetLanguage).label() })}
closeDelay={0}>
+ variant="ghost"
+ size="icon-sm"
+ className="rounded-full">
{isTranslating ? : }
diff --git a/src/renderer/src/components/UpdateDialog.tsx b/src/renderer/src/components/UpdateDialog.tsx
index ee87265c0d..9cb9b5b62b 100644
--- a/src/renderer/src/components/UpdateDialog.tsx
+++ b/src/renderer/src/components/UpdateDialog.tsx
@@ -77,13 +77,13 @@ const UpdateDialog: React.FC = ({ isOpen, onClose, releaseInf
-
+
{t('update.later')}
{
+ onClick={async () => {
await handleInstall()
onModalClose()
}}
diff --git a/src/renderer/src/components/WebdavBackupManager.tsx b/src/renderer/src/components/WebdavBackupManager.tsx
index eaf854c650..8143d244e4 100644
--- a/src/renderer/src/components/WebdavBackupManager.tsx
+++ b/src/renderer/src/components/WebdavBackupManager.tsx
@@ -239,14 +239,10 @@ export function WebdavBackupManager({
width: 160,
render: (_: any, record: BackupFile) => (
<>
- handleRestore(record.fileName)} isDisabled={restoring || deleting}>
+ handleRestore(record.fileName)} disabled={restoring || deleting}>
{t('settings.data.webdav.backup.manager.restore.text')}
- handleDeleteSingle(record.fileName)}
- isDisabled={deleting || restoring}>
+ handleDeleteSingle(record.fileName)} disabled={deleting || restoring}>
{t('settings.data.webdav.backup.manager.delete.text')}
>
@@ -270,19 +266,19 @@ export function WebdavBackupManager({
centered
transitionName="animation-move-down"
footer={[
- } onPress={fetchBackupFiles} isDisabled={loading}>
+
+
{t('settings.data.webdav.backup.manager.refresh')}
,
}
- onPress={handleDeleteSelected}
- isDisabled={selectedRowKeys.length === 0 || deleting}
- isLoading={deleting}>
+ variant="destructive"
+ onClick={handleDeleteSelected}
+ disabled={selectedRowKeys.length === 0 || deleting}>
+
{t('settings.data.webdav.backup.manager.delete.selected')} ({selectedRowKeys.length})
,
-
+
{t('common.close')}
]}>
diff --git a/src/renderer/src/pages/code/CodeToolsPage.tsx b/src/renderer/src/pages/code/CodeToolsPage.tsx
index 99d6d11708..ea98b3acb3 100644
--- a/src/renderer/src/pages/code/CodeToolsPage.tsx
+++ b/src/renderer/src/pages/code/CodeToolsPage.tsx
@@ -337,13 +337,8 @@ const CodeToolsPage: FC = () => {
alignItems: 'center'
}}>
{t('code.bun_required_message')}
- }
- onPress={handleInstallBun}
- isLoading={isInstallingBun}
- isDisabled={isInstallingBun}>
+
+
{isInstallingBun ? t('code.installing_bun') : t('code.install_bun')}
@@ -519,11 +514,9 @@ const CodeToolsPage: FC = () => {
selectedTerminal !== terminalApps.powershell &&
selectedTerminal !== terminalApps.windowsTerminal && (
- }
- isIconOnly
- onPress={() => handleSetCustomPath(selectedTerminal)}
- />
+ handleSetCustomPath(selectedTerminal)}>
+
+
)}
@@ -555,13 +548,11 @@ const CodeToolsPage: FC = () => {
}
size="lg"
- onPress={handleLaunch}
- isLoading={isLaunching}
- isDisabled={!canLaunch || !isBunInstalled}
- fullWidth={true}>
+ onClick={handleLaunch}
+ disabled={!canLaunch || !isBunInstalled || isLaunching}
+ className="w-full">
+
{isLaunching ? t('code.launching') : t('code.launch.label')}
diff --git a/src/renderer/src/pages/files/FilesPage.tsx b/src/renderer/src/pages/files/FilesPage.tsx
index 3265b20476..c4faf59a81 100644
--- a/src/renderer/src/pages/files/FilesPage.tsx
+++ b/src/renderer/src/pages/files/FilesPage.tsx
@@ -115,7 +115,9 @@ const FilesPage: FC = () => {
created_at_unix: dayjs(file.created_at).unix(),
actions: (
- } onPress={() => handleRename(file.id)} />
+ handleRename(file.id)}>
+
+
{
onConfirm={() => handleDelete(file.id, t)}
placement="left"
icon={}>
- } />
+
+
+
{fileType !== 'image' && (
{
{
+ onClick={() => {
if (sortField === field) {
setSortOrder(sortOrder === 'asc' ? 'desc' : 'asc')
} else {
diff --git a/src/renderer/src/pages/history/components/SearchMessage.tsx b/src/renderer/src/pages/history/components/SearchMessage.tsx
index 7f60c0c08c..4400f04948 100644
--- a/src/renderer/src/pages/history/components/SearchMessage.tsx
+++ b/src/renderer/src/pages/history/components/SearchMessage.tsx
@@ -46,14 +46,14 @@ const SearchMessage: FC = ({ message, ...props }) => {
locateToMessage(navigate, message)}
- startContent={}
- />
+ onClick={() => locateToMessage(navigate, message)}>
+
+
- locateToMessage(navigate, message)} startContent={}>
+ locateToMessage(navigate, message)}>
+
{t('history.locate.message')}
diff --git a/src/renderer/src/pages/history/components/TopicMessages.tsx b/src/renderer/src/pages/history/components/TopicMessages.tsx
index 139015998d..3d1400e7d4 100644
--- a/src/renderer/src/pages/history/components/TopicMessages.tsx
+++ b/src/renderer/src/pages/history/components/TopicMessages.tsx
@@ -65,19 +65,19 @@ const TopicMessages: FC = ({ topic: _topic, ...props }) => {
locateToMessage(navigate, message)}
- startContent={}
- />
+ onClick={() => locateToMessage(navigate, message)}>
+
+
))}
{isEmpty && }
{!isEmpty && (
- onContinueChat(topic)} startContent={}>
+ onContinueChat(topic)}>
+
{t('history.continue_chat')}
diff --git a/src/renderer/src/pages/history/components/TopicsHistory.tsx b/src/renderer/src/pages/history/components/TopicsHistory.tsx
index cbf6092a6d..5adb817ec2 100644
--- a/src/renderer/src/pages/history/components/TopicsHistory.tsx
+++ b/src/renderer/src/pages/history/components/TopicsHistory.tsx
@@ -41,7 +41,8 @@ const TopicsHistory: React.FC = ({ keywords, onClick, onSearch, ...props
- }>
+
+
{t('history.search.messages')}
@@ -76,7 +77,8 @@ const TopicsHistory: React.FC = ({ keywords, onClick, onSearch, ...props
))}
{keywords && (
- }>
+
+
{t('history.search.messages')}
diff --git a/src/renderer/src/pages/home/Inputbar/AttachmentButton.tsx b/src/renderer/src/pages/home/Inputbar/AttachmentButton.tsx
index e46b89367a..421e45791e 100644
--- a/src/renderer/src/pages/home/Inputbar/AttachmentButton.tsx
+++ b/src/renderer/src/pages/home/Inputbar/AttachmentButton.tsx
@@ -147,9 +147,9 @@ const AttachmentButton: FC = ({ ref, couldAddImageFile, extensions, files
content={couldAddImageFile ? t('chat.input.upload.image_or_document') : t('chat.input.upload.document')}
closeDelay={0}>
0}
- isDisabled={disabled}
+ disabled={disabled}
icon={}
/>
diff --git a/src/renderer/src/pages/home/Inputbar/GenerateImageButton.tsx b/src/renderer/src/pages/home/Inputbar/GenerateImageButton.tsx
index 71b1208099..8e912b6f93 100644
--- a/src/renderer/src/pages/home/Inputbar/GenerateImageButton.tsx
+++ b/src/renderer/src/pages/home/Inputbar/GenerateImageButton.tsx
@@ -21,9 +21,9 @@ const GenerateImageButton: FC = ({ model, assistant, onEnableGenerateImag
isGenerateImageModel(model) ? t('chat.input.generate_image') : t('chat.input.generate_image_not_supported')
}>
}
/>
diff --git a/src/renderer/src/pages/home/Inputbar/InputbarTools.tsx b/src/renderer/src/pages/home/Inputbar/InputbarTools.tsx
index 162d89f5cf..2c1fd7e802 100644
--- a/src/renderer/src/pages/home/Inputbar/InputbarTools.tsx
+++ b/src/renderer/src/pages/home/Inputbar/InputbarTools.tsx
@@ -357,7 +357,7 @@ const InputbarTools = ({
label: t('chat.input.new_topic', { Command: '' }),
component: (
- } />
+ } />
)
},
@@ -460,7 +460,7 @@ const InputbarTools = ({
label: t('chat.input.clear.label', { Command: '' }),
component: (
- } />
+ } />
)
},
@@ -470,7 +470,7 @@ const InputbarTools = ({
component: (
: }
/>
@@ -649,7 +649,7 @@ const InputbarTools = ({
{showCollapseButton && (
dispatch(setIsCollapsed(!isCollapse))}
+ onClick={() => dispatch(setIsCollapsed(!isCollapse))}
icon={
= ({ ref, selectedBases, onSelect, disabled
return (
0}
- isDisabled={disabled}
+ disabled={disabled}
icon={}
/>
diff --git a/src/renderer/src/pages/home/Inputbar/MCPToolsButton.tsx b/src/renderer/src/pages/home/Inputbar/MCPToolsButton.tsx
index 933f872043..0a2fd0758a 100644
--- a/src/renderer/src/pages/home/Inputbar/MCPToolsButton.tsx
+++ b/src/renderer/src/pages/home/Inputbar/MCPToolsButton.tsx
@@ -490,7 +490,7 @@ const MCPToolsButton: FC = ({ ref, setInputValue, resizeTextArea, assista
return (
0}
icon={}
/>
diff --git a/src/renderer/src/pages/home/Inputbar/MentionModelsButton.tsx b/src/renderer/src/pages/home/Inputbar/MentionModelsButton.tsx
index e95b4e703d..d14e12ceb9 100644
--- a/src/renderer/src/pages/home/Inputbar/MentionModelsButton.tsx
+++ b/src/renderer/src/pages/home/Inputbar/MentionModelsButton.tsx
@@ -305,7 +305,7 @@ const MentionModelsButton: FC = ({
return (
0}
icon={}
/>
diff --git a/src/renderer/src/pages/home/Inputbar/NewContextButton.tsx b/src/renderer/src/pages/home/Inputbar/NewContextButton.tsx
index 384d4b32de..b8ccbd836e 100644
--- a/src/renderer/src/pages/home/Inputbar/NewContextButton.tsx
+++ b/src/renderer/src/pages/home/Inputbar/NewContextButton.tsx
@@ -16,7 +16,7 @@ const NewContextButton: FC = ({ onNewContext }) => {
return (
- } />
+ } />
)
}
diff --git a/src/renderer/src/pages/home/Inputbar/QuickPhrasesButton.tsx b/src/renderer/src/pages/home/Inputbar/QuickPhrasesButton.tsx
index 4c0f3eb895..2f69f5466b 100644
--- a/src/renderer/src/pages/home/Inputbar/QuickPhrasesButton.tsx
+++ b/src/renderer/src/pages/home/Inputbar/QuickPhrasesButton.tsx
@@ -158,7 +158,7 @@ const QuickPhrasesButton = ({ ref, setInputValue, resizeTextArea, assistantId }:
return (
<>
- } />
+ } />
= ({ ref, model, assistantId }): ReactElement =>
}
closeDelay={0}>
diff --git a/src/renderer/src/pages/home/Inputbar/UrlContextbutton.tsx b/src/renderer/src/pages/home/Inputbar/UrlContextbutton.tsx
index 949bbc23ea..88dc3763a7 100644
--- a/src/renderer/src/pages/home/Inputbar/UrlContextbutton.tsx
+++ b/src/renderer/src/pages/home/Inputbar/UrlContextbutton.tsx
@@ -48,7 +48,7 @@ const UrlContextButton: FC = ({ assistantId }) => {
return (
- } />
+ } />
)
}
diff --git a/src/renderer/src/pages/home/Inputbar/WebSearchButton.tsx b/src/renderer/src/pages/home/Inputbar/WebSearchButton.tsx
index 312a18bc04..af996c2e03 100644
--- a/src/renderer/src/pages/home/Inputbar/WebSearchButton.tsx
+++ b/src/renderer/src/pages/home/Inputbar/WebSearchButton.tsx
@@ -209,7 +209,7 @@ const WebSearchButton: FC = ({ ref, assistantId }) => {
return (
}
/>
diff --git a/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx b/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx
index 17613e9429..a891a003cb 100644
--- a/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx
+++ b/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx
@@ -144,7 +144,7 @@ const MessageErrorInfo: React.FC<{ block: ErrorMessageBlock; message: Message }>
onClick={showErrorDetail}
style={{ cursor: 'pointer' }}
action={
-
+
{t('common.detail')}
}
@@ -198,10 +198,10 @@ const ErrorDetailModal: React.FC = ({ open, onClose, erro
open={open}
onCancel={onClose}
footer={[
-
+
{t('common.copy')}
,
-
+
{t('common.close')}
]}
diff --git a/src/renderer/src/pages/home/Messages/ChatNavigation.tsx b/src/renderer/src/pages/home/Messages/ChatNavigation.tsx
index 14ac31bcc7..744f5c69e9 100644
--- a/src/renderer/src/pages/home/Messages/ChatNavigation.tsx
+++ b/src/renderer/src/pages/home/Messages/ChatNavigation.tsx
@@ -343,56 +343,44 @@ const ChatNavigation: FC = ({ containerId }) => {
}
- onPress={handleCloseChatNavigation}
- aria-label={t('chat.navigation.close')}
- />
+ variant="ghost"
+ onClick={handleCloseChatNavigation}
+ aria-label={t('chat.navigation.close')}>
+
+
- }
- onPress={handleScrollToTop}
- aria-label={t('chat.navigation.top')}
- />
+
+
+
- }
- onPress={handlePrevMessage}
- aria-label={t('chat.navigation.prev')}
- />
+
+
+
- }
- onPress={handleNextMessage}
- aria-label={t('chat.navigation.next')}
- />
+
+
+
- }
- onPress={handleScrollToBottom}
- aria-label={t('chat.navigation.bottom')}
- />
+
+
+
}
- onPress={handleChatHistoryClick}
- aria-label={t('chat.navigation.history')}
- />
+ variant="ghost"
+ onClick={handleChatHistoryClick}
+ aria-label={t('chat.navigation.history')}>
+
+
diff --git a/src/renderer/src/pages/home/Messages/CitationsList.tsx b/src/renderer/src/pages/home/Messages/CitationsList.tsx
index 1a3777cf31..caf26b6b41 100644
--- a/src/renderer/src/pages/home/Messages/CitationsList.tsx
+++ b/src/renderer/src/pages/home/Messages/CitationsList.tsx
@@ -92,7 +92,7 @@ const CitationsList: React.FC = ({ citations }) => {
padding: '0 0 8px 0'
}
}}>
-
+
{previewItems.map((c, i) => (
diff --git a/src/renderer/src/pages/home/Messages/MessageEditor.tsx b/src/renderer/src/pages/home/Messages/MessageEditor.tsx
index 9974b1f35e..7ab285eb0c 100644
--- a/src/renderer/src/pages/home/Messages/MessageEditor.tsx
+++ b/src/renderer/src/pages/home/Messages/MessageEditor.tsx
@@ -361,14 +361,14 @@ const MessageBlockEditor: FC = ({ message, topicId, onSave, onResend, onC
- } />
+ } />
- } />
+ } />
{message.role === 'user' && (
- } />
+ } />
)}
diff --git a/src/renderer/src/pages/home/Messages/MessageGroupMenuBar.tsx b/src/renderer/src/pages/home/Messages/MessageGroupMenuBar.tsx
index 4eae085381..5743775a21 100644
--- a/src/renderer/src/pages/home/Messages/MessageGroupMenuBar.tsx
+++ b/src/renderer/src/pages/home/Messages/MessageGroupMenuBar.tsx
@@ -138,21 +138,14 @@ const MessageGroupMenuBar: FC = ({
{hasFailedMessages && (
- }
- onPress={handleRetryAll}
- className="mr-1"
- />
+
+
+
)}
- }
- onPress={handleDeleteGroup}
- />
+
+
+
)
}
diff --git a/src/renderer/src/pages/home/Messages/NewTopicButton.tsx b/src/renderer/src/pages/home/Messages/NewTopicButton.tsx
index e15c1b967e..55696a4e95 100644
--- a/src/renderer/src/pages/home/Messages/NewTopicButton.tsx
+++ b/src/renderer/src/pages/home/Messages/NewTopicButton.tsx
@@ -19,13 +19,10 @@ const NewTopicButton: FC = () => {
}
- onPress={addNewTopic}
+ variant="ghost"
+ onClick={addNewTopic}
className={cn(
- 'h-[34px]! px-3 text-xs opacity-80 transition-all duration-300',
+ 'h-[34px]! rounded-full px-3 text-xs opacity-80 transition-all duration-300',
'hover:border-[var(--color-border-mute)] hover:text-[var(--color-text-1)]! hover:opacity-90',
theme === ThemeMode.dark
? 'bg-[var(--color-background-soft)] hover:bg-[var(--color-background-mute)]!'
@@ -35,6 +32,7 @@ const NewTopicButton: FC = () => {
backgroundColor: theme === ThemeMode.dark ? '' : undefined,
color: 'var(--color-text-2)'
}}>
+
{t('chat.topics.new')}
diff --git a/src/renderer/src/pages/home/Messages/Tools/MessageMcpTool.tsx b/src/renderer/src/pages/home/Messages/Tools/MessageMcpTool.tsx
index ad216e996d..447814a5bc 100644
--- a/src/renderer/src/pages/home/Messages/Tools/MessageMcpTool.tsx
+++ b/src/renderer/src/pages/home/Messages/Tools/MessageMcpTool.tsx
@@ -400,26 +400,24 @@ const MessageMcpTool: FC = ({ block }) => {
{isWaitingConfirmation && (
{
+ onClick={() => {
handleCancelTool()
- }}
- startContent={}>
+ }}>
+
{t('common.cancel')}
)}
{isExecuting && toolResponse?.id ? (
{
+ onClick={() => {
handleAbortTool()
- }}
- startContent={}>
+ }}>
+
{t('chat.input.pause')}
) : (
diff --git a/src/renderer/src/pages/home/Tabs/SessionSettingsTab.tsx b/src/renderer/src/pages/home/Tabs/SessionSettingsTab.tsx
index 346c3abb1d..53a2e354d4 100644
--- a/src/renderer/src/pages/home/Tabs/SessionSettingsTab.tsx
+++ b/src/renderer/src/pages/home/Tabs/SessionSettingsTab.tsx
@@ -33,7 +33,7 @@ const SessionSettingsTab: FC = ({ session, update }) => {
-
+
{t('settings.moresetting.label')}
diff --git a/src/renderer/src/pages/home/Tabs/SettingsTab.tsx b/src/renderer/src/pages/home/Tabs/SettingsTab.tsx
index d370668d78..9f31782368 100644
--- a/src/renderer/src/pages/home/Tabs/SettingsTab.tsx
+++ b/src/renderer/src/pages/home/Tabs/SettingsTab.tsx
@@ -230,10 +230,9 @@ const SettingsTab: FC = (props) => {
extra={
AssistantSettingsPopup.show({ assistant, tab: 'model' })}>
+ variant="ghost"
+ size="icon-sm"
+ onClick={() => AssistantSettingsPopup.show({ assistant, tab: 'model' })}>
diff --git a/src/renderer/src/pages/home/Tabs/components/AddButton.tsx b/src/renderer/src/pages/home/Tabs/components/AddButton.tsx
index 62feecd226..68488142d3 100644
--- a/src/renderer/src/pages/home/Tabs/components/AddButton.tsx
+++ b/src/renderer/src/pages/home/Tabs/components/AddButton.tsx
@@ -1,9 +1,8 @@
-import type { ButtonProps } from '@heroui/react'
-import { Button, cn } from '@heroui/react'
+import { Button, cn } from '@cherrystudio/ui'
import { PlusIcon } from 'lucide-react'
import type { FC } from 'react'
-interface Props extends ButtonProps {
+interface Props extends React.ComponentProps {
children: React.ReactNode
}
@@ -11,12 +10,12 @@ const AddButton: FC = ({ children, className, ...props }) => {
return (
}>
+ )}>
+
{children}
)
diff --git a/src/renderer/src/pages/home/Tabs/components/AssistantTagsPopup.tsx b/src/renderer/src/pages/home/Tabs/components/AssistantTagsPopup.tsx
index e5c95779e1..1e23eb714c 100644
--- a/src/renderer/src/pages/home/Tabs/components/AssistantTagsPopup.tsx
+++ b/src/renderer/src/pages/home/Tabs/components/AssistantTagsPopup.tsx
@@ -94,13 +94,11 @@ const PopupContainer: React.FC = ({ title, resolve }) => {
{tag}
{
+ variant="ghost"
+ onClick={() => {
onDelete(tag)
}}>
-
+
)}
diff --git a/src/renderer/src/pages/home/Tabs/components/Sessions.tsx b/src/renderer/src/pages/home/Tabs/components/Sessions.tsx
index 9302e1b2a3..4ccf44f0cf 100644
--- a/src/renderer/src/pages/home/Tabs/components/Sessions.tsx
+++ b/src/renderer/src/pages/home/Tabs/components/Sessions.tsx
@@ -110,7 +110,7 @@ const Sessions: React.FC = ({ agentId }) => {
return (
-
+
{t('agent.session.add.title')}
{/* h-9 */}
diff --git a/src/renderer/src/pages/home/Tabs/components/Topics.tsx b/src/renderer/src/pages/home/Tabs/components/Topics.tsx
index 9289f75da9..5cba84ff81 100644
--- a/src/renderer/src/pages/home/Tabs/components/Topics.tsx
+++ b/src/renderer/src/pages/home/Tabs/components/Topics.tsx
@@ -504,7 +504,7 @@ export const Topics: React.FC = ({ assistant: _assistant, activeTopic, se
style={{ height: '100%', padding: '11px 0 10px 10px' }}
itemContainerStyle={{ paddingBottom: '8px' }}
header={
- EventEmitter.emit(EVENT_NAMES.ADD_NEW_TOPIC)} className="mb-2">
+ EventEmitter.emit(EVENT_NAMES.ADD_NEW_TOPIC)} className="mb-2">
{t('chat.add.topic.title')}
}>
diff --git a/src/renderer/src/pages/home/Tabs/components/UnifiedAddButton.tsx b/src/renderer/src/pages/home/Tabs/components/UnifiedAddButton.tsx
index 3dd29e32f3..a3851b0714 100644
--- a/src/renderer/src/pages/home/Tabs/components/UnifiedAddButton.tsx
+++ b/src/renderer/src/pages/home/Tabs/components/UnifiedAddButton.tsx
@@ -39,13 +39,13 @@ const UnifiedAddButton: FC = ({ onCreateAssistant }) => {
}>
{t('chat.add.assistant.title')}
}>
{t('agent.add.title')}
diff --git a/src/renderer/src/pages/home/components/ChatNavbarContent.tsx b/src/renderer/src/pages/home/components/ChatNavbarContent.tsx
index 16f68430ac..bde3283b2d 100644
--- a/src/renderer/src/pages/home/components/ChatNavbarContent.tsx
+++ b/src/renderer/src/pages/home/components/ChatNavbarContent.tsx
@@ -42,7 +42,7 @@ const ChatNavbarContent: FC
= ({ assistant }) => {
AgentSettingsPopup.show({ agentId: activeAgent.id })}
+ onClick={() => AgentSettingsPopup.show({ agentId: activeAgent.id })}
classNames={{ base: 'self-stretch', item: 'h-full' }}>
= ({ assistant }) => {
{activeSession && (
+ onClick={() =>
SessionSettingsPopup.show({
agentId: activeAgent.id,
sessionId: activeSession.id
diff --git a/src/renderer/src/pages/home/components/SelectAgentBaseModelButton.tsx b/src/renderer/src/pages/home/components/SelectAgentBaseModelButton.tsx
index 1d46335e1b..621fb8b34d 100644
--- a/src/renderer/src/pages/home/components/SelectAgentBaseModelButton.tsx
+++ b/src/renderer/src/pages/home/components/SelectAgentBaseModelButton.tsx
@@ -1,4 +1,4 @@
-import { Button } from '@heroui/react'
+import { Button } from '@cherrystudio/ui'
import ModelAvatar from '@renderer/components/Avatar/ModelAvatar'
import { SelectApiModelPopup } from '@renderer/components/Popups/SelectModelPopup'
import { agentModelFilter } from '@renderer/config/models'
@@ -38,10 +38,10 @@ const SelectAgentBaseModelButton: FC = ({ agentBase: agent, onSelect, isD
return (
+ onClick={onSelectModel}
+ disabled={isDisabled}>
diff --git a/src/renderer/src/pages/home/components/SelectModelButton.tsx b/src/renderer/src/pages/home/components/SelectModelButton.tsx
index ea737ad922..3f78513364 100644
--- a/src/renderer/src/pages/home/components/SelectModelButton.tsx
+++ b/src/renderer/src/pages/home/components/SelectModelButton.tsx
@@ -57,8 +57,8 @@ const SelectModelButton: FC = ({ assistant }) => {
return (
diff --git a/src/renderer/src/pages/home/components/UpdateAppButton.tsx b/src/renderer/src/pages/home/components/UpdateAppButton.tsx
index 0cdecbdb06..a2357fb815 100644
--- a/src/renderer/src/pages/home/components/UpdateAppButton.tsx
+++ b/src/renderer/src/pages/home/components/UpdateAppButton.tsx
@@ -24,13 +24,8 @@ const UpdateAppButton: FC = () => {
return (
- }
- color="warning"
- variant="bordered"
- size="sm">
+
+
{t('button.update_available')}
diff --git a/src/renderer/src/pages/knowledge/KnowledgeContent.tsx b/src/renderer/src/pages/knowledge/KnowledgeContent.tsx
index b66fc27974..e2d7ae4e78 100644
--- a/src/renderer/src/pages/knowledge/KnowledgeContent.tsx
+++ b/src/renderer/src/pages/knowledge/KnowledgeContent.tsx
@@ -144,13 +144,9 @@ const KnowledgeContent: FC = ({ selectedBase }) => {
- }
- isIconOnly
- onPress={() => EditKnowledgeBasePopup.show({ base })}
- size="sm"
- />
+ EditKnowledgeBasePopup.show({ base })}>
+
+
diff --git a/src/renderer/src/pages/knowledge/items/KnowledgeDirectories.tsx b/src/renderer/src/pages/knowledge/items/KnowledgeDirectories.tsx
index 1bc507280f..00d8204570 100644
--- a/src/renderer/src/pages/knowledge/items/KnowledgeDirectories.tsx
+++ b/src/renderer/src/pages/knowledge/items/KnowledgeDirectories.tsx
@@ -68,12 +68,8 @@ const KnowledgeDirectories: FC
= ({ selectedBase, progres
return (
- }
- onPress={handleAddDirectory}
- isDisabled={disabled}>
+
+
{t('knowledge.add_directory')}
@@ -102,7 +98,7 @@ const KnowledgeDirectories: FC = ({ selectedBase, progres
actions: (
{item.uniqueId && (
- refreshItem(item)}>
+ refreshItem(item)}>
)}
@@ -115,8 +111,8 @@ const KnowledgeDirectories: FC = ({ selectedBase, progres
type="directory"
/>
- removeItem(item)}>
-
+ removeItem(item)}>
+
)
diff --git a/src/renderer/src/pages/knowledge/items/KnowledgeFiles.tsx b/src/renderer/src/pages/knowledge/items/KnowledgeFiles.tsx
index c9c4d693c0..fed2222014 100644
--- a/src/renderer/src/pages/knowledge/items/KnowledgeFiles.tsx
+++ b/src/renderer/src/pages/knowledge/items/KnowledgeFiles.tsx
@@ -142,13 +142,8 @@ const KnowledgeFiles: FC = ({ selectedBase, progressMap,
return (
- }
- onPress={handleAddFile}
- isDisabled={disabled}>
+
+
{t('knowledge.add_file')}
@@ -202,7 +197,7 @@ const KnowledgeFiles: FC = ({ selectedBase, progressMap,
actions: (
{item.uniqueId && (
- refreshItem(item)}>
+ refreshItem(item)}>
)}
@@ -226,8 +221,8 @@ const KnowledgeFiles: FC = ({ selectedBase, progressMap,
type="file"
/>
- removeItem(item)}>
-
+ removeItem(item)}>
+
)
diff --git a/src/renderer/src/pages/knowledge/items/KnowledgeNotes.tsx b/src/renderer/src/pages/knowledge/items/KnowledgeNotes.tsx
index f02a697b34..d62527fcb1 100644
--- a/src/renderer/src/pages/knowledge/items/KnowledgeNotes.tsx
+++ b/src/renderer/src/pages/knowledge/items/KnowledgeNotes.tsx
@@ -81,12 +81,8 @@ const KnowledgeNotes: FC = ({ selectedBase }) => {
return (
- }
- onPress={handleAddNote}
- isDisabled={disabled}>
+
+
{t('knowledge.add_note')}
@@ -112,7 +108,7 @@ const KnowledgeNotes: FC = ({ selectedBase }) => {
extra: getDisplayTime(note),
actions: (
- handleEditNote(note)}>
+ handleEditNote(note)}>
@@ -123,8 +119,8 @@ const KnowledgeNotes: FC = ({ selectedBase }) => {
type="note"
/>
- removeItem(note)}>
-
+ removeItem(note)}>
+
)
diff --git a/src/renderer/src/pages/knowledge/items/KnowledgeSitemaps.tsx b/src/renderer/src/pages/knowledge/items/KnowledgeSitemaps.tsx
index 9fab39b01d..0c4d02a4eb 100644
--- a/src/renderer/src/pages/knowledge/items/KnowledgeSitemaps.tsx
+++ b/src/renderer/src/pages/knowledge/items/KnowledgeSitemaps.tsx
@@ -87,12 +87,8 @@ const KnowledgeSitemaps: FC = ({ selectedBase }) => {
return (
- }
- onPress={handleAddSitemap}
- isDisabled={disabled}>
+
+
{t('knowledge.add_sitemap')}
@@ -125,7 +121,7 @@ const KnowledgeSitemaps: FC = ({ selectedBase }) => {
actions: (
{item.uniqueId && (
- refreshItem(item)}>
+ refreshItem(item)}>
)}
@@ -137,8 +133,8 @@ const KnowledgeSitemaps: FC = ({ selectedBase }) => {
type="sitemap"
/>
- removeItem(item)}>
-
+ removeItem(item)}>
+
)
diff --git a/src/renderer/src/pages/knowledge/items/KnowledgeUrls.tsx b/src/renderer/src/pages/knowledge/items/KnowledgeUrls.tsx
index 769a18d316..7253b4e4c6 100644
--- a/src/renderer/src/pages/knowledge/items/KnowledgeUrls.tsx
+++ b/src/renderer/src/pages/knowledge/items/KnowledgeUrls.tsx
@@ -116,12 +116,8 @@ const KnowledgeUrls: FC = ({ selectedBase }) => {
return (
- }
- onPress={handleAddUrl}
- isDisabled={disabled}>
+
+
{t('knowledge.add_url')}
@@ -176,15 +172,15 @@ const KnowledgeUrls: FC = ({ selectedBase }) => {
actions: (
{item.uniqueId && (
- refreshItem(item)}>
+ refreshItem(item)}>
)}
- removeItem(item)}>
-
+ removeItem(item)}>
+
)
diff --git a/src/renderer/src/pages/knowledge/items/KnowledgeVideos.tsx b/src/renderer/src/pages/knowledge/items/KnowledgeVideos.tsx
index 90b309fb36..305cd76e8f 100644
--- a/src/renderer/src/pages/knowledge/items/KnowledgeVideos.tsx
+++ b/src/renderer/src/pages/knowledge/items/KnowledgeVideos.tsx
@@ -86,12 +86,8 @@ const KnowledgeVideos: FC = ({ selectedBase }) => {
return (
- }
- onPress={handleAddVideo}
- isDisabled={disabled}>
+
+
{t('knowledge.add_video')}
@@ -137,12 +133,9 @@ const KnowledgeVideos: FC = ({ selectedBase }) => {
actions: (
{item.uniqueId && (
- }
- isIconOnly
- onPress={() => refreshItem(item)}
- />
+ refreshItem(item)}>
+
+
)}
@@ -153,13 +146,9 @@ const KnowledgeVideos: FC = ({ selectedBase }) => {
type="file"
/>
- }
- isIconOnly
- onPress={() => removeItem(item)}
- />
+ removeItem(item)}>
+
+
)
}}
diff --git a/src/renderer/src/pages/minapps/MinAppsPage.tsx b/src/renderer/src/pages/minapps/MinAppsPage.tsx
index 2b39032069..743d098df2 100644
--- a/src/renderer/src/pages/minapps/MinAppsPage.tsx
+++ b/src/renderer/src/pages/minapps/MinAppsPage.tsx
@@ -56,13 +56,9 @@ const AppsPage: FC = () => {
value={search}
onChange={(e) => setSearch(e.target.value)}
/>
- }
- isIconOnly
- onPress={MinappSettingsPopup.show}
- />
+
+
+
@@ -79,13 +75,9 @@ const AppsPage: FC = () => {
value={search}
onChange={(e) => setSearch(e.target.value)}
/>
- }
- isIconOnly
- onPress={() => MinappSettingsPopup.show()}
- />
+ MinappSettingsPopup.show()}>
+
+
)}
diff --git a/src/renderer/src/pages/minapps/MiniappSettings/MiniAppSettings.tsx b/src/renderer/src/pages/minapps/MiniappSettings/MiniAppSettings.tsx
index df2c14d5b4..d71df5cd93 100644
--- a/src/renderer/src/pages/minapps/MiniappSettings/MiniAppSettings.tsx
+++ b/src/renderer/src/pages/minapps/MiniappSettings/MiniAppSettings.tsx
@@ -79,8 +79,8 @@ const MiniAppSettings: FC = () => {
- {t('common.swap')}
- {t('common.reset')}
+ {t('common.swap')}
+ {t('common.reset')}
diff --git a/src/renderer/src/pages/minapps/NewAppButton.tsx b/src/renderer/src/pages/minapps/NewAppButton.tsx
index 7d4507cf45..a3560cab98 100644
--- a/src/renderer/src/pages/minapps/NewAppButton.tsx
+++ b/src/renderer/src/pages/minapps/NewAppButton.tsx
@@ -147,12 +147,15 @@ const NewAppButton: FC = ({ size = 60 }) => {
fileList={fileList}
onChange={handleFileChange}
beforeUpload={() => false}>
- }>{t('settings.miniapps.custom.logo_upload_button')}
+
+
+ {t('settings.miniapps.custom.logo_upload_button')}
+
)}
-
+
{t('settings.miniapps.custom.save')}
diff --git a/src/renderer/src/pages/minapps/components/WebviewSearch.tsx b/src/renderer/src/pages/minapps/components/WebviewSearch.tsx
index 59499232d8..8494040e78 100644
--- a/src/renderer/src/pages/minapps/components/WebviewSearch.tsx
+++ b/src/renderer/src/pages/minapps/components/WebviewSearch.tsx
@@ -1,4 +1,5 @@
-import { Button, Input } from '@heroui/react'
+import { Button } from '@cherrystudio/ui'
+import { Input } from '@heroui/react'
import { loggerService } from '@logger'
import type { WebviewTag } from 'electron'
import { ChevronDown, ChevronUp, X } from 'lucide-react'
@@ -339,36 +340,30 @@ const WebviewSearch: FC = ({ webviewRef, isWebviewReady, app
+ className="rounded-full text-default-500 hover:text-default-900">
+ className="rounded-full text-default-500 hover:text-default-900">
+ className="rounded-full text-default-500 hover:text-default-900">
diff --git a/src/renderer/src/pages/paintings/AihubmixPage.tsx b/src/renderer/src/pages/paintings/AihubmixPage.tsx
index b191e7089f..2d9c1cf1b6 100644
--- a/src/renderer/src/pages/paintings/AihubmixPage.tsx
+++ b/src/renderer/src/pages/paintings/AihubmixPage.tsx
@@ -807,7 +807,8 @@ const AihubmixPage: FC<{ Options: string[] }> = ({ Options }) => {
{t('paintings.title')}
{isMac && (
- } onPress={handleAddPainting}>
+
+
{t('paintings.button.new.image')}
diff --git a/src/renderer/src/pages/paintings/DmxapiPage.tsx b/src/renderer/src/pages/paintings/DmxapiPage.tsx
index 2f7984b4d2..2839904403 100644
--- a/src/renderer/src/pages/paintings/DmxapiPage.tsx
+++ b/src/renderer/src/pages/paintings/DmxapiPage.tsx
@@ -771,7 +771,8 @@ const DmxapiPage: FC<{ Options: string[] }> = ({ Options }) => {
{t('paintings.title')}
{isMac && (
- } onPress={createNewPainting}>
+
+
{t('paintings.button.new.image')}
diff --git a/src/renderer/src/pages/paintings/NewApiPage.tsx b/src/renderer/src/pages/paintings/NewApiPage.tsx
index d9743e7eca..290e0cbe36 100644
--- a/src/renderer/src/pages/paintings/NewApiPage.tsx
+++ b/src/renderer/src/pages/paintings/NewApiPage.tsx
@@ -487,7 +487,8 @@ const NewApiPage: FC<{ Options: string[] }> = ({ Options }) => {
{t('paintings.title')}
{isMac && (
- } onPress={handleAddPainting}>
+
+
{t('paintings.button.new.image')}
@@ -519,7 +520,7 @@ const NewApiPage: FC<{ Options: string[] }> = ({ Options }) => {
description={t('paintings.no_image_generation_model', {
endpoint_type: t('endpoint_type.image-generation')
})}>
-
+
{t('paintings.go_to_settings')}
diff --git a/src/renderer/src/pages/paintings/OvmsPage.tsx b/src/renderer/src/pages/paintings/OvmsPage.tsx
index 612a964cb9..5e23c89984 100644
--- a/src/renderer/src/pages/paintings/OvmsPage.tsx
+++ b/src/renderer/src/pages/paintings/OvmsPage.tsx
@@ -481,7 +481,8 @@ const OvmsPage: FC<{ Options: string[] }> = ({ Options }) => {
{t('paintings.title')}
{isMac && (
- } onPress={handleAddPainting}>
+
+
{t('paintings.button.new.image')}
diff --git a/src/renderer/src/pages/paintings/SiliconPage.tsx b/src/renderer/src/pages/paintings/SiliconPage.tsx
index 5e4d922cdc..0fc025c22f 100644
--- a/src/renderer/src/pages/paintings/SiliconPage.tsx
+++ b/src/renderer/src/pages/paintings/SiliconPage.tsx
@@ -360,8 +360,8 @@ const SiliconPage: FC<{ Options: string[] }> = ({ Options }) => {
}
- onPress={() => setPainting(addPainting('siliconflow_paintings', getNewPainting()))}>
+ onClick={() => setPainting(addPainting('siliconflow_paintings', getNewPainting()))}>
+
{t('paintings.button.new.image')}
diff --git a/src/renderer/src/pages/paintings/TokenFluxPage.tsx b/src/renderer/src/pages/paintings/TokenFluxPage.tsx
index e91cfbe516..5ecba7a9b5 100644
--- a/src/renderer/src/pages/paintings/TokenFluxPage.tsx
+++ b/src/renderer/src/pages/paintings/TokenFluxPage.tsx
@@ -352,7 +352,8 @@ const TokenFluxPage: FC<{ Options: string[] }> = ({ Options }) => {
{t('paintings.title')}
{isMac && (
- } onPress={handleAddPainting}>
+
+
{t('paintings.button.new.image')}
diff --git a/src/renderer/src/pages/paintings/ZhipuPage.tsx b/src/renderer/src/pages/paintings/ZhipuPage.tsx
index 3d62c86a25..846e0e4e39 100644
--- a/src/renderer/src/pages/paintings/ZhipuPage.tsx
+++ b/src/renderer/src/pages/paintings/ZhipuPage.tsx
@@ -330,12 +330,8 @@ const ZhipuPage: FC<{ Options: string[] }> = ({ Options }) => {
{t('paintings.title')}
{isMac && (
- }
- onPress={handleAddPainting}>
+
+
{t('paintings.button.new.image')}
diff --git a/src/renderer/src/pages/paintings/components/Artboard.tsx b/src/renderer/src/pages/paintings/components/Artboard.tsx
index 2a988fba55..18510ff78a 100644
--- a/src/renderer/src/pages/paintings/components/Artboard.tsx
+++ b/src/renderer/src/pages/paintings/components/Artboard.tsx
@@ -44,7 +44,7 @@ const Artboard: FC
= ({
{painting.files.length > 0 ? (
{painting.files.length > 1 && (
-
+
←
)}
@@ -60,7 +60,7 @@ const Artboard: FC = ({
}}
/>
{painting.files.length > 1 && (
-
+
→
)}
@@ -79,7 +79,7 @@ const Artboard: FC = ({
{t('paintings.proxy_required')}
- retry?.(painting)}>
+ retry?.(painting)}>
{t('paintings.image_retry')}
@@ -97,7 +97,7 @@ const Artboard: FC = ({
{loadText ? loadText : ''}
- {t('common.cancel')}
+ {t('common.cancel')}
)}
diff --git a/src/renderer/src/pages/paintings/components/DynamicFormRender.tsx b/src/renderer/src/pages/paintings/components/DynamicFormRender.tsx
index 08db7a9dbb..ce1dbbe2d1 100644
--- a/src/renderer/src/pages/paintings/components/DynamicFormRender.tsx
+++ b/src/renderer/src/pages/paintings/components/DynamicFormRender.tsx
@@ -76,7 +76,9 @@ export const DynamicFormRender: React.FC = ({
handleImageUpload(propertyName, file, onChange)
return false
}}>
- } title="Upload image file" className="h-8 rounded-l-none" />
+
+
+
@@ -117,12 +119,12 @@ export const DynamicFormRender: React.FC = ({
}
- onPress={() => onChange(propertyName, '')}
+ variant="destructive"
+ onClick={() => onChange(propertyName, '')}
title="Remove image"
- className="min-w-0 shrink-0 px-2"
- />
+ className="min-w-0 shrink-0 px-2">
+
+
)}
@@ -172,12 +174,9 @@ export const DynamicFormRender: React.FC = ({
min={schemaProperty.minimum}
max={schemaProperty.maximum}
/>
- }
- onPress={() => onChange(propertyName, generateRandomSeed())}
- title="Generate random seed"
- />
+ onChange(propertyName, generateRandomSeed())} title="Generate random seed">
+
+
)
}
diff --git a/src/renderer/src/pages/paintings/components/ImageUploader.tsx b/src/renderer/src/pages/paintings/components/ImageUploader.tsx
index bb4a9f4711..8029d248f4 100644
--- a/src/renderer/src/pages/paintings/components/ImageUploader.tsx
+++ b/src/renderer/src/pages/paintings/components/ImageUploader.tsx
@@ -45,7 +45,7 @@ const ImageUploader: React.FC = ({
<>
{fileMap.imageFiles && fileMap.imageFiles.length > 0 && (
-
+
清除全部
)}
diff --git a/src/renderer/src/pages/settings/AboutSettings.tsx b/src/renderer/src/pages/settings/AboutSettings.tsx
index c38def67d5..c6add93887 100644
--- a/src/renderer/src/pages/settings/AboutSettings.tsx
+++ b/src/renderer/src/pages/settings/AboutSettings.tsx
@@ -226,10 +226,7 @@ const AboutSettings: FC = () => {
{!isPortable && (
-
+
{appUpdateState.downloading
? t('settings.about.downloading')
: appUpdateState.available
@@ -297,7 +294,7 @@ const AboutSettings: FC = () => {
{t('docs.title')}
- {t('settings.about.website.button')}
+ {t('settings.about.website.button')}
@@ -305,7 +302,7 @@ const AboutSettings: FC = () => {
{t('settings.about.releases.title')}
- {t('settings.about.releases.button')}
+ {t('settings.about.releases.button')}
@@ -313,7 +310,7 @@ const AboutSettings: FC = () => {
{t('settings.about.website.title')}
- onOpenWebsite('https://cherry-ai.com')}>{t('settings.about.website.button')}
+ onOpenWebsite('https://cherry-ai.com')}>{t('settings.about.website.button')}
@@ -321,7 +318,7 @@ const AboutSettings: FC = () => {
{t('settings.about.feedback.title')}
- onOpenWebsite('https://github.com/CherryHQ/cherry-studio/issues/new/choose')}>
+ onOpenWebsite('https://github.com/CherryHQ/cherry-studio/issues/new/choose')}>
{t('settings.about.feedback.button')}
@@ -331,7 +328,7 @@ const AboutSettings: FC = () => {
{t('settings.about.license.title')}
- {t('settings.about.license.button')}
+ {t('settings.about.license.button')}
@@ -339,7 +336,7 @@ const AboutSettings: FC = () => {
{t('settings.about.contact.title')}
- {t('settings.about.contact.button')}
+ {t('settings.about.contact.button')}
@@ -347,7 +344,7 @@ const AboutSettings: FC = () => {
{t('settings.about.debug.title')}
- {t('settings.about.debug.open')}
+ {t('settings.about.debug.open')}
diff --git a/src/renderer/src/pages/settings/AgentSettings/AccessibleDirsSetting.tsx b/src/renderer/src/pages/settings/AgentSettings/AccessibleDirsSetting.tsx
index 843a4114f0..91686fc6ee 100644
--- a/src/renderer/src/pages/settings/AgentSettings/AccessibleDirsSetting.tsx
+++ b/src/renderer/src/pages/settings/AgentSettings/AccessibleDirsSetting.tsx
@@ -66,7 +66,7 @@ export const AccessibleDirsSetting: React.FC = ({ ba
- } isIconOnly onPress={addAccessiblePath} />
+ } isIconOnly onClick={addAccessiblePath} />
}>
{t('agent.session.accessible_paths.label')}
@@ -79,7 +79,7 @@ export const AccessibleDirsSetting: React.FC = ({ ba
{path}
- removeAccessiblePath(path)}>
+ removeAccessiblePath(path)}>
{t('common.delete')}
diff --git a/src/renderer/src/pages/settings/AgentSettings/PromptSettings.tsx b/src/renderer/src/pages/settings/AgentSettings/PromptSettings.tsx
index 772830b460..61be56bd14 100644
--- a/src/renderer/src/pages/settings/AgentSettings/PromptSettings.tsx
+++ b/src/renderer/src/pages/settings/AgentSettings/PromptSettings.tsx
@@ -90,10 +90,8 @@ const PromptSettings: FC = ({ agentBase, update }) =>
Tokens: {tokenCount}
: }
- onPress={() => {
+ variant="default"
+ onClick={() => {
const currentScrollTop = editorRef.current?.getScrollTop?.() || 0
if (showPreview) {
setShowPreview(false)
@@ -106,6 +104,7 @@ const PromptSettings: FC = ({ agentBase, update }) =>
})
}
}}>
+ {showPreview ? : }
{showPreview ? t('common.edit') : t('common.save')}
diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantMemorySettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantMemorySettings.tsx
index 422a73166c..3a897dcc53 100644
--- a/src/renderer/src/pages/settings/AssistantSettings/AssistantMemorySettings.tsx
+++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantMemorySettings.tsx
@@ -81,7 +81,9 @@ const AssistantMemorySettings: React.FC = ({ assistant, updateAssistant,
/>
- } onPress={handleNavigateToMemory} />
+
+
+
= ({ assistant, updateAssistant,
showIcon
style={{ marginBottom: 16 }}
action={
-
+
{t('memory.go_to_memory_page')}
}
diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx
index 517b97e058..de283ac0e7 100644
--- a/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx
+++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx
@@ -218,22 +218,20 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA
- : }
- onPress={onSelectModel}>
+
+ {defaultModel ? : }
{defaultModel ? defaultModel.name : t('assistants.presets.edit.model.select.title')}
{defaultModel && (
}
- onPress={() => {
+ variant="destructive"
+ size="icon"
+ onClick={() => {
setDefaultModel(undefined)
updateAssistant({ ...assistant, defaultModel: undefined })
- }}
- />
+ }}>
+
+
)}
@@ -459,7 +457,8 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA
- } onPress={onAddCustomParameter}>
+
+
{t('models.add_parameter')}
@@ -485,20 +484,16 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA
{renderParameterValueInput(param, index)}
- }
- onPress={() => onDeleteCustomParameter(index)}
- />
+ onDeleteCustomParameter(index)}>
+
+
))}
- }>
+
+
{t('chat.settings.reset')}
diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantPromptSettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantPromptSettings.tsx
index 2542f442e7..424e852512 100644
--- a/src/renderer/src/pages/settings/AssistantSettings/AssistantPromptSettings.tsx
+++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantPromptSettings.tsx
@@ -157,10 +157,8 @@ const AssistantPromptSettings: React.FC = ({ assistant, updateAssistant }
Tokens: {tokenCount}
: }
- onPress={() => {
+ variant="default"
+ onClick={() => {
const currentScrollTop = editorRef.current?.getScrollTop?.() || 0
if (showPreview) {
setShowPreview(false)
@@ -173,6 +171,7 @@ const AssistantPromptSettings: React.FC = ({ assistant, updateAssistant }
})
}
}}>
+ {showPreview ? : }
{showPreview ? t('common.edit') : t('common.save')}
diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantRegularPromptsSettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantRegularPromptsSettings.tsx
index 4e3eb9f496..5cb0b0a7a7 100644
--- a/src/renderer/src/pages/settings/AssistantSettings/AssistantRegularPromptsSettings.tsx
+++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantRegularPromptsSettings.tsx
@@ -87,7 +87,9 @@ const AssistantRegularPromptsSettings: FC
{t('assistants.settings.regular_phrases.title', 'Regular Prompts')}
- } onPress={handleAdd} />
+
+
+
@@ -107,13 +109,9 @@ const AssistantRegularPromptsSettings: FC
extra: prompt.content,
actions: (
- }
- onPress={() => handleEdit(prompt)}
- />
+ handleEdit(prompt)}>
+
+
cancelText={t('common.cancel')}
onConfirm={() => handleDelete(prompt.id)}
icon={}>
- }
- />
+
+
+
)
diff --git a/src/renderer/src/pages/settings/DataSettings/DataSettings.tsx b/src/renderer/src/pages/settings/DataSettings/DataSettings.tsx
index fc5bc3681e..4a6b1edcd1 100644
--- a/src/renderer/src/pages/settings/DataSettings/DataSettings.tsx
+++ b/src/renderer/src/pages/settings/DataSettings/DataSettings.tsx
@@ -603,10 +603,12 @@ const DataSettings: FC = () => {
{t('settings.general.backup.title')}
- }>
+
+
{t('settings.general.backup.button')}
- }>
+
+
{t('settings.general.restore.button')}
@@ -633,7 +635,7 @@ const DataSettings: FC = () => {
handleOpenPath(appInfo?.appDataPath)} style={{ flexShrink: 0 }} />
- {t('settings.data.app_data.select')}
+ {t('settings.data.app_data.select')}
@@ -646,7 +648,7 @@ const DataSettings: FC = () => {
handleOpenPath(appInfo?.logsPath)} style={{ flexShrink: 0 }} />
- handleOpenPath(appInfo?.logsPath)}>
+ handleOpenPath(appInfo?.logsPath)}>
{t('settings.data.app_logs.button')}
@@ -656,7 +658,7 @@ const DataSettings: FC = () => {
{t('settings.data.app_knowledge.label')}
- {t('settings.data.app_knowledge.button.delete')}
+ {t('settings.data.app_knowledge.button.delete')}
@@ -666,14 +668,14 @@ const DataSettings: FC = () => {
{cacheSize && ({cacheSize}MB)}
- {t('settings.data.clear_cache.button')}
+ {t('settings.data.clear_cache.button')}
{t('settings.general.reset.title')}
-
+
{t('settings.general.reset.title')}
diff --git a/src/renderer/src/pages/settings/DataSettings/JoplinSettings.tsx b/src/renderer/src/pages/settings/DataSettings/JoplinSettings.tsx
index a796aad797..b5b72af37c 100644
--- a/src/renderer/src/pages/settings/DataSettings/JoplinSettings.tsx
+++ b/src/renderer/src/pages/settings/DataSettings/JoplinSettings.tsx
@@ -115,7 +115,7 @@ const JoplinSettings: FC = () => {
placeholder={t('settings.data.joplin.token_placeholder')}
style={{ width: '100%' }}
/>
- {t('settings.data.joplin.check.button')}
+ {t('settings.data.joplin.check.button')}
diff --git a/src/renderer/src/pages/settings/DataSettings/LocalBackupSettings.tsx b/src/renderer/src/pages/settings/DataSettings/LocalBackupSettings.tsx
index c538632528..5278540af8 100644
--- a/src/renderer/src/pages/settings/DataSettings/LocalBackupSettings.tsx
+++ b/src/renderer/src/pages/settings/DataSettings/LocalBackupSettings.tsx
@@ -193,14 +193,12 @@ const LocalBackupSettings: React.FC = () => {
placeholder={t('settings.data.local.directory.placeholder')}
style={{ minWidth: 200, maxWidth: 400, flex: 1 }}
/>
- } onPress={handleBrowseDirectory}>
+
+
{t('common.browse')}
- }
- onPress={handleClearDirectory}
- isDisabled={!localBackupDir}
- color="danger">
+
+
{t('common.clear')}
@@ -209,14 +207,12 @@ const LocalBackupSettings: React.FC = () => {
{t('settings.general.backup.title')}
- }
- isLoading={backuping}
- isDisabled={!localBackupDir}>
+
+
{t('settings.data.local.backup.button')}
- } isDisabled={!localBackupDir}>
+
+
{t('settings.data.local.restore.button')}
diff --git a/src/renderer/src/pages/settings/DataSettings/MarkdownExportSettings.tsx b/src/renderer/src/pages/settings/DataSettings/MarkdownExportSettings.tsx
index 9d88021457..7384660314 100644
--- a/src/renderer/src/pages/settings/DataSettings/MarkdownExportSettings.tsx
+++ b/src/renderer/src/pages/settings/DataSettings/MarkdownExportSettings.tsx
@@ -86,7 +86,8 @@ const MarkdownExportSettings: FC = () => {
) : null
}
/>
- }>
+
+
{t('settings.data.markdown_export.select')}
diff --git a/src/renderer/src/pages/settings/DataSettings/NotionSettings.tsx b/src/renderer/src/pages/settings/DataSettings/NotionSettings.tsx
index 476829c24d..25e0dd1b1e 100644
--- a/src/renderer/src/pages/settings/DataSettings/NotionSettings.tsx
+++ b/src/renderer/src/pages/settings/DataSettings/NotionSettings.tsx
@@ -121,7 +121,7 @@ const NotionSettings: FC = () => {
placeholder={t('settings.data.notion.api_key_placeholder')}
style={{ width: '100%' }}
/>
- {t('settings.data.notion.check.button')}
+ {t('settings.data.notion.check.button')}
diff --git a/src/renderer/src/pages/settings/DataSettings/NutstoreSettings.tsx b/src/renderer/src/pages/settings/DataSettings/NutstoreSettings.tsx
index a1708228a8..4a6ab7c2d1 100644
--- a/src/renderer/src/pages/settings/DataSettings/NutstoreSettings.tsx
+++ b/src/renderer/src/pages/settings/DataSettings/NutstoreSettings.tsx
@@ -211,10 +211,9 @@ const NutstoreSettings: FC = () => {
{isLogin ? (
+ variant={nsConnected ? 'ghost' : 'default'}
+ onClick={handleCheckConnection}
+ disabled={checkConnectionLoading}>
{checkConnectionLoading ? (
) : nsConnected ? (
@@ -223,12 +222,12 @@ const NutstoreSettings: FC = () => {
t('settings.data.nutstore.checkConnection.name')
)}
-
+
{t('settings.data.nutstore.logout.button')}
) : (
- {t('settings.data.nutstore.login.button')}
+ {t('settings.data.nutstore.login.button')}
)}
@@ -251,17 +250,19 @@ const NutstoreSettings: FC = () => {
setNutstorePath(e.target.value)
}}
/>
- } isIconOnly />
+
+
+
{t('settings.general.backup.title')}
-
+
{t('settings.data.nutstore.backup.button')}
-
+
{t('settings.data.nutstore.restore.button')}
diff --git a/src/renderer/src/pages/settings/DataSettings/S3Settings.tsx b/src/renderer/src/pages/settings/DataSettings/S3Settings.tsx
index ae3daaf26c..2da603ad64 100644
--- a/src/renderer/src/pages/settings/DataSettings/S3Settings.tsx
+++ b/src/renderer/src/pages/settings/DataSettings/S3Settings.tsx
@@ -186,16 +186,15 @@ const S3Settings: FC = () => {
{t('settings.data.s3.backup.operation')}
}
- isLoading={backuping}
- isDisabled={!s3Endpoint || !s3Region || !s3Bucket || !s3AccessKeyId || !s3SecretAccessKey}>
+ onClick={showBackupModal}
+ disabled={backuping || !s3Endpoint || !s3Region || !s3Bucket || !s3AccessKeyId || !s3SecretAccessKey}>
+
{t('settings.data.s3.backup.button')}
}
- isDisabled={!s3Endpoint || !s3Region || !s3Bucket || !s3AccessKeyId || !s3SecretAccessKey}>
+ onClick={showBackupManager}
+ disabled={!s3Endpoint || !s3Region || !s3Bucket || !s3AccessKeyId || !s3SecretAccessKey}>
+
{t('settings.data.s3.backup.manager.button')}
diff --git a/src/renderer/src/pages/settings/DataSettings/SiyuanSettings.tsx b/src/renderer/src/pages/settings/DataSettings/SiyuanSettings.tsx
index 06cfc4d476..83a54e1ee1 100644
--- a/src/renderer/src/pages/settings/DataSettings/SiyuanSettings.tsx
+++ b/src/renderer/src/pages/settings/DataSettings/SiyuanSettings.tsx
@@ -116,7 +116,7 @@ const SiyuanSettings: FC = () => {
placeholder={t('settings.data.siyuan.token_placeholder')}
style={{ width: '100%' }}
/>
- {t('settings.data.siyuan.check.button')}
+ {t('settings.data.siyuan.check.button')}
diff --git a/src/renderer/src/pages/settings/DataSettings/WebDavSettings.tsx b/src/renderer/src/pages/settings/DataSettings/WebDavSettings.tsx
index 36f001a7c2..2fba0d6243 100644
--- a/src/renderer/src/pages/settings/DataSettings/WebDavSettings.tsx
+++ b/src/renderer/src/pages/settings/DataSettings/WebDavSettings.tsx
@@ -147,10 +147,12 @@ const WebDavSettings: FC = () => {
{t('settings.general.backup.title')}
- } isLoading={backuping}>
+
+
{t('settings.data.webdav.backup.button')}
- } isDisabled={!webdavHost}>
+
+
{t('settings.data.webdav.restore.button')}
diff --git a/src/renderer/src/pages/settings/DataSettings/YuqueSettings.tsx b/src/renderer/src/pages/settings/DataSettings/YuqueSettings.tsx
index a5764da431..7caa387067 100644
--- a/src/renderer/src/pages/settings/DataSettings/YuqueSettings.tsx
+++ b/src/renderer/src/pages/settings/DataSettings/YuqueSettings.tsx
@@ -108,7 +108,7 @@ const YuqueSettings: FC = () => {
placeholder={t('settings.data.yuque.token_placeholder')}
style={{ width: '100%' }}
/>
- {t('settings.data.yuque.check.button')}
+ {t('settings.data.yuque.check.button')}
diff --git a/src/renderer/src/pages/settings/DisplaySettings/DisplaySettings.tsx b/src/renderer/src/pages/settings/DisplaySettings/DisplaySettings.tsx
index 8985a43858..cabbcc7af9 100644
--- a/src/renderer/src/pages/settings/DisplaySettings/DisplaySettings.tsx
+++ b/src/renderer/src/pages/settings/DisplaySettings/DisplaySettings.tsx
@@ -260,29 +260,16 @@ const DisplaySettings: FC = () => {
{t('settings.zoom.title')}
- handleZoomFactor(-0.1)}
- startContent={}
- color="default"
- variant="light"
- isIconOnly
- />
+ handleZoomFactor(-0.1)} variant="ghost" size="icon">
+
+
{Math.round(currentZoom * 100)}%
- handleZoomFactor(0.1)}
- startContent={}
- color="default"
- variant="light"
- isIconOnly
- />
- handleZoomFactor(0, true)}
- className="ml-2"
- startContent={}
- color="default"
- variant="light"
- isIconOnly
- />
+ handleZoomFactor(0.1)} variant="ghost" size="icon">
+
+
+ handleZoomFactor(0, true)} className="ml-2" variant="ghost" size="icon">
+
+
@@ -313,14 +300,9 @@ const DisplaySettings: FC = () => {
showSearch
getPopupContainer={(triggerNode) => triggerNode.parentElement || document.body}
/>
- handleUserFontChange('')}
- className="ml-2"
- startContent={}
- color="default"
- variant="light"
- isIconOnly
- />
+ handleUserFontChange('')} className="ml-2" variant="ghost" size="icon">
+
+
@@ -346,14 +328,9 @@ const DisplaySettings: FC = () => {
showSearch
getPopupContainer={(triggerNode) => triggerNode.parentElement || document.body}
/>
- handleUserCodeFontChange('')}
- className="ml-2"
- startContent={}
- color="default"
- variant="light"
- isIconOnly
- />
+ handleUserCodeFontChange('')} className="ml-2" variant="ghost" size="icon">
+
+
@@ -414,7 +391,7 @@ const DisplaySettings: FC = () => {
style={{ display: 'flex', flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
{t('settings.display.sidebar.title')}
- {t('common.reset')}
+ {t('common.reset')}
diff --git a/src/renderer/src/pages/settings/DocProcessSettings/PreprocessProviderSettings.tsx b/src/renderer/src/pages/settings/DocProcessSettings/PreprocessProviderSettings.tsx
index e5aa73dc16..4930b43727 100644
--- a/src/renderer/src/pages/settings/DocProcessSettings/PreprocessProviderSettings.tsx
+++ b/src/renderer/src/pages/settings/DocProcessSettings/PreprocessProviderSettings.tsx
@@ -99,7 +99,9 @@ const PreprocessProviderSettings: FC = ({ provider: _provider }) => {
}}>
{t('settings.provider.api_key.label')}
- } isIconOnly />
+
+
+
diff --git a/src/renderer/src/pages/settings/MCPSettings/AddMcpServerModal.tsx b/src/renderer/src/pages/settings/MCPSettings/AddMcpServerModal.tsx
index 105a23b5a5..f62369c304 100644
--- a/src/renderer/src/pages/settings/MCPSettings/AddMcpServerModal.tsx
+++ b/src/renderer/src/pages/settings/MCPSettings/AddMcpServerModal.tsx
@@ -359,7 +359,10 @@ const AddMcpServerModal: FC = ({
}}
onRemove={() => setDxtFile(null)}
fileList={dxtFile ? [{ uid: '-1', name: dxtFile.name, status: 'done' } as any] : []}>
- }>{t('settings.mcp.addServer.importFrom.selectDxtFile')}
+
+
+ {t('settings.mcp.addServer.importFrom.selectDxtFile')}
+
)}
diff --git a/src/renderer/src/pages/settings/MCPSettings/BuiltinMCPServerList.tsx b/src/renderer/src/pages/settings/MCPSettings/BuiltinMCPServerList.tsx
index 0b1b15f0a4..33d8094b79 100644
--- a/src/renderer/src/pages/settings/MCPSettings/BuiltinMCPServerList.tsx
+++ b/src/renderer/src/pages/settings/MCPSettings/BuiltinMCPServerList.tsx
@@ -29,12 +29,9 @@ const BuiltinMCPServerList: FC = () => {
:
- }
- size="sm"
- onPress={() => {
+ variant="ghost"
+ size="icon-sm"
+ onClick={() => {
if (isInstalled) {
return
}
@@ -42,9 +39,9 @@ const BuiltinMCPServerList: FC = () => {
addMCPServer(server)
window.toast.success(t('settings.mcp.addSuccess'))
}}
- isDisabled={isInstalled}
- isIconOnly
- />
+ disabled={isInstalled}>
+ {isInstalled ? : }
+
= ({ mini = false }) => {
const installed = isUvInstalled && isBunInstalled
return (
: }
- className="nodrag"
- color={installed ? 'success' : 'danger'}
- onPress={() => navigate('/settings/mcp/mcp-install')}
- isIconOnly
- />
+ className="nodrag rounded-full"
+ variant={installed ? 'default' : 'destructive'}
+ onClick={() => navigate('/settings/mcp/mcp-install')}
+ size="icon">
+ {installed ? : }
+
)
}
@@ -119,13 +117,7 @@ const InstallNpxUv: FC = ({ mini = false }) => {
{isUvInstalled ? 'UV Installed' : `UV ${t('settings.mcp.missingDependencies')}`}
{!isUvInstalled && (
-
+
{isInstallingUv ? t('settings.mcp.dependenciesInstalling') : t('settings.mcp.install')}
)}
@@ -151,13 +143,7 @@ const InstallNpxUv: FC = ({ mini = false }) => {
{isBunInstalled ? 'Bun Installed' : `Bun ${t('settings.mcp.missingDependencies')}`}
{!isBunInstalled && (
-
+
{isInstallingBun ? t('settings.mcp.dependenciesInstalling') : t('settings.mcp.install')}
)}
@@ -173,7 +159,8 @@ const InstallNpxUv: FC = ({ mini = false }) => {
}
/>
- }>
+
+
{t('settings.mcp.installHelp')}
diff --git a/src/renderer/src/pages/settings/MCPSettings/McpProviderSettings.tsx b/src/renderer/src/pages/settings/MCPSettings/McpProviderSettings.tsx
index 14578f1ed0..f93a2b9f86 100644
--- a/src/renderer/src/pages/settings/MCPSettings/McpProviderSettings.tsx
+++ b/src/renderer/src/pages/settings/MCPSettings/McpProviderSettings.tsx
@@ -64,13 +64,13 @@ const McpProviderSettings: React.FC = ({ provider, existingServers }) =>
{provider.name}
{provider.discoverUrl && (
-
+
)}
-
+
{t('settings.mcp.fetch.button', 'Fetch Servers')}
@@ -110,7 +110,7 @@ const McpProviderSettings: React.FC = ({ provider, existingServers }) =>
const isAlreadyAdded = existingServers.some((existing) => existing.id === server.id)
return (
{
diff --git a/src/renderer/src/pages/settings/MCPSettings/McpServerCard.tsx b/src/renderer/src/pages/settings/MCPSettings/McpServerCard.tsx
index 4b552975e9..15e65ea6e6 100644
--- a/src/renderer/src/pages/settings/MCPSettings/McpServerCard.tsx
+++ b/src/renderer/src/pages/settings/MCPSettings/McpServerCard.tsx
@@ -78,32 +78,21 @@ const McpServerCard: FC = ({
onClick={onClickDetails}
action={
+
+
+
+
+
-
-
- }
+ variant="destructive"
size="sm"
- onPress={onClickDetails}
- isIconOnly
- />
-
-
-
- }
- size="sm"
- onPress={() => {
+ onClick={() => {
onDelete()
- }}
- isIconOnly
- />
+ }}>
+
+
+
+
}
/>
@@ -120,44 +109,26 @@ const McpServerCard: FC = ({
{server.logoUrl && }
{server.name}
{server.providerUrl && (
- }
- onPress={handleOpenUrl}
- data-no-dnd
- isIconOnly
- />
+
+
+
)}
e.stopPropagation()}>
- }
- color="danger"
- onPress={onDelete}
- isIconOnly
- />
- }
- onPress={onEdit}
- data-no-dnd
- isIconOnly
- />
+
+
+
+
+
+
{server.description}
diff --git a/src/renderer/src/pages/settings/MCPSettings/McpServersList.tsx b/src/renderer/src/pages/settings/MCPSettings/McpServersList.tsx
index 94d9620999..6b90a7dca4 100644
--- a/src/renderer/src/pages/settings/MCPSettings/McpServersList.tsx
+++ b/src/renderer/src/pages/settings/MCPSettings/McpServersList.tsx
@@ -230,11 +230,8 @@ const McpServersList: FC = () => {
- }
- variant="solid"
- radius="full"
- onPress={() => EditMcpJsonPopup.show()}>
+ EditMcpJsonPopup.show()}>
+
{t('common.edit')}
{
items: menuItems
}}
trigger={['click']}>
- } variant="solid" radius="full">
+
+
{t('common.add')}
- } variant="solid" onPress={onSyncServers} radius="full">
+
+
{t('settings.mcp.sync.button')}
diff --git a/src/renderer/src/pages/settings/MCPSettings/McpSettings.tsx b/src/renderer/src/pages/settings/MCPSettings/McpSettings.tsx
index 90c858256a..60327a0450 100644
--- a/src/renderer/src/pages/settings/MCPSettings/McpSettings.tsx
+++ b/src/renderer/src/pages/settings/MCPSettings/McpSettings.tsx
@@ -738,14 +738,9 @@ const McpSettings: React.FC = () => {
{server?.name}
{serverVersion && }
- }
- variant="light"
- onPress={() => onDeleteMcpServer(server)}
- isIconOnly
- />
+ onDeleteMcpServer(server)}>
+
+
{
/>
}
- onPress={onSave}
- isLoading={loading}
- radius="full"
- isDisabled={!isFormChanged || activeTab !== 'settings'}>
+ variant="default"
+ onClick={onSave}
+ disabled={loading || !isFormChanged || activeTab !== 'settings'}
+ className="rounded-full">
+
{t('common.save')}
diff --git a/src/renderer/src/pages/settings/MCPSettings/McpSettingsNavbar.tsx b/src/renderer/src/pages/settings/MCPSettings/McpSettingsNavbar.tsx
index 23e39c30a6..0e55f7e0c4 100644
--- a/src/renderer/src/pages/settings/MCPSettings/McpSettingsNavbar.tsx
+++ b/src/renderer/src/pages/settings/MCPSettings/McpSettingsNavbar.tsx
@@ -18,10 +18,10 @@ export const McpSettingsNavbar = () => {
navigate('/settings/mcp/npx-search')}
- startContent={}
+ variant="ghost"
+ onClick={() => navigate('/settings/mcp/npx-search')}
className="nodrag h-7 rounded-[20px] text-[13px]">
+
{t('settings.mcp.searchNpx')}
diff --git a/src/renderer/src/pages/settings/MCPSettings/McpTool.tsx b/src/renderer/src/pages/settings/MCPSettings/McpTool.tsx
index 144adb33fa..1da24f4044 100644
--- a/src/renderer/src/pages/settings/MCPSettings/McpTool.tsx
+++ b/src/renderer/src/pages/settings/MCPSettings/McpTool.tsx
@@ -170,7 +170,7 @@ const MCPToolsSection = ({ tools, server, onToggleTool, onToggleAutoApprove }: M
}>
handleAutoApproveToggle(tool, checked)}
size="sm"
/>
diff --git a/src/renderer/src/pages/settings/MCPSettings/NpxSearch.tsx b/src/renderer/src/pages/settings/MCPSettings/NpxSearch.tsx
index 1a7adf68d4..d94849e11c 100644
--- a/src/renderer/src/pages/settings/MCPSettings/NpxSearch.tsx
+++ b/src/renderer/src/pages/settings/MCPSettings/NpxSearch.tsx
@@ -162,12 +162,9 @@ const NpxSearch: FC = () => {
v{record.version}
:
- }
- size="sm"
- onPress={() => {
+ variant="ghost"
+ size="icon-sm"
+ onClick={() => {
if (isInstalled) {
return
}
@@ -187,8 +184,9 @@ const NpxSearch: FC = () => {
addMCPServer(newServer)
window.toast.success(t('settings.mcp.addSuccess'))
}}
- isIconOnly
- />
+ disabled={isInstalled}>
+ {isInstalled ? : }
+
}>
diff --git a/src/renderer/src/pages/settings/MCPSettings/SyncServersPopup.tsx b/src/renderer/src/pages/settings/MCPSettings/SyncServersPopup.tsx
index fa5e721212..6560f1fd4d 100644
--- a/src/renderer/src/pages/settings/MCPSettings/SyncServersPopup.tsx
+++ b/src/renderer/src/pages/settings/MCPSettings/SyncServersPopup.tsx
@@ -277,15 +277,10 @@ const PopupContainer: React.FC = ({ resolve, existingServers }) => {
-
+
{t('common.cancel')}
-
+
{t('settings.mcp.sync.button', 'Sync')}
diff --git a/src/renderer/src/pages/settings/MCPSettings/index.tsx b/src/renderer/src/pages/settings/MCPSettings/index.tsx
index 196f177309..cda631c60d 100644
--- a/src/renderer/src/pages/settings/MCPSettings/index.tsx
+++ b/src/renderer/src/pages/settings/MCPSettings/index.tsx
@@ -116,7 +116,9 @@ const MCPSettings: FC = () => {
{!isHomePage() && (
- } radius="full" isIconOnly />
+
+
+
)}
diff --git a/src/renderer/src/pages/settings/MemorySettings/MemorySettings.tsx b/src/renderer/src/pages/settings/MemorySettings/MemorySettings.tsx
index 85b113a26e..6bd4664f0e 100644
--- a/src/renderer/src/pages/settings/MemorySettings/MemorySettings.tsx
+++ b/src/renderer/src/pages/settings/MemorySettings/MemorySettings.tsx
@@ -168,16 +168,10 @@ const EditMemoryModal: React.FC = ({ visible, memory, onCa
}
}}
footer={[
-
+
{t('common.cancel')}
,
- form.submit()}>
+ form.submit()}>
{t('common.save')}
]}>
@@ -598,12 +592,9 @@ const MemorySettings = () => {
- }
- onPress={() => setSettingsModalVisible(true)}
- isIconOnly
- />
+ setSettingsModalVisible(true)} size="icon">
+
+
@@ -650,11 +641,8 @@ const MemorySettings = () => {
allowClear
style={{ width: 240 }}
/>
- }
- onPress={() => setAddMemoryModalVisible(true)}>
+ setAddMemoryModalVisible(true)}>
+
{t('memory.add_memory')}
{
}}
trigger={['click']}
placement="bottomRight">
- }>{t('common.more')}
+
+
+ {t('common.more')}
+
@@ -714,12 +705,8 @@ const MemorySettings = () => {
{t('memory.no_memories_description')}
- }
- onPress={() => setAddMemoryModalVisible(true)}
- size="lg">
+ setAddMemoryModalVisible(true)} size="lg">
+
{t('memory.add_first_memory')}
@@ -748,19 +735,13 @@ const MemorySettings = () => {
{memory.createdAt ? dayjs(memory.createdAt).fromNow() : '-'}
+ handleEditMemory(memory)}>
+
+
}
- onPress={() => handleEditMemory(memory)}
- isIconOnly
- />
- }
- onPress={() => {
+ onClick={() => {
window.modal.confirm({
centered: true,
title: t('memory.delete_confirm'),
@@ -769,9 +750,9 @@ const MemorySettings = () => {
okText: t('common.confirm'),
cancelText: t('common.cancel')
})
- }}
- isIconOnly
- />
+ }}>
+
+
{memory.memory}
diff --git a/src/renderer/src/pages/settings/MemorySettings/UserSelector.tsx b/src/renderer/src/pages/settings/MemorySettings/UserSelector.tsx
index 9fef074a8c..6515beec3b 100644
--- a/src/renderer/src/pages/settings/MemorySettings/UserSelector.tsx
+++ b/src/renderer/src/pages/settings/MemorySettings/UserSelector.tsx
@@ -52,7 +52,9 @@ const UserSelector: React.FC = ({ currentUser, uniqueUsers, o
- } isIconOnly />
+
+
+
)
diff --git a/src/renderer/src/pages/settings/ModelSettings/DefaultAssistantSettings.tsx b/src/renderer/src/pages/settings/ModelSettings/DefaultAssistantSettings.tsx
index 129140dba3..95e4e5986d 100644
--- a/src/renderer/src/pages/settings/ModelSettings/DefaultAssistantSettings.tsx
+++ b/src/renderer/src/pages/settings/ModelSettings/DefaultAssistantSettings.tsx
@@ -158,7 +158,9 @@ const AssistantSettings: FC = () => {
}}>
{t('settings.assistant.model_params')}
- } isIconOnly />
+
+
+
diff --git a/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx b/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx
index 7b71546356..bf5ec1d3d4 100644
--- a/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx
+++ b/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx
@@ -70,12 +70,9 @@ const ModelSettings: FC = () => {
onChange={(value) => setDefaultModel(find(allModels, JSON.parse(value)) as Model)}
placeholder={t('settings.models.empty')}
/>
- }
- className="ml-2"
- onPress={DefaultAssistantSettings.show}
- isIconOnly
- />
+
+
+
{t('settings.models.default_assistant_model_description')}
@@ -97,12 +94,9 @@ const ModelSettings: FC = () => {
onChange={(value) => setQuickModel(find(allModels, JSON.parse(value)) as Model)}
placeholder={t('settings.models.empty')}
/>
- }
- className="ml-2"
- onPress={TopicNamingModalPopup.show}
- isIconOnly
- />
+
+
+
{t('settings.models.quick_model.description')}
@@ -123,15 +117,14 @@ const ModelSettings: FC = () => {
onChange={(value) => setTranslateModel(find(allModels, JSON.parse(value)) as Model)}
placeholder={t('settings.models.empty')}
/>
- }
- isIconOnly
- className="ml-2"
- onPress={() => TranslateSettingsPopup.show()}
- />
+ TranslateSettingsPopup.show()} size="icon">
+
+
{translateModelPrompt !== TRANSLATE_PROMPT && (
- } className="ml-2" onPress={onResetTranslatePrompt} isIconOnly />
+
+
+
)}
diff --git a/src/renderer/src/pages/settings/ModelSettings/QuickModelPopup.tsx b/src/renderer/src/pages/settings/ModelSettings/QuickModelPopup.tsx
index 0424cd33bb..504c9ece3c 100644
--- a/src/renderer/src/pages/settings/ModelSettings/QuickModelPopup.tsx
+++ b/src/renderer/src/pages/settings/ModelSettings/QuickModelPopup.tsx
@@ -69,7 +69,9 @@ const PopupContainer: React.FC = ({ resolve }) => {
{topicNamingPrompt && (
- } onPress={handleReset} variant="light" isIconOnly />
+
+
+
)}
{
placeholder={t('notes.settings.data.work_directory_placeholder')}
readOnly
/>
- }
- onPress={handleSelectWorkDirectory}
- isLoading={isSelecting}
- className="ml-2">
+
+
{t('notes.settings.data.select')}
-
+
{t('notes.settings.data.apply')}
- {t('notes.settings.data.reset_to_default')}
+ {t('notes.settings.data.reset_to_default')}
diff --git a/src/renderer/src/pages/settings/ProviderSettings/AnthropicSettings.tsx b/src/renderer/src/pages/settings/ProviderSettings/AnthropicSettings.tsx
index 9ceb7f6df7..32df86ccc9 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/AnthropicSettings.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/AnthropicSettings.tsx
@@ -99,11 +99,7 @@ const AnthropicSettings = () => {
- {t('settings.provider.anthropic.logout')}
-
- }
+ action={{t('settings.provider.anthropic.logout')}}
showIcon
icon={}
/>
@@ -143,7 +139,7 @@ const AnthropicSettings = () => {
message={t('settings.provider.anthropic.description')}
description={t('settings.provider.anthropic.description_detail')}
action={
-
+
{t('settings.provider.anthropic.start_auth')}
}
diff --git a/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelEditContent.tsx b/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelEditContent.tsx
index e4cafa2074..462ed7104b 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelEditContent.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelEditContent.tsx
@@ -189,13 +189,9 @@ const ModelEditContent: FC = ({ provider, mo
{hasUserModified && (
- }
- onPress={handleResetTypes}
- variant="light"
- isIconOnly
- />
+
+
+
)}
@@ -323,14 +319,14 @@ const ModelEditContent: FC = ({ provider, mo
: }
- onPress={() => setShowMoreSettings(!showMoreSettings)}
+ variant="default"
+ onClick={() => setShowMoreSettings(!showMoreSettings)}
style={{ color: 'var(--color-text-3)' }}>
{t('settings.moresetting.label')}
+ {showMoreSettings ? : }
- }>
+
+
{t('common.save')}
diff --git a/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelTypeSelector.tsx b/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelTypeSelector.tsx
index 334a416bc4..aa2a41c7f6 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelTypeSelector.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelTypeSelector.tsx
@@ -173,7 +173,7 @@ const ModelTypeSelector: FC = ({
]}
/>
{hasUserModified && (
-
+
{t('common.reset')}
)}
diff --git a/src/renderer/src/pages/settings/ProviderSettings/GithubCopilotSettings.tsx b/src/renderer/src/pages/settings/ProviderSettings/GithubCopilotSettings.tsx
index aadcdc34e3..fa19e0a997 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/GithubCopilotSettings.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/GithubCopilotSettings.tsx
@@ -215,7 +215,7 @@ const GithubCopilotSettings: FC = ({ providerId }) =
)}
{username || t('settings.provider.copilot.auth_success_title')}
-
+
{t('settings.provider.copilot.logout')}
@@ -250,7 +250,8 @@ const GithubCopilotSettings: FC = ({ providerId }) =
readOnly
style={{ fontFamily: 'monospace', fontSize: '14px', fontWeight: 'bold', marginRight: 8 }}
/>
- } onPress={handleCopyUserCode}>
+
+
{t('common.copy')}
@@ -267,7 +268,7 @@ const GithubCopilotSettings: FC = ({ providerId }) =
{t('settings.provider.copilot.step_authorize_detail')}
-
+
{t('settings.provider.copilot.open_verification_page')}
{verificationUri && (
@@ -290,11 +291,7 @@ const GithubCopilotSettings: FC = ({ providerId }) =
-
+
{t('settings.provider.copilot.connect')}
@@ -312,7 +309,7 @@ const GithubCopilotSettings: FC = ({ providerId }) =
message={t('settings.provider.copilot.description')}
description={t('settings.provider.copilot.description_detail')}
action={
-
+
{t('settings.provider.copilot.start_auth')}
}
diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/AddModelPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/AddModelPopup.tsx
index a1889788db..c2ae50f873 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/AddModelPopup.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/AddModelPopup.tsx
@@ -127,9 +127,7 @@ const PopupContainer: React.FC = ({ title, provider, resolve }) => {
-
- {t('settings.models.add.add_model')}
-
+ {t('settings.models.add.add_model')}
diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/DownloadOVMSModelPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/DownloadOVMSModelPopup.tsx
index 6a6f8cb428..5af1080ec1 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/DownloadOVMSModelPopup.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/DownloadOVMSModelPopup.tsx
@@ -315,13 +315,7 @@ const PopupContainer: React.FC = ({ title, resolve }) => {
)}
-
+
{loading ? t('common.cancel') : t('ovms.download.button')}
diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsList.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsList.tsx
index bb5b3379e7..f0b2a6fd6b 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsList.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsList.tsx
@@ -116,13 +116,13 @@ const ManageModelsList: React.FC = ({ modelGroups, provid
}
closeDelay={0}>
: }
- isIconOnly
- onPress={() => {
+ variant="ghost"
+ size="icon"
+ onClick={() => {
handleGroupAction()
- }}
- />
+ }}>
+ {isAllInProvider ? : }
+
)
},
@@ -206,14 +206,13 @@ const ModelListItem: React.FC = memo(({ model, provider, onA
extra: model.description && ,
ext: '.model',
actions: isAdded ? (
- onRemoveModel(model)}
- startContent={}
- isIconOnly
- />
+ onRemoveModel(model)} size="icon">
+
+
) : (
- onAddModel(model)} startContent={} isIconOnly />
+ onAddModel(model)} size="icon">
+
+
)
}}
/>
diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsPopup.tsx
index f28b6e726a..cfd8665160 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsPopup.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsPopup.tsx
@@ -251,24 +251,18 @@ const PopupContainer: React.FC = ({ providerId, resolve }) => {
}>
: }
- isIconOnly
- size="lg"
- onPress={() => {
+ size="icon-lg"
+ onClick={() => {
isAllFilteredInProvider ? onRemoveAll() : onAddAll()
}}
- isDisabled={loadingModels || list.length === 0}
- />
+ disabled={loadingModels || list.length === 0}>
+ {isAllFilteredInProvider ? : }
+
- }
- isIconOnly
- size="lg"
- onPress={() => loadModels(provider)}
- isDisabled={loadingModels}
- />
+ loadModels(provider)} disabled={loadingModels}>
+
+
)
diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelList.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelList.tsx
index a1bd71afcf..e80e7498e6 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelList.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelList.tsx
@@ -120,12 +120,9 @@ const ModelList: React.FC = ({ providerId }) => {
- }
- isIconOnly
- />
+
+
+
@@ -171,23 +168,18 @@ const ModelList: React.FC = ({ providerId }) => {
)}
- }
- isDisabled={isHealthChecking}>
+
+
{t('button.manage')}
{provider.id !== 'ovms' ? (
- } isDisabled={isHealthChecking}>
+
+
{t('button.add')}
) : (
- }
- isDisabled={isHealthChecking}>
+
+
{t('button.download')}
)}
diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelListGroup.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelListGroup.tsx
index 4844a3e4b4..e90661a0f6 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelListGroup.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelListGroup.tsx
@@ -1,5 +1,5 @@
import { Button, Flex, Tooltip } from '@cherrystudio/ui'
-import { CustomCollapse } from '@cherrystudio/ui'
+import CustomCollapse from '@renderer/components/CustomCollapse'
import { DynamicVirtualList, type DynamicVirtualListRef } from '@renderer/components/VirtualList'
import type { Model } from '@renderer/types'
import type { ModelWithStatus } from '@renderer/types/healthCheck'
@@ -36,13 +36,8 @@ const ModelListGroup: React.FC = ({
const { t } = useTranslation()
const listRef = useRef(null)
- const handleCollapseChange = useCallback((keys: 'all' | Set) => {
- if (keys === 'all') {
- return
- }
- const stringKeys = Array.from(keys)
-
- const isNowExpanded = Array.isArray(stringKeys) ? stringKeys.length > 0 : !!stringKeys
+ const handleCollapseChange = useCallback((activeKeys: string[] | string) => {
+ const isNowExpanded = Array.isArray(activeKeys) ? activeKeys.length > 0 : !!activeKeys
if (isNowExpanded) {
// 延迟到 DOM 可见后测量
requestAnimationFrame(() => listRef.current?.measure())
@@ -52,34 +47,31 @@ const ModelListGroup: React.FC = ({
return (
- }
- onPress={onRemoveGroup}
- isDisabled={disabled}
- isIconOnly
- />
-
- ),
- classNames: {
- trigger: 'p-[3px_calc(6px_+_var(--scrollbar-width))_3px_16px]'
- },
- title: (
-
- {groupName}
-
- )
+ defaultActiveKey={defaultOpen ? ['1'] : []}
+ onChange={handleCollapseChange}
+ label={
+
+ {groupName}
+
+ }
+ extra={
+
+ {
+ e.stopPropagation()
+ onRemoveGroup()
+ }}
+ disabled={disabled}>
+
+
+
+ }
+ styles={{
+ header: {
+ padding: '3px calc(6px + var(--scrollbar-width)) 3px 16px'
+ }
}}>
= ({ ref, model, modelStatus,
- onEdit(model)}
- isDisabled={disabled}
- startContent={}
- isIconOnly
- />
+ onEdit(model)} disabled={disabled} size="icon">
+
+
- onRemove(model)}
- isDisabled={disabled}
- startContent={}
- isIconOnly
- />
+ onRemove(model)} disabled={disabled} size="icon">
+
+
diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiAddModelPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiAddModelPopup.tsx
index 1d6ece7f4e..06644579a6 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiAddModelPopup.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiAddModelPopup.tsx
@@ -159,9 +159,7 @@ const PopupContainer: React.FC = ({ title, provider, resolve, model, endp
-
- {t('settings.models.add.add_model')}
-
+ {t('settings.models.add.add_model')}
diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiBatchAddModelPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiBatchAddModelPopup.tsx
index 27665b16d0..3420326616 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiBatchAddModelPopup.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiBatchAddModelPopup.tsx
@@ -98,9 +98,7 @@ const PopupContainer: React.FC = ({ title, provider, resolve, batchModels
-
- {t('settings.models.add.add_model')}
-
+ {t('settings.models.add.add_model')}
diff --git a/src/renderer/src/pages/settings/ProviderSettings/OVMSSettings.tsx b/src/renderer/src/pages/settings/ProviderSettings/OVMSSettings.tsx
index c5e25e2baf..ff5cf0fab0 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/OVMSSettings.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/OVMSSettings.tsx
@@ -115,46 +115,22 @@ const OVMSSettings: FC = () => {
{getStatusMessage()}
{ovmsStatus === 'not-installed' && (
-
+
{isInstallingOvms ? t('ovms.action.installing') : t('ovms.action.install')}
)}
{ovmsStatus === 'not-running' && (
-
+
{isInstallingOvms ? t('ovms.action.installing') : t('ovms.action.reinstall')}
-
+
{isRunningOvms ? t('ovms.action.starting') : t('ovms.action.run')}
)}
{ovmsStatus === 'running' && (
-
+
{isStoppingOvms ? t('ovms.action.stopping') : t('ovms.action.stop')}
)}
diff --git a/src/renderer/src/pages/settings/ProviderSettings/ProviderList.tsx b/src/renderer/src/pages/settings/ProviderSettings/ProviderList.tsx
index ce04232eee..2d13804171 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/ProviderList.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/ProviderList.tsx
@@ -376,9 +376,9 @@ const ProviderList: FC = () => {
}
- onPress={onAddProvider}
- isDisabled={dragging}>
+ onClick={onAddProvider}
+ disabled={dragging}>
+
{t('button.add')}
diff --git a/src/renderer/src/pages/settings/ProviderSettings/ProviderOAuth.tsx b/src/renderer/src/pages/settings/ProviderSettings/ProviderOAuth.tsx
index ddd72bb160..a266b2d0f1 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/ProviderOAuth.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/ProviderOAuth.tsx
@@ -53,13 +53,12 @@ const ProviderOAuth: FC = ({ providerId }) => {
) : (
- }
- onPress={() => providerCharge(provider.id)}>
+ providerCharge(provider.id)}>
+
{t('settings.provider.charge')}
- } onPress={() => providerBills(provider.id)}>
+ providerBills(provider.id)}>
+
{t('settings.provider.bills')}
diff --git a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx
index 548948c13a..23f31e42f2 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx
@@ -323,18 +323,19 @@ const ProviderSetting: FC = ({ providerId }) => {
{fancyProviderName}
{officialWebsite && (
- } isIconOnly />
+
+
+
)}
{!isSystemProvider(provider) && (
}
- isIconOnly
+ variant="ghost"
size="sm"
- onPress={() => ApiOptionsSettingsPopup.show({ providerId: provider.id })}
- />
+ onClick={() => ApiOptionsSettingsPopup.show({ providerId: provider.id })}>
+
+
)}
@@ -381,7 +382,9 @@ const ProviderSetting: FC = ({ providerId }) => {
{t('settings.provider.api_key.label')}
{provider.id !== 'copilot' && (
- } isIconOnly />
+
+
+
)}
@@ -396,20 +399,16 @@ const ProviderSetting: FC = ({ providerId }) => {
suffix={renderStatusIndicator()}
/>
- ) : apiKeyConnectivity.status === HealthStatus.SUCCESS ? (
-
- ) : undefined
- }
- isDisabled={!apiHost || apiKeyConnectivity.checking}>
- {!apiKeyConnectivity.checking &&
- !(apiKeyConnectivity.status === HealthStatus.SUCCESS) &&
- t('settings.provider.check')}
+ onClick={onCheckApi}
+ disabled={!apiHost || apiKeyConnectivity.checking}>
+ {apiKeyConnectivity.checking ? (
+
+ ) : apiKeyConnectivity.status === HealthStatus.SUCCESS ? (
+
+ ) : (
+ t('settings.provider.check')
+ )}
@@ -428,12 +427,9 @@ const ProviderSetting: FC = ({ providerId }) => {
{t('settings.provider.api_host')}
- CustomHeaderPopup.show({ provider })}
- startContent={}
- isIconOnly
- />
+ CustomHeaderPopup.show({ provider })} size="icon">
+
+
= ({ providerId }) => {
onBlur={onUpdateApiHost}
/>
{!isEmpty(configedApiHost) && apiHost !== configedApiHost && (
-
+
{t('settings.provider.api.url.reset')}
)}
diff --git a/src/renderer/src/pages/settings/ProviderSettings/UrlSchemaInfoPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/UrlSchemaInfoPopup.tsx
index 52861f52ac..4c71c5812a 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/UrlSchemaInfoPopup.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/UrlSchemaInfoPopup.tsx
@@ -112,19 +112,13 @@ const PopupContainer = ({ id, apiKey: newApiKey, baseUrl, type, name, resolve }:
{showFullKey ? newApiKey : maskApiKey(newApiKey)}
-
- ) : (
-
- )
- }
- onPress={() => setShowFullKey((prev) => !prev)}
- isIconOnly
- />
+ setShowFullKey((prev) => !prev)}>
+ {showFullKey ? (
+
+ ) : (
+
+ )}
+
diff --git a/src/renderer/src/pages/settings/QuickAssistantSettings.tsx b/src/renderer/src/pages/settings/QuickAssistantSettings.tsx
index 779c8587ae..34b495fbc6 100644
--- a/src/renderer/src/pages/settings/QuickAssistantSettings.tsx
+++ b/src/renderer/src/pages/settings/QuickAssistantSettings.tsx
@@ -160,7 +160,7 @@ const QuickAssistantSettings: FC = () => {
{
+ onClick={() => {
dispatch(setQuickAssistantId(defaultAssistant.id))
}}
selected={!!quickAssistantId}>
@@ -168,7 +168,7 @@ const QuickAssistantSettings: FC = () => {
dispatch(setQuickAssistantId(''))}
+ onClick={() => dispatch(setQuickAssistantId(''))}
selected={!quickAssistantId}>
{t('settings.models.use_model')}
diff --git a/src/renderer/src/pages/settings/QuickPhraseSettings.tsx b/src/renderer/src/pages/settings/QuickPhraseSettings.tsx
index e88ce5feb3..64a61d9f56 100644
--- a/src/renderer/src/pages/settings/QuickPhraseSettings.tsx
+++ b/src/renderer/src/pages/settings/QuickPhraseSettings.tsx
@@ -79,7 +79,9 @@ const QuickPhraseSettings: FC = () => {
{t('settings.quickPhrase.title')}
- } onPress={handleAdd} isIconOnly />
+
+
+
@@ -99,13 +101,9 @@ const QuickPhraseSettings: FC = () => {
extra: phrase.content,
actions: (
- }
- onPress={() => handleEdit(phrase)}
- isIconOnly
- />
+ handleEdit(phrase)} size="icon">
+
+
{
cancelText={t('common.cancel')}
onConfirm={() => handleDelete(phrase.id)}
icon={}>
- }
- isIconOnly
- />
+ {}} size="icon">
+
+
)
diff --git a/src/renderer/src/pages/settings/SelectionAssistantSettings/SelectionAssistantSettings.tsx b/src/renderer/src/pages/settings/SelectionAssistantSettings/SelectionAssistantSettings.tsx
index 0c354698f3..81b55a20c5 100644
--- a/src/renderer/src/pages/settings/SelectionAssistantSettings/SelectionAssistantSettings.tsx
+++ b/src/renderer/src/pages/settings/SelectionAssistantSettings/SelectionAssistantSettings.tsx
@@ -87,8 +87,8 @@ const SelectionAssistantSettings: FC = () => {
{t('selection.name')}
window.api.openWebsite('https://github.com/CherryHQ/cherry-studio/issues/6505')}
+ variant="ghost"
+ onClick={() => window.api.openWebsite('https://github.com/CherryHQ/cherry-studio/issues/6505')}
style={{ fontSize: 12 }}>
{'FAQ & ' + t('settings.about.feedback.button')}
@@ -103,7 +103,7 @@ const SelectionAssistantSettings: FC = () => {
@@ -249,7 +249,8 @@ const SelectionAssistantSettings: FC = () => {
{t('selection.settings.advanced.filter_list.title')}
{t('selection.settings.advanced.filter_list.description')}
- } onPress={() => setIsFilterListModalOpen(true)}>
+ setIsFilterListModalOpen(true)}>
+
{t('common.edit')}
diff --git a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/ActionsListItem.tsx b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/ActionsListItem.tsx
index b822a6a0a6..67f11a474b 100644
--- a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/ActionsListItem.tsx
+++ b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/ActionsListItem.tsx
@@ -58,10 +58,10 @@ const ActionOperations = memo(({ item, onEdit, onDelete }: ActionOperationsProps
if (!item.isBuiltIn) {
return (
- onEdit(item)} isIconOnly>
+ onEdit(item)}>
- onDelete(item.id)} isIconOnly>
+ onDelete(item.id)}>
@@ -71,7 +71,7 @@ const ActionOperations = memo(({ item, onEdit, onDelete }: ActionOperationsProps
if (item.isBuiltIn && item.id === 'search') {
return (
- onEdit(item)} isIconOnly>
+ onEdit(item)}>
diff --git a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/MacProcessTrustHintModal.tsx b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/MacProcessTrustHintModal.tsx
index 025a26552a..01f79071bc 100644
--- a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/MacProcessTrustHintModal.tsx
+++ b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/MacProcessTrustHintModal.tsx
@@ -32,12 +32,12 @@ const MacProcessTrustHintModal: FC = ({ open, onC
footer={
+ onClick={handleOpenAccessibility}>
{t('selection.settings.enable.mac_process_trust_hint.button.open_accessibility_settings')}
-
+
{t('selection.settings.enable.mac_process_trust_hint.button.go_to_settings')}
diff --git a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionActionSearchModal.tsx b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionActionSearchModal.tsx
index 4893161c04..cb30b02da5 100644
--- a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionActionSearchModal.tsx
+++ b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionActionSearchModal.tsx
@@ -219,7 +219,7 @@ const SelectionActionSearchModal: FC = ({
+
{t('selection.settings.search_modal.custom.test')}
}
diff --git a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionFilterListModal.tsx b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionFilterListModal.tsx
index 429aef441e..1ddbf2f251 100644
--- a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionFilterListModal.tsx
+++ b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionFilterListModal.tsx
@@ -50,10 +50,10 @@ const SelectionFilterListModal: FC = ({ open, onC
keyboard={true}
destroyOnHidden
footer={[
-
+
{t('common.cancel')}
,
-
+
{t('common.save')}
]}>
diff --git a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SettingsActionsListHeader.tsx b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SettingsActionsListHeader.tsx
index f73b9cb728..83eb73dff9 100644
--- a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SettingsActionsListHeader.tsx
+++ b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SettingsActionsListHeader.tsx
@@ -23,7 +23,7 @@ const SettingsActionsListHeader = memo(({ customItemsCount, maxCustomItems, onRe
{t('selection.settings.actions.title')}
-
+
{t('selection.settings.actions.reset.button')}
@@ -33,12 +33,8 @@ const SettingsActionsListHeader = memo(({ customItemsCount, maxCustomItems, onRe
? t('selection.settings.actions.add_tooltip.disabled', { max: maxCustomItems })
: t('selection.settings.actions.add_tooltip.enabled')
}>
- }
- onPress={onAdd}
- isDisabled={isCustomItemLimitReached}
- style={{ paddingInline: '8px' }}>
+
+
{t('selection.settings.actions.custom')}
diff --git a/src/renderer/src/pages/settings/ShortcutSettings.tsx b/src/renderer/src/pages/settings/ShortcutSettings.tsx
index 93b77635c3..e42ee98032 100644
--- a/src/renderer/src/pages/settings/ShortcutSettings.tsx
+++ b/src/renderer/src/pages/settings/ShortcutSettings.tsx
@@ -371,22 +371,17 @@ const ShortcutSettings: FC = () => {
render: (record: Shortcut) => (
- }
- size="sm"
- isIconOnly
- onPress={() => handleResetShortcut(record)}
- isDisabled={!isShortcutModified(record)}
- />
+ handleResetShortcut(record)} disabled={!isShortcutModified(record)}>
+
+
}
- size="sm"
- isIconOnly
- onPress={() => handleClear(record)}
- isDisabled={record.shortcut.length === 0 || !record.editable}
- />
+ size="icon-sm"
+ onClick={() => handleClear(record)}
+ disabled={record.shortcut.length === 0 || !record.editable}>
+
+
)
@@ -416,7 +411,7 @@ const ShortcutSettings: FC = () => {
/>
- {t('settings.shortcuts.reset_defaults')}
+ {t('settings.shortcuts.reset_defaults')}
diff --git a/src/renderer/src/pages/settings/ToolSettings/ApiServerSettings/ApiServerSettings.tsx b/src/renderer/src/pages/settings/ToolSettings/ApiServerSettings/ApiServerSettings.tsx
index b1069b085f..d38e1a1e12 100644
--- a/src/renderer/src/pages/settings/ToolSettings/ApiServerSettings/ApiServerSettings.tsx
+++ b/src/renderer/src/pages/settings/ToolSettings/ApiServerSettings/ApiServerSettings.tsx
@@ -81,7 +81,8 @@ const ApiServerSettings: FC = () => {
{t('apiServer.description')}
{apiServerRunning && (
- } onPress={openApiDocs}>
+
+
{t('apiServer.documentation.title')}
)}
@@ -157,18 +158,14 @@ const ApiServerSettings: FC = () => {
suffix={
{!apiServerRunning && (
-
+
{t('apiServer.actions.regenerate')}
)}
- }
- onPress={copyApiKey}
- isDisabled={!apiServerConfig.apiKey}
- />
+
+
+
}
diff --git a/src/renderer/src/pages/settings/TranslateSettingsPopup/CustomLanguageModal.tsx b/src/renderer/src/pages/settings/TranslateSettingsPopup/CustomLanguageModal.tsx
index 34e063fcaa..60eefd647d 100644
--- a/src/renderer/src/pages/settings/TranslateSettingsPopup/CustomLanguageModal.tsx
+++ b/src/renderer/src/pages/settings/TranslateSettingsPopup/CustomLanguageModal.tsx
@@ -83,10 +83,10 @@ const CustomLanguageModal = ({ isOpen, editingCustomLanguage, onAdd, onEdit, onC
const footer = useMemo(() => {
return [
-
+
{t('common.cancel')}
,
-
+
{editingCustomLanguage ? t('common.save') : t('common.add')}
]
@@ -120,7 +120,9 @@ const CustomLanguageModal = ({ isOpen, editingCustomLanguage, onAdd, onEdit, onC
}
arrow
trigger="click">
- } isIconOnly />
+
+
+
{
render: (_, record) => {
return (
- } onPress={() => onClickEdit(record)}>
+ onClickEdit(record)}>
+
{t('common.edit')}
onDelete(record.id)}>
- } color="danger">
+
+
{t('common.delete')}
@@ -122,11 +124,8 @@ const CustomLanguageSettings = () => {
{t('translate.custom.label')}
- }
- onPress={onClickAdd}
- style={{ marginBottom: 5, marginTop: -5 }}>
+
+
{t('common.add')}
diff --git a/src/renderer/src/pages/settings/WebSearchSettings/BlacklistSettings.tsx b/src/renderer/src/pages/settings/WebSearchSettings/BlacklistSettings.tsx
index 40e0b61db3..9e366e2815 100644
--- a/src/renderer/src/pages/settings/WebSearchSettings/BlacklistSettings.tsx
+++ b/src/renderer/src/pages/settings/WebSearchSettings/BlacklistSettings.tsx
@@ -248,7 +248,7 @@ const BlacklistSettings: FC = () => {
autoSize={{ minRows: 4, maxRows: 8 }}
rows={4}
/>
- updateManualBlacklist(blacklistInput)} style={{ marginTop: 10 }}>
+ updateManualBlacklist(blacklistInput)} style={{ marginTop: 10 }}>
{t('common.save')}
{errFormat && (
@@ -259,10 +259,9 @@ const BlacklistSettings: FC = () => {
{t('settings.tool.websearch.subscribe')}
+ variant={subscribeValid ? 'ghost' : 'default'}
+ disabled={subscribeChecking}
+ onClick={handleAddSubscribe}>
{t('settings.tool.websearch.subscribe_add')}
@@ -277,11 +276,10 @@ const BlacklistSettings: FC = () => {
/>
+ onClick={updateSubscribe}>
{subscribeChecking ? (
) : subscribeValid ? (
@@ -290,7 +288,7 @@ const BlacklistSettings: FC = () => {
t('settings.tool.websearch.subscribe_update')
)}
-
+
{t('settings.tool.websearch.subscribe_delete')}
diff --git a/src/renderer/src/pages/settings/WebSearchSettings/WebSearchProviderSetting.tsx b/src/renderer/src/pages/settings/WebSearchSettings/WebSearchProviderSetting.tsx
index 0cf38ab9af..f9e8bf49e1 100644
--- a/src/renderer/src/pages/settings/WebSearchSettings/WebSearchProviderSetting.tsx
+++ b/src/renderer/src/pages/settings/WebSearchSettings/WebSearchProviderSetting.tsx
@@ -178,7 +178,9 @@ const WebSearchProviderSetting: FC = ({ providerId }) => {
}}>
{t('settings.provider.api_key.label')}
- } isIconOnly />
+
+
+
@@ -191,11 +193,7 @@ const WebSearchProviderSetting: FC = ({ providerId }) => {
type="password"
autoFocus={apiKey === ''}
/>
-
+
{apiChecking ? (
) : apiValid ? (
diff --git a/src/renderer/src/pages/store/assistants/presets/AssistantPresetsPage.tsx b/src/renderer/src/pages/store/assistants/presets/AssistantPresetsPage.tsx
index 013318f0a0..e5cd7ff884 100644
--- a/src/renderer/src/pages/store/assistants/presets/AssistantPresetsPage.tsx
+++ b/src/renderer/src/pages/store/assistants/presets/AssistantPresetsPage.tsx
@@ -267,18 +267,18 @@ const AssistantPresetsPage: FC = () => {
/>
) : (
isTopNavbar && (
- }>
+
+
{t('common.search')}
)
)}
- }>
+
+
{t('assistants.presets.import.title')}
- }>
+
+
{t('assistants.presets.add.title')}
diff --git a/src/renderer/src/pages/store/assistants/presets/components/AddAssistantPresetPopup.tsx b/src/renderer/src/pages/store/assistants/presets/components/AddAssistantPresetPopup.tsx
index f73e37f13b..be667e097a 100644
--- a/src/renderer/src/pages/store/assistants/presets/components/AddAssistantPresetPopup.tsx
+++ b/src/renderer/src/pages/store/assistants/presets/components/AddAssistantPresetPopup.tsx
@@ -207,7 +207,10 @@ const PopupContainer: React.FC = ({ resolve }) => {
}
arrow
trigger="click">
- {emoji}}>{t('common.select')}
+
+ {emoji && {emoji}}
+ {t('common.select')}
+
@@ -223,21 +226,16 @@ const PopupContainer: React.FC = ({ resolve }) => {
Tokens: {tokenCount}
: }
- isIconOnly
- size="sm"
- onPress={handleGenerateButtonClick}
+ size="icon-sm"
+ onClick={handleGenerateButtonClick}
style={{ position: 'absolute', top: 8, right: 8 }}
- isDisabled={loading}
- />
+ disabled={loading}>
+ {loading ? : }
+
{showUndoButton && (
- }
- isIconOnly
- size="sm"
- onPress={handleUndoButtonClick}
- style={{ position: 'absolute', top: 8, right: 48 }}
- />
+
+
+
)}
{showKnowledgeIcon && (
diff --git a/src/renderer/src/pages/store/assistants/presets/components/AssistantPresetCard.tsx b/src/renderer/src/pages/store/assistants/presets/components/AssistantPresetCard.tsx
index 717e3e0998..ea22b6459d 100644
--- a/src/renderer/src/pages/store/assistants/presets/components/AssistantPresetCard.tsx
+++ b/src/renderer/src/pages/store/assistants/presets/components/AssistantPresetCard.tsx
@@ -160,7 +160,7 @@ const AssistantPresetCard: FC = ({ preset, onClick, activegroup, getLocal
}}
trigger={['click']}
placement="bottomRight">
-
+
diff --git a/src/renderer/src/pages/store/assistants/presets/components/ImportAssistantPresetPopup.tsx b/src/renderer/src/pages/store/assistants/presets/components/ImportAssistantPresetPopup.tsx
index a1086e984e..1aba3fda60 100644
--- a/src/renderer/src/pages/store/assistants/presets/components/ImportAssistantPresetPopup.tsx
+++ b/src/renderer/src/pages/store/assistants/presets/components/ImportAssistantPresetPopup.tsx
@@ -101,8 +101,8 @@ const PopupContainer: React.FC = ({ resolve }) => {
maskClosable={false}
footer={
- {t('common.cancel')}
- form.submit()} isLoading={loading}>
+ {t('common.cancel')}
+ form.submit()} disabled={loading}>
{t('assistants.presets.import.button')}
@@ -127,7 +127,7 @@ const PopupContainer: React.FC = ({ resolve }) => {
{importType === 'file' && (
- form.submit()}>{t('assistants.presets.import.select_file')}
+ form.submit()}>{t('assistants.presets.import.select_file')}
)}
diff --git a/src/renderer/src/pages/translate/TranslateHistory.tsx b/src/renderer/src/pages/translate/TranslateHistory.tsx
index 690d17bfe1..5d40885cc3 100644
--- a/src/renderer/src/pages/translate/TranslateHistory.tsx
+++ b/src/renderer/src/pages/translate/TranslateHistory.tsx
@@ -102,14 +102,14 @@ const TranslateHistoryList: FC = ({ isOpen, onHistoryItem
{t('translate.history.title')}
: }
- isIconOnly
+ size="icon"
className="text-yellow-300"
- variant="light"
- onPress={() => {
+ variant="ghost"
+ onClick={() => {
setShowStared(!showStared)
- }}
- />
+ }}>
+ {showStared ? : }
+
)
}
@@ -130,7 +130,8 @@ const TranslateHistoryList: FC = ({ isOpen, onHistoryItem
title={t('translate.history.clear')}
description={t('translate.history.clear_description')}
onConfirm={clearHistory}>
- }>
+
+
{t('translate.history.clear')}
@@ -185,14 +186,14 @@ const TranslateHistoryList: FC = ({ isOpen, onHistoryItem
{/* tool bar */}
: }
- isIconOnly
+ size="icon"
className="text-yellow-300"
- variant="light"
- onPress={() => {
+ variant="ghost"
+ onClick={() => {
handleStar(item.id)
- }}
- />
+ }}>
+ {item.star ? : }
+
{
@@ -201,7 +202,9 @@ const TranslateHistoryList: FC = ({ isOpen, onHistoryItem
onPopupClick={(e) => {
e.stopPropagation()
}}>
- } isIconOnly color="danger" variant="light" />
+
+
+
diff --git a/src/renderer/src/pages/translate/TranslatePage.tsx b/src/renderer/src/pages/translate/TranslatePage.tsx
index bc2fa87b4a..2939dc26f3 100644
--- a/src/renderer/src/pages/translate/TranslatePage.tsx
+++ b/src/renderer/src/pages/translate/TranslatePage.tsx
@@ -698,12 +698,11 @@ const TranslatePage: FC = () => {
}
- isIconOnly
- onPress={() => setHistoryDrawerVisible(!historyDrawerVisible)}
- />
+ variant="ghost"
+ size="icon"
+ onClick={() => setHistoryDrawerVisible(!historyDrawerVisible)}>
+
+
{
/>
}
- isIconOnly
+ variant="ghost"
+ size="icon"
style={{ margin: '0 -2px' }}
- onPress={handleExchange}
- isDisabled={!couldExchange}
- />
+ onClick={handleExchange}
+ disabled={!couldExchange}>
+
+
{getLanguageDisplay()}
{
modelFilter={modelPredicate}
tooltipProps={{ placement: 'bottom' }}
/>
- }
- isIconOnly
- onPress={() => setSettingsVisible(true)}
- />
+ setSettingsVisible(true)}>
+
+
@@ -802,14 +798,13 @@ const TranslatePage: FC = () => {
: }
- isIconOnly
- />
+ onClick={onCopy}
+ disabled={!translatedContent}>
+ {copied ? : }
+
{!translatedContent ? (
@@ -1003,12 +998,14 @@ const TranslateButton = ({
}>
{!translating && (
- }>
+
+
{t('translate.button.translate')}
)}
{translating && (
- }>
+
+
{t('common.stop')}
)}
diff --git a/src/renderer/src/pages/translate/TranslateSettings.tsx b/src/renderer/src/pages/translate/TranslateSettings.tsx
index a2a4a2179b..1fcb899a9d 100644
--- a/src/renderer/src/pages/translate/TranslateSettings.tsx
+++ b/src/renderer/src/pages/translate/TranslateSettings.tsx
@@ -195,7 +195,7 @@ const TranslateSettings: FC<{
)}
- {t('settings.moresetting.label')}
+ {t('settings.moresetting.label')}
)
diff --git a/src/renderer/src/windows/dataRefactorMigrate/MigrateApp.tsx b/src/renderer/src/windows/dataRefactorMigrate/MigrateApp.tsx
index 56ec5c679c..94d0d209f7 100644
--- a/src/renderer/src/windows/dataRefactorMigrate/MigrateApp.tsx
+++ b/src/renderer/src/windows/dataRefactorMigrate/MigrateApp.tsx
@@ -219,32 +219,26 @@ const MigrateApp: React.FC = () => {
case 'introduction':
return (
<>
- 取消
+ 取消
-
- 下一步
-
+ 下一步
>
)
case 'backup_required':
return (
<>
- 取消
+ 取消
- 我已备份,开始迁移
-
- 创建备份
-
+ 我已备份,开始迁移
+ 创建备份
>
)
case 'backup_confirmed':
return (
- 取消
+ 取消
-
- 开始迁移
-
+ 开始迁移
)
@@ -252,26 +246,22 @@ const MigrateApp: React.FC = () => {
return (
- 迁移进行中...
+ 迁移进行中...
)
case 'completed':
return (
-
- 重启应用
-
+ 重启应用
)
case 'error':
return (
- 关闭应用
+ 关闭应用
-
- 重新尝试
-
+ 重新尝试
)
@@ -325,8 +315,8 @@ const MigrateApp: React.FC = () => {
{
+ variant="outline"
+ onClick={async () => {
try {
await extractAndSendReduxData()
alert('Redux数据提取成功!请查看应用日志。')
diff --git a/src/renderer/src/windows/dataRefactorTest/components/PreferenceBasicTests.tsx b/src/renderer/src/windows/dataRefactorTest/components/PreferenceBasicTests.tsx
index 7d32cd7d73..36417edbd7 100644
--- a/src/renderer/src/windows/dataRefactorTest/components/PreferenceBasicTests.tsx
+++ b/src/renderer/src/windows/dataRefactorTest/components/PreferenceBasicTests.tsx
@@ -122,9 +122,7 @@ const PreferenceBasicTests: React.FC = () => {
placeholder="输入新值 (JSON格式用于对象/数组)"
onPressEnter={handleSetValue}
/>
-
- 设置
-
+ 设置
@@ -136,9 +134,8 @@ const PreferenceBasicTests: React.FC = () => {
{selectedKey === 'ui.theme_mode' && (
setValue(value === 'ThemeMode.dark' ? 'ThemeMode.light' : 'ThemeMode.dark')}>
+ onClick={() => setValue(value === 'ThemeMode.dark' ? 'ThemeMode.light' : 'ThemeMode.dark')}>
+ {isDarkTheme ? '🌙' : '☀️'}
切换主题 ({value === 'ThemeMode.dark' ? '→ Light' : '→ Dark'})
)}
@@ -151,10 +148,10 @@ const PreferenceBasicTests: React.FC = () => {
{/* Language Switch */}
{selectedKey === 'app.language' && (
<>
- setValue('zh-CN')}>
+ setValue('zh-CN')}>
中文
- setValue('en-US')}>
+ setValue('en-US')}>
English
>
@@ -245,39 +242,39 @@ const PreferenceBasicTests: React.FC = () => {
/>
{selectedKey === 'app.zoom_factor' && (
- setValue(0.8)}>
+ setValue(0.8)}>
80%
- setValue(1.0)}>
+ setValue(1.0)}>
100%
- setValue(1.2)}>
+ setValue(1.2)}>
120%
)}
{selectedKey === 'chat.message.font_size' && (
- setValue(12)}>
+ setValue(12)}>
Small
- setValue(14)}>
+ setValue(14)}>
Normal
- setValue(16)}>
+ setValue(16)}>
Large
)}
{selectedKey === 'feature.selection.action_window_opacity' && (
- setValue(50)}>
+ setValue(50)}>
50%
- setValue(80)}>
+ setValue(80)}>
80%
- setValue(100)}>
+ setValue(100)}>
100%
@@ -292,8 +289,8 @@ const PreferenceBasicTests: React.FC = () => {
{/* Sample Values */}
{
+ variant="outline"
+ onClick={() => {
const testCase = testCases.find((tc) => tc.key === selectedKey)
if (testCase) {
setInputValue(testCase.sampleValue)
diff --git a/src/renderer/src/windows/selection/action/SelectionActionApp.tsx b/src/renderer/src/windows/selection/action/SelectionActionApp.tsx
index c0b1c84025..78197db8ec 100644
--- a/src/renderer/src/windows/selection/action/SelectionActionApp.tsx
+++ b/src/renderer/src/windows/selection/action/SelectionActionApp.tsx
@@ -209,26 +209,21 @@ const SelectionActionApp: FC = () => {
- }
- onPress={togglePin}
- className={isPinned ? 'pinned' : ''}
- isIconOnly
- />
+
+
+
}
- onPress={() => setShowOpacitySlider(!showOpacitySlider)}
+ variant="ghost"
+ onClick={() => setShowOpacitySlider(!showOpacitySlider)}
className={showOpacitySlider ? 'active' : ''}
- style={{ paddingBottom: '2px' }}
- isIconOnly
- />
+ style={{ paddingBottom: '2px' }}>
+
+
{showOpacitySlider && (
@@ -245,14 +240,12 @@ const SelectionActionApp: FC = () => {
)}
{!isMac && (
<>
- } onPress={handleMinimize} isIconOnly />
- }
- onPress={handleClose}
- className="close"
- isIconOnly
- />
+
+
+
+
+
+
>
)}