Spaces:
Running
Running
import type { FC } from 'react' | |
import React from 'react' | |
import { | |
Bars3Icon, | |
PencilSquareIcon, | |
} from '@heroicons/react/24/solid' | |
import { useTranslation } from 'react-i18next' | |
import AppIcon from '@/app/components/base/app-icon' | |
import { ReplayIcon } from '@/app/components/app/chat/icon-component' | |
import Tooltip from '@/app/components/base/tooltip' | |
export type IHeaderProps = { | |
title: string | |
customerIcon?: React.ReactNode | |
icon: string | |
icon_background: string | |
isMobile?: boolean | |
isEmbedScene?: boolean | |
onShowSideBar?: () => void | |
onCreateNewChat?: () => void | |
} | |
const Header: FC<IHeaderProps> = ({ | |
title, | |
isMobile, | |
customerIcon, | |
icon, | |
icon_background, | |
isEmbedScene = false, | |
onShowSideBar, | |
onCreateNewChat, | |
}) => { | |
const { t } = useTranslation() | |
if (!isMobile) | |
return null | |
if (isEmbedScene) { | |
return ( | |
<div | |
className={` | |
shrink-0 flex items-center justify-between h-14 px-4 bg-gray-100 | |
bg-gradient-to-r from-blue-600 to-sky-500 | |
`} | |
> | |
<div className="flex items-center space-x-2"> | |
{customerIcon || <AppIcon size="small" icon={icon} background={icon_background} />} | |
<div | |
className={'text-sm font-bold text-white'} | |
> | |
{title} | |
</div> | |
</div> | |
<Tooltip | |
selector={'embed-scene-restart-button'} | |
htmlContent={t('share.chat.resetChat')} | |
position='top' | |
> | |
<div className='flex cursor-pointer hover:rounded-lg hover:bg-black/5 w-8 h-8 items-center justify-center' onClick={() => { | |
onCreateNewChat?.() | |
}}> | |
<ReplayIcon className="h-4 w-4 text-sm font-bold text-white" /> | |
</div> | |
</Tooltip> | |
</div> | |
) | |
} | |
return ( | |
<div className="shrink-0 flex items-center justify-between h-14 px-4 bg-gray-100"> | |
<div | |
className='flex items-center justify-center h-8 w-8 cursor-pointer' | |
onClick={() => onShowSideBar?.()} | |
> | |
<Bars3Icon className="h-4 w-4 text-gray-500" /> | |
</div> | |
<div className='flex items-center space-x-2'> | |
<AppIcon size="small" icon={icon} background={icon_background} /> | |
<div className=" text-sm text-gray-800 font-bold">{title}</div> | |
</div> | |
<div className='flex items-center justify-center h-8 w-8 cursor-pointer' | |
onClick={() => onCreateNewChat?.()} | |
> | |
<PencilSquareIcon className="h-4 w-4 text-gray-500" /> | |
</div> | |
</div> | |
) | |
} | |
export default React.memo(Header) | |