38 lines
1.0 KiB
TypeScript
38 lines
1.0 KiB
TypeScript
import React from 'react';
|
|
import { View, Text, TouchableOpacity } from 'react-native';
|
|
import { useAppTheme } from '@theme';
|
|
import { getStyles } from './emptyState.styles';
|
|
|
|
interface EmptyStateProps {
|
|
icon?: React.ReactNode;
|
|
title: string;
|
|
subtitle?: string;
|
|
actionLabel?: string;
|
|
onAction?: () => void;
|
|
}
|
|
|
|
export const EmptyState: React.FC<EmptyStateProps> = ({
|
|
icon,
|
|
title,
|
|
subtitle,
|
|
actionLabel,
|
|
onAction,
|
|
}) => {
|
|
const { colors } = useAppTheme();
|
|
const styles = getStyles(colors);
|
|
|
|
return (
|
|
<View style={styles.container}>
|
|
{icon && <View style={styles.iconContainer}>{icon}</View>}
|
|
<Text style={styles.title}>{title}</Text>
|
|
{subtitle ? <Text style={styles.subtitle}>{subtitle}</Text> : null}
|
|
{actionLabel && onAction ? (
|
|
<TouchableOpacity style={styles.button} activeOpacity={0.8} onPress={onAction}>
|
|
<Text style={styles.buttonText}>{actionLabel}</Text>
|
|
</TouchableOpacity>
|
|
) : null}
|
|
</View>
|
|
);
|
|
};
|
|
export default EmptyState;
|