suiss/uim · Block

Bag Review

A shopping bag screen with item rows, quantity steppers, a subtotal and checkout buttons.

Bag Review 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
Bag Review on iOS in light mode

Composes Screen, Stepper from the interactions, Button, Text and BottomBar. Each compact row shows a thumbnail, the product name with its line price, the variant, a quantity stepper and a Remove link; tapping the thumbnail or the name opens the product details. The heading and totals update as the bag changes, and removing every item shows an empty state with a Continue Shopping button.

Installation

$ pnpm dlx @esuiss/uim@latest add bag-review

The CLI also adds what it builds on: Bottom Bar, Button, Screen, Stepper, Text.

Manual

  1. Install the dependencies:
npx expo install react-native-reanimated react-native-worklets
  1. Add the pieces it builds on: Bottom Bar, Button, Screen, Stepper, Text.

  2. Copy the source into components/blocks/bag-review.tsx:

uniwind/components/blocks/bag-review.tsx
import * as React from "react"
import { Image, Pressable, ScrollView, View } from "react-native"
import { FadeIn, FadeInDown, ReduceMotion } from "react-native-reanimated"
import {
  Stepper,
  StepperDecrement,
  StepperGroup,
  StepperIncrement,
  StepperInput,
  StepperSeparator,
} from "@/components/interactions/stepper"
import { AnimatedView } from "@/components/ui/animated-view"
import { BottomBar, BottomBarContent } from "@/components/ui/bottom-bar"
import { Button } from "@/components/ui/button"
import { Screen } from "@/components/ui/screen"
import { Text } from "@/components/ui/text"
  1. Update the import paths to match your project.

Usage

import { BagReview } from "@/components/blocks/bag-review"
<BagReview />

Replace INITIAL_ITEMS with your cart lines. Wire onCheckout, onShowDetails, onContinueShopping, onQuantityChange and onRemove to your cart logic.