+ } = props as any;
+
+ const codeStyleBase = {
+ fontFamily:
+ 'SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace',
+ };
+
+ if (isInline) {
+ return (
+
+ {children}
+
+ );
+ }
+
+ // For block code (inside )
+ return (
+ wrapper
+ // However, ensure no extra padding/margin if pre handles it
+ padding: 0,
+ backgroundColor: "transparent", // Pre has the background
+ }}
+ {...htmlProps}
+ >
+ {children}
+
+ );
+ },
+ };
+
+ return (
+
+
+
+
+ {readmeContent}
+
+
+
+ );
+};
+
+export default ReadmePage;
diff --git a/app/(pages)/deliverables/swot/page.tsx b/app/(pages)/deliverables/swot/page.tsx
new file mode 100644
index 0000000..9bf4117
--- /dev/null
+++ b/app/(pages)/deliverables/swot/page.tsx
@@ -0,0 +1,72 @@
+"use client";
+
+import { useEffect, useState } from "react";
+import { Button } from "@/components/ui/button";
+import Link from "next/link";
+import Image from "next/image";
+
+export default function SwotAnalysisPage() {
+ const [isClient, setIsClient] = useState(false);
+
+ // This ensures the PDF viewer only renders on the client side
+ useEffect(() => {
+ setIsClient(true);
+ }, []);
+
+ return (
+
+
+
+
+
+
WODEY SWOT Analysis
+
+ An in-depth analysis of Strengths, Weaknesses, Opportunities, and
+ Threats for the WODEY platform.
+
+
+
+
+
+ {isClient ? (
+
+
+
+ ) : (
+
+ Loading viewer...
+
+ )}
+
+ );
+}
diff --git a/components/LoginDialog.tsx b/components/LoginDialog.tsx
index 7d08c78..ab1ddf0 100644
--- a/components/LoginDialog.tsx
+++ b/components/LoginDialog.tsx
@@ -55,7 +55,7 @@ export function LoginDialog({ open, onOpenChange, onLoginSuccess }: LoginDialogP
const validation = loginSchema.safeParse(loginData);
if (!validation.success) {
const firstError = validation.error.issues[0];
- setError(firstError.message);
+ toast.error(firstError.message);
return;
}
@@ -64,13 +64,12 @@ export function LoginDialog({ open, onOpenChange, onLoginSuccess }: LoginDialogP
if (result.tokens && result.user) {
toast.success("Login successful!");
- setShowPassword(false);
- onOpenChange(false);
- onLoginSuccess();
+ setShowPassword(false);
+ onOpenChange(false);
+ onLoginSuccess();
}
} catch (err) {
const errorMessage = err instanceof Error ? err.message : "Login failed. Please try again.";
- setError(errorMessage);
toast.error(errorMessage);
}
};
@@ -83,7 +82,7 @@ export function LoginDialog({ open, onOpenChange, onLoginSuccess }: LoginDialogP
const validation = registerSchema.safeParse(signupData);
if (!validation.success) {
const firstError = validation.error.issues[0];
- setError(firstError.message);
+ toast.error(firstError.message);
return;
}
@@ -106,7 +105,6 @@ export function LoginDialog({ open, onOpenChange, onLoginSuccess }: LoginDialogP
}
} catch (err) {
const errorMessage = err instanceof Error ? err.message : "Signup failed. Please try again.";
- setError(errorMessage);
toast.error(errorMessage);
}
};
@@ -160,14 +158,9 @@ export function LoginDialog({ open, onOpenChange, onLoginSuccess }: LoginDialogP
{/* Scrollable Content */}
- {/* Signup Form */}
- {isSignup ? (
+ {/* Signup Form */}
+ {isSignup ? (
{/* Last Name Field */}
@@ -327,11 +320,6 @@ export function LoginDialog({ open, onOpenChange, onLoginSuccess }: LoginDialogP
) : (
/* Login Form */