import React, { useState } from 'react'; import { View, Text, ScrollView, StyleSheet } from 'react-native'; import { Ux4gEmptyState } from '../components/empty-state/EmptyState'; import { useUx4gTheme } from '../theme/Ux4gThemeContext'; import { UX4GColors } from '../foundation/colors'; import { Ux4gIcons } from '../foundation/icons'; export const EmptyStateShowcase: React.FC = () => { const theme = useUx4gTheme(); const [retryCount, setRetryCount] = useState(0); const sectionTitleColor = theme.colors.onBackground; const subtitleColor = theme.isDark ? UX4GColors.neutral400 : UX4GColors.neutral600; const cardStyle = [ styles.sectionCard, { backgroundColor: theme.isDark ? UX4GColors.neutral900 : UX4GColors.neutral50, borderColor: theme.isDark ? UX4GColors.neutral800 : UX4GColors.neutral200, }, ]; return ( 📭 Ux4gEmptyState Icon + title + supporting text + optional action button. Variants Semantic presets matching noResults, noData, comingSoon, error, and custom. Action Button Optional tonal button for recovery or navigation actions. setRetryCount((prev) => prev + 1)} /> Fully Custom Override icon, icon color, and text style for specialized screens. ); }; const styles = StyleSheet.create({ scrollContent: { padding: 16, paddingBottom: 40, }, mainTitle: { fontSize: 24, fontWeight: '700', marginBottom: 4, }, mainSubtitle: { fontSize: 14, fontWeight: '500', marginBottom: 24, }, section: { marginBottom: 28, }, sectionTitle: { fontSize: 18, fontWeight: '700', marginBottom: 4, }, sectionDesc: { fontSize: 13, fontWeight: '500', marginBottom: 12, }, sectionCard: { borderWidth: 1, borderRadius: 12, marginBottom: 12, }, });