diff --git a/src/app/globals.css b/src/app/globals.css
index 6dae48f..1f7e9c7 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -21,6 +21,10 @@
--danger-100: rgba(220, 38, 38, 1);
--button-text-size: 18px;
+
+ --textbox-50: rgb(204, 204, 204, 0.5);
+ --textbox-75: rgb(204, 204, 204, 0.75);
+ --textbox-100: rgb(204, 204, 204, 1);
}
@media (prefers-color-scheme: dark) {
diff --git a/src/app/login/login.module.css b/src/app/login/login.module.css
new file mode 100644
index 0000000..a099cbb
--- /dev/null
+++ b/src/app/login/login.module.css
@@ -0,0 +1,14 @@
+/* /home/max/Git/MeetUp/src/app/login/login.module.css */
+.loginContainer {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ min-height: 100vh;
+ gap: 1.5rem;
+ padding: 2rem;
+}
+
+.loginContainer h1 {
+ margin-bottom: 1rem;
+}
diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx
index 44e80c0..74b9f00 100644
--- a/src/app/login/page.tsx
+++ b/src/app/login/page.tsx
@@ -1,17 +1,36 @@
+// /home/max/Git/MeetUp/src/app/login/page.tsx
import { auth } from '@/auth';
+import LabeledInput from '@/components/labeled-input';
import Login from '@/components/user/login-button';
import { redirect } from 'next/navigation';
+import style from './login.module.css';
+
+import '@/app/globals.css';
+
export default async function LoginPage() {
const session = await auth();
if (session?.user) {
- redirect('/');
+ redirect('/home');
}
return (
-
+
Login
+
+
+
);
diff --git a/src/components/Button.module.css b/src/components/Button.module.css
deleted file mode 100644
index 85e67b6..0000000
--- a/src/components/Button.module.css
+++ /dev/null
@@ -1,54 +0,0 @@
-.button {
- background-color: var(--color-50);
- border-radius: 9999px;
- padding: 10px 20px;
- outline: none;
- border: 2px solid var(--color-100);
- transition: background-color 0.3s ease;
- height: 50px;
-}
-
-.button:hover {
- background-color: var(--color-75);
-}
-
-.button:active {
- background-color: var(--color-100);
-}
-
-.button span {
- color: var(--foreground);
- font-size: var(--button-text-size);
- font-weight: 600;
-}
-
-.icon {
- display: grid;
- grid-template-columns: 25px 1fr;
- gap: 10px;
- align-items: center;
-}
-
-.style_primary {
- --color-50: var(--primary-50);
- --color-75: var(--primary-75);
- --color-100: var(--primary-100);
-}
-
-.style_warning {
- --color-50: var(--warning-50);
- --color-75: var(--warning-75);
- --color-100: var(--warning-100);
-}
-
-.style_success {
- --color-50: var(--success-50);
- --color-75: var(--success-75);
- --color-100: var(--success-100);
-}
-
-.style_danger {
- --color-50: var(--danger-50);
- --color-75: var(--danger-75);
- --color-100: var(--danger-100);
-}
diff --git a/src/components/Button.tsx b/src/components/Button.tsx
deleted file mode 100644
index 7fee3ff..0000000
--- a/src/components/Button.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-import style from './Button.module.css';
-
-import { IconProp } from '@fortawesome/fontawesome-svg-core';
-import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-
-export default function Button({
- type,
- children,
- mode = 'primary',
- icon,
-}: {
- type?: 'button' | 'submit' | 'reset';
- children?: React.ReactNode;
- mode?: 'primary' | 'warning' | 'success' | 'danger';
- icon?: IconProp;
-}) {
- if (!icon) {
- return (
-
- );
- } else {
- return (
-
- );
- }
-}
diff --git a/src/components/labeled-input.module.css b/src/components/labeled-input.module.css
new file mode 100644
index 0000000..e4f614d
--- /dev/null
+++ b/src/components/labeled-input.module.css
@@ -0,0 +1,37 @@
+.input,
+.input * {
+ box-sizing: border-box;
+}
+
+.input {
+ height: 50px;
+ position: relative;
+ overflow: visible;
+}
+
+.input input {
+ width: 100%;
+ height: 100%;
+ border: 1px solid var(--textbox-75);
+ border-radius: 9999px;
+ padding: 10px 20px;
+ background-color: var(--textbox-50);
+ color: var(--foreground);
+ font-size: 16px;
+ transition:
+ background-color 0.2s ease,
+ border-color 0.2s ease,
+ box-shadow 0.2s ease;
+}
+
+.input input:hover {
+ background-color: var(--textbox-75);
+ border-color: var(--textbox-100);
+}
+
+.input input:focus {
+ outline: none;
+ background-color: var(--textbox-100);
+ border-color: var(--primary-100);
+ box-shadow: 0 0 0 2px var(--primary-50);
+}
diff --git a/src/components/labeled-input.tsx b/src/components/labeled-input.tsx
new file mode 100644
index 0000000..ea89c29
--- /dev/null
+++ b/src/components/labeled-input.tsx
@@ -0,0 +1,55 @@
+import style from './labeled-input.module.css';
+
+export default function LabeledInput({
+ type,
+ size = 'default',
+ label,
+ placeholder,
+ value,
+}: {
+ type: 'text' | 'email' | 'password';
+ size: 'default' | 'login' | 'settings';
+ label?: string;
+ placeholder?: string;
+ value?: string;
+}) {
+ if (!label) {
+ return (
+
+
+
+ );
+ } else {
+ return (
+
+ );
+ }
+}