Pixelkit Sign InNew

A lime tile, three providers and a magic link.

npx shadcn@latest add "https://www.pinui.xyz/r/blocx/pixelkit-sign-in.json"
Live preview

When to use

  • Passwordless sign-in: providers first, then a magic link by email
  • A product with a strong app icon that can carry the page on its own

When not to use

  • Flows that need a password field — there is none
  • Dark sites; it is drawn for white

Installation

Add Pixelkit Sign In with the shadcn CLI — it writes the files into components/blocx/ and installs what they import — or copy it in by hand.

Requires React 19 · Next.js (it loads its fonts with next/font) · motion.

pnpm dlx shadcn@latest add "https://www.pinui.xyz/r/blocx/pixelkit-sign-in.json"

Usage

import PixelkitSignIn from "@/components/blocx/PixelkitSignIn";

export default function Page() {
  return (
    <PixelkitSignIn
      onSubmit={async (email) => {
        await sendMagicLink(email);
      }}
      onProvider={(provider) => signInWith(provider)}
    />
  );
}

page.tsx · 13 lines

API reference

PixelkitSignIn

PropTypeDefaultDescription
onSubmit(email) => Promise<void> | void—Called with a valid address; throw to put the button back. Left out, the demo waits a moment and says to check the inbox
onProvider("google" | "github" | "apple") => void—Called when a provider button is pressed

The brand name, the copy and the terms links are written in PixelkitSignIn.tsx; the tile's colour is --pksi-lime and the mark is the four rects in Logo().

Accessibility

  • The section is labelled by its title; the email field has a real label, visually hidden, and the browser validates it
  • The tile's mark is an image named Pixelkit; the "or" rule is hidden from screen readers
  • The submit button's label is a polite live region as it changes

Motion

  • The tile drops in on a spring and its four pixels pop in one after another, the rounded last one with a little overshoot
  • Each row rises and un-blurs on a stagger; the button rolls its label through Sending link… and Check your inbox
  • Reduced motion drops the travel and keeps the fades

Responsive behavior

  • One 340px column centred in the window; the three providers share its width on any phone
  • On a window shorter than 640px the tile shrinks and the gaps tighten so it still fits

Blocx · 10 blocks · 5 sections · part of Pin UI