UNPKG

@mcp-shark/mcp-shark

Version:

Aggregate multiple Model Context Protocol (MCP) servers into a single unified interface with a powerful monitoring UI. Prov deep visibility into every request and response.

126 lines (124 loc) 3.33 kB
import { colors, fonts } from '../../../theme'; export default function PromptCallPanel({ prompt, promptArgs, onPromptArgsChange, promptResult, onGetPrompt, loading, }) { return ( <div style={{ flex: 1, border: `1px solid ${colors.borderLight}`, borderRadius: '8px', overflow: 'hidden', display: 'flex', flexDirection: 'column', }} > <div style={{ padding: '12px', background: colors.bgSecondary, borderBottom: `1px solid ${colors.borderLight}`, fontWeight: '500', fontSize: '14px', color: colors.textPrimary, }} > Get Prompt: {prompt.name} </div> <div style={{ flex: 1, overflow: 'auto', padding: '16px', display: 'flex', flexDirection: 'column', gap: '12px', }} > <div> <label style={{ display: 'block', fontSize: '12px', fontWeight: '500', color: colors.textSecondary, marginBottom: '6px', }} > Arguments (JSON) </label> <textarea value={promptArgs} onChange={(e) => onPromptArgsChange(e.target.value)} style={{ width: '100%', minHeight: '150px', padding: '10px', border: `1px solid ${colors.borderLight}`, borderRadius: '6px', fontFamily: fonts.mono, fontSize: '12px', background: colors.bgCard, color: colors.textPrimary, resize: 'vertical', }} /> </div> <button onClick={onGetPrompt} disabled={loading} style={{ padding: '10px 20px', background: colors.buttonPrimary, color: colors.textInverse, border: 'none', borderRadius: '6px', cursor: loading ? 'not-allowed' : 'pointer', fontFamily: fonts.body, fontSize: '13px', fontWeight: '500', opacity: loading ? 0.6 : 1, }} > {loading ? 'Getting...' : 'Get Prompt'} </button> {promptResult && ( <div> <label style={{ display: 'block', fontSize: '12px', fontWeight: '500', color: colors.textSecondary, marginBottom: '6px', }} > Result </label> <pre style={{ padding: '12px', background: colors.bgSecondary, border: `1px solid ${colors.borderLight}`, borderRadius: '6px', fontSize: '12px', fontFamily: fonts.mono, color: promptResult.error ? colors.error : colors.textPrimary, overflow: 'auto', maxHeight: '300px', margin: 0, }} > {JSON.stringify(promptResult, null, 2)} </pre> </div> )} </div> </div> ); }