diff --git a/src/components/workspace/FileEditor.tsx b/src/components/workspace/FileEditor.tsx index 21d95c0..65b7b09 100644 --- a/src/components/workspace/FileEditor.tsx +++ b/src/components/workspace/FileEditor.tsx @@ -201,123 +201,132 @@ export function FileEditor({ return (
{/* File header */} -
- {/* Star button */} - {filePath && onStar && ( - - )} - -

{fileName}

- {isMarkdown && ( - - Markdown - - )} - - {/* Edit mode indicator */} - {isEditing && ( - - Editing - - )} - - {/* Unsaved changes indicator */} - {isEditing && hasUnsavedChanges && ( - - Unsaved - - )} - - {/* Save status */} - - {isEditing && ( - + {/* Left: Controls - always visible, fixed width */} +
+ {/* Star button */} + {filePath && onStar && ( + )} - - {/* File metadata */} -
- {fileSize !== undefined && ( - - {formatFileSize(fileSize)} - - )} - {fileModified && ( - - {formatModifiedDate(fileModified)} - + {/* Action buttons */} + {onSave && ( +
+ {!isEditing ? ( + + ) : ( + <> + + + + )} +
)}
- {/* Action buttons */} - {onSave && ( -
- {!isEditing ? ( - - ) : ( - <> - - - + {saveStatus === 'saving' && ( + <> +
+ Saving... + + )} + {saveStatus === 'saved' && ( + <> + + Saved + + )} + {saveStatus === 'error' && ( + <> + + Save failed + + )} + + )} + +
+ + {/* Right: Metadata - shows when space allows, hides on very small screens */} +
+
+ {fileSize !== undefined && ( + + {formatFileSize(fileSize)} + + )} + {fileModified && ( + + {formatModifiedDate(fileModified)} + )}
- )} +
{/* Content */} @@ -351,9 +360,10 @@ export function FileEditor({ animate={{ opacity: 1 }} exit={{ opacity: 0 }} transition={{ duration: 0.15 }} + className="min-w-0" > {isMarkdown ? ( -
+
( @@ -377,8 +387,8 @@ export function FileEditor({ {children} ) : ( -
-                              {children}
+                            
+                              {children}
                             
) }, @@ -427,7 +437,7 @@ export function FileEditor({
) : ( -
{content}
+
{content}
)} )}