diff --git a/app/packages/components/src/components/Loading/LoadingSpinner.tsx b/app/packages/components/src/components/Loading/LoadingSpinner.tsx
new file mode 100644
index 0000000000..b14e99daf3
--- /dev/null
+++ b/app/packages/components/src/components/Loading/LoadingSpinner.tsx
@@ -0,0 +1,29 @@
+import React from "react";
+
+import { CircularProgress } from "@mui/material";
+
+const LoadingSpinner = ({
+ color = "base",
+ size = "medium",
+}: {
+ color?: string;
+ size?: string;
+}) => {
+ const COLORS: { [key: string]: string } = {
+ base: "#FFC59B",
+ primary: "primary",
+ secondary: "secondary",
+ error: "error",
+ warning: "warning",
+ info: "info",
+ success: "success",
+ };
+ const SIZES: { [key: string]: string } = {
+ small: "1rem",
+ medium: "2rem",
+ large: "3rem",
+ };
+ return ;
+};
+
+export default LoadingSpinner;
diff --git a/app/packages/core/src/plugins/SchemaIO/components/LoadingView.tsx b/app/packages/core/src/plugins/SchemaIO/components/LoadingView.tsx
index 719c6f3ec6..bf5bf4090e 100644
--- a/app/packages/core/src/plugins/SchemaIO/components/LoadingView.tsx
+++ b/app/packages/core/src/plugins/SchemaIO/components/LoadingView.tsx
@@ -1,4 +1,5 @@
import LoadingDots from "@fiftyone/components/src/components/Loading/LoadingDots";
+import LoadingSpinner from "@fiftyone/components/src/components/Loading/LoadingSpinner";
import { Box } from "@mui/material";
import React from "react";
import { getComponentProps } from "../utils";
@@ -6,11 +7,15 @@ import { getComponentProps } from "../utils";
export default function LoadingView(props) {
const { schema } = props;
const { view = {} } = schema;
- const { label = "Loading" } = view;
+ const { text = "Loading", variant, color, size } = view;
return (
-
+ {variant === "spinner" ? (
+
+ ) : (
+
+ )}
);
}