suiss/ui · Block
Settings Device
A phone-style Settings screen with a search field, an account row, and grouped rows with switches.
Settings Device is an open-source block from suiss/ui for React, React Native, SwiftUI and Jetpack Compose. The @esuiss/ui CLI copies its source into your project, so you own the code.
A phone-style Settings screen with a search field, an account row and grouped rows that either open a detail page or hold a switch. Search filters rows by label, and turning on Airplane Mode also turns off Wi-Fi and Bluetooth. From small tablets up the screen sits in a phone frame; on the smallest screens it fills the width. Use it for mobile app settings or any grouped preferences list.
Installation
CLI
Works in any project with a components.json. See Installation for the one-line registry setup. Or use the suiss/ui CLI:
Manual
- Install the dependencies:
-
Add the pieces it builds on: Avatar, Input Group, Item, Switch.
-
Copy the source into
components/blocks/settings-device.tsx:
- Update the import paths to match your project.
Usage
Edit groups; each row has a label, icon, tint and either a toggle key or a detail function that derives its status text from the toggles. Persist the toggles to your settings store, and remove the Airplane Mode coupling if it doesn't apply. Row links point to hash anchors, so swap in your routes.

A large-title Header sits over an InputGroup search field, an account Item with an Avatar, and inset ItemGroup lists of rows with tinted icons. Airplane Mode and Focus use a Switch; Wi-Fi, Bluetooth and the other rows show a detail value and a chevron. Typing filters the rows and shows a message when nothing matches.
Installation
The CLI also adds what it builds on: Avatar, Header, Icon, Input Group, Item, Screen, Switch, Text.
Manual
-
Target iOS 17 or later.
-
Add the Swift package to your app:
- Copy the theme files every view uses:
- Copy the source and every file it uses:
- Add the files to your app target.
- Set
minSdkto 24 or higher and add the dependencies:
- Copy the theme files every view uses:
- Copy the source and every file it uses:
- Update the
com.esuiss.uipackage names to match your project.
Usage
Replace GROUPS with your rows and the account details with your user. Use onAccountPress and onRowPress, which receives the row label, to navigate.
