@@ -111,9 +111,13 @@ export function DatasetsView() {
111111 const datasets = useDatasets ( ) ;
112112 const createDataset = useCreateDataset ( ) ;
113113 const deleteDataset = useDeleteDataset ( ) ;
114+ const updateDataset = useUpdateDataset ( ) ;
114115 const removeMedia = useRemoveDatasetMedia ( ) ;
115116
116117 const [ newName , setNewName ] = useState ( "" ) ;
118+ // Inline rename of the active dataset (the ✎ next to the title).
119+ const [ renaming , setRenaming ] = useState ( false ) ;
120+ const [ nameDraft , setNameDraft ] = useState ( "" ) ;
117121 const [ addOpen , setAddOpen ] = useState ( false ) ;
118122 const [ autoOpen , setAutoOpen ] = useState ( false ) ;
119123 // Once opened, the Studio stays mounted (hidden when closed) so an
@@ -324,9 +328,61 @@ export function DatasetsView() {
324328 } }
325329 >
326330 < div style = { { flex : 1 } } >
327- < div style = { { fontSize : 15 , fontWeight : 600 } } >
328- { active . name }
329- </ div >
331+ { renaming ? (
332+ < input
333+ autoFocus
334+ value = { nameDraft }
335+ onChange = { ( event ) => setNameDraft ( event . target . value ) }
336+ onKeyDown = { ( event ) => {
337+ if ( event . key === "Enter" ) {
338+ const name = nameDraft . trim ( ) ;
339+ if ( name && name !== active . name ) {
340+ updateDataset . mutate ( { id : active . id , name } ) ;
341+ }
342+ setRenaming ( false ) ;
343+ } else if ( event . key === "Escape" ) {
344+ setRenaming ( false ) ;
345+ }
346+ } }
347+ onBlur = { ( ) => setRenaming ( false ) }
348+ style = { {
349+ fontSize : 15 ,
350+ fontWeight : 600 ,
351+ padding : "2px 6px" ,
352+ borderRadius : 6 ,
353+ border : `1px solid ${ colors . borderControl } ` ,
354+ background : colors . input ,
355+ color : colors . text ,
356+ width : 260 ,
357+ } }
358+ />
359+ ) : (
360+ < div
361+ style = { {
362+ fontSize : 15 ,
363+ fontWeight : 600 ,
364+ display : "flex" ,
365+ alignItems : "center" ,
366+ gap : 7 ,
367+ } }
368+ >
369+ { active . name }
370+ < span
371+ title = "Rename dataset"
372+ onClick = { ( ) => {
373+ setNameDraft ( active . name ) ;
374+ setRenaming ( true ) ;
375+ } }
376+ style = { {
377+ fontSize : 12 ,
378+ color : colors . textMuted ,
379+ cursor : "pointer" ,
380+ } }
381+ >
382+ ✎
383+ </ span >
384+ </ div >
385+ ) }
330386 < div
331387 style = { {
332388 fontSize : 11 ,
0 commit comments