Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

mobile-operation-dropdown.tsx 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { useState } from 'react'
  2. import { useTranslation } from 'react-i18next'
  3. import {
  4. RiMoreFill,
  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. type Props = {
  9. handleResetChat: () => void
  10. handleViewChatSettings: () => void
  11. hideViewChatSettings?: boolean
  12. }
  13. const MobileOperationDropdown = ({
  14. handleResetChat,
  15. handleViewChatSettings,
  16. hideViewChatSettings = false,
  17. }: Props) => {
  18. const { t } = useTranslation()
  19. const [open, setOpen] = useState(false)
  20. return (
  21. <PortalToFollowElem
  22. open={open}
  23. onOpenChange={setOpen}
  24. placement='bottom-end'
  25. offset={{
  26. mainAxis: 4,
  27. crossAxis: -4,
  28. }}
  29. >
  30. <PortalToFollowElemTrigger
  31. onClick={() => setOpen(v => !v)}
  32. >
  33. <ActionButton size='l' state={open ? ActionButtonState.Hover : ActionButtonState.Default}>
  34. <RiMoreFill className='h-[18px] w-[18px]' />
  35. </ActionButton>
  36. </PortalToFollowElemTrigger>
  37. <PortalToFollowElemContent className="z-40">
  38. <div
  39. className={'min-w-[160px] rounded-xl border-[0.5px] border-components-panel-border bg-components-panel-bg-blur p-1 shadow-lg backdrop-blur-sm'}
  40. >
  41. <div className='system-md-regular flex cursor-pointer items-center space-x-1 rounded-lg px-3 py-1.5 text-text-secondary hover:bg-state-base-hover' onClick={handleResetChat}>
  42. <span className='grow'>{t('share.chat.resetChat')}</span>
  43. </div>
  44. {!hideViewChatSettings && (
  45. <div className='system-md-regular flex cursor-pointer items-center space-x-1 rounded-lg px-3 py-1.5 text-text-secondary hover:bg-state-base-hover' onClick={handleViewChatSettings}>
  46. <span className='grow'>{t('share.chat.viewChatSettings')}</span>
  47. </div>
  48. )}
  49. </div>
  50. </PortalToFollowElemContent>
  51. </PortalToFollowElem>
  52. )
  53. }
  54. export default MobileOperationDropdown