suiss/uim · Block

Users Detail

A user directory with a list beside a detail pane showing profile, sessions and security for the selected user.

Users Detail 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
Users Detail on iOS in light mode

A SplitView lists users with an Avatar and status, and the detail pane shows the selected user's header and a ToggleGroup for Profile, Sessions and Security. Profile lists details with a role Picker, Sessions lets you sign out one device or all others, and Security has Switch rows and a password reset Button. The admin TabBar switches sections.

Installation

$ pnpm dlx @esuiss/uim@latest add users-detail

The CLI also adds what it builds on: Avatar, Button, Icon, Item, Picker, Screen, Split View, Switch, Tab Bar, Text, Toggle Group.

Manual

  1. Install the dependencies:
npx expo install phosphor-react-native react-native-reanimated react-native-svg react-native-worklets
  1. Add the pieces it builds on: Avatar, Button, Icon, Item, Picker, Screen, Split View, Switch, Tab Bar, Text, Toggle Group.

  2. Copy the source into components/blocks/users-detail.tsx:

uniwind/components/blocks/users-detail.tsx
import {
  ChartBarIcon,
  DesktopIcon,
  DeviceMobileIcon,
  GearIcon,
  GlobeIcon,
  type Icon as PhosphorIcon,
  ShieldIcon,
  UsersIcon,
} from "phosphor-react-native"
import * as React from "react"
import { useWindowDimensions, View } from "react-native"
import { FadeInDown, ReduceMotion } from "react-native-reanimated"
import { Picker, PickerItem } from "@/components/patterns/picker"
import {
  SplitView,
  1. Update the import paths to match your project.

Usage

import { UsersDetail } from "@/components/blocks/users-detail"
<UsersDetail />

Replace USERS, ROLES and INITIAL_SESSIONS with your data. Use onRoleChange, onSignOut, onSignOutAll, onSecurityChange, onSendPasswordReset and onNavigate to call your API.