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 }) => ReactElementRender function for each item
isLoadingbooleanfalseShow loading skeleton items in place of content
itemHeightnumberEstimated item height in pixels, used for loading skeletons
itemCountnumber5Number of skeleton items to show while loading
flexnumberFlex grow value
marginSpacingPropsOuter margin
paddingSpacingPropsInner padding
gapnumberGap between items in pixels

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>
}
/>