| import { useState } from 'react'; |
| import { Input } from '@librechat/client'; |
| import { Cross1Icon } from '@radix-ui/react-icons'; |
| import type { TPrompt } from 'librechat-data-provider'; |
| import { useUpdatePromptLabels } from '~/data-provider'; |
|
|
| const PromptForm = ({ selectedPrompt }: { selectedPrompt?: TPrompt }) => { |
| const [labelInput, setLabelInput] = useState<string>(''); |
| const [labels, setLabels] = useState<string[]>([]); |
| const updatePromptLabelsMutation = useUpdatePromptLabels(); |
|
|
| const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => { |
| setLabelInput(e.target.value); |
| }; |
|
|
| const handleKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => { |
| if (e.key === 'Enter' && labelInput.trim()) { |
| const newLabels = [...labels, labelInput.trim()]; |
| setLabels(newLabels); |
| setLabelInput(''); |
| updatePromptLabelsMutation.mutate({ |
| id: selectedPrompt?._id || '', |
| payload: { labels: newLabels }, |
| }); |
| } |
| }; |
|
|
| return ( |
| <> |
| <Input |
| type="text" |
| className="mb-4" |
| placeholder="+ Add Labels" |
| // defaultValue={selectedPrompt?.labels.join(', ')} |
| value={labelInput} |
| onChange={handleInputChange} |
| onKeyPress={handleKeyPress} |
| /> |
| <h3 className="rounded-t-lg border border-gray-300 px-4 text-base font-semibold">Labels</h3> |
| <div className="mb-4 flex w-full flex-row flex-wrap rounded-b-lg border border-gray-300 p-4"> |
| {labels.length ? ( |
| labels.map((label, index) => ( |
| <label |
| className="mb-1 mr-1 flex items-center gap-x-2 rounded-full border px-2" |
| key={index} |
| > |
| {label} |
| <Cross1Icon |
| onClick={() => { |
| const newLabels = labels.filter((l) => l !== label); |
| setLabels(newLabels); |
| updatePromptLabelsMutation.mutate({ |
| id: selectedPrompt?._id || '', |
| payload: { labels: newLabels }, |
| }); |
| }} |
| className="cursor-pointer" |
| /> |
| </label> |
| )) |
| ) : ( |
| <label className="rounded-full border px-2">No Labels</label> |
| )} |
| </div> |
| </> |
| ); |
| }; |
|
|
| export default PromptForm; |
|
|