npx nyxb init

Building Blocks for the Web

Clean, modern building blocks. Copy and paste into your apps. Works with all React frameworks. Open Source. Free forever.

A simple login form.
login-01
Files
app/login/page.tsx
import { LoginForm } from "~/components/login-form"

export default function Page() {
   return (
      <div className="flex min-h-svh w-full items-center justify-center p-6 md:p-10">
         <div className="w-full max-w-sm">
            <LoginForm />
         </div>
      </div>
   )
}
A two column login page with a cover image.
login-02
Files
app/login/page.tsx
import { GalleryVerticalEnd } from "lucide-react"

import { LoginForm } from "~/components/login-form"

export default function LoginPage() {
   return (
      <div className="grid min-h-svh lg:grid-cols-2">
         <div className="flex flex-col gap-4 p-6 md:p-10">
            <div className="flex justify-center gap-2 md:justify-start">
               <a href="#" className="flex items-center gap-2 font-medium">
                  <div className="flex h-6 w-6 items-center justify-center rounded-md bg-primary text-primary-foreground">
                     <GalleryVerticalEnd className="size-4" />
                  </div>
                  Acme Inc.
               </a>
            </div>
            <div className="flex flex-1 items-center justify-center">
               <div className="w-full max-w-xs">
                  <LoginForm />
               </div>
            </div>
         </div>
         <div className="relative hidden bg-muted lg:block">
            <img
               src="/placeholder.svg"
               alt="Image"
               className="absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale"
            />
         </div>
      </div>
   )
}
A login page with a muted background color.
login-03
Files
app/login/page.tsx
import { GalleryVerticalEnd } from "lucide-react"

import { LoginForm } from "~/components/login-form"

export default function LoginPage() {
   return (
      <div className="flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10">
         <div className="flex w-full max-w-sm flex-col gap-6">
            <a
               href="#"
               className="flex items-center gap-2 self-center font-medium"
            >
               <div className="flex h-6 w-6 items-center justify-center rounded-md bg-primary text-primary-foreground">
                  <GalleryVerticalEnd className="size-4" />
               </div>
               Acme Inc.
            </a>
            <LoginForm />
         </div>
      </div>
   )
}
A login page with form and image.
login-04
Files
app/login/page.tsx
import { LoginForm } from "~/components/login-form"

export default function LoginPage() {
   return (
      <div className="flex min-h-svh flex-col items-center justify-center bg-muted p-6 md:p-10">
         <div className="w-full max-w-sm md:max-w-3xl">
            <LoginForm />
         </div>
      </div>
   )
}
A simple email-only login page.
login-05
Files
app/login/page.tsx
import { LoginForm } from "~/components/login-form"

export default function LoginPage() {
   return (
      <div className="flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10">
         <div className="w-full max-w-sm">
            <LoginForm />
         </div>
      </div>
   )
}