mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-02 02:09:03 +08:00
63 lines
1.7 KiB
TypeScript
63 lines
1.7 KiB
TypeScript
import { useAssistant } from '@renderer/hooks/useAssistant'
|
|
import { useSettings } from '@renderer/hooks/useSettings'
|
|
import { useShowTopics } from '@renderer/hooks/useStore'
|
|
import { Assistant, Topic } from '@renderer/types'
|
|
import { Flex } from 'antd'
|
|
import { FC } from 'react'
|
|
import styled from 'styled-components'
|
|
|
|
import Inputbar from './Inputbar/Inputbar'
|
|
import Messages from './Messages/Messages'
|
|
import Tabs from './Tabs'
|
|
|
|
interface Props {
|
|
assistant: Assistant
|
|
activeTopic: Topic
|
|
setActiveTopic: (topic: Topic) => void
|
|
setActiveAssistant: (assistant: Assistant) => void
|
|
}
|
|
|
|
const Chat: FC<Props> = (props) => {
|
|
const { assistant } = useAssistant(props.assistant.id)
|
|
const { topicPosition } = useSettings()
|
|
const { showTopics } = useShowTopics()
|
|
|
|
return (
|
|
<Container id="chat">
|
|
<Main vertical flex={1} justify="space-between">
|
|
<Messages
|
|
key={props.activeTopic.id}
|
|
assistant={assistant}
|
|
topic={props.activeTopic}
|
|
setActiveTopic={props.setActiveTopic}
|
|
/>
|
|
<Inputbar assistant={assistant} setActiveTopic={props.setActiveTopic} />
|
|
</Main>
|
|
{topicPosition === 'right' && showTopics && (
|
|
<Tabs
|
|
activeAssistant={assistant}
|
|
activeTopic={props.activeTopic}
|
|
setActiveAssistant={props.setActiveAssistant}
|
|
setActiveTopic={props.setActiveTopic}
|
|
position="right"
|
|
/>
|
|
)}
|
|
</Container>
|
|
)
|
|
}
|
|
|
|
const Container = styled.div`
|
|
display: flex;
|
|
flex-direction: row;
|
|
height: 100%;
|
|
flex: 1;
|
|
justify-content: space-between;
|
|
background-color: var(--chat-background);
|
|
`
|
|
|
|
const Main = styled(Flex)`
|
|
height: calc(100vh - var(--navbar-height));
|
|
`
|
|
|
|
export default Chat
|