1
- import { Badge , CircularProgress , Dialog , DialogContent , DialogTitle , Divider , IconButton , List , ListItem , ListItemIcon , ListItemText , Stack , Switch , TextField , Tooltip } from "@mui/material" ;
1
+ import { Badge , CircularProgress , Dialog , DialogContent , DialogTitle , Divider , IconButton , List , ListItem , ListItemIcon , ListItemText , Stack , Switch , TextField , Tooltip , useTheme } from "@mui/material" ;
2
2
import Button from '@mui/material/Button' ;
3
3
import { Card , CardActions , CardContent , CardMedia , Typography } from "@mui/material" ;
4
4
import { Ref } from "../Refs" ;
5
5
import { useEffect , useState } from "react" ;
6
6
import { trackEvent } from "../Usage" ;
7
- import { Article , AttachFile , Build , CheckBox , Delete , LockOpenRounded , LockReset , LockRounded , NoEncryptionGmailerrorred , Save } from "@mui/icons-material" ;
7
+ import { Article , AttachFile , Build , CheckBox , Delete , LockOpenRounded , LockReset , LockRounded , NoEncryptionGmailerrorred , Save , Settings } from "@mui/icons-material" ;
8
8
import Secrets from "../Secrets" ;
9
9
import { DD_BUILD_WITH_SECRET_SUPPORT , getUnsupportedSecretMessage } from "../Constants" ;
10
-
10
+ import { DataType , githubDarkTheme , githubLightTheme , JsonEditor , NodeData } from "json-edit-react" ;
11
+ import PromptConfig , { Config } from "./PromptConfig" ;
11
12
const iconSize = 16
12
13
14
+
15
+
13
16
export interface CatalogItem {
14
17
description ?: string ;
15
18
icon ?: string ;
@@ -18,13 +21,15 @@ export interface CatalogItem {
18
21
prompts : number ;
19
22
resources : object [ ] ;
20
23
tools : object [ ] ;
24
+ config ?: Config ;
21
25
}
22
26
23
27
export interface CatalogItemWithName extends CatalogItem {
24
28
name : string ;
25
29
}
26
30
27
- export function CatalogItemCard ( { openUrl, item, canRegister, registered, register, unregister, onSecretChange, secrets, ddVersion } : { openUrl : ( ) => void , item : CatalogItemWithName , canRegister : boolean , registered : boolean , register : ( item : CatalogItemWithName ) => Promise < void > , unregister : ( item : CatalogItemWithName , showNotification ?: boolean ) => Promise < void > , onSecretChange : ( secret : { name : string , value : string } ) => Promise < void > , secrets : Secrets . Secret [ ] , ddVersion : { version : string , build : number } } ) {
31
+
32
+ export function CatalogItemCard ( { setConfiguringItem, openUrl, item, canRegister, registered, register, unregister, onSecretChange, secrets, ddVersion } : { setConfiguringItem : ( item : CatalogItemWithName ) => void , openUrl : ( ) => void , item : CatalogItemWithName , canRegister : boolean , registered : boolean , register : ( item : CatalogItemWithName ) => Promise < void > , unregister : ( item : CatalogItemWithName , showNotification ?: boolean ) => Promise < void > , onSecretChange : ( secret : { name : string , value : string } ) => Promise < void > , secrets : Secrets . Secret [ ] , ddVersion : { version : string , build : number } } ) {
28
33
const loadAssignedSecrets = ( ) => {
29
34
const assignedSecrets = Secrets . getAssignedSecrets ( item , secrets ) ;
30
35
setAssignedSecrets ( assignedSecrets )
@@ -152,29 +157,39 @@ export function CatalogItemCard({ openUrl, item, canRegister, registered, regist
152
157
</ Tooltip >
153
158
) ) }
154
159
</ Stack >
155
- < Tooltip open = { tooltipOpen } onClose = { ( ) => setTooltipOpen ( false ) } onOpen = { ( ) => setTooltipOpen ( true ) } title = { hasAllSecrets ? registered ? "Blocking this tile will remove its tools, resources and prompts from being used in any MCP clients you have connected." : "Allowing this tile will expose its tools, resources and prompts to any MCP clients you have connected." : "You need to set all expected secrets to allow this tile." } >
156
- { ! hasAllSecrets ? < LockRounded /> : isRegistering ? < CircularProgress size = { 20 } /> : < Switch
157
- size = "small"
158
- color = { registered ? 'success' : 'primary' }
159
- checked = { registered && hasAllSecrets }
160
- onChange = { ( ) => {
161
- setTooltipOpen ( false )
162
- trackEvent ( 'registry-changed' , { name : item . name , ref : item . ref , action : registered ? 'remove' : 'add' } ) ;
163
- setIsRegistering ( true )
164
- if ( registered ) {
165
- unregister ( item ) . then ( ( ) => {
166
- setIsRegistering ( false )
167
- } )
168
- } else {
169
- register ( item ) . then ( ( ) => {
170
- setIsRegistering ( false )
171
- } )
172
- }
160
+ < Stack direction = "row" spacing = { 1 } alignItems = "center" justifyContent = "flex-end" >
161
+ { /* WIP */ }
162
+ { item . config && registered && (
163
+ < Tooltip title = "Configure this item" >
164
+ < IconButton onClick = { ( ) => setConfiguringItem ( item ) } >
165
+ < Settings />
166
+ </ IconButton >
167
+ </ Tooltip >
168
+ ) }
169
+ < Tooltip open = { tooltipOpen } onClose = { ( ) => setTooltipOpen ( false ) } onOpen = { ( ) => setTooltipOpen ( true ) } title = { hasAllSecrets ? registered ? "Blocking this tile will remove its tools, resources and prompts from being used in any MCP clients you have connected." : "Allowing this tile will expose its tools, resources and prompts to any MCP clients you have connected." : "You need to set all expected secrets to allow this tile." } >
170
+ { ! hasAllSecrets ? < LockRounded /> : isRegistering ? < CircularProgress size = { 20 } /> : < Switch
171
+ size = "small"
172
+ color = { registered ? 'success' : 'primary' }
173
+ checked = { registered && hasAllSecrets }
174
+ onChange = { ( ) => {
175
+ setTooltipOpen ( false )
176
+ trackEvent ( 'registry-changed' , { name : item . name , ref : item . ref , action : registered ? 'remove' : 'add' } ) ;
177
+ setIsRegistering ( true )
178
+ if ( registered ) {
179
+ unregister ( item ) . then ( ( ) => {
180
+ setIsRegistering ( false )
181
+ } )
182
+ } else {
183
+ register ( item ) . then ( ( ) => {
184
+ setIsRegistering ( false )
185
+ } )
186
+ }
187
+ } }
188
+ disabled = { ! canRegister || isRegistering }
189
+ /> }
190
+ </ Tooltip >
173
191
174
- } }
175
- disabled = { ! canRegister || isRegistering }
176
- /> }
177
- </ Tooltip >
192
+ </ Stack >
178
193
</ Stack >
179
194
180
195
</ CardActions >
0 commit comments