suiss/uim · Block

Inbox Support

A support ticket inbox with Open, Pending, Solved and All queues, a ticket view and a reply box.

Inbox Support 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
Inbox Support on iOS in light mode

A help desk screen built on SplitView, with a sidebar of queues, a list of tickets showing the requester Avatar, priority and device, and a detail view. In the detail view a ToggleGroup changes the ticket status, a Textarea takes a reply, Send and set pending sends it and moves the ticket to Pending, and Mark as solved closes it.

Installation

$ pnpm dlx @esuiss/uim@latest add inbox-support

The CLI also adds what it builds on: Avatar, Button, Icon, Screen, Split View, Text, Textarea, Toggle Group.

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: Avatar, Button, Icon, Screen, Split View, Text, Textarea, Toggle Group.

  2. Copy the source into components/blocks/inbox-support.tsx:

uniwind/components/blocks/inbox-support.tsx
import { cn } from "cn"
import {
  ChatCircleIcon,
  CheckIcon,
  type Icon as PhosphorIcon,
  TrayIcon,
} from "phosphor-react-native"
import * as React from "react"
import { useWindowDimensions, View } from "react-native"
import { FadeInDown, ReduceMotion } from "react-native-reanimated"
import {
  SplitView,
  type SplitViewColumn,
  SplitViewDetail,
  SplitViewItem,
  SplitViewList,
  1. Update the import paths to match your project.

Usage

import { InboxSupport } from "@/components/blocks/inbox-support"
<InboxSupport />

Replace INITIAL_TICKETS with your tickets. Wire onViewChange, onStatusChange and onReply to your help desk backend; the screen also updates its own ticket list.