import { Pressable, StyleSheet, View } from 'react-native' import { Monitor, Smartphone, type LucideIcon } from 'lucide-react-native' import { colors, radii } from '../theme/mobile-theme' import type { MobileBrowserViewMode } from './browser-screencast-request' type Props = { disabled: boolean value: MobileBrowserViewMode onChange: (mode: MobileBrowserViewMode) => void } const VIEW_MODES: { id: MobileBrowserViewMode; label: string; icon: LucideIcon }[] = [ { id: 'web', label: 'Web', icon: Monitor }, { id: 'mobile', label: 'Mobile', icon: Smartphone } ] export function MobileBrowserViewModeSwitch({ disabled, value, onChange }: Props): React.JSX.Element { return ( {VIEW_MODES.map((mode) => ( onChange(mode.id)} /> ))} ) } function ViewModeButton({ Icon, disabled, label, onPress, selected }: { Icon: LucideIcon disabled?: boolean label: string onPress: () => void selected: boolean }) { return ( [ styles.button, selected && styles.buttonSelected, pressed && !disabled && !selected && styles.buttonPressed, disabled && styles.disabled ]} disabled={disabled} onPress={onPress} accessibilityRole="button" accessibilityState={{ selected, disabled }} accessibilityLabel={`Show ${label.toLowerCase()} website view`} > ) } const styles = StyleSheet.create({ switch: { minHeight: 28, flexDirection: 'row', alignItems: 'center', borderRadius: radii.input, backgroundColor: colors.bgRaised, padding: 2 }, button: { minHeight: 24, width: 32, alignItems: 'center', justifyContent: 'center', borderRadius: radii.button }, buttonPressed: { backgroundColor: colors.borderSubtle }, buttonSelected: { backgroundColor: colors.textPrimary }, disabled: { opacity: 0.35 } })