diff --git a/apps/client/app/app.css b/apps/client/app/app.css
index 42e7b74..7458c24 100644
--- a/apps/client/app/app.css
+++ b/apps/client/app/app.css
@@ -1,5 +1,6 @@
@import "tailwindcss";
@import "tw-animate-css";
+@import "dither-plugin";
@custom-variant dark (&:is(.dark *));
diff --git a/apps/client/app/components/auth-layout.tsx b/apps/client/app/components/auth-layout.tsx
new file mode 100644
index 0000000..05e6c45
--- /dev/null
+++ b/apps/client/app/components/auth-layout.tsx
@@ -0,0 +1,34 @@
+import { Mountain } from "lucide-react";
+import type { ReactNode } from "react";
+
+type AuthLayoutProps = {
+ title: string;
+ description: string;
+ children: ReactNode;
+};
+
+export function AuthLayout({ title, description, children }: AuthLayoutProps) {
+ return (
+
+
+
+
+
+ Ironmount
+
+
+
+
{title}
+
{description}
+
+
+ {children}
+
+
+
+
+ );
+}
diff --git a/apps/client/app/routes/login.tsx b/apps/client/app/routes/login.tsx
index 6529db0..4e5cd42 100644
--- a/apps/client/app/routes/login.tsx
+++ b/apps/client/app/routes/login.tsx
@@ -5,9 +5,8 @@ import { useForm } from "react-hook-form";
import { useNavigate } from "react-router";
import { toast } from "sonner";
import { loginMutation } from "~/api-client/@tanstack/react-query.gen";
-import { GridBackground } from "~/components/grid-background";
+import { AuthLayout } from "~/components/auth-layout";
import { Button } from "~/components/ui/button";
-import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "~/components/ui/card";
import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "~/components/ui/form";
import { Input } from "~/components/ui/input";
@@ -50,54 +49,49 @@ export default function LoginPage() {
};
return (
-
-
-
- Welcome Back
- Sign in to your account
-
-
-
-
-
-
-
+
+
+
+
);
}
diff --git a/apps/client/app/routes/onboarding.tsx b/apps/client/app/routes/onboarding.tsx
index 8b731c8..32cbd6d 100644
--- a/apps/client/app/routes/onboarding.tsx
+++ b/apps/client/app/routes/onboarding.tsx
@@ -5,9 +5,8 @@ import { useForm } from "react-hook-form";
import { useNavigate } from "react-router";
import { toast } from "sonner";
import { registerMutation } from "~/api-client/@tanstack/react-query.gen";
-import { GridBackground } from "~/components/grid-background";
+import { AuthLayout } from "~/components/auth-layout";
import { Button } from "~/components/ui/button";
-import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "~/components/ui/card";
import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage } from "~/components/ui/form";
import { Input } from "~/components/ui/input";
@@ -61,73 +60,65 @@ export default function OnboardingPage() {
};
return (
-
-
-
- Welcome to Ironmount
- Create the admin user to get started
-
-
-
-
-
-
-
+
+
+
+
);
}
diff --git a/apps/client/package.json b/apps/client/package.json
index 120539e..c8bd2ae 100644
--- a/apps/client/package.json
+++ b/apps/client/package.json
@@ -30,6 +30,7 @@
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"date-fns": "^4.1.0",
+ "dither-plugin": "^1.1.1",
"isbot": "^5.1.31",
"lucide-react": "^0.546.0",
"next-themes": "^0.4.6",
diff --git a/apps/client/public/background.jpg b/apps/client/public/background.jpg
new file mode 100644
index 0000000..34c7f67
Binary files /dev/null and b/apps/client/public/background.jpg differ
diff --git a/bun.lock b/bun.lock
index 16e647d..5ec6fe8 100644
--- a/bun.lock
+++ b/bun.lock
@@ -32,6 +32,7 @@
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"date-fns": "^4.1.0",
+ "dither-plugin": "^1.1.1",
"isbot": "^5.1.31",
"lucide-react": "^0.546.0",
"next-themes": "^0.4.6",
@@ -720,6 +721,8 @@
"detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="],
+ "dither-plugin": ["dither-plugin@1.1.1", "", {}, "sha512-PsgAcSoNVKkwh+Q/OopRn/2qb9HW1LRyGqT1bQe8iooYvVY1FIIqePFN9JkEIVK9rkfZdj7nXn9EUB4B7mNh6g=="],
+
"docker-modem": ["docker-modem@5.0.6", "", { "dependencies": { "debug": "^4.1.1", "readable-stream": "^3.5.0", "split-ca": "^1.0.1", "ssh2": "^1.15.0" } }, "sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ=="],
"dockerode": ["dockerode@4.0.9", "", { "dependencies": { "@balena/dockerignore": "^1.0.2", "@grpc/grpc-js": "^1.11.1", "@grpc/proto-loader": "^0.7.13", "docker-modem": "^5.0.6", "protobufjs": "^7.3.2", "tar-fs": "^2.1.4", "uuid": "^10.0.0" } }, "sha512-iND4mcOWhPaCNh54WmK/KoSb35AFqPAUWFMffTQcp52uQt36b5uNwEJTSXntJZBbeGad72Crbi/hvDIv6us/6Q=="],