suiss/uim · Block

Signup Form

A single-page account sign-up form with name, country, birthday, email and password fields.

Signup Form is an open-source mobile screen from suiss/uim for React Native and Expo, with SwiftUI and Jetpack Compose versions built from the same design tokens. The @esuiss/uim CLI copies its source into your project, so you own the code.

iOS
Signup Form on iOS in light mode

Fields are grouped under short legends inside an InputAccessoryBar with a KeyboardScrollView, and the country uses a Picker. The password fields show a live checklist of password rules, and pressing Continue in the BottomBar validates every field, shows an error line if any fail, and swaps the form for a confirmation screen.

Installation

$ pnpm dlx @esuiss/uim@latest add signup-form

The CLI also adds what it builds on: Bottom Bar, Button, Icon, Input Accessory Bar, Keyboard Scroll View, Picker, Screen, Text.

Manual

  1. Install the dependencies:
npx expo install cn phosphor-react-native react-native-reanimated react-native-svg react-native-worklets
  1. Add the pieces it builds on: Bottom Bar, Button, Icon, Input Accessory Bar, Keyboard Scroll View, Picker, Screen, Text.

  2. Copy the source into components/blocks/signup-form.tsx:

uniwind/components/blocks/signup-form.tsx
import { cn } from "cn"
import { CheckIcon } from "phosphor-react-native"
import * as React from "react"
import { Pressable, View } from "react-native"
import {
  FadeIn,
  FadeInDown,
  ReduceMotion,
  ZoomIn,
} from "react-native-reanimated"
import { Picker, PickerItem } from "@/components/patterns/picker"
import { AnimatedView } from "@/components/ui/animated-view"
import { BottomBar, BottomBarContent } from "@/components/ui/bottom-bar"
import { Button } from "@/components/ui/button"
import { Icon } from "@/components/ui/icon"
import {
  1. Update the import paths to match your project.

Usage

import { SignupForm } from "@/components/blocks/signup-form"
<SignupForm />

Replace COUNTRIES and RULES to match your requirements. onSubmit receives the form values (typed as SignupFormValues), and onLearnMore handles the info link.