| import React, { forwardRef } from 'react'; |
| import { useWatch } from 'react-hook-form'; |
| import type { Control } from 'react-hook-form'; |
| import { SendIcon, TooltipAnchor } from '@librechat/client'; |
| import { useLocalize } from '~/hooks'; |
| import { cn } from '~/utils'; |
|
|
| type SendButtonProps = { |
| disabled: boolean; |
| control: Control<{ text: string }>; |
| }; |
|
|
| const SubmitButton = React.memo( |
| forwardRef((props: { disabled: boolean }, ref: React.ForwardedRef<HTMLButtonElement>) => { |
| const localize = useLocalize(); |
| return ( |
| <TooltipAnchor |
| description={localize('com_nav_send_message')} |
| render={ |
| <button |
| ref={ref} |
| aria-label={localize('com_nav_send_message')} |
| id="send-button" |
| disabled={props.disabled} |
| className={cn( |
| 'rounded-full bg-text-primary p-1.5 text-text-primary outline-offset-4 transition-all duration-200 disabled:cursor-not-allowed disabled:text-text-secondary disabled:opacity-10', |
| )} |
| data-testid="send-button" |
| type="submit" |
| > |
| <span className="" data-state="closed"> |
| <SendIcon size={24} /> |
| </span> |
| </button> |
| } |
| /> |
| ); |
| }), |
| ); |
|
|
| const SendButton = React.memo( |
| forwardRef((props: SendButtonProps, ref: React.ForwardedRef<HTMLButtonElement>) => { |
| const data = useWatch({ control: props.control }); |
| return <SubmitButton ref={ref} disabled={props.disabled || !data.text} />; |
| }), |
| ); |
|
|
| export default SendButton; |
|
|