diff --git a/apps/dimentorin/public/image/33978ce5bed2da9bf9d73acad802182a.png b/apps/dimentorin/public/image/33978ce5bed2da9bf9d73acad802182a.png
new file mode 100644
index 0000000..8edd4de
Binary files /dev/null and b/apps/dimentorin/public/image/33978ce5bed2da9bf9d73acad802182a.png differ
diff --git a/apps/dimentorin/public/image/9261045e09137f3fcb925a78c55b6ddb.png b/apps/dimentorin/public/image/9261045e09137f3fcb925a78c55b6ddb.png
new file mode 100644
index 0000000..9c7aa68
Binary files /dev/null and b/apps/dimentorin/public/image/9261045e09137f3fcb925a78c55b6ddb.png differ
diff --git a/apps/dimentorin/public/image/95319c4f9953dfe6180200e529dfcea5.jpeg b/apps/dimentorin/public/image/95319c4f9953dfe6180200e529dfcea5.jpeg
new file mode 100644
index 0000000..e6d9816
Binary files /dev/null and b/apps/dimentorin/public/image/95319c4f9953dfe6180200e529dfcea5.jpeg differ
diff --git a/apps/dimentorin/src/app/auth/login/layout.tsx b/apps/dimentorin/src/app/auth/login/layout.tsx
new file mode 100644
index 0000000..2d8a74d
--- /dev/null
+++ b/apps/dimentorin/src/app/auth/login/layout.tsx
@@ -0,0 +1,12 @@
+import { FC, ReactElement } from 'react';
+import { Outlet } from 'react-router-dom';
+
+export const AppLayout: FC = (): ReactElement => {
+ return (
+
+
+
+ );
+};
+
+export default AppLayout;
diff --git a/apps/dimentorin/src/app/auth/login/page.tsx b/apps/dimentorin/src/app/auth/login/page.tsx
new file mode 100644
index 0000000..683e68e
--- /dev/null
+++ b/apps/dimentorin/src/app/auth/login/page.tsx
@@ -0,0 +1,46 @@
+import { FC, ReactElement } from 'react';
+import { LoginBanner } from "@imphnen-frontend-service/ui/organisms"
+import { Button, Input, PasswordInput } from '@imphnen-frontend-service/ui/atoms';
+import { useSearchParams } from 'react-router-dom';
+
+export const Components: FC = (): ReactElement => {
+ const [searchParams] = useSearchParams();
+ const error = searchParams.get("error"); // Ambil nilai ?error=
+
+ return (
+
+
+
+
+
+
Hallo Minna-san
+
Welcome to Dimentorin by IMPHNEN
+
Email
+
+
Password
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default Components;
\ No newline at end of file
diff --git a/libs/ui/src/molecules/index.ts b/libs/ui/src/molecules/index.ts
index cb0ff5c..020d5fe 100644
--- a/libs/ui/src/molecules/index.ts
+++ b/libs/ui/src/molecules/index.ts
@@ -1 +1 @@
-export {};
+export * from "./forgot-step";
\ No newline at end of file
diff --git a/libs/ui/src/organisms/auth-banner/auth-banner.tsx b/libs/ui/src/organisms/auth-banner/auth-banner.tsx
new file mode 100644
index 0000000..37e1c2b
--- /dev/null
+++ b/libs/ui/src/organisms/auth-banner/auth-banner.tsx
@@ -0,0 +1,29 @@
+import { ArrowLeftOutlined } from "@ant-design/icons";
+// eslint-disable-next-line @nx/enforce-module-boundaries
+import { Button } from "@imphnen-frontend-service/ui/atoms";
+import { FC, ReactElement } from "react";
+
+function AuthBanner({text, href}: {text: string, href: string}){
+ return (
+
+

+
+
+
+
+

+
+
+ )
+}
+
+export const LoginBanner: FC = (): ReactElement => {
+ return AuthBanner({text: "Back To Homepage", href: "/"})
+}
+
+export const RegisterResetBanner: FC = (): ReactElement => {
+ return AuthBanner({text: "Back To Login", href: "/auth/login"})
+}
\ No newline at end of file
diff --git a/libs/ui/src/organisms/auth-banner/index.ts b/libs/ui/src/organisms/auth-banner/index.ts
new file mode 100644
index 0000000..ece96a0
--- /dev/null
+++ b/libs/ui/src/organisms/auth-banner/index.ts
@@ -0,0 +1 @@
+export * from './auth-banner';
diff --git a/libs/ui/src/organisms/index.ts b/libs/ui/src/organisms/index.ts
index 1665ad1..45dd25a 100644
--- a/libs/ui/src/organisms/index.ts
+++ b/libs/ui/src/organisms/index.ts
@@ -1,2 +1,3 @@
export * from './navbar';
export * from "./modals-gacha";
+export * from "./auth-banner";
\ No newline at end of file
diff --git a/libs/ui/src/organisms/modals-gacha/modals-gacha.stories.tsx b/libs/ui/src/organisms/modals-gacha/modals-gacha.stories.tsx
deleted file mode 100644
index e69de29..0000000