From d26082196448a71a68bc7e2590ffd12b2cc040a4 Mon Sep 17 00:00:00 2001 From: RevIQ Date: Wed, 7 Jan 2026 16:00:33 +0800 Subject: [PATCH] Add login page with two-column layout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Two-column layout: dark branding panel (left) and login form (right) - Responsive design with mobile logo visible on small screens - Social login buttons (Google, GitHub) - Loading state with spinner animation - Uses shadcn-svelte Input and Label components - Separate layout to bypass dashboard wrapper 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../src/lib/components/ui/input/index.ts | 7 + .../src/lib/components/ui/input/input.svelte | 58 +++++ .../src/lib/components/ui/label/index.ts | 7 + .../src/lib/components/ui/label/label.svelte | 20 ++ .../src/routes/login/+layout.svelte | 12 + .../src/routes/login/+page.svelte | 211 ++++++++++++++++++ 6 files changed, 315 insertions(+) create mode 100644 apps/publisher-dashboard/src/lib/components/ui/input/index.ts create mode 100644 apps/publisher-dashboard/src/lib/components/ui/input/input.svelte create mode 100644 apps/publisher-dashboard/src/lib/components/ui/label/index.ts create mode 100644 apps/publisher-dashboard/src/lib/components/ui/label/label.svelte create mode 100644 apps/publisher-dashboard/src/routes/login/+layout.svelte create mode 100644 apps/publisher-dashboard/src/routes/login/+page.svelte diff --git a/apps/publisher-dashboard/src/lib/components/ui/input/index.ts b/apps/publisher-dashboard/src/lib/components/ui/input/index.ts new file mode 100644 index 0000000..ceb4b16 --- /dev/null +++ b/apps/publisher-dashboard/src/lib/components/ui/input/index.ts @@ -0,0 +1,7 @@ +import Root from "./input.svelte"; + +export { + Root, + // + Root as Input, +}; diff --git a/apps/publisher-dashboard/src/lib/components/ui/input/input.svelte b/apps/publisher-dashboard/src/lib/components/ui/input/input.svelte new file mode 100644 index 0000000..bcf39ef --- /dev/null +++ b/apps/publisher-dashboard/src/lib/components/ui/input/input.svelte @@ -0,0 +1,58 @@ + + +{#if type === "file"} + +{:else} + +{/if} diff --git a/apps/publisher-dashboard/src/lib/components/ui/label/index.ts b/apps/publisher-dashboard/src/lib/components/ui/label/index.ts new file mode 100644 index 0000000..b0b23ce --- /dev/null +++ b/apps/publisher-dashboard/src/lib/components/ui/label/index.ts @@ -0,0 +1,7 @@ +import Root from "./label.svelte"; + +export { + Root, + // + Root as Label, +}; diff --git a/apps/publisher-dashboard/src/lib/components/ui/label/label.svelte b/apps/publisher-dashboard/src/lib/components/ui/label/label.svelte new file mode 100644 index 0000000..1c1964b --- /dev/null +++ b/apps/publisher-dashboard/src/lib/components/ui/label/label.svelte @@ -0,0 +1,20 @@ + + + diff --git a/apps/publisher-dashboard/src/routes/login/+layout.svelte b/apps/publisher-dashboard/src/routes/login/+layout.svelte new file mode 100644 index 0000000..794ade9 --- /dev/null +++ b/apps/publisher-dashboard/src/routes/login/+layout.svelte @@ -0,0 +1,12 @@ + + +{@render children()} diff --git a/apps/publisher-dashboard/src/routes/login/+page.svelte b/apps/publisher-dashboard/src/routes/login/+page.svelte new file mode 100644 index 0000000..238c8a5 --- /dev/null +++ b/apps/publisher-dashboard/src/routes/login/+page.svelte @@ -0,0 +1,211 @@ + + + + Login | Publisher Dashboard + + + +
+ + + + +
+
+ +
+
+ + + +
+ Publisher Dashboard +
+ + +
+

Welcome back

+

+ Enter your credentials to access your dashboard +

+
+ + +
+
+ + +
+ +
+
+ + + Forgot password? + +
+ +
+ + {#if error} +

{error}

+ {/if} + + +
+ + +
+
+ +
+
+ Or continue with +
+
+ + +
+ + +
+ + +

+ By continuing, you agree to our + Terms of Service + and + Privacy Policy +

+
+
+