|
import React from 'react' |
|
import { BingConversationStyle } from '@/lib/bots/bing/types' |
|
import { cn } from '@/lib/utils' |
|
|
|
type ToneItem = { |
|
type: BingConversationStyle, |
|
name: string |
|
} |
|
|
|
const ToneList: ToneItem[] = [ |
|
{ name: '有创造力', type: BingConversationStyle.Creative }, |
|
{ name: '更平衡', type: BingConversationStyle.Balanced }, |
|
{ name: '更精确', type: BingConversationStyle.Precise } |
|
] |
|
|
|
interface ToneSelectorProps { |
|
type: BingConversationStyle | '' |
|
onChange?: (type: BingConversationStyle) => void |
|
} |
|
|
|
export function ToneSelector({ type, onChange }: ToneSelectorProps) { |
|
return ( |
|
<div className="fieldset"> |
|
<div className="legend"> |
|
选择对话样式 |
|
</div> |
|
<div className="options-list-container"> |
|
<ul id="tone-options" className="options"> |
|
{ |
|
ToneList.map(tone => ( |
|
<li className="option" key={tone.name} onClick={() => onChange?.(tone.type)}> |
|
<button className={cn(`tone-${type.toLowerCase()}`, { selected: tone.type === type}) } aria-pressed="true" > |
|
<span className="caption-2-strong label-modifier">更</span> |
|
<span className="body-1-strong label">{tone.name}</span> |
|
</button> |
|
</li> |
|
)) |
|
} |
|
</ul> |
|
</div> |
|
</div> |
|
) |
|
} |
|
|