index.tsx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { memo } from 'react'
  2. import { useTranslation } from 'react-i18next'
  3. import type { NodeProps } from 'reactflow'
  4. import { RiHome5Fill } from '@remixicon/react'
  5. import Tooltip from '@/app/components/base/tooltip'
  6. import { NodeSourceHandle } from '@/app/components/workflow/nodes/_base/components/node-handle'
  7. const LoopStartNode = ({ id, data }: NodeProps) => {
  8. const { t } = useTranslation()
  9. return (
  10. <div className='nodrag group mt-1 flex h-11 w-11 items-center justify-center rounded-2xl border border-workflow-block-border bg-white'>
  11. <Tooltip popupContent={t('workflow.blocks.loop-start')} asChild={false}>
  12. <div className='flex h-6 w-6 items-center justify-center rounded-full border-[0.5px] border-components-panel-border-subtle bg-util-colors-blue-brand-blue-brand-500'>
  13. <RiHome5Fill className='h-3 w-3 text-text-primary-on-surface' />
  14. </div>
  15. </Tooltip>
  16. <NodeSourceHandle
  17. id={id}
  18. data={data}
  19. handleClassName='!top-1/2 !-right-[9px] !-translate-y-1/2'
  20. handleId='source'
  21. />
  22. </div>
  23. )
  24. }
  25. export const LoopStartNodeDumb = () => {
  26. const { t } = useTranslation()
  27. return (
  28. <div className='nodrag relative left-[17px] top-[21px] z-[11] flex h-11 w-11 items-center justify-center rounded-2xl border border-workflow-block-border bg-white'>
  29. <Tooltip popupContent={t('workflow.blocks.loop-start')} asChild={false}>
  30. <div className='flex h-6 w-6 items-center justify-center rounded-full border-[0.5px] border-components-panel-border-subtle bg-util-colors-blue-brand-blue-brand-500'>
  31. <RiHome5Fill className='h-3 w-3 text-text-primary-on-surface' />
  32. </div>
  33. </Tooltip>
  34. </div>
  35. )
  36. }
  37. export default memo(LoopStartNode)