From e7583c30363c0de5684060f2d388ba1b27345e07 Mon Sep 17 00:00:00 2001 From: vinodkiran Date: Wed, 29 Nov 2023 20:16:32 +0530 Subject: [PATCH] LS Prompt hub: right side details display changes --- packages/server/src/utils/hub.ts | 1 + .../dialog/PromptLangsmithHubDialog.js | 151 +++++++++++++----- 2 files changed, 111 insertions(+), 41 deletions(-) diff --git a/packages/server/src/utils/hub.ts b/packages/server/src/utils/hub.ts index 38e8a6c0..9a324228 100644 --- a/packages/server/src/utils/hub.ts +++ b/packages/server/src/utils/hub.ts @@ -28,6 +28,7 @@ export function parsePrompt(prompt: string): any[] { let template = promptObj.kwargs.template response.push({ type: 'template', + typeDisplay: 'Prompt', template: template }) } diff --git a/packages/ui/src/ui-component/dialog/PromptLangsmithHubDialog.js b/packages/ui/src/ui-component/dialog/PromptLangsmithHubDialog.js index e425dada..35f1f754 100644 --- a/packages/ui/src/ui-component/dialog/PromptLangsmithHubDialog.js +++ b/packages/ui/src/ui-component/dialog/PromptLangsmithHubDialog.js @@ -6,7 +6,6 @@ import { Button, Card, CardContent, - Chip, Dialog, DialogActions, DialogContent, @@ -30,6 +29,46 @@ import ReactMarkdown from 'react-markdown' import CredentialInputHandler from '../../views/canvas/CredentialInputHandler' import promptApi from '../../api/prompt' import { StyledButton } from '../button/StyledButton' +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' +import { styled } from '@mui/material/styles' +import ArrowForwardIosSharpIcon from '@mui/icons-material/ArrowForwardIosSharp' +import MuiAccordion from '@mui/material/Accordion' +import MuiAccordionSummary from '@mui/material/AccordionSummary' +import MuiAccordionDetails from '@mui/material/AccordionDetails' + +const NewLineToBr = ({ children = '' }) => { + return children.split('\n').reduce(function (arr, line) { + return arr.concat(line,
) + }, []) +} + +const Accordion = styled((props) => )(({ theme }) => ({ + border: `1px solid ${theme.palette.divider}`, + '&:not(:last-child)': { + borderBottom: 0 + }, + '&:before': { + display: 'none' + } +})) + +const AccordionSummary = styled((props) => ( + } {...props} /> +))(({ theme }) => ({ + backgroundColor: theme.palette.mode === 'dark' ? 'rgba(255, 255, 255, .05)' : 'rgba(0, 0, 0, .03)', + flexDirection: 'row-reverse', + '& .MuiAccordionSummary-expandIconWrapper.Mui-expanded': { + transform: 'rotate(180deg)' + }, + '& .MuiAccordionSummary-content': { + marginLeft: theme.spacing(1) + } +})) + +const AccordionDetails = styled(MuiAccordionDetails)(({ theme }) => ({ + padding: theme.spacing(2), + borderTop: '1px solid rgba(0, 0, 0, .125)' +})) const PromptLangsmithHubDialog = ({ promptType, show, onCancel, onSubmit }) => { const portalElement = document.getElementById('portal') @@ -102,6 +141,11 @@ const PromptLangsmithHubDialog = ({ promptType, show, onCancel, onSubmit }) => { const [selectedPrompt, setSelectedPrompt] = useState({}) const [credentialId, setCredentialId] = useState('') + const [accordionExpanded, setAccordionExpanded] = useState('panel2') + + const handleAccordionChange = (panel) => { + setAccordionExpanded(panel) + } const handleListItemClick = async (event, index) => { const prompt = availablePrompNameList[index] @@ -178,7 +222,7 @@ const PromptLangsmithHubDialog = ({ promptType, show, onCancel, onSubmit }) => { onClose={onCancel} open={show} fullWidth - maxWidth='md' + maxWidth='lg' aria-labelledby='prompt-dialog-title' aria-describedby='prompt-dialog-description' > @@ -314,10 +358,10 @@ const PromptLangsmithHubDialog = ({ promptType, show, onCancel, onSubmit }) => { - + - + Available Prompts @@ -339,45 +383,70 @@ const PromptLangsmithHubDialog = ({ promptType, show, onCancel, onSubmit }) => { - - - - Description - - - {selectedPrompt?.description} -
- {selectedPrompt?.tags?.map((item) => ( - - ))} -
-
-
- - - - Readme - - - {selectedPrompt?.readme} - - - - - - {selectedPrompt?.detailed?.map((item) => ( - <> - - {item.typeDisplay.toUpperCase()} + + + handleAccordionChange('panel1')}> + } + id='panel1d-header' + > + Description + + + + {selectedPrompt?.description} - -
{item.template}
+
+
+ handleAccordionChange('panel2')}> + } + id='panel2d-header' + > + Prompt + + + + {selectedPrompt?.detailed?.map((item) => ( + <> + + {item.typeDisplay.toUpperCase()} + + +

+ {item.template} +

+
+ + ))}
- - ))} +
+
+ handleAccordionChange('panel3')}> + } + aria-controls='panel3d-content' + id='panel3d-header' + > + Readme + + + + {selectedPrompt?.readme} + + +