DeviceList

fun DeviceList(connectionState: ConnectionState, selectedDevice: String, bleDevices: List<DeviceListEntry>, usbDevices: List<DeviceListEntry>, discoveredTcpDevices: List<DeviceListEntry>, recentTcpDevices: List<DeviceListEntry>, isBleScanning: Boolean, isNetworkScanning: Boolean, onSelectDevice: (DeviceListEntry) -> Unit, onToggleBleScan: () -> Unit, onToggleNetworkScan: () -> Unit, onAddManualAddress: (address: String, fullAddress: String) -> Unit, onRemoveRecentAddress: (DeviceListEntry) -> Unit, modifier: Modifier = Modifier, showBleSection: Boolean = true, showNetworkSection: Boolean = true, showUsbSection: Boolean = true)(source)

Unified device list: BLE / USB / Network sections rendered as one scrollable LazyColumn.

Replaces the previous tab-based UI. Every section uses the same M3 header template (DeviceSectionHeader); empty sections are hidden. Stable per-transport keys (e.g. "ble:<fullAddress>") keep LazyColumn's recomposition scope tight to the actual item that changed when a user taps a device card.

BLE / network scanning is user-triggered — the header's trailing toggle calls back to the caller.