refactor(select): replace Selector component with new Select implementation in SettingsTab

- Updated SettingsTab to utilize the new Select component instead of the deprecated Selector.
- Enhanced Select integration with SelectTrigger, SelectContent, SelectItem, and SelectValue for improved functionality.
- Removed Selector imports and related code to streamline the component structure.
- Adjusted styles and layout for better user experience in the settings interface.
This commit is contained in:
MyPrototypeWhat
2025-11-11 11:01:48 +08:00
parent 0b3cefb125
commit 30947c6bc1
4 changed files with 116 additions and 277 deletions
+110 -65
View File
@@ -1,4 +1,15 @@
import { Button, DescriptionSwitch, HelpTooltip, RowFlex, Selector, type SelectorItem, Switch } from '@cherrystudio/ui'
import {
Button,
DescriptionSwitch,
HelpTooltip,
RowFlex,
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
Switch
} from '@cherrystudio/ui'
import { useMultiplePreferences, usePreference } from '@data/hooks/usePreference'
import EditableNumber from '@renderer/components/EditableNumber'
import Scrollbar from '@renderer/components/Scrollbar'
@@ -32,6 +43,13 @@ import { useTranslation } from 'react-i18next'
import styled from 'styled-components'
import OpenAISettingsGroup from './components/OpenAISettingsGroup'
// Type definition for select items
type SelectorItem<T extends string = string> = {
value: T
label: string
}
interface Props {
assistant: Assistant
}
@@ -418,39 +436,51 @@ const SettingsTab: FC<Props> = (props) => {
</SettingRow>
<SettingDivider />
<SettingRow>
{/* <SettingRowTitleSmall>{t('message.message.style.label')}</SettingRowTitleSmall> */}
<Selector
size="sm"
label={t('message.message.style.label')}
selectionMode="single"
selectedKeys={messageStyle}
onSelectionChange={(value) => setMessageStyle(value)}
items={messageStyleItems}
/>
<SettingRowTitleSmall>{t('message.message.style.label')}</SettingRowTitleSmall>
<Select value={messageStyle} onValueChange={setMessageStyle}>
<SelectTrigger size="sm" className="w-[180px]">
<SelectValue />
</SelectTrigger>
<SelectContent>
{messageStyleItems.map((item) => (
<SelectItem key={item.value} value={item.value}>
{item.label}
</SelectItem>
))}
</SelectContent>
</Select>
</SettingRow>
<SettingDivider />
<SettingRow>
{/* <SettingRowTitleSmall>{t('message.message.multi_model_style.label')}</SettingRowTitleSmall> */}
<Selector
size="sm"
label={t('message.message.multi_model_style.label')}
selectionMode="single"
selectedKeys={multiModelMessageStyle}
onSelectionChange={(value) => setMultiModelMessageStyle(value)}
items={multiModelMessageStyleItems}
/>
<SettingRowTitleSmall>{t('message.message.multi_model_style.label')}</SettingRowTitleSmall>
<Select value={multiModelMessageStyle} onValueChange={setMultiModelMessageStyle}>
<SelectTrigger size="sm" className="w-[180px]">
<SelectValue />
</SelectTrigger>
<SelectContent>
{multiModelMessageStyleItems.map((item) => (
<SelectItem key={item.value} value={item.value}>
{item.label}
</SelectItem>
))}
</SelectContent>
</Select>
</SettingRow>
<SettingDivider />
<SettingRow>
{/* <SettingRowTitleSmall>{t('settings.messages.navigation.label')}</SettingRowTitleSmall> */}
<Selector
size="sm"
label={t('settings.messages.navigation.label')}
selectionMode="single"
selectedKeys={messageNavigation}
onSelectionChange={(value) => setMessageNavigation(value)}
items={messageNavigationItems}
/>
<SettingRowTitleSmall>{t('settings.messages.navigation.label')}</SettingRowTitleSmall>
<Select value={messageNavigation} onValueChange={setMessageNavigation}>
<SelectTrigger size="sm" className="w-[180px]">
<SelectValue />
</SelectTrigger>
<SelectContent>
{messageNavigationItems.map((item) => (
<SelectItem key={item.value} value={item.value}>
{item.label}
</SelectItem>
))}
</SelectContent>
</Select>
</SettingRow>
<SettingDivider />
<SettingRow>
@@ -479,15 +509,19 @@ const SettingsTab: FC<Props> = (props) => {
<CollapsibleSettingGroup title={t('settings.math.title')} defaultExpanded={false}>
<SettingGroup>
<SettingRow>
{/* <SettingRowTitleSmall>{t('settings.math.engine.label')}</SettingRowTitleSmall> */}
<Selector
size="sm"
label={t('settings.math.engine.label')}
selectionMode="single"
selectedKeys={mathEngine}
onSelectionChange={(value) => setMathEngine(value)}
items={mathEngineItems}
/>
<SettingRowTitleSmall>{t('settings.math.engine.label')}</SettingRowTitleSmall>
<Select value={mathEngine} onValueChange={setMathEngine}>
<SelectTrigger size="sm" className="w-[180px]">
<SelectValue />
</SelectTrigger>
<SelectContent>
{mathEngineItems.map((item) => (
<SelectItem key={item.value} value={item.value}>
{item.label}
</SelectItem>
))}
</SelectContent>
</Select>
</SettingRow>
<SettingDivider />
<SettingRow>
@@ -508,15 +542,19 @@ const SettingsTab: FC<Props> = (props) => {
<CollapsibleSettingGroup title={t('chat.settings.code.title')} defaultExpanded={false}>
<SettingGroup>
<SettingRow>
{/* <SettingRowTitleSmall>{t('message.message.code_style')}</SettingRowTitleSmall> */}
<Selector
size="sm"
label={t('message.message.code_style')}
selectionMode="single"
selectedKeys={codeStyle}
onSelectionChange={(value) => onCodeStyleChange(value)}
items={codeStyleItems}
/>
<SettingRowTitleSmall>{t('message.message.code_style')}</SettingRowTitleSmall>
<Select value={codeStyle} onValueChange={onCodeStyleChange}>
<SelectTrigger size="sm" className="w-[180px]">
<SelectValue />
</SelectTrigger>
<SelectContent>
{codeStyleItems.map((item) => (
<SelectItem key={item.value} value={item.value}>
{item.label}
</SelectItem>
))}
</SelectContent>
</Select>
</SettingRow>
<SettingDivider />
<SettingRow>
@@ -744,28 +782,35 @@ const SettingsTab: FC<Props> = (props) => {
</SettingRow>
<SettingDivider />
<SettingRow>
{/* <SettingRowTitleSmall>{t('settings.input.target_language.label')}</SettingRowTitleSmall> */}
<Selector
size="sm"
label={t('settings.input.target_language.label')}
selectionMode="single"
selectedKeys={targetLanguage}
onSelectionChange={(value) => setTargetLanguage(value)}
placeholder={UNKNOWN.emoji + ' ' + UNKNOWN.label()}
items={targetLanguageItems}
/>
<SettingRowTitleSmall>{t('settings.input.target_language.label')}</SettingRowTitleSmall>
<Select value={targetLanguage} onValueChange={setTargetLanguage}>
<SelectTrigger size="sm" className="w-[180px]">
<SelectValue placeholder={UNKNOWN.emoji + ' ' + UNKNOWN.label()} />
</SelectTrigger>
<SelectContent>
{targetLanguageItems.map((item) => (
<SelectItem key={item.value} value={item.value}>
{item.label}
</SelectItem>
))}
</SelectContent>
</Select>
</SettingRow>
<SettingDivider />
<SettingRow>
{/* <SettingRowTitleSmall>{}</SettingRowTitleSmall> */}
<Selector
size="sm"
label={t('settings.messages.input.send_shortcuts')}
selectionMode="single"
selectedKeys={sendMessageShortcut}
onSelectionChange={(value) => setSendMessageShortcut(value)}
items={sendMessageShortcutItems}
/>
<SettingRowTitleSmall>{t('settings.messages.input.send_shortcuts')}</SettingRowTitleSmall>
<Select value={sendMessageShortcut} onValueChange={setSendMessageShortcut}>
<SelectTrigger size="sm" className="w-[180px]">
<SelectValue />
</SelectTrigger>
<SelectContent>
{sendMessageShortcutItems.map((item) => (
<SelectItem key={item.value} value={item.value}>
{item.label}
</SelectItem>
))}
</SelectContent>
</Select>
</SettingRow>
</SettingGroup>
</CollapsibleSettingGroup>