Skip to content

Instantly share code, notes, and snippets.

View rudrankriyam's full-sized avatar
🎵
Living.

Rudrank Riyam rudrankriyam

🎵
Living.
View GitHub Profile
@rudrankriyam
rudrankriyam / ColorKitProtocols.swift
Created July 8, 2021 20:21
Protocols for my app
protocol RGBColorProtocol: ColorProtocol {
var red: Double { get set }
var green: Double { get set }
var blue: Double { get set }
}
extension RGBColorProtocol {
func new() -> Color {
Color(red: red, green: green, blue: blue)
}
MusicRowView(song: song)
.swipeActions(edge: .leading) {
Button {
withAnimation {
// Mark the song favorite
}
} label: {
Label("Favorite", systemImage: "star")
}
.tint(.brand)
Button(action: login) {
Text("Log in")
.bold()
.frame(maxWidth: .infinity)
}
.buttonStyle(.bordered)
.tint(.brand)
.controlSize(.large)
.controlProminence(.increased)
.padding([.horizontal, .bottom])
@rudrankriyam
rudrankriyam / SearchViewSuggestions.swift
Created June 20, 2021 01:43
SearchView Suggestions
struct SearchView: View {
@StateObject private var viewModel = SearchSongsViewModel()
@State private var searchText = ""
// 1
@State private var selectedHint = ""
var body: some View {
NavigationView {
VStack {
if searchText.isEmpty {
struct SearchView: View {
@State private var searchText = ""
@StateObject private var viewModel = SearchSongsViewModel()
var body: some View {
NavigationView {
VStack {
if searchText.isEmpty {
Image("empty_search")
.resizable()
struct MusicRowView: View {
var song: SongData
var body: some View {
ZStack {
// 1
ArtworkImage(url: url) { image in
image
.scaledToFill()
struct MusicCardView: View {
var song: SongData
var body: some View {
HStack {
ArtworkImage(url: url) { image in
image
.scaledToFit()
.transition(.opacity.combined(with: .scale))
}
List {
LazyVGrid(columns: items, spacing: 4) {
ForEach(viewModel.songs.shuffled(), id: \.id) { song in
// Content. Shuffling the songs after every refresh.
}
}
.listRowSeparator(.hidden)
}
.listStyle(.plain)
ArtworkImage(url: url) { image in
image
.scaledToFit()
.transition(.opacity.combined(with: .scale))
}
struct ArtworkImage: View {
var url: URL?
var body: some View {
AsyncImage(url: url)
}
}