import React, { useState } from 'react'; import { View, TextInput, StyleSheet, TouchableOpacity, useWindowDimensions } from 'react-native'; import { Ionicons } from '@expo/vector-icons'; import { colors, spacing, borderRadius } from '../constants/theme'; const TABLET_MIN_WIDTH = 768; interface SearchBarProps { placeholder?: string; onSearch: (query: string) => void; value?: string; onChangeText?: (text: string) => void; } export function SearchBar({ placeholder = 'Buscar medicamentos...', onSearch, value, onChangeText }: SearchBarProps) { const { width } = useWindowDimensions(); const isTablet = width >= TABLET_MIN_WIDTH; const [localValue, setLocalValue] = useState(value || ''); const handleChange = (text: string) => { setLocalValue(text); onChangeText?.(text); }; const handleSubmit = () => { onSearch(localValue); }; const handleClear = () => { setLocalValue(''); onChangeText?.(''); onSearch(''); }; return ( {localValue.length > 0 && ( )} ); } const styles = StyleSheet.create({ container: { flexDirection: 'row', alignItems: 'center', backgroundColor: colors.card, borderRadius: borderRadius.lg, paddingHorizontal: spacing.md, paddingVertical: spacing.sm + 2, marginHorizontal: spacing.lg, marginVertical: spacing.sm, maxWidth: 420, alignSelf: 'center', width: '100%', shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.06, shadowRadius: 8, elevation: 2, }, containerTablet: { paddingHorizontal: spacing.lg, paddingVertical: spacing.md, }, icon: { marginRight: spacing.sm, }, input: { flex: 1, fontSize: 16, color: colors.text, paddingVertical: spacing.xs, }, inputTablet: { fontSize: 18, paddingVertical: spacing.sm, }, clearButton: { marginLeft: spacing.sm, }, });