Introducing New Version of Components V3

Reusable Blocks for the Web

A collection of sleek, customizable blocks to speed up your workflow. Drop them into any React app and ship faster.

Files
components/login-1/login-1.tsx
import { LoginForm } from './components/login-form'

export 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>
  )
}
login-1
Files
components/login-2/login-2.tsx
import { GalleryVerticalEnd } from 'lucide-react'
import { LoginForm } from './components/login-form'

export function LoginPage() {
  return (
    <div className="grid min-h-svh min-w-screen 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 className="flex items-center gap-2 font-medium" href="#placeholder">
            <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
          alt="placeholder"
          className="absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale"
          height="100%"
          src="/placeholder.svg"
          width="100%"
        />
      </div>
    </div>
  )
}
login-2
Files
components/login-3/login-3.tsx
import { GalleryVerticalEnd } from 'lucide-react'
import { LoginForm } from './components/login-form'

export function LoginPage() {
  return (
    <div className="flex min-h-svh min-w-screen 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 className="flex items-center gap-2 self-center font-medium" href="#placeholder">
          <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>
  )
}
login-3
Files
components/login-4/login-4.tsx
import { LoginForm } from './components/login-form'

export function LoginPage() {
  return (
    <div className="flex min-h-svh min-w-screen 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>
  )
}
login-4
Files
components/login-5/login-5.tsx
import { LoginForm } from './components/login-form'

export 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>
  )
}
login-5
Files
components/signup-1/signup-1.constants.tsx
export const icons = {
  user_filled: ({ ...props }: React.SVGProps<SVGSVGElement>) => (
    <svg
      fill="currentColor"
      height="200px"
      stroke="currentColor"
      stroke-width="0"
      viewBox="0 0 448 512"
      width="200px"
      xmlns="http://www.w3.org/2000/svg"
      {...props}>
      <title id="iconTitle">user_filled</title>

      <path d="M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"></path>
    </svg>
  ),
}
signup-1