|  | @@ -50,23 +50,29 @@ import androidx.compose.material.icons.filled.SmartDisplay
 | 
	
		
			
				|  |  |  import androidx.compose.material.icons.filled.SwitchRight
 | 
	
		
			
				|  |  |  import androidx.compose.material.icons.outlined.Circle
 | 
	
		
			
				|  |  |  import androidx.compose.material.ripple.rememberRipple
 | 
	
		
			
				|  |  | +import androidx.compose.material3.DockedSearchBar
 | 
	
		
			
				|  |  |  import androidx.compose.material3.ExperimentalMaterial3Api
 | 
	
		
			
				|  |  |  import androidx.compose.material3.Icon
 | 
	
		
			
				|  |  | +import androidx.compose.material3.IconButton
 | 
	
		
			
				|  |  |  import androidx.compose.material3.MaterialTheme
 | 
	
		
			
				|  |  |  import androidx.compose.material3.ModalBottomSheet
 | 
	
		
			
				|  |  |  import androidx.compose.material3.RadioButton
 | 
	
		
			
				|  |  |  import androidx.compose.material3.RadioButtonDefaults
 | 
	
		
			
				|  |  | +import androidx.compose.material3.SearchBar
 | 
	
		
			
				|  |  | +import androidx.compose.material3.SearchBarDefaults
 | 
	
		
			
				|  |  |  import androidx.compose.material3.Surface
 | 
	
		
			
				|  |  |  import androidx.compose.material3.Switch
 | 
	
		
			
				|  |  |  import androidx.compose.material3.SwitchColors
 | 
	
		
			
				|  |  |  import androidx.compose.material3.SwitchDefaults
 | 
	
		
			
				|  |  |  import androidx.compose.material3.Text
 | 
	
		
			
				|  |  | +import androidx.compose.material3.TextFieldDefaults
 | 
	
		
			
				|  |  |  import androidx.compose.material3.rememberModalBottomSheetState
 | 
	
		
			
				|  |  |  import androidx.compose.runtime.Composable
 | 
	
		
			
				|  |  |  import androidx.compose.runtime.CompositionLocalProvider
 | 
	
		
			
				|  |  |  import androidx.compose.runtime.LaunchedEffect
 | 
	
		
			
				|  |  |  import androidx.compose.runtime.MutableState
 | 
	
		
			
				|  |  |  import androidx.compose.runtime.getValue
 | 
	
		
			
				|  |  | +import androidx.compose.runtime.livedata.observeAsState
 | 
	
		
			
				|  |  |  import androidx.compose.runtime.mutableStateOf
 | 
	
		
			
				|  |  |  import androidx.compose.runtime.remember
 | 
	
		
			
				|  |  |  import androidx.compose.runtime.rememberCoroutineScope
 | 
	
	
		
			
				|  | @@ -104,6 +110,7 @@ import com.vpn.fastestvpnservice.beans.themesList
 | 
	
		
			
				|  |  |  import com.vpn.fastestvpnservice.constants.AppEnum
 | 
	
		
			
				|  |  |  import com.vpn.fastestvpnservice.constants.smartConnect
 | 
	
		
			
				|  |  |  import com.vpn.fastestvpnservice.customItems.ServerSearchItem
 | 
	
		
			
				|  |  | +import com.vpn.fastestvpnservice.customItems.ServerSpecificItem
 | 
	
		
			
				|  |  |  import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
 | 
	
		
			
				|  |  |  import com.vpn.fastestvpnservice.navigation.navigationAnimation
 | 
	
		
			
				|  |  |  import com.vpn.fastestvpnservice.sealedClass.BottomBarScreen
 | 
	
	
		
			
				|  | @@ -783,6 +790,13 @@ fun ColumnScope.AddRowSettingsSmart(
 | 
	
		
			
				|  |  |      var selectedSmartConnect by remember {
 | 
	
		
			
				|  |  |          mutableStateOf(basePreferenceHelper.getSmartList()) }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    val searchText = searchListViewModel.searchText.observeAsState().value
 | 
	
		
			
				|  |  | +    val isActive = searchListViewModel.isActive.observeAsState().value
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    var selectedFilterList by remember { mutableStateOf(basePreferenceHelper.getFilterList()) }
 | 
	
		
			
				|  |  | +    val scope = rememberCoroutineScope()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      if (isRowShown) {
 | 
	
		
			
				|  |  |          Row(
 | 
	
		
			
				|  |  |              modifier = Modifier
 | 
	
	
		
			
				|  | @@ -956,16 +970,67 @@ fun ColumnScope.AddRowSettingsSmart(
 | 
	
		
			
				|  |  |                      CompositionLocalProvider(
 | 
	
		
			
				|  |  |                          LocalOverscrollConfiguration provides null
 | 
	
		
			
				|  |  |                      ) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        DockedSearchBar(
 | 
	
		
			
				|  |  | +                            query = searchText!!,
 | 
	
		
			
				|  |  | +                            onQueryChange = {
 | 
	
		
			
				|  |  | +                                scope.launch {
 | 
	
		
			
				|  |  | +                                    searchListViewModel.searchTextChange(it)
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                            },
 | 
	
		
			
				|  |  | +                            onSearch = {
 | 
	
		
			
				|  |  | +                                scope.launch {
 | 
	
		
			
				|  |  | +                                    searchListViewModel.isActiveChange(false)
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                            },
 | 
	
		
			
				|  |  | +                            active = isActive!!,
 | 
	
		
			
				|  |  | +                            onActiveChange = {
 | 
	
		
			
				|  |  | +                                scope.launch {
 | 
	
		
			
				|  |  | +                                    searchListViewModel.isActiveChange(it)
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                            },
 | 
	
		
			
				|  |  | +                            placeholder = {
 | 
	
		
			
				|  |  | +                                Text(
 | 
	
		
			
				|  |  | +                                    text = "Search Location",
 | 
	
		
			
				|  |  | +                                    style = MaterialTheme.typography.displaySmall,
 | 
	
		
			
				|  |  | +                                    color = colorResource(id = R.color.dark_blue_gray_text)
 | 
	
		
			
				|  |  | +                                )
 | 
	
		
			
				|  |  | +                            },
 | 
	
		
			
				|  |  | +                            leadingIcon = {
 | 
	
		
			
				|  |  | +                                Icon(
 | 
	
		
			
				|  |  | +                                    painter = painterResource(id = R.drawable.search3x),
 | 
	
		
			
				|  |  | +                                    contentDescription = "Search Icon",
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                    modifier = Modifier
 | 
	
		
			
				|  |  | +                                        .size(21.dp)
 | 
	
		
			
				|  |  | +                                )
 | 
	
		
			
				|  |  | +                            },
 | 
	
		
			
				|  |  | +                            colors = SearchBarDefaults.colors(
 | 
	
		
			
				|  |  | +                                containerColor = colorResource(id = R.color.white),
 | 
	
		
			
				|  |  | +                                dividerColor = Color.Transparent,
 | 
	
		
			
				|  |  | +                                inputFieldColors = TextFieldDefaults.colors(
 | 
	
		
			
				|  |  | +                                    focusedTextColor = colorResource(id = R.color.dark_blue_gray_text),
 | 
	
		
			
				|  |  | +                                    unfocusedTextColor = colorResource(id = R.color.dark_blue_gray_text),
 | 
	
		
			
				|  |  | +                                    unfocusedIndicatorColor = colorResource(id = R.color.dark_blue_gray_text),
 | 
	
		
			
				|  |  | +                                    focusedIndicatorColor = colorResource(id = R.color.dark_blue_gray_text),
 | 
	
		
			
				|  |  | +                                    disabledIndicatorColor = colorResource(id = R.color.dark_blue_gray_text),
 | 
	
		
			
				|  |  | +                                    cursorColor = colorResource(id = R.color.dark_blue_gray_text),
 | 
	
		
			
				|  |  | +                                )
 | 
	
		
			
				|  |  | +                            ),
 | 
	
		
			
				|  |  | +                            modifier = Modifier
 | 
	
		
			
				|  |  | +                                .fillMaxWidth()
 | 
	
		
			
				|  |  | +                                .height(50.dp)
 | 
	
		
			
				|  |  | +                                .padding(horizontal = 10.dp)
 | 
	
		
			
				|  |  | +                        ) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                          LazyColumn(
 | 
	
		
			
				|  |  |                              modifier = Modifier
 | 
	
		
			
				|  |  | -                                .padding(top = 0.dp, bottom = 0.dp),
 | 
	
		
			
				|  |  | +                                .padding(top = 20.dp, bottom = 0.dp),
 | 
	
		
			
				|  |  |                          ) {
 | 
	
		
			
				|  |  |                              val searchServersList = searchListViewModel.countriesList.value
 | 
	
		
			
				|  |  |                              items(items = searchServersList!!) { server ->
 | 
	
		
			
				|  |  | -                                ServerSearchItem(
 | 
	
		
			
				|  |  | +                                ServerSpecificItem(
 | 
	
		
			
				|  |  |                                      server, navHostController = navHostController,
 | 
	
		
			
				|  |  | -                                    MaterialTheme.colorScheme.background,
 | 
	
		
			
				|  |  | -                                    MaterialTheme.colorScheme.primary, false,
 | 
	
		
			
				|  |  |                                      onServerDisable = { isAnySpecificSheetOpen = false }
 | 
	
		
			
				|  |  |                                  )
 | 
	
		
			
				|  |  |                              }
 |