| import { useEventListener } from 'ahooks'; | |
| import { Mic, Paperclip, Send } from 'lucide-react'; | |
| import { useRef, useState } from 'react'; | |
| import { Button } from './ui/button'; | |
| import { Textarea } from './ui/textarea'; | |
| export function ChatInput() { | |
| const textareaRef = useRef<HTMLTextAreaElement>(null); | |
| const [textareaHeight, setTextareaHeight] = useState<number>(40); | |
| useEventListener( | |
| 'keydown', | |
| (ev) => { | |
| if (ev.shiftKey && ev.code === 'Enter') { | |
| setTextareaHeight((h) => { | |
| return h + 10; | |
| }); | |
| } | |
| }, | |
| { | |
| target: textareaRef, | |
| }, | |
| ); | |
| return ( | |
| <section className="flex items-end bg-colors-background-neutral-strong px-4 py-3 rounded-xl m-8"> | |
| <Button variant={'icon'} className="w-10 h-10"> | |
| <Mic /> | |
| </Button> | |
| <Textarea | |
| ref={textareaRef} | |
| placeholder="Tell us a little bit about yourself " | |
| className="resize-none focus-visible:ring-0 focus-visible:ring-offset-0 bg-transparent border-none min-h-0 max-h-20" | |
| style={{ height: textareaHeight }} | |
| /> | |
| <div className="flex gap-2"> | |
| <Button variant={'icon'} size={'icon'}> | |
| <Paperclip /> | |
| </Button> | |
| <Button variant={'tertiary'} size={'icon'}> | |
| <Send /> | |
| </Button> | |
| </div> | |
| </section> | |
| ); | |
| } | |