suiss/uim · Block

Price Storage

A cloud storage plan picker with a monthly or yearly toggle and three plan cards with features.

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

A pricing screen with a ToggleGroup for the billing period and a RadioGroup of plan cards, each with a size, price and feature list. The selected card lifts slightly, and the most popular plan carries a label. Yearly prices show ten months of the monthly price. A BottomBar Button confirms the switch.

Installation

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

The CLI also adds what it builds on: Bottom Bar, Button, Icon, Radio Group, Screen, Text, 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: Bottom Bar, Button, Icon, Radio Group, Screen, Text, Toggle Group.

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

uniwind/components/blocks/price-storage.tsx
import { cn } from "cn"
import { CheckIcon, CloudIcon } from "phosphor-react-native"
import * as React from "react"
import { Pressable, ScrollView, View } from "react-native"
import {
  Easing,
  FadeInDown,
  ReduceMotion,
  useAnimatedStyle,
  useSharedValue,
  withTiming,
} 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"
import { Icon } from "@/components/ui/icon"
  1. Update the import paths to match your project.

Usage

import { PriceStorage } from "@/components/blocks/price-storage"
<PriceStorage />

Replace PLANS with your plans. Wire onSelectPlan (receives the size and period) and onPeriodChange to your billing flow.