71 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
import SwiftUI
 | 
						|
 | 
						|
struct SearchTab: View {
 | 
						|
    @StateObject private var viewModel = SearchViewModel()
 | 
						|
    
 | 
						|
    var body: some View {
 | 
						|
        VStack {
 | 
						|
            SearchBar(text: $viewModel.searchText)
 | 
						|
                .padding(.top, 8)
 | 
						|
            
 | 
						|
            List(viewModel.users) { user in
 | 
						|
                NavigationLink(destination: ProfileTab(
 | 
						|
                    viewModel: LoginViewModel(),
 | 
						|
                    sheetType: .constant(nil),
 | 
						|
                    selectedAccount: .constant("@\(user.username)"),
 | 
						|
                    accounts: .constant(["@\(user.username)"]))
 | 
						|
                ) {
 | 
						|
                    HStack {
 | 
						|
                        Image(systemName: "person.crop.circle")
 | 
						|
                            .resizable()
 | 
						|
                            .frame(width: 40, height: 40)
 | 
						|
                            .clipShape(Circle())
 | 
						|
                        Text(user.username)
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            .listStyle(PlainListStyle())
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
struct SearchBar: View {
 | 
						|
    @Binding var text: String
 | 
						|
    
 | 
						|
    var body: some View {
 | 
						|
        HStack {
 | 
						|
            TextField("Поиск...", text: $text)
 | 
						|
                .padding(8)
 | 
						|
                .padding(.horizontal, 25)
 | 
						|
                .background(Color(.systemGray6))
 | 
						|
                .cornerRadius(8)
 | 
						|
                .overlay(
 | 
						|
                    HStack {
 | 
						|
                        Image(systemName: "magnifyingglass")
 | 
						|
                            .foregroundColor(.gray)
 | 
						|
                            .frame(minWidth: 0, maxWidth: .infinity, alignment: .leading)
 | 
						|
                            .padding(.leading, 8)
 | 
						|
                        
 | 
						|
                        if !text.isEmpty {
 | 
						|
                            Button(action: {
 | 
						|
                                self.text = ""
 | 
						|
                            }) {
 | 
						|
                                Image(systemName: "multiply.circle.fill")
 | 
						|
                                    .foregroundColor(.gray)
 | 
						|
                                    .padding(.trailing, 8)
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                )
 | 
						|
        }
 | 
						|
        .padding(.horizontal, 10)
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
struct SearchTab_Previews: PreviewProvider {
 | 
						|
    static var previews: some View {
 | 
						|
        SearchTab()
 | 
						|
    }
 | 
						|
}
 | 
						|
 |