/** * * Copyright 2023-2025 InspectorRAGet Team * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **/ 'use client'; import { useState, useMemo } from 'react'; import { Modal, TextArea, TextInput, Tag } from '@carbon/react'; import { TaskCommentProvenance, Model } from '@/src/types'; import classes from './AddCommentModal.module.scss'; interface Props { onSubmit: Function; onClose: Function; open: boolean; selectedText?: string; provenance: TaskCommentProvenance | undefined; models: Map | undefined; } export default function AddCommentModal({ selectedText, onSubmit, onClose, open = false, provenance, models, }: Props) { const [comment, setComment] = useState(''); const [author, setAuthor] = useState(''); const [tag, tagType] = useMemo(() => { if (provenance) { if (provenance.component.includes('input')) { return ['Input', 'purple']; } else if (provenance.component.includes('document_')) { return ['Contexts', 'cyan']; } else if (provenance.component.includes('::evaluation::response')) { const modelId = provenance.component.split('::')[0]; return [`${models?.get(modelId)?.name || modelId}`, 'green']; } else { return ['Generic', 'gray']; } } else { return ['Generic', 'gray']; } }, [provenance, models]); return ( { //Step 1: Clear comment & update default value for author setComment(''); // Step 2: Register comment and close modal onSubmit(comment, author); }} onRequestClose={() => { //Step 1: Clear comment setComment(''); // Step 2: Close modal onClose(); }} primaryButtonDisabled={comment === '' || author === ''} >
Provenance {tag}