mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-25 20:58:50 +01:00
48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
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;
|