suiss/uim · Block

Price Bundle

A subscription bundle picker with Individual and Family plans, each listing which services it includes.

Price Bundle 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
Price Bundle on iOS in light mode

A pricing screen with selectable plan cards that act as radio buttons. Each card shows the price, who it covers, and the bundled services with icons, striking through any that the plan leaves out. A BottomBar holds a Try it free Button and a link that shows how much the selected plan saves.

Installation

$ pnpm dlx @esuiss/uim@latest add price-bundle

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

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: Bottom Bar, Button, Icon, Screen, Text.

  2. Copy the source into components/blocks/price-bundle.tsx:

uniwind/components/blocks/price-bundle.tsx
import { cn } from "cn"
import {
  CloudIcon,
  FlameIcon,
  GameControllerIcon,
  MusicNoteIcon,
  NewspaperIcon,
  type Icon as PhosphorIcon,
  TelevisionIcon,
} from "phosphor-react-native"
import * as React from "react"
import { Pressable, ScrollView, View } from "react-native"
import { FadeInDown, ReduceMotion } from "react-native-reanimated"
import { AnimatedView } from "@/components/ui/animated-view"
import { BottomBar, BottomBarContent } from "@/components/ui/bottom-bar"
import { Button } from "@/components/ui/button"
  1. Update the import paths to match your project.

Usage

import { PriceBundle } from "@/components/blocks/price-bundle"
<PriceBundle />

Replace PLANS and SERVICES with your offer. Wire onSelectPlan and onCompare (both receive the plan name) to your purchase flow.