import React from 'react'; import { YStack, XStack } from '@tamagui/stacks'; import { SizableText as Text } from '@tamagui/text'; import { Button } from '@tamagui/button'; import { Pressable } from '@tamagui/react-native-web-lite'; import { useTheme } from '@tamagui/core'; import { Home, BarChart2, Settings } from 'lucide-react'; export function AppCard({ children, padding = '$4', ...rest }: React.ComponentProps & { padding?: keyof typeof rest }) { return ( {children} ); } export function StatusPill({ tone = 'muted', children }: { tone?: 'success' | 'warning' | 'muted'; children: React.ReactNode }) { const colors: Record = { success: { bg: '#ecfdf3', color: '#047857', border: '#bbf7d0' }, warning: { bg: '#fffbeb', color: '#92400e', border: '#fef3c7' }, muted: { bg: '#f3f4f6', color: '#374151', border: '#e5e7eb' }, }; const palette = colors[tone] ?? colors.muted; return ( {children} ); } export function PrimaryCTA({ label, onPress }: { label: string; onPress: () => void }) { return ( ); } export function Segmented({ options, value, onChange, }: { options: Array<{ key: string; label: string }>; value: string; onChange: (key: string) => void; }) { return ( {options.map((option) => { const active = option.key === value; return ( onChange(option.key)} style={{ flex: 1 }}> {option.label} ); })} ); } export function MetaRow({ date, location, status }: { date: string; location: string; status: string }) { return ( {date} {location} {status} ); } export function BottomNav({ active, onNavigate, }: { active: 'events' | 'analytics' | 'settings'; onNavigate: (key: 'events' | 'analytics' | 'settings') => void; }) { const theme = useTheme(); const items = [ { key: 'events', icon: Home, label: 'Events' }, { key: 'analytics', icon: BarChart2, label: 'Analytics' }, { key: 'settings', icon: Settings, label: 'Settings' }, ]; return ( {items.map((item) => { const activeState = item.key === active; const IconCmp = item.icon; return ( onNavigate(item.key as typeof active)}> {item.label} ); })} ); }