Skip to main content

MultinaireListView

Enhanced FlatList with loading states and skeleton placeholders.

Basic Usage

import { MultinaireListView } from '@multinaire/multinaire-design';

<MultinaireListView
data={items}
renderItem={({ item }) => <ItemCard data={item} />}
/>

Props

PropTypeDefaultDescription
dataT[]-Array of items to render
renderItem({ item }) => ReactElement-Render function for each item
isLoadingbooleanfalseShow loading skeletons
itemHeightnumber-Estimated item height for skeletons
itemCountnumber5Number of skeleton items to show
flexnumber-Flex value
marginSpacingProps-Margin spacing
paddingSpacingProps-Content padding
gapnumber-Gap between items

All React Native FlatList props are also supported.

Examples

Basic List

<MultinaireListView
data={users}
renderItem={({ item }) => (
<UserCard user={item} onPress={() => viewUser(item.id)} />
)}
keyExtractor={(item) => item.id}
/>

With Loading State

<MultinaireListView
data={products}
renderItem={({ item }) => <ProductCard product={item} />}
isLoading={isLoading}
itemHeight={80}
itemCount={6}
/>

With Gap and Padding

<MultinaireListView
data={posts}
renderItem={({ item }) => <PostCard post={item} />}
padding={16}
gap={12}
/>

Horizontal List

<MultinaireListView
horizontal
data={categories}
renderItem={({ item }) => <CategoryChip category={item} />}
padding={{ horizontal: 16 }}
gap={8}
showsHorizontalScrollIndicator={false}
/>

With Pull to Refresh

<MultinaireListView
data={items}
renderItem={({ item }) => <Item data={item} />}
refreshControl={
<RefreshControl refreshing={refreshing} onRefresh={onRefresh} />
}
/>

With Empty State

<MultinaireListView
data={items}
renderItem={({ item }) => <Item data={item} />}
ListEmptyComponent={
<MultinaireContainer flex={1} justifyContent="center" alignItems="center">
<MultinaireText color="neutral">No items found</MultinaireText>
</MultinaireContainer>
}
/>