import { Text, useTheme } from "@streamplace/components"; import { ReactNode } from "react"; import { View } from "react-native"; /** * A recessed 64px tile holding a lucide icon — the standard illustration for * icon-based empty states (pass as `illustration` to ). */ export function EmptyStateTile({ icon: Icon, tone, }: { icon: React.ComponentType; tone?: string; }) { const { theme } = useTheme(); const c = theme.colors; return ( ); } /** * Shared empty-state layout: a ~64px illustration, a semibold headline, muted * supporting copy, and an optional call to action — centered in the available * space. Used across Home, Videos, and the content hub so they read as one * system. Give it a parent with a flex context (e.g. a flex:1 column or a * flexGrow scroll container) for it to center vertically. */ export function EmptyState({ illustration, title, subtitle, action, }: { illustration: ReactNode; title: string; subtitle?: string; action?: ReactNode; }) { return ( {illustration} {title} {subtitle ? ( {subtitle} ) : null} {action ? {action} : null} ); }