view-form-dropdown.tsx 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { useState } from 'react'
  2. import { useTranslation } from 'react-i18next'
  3. import {
  4. RiChatSettingsLine,
  5. } from '@remixicon/react'
  6. import { PortalToFollowElem, PortalToFollowElemContent, PortalToFollowElemTrigger } from '@/app/components/base/portal-to-follow-elem'
  7. import ActionButton, { ActionButtonState } from '@/app/components/base/action-button'
  8. import { Message3Fill } from '@/app/components/base/icons/src/public/other'
  9. import InputsFormContent from '@/app/components/base/chat/embedded-chatbot/inputs-form/content'
  10. import cn from '@/utils/classnames'
  11. type Props = {
  12. iconColor?: string
  13. }
  14. const ViewFormDropdown = ({ iconColor }: Props) => {
  15. const { t } = useTranslation()
  16. const [open, setOpen] = useState(false)
  17. return (
  18. <PortalToFollowElem
  19. open={open}
  20. onOpenChange={setOpen}
  21. placement='bottom-end'
  22. offset={{
  23. mainAxis: 4,
  24. crossAxis: 4,
  25. }}
  26. >
  27. <PortalToFollowElemTrigger
  28. onClick={() => setOpen(v => !v)}
  29. >
  30. <ActionButton size='l' state={open ? ActionButtonState.Hover : ActionButtonState.Default}>
  31. <RiChatSettingsLine className={cn('w-[18px] h-[18px]', iconColor)} />
  32. </ActionButton>
  33. </PortalToFollowElemTrigger>
  34. <PortalToFollowElemContent className="z-50">
  35. <div className='w-[400px] bg-components-panel-bg backdrop-blur-sm rounded-2xl border-[0.5px] border-components-panel-border shadow-lg'>
  36. <div className='flex items-center gap-3 px-6 py-4 rounded-t-2xl border-b border-divider-subtle'>
  37. <Message3Fill className='shrink-0 w-6 h-6' />
  38. <div className='grow text-text-secondary system-xl-semibold'>{t('share.chat.chatSettingsTitle')}</div>
  39. </div>
  40. <div className='p-6'>
  41. <InputsFormContent showTip />
  42. </div>
  43. </div>
  44. </PortalToFollowElemContent>
  45. </PortalToFollowElem>
  46. )
  47. }
  48. export default ViewFormDropdown