+
+ {text} {`(${progress})`}
+
+
+ {
+ img ? (
+
+ ) : (
+
+ )
+ }
+
+
+ {
+ options && options.map((option: { label: string, custom: string }) => (
+
+ ))
+ }
+
+
+ );
+ };
+
+ return (
+
+ );
+};
+
+export default Midjourney;
diff --git a/public/images/background.png b/public/images/background.png
new file mode 100644
index 0000000..a93f16e
Binary files /dev/null and b/public/images/background.png differ
diff --git a/stores/authContext.ts b/stores/authContext.ts
new file mode 100644
index 0000000..55676d7
--- /dev/null
+++ b/stores/authContext.ts
@@ -0,0 +1,12 @@
+import NetlifyAuthContext, { NetlifyAuthContextProvider } from "./netlifyAuthContext";
+import NoAuthContext, {NoAuthContextProvider} from "./noAuthContext";
+
+let AuthContext = NoAuthContext;
+let AuthContextProvider = NoAuthContextProvider;
+if (process.env.NEXT_PUBLIC_AUTH_PROVIDER === "netlify") {
+ AuthContext = NetlifyAuthContext;
+ AuthContextProvider = NetlifyAuthContextProvider;
+}
+
+export {AuthContextProvider};
+export default AuthContext;
\ No newline at end of file
diff --git a/stores/authContextType.ts b/stores/authContextType.ts
new file mode 100644
index 0000000..e0361cb
--- /dev/null
+++ b/stores/authContextType.ts
@@ -0,0 +1,12 @@
+export interface AuthContextType {
+ user: any;
+ login: () => void;
+ logout: () => void;
+ authReady: boolean;
+}
+
+export interface User {
+ user_metadata: {
+ full_name?: string;
+ } | null;
+}
\ No newline at end of file
diff --git a/stores/netlifyAuthContext.tsx b/stores/netlifyAuthContext.tsx
new file mode 100644
index 0000000..d80d4f5
--- /dev/null
+++ b/stores/netlifyAuthContext.tsx
@@ -0,0 +1,63 @@
+import React, { createContext, useState, useEffect, ReactNode } from "react";
+import netlifyIdentity from "netlify-identity-widget";
+import { AuthContextType } from "./authContextType";
+
+
+const NetlifyAuthContext = createContext