import { useStore } from '@nanostores/react'; import { TooltipProvider } from '@radix-ui/react-tooltip'; import WithTooltip from '~/components/ui/Tooltip'; import { useEditChatDescription } from '~/lib/hooks'; import { description as descriptionStore } from '~/lib/persistence'; export function ChatDescription() { const initialDescription = useStore(descriptionStore)!; const { editing, handleChange, handleBlur, handleSubmit, handleKeyDown, currentDescription, toggleEditMode } = useEditChatDescription({ initialDescription, syncWithGlobalStore: true, }); if (!initialDescription) { // doing this to prevent showing edit button until chat description is set return null; } return ( <div className="flex items-center justify-center"> {editing ? ( <form onSubmit={handleSubmit} className="flex items-center justify-center"> <input type="text" className="bg-bolt-elements-background-depth-1 text-bolt-elements-textPrimary rounded px-2 mr-2 w-fit" autoFocus value={currentDescription} onChange={handleChange} onBlur={handleBlur} onKeyDown={handleKeyDown} style={{ width: `${Math.max(currentDescription.length * 8, 100)}px` }} /> <TooltipProvider> <WithTooltip tooltip="Save title"> <div className="flex justify-between items-center p-2 rounded-md bg-bolt-elements-item-backgroundAccent"> <button type="submit" className="i-ph:check-bold scale-110 hover:text-bolt-elements-item-contentAccent" onMouseDown={handleSubmit} /> </div> </WithTooltip> </TooltipProvider> </form> ) : ( <> {currentDescription} <TooltipProvider> <WithTooltip tooltip="Rename chat"> <div className="flex justify-between items-center p-2 rounded-md bg-bolt-elements-item-backgroundAccent ml-2"> <button type="button" className="i-ph:pencil-fill scale-110 hover:text-bolt-elements-item-contentAccent" onClick={(event) => { event.preventDefault(); toggleEditMode(); }} /> </div> </WithTooltip> </TooltipProvider> </> )} </div> ); }