AniUI

List

Styled list items for settings, menus, and navigation.

Account SettingsManage your account preferences
NotificationsConfigure push notifications
PrivacyControl your privacy settings
import { List, ListItem, ListItemTitle, ListItemDescription } from "@/components/ui/list";

export function MyScreen() {
  return (
    <List>
      <ListItem>
        <View>
          <ListItemTitle>Account Settings</ListItemTitle>
          <ListItemDescription>Manage your account preferences</ListItemDescription>
        </View>
      </ListItem>
      <ListItem>
        <View>
          <ListItemTitle>Notifications</ListItemTitle>
          <ListItemDescription>Configure push notifications</ListItemDescription>
        </View>
      </ListItem>
    </List>
  );
}

Installation

npx @aniui/cli add list

Usage

app/index.tsx
import { List, ListItem, ListItemTitle, ListItemDescription } from "@/components/ui/list";

export function MyScreen() {
  return (
    <List>
      <ListItem>
        <View>
          <ListItemTitle>Account Settings</ListItemTitle>
          <ListItemDescription>Manage your account preferences</ListItemDescription>
        </View>
      </ListItem>
      <ListItem>
        <View>
          <ListItemTitle>Notifications</ListItemTitle>
          <ListItemDescription>Configure push notifications</ListItemDescription>
        </View>
      </ListItem>
    </List>
  );
}

Compound Components

ComponentDescription
List

Root container for list items

ListItem

Pressable row with border separator

ListItemTitle

Primary text label

ListItemDescription

Secondary description text

Props

PropTypeDefault
className
string
children
React.ReactNode

ListItem accepts all Pressable props. Title and Description accept all Text props.

Source

components/ui/list.tsx
import React from "react";
import { View, Text, Pressable } from "react-native";
import { cn } from "@/lib/utils";

export interface ListProps extends React.ComponentPropsWithoutRef<typeof View> {
  className?: string;
  children?: React.ReactNode;
}
export function List({ className, ...props }: ListProps) {
  return <View className={cn("", className)} {...props} />;
}
export interface ListItemProps extends React.ComponentPropsWithoutRef<typeof Pressable> {
  className?: string;
  children?: React.ReactNode;
}
export function ListItem({ className, ...props }: ListItemProps) {
  return (
    <Pressable
      className={cn("flex-row items-center px-4 py-3 min-h-12 border-b border-border", className)}
      accessible={true}
      {...props}
    />
  );
}
export interface ListItemTitleProps extends React.ComponentPropsWithoutRef<typeof Text> {
  className?: string;
}
export function ListItemTitle({ className, ...props }: ListItemTitleProps) {
  return <Text className={cn("text-base font-medium text-foreground", className)} {...props} />;
}
export interface ListItemDescriptionProps extends React.ComponentPropsWithoutRef<typeof Text> {
  className?: string;
}
export function ListItemDescription({ className, ...props }: ListItemDescriptionProps) {
  return <Text className={cn("text-sm text-muted-foreground", className)} {...props} />;
}