diff --git a/src/blog/components/ImageUploadField.tsx b/src/blog/components/ImageUploadField.tsx
new file mode 100644
index 0000000..9649b19
--- /dev/null
+++ b/src/blog/components/ImageUploadField.tsx
@@ -0,0 +1,45 @@
+import * as React from "react";
+import { Box, Button, Avatar, CircularProgress } from "@mui/material";
+import { ImageUploadFieldProps } from "../types/props";
+
+export default function ImageUploadField({
+ label = "Upload Image",
+ value,
+ uploading = false,
+ onUpload,
+ size = 64,
+}: ImageUploadFieldProps) {
+
+ const imgSrc = value
+ ? import.meta.env.VITE_API_BASE_URL.replace(/\/+$/, "") +
+ "/" +
+ value.replace(/^\/+/, "")
+ : "";
+
+ return (
+
+
+
+ }
+ >
+ {uploading ? "Uploading..." : label}
+ {
+ const file = e.target.files?.[0];
+ if (file) onUpload(file);
+ }}
+ />
+
+
+ );
+}
diff --git a/src/blog/components/Profile.tsx b/src/blog/components/Profile.tsx
index b2ee269..72b0aa2 100644
--- a/src/blog/components/Profile.tsx
+++ b/src/blog/components/Profile.tsx
@@ -6,11 +6,11 @@ import {
Typography,
IconButton,
CircularProgress,
- Avatar,
Alert,
} from '@mui/material';
import ArrowBackRoundedIcon from '@mui/icons-material/ArrowBackRounded';
import { useAuth } from '../providers/Author';
+import ImageUploadField from './ImageUploadField';
interface ProfileProps {
onBack: () => void;
@@ -120,30 +120,13 @@ export default function Profile({ onBack }: ProfileProps) {
Profile
-
-
-
-
-
+
void;
+ size?: number;
+}