suiss/uim · Block

Settings Notifications

A notification settings screen with a live preview of the lock screen banner above alert and appearance options.

Settings Notifications 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
Settings Notifications on iOS in light mode

A wallpaper preview shows a sample notification that reflects the current settings: hidden previews, stacking when grouping is on, and banners that fade out when set to temporary. Below it, Switch rows control notifications, sounds and badges, Toggle tiles choose Lock Screen, Notification Center and Banners, a ToggleGroup picks the banner style, and Picker rows set previews and grouping.

Installation

$ pnpm dlx @esuiss/uim@latest add settings-notifications

The CLI also adds what it builds on: Icon, Item, Picker, Screen, Switch, Text, Toggle, 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: Icon, Item, Picker, Screen, Switch, Text, Toggle, Toggle Group.

  2. Copy the source into components/blocks/settings-notifications.tsx:

uniwind/components/blocks/settings-notifications.tsx
import { cn } from "cn"
import { ChatCircleIcon, CheckIcon } from "phosphor-react-native"
import * as React from "react"
import { Image, ScrollView, View } from "react-native"
import { FadeInUp, ReduceMotion } from "react-native-reanimated"
import { Picker, PickerItem } from "@/components/patterns/picker"
import { AnimatedView } from "@/components/ui/animated-view"
import { Icon } from "@/components/ui/icon"
import {
  Item,
  ItemActions,
  ItemContent,
  ItemGroup,
  ItemSeparator,
  ItemTitle,
} from "@/components/ui/item"
  1. Update the import paths to match your project.

Usage

import { SettingsNotifications } from "@/components/blocks/settings-notifications"
<SettingsNotifications />

The settings live in local state and the component takes no props. Replace WALLPAPER, PREVIEW_OPTIONS and GROUPING_OPTIONS and wire each control's change handler to your preferences store.