diff --git a/Multiplatform/Shared/AppAssets.swift b/Multiplatform/Shared/AppAssets.swift index b6930bb34..b31a55a7a 100644 --- a/Multiplatform/Shared/AppAssets.swift +++ b/Multiplatform/Shared/AppAssets.swift @@ -13,70 +13,102 @@ import Account struct AppAssets { static var accountLocalMacImage: RSImage! = { - return RSImage(named: "accountLocalMac") + return RSImage(named: "AccountLocalMac") }() static var accountLocalPadImage: RSImage = { - return RSImage(named: "accountLocalPad")! + return RSImage(named: "AccountLocalPad")! }() static var accountLocalPhoneImage: RSImage = { - return RSImage(named: "accountLocalPhone")! + return RSImage(named: "AccountLocalPhone")! }() static var accountCloudKitImage: RSImage = { - return RSImage(named: "accountCloudKit")! + return RSImage(named: "AccountCloudKit")! }() static var accountFeedbinImage: RSImage = { - return RSImage(named: "accountFeedbin")! + return RSImage(named: "AccountFeedbin")! }() static var accountFeedlyImage: RSImage = { - return RSImage(named: "accountFeedly")! + return RSImage(named: "AccountFeedly")! }() static var accountFeedWranglerImage: RSImage = { - return RSImage(named: "accountFeedWrangler")! + return RSImage(named: "AccountFeedWrangler")! }() static var accountFreshRSSImage: RSImage = { - return RSImage(named: "accountFreshRSS")! + return RSImage(named: "AccountFreshRSS")! }() static var accountNewsBlurImage: RSImage = { - return RSImage(named: "accountNewsBlur")! + return RSImage(named: "AccountNewsBlur")! }() + static var addMenuImage: Image = { + return Image(systemName: "plus") + }() + static var extensionPointMarsEdit: RSImage = { - return RSImage(named: "extensionPointMarsEdit")! + return RSImage(named: "ExtensionPointMarsEdit")! }() static var extensionPointMicroblog: RSImage = { - return RSImage(named: "extensionPointMicroblog")! + return RSImage(named: "ExtensionPointMicroblog")! }() static var extensionPointReddit: RSImage = { - return RSImage(named: "extensionPointReddit")! + return RSImage(named: "ExtensionPointReddit")! }() static var extensionPointTwitter: RSImage = { - return RSImage(named: "extensionPointTwitter")! + return RSImage(named: "ExtensionPointTwitter")! }() static var faviconTemplateImage: RSImage = { - return RSImage(named: "faviconTemplateImage")! + return RSImage(named: "FaviconTemplateImage")! }() - static var masterFolderImage: IconImage = { + static var settingsImage: Image = { + return Image(systemName: "gear") + }() + + static var masterFolderImage: IconImage { #if os(macOS) - return IconImage(NSImage(systemSymbolName: "folder.fill", accessibilityDescription: nil)!) + let image = NSImage(systemSymbolName: "folder.fill", accessibilityDescription: nil)! + let coloredImage = image.tinted(with: NSColor(named: "AccentColor")!) + return IconImage(coloredImage) #endif #if os(iOS) - return IconImage(UIImage(systemName: "folder.fill")!) + let image = UIImage(systemName: "folder.fill")! + let coloredImage = image.tinted(color: UIColor(named: "AccentColor")!)! + return IconImage(coloredImage) #endif + } + + static var markAllAsReadImage: Image = { + return Image("MarkAllAsRead") }() + static var markAllAsReadImagePDF: Image = { + return Image("MarkAllAsReadPDF") + }() + + static var nextUnreadArticleImage: Image = { + return Image(systemName: "chevron.down.circle") + }() + + static var openInBrowserImage: Image = { + return Image(systemName: "safari") + }() + + static var refreshImage: Image = { + return Image(systemName: "arrow.clockwise") + }() + static var searchFeedImage: IconImage = { #if os(macOS) return IconImage(NSImage(systemSymbolName: "magnifyingglass", accessibilityDescription: nil)!) @@ -86,6 +118,10 @@ struct AppAssets { #endif }() + static var shareImage: Image = { + Image(systemName: "square.and.arrow.up") + }() + static var smartFeedImage: RSImage = { #if os(macOS) return NSImage(systemSymbolName: "gear", accessibilityDescription: nil)! @@ -97,40 +133,76 @@ struct AppAssets { static var starredFeedImage: IconImage = { #if os(macOS) - return IconImage(NSImage(systemSymbolName: "star.fill", accessibilityDescription: nil)!) + let image = NSImage(systemSymbolName: "star.fill", accessibilityDescription: nil)! + let coloredImage = image.tinted(with: NSColor(named: "StarColor")!) + return IconImage(coloredImage) #endif #if os(iOS) - return IconImage(UIImage(systemName: "star.fill")!) + let image = UIImage(systemName: "star.fill")! + let coloredImage = image.tinted(color: UIColor(named: "StarColor")!)! + return IconImage(coloredImage) #endif }() static var timelineStarred: Image = { - return Image(systemName: "star.fill") - + #if os(macOS) + let image = NSImage(systemSymbolName: "star.fill", accessibilityDescription: nil)! + let coloredImage = image.tinted(with: NSColor(named: "StarColor")!) + return Image(nsImage: coloredImage) + #endif + #if os(iOS) + let image = UIImage(systemName: "star.fill")! + let coloredImage = image.tinted(color: UIColor(named: "StarColor")!)! + return Image(uiImage: coloredImage) + #endif }() - static var timelineUnread: Image = { - return Image(systemName: "circle.fill") - - }() + static var timelineUnread: Image { + #if os(macOS) + let image = NSImage(systemSymbolName: "circle.fill", accessibilityDescription: nil)! + let coloredImage = image.tinted(with: NSColor(named: "AccentColor")!) + return Image(nsImage: coloredImage) + #endif + #if os(iOS) + let image = UIImage(systemName: "circle.fill")! + let coloredImage = image.tinted(color: UIColor(named: "AccentColor")!)! + return Image(uiImage: coloredImage) + #endif + } static var todayFeedImage: IconImage = { #if os(macOS) - return IconImage(NSImage(systemSymbolName: "sun.max.fill", accessibilityDescription: nil)!) + let image = NSImage(systemSymbolName: "sun.max.fill", accessibilityDescription: nil)! + let coloredImage = image.tinted(with: .orange) + return IconImage(coloredImage) #endif #if os(iOS) - return IconImage(UIImage(systemName: "sun.max.fill")!) + let image = UIImage(systemName: "sun.max.fill")! + let coloredImage = image.tinted(color: .orange)! + return IconImage(coloredImage) #endif }() - - static var unreadFeedImage: IconImage = { + + static var toggleStarred: Image = { + return Image(systemName: "star.fill") + }() + + static var toggleRead: Image = { + return Image(systemName: "largecircle.fill.circle") + }() + + static var unreadFeedImage: IconImage { #if os(macOS) - return IconImage(NSImage(systemSymbolName: "largecircle.fill.circle", accessibilityDescription: nil)!) + let image = NSImage(systemSymbolName: "largecircle.fill.circle", accessibilityDescription: nil)! + let coloredImage = image.tinted(with: NSColor(named: "AccentColor")!) + return IconImage(coloredImage) #endif #if os(iOS) - return IconImage(UIImage(systemName: "largecircle.fill.circle")!) + let image = UIImage(systemName: "largecircle.fill.circle")! + let coloredImage = image.tinted(color: UIColor(named: "AccentColor")!)! + return IconImage(coloredImage) #endif - }() + } static func image(for accountType: AccountType) -> RSImage? { switch accountType { diff --git a/Multiplatform/Shared/Assets.xcassets/AccentColor.colorset/Contents.json b/Multiplatform/Shared/Assets.xcassets/AccentColor.colorset/Contents.json index bf3d625ad..4f1440c52 100644 --- a/Multiplatform/Shared/Assets.xcassets/AccentColor.colorset/Contents.json +++ b/Multiplatform/Shared/Assets.xcassets/AccentColor.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.945", - "green" : "0.502", - "red" : "0.176" + "blue" : "0.957", + "green" : "0.620", + "red" : "0.369" } }, "idiom" : "universal" diff --git a/Multiplatform/Shared/Assets.xcassets/MarkAllAsReadPDF.imageset/Contents.json b/Multiplatform/Shared/Assets.xcassets/MarkAllAsReadPDF.imageset/Contents.json new file mode 100644 index 000000000..f23296bcc --- /dev/null +++ b/Multiplatform/Shared/Assets.xcassets/MarkAllAsReadPDF.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "filename" : "MarkAllAsReadPDF.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "template" + } +} diff --git a/Multiplatform/Shared/Assets.xcassets/MarkAllAsReadPDF.imageset/MarkAllAsReadPDF.pdf b/Multiplatform/Shared/Assets.xcassets/MarkAllAsReadPDF.imageset/MarkAllAsReadPDF.pdf new file mode 100644 index 000000000..e2a044d56 Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/MarkAllAsReadPDF.imageset/MarkAllAsReadPDF.pdf differ diff --git a/Multiplatform/Shared/Assets.xcassets/StarColor.colorset/Contents.json b/Multiplatform/Shared/Assets.xcassets/StarColor.colorset/Contents.json new file mode 100644 index 000000000..c464941a7 --- /dev/null +++ b/Multiplatform/Shared/Assets.xcassets/StarColor.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.204", + "green" : "0.776", + "red" : "0.976" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Multiplatform/Shared/Assets.xcassets/markAllAsRead.symbolset/markAllAsRead.svg b/Multiplatform/Shared/Assets.xcassets/markAllAsRead.symbolset/markAllAsRead.svg index 58170a6ba..10e23abd9 100644 --- a/Multiplatform/Shared/Assets.xcassets/markAllAsRead.symbolset/markAllAsRead.svg +++ b/Multiplatform/Shared/Assets.xcassets/markAllAsRead.symbolset/markAllAsRead.svg @@ -1,7 +1,7 @@ - - Untitled + + markAllAsRead Created with Sketch. @@ -136,6 +136,11 @@ + + + + + diff --git a/Multiplatform/Shared/MainApp.swift b/Multiplatform/Shared/MainApp.swift index 547b3f8a9..e011aeca0 100644 --- a/Multiplatform/Shared/MainApp.swift +++ b/Multiplatform/Shared/MainApp.swift @@ -34,61 +34,60 @@ struct MainApp: App { } .toolbar { - ToolbarItem { + ToolbarItem() { Button(action: { showSheet = true }, label: { - Image(systemName: "plus").foregroundColor(.secondary) + AppAssets.addMenuImage }).help("Add Feed") } ToolbarItem { Button(action: {}, label: { - Image(systemName: "folder.fill.badge.plus").foregroundColor(.pink) - }).help("New Folder") - } - - ToolbarItem { - Button(action: {}, label: { - Image(systemName: "arrow.clockwise").foregroundColor(.secondary) + AppAssets.refreshImage }).help("Refresh").padding(.trailing, 40) } - + ToolbarItem { Button(action: {}, label: { - Image(systemName: "circle.dashed").foregroundColor(.orange) + AppAssets.markAllAsReadImagePDF + .resizable() + .scaledToFit() + .frame(width: 20, height: 20, alignment: .center) }).help("Mark All as Read") } ToolbarItem { - Button(action: {}, label: { - Image(systemName: "arrow.triangle.turn.up.right.circle.fill").foregroundColor(.purple) - }).help("Go to Next Unread") + MacSearchField() + .frame(width: 200) } - + ToolbarItem { Button(action: {}, label: { - Image(systemName: "star.fill").foregroundColor(.yellow) + AppAssets.nextUnreadArticleImage + }).help("Go to Next Unread").padding(.trailing, 40) + } + + ToolbarItem { + Button(action: {}, label: { + AppAssets.toggleStarred }).help("Mark as Starred") } ToolbarItem { Button(action: {}, label: { - Image(systemName: "checkmark.circle.fill").foregroundColor(.green) + AppAssets.toggleRead }).help("Mark as Unread") } ToolbarItem { Button(action: {}, label: { - Image(systemName: "safari").foregroundColor(.blue) + AppAssets.openInBrowserImage }).help("Open in Browser") } ToolbarItem { Button(action: {}, label: { - Image(systemName: "square.and.arrow.up") + AppAssets.shareImage }).help("Share") } - ToolbarItem { - MacSearchField() - .frame(width: 300) - } + } } .commands { diff --git a/Multiplatform/Shared/Sidebar/SidebarToolbar.swift b/Multiplatform/Shared/Sidebar/SidebarToolbar.swift index 9aec8c5c8..90d4a7e39 100644 --- a/Multiplatform/Shared/Sidebar/SidebarToolbar.swift +++ b/Multiplatform/Shared/Sidebar/SidebarToolbar.swift @@ -22,19 +22,14 @@ fileprivate class SidebarToolbarViewModel: ObservableObject { } @Published var showActionSheet: Bool = false @Published var showAddSheet: Bool = false + } - struct SidebarToolbar: View { @EnvironmentObject private var appSettings: AppDefaults @StateObject private var viewModel = SidebarToolbarViewModel() - - var addActionSheetButtons = [ - Button(action: {}, label: { Text("Add Feed") }) - ] - var body: some View { VStack { Divider() @@ -42,7 +37,7 @@ struct SidebarToolbar: View { Button(action: { viewModel.sheetToShow = .settings }, label: { - Image(systemName: "gear") + AppAssets.settingsImage .font(.title3) .foregroundColor(.accentColor) }).help("Settings") @@ -58,7 +53,7 @@ struct SidebarToolbar: View { Button(action: { viewModel.showActionSheet = true }, label: { - Image(systemName: "plus") + AppAssets.addMenuImage .font(.title3) .foregroundColor(.accentColor) }) diff --git a/Multiplatform/Shared/Timeline/TimelineItemStatusView.swift b/Multiplatform/Shared/Timeline/TimelineItemStatusView.swift index bef9ff233..0db428879 100644 --- a/Multiplatform/Shared/Timeline/TimelineItemStatusView.swift +++ b/Multiplatform/Shared/Timeline/TimelineItemStatusView.swift @@ -19,12 +19,10 @@ struct TimelineItemStatusView: View { .resizable() .frame(width: 8, height: 8, alignment: .center) .padding(.all, 2) - .foregroundColor(.accentColor) case .showStar: AppAssets.timelineStarred .resizable() .frame(width: 10, height: 10, alignment: .center) - .foregroundColor(.yellow) case .showNone: AppAssets.timelineUnread .resizable() diff --git a/iOS/Resources/Assets.xcassets/secondaryAccentColor.colorset/Contents.json b/iOS/Resources/Assets.xcassets/secondaryAccentColor.colorset/Contents.json index 750f4b573..b94873d3d 100644 --- a/iOS/Resources/Assets.xcassets/secondaryAccentColor.colorset/Contents.json +++ b/iOS/Resources/Assets.xcassets/secondaryAccentColor.colorset/Contents.json @@ -1,23 +1,18 @@ { - "info" : { - "version" : 1, - "author" : "xcode" - }, "colors" : [ { - "idiom" : "universal", "color" : { "color-space" : "srgb", "components" : { - "red" : "0x08", "alpha" : "1.000", "blue" : "0xEE", - "green" : "0x6A" + "green" : "0x6A", + "red" : "0x08" } - } + }, + "idiom" : "universal" }, { - "idiom" : "universal", "appearances" : [ { "appearance" : "luminosity", @@ -27,12 +22,17 @@ "color" : { "color-space" : "srgb", "components" : { - "red" : "0x5E", "alpha" : "1.000", "blue" : "0xF4", - "green" : "0x9E" + "green" : "0x9E", + "red" : "0x5E" } - } + }, + "idiom" : "universal" } - ] -} \ No newline at end of file + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Resources/Assets.xcassets/starColor.colorset/Contents.json b/iOS/Resources/Assets.xcassets/starColor.colorset/Contents.json index b1d4071d7..4811237e1 100644 --- a/iOS/Resources/Assets.xcassets/starColor.colorset/Contents.json +++ b/iOS/Resources/Assets.xcassets/starColor.colorset/Contents.json @@ -1,20 +1,20 @@ { - "info" : { - "version" : 1, - "author" : "xcode" - }, "colors" : [ { - "idiom" : "universal", "color" : { "color-space" : "srgb", "components" : { - "red" : "249", "alpha" : "1.000", "blue" : "52", - "green" : "198" + "green" : "198", + "red" : "249" } - } + }, + "idiom" : "universal" } - ] -} \ No newline at end of file + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}