refactor: convert to bun workspaces monorepo
- Move web app into apps/web/ - Create packages/shared/ with shared types - Create plugins/decky-vault/ scaffold - Root package.json manages workspaces only
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
import ForgotPasswordForm from "@/components/auth/forgot-password-form"
|
||||
|
||||
export default function ForgotPasswordPage() {
|
||||
return <ForgotPasswordForm />
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
import type { Metadata } from "next"
|
||||
import Image from "next/image"
|
||||
import Link from "next/link"
|
||||
import logo from "@/app/icon.png"
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Authentication",
|
||||
}
|
||||
|
||||
export default function AuthLayout({
|
||||
children,
|
||||
}: {
|
||||
children: React.ReactNode
|
||||
}) {
|
||||
return (
|
||||
<div className="min-h-[calc(100vh-3.6rem)] flex items-center justify-center px-4 relative overflow-hidden">
|
||||
{/* Background decorative orbs */}
|
||||
<div className="absolute top-20 left-10 w-48 h-48 rounded-full bg-primary/10 blur-3xl pointer-events-none" />
|
||||
<div className="absolute bottom-20 right-10 w-36 h-36 rounded-full bg-secondary/15 blur-2xl pointer-events-none" />
|
||||
|
||||
{/* Auth card */}
|
||||
<div className="w-full max-w-md bg-text/5 border border-border rounded-xl p-8 relative z-10">
|
||||
{/* Logo */}
|
||||
<Link
|
||||
href="/"
|
||||
className="flex flex-col items-center gap-2 mb-8"
|
||||
>
|
||||
<Image
|
||||
src={logo}
|
||||
alt="DeckyVault Logo"
|
||||
className="h-10 w-auto"
|
||||
/>
|
||||
<span className="text-lg font-bold text-text">
|
||||
DeckyVault
|
||||
</span>
|
||||
</Link>
|
||||
|
||||
{children}
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
import { Suspense } from "react"
|
||||
import LoginForm from "@/components/auth/login-form"
|
||||
|
||||
export default function LoginPage() {
|
||||
return (
|
||||
<Suspense>
|
||||
<LoginForm />
|
||||
</Suspense>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import { Suspense } from "react"
|
||||
import ResetPasswordForm from "@/components/auth/reset-password-form"
|
||||
import { redirect } from "next/navigation"
|
||||
|
||||
interface PageProps {
|
||||
searchParams: Promise<{ email?: string }>
|
||||
}
|
||||
|
||||
export default async function ResetPasswordPage({ searchParams }: PageProps) {
|
||||
const { email } = await searchParams
|
||||
|
||||
if (!email) {
|
||||
redirect("/forgot-password")
|
||||
}
|
||||
|
||||
return (
|
||||
<Suspense>
|
||||
<ResetPasswordForm email={email} />
|
||||
</Suspense>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
import { Suspense } from "react"
|
||||
import SignupWizard from "@/components/auth/signup-wizard"
|
||||
|
||||
export default function SignupPage() {
|
||||
return (
|
||||
<Suspense>
|
||||
<SignupWizard />
|
||||
</Suspense>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user