├── InstagramRedesignConcept.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── xcuserdata │ └── raphael.xcuserdatad │ ├── xcdebugger │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ └── xcschememanagement.plist ├── InstagramRedesignConcept ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ ├── Contents.json │ ├── accent.colorset │ │ └── Contents.json │ ├── background.colorset │ │ └── Contents.json │ ├── foreground.colorset │ │ └── Contents.json │ ├── instagram.imageset │ │ ├── Contents.json │ │ └── instagram.png │ ├── post1.imageset │ │ ├── Contents.json │ │ └── dieter-schafer-b6NiWBQ8kno-unsplash.jpg │ ├── post2.imageset │ │ ├── Contents.json │ │ └── photo-1526819945808-268890ae8b32.jpeg │ ├── post3.imageset │ │ ├── Contents.json │ │ └── guilherme-stecanella-587579-unsplash.jpg │ ├── post4.imageset │ │ ├── 596ca20ac8283-royalty-free-thumbnail.jpg │ │ └── Contents.json │ ├── post5.imageset │ │ ├── Contents.json │ │ └── travel-lead.jpg │ ├── profile.imageset │ │ ├── 554a6fddfec6ce4b4a51b959627336dc.jpg │ │ └── Contents.json │ ├── profile1.imageset │ │ ├── Contents.json │ │ └── profile1.jpg │ ├── profile2.imageset │ │ ├── Contents.json │ │ └── profile2.jpg │ ├── profile3.imageset │ │ ├── Contents.json │ │ └── profile3.jpg │ ├── profile4.imageset │ │ ├── Contents.json │ │ └── profile4.jpg │ ├── profile5.imageset │ │ ├── Contents.json │ │ └── profile5.jpg │ └── profile6.imageset │ │ ├── Contents.json │ │ └── profile6.jpg ├── Info.plist └── Preview Content │ └── Preview Assets.xcassets │ └── Contents.json ├── README.md ├── Shared ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── Contents.json ├── ContentView.swift ├── InstagramRedesignConceptMacApp.swift └── View │ ├── StoriesView.swift │ └── StoryItemView.swift ├── iOS ├── Info.plist └── View │ ├── ContentView.swift │ ├── CustomNavigationView.swift │ ├── HomeView.swift │ ├── InstagramRedesignConceptApp.swift │ ├── PostSocialView.swift │ ├── PostView.swift │ ├── ProfileView.swift │ ├── TabBarShape.swift │ └── TabBarView.swift └── macOS ├── Info.plist ├── View └── HomeView.swift └── macOS.entitlements /InstagramRedesignConcept.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 50; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 647CAB4925803967008753EE /* InstagramRedesignConceptMacApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 647CAB3725803964008753EE /* InstagramRedesignConceptMacApp.swift */; }; 11 | 647CAB4A25803967008753EE /* InstagramRedesignConceptMacApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 647CAB3725803964008753EE /* InstagramRedesignConceptMacApp.swift */; }; 12 | 647CAB4B25803967008753EE /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 647CAB3825803964008753EE /* ContentView.swift */; }; 13 | 647CAB4C25803967008753EE /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 647CAB3825803964008753EE /* ContentView.swift */; }; 14 | 647CAB4D25803967008753EE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 647CAB3925803967008753EE /* Assets.xcassets */; }; 15 | 647CAB4E25803967008753EE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 647CAB3925803967008753EE /* Assets.xcassets */; }; 16 | 647CAB5925803AD1008753EE /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 647CAB5825803AAF008753EE /* HomeView.swift */; }; 17 | 647CAB6425803BDC008753EE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 64CD343C2577041900081827 /* Assets.xcassets */; }; 18 | 647CAB6825803BDC008753EE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 64CD343C2577041900081827 /* Assets.xcassets */; }; 19 | 647CAB7025803C37008753EE /* TabBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD345E257B06CF00081827 /* TabBarView.swift */; }; 20 | 647CAB7125803C37008753EE /* StoryItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD34492577097500081827 /* StoryItemView.swift */; }; 21 | 647CAB7225803C37008753EE /* TabBarShape.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD344F2578470400081827 /* TabBarShape.swift */; }; 22 | 647CAB7325803C37008753EE /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD3457257AF71C00081827 /* ProfileView.swift */; }; 23 | 647CAB7425803C37008753EE /* CustomNavigationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD3464257D79C200081827 /* CustomNavigationView.swift */; }; 24 | 647CAB7525803C37008753EE /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD345B257B06AA00081827 /* HomeView.swift */; }; 25 | 647CAB7625803C37008753EE /* PostView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD3461257D799800081827 /* PostView.swift */; }; 26 | 647CAB7725803C37008753EE /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD343A2577041600081827 /* ContentView.swift */; }; 27 | 647CAB7825803C37008753EE /* InstagramRedesignConceptApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD34382577041600081827 /* InstagramRedesignConceptApp.swift */; }; 28 | 647CAB7925803C37008753EE /* PostSocialView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD3467257D7A8500081827 /* PostSocialView.swift */; }; 29 | 647CAB7E25803D22008753EE /* StoryItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD34492577097500081827 /* StoryItemView.swift */; }; 30 | 64AACFA42582D672009F22E4 /* StoriesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64AACFA32582D672009F22E4 /* StoriesView.swift */; }; 31 | 64AACFA52582D672009F22E4 /* StoriesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64AACFA32582D672009F22E4 /* StoriesView.swift */; }; 32 | 64AACFA62582D672009F22E4 /* StoriesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64AACFA32582D672009F22E4 /* StoriesView.swift */; }; 33 | 64CD34392577041600081827 /* InstagramRedesignConceptApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD34382577041600081827 /* InstagramRedesignConceptApp.swift */; }; 34 | 64CD343B2577041600081827 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD343A2577041600081827 /* ContentView.swift */; }; 35 | 64CD343D2577041900081827 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 64CD343C2577041900081827 /* Assets.xcassets */; }; 36 | 64CD34402577041900081827 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 64CD343F2577041900081827 /* Preview Assets.xcassets */; }; 37 | 64CD344A2577097500081827 /* StoryItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD34492577097500081827 /* StoryItemView.swift */; }; 38 | 64CD344D25770FAE00081827 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 64CD344C25770FAE00081827 /* README.md */; }; 39 | 64CD34502578470400081827 /* TabBarShape.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD344F2578470400081827 /* TabBarShape.swift */; }; 40 | 64CD3458257AF71D00081827 /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD3457257AF71C00081827 /* ProfileView.swift */; }; 41 | 64CD345C257B06AA00081827 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD345B257B06AA00081827 /* HomeView.swift */; }; 42 | 64CD345F257B06CF00081827 /* TabBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD345E257B06CF00081827 /* TabBarView.swift */; }; 43 | 64CD3462257D799900081827 /* PostView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD3461257D799800081827 /* PostView.swift */; }; 44 | 64CD3465257D79C200081827 /* CustomNavigationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD3464257D79C200081827 /* CustomNavigationView.swift */; }; 45 | 64CD3468257D7A8500081827 /* PostSocialView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CD3467257D7A8500081827 /* PostSocialView.swift */; }; 46 | /* End PBXBuildFile section */ 47 | 48 | /* Begin PBXFileReference section */ 49 | 647CAB3725803964008753EE /* InstagramRedesignConceptMacApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstagramRedesignConceptMacApp.swift; sourceTree = ""; }; 50 | 647CAB3825803964008753EE /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 51 | 647CAB3925803967008753EE /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = ../Shared/Assets.xcassets; sourceTree = ""; }; 52 | 647CAB3E25803967008753EE /* InstagramRedesignConceptMac.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = InstagramRedesignConceptMac.app; sourceTree = BUILT_PRODUCTS_DIR; }; 53 | 647CAB4025803967008753EE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 54 | 647CAB4525803967008753EE /* InstagramRedesignConceptMac.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = InstagramRedesignConceptMac.app; sourceTree = BUILT_PRODUCTS_DIR; }; 55 | 647CAB4725803967008753EE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 56 | 647CAB4825803967008753EE /* macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = macOS.entitlements; sourceTree = ""; }; 57 | 647CAB5825803AAF008753EE /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; 58 | 64AACFA32582D672009F22E4 /* StoriesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoriesView.swift; sourceTree = ""; }; 59 | 64CD34352577041600081827 /* InstagramRedesignConcept.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = InstagramRedesignConcept.app; sourceTree = BUILT_PRODUCTS_DIR; }; 60 | 64CD34382577041600081827 /* InstagramRedesignConceptApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstagramRedesignConceptApp.swift; sourceTree = ""; }; 61 | 64CD343A2577041600081827 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 62 | 64CD343C2577041900081827 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = ../InstagramRedesignConcept/Assets.xcassets; sourceTree = ""; }; 63 | 64CD343F2577041900081827 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 64 | 64CD34412577041900081827 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 65 | 64CD34492577097500081827 /* StoryItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoryItemView.swift; sourceTree = ""; }; 66 | 64CD344C25770FAE00081827 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 67 | 64CD344F2578470400081827 /* TabBarShape.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarShape.swift; sourceTree = ""; }; 68 | 64CD3457257AF71C00081827 /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = ""; }; 69 | 64CD345B257B06AA00081827 /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; 70 | 64CD345E257B06CF00081827 /* TabBarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarView.swift; sourceTree = ""; }; 71 | 64CD3461257D799800081827 /* PostView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostView.swift; sourceTree = ""; }; 72 | 64CD3464257D79C200081827 /* CustomNavigationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomNavigationView.swift; sourceTree = ""; }; 73 | 64CD3467257D7A8500081827 /* PostSocialView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostSocialView.swift; sourceTree = ""; }; 74 | /* End PBXFileReference section */ 75 | 76 | /* Begin PBXFrameworksBuildPhase section */ 77 | 647CAB3B25803967008753EE /* Frameworks */ = { 78 | isa = PBXFrameworksBuildPhase; 79 | buildActionMask = 2147483647; 80 | files = ( 81 | ); 82 | runOnlyForDeploymentPostprocessing = 0; 83 | }; 84 | 647CAB4225803967008753EE /* Frameworks */ = { 85 | isa = PBXFrameworksBuildPhase; 86 | buildActionMask = 2147483647; 87 | files = ( 88 | ); 89 | runOnlyForDeploymentPostprocessing = 0; 90 | }; 91 | 64CD34322577041600081827 /* Frameworks */ = { 92 | isa = PBXFrameworksBuildPhase; 93 | buildActionMask = 2147483647; 94 | files = ( 95 | ); 96 | runOnlyForDeploymentPostprocessing = 0; 97 | }; 98 | /* End PBXFrameworksBuildPhase section */ 99 | 100 | /* Begin PBXGroup section */ 101 | 647CAB3625803964008753EE /* Shared */ = { 102 | isa = PBXGroup; 103 | children = ( 104 | 647CAB7D25803D1B008753EE /* View */, 105 | 64CD343C2577041900081827 /* Assets.xcassets */, 106 | 647CAB3725803964008753EE /* InstagramRedesignConceptMacApp.swift */, 107 | 647CAB3825803964008753EE /* ContentView.swift */, 108 | ); 109 | path = Shared; 110 | sourceTree = ""; 111 | }; 112 | 647CAB3F25803967008753EE /* iOS */ = { 113 | isa = PBXGroup; 114 | children = ( 115 | 647CAB6C25803C04008753EE /* View */, 116 | 647CAB4025803967008753EE /* Info.plist */, 117 | ); 118 | path = iOS; 119 | sourceTree = ""; 120 | }; 121 | 647CAB4625803967008753EE /* macOS */ = { 122 | isa = PBXGroup; 123 | children = ( 124 | 647CAB5D25803ADB008753EE /* View */, 125 | 647CAB4725803967008753EE /* Info.plist */, 126 | 647CAB4825803967008753EE /* macOS.entitlements */, 127 | ); 128 | path = macOS; 129 | sourceTree = ""; 130 | }; 131 | 647CAB5D25803ADB008753EE /* View */ = { 132 | isa = PBXGroup; 133 | children = ( 134 | 647CAB5825803AAF008753EE /* HomeView.swift */, 135 | ); 136 | path = View; 137 | sourceTree = ""; 138 | }; 139 | 647CAB6C25803C04008753EE /* View */ = { 140 | isa = PBXGroup; 141 | children = ( 142 | 64CD3461257D799800081827 /* PostView.swift */, 143 | 64CD344F2578470400081827 /* TabBarShape.swift */, 144 | 64CD3457257AF71C00081827 /* ProfileView.swift */, 145 | 64CD3464257D79C200081827 /* CustomNavigationView.swift */, 146 | 64CD34382577041600081827 /* InstagramRedesignConceptApp.swift */, 147 | 64CD343A2577041600081827 /* ContentView.swift */, 148 | 64CD345E257B06CF00081827 /* TabBarView.swift */, 149 | 64CD345B257B06AA00081827 /* HomeView.swift */, 150 | 64CD3467257D7A8500081827 /* PostSocialView.swift */, 151 | ); 152 | path = View; 153 | sourceTree = ""; 154 | }; 155 | 647CAB7D25803D1B008753EE /* View */ = { 156 | isa = PBXGroup; 157 | children = ( 158 | 64CD34492577097500081827 /* StoryItemView.swift */, 159 | 64AACFA32582D672009F22E4 /* StoriesView.swift */, 160 | ); 161 | path = View; 162 | sourceTree = ""; 163 | }; 164 | 64CD342C2577041600081827 = { 165 | isa = PBXGroup; 166 | children = ( 167 | 64CD344C25770FAE00081827 /* README.md */, 168 | 64CD34372577041600081827 /* InstagramRedesignConcept */, 169 | 647CAB3625803964008753EE /* Shared */, 170 | 647CAB3F25803967008753EE /* iOS */, 171 | 647CAB4625803967008753EE /* macOS */, 172 | 64CD34362577041600081827 /* Products */, 173 | ); 174 | sourceTree = ""; 175 | }; 176 | 64CD34362577041600081827 /* Products */ = { 177 | isa = PBXGroup; 178 | children = ( 179 | 64CD34352577041600081827 /* InstagramRedesignConcept.app */, 180 | 647CAB3E25803967008753EE /* InstagramRedesignConceptMac.app */, 181 | 647CAB4525803967008753EE /* InstagramRedesignConceptMac.app */, 182 | ); 183 | name = Products; 184 | sourceTree = ""; 185 | }; 186 | 64CD34372577041600081827 /* InstagramRedesignConcept */ = { 187 | isa = PBXGroup; 188 | children = ( 189 | 64CD34412577041900081827 /* Info.plist */, 190 | 647CAB3925803967008753EE /* Assets.xcassets */, 191 | 64CD343E2577041900081827 /* Preview Content */, 192 | ); 193 | path = InstagramRedesignConcept; 194 | sourceTree = ""; 195 | }; 196 | 64CD343E2577041900081827 /* Preview Content */ = { 197 | isa = PBXGroup; 198 | children = ( 199 | 64CD343F2577041900081827 /* Preview Assets.xcassets */, 200 | ); 201 | path = "Preview Content"; 202 | sourceTree = ""; 203 | }; 204 | /* End PBXGroup section */ 205 | 206 | /* Begin PBXNativeTarget section */ 207 | 647CAB3D25803967008753EE /* InstagramRedesignConceptMac (iOS) */ = { 208 | isa = PBXNativeTarget; 209 | buildConfigurationList = 647CAB5325803967008753EE /* Build configuration list for PBXNativeTarget "InstagramRedesignConceptMac (iOS)" */; 210 | buildPhases = ( 211 | 647CAB3A25803967008753EE /* Sources */, 212 | 647CAB3B25803967008753EE /* Frameworks */, 213 | 647CAB3C25803967008753EE /* Resources */, 214 | ); 215 | buildRules = ( 216 | ); 217 | dependencies = ( 218 | ); 219 | name = "InstagramRedesignConceptMac (iOS)"; 220 | productName = "InstagramRedesignConceptMac (iOS)"; 221 | productReference = 647CAB3E25803967008753EE /* InstagramRedesignConceptMac.app */; 222 | productType = "com.apple.product-type.application"; 223 | }; 224 | 647CAB4425803967008753EE /* InstagramRedesignConceptMac (macOS) */ = { 225 | isa = PBXNativeTarget; 226 | buildConfigurationList = 647CAB5425803967008753EE /* Build configuration list for PBXNativeTarget "InstagramRedesignConceptMac (macOS)" */; 227 | buildPhases = ( 228 | 647CAB4125803967008753EE /* Sources */, 229 | 647CAB4225803967008753EE /* Frameworks */, 230 | 647CAB4325803967008753EE /* Resources */, 231 | ); 232 | buildRules = ( 233 | ); 234 | dependencies = ( 235 | ); 236 | name = "InstagramRedesignConceptMac (macOS)"; 237 | productName = "InstagramRedesignConceptMac (macOS)"; 238 | productReference = 647CAB4525803967008753EE /* InstagramRedesignConceptMac.app */; 239 | productType = "com.apple.product-type.application"; 240 | }; 241 | 64CD34342577041600081827 /* InstagramRedesignConcept */ = { 242 | isa = PBXNativeTarget; 243 | buildConfigurationList = 64CD34442577041900081827 /* Build configuration list for PBXNativeTarget "InstagramRedesignConcept" */; 244 | buildPhases = ( 245 | 64CD34312577041600081827 /* Sources */, 246 | 64CD34322577041600081827 /* Frameworks */, 247 | 64CD34332577041600081827 /* Resources */, 248 | ); 249 | buildRules = ( 250 | ); 251 | dependencies = ( 252 | ); 253 | name = InstagramRedesignConcept; 254 | productName = InstagramRedesignConcept; 255 | productReference = 64CD34352577041600081827 /* InstagramRedesignConcept.app */; 256 | productType = "com.apple.product-type.application"; 257 | }; 258 | /* End PBXNativeTarget section */ 259 | 260 | /* Begin PBXProject section */ 261 | 64CD342D2577041600081827 /* Project object */ = { 262 | isa = PBXProject; 263 | attributes = { 264 | LastSwiftUpdateCheck = 1220; 265 | LastUpgradeCheck = 1220; 266 | TargetAttributes = { 267 | 647CAB3D25803967008753EE = { 268 | CreatedOnToolsVersion = 12.2; 269 | }; 270 | 647CAB4425803967008753EE = { 271 | CreatedOnToolsVersion = 12.2; 272 | }; 273 | 64CD34342577041600081827 = { 274 | CreatedOnToolsVersion = 12.2; 275 | }; 276 | }; 277 | }; 278 | buildConfigurationList = 64CD34302577041600081827 /* Build configuration list for PBXProject "InstagramRedesignConcept" */; 279 | compatibilityVersion = "Xcode 9.3"; 280 | developmentRegion = en; 281 | hasScannedForEncodings = 0; 282 | knownRegions = ( 283 | en, 284 | Base, 285 | ); 286 | mainGroup = 64CD342C2577041600081827; 287 | productRefGroup = 64CD34362577041600081827 /* Products */; 288 | projectDirPath = ""; 289 | projectRoot = ""; 290 | targets = ( 291 | 64CD34342577041600081827 /* InstagramRedesignConcept */, 292 | 647CAB3D25803967008753EE /* InstagramRedesignConceptMac (iOS) */, 293 | 647CAB4425803967008753EE /* InstagramRedesignConceptMac (macOS) */, 294 | ); 295 | }; 296 | /* End PBXProject section */ 297 | 298 | /* Begin PBXResourcesBuildPhase section */ 299 | 647CAB3C25803967008753EE /* Resources */ = { 300 | isa = PBXResourcesBuildPhase; 301 | buildActionMask = 2147483647; 302 | files = ( 303 | 647CAB6425803BDC008753EE /* Assets.xcassets in Resources */, 304 | 647CAB4D25803967008753EE /* Assets.xcassets in Resources */, 305 | ); 306 | runOnlyForDeploymentPostprocessing = 0; 307 | }; 308 | 647CAB4325803967008753EE /* Resources */ = { 309 | isa = PBXResourcesBuildPhase; 310 | buildActionMask = 2147483647; 311 | files = ( 312 | 647CAB6825803BDC008753EE /* Assets.xcassets in Resources */, 313 | 647CAB4E25803967008753EE /* Assets.xcassets in Resources */, 314 | ); 315 | runOnlyForDeploymentPostprocessing = 0; 316 | }; 317 | 64CD34332577041600081827 /* Resources */ = { 318 | isa = PBXResourcesBuildPhase; 319 | buildActionMask = 2147483647; 320 | files = ( 321 | 64CD344D25770FAE00081827 /* README.md in Resources */, 322 | 64CD34402577041900081827 /* Preview Assets.xcassets in Resources */, 323 | 64CD343D2577041900081827 /* Assets.xcassets in Resources */, 324 | ); 325 | runOnlyForDeploymentPostprocessing = 0; 326 | }; 327 | /* End PBXResourcesBuildPhase section */ 328 | 329 | /* Begin PBXSourcesBuildPhase section */ 330 | 647CAB3A25803967008753EE /* Sources */ = { 331 | isa = PBXSourcesBuildPhase; 332 | buildActionMask = 2147483647; 333 | files = ( 334 | 647CAB7825803C37008753EE /* InstagramRedesignConceptApp.swift in Sources */, 335 | 647CAB4B25803967008753EE /* ContentView.swift in Sources */, 336 | 647CAB7125803C37008753EE /* StoryItemView.swift in Sources */, 337 | 64AACFA52582D672009F22E4 /* StoriesView.swift in Sources */, 338 | 647CAB7925803C37008753EE /* PostSocialView.swift in Sources */, 339 | 647CAB7225803C37008753EE /* TabBarShape.swift in Sources */, 340 | 647CAB7425803C37008753EE /* CustomNavigationView.swift in Sources */, 341 | 647CAB7025803C37008753EE /* TabBarView.swift in Sources */, 342 | 647CAB7525803C37008753EE /* HomeView.swift in Sources */, 343 | 647CAB7725803C37008753EE /* ContentView.swift in Sources */, 344 | 647CAB7325803C37008753EE /* ProfileView.swift in Sources */, 345 | 647CAB7625803C37008753EE /* PostView.swift in Sources */, 346 | 647CAB4925803967008753EE /* InstagramRedesignConceptMacApp.swift in Sources */, 347 | ); 348 | runOnlyForDeploymentPostprocessing = 0; 349 | }; 350 | 647CAB4125803967008753EE /* Sources */ = { 351 | isa = PBXSourcesBuildPhase; 352 | buildActionMask = 2147483647; 353 | files = ( 354 | 647CAB5925803AD1008753EE /* HomeView.swift in Sources */, 355 | 64AACFA62582D672009F22E4 /* StoriesView.swift in Sources */, 356 | 647CAB7E25803D22008753EE /* StoryItemView.swift in Sources */, 357 | 647CAB4C25803967008753EE /* ContentView.swift in Sources */, 358 | 647CAB4A25803967008753EE /* InstagramRedesignConceptMacApp.swift in Sources */, 359 | ); 360 | runOnlyForDeploymentPostprocessing = 0; 361 | }; 362 | 64CD34312577041600081827 /* Sources */ = { 363 | isa = PBXSourcesBuildPhase; 364 | buildActionMask = 2147483647; 365 | files = ( 366 | 64CD344A2577097500081827 /* StoryItemView.swift in Sources */, 367 | 64CD34502578470400081827 /* TabBarShape.swift in Sources */, 368 | 64CD3462257D799900081827 /* PostView.swift in Sources */, 369 | 64AACFA42582D672009F22E4 /* StoriesView.swift in Sources */, 370 | 64CD3465257D79C200081827 /* CustomNavigationView.swift in Sources */, 371 | 64CD345F257B06CF00081827 /* TabBarView.swift in Sources */, 372 | 64CD3458257AF71D00081827 /* ProfileView.swift in Sources */, 373 | 64CD345C257B06AA00081827 /* HomeView.swift in Sources */, 374 | 64CD343B2577041600081827 /* ContentView.swift in Sources */, 375 | 64CD34392577041600081827 /* InstagramRedesignConceptApp.swift in Sources */, 376 | 64CD3468257D7A8500081827 /* PostSocialView.swift in Sources */, 377 | ); 378 | runOnlyForDeploymentPostprocessing = 0; 379 | }; 380 | /* End PBXSourcesBuildPhase section */ 381 | 382 | /* Begin XCBuildConfiguration section */ 383 | 647CAB4F25803967008753EE /* Debug */ = { 384 | isa = XCBuildConfiguration; 385 | buildSettings = { 386 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 387 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 388 | CODE_SIGN_STYLE = Automatic; 389 | ENABLE_PREVIEWS = YES; 390 | INFOPLIST_FILE = iOS/Info.plist; 391 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 392 | LD_RUNPATH_SEARCH_PATHS = ( 393 | "$(inherited)", 394 | "@executable_path/Frameworks", 395 | ); 396 | PRODUCT_BUNDLE_IDENTIFIER = io.github.rphlfc.InstagramRedesignConceptMac; 397 | PRODUCT_NAME = InstagramRedesignConceptMac; 398 | SDKROOT = iphoneos; 399 | SWIFT_VERSION = 5.0; 400 | TARGETED_DEVICE_FAMILY = "1,2"; 401 | }; 402 | name = Debug; 403 | }; 404 | 647CAB5025803967008753EE /* Release */ = { 405 | isa = XCBuildConfiguration; 406 | buildSettings = { 407 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 408 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 409 | CODE_SIGN_STYLE = Automatic; 410 | ENABLE_PREVIEWS = YES; 411 | INFOPLIST_FILE = iOS/Info.plist; 412 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 413 | LD_RUNPATH_SEARCH_PATHS = ( 414 | "$(inherited)", 415 | "@executable_path/Frameworks", 416 | ); 417 | PRODUCT_BUNDLE_IDENTIFIER = io.github.rphlfc.InstagramRedesignConceptMac; 418 | PRODUCT_NAME = InstagramRedesignConceptMac; 419 | SDKROOT = iphoneos; 420 | SWIFT_VERSION = 5.0; 421 | TARGETED_DEVICE_FAMILY = "1,2"; 422 | VALIDATE_PRODUCT = YES; 423 | }; 424 | name = Release; 425 | }; 426 | 647CAB5125803967008753EE /* Debug */ = { 427 | isa = XCBuildConfiguration; 428 | buildSettings = { 429 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 430 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 431 | CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements; 432 | CODE_SIGN_STYLE = Automatic; 433 | COMBINE_HIDPI_IMAGES = YES; 434 | ENABLE_PREVIEWS = YES; 435 | INFOPLIST_FILE = macOS/Info.plist; 436 | LD_RUNPATH_SEARCH_PATHS = ( 437 | "$(inherited)", 438 | "@executable_path/../Frameworks", 439 | ); 440 | MACOSX_DEPLOYMENT_TARGET = 11.0; 441 | PRODUCT_BUNDLE_IDENTIFIER = io.github.rphlfc.InstagramRedesignConceptMac; 442 | PRODUCT_NAME = InstagramRedesignConceptMac; 443 | SDKROOT = macosx; 444 | SWIFT_VERSION = 5.0; 445 | }; 446 | name = Debug; 447 | }; 448 | 647CAB5225803967008753EE /* Release */ = { 449 | isa = XCBuildConfiguration; 450 | buildSettings = { 451 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 452 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 453 | CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements; 454 | CODE_SIGN_STYLE = Automatic; 455 | COMBINE_HIDPI_IMAGES = YES; 456 | ENABLE_PREVIEWS = YES; 457 | INFOPLIST_FILE = macOS/Info.plist; 458 | LD_RUNPATH_SEARCH_PATHS = ( 459 | "$(inherited)", 460 | "@executable_path/../Frameworks", 461 | ); 462 | MACOSX_DEPLOYMENT_TARGET = 11.0; 463 | PRODUCT_BUNDLE_IDENTIFIER = io.github.rphlfc.InstagramRedesignConceptMac; 464 | PRODUCT_NAME = InstagramRedesignConceptMac; 465 | SDKROOT = macosx; 466 | SWIFT_VERSION = 5.0; 467 | }; 468 | name = Release; 469 | }; 470 | 64CD34422577041900081827 /* Debug */ = { 471 | isa = XCBuildConfiguration; 472 | buildSettings = { 473 | ALWAYS_SEARCH_USER_PATHS = NO; 474 | CLANG_ANALYZER_NONNULL = YES; 475 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 476 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 477 | CLANG_CXX_LIBRARY = "libc++"; 478 | CLANG_ENABLE_MODULES = YES; 479 | CLANG_ENABLE_OBJC_ARC = YES; 480 | CLANG_ENABLE_OBJC_WEAK = YES; 481 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 482 | CLANG_WARN_BOOL_CONVERSION = YES; 483 | CLANG_WARN_COMMA = YES; 484 | CLANG_WARN_CONSTANT_CONVERSION = YES; 485 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 486 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 487 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 488 | CLANG_WARN_EMPTY_BODY = YES; 489 | CLANG_WARN_ENUM_CONVERSION = YES; 490 | CLANG_WARN_INFINITE_RECURSION = YES; 491 | CLANG_WARN_INT_CONVERSION = YES; 492 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 493 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 494 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 495 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 496 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 497 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 498 | CLANG_WARN_STRICT_PROTOTYPES = YES; 499 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 500 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 501 | CLANG_WARN_UNREACHABLE_CODE = YES; 502 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 503 | COPY_PHASE_STRIP = NO; 504 | DEBUG_INFORMATION_FORMAT = dwarf; 505 | ENABLE_STRICT_OBJC_MSGSEND = YES; 506 | ENABLE_TESTABILITY = YES; 507 | GCC_C_LANGUAGE_STANDARD = gnu11; 508 | GCC_DYNAMIC_NO_PIC = NO; 509 | GCC_NO_COMMON_BLOCKS = YES; 510 | GCC_OPTIMIZATION_LEVEL = 0; 511 | GCC_PREPROCESSOR_DEFINITIONS = ( 512 | "DEBUG=1", 513 | "$(inherited)", 514 | ); 515 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 516 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 517 | GCC_WARN_UNDECLARED_SELECTOR = YES; 518 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 519 | GCC_WARN_UNUSED_FUNCTION = YES; 520 | GCC_WARN_UNUSED_VARIABLE = YES; 521 | IPHONEOS_DEPLOYMENT_TARGET = 14.2; 522 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 523 | MTL_FAST_MATH = YES; 524 | ONLY_ACTIVE_ARCH = YES; 525 | SDKROOT = iphoneos; 526 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 527 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 528 | }; 529 | name = Debug; 530 | }; 531 | 64CD34432577041900081827 /* Release */ = { 532 | isa = XCBuildConfiguration; 533 | buildSettings = { 534 | ALWAYS_SEARCH_USER_PATHS = NO; 535 | CLANG_ANALYZER_NONNULL = YES; 536 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 537 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 538 | CLANG_CXX_LIBRARY = "libc++"; 539 | CLANG_ENABLE_MODULES = YES; 540 | CLANG_ENABLE_OBJC_ARC = YES; 541 | CLANG_ENABLE_OBJC_WEAK = YES; 542 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 543 | CLANG_WARN_BOOL_CONVERSION = YES; 544 | CLANG_WARN_COMMA = YES; 545 | CLANG_WARN_CONSTANT_CONVERSION = YES; 546 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 547 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 548 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 549 | CLANG_WARN_EMPTY_BODY = YES; 550 | CLANG_WARN_ENUM_CONVERSION = YES; 551 | CLANG_WARN_INFINITE_RECURSION = YES; 552 | CLANG_WARN_INT_CONVERSION = YES; 553 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 554 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 555 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 556 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 557 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 558 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 559 | CLANG_WARN_STRICT_PROTOTYPES = YES; 560 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 561 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 562 | CLANG_WARN_UNREACHABLE_CODE = YES; 563 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 564 | COPY_PHASE_STRIP = NO; 565 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 566 | ENABLE_NS_ASSERTIONS = NO; 567 | ENABLE_STRICT_OBJC_MSGSEND = YES; 568 | GCC_C_LANGUAGE_STANDARD = gnu11; 569 | GCC_NO_COMMON_BLOCKS = YES; 570 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 571 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 572 | GCC_WARN_UNDECLARED_SELECTOR = YES; 573 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 574 | GCC_WARN_UNUSED_FUNCTION = YES; 575 | GCC_WARN_UNUSED_VARIABLE = YES; 576 | IPHONEOS_DEPLOYMENT_TARGET = 14.2; 577 | MTL_ENABLE_DEBUG_INFO = NO; 578 | MTL_FAST_MATH = YES; 579 | SDKROOT = iphoneos; 580 | SWIFT_COMPILATION_MODE = wholemodule; 581 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 582 | VALIDATE_PRODUCT = YES; 583 | }; 584 | name = Release; 585 | }; 586 | 64CD34452577041900081827 /* Debug */ = { 587 | isa = XCBuildConfiguration; 588 | buildSettings = { 589 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 590 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 591 | CODE_SIGN_STYLE = Automatic; 592 | DEVELOPMENT_ASSET_PATHS = "\"InstagramRedesignConcept/Preview Content\""; 593 | ENABLE_PREVIEWS = YES; 594 | INFOPLIST_FILE = InstagramRedesignConcept/Info.plist; 595 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 596 | LD_RUNPATH_SEARCH_PATHS = ( 597 | "$(inherited)", 598 | "@executable_path/Frameworks", 599 | ); 600 | PRODUCT_BUNDLE_IDENTIFIER = io.github.rphlfc.InstagramRedesignConcept; 601 | PRODUCT_NAME = "$(TARGET_NAME)"; 602 | SWIFT_VERSION = 5.0; 603 | TARGETED_DEVICE_FAMILY = "1,2"; 604 | }; 605 | name = Debug; 606 | }; 607 | 64CD34462577041900081827 /* Release */ = { 608 | isa = XCBuildConfiguration; 609 | buildSettings = { 610 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 611 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 612 | CODE_SIGN_STYLE = Automatic; 613 | DEVELOPMENT_ASSET_PATHS = "\"InstagramRedesignConcept/Preview Content\""; 614 | ENABLE_PREVIEWS = YES; 615 | INFOPLIST_FILE = InstagramRedesignConcept/Info.plist; 616 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 617 | LD_RUNPATH_SEARCH_PATHS = ( 618 | "$(inherited)", 619 | "@executable_path/Frameworks", 620 | ); 621 | PRODUCT_BUNDLE_IDENTIFIER = io.github.rphlfc.InstagramRedesignConcept; 622 | PRODUCT_NAME = "$(TARGET_NAME)"; 623 | SWIFT_VERSION = 5.0; 624 | TARGETED_DEVICE_FAMILY = "1,2"; 625 | }; 626 | name = Release; 627 | }; 628 | /* End XCBuildConfiguration section */ 629 | 630 | /* Begin XCConfigurationList section */ 631 | 647CAB5325803967008753EE /* Build configuration list for PBXNativeTarget "InstagramRedesignConceptMac (iOS)" */ = { 632 | isa = XCConfigurationList; 633 | buildConfigurations = ( 634 | 647CAB4F25803967008753EE /* Debug */, 635 | 647CAB5025803967008753EE /* Release */, 636 | ); 637 | defaultConfigurationIsVisible = 0; 638 | defaultConfigurationName = Release; 639 | }; 640 | 647CAB5425803967008753EE /* Build configuration list for PBXNativeTarget "InstagramRedesignConceptMac (macOS)" */ = { 641 | isa = XCConfigurationList; 642 | buildConfigurations = ( 643 | 647CAB5125803967008753EE /* Debug */, 644 | 647CAB5225803967008753EE /* Release */, 645 | ); 646 | defaultConfigurationIsVisible = 0; 647 | defaultConfigurationName = Release; 648 | }; 649 | 64CD34302577041600081827 /* Build configuration list for PBXProject "InstagramRedesignConcept" */ = { 650 | isa = XCConfigurationList; 651 | buildConfigurations = ( 652 | 64CD34422577041900081827 /* Debug */, 653 | 64CD34432577041900081827 /* Release */, 654 | ); 655 | defaultConfigurationIsVisible = 0; 656 | defaultConfigurationName = Release; 657 | }; 658 | 64CD34442577041900081827 /* Build configuration list for PBXNativeTarget "InstagramRedesignConcept" */ = { 659 | isa = XCConfigurationList; 660 | buildConfigurations = ( 661 | 64CD34452577041900081827 /* Debug */, 662 | 64CD34462577041900081827 /* Release */, 663 | ); 664 | defaultConfigurationIsVisible = 0; 665 | defaultConfigurationName = Release; 666 | }; 667 | /* End XCConfigurationList section */ 668 | }; 669 | rootObject = 64CD342D2577041600081827 /* Project object */; 670 | } 671 | -------------------------------------------------------------------------------- /InstagramRedesignConcept.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /InstagramRedesignConcept.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /InstagramRedesignConcept.xcodeproj/xcuserdata/raphael.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /InstagramRedesignConcept.xcodeproj/xcuserdata/raphael.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | InstagramRedesignConcept.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 1 11 | 12 | InstagramRedesignConceptMac (iOS).xcscheme_^#shared#^_ 13 | 14 | orderHint 15 | 0 16 | 17 | InstagramRedesignConceptMac (macOS).xcscheme_^#shared#^_ 18 | 19 | orderHint 20 | 2 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "scale" : "1x", 46 | "size" : "20x20" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "scale" : "2x", 51 | "size" : "20x20" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "scale" : "1x", 56 | "size" : "29x29" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "scale" : "2x", 61 | "size" : "29x29" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "scale" : "1x", 66 | "size" : "40x40" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "scale" : "2x", 71 | "size" : "40x40" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "scale" : "1x", 76 | "size" : "76x76" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "scale" : "2x", 81 | "size" : "76x76" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "scale" : "2x", 86 | "size" : "83.5x83.5" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "scale" : "1x", 91 | "size" : "1024x1024" 92 | } 93 | ], 94 | "info" : { 95 | "author" : "xcode", 96 | "version" : 1 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/accent.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "display-p3", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.000", 9 | "green" : "0.000", 10 | "red" : "0.000" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "display-p3", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "1.000", 27 | "green" : "1.000", 28 | "red" : "1.000" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/background.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "display-p3", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.961", 9 | "green" : "0.941", 10 | "red" : "0.941" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "display-p3", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.208", 27 | "green" : "0.164", 28 | "red" : "0.158" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/foreground.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "display-p3", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "1.000", 9 | "green" : "1.000", 10 | "red" : "1.000" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "display-p3", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.314", 27 | "green" : "0.250", 28 | "red" : "0.240" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/instagram.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "instagram.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | }, 21 | "properties" : { 22 | "template-rendering-intent" : "template" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/instagram.imageset/instagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rphlfc/InstagramRedesignConcept/db4455e532c754d70b46b458a0090a8e1acb90c6/InstagramRedesignConcept/Assets.xcassets/instagram.imageset/instagram.png -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/post1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "dieter-schafer-b6NiWBQ8kno-unsplash.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/post1.imageset/dieter-schafer-b6NiWBQ8kno-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rphlfc/InstagramRedesignConcept/db4455e532c754d70b46b458a0090a8e1acb90c6/InstagramRedesignConcept/Assets.xcassets/post1.imageset/dieter-schafer-b6NiWBQ8kno-unsplash.jpg -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/post2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "photo-1526819945808-268890ae8b32.jpeg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/post2.imageset/photo-1526819945808-268890ae8b32.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rphlfc/InstagramRedesignConcept/db4455e532c754d70b46b458a0090a8e1acb90c6/InstagramRedesignConcept/Assets.xcassets/post2.imageset/photo-1526819945808-268890ae8b32.jpeg -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/post3.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "guilherme-stecanella-587579-unsplash.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/post3.imageset/guilherme-stecanella-587579-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rphlfc/InstagramRedesignConcept/db4455e532c754d70b46b458a0090a8e1acb90c6/InstagramRedesignConcept/Assets.xcassets/post3.imageset/guilherme-stecanella-587579-unsplash.jpg -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/post4.imageset/596ca20ac8283-royalty-free-thumbnail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rphlfc/InstagramRedesignConcept/db4455e532c754d70b46b458a0090a8e1acb90c6/InstagramRedesignConcept/Assets.xcassets/post4.imageset/596ca20ac8283-royalty-free-thumbnail.jpg -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/post4.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "596ca20ac8283-royalty-free-thumbnail.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/post5.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "travel-lead.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/post5.imageset/travel-lead.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rphlfc/InstagramRedesignConcept/db4455e532c754d70b46b458a0090a8e1acb90c6/InstagramRedesignConcept/Assets.xcassets/post5.imageset/travel-lead.jpg -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/profile.imageset/554a6fddfec6ce4b4a51b959627336dc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rphlfc/InstagramRedesignConcept/db4455e532c754d70b46b458a0090a8e1acb90c6/InstagramRedesignConcept/Assets.xcassets/profile.imageset/554a6fddfec6ce4b4a51b959627336dc.jpg -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/profile.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "554a6fddfec6ce4b4a51b959627336dc.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/profile1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "profile1.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/profile1.imageset/profile1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rphlfc/InstagramRedesignConcept/db4455e532c754d70b46b458a0090a8e1acb90c6/InstagramRedesignConcept/Assets.xcassets/profile1.imageset/profile1.jpg -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/profile2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "profile2.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/profile2.imageset/profile2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rphlfc/InstagramRedesignConcept/db4455e532c754d70b46b458a0090a8e1acb90c6/InstagramRedesignConcept/Assets.xcassets/profile2.imageset/profile2.jpg -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/profile3.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "profile3.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/profile3.imageset/profile3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rphlfc/InstagramRedesignConcept/db4455e532c754d70b46b458a0090a8e1acb90c6/InstagramRedesignConcept/Assets.xcassets/profile3.imageset/profile3.jpg -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/profile4.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "profile4.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/profile4.imageset/profile4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rphlfc/InstagramRedesignConcept/db4455e532c754d70b46b458a0090a8e1acb90c6/InstagramRedesignConcept/Assets.xcassets/profile4.imageset/profile4.jpg -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/profile5.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "profile5.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/profile5.imageset/profile5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rphlfc/InstagramRedesignConcept/db4455e532c754d70b46b458a0090a8e1acb90c6/InstagramRedesignConcept/Assets.xcassets/profile5.imageset/profile5.jpg -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/profile6.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "profile6.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Assets.xcassets/profile6.imageset/profile6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rphlfc/InstagramRedesignConcept/db4455e532c754d70b46b458a0090a8e1acb90c6/InstagramRedesignConcept/Assets.xcassets/profile6.imageset/profile6.jpg -------------------------------------------------------------------------------- /InstagramRedesignConcept/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UIApplicationSceneManifest 24 | 25 | UIApplicationSupportsMultipleScenes 26 | 27 | 28 | UIApplicationSupportsIndirectInputEvents 29 | 30 | UILaunchScreen 31 | 32 | UIRequiredDeviceCapabilities 33 | 34 | armv7 35 | 36 | UISupportedInterfaceOrientations 37 | 38 | UIInterfaceOrientationPortrait 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UISupportedInterfaceOrientations~ipad 43 | 44 | UIInterfaceOrientationPortrait 45 | UIInterfaceOrientationPortraitUpsideDown 46 | UIInterfaceOrientationLandscapeLeft 47 | UIInterfaceOrientationLandscapeRight 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /InstagramRedesignConcept/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Instagram Redesign Concept 2 | Encontrei esse projeto de [redesign do Instagram no Dribbble](https://dribbble.com/overlapstudio/projects/1355527-Instagram-Redesign). O legal desse projeto é que tem as telas para desktop, mobile, modo escuro e diversas interações. A implementação é com SwiftUI. 3 | 4 | ## Screenshots 5 |

6 |   7 |   8 |   9 |   10 |   11 |   12 |

13 | 14 | ## Vídeos 15 | - [Vídeo no YouTube - Parte 1](https://youtu.be/LNmeUq1-Zi8) 16 | - [Vídeo no YouTube - Parte 2](https://youtu.be/ZlqoeZq5Omw) 17 | - [Vídeo no YouTube - Parte 3](https://youtu.be/Y2VCG95qktc) 18 | - [Vídeo no YouTube - Parte 4](https://youtu.be/cThmVGdr35E) 19 | - [Vídeo no YouTube - Parte 5 - Desktop](https://youtu.be/Z5uLcAQZj6s) 20 | - [Vídeo no YouTube - Parte 6 - Desktop](https://youtu.be/4gMlnkQBCDE) 21 | 22 | ## Requisitos 23 | - iOS 14 24 | - SwiftUI 25 | - Xcode 12 26 | 27 | ## Meta 28 | - Github: [https://github.com/rphlfc](https://github.com/rphlfc) 29 | - Instagram: [https://www.instagram.com/rphlfc.dev](https://www.instagram.com/rphlfc.dev) 30 | - LinkedIn: [http://www.linkedin.com/in/rphlfc](http://www.linkedin.com/in/rphlfc) 31 | - Twitter: [https://twitter.com/rphlfc](https://twitter.com/rphlfc) 32 | - Website: [https://rphlfc.github.io](https://rphlfc.github.io) 33 | - Youtube: [https://www.youtube.com/channel/UC7UXnCqiqsV4R9lCwKh-rwg](https://www.youtube.com/channel/UC7UXnCqiqsV4R9lCwKh-rwg) 34 | -------------------------------------------------------------------------------- /Shared/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Shared/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "scale" : "1x", 46 | "size" : "20x20" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "scale" : "2x", 51 | "size" : "20x20" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "scale" : "1x", 56 | "size" : "29x29" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "scale" : "2x", 61 | "size" : "29x29" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "scale" : "1x", 66 | "size" : "40x40" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "scale" : "2x", 71 | "size" : "40x40" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "scale" : "1x", 76 | "size" : "76x76" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "scale" : "2x", 81 | "size" : "76x76" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "scale" : "2x", 86 | "size" : "83.5x83.5" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "scale" : "1x", 91 | "size" : "1024x1024" 92 | }, 93 | { 94 | "idiom" : "mac", 95 | "scale" : "1x", 96 | "size" : "16x16" 97 | }, 98 | { 99 | "idiom" : "mac", 100 | "scale" : "2x", 101 | "size" : "16x16" 102 | }, 103 | { 104 | "idiom" : "mac", 105 | "scale" : "1x", 106 | "size" : "32x32" 107 | }, 108 | { 109 | "idiom" : "mac", 110 | "scale" : "2x", 111 | "size" : "32x32" 112 | }, 113 | { 114 | "idiom" : "mac", 115 | "scale" : "1x", 116 | "size" : "128x128" 117 | }, 118 | { 119 | "idiom" : "mac", 120 | "scale" : "2x", 121 | "size" : "128x128" 122 | }, 123 | { 124 | "idiom" : "mac", 125 | "scale" : "1x", 126 | "size" : "256x256" 127 | }, 128 | { 129 | "idiom" : "mac", 130 | "scale" : "2x", 131 | "size" : "256x256" 132 | }, 133 | { 134 | "idiom" : "mac", 135 | "scale" : "1x", 136 | "size" : "512x512" 137 | }, 138 | { 139 | "idiom" : "mac", 140 | "scale" : "2x", 141 | "size" : "512x512" 142 | } 143 | ], 144 | "info" : { 145 | "author" : "xcode", 146 | "version" : 1 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /Shared/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Shared/ContentView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContentView.swift 3 | // Shared 4 | // 5 | // Created by Raphael Cerqueira on 08/12/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct ContentView: View { 11 | var body: some View { 12 | HomeView() 13 | .preferredColorScheme(.light) 14 | } 15 | } 16 | 17 | struct ContentView_Previews: PreviewProvider { 18 | static var previews: some View { 19 | ContentView() 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Shared/InstagramRedesignConceptMacApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InstagramRedesignConceptMacApp.swift 3 | // Shared 4 | // 5 | // Created by Raphael Cerqueira on 08/12/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct InstagramRedesignConceptMacApp: App { 12 | var body: some Scene { 13 | WindowGroup { 14 | ContentView() 15 | } 16 | .windowStyle(HiddenTitleBarWindowStyle()) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Shared/View/StoriesView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StoriesView.swift 3 | // InstagramRedesignConcept 4 | // 5 | // Created by Raphael Cerqueira on 10/12/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct StoriesView: View { 11 | var body: some View { 12 | ScrollView(.horizontal, showsIndicators: false) { 13 | HStack(spacing: 15) { 14 | Button(action: {}, label: { 15 | ZStack { 16 | Image("profile") 17 | .resizable() 18 | .scaledToFill() 19 | .frame(width: 60, height: 60) 20 | .clipShape(Circle()) 21 | 22 | Circle() 23 | .foregroundColor(Color(#colorLiteral(red: 0.2529234886, green: 0.3721377254, blue: 0.9311061502, alpha: 1)).opacity(0.7)) 24 | .frame(width: 60, height: 60) 25 | .padding(8) 26 | .background( 27 | Circle() 28 | .strokeBorder(Color(#colorLiteral(red: 0.2529234886, green: 0.3721377254, blue: 0.9311061502, alpha: 1)), lineWidth: 3) 29 | ) 30 | 31 | Image(systemName: "plus") 32 | .font(.system(size: 24)) 33 | .foregroundColor(.white) 34 | 35 | } 36 | .padding(3) 37 | .clipShape(Circle()) 38 | }) 39 | .buttonStyle(PlainButtonStyle()) 40 | 41 | ForEach(storyItems) { item in 42 | StoryItemView(item: item) 43 | } 44 | } 45 | .padding(.horizontal) 46 | } 47 | } 48 | } 49 | 50 | struct StoriesView_Previews: PreviewProvider { 51 | static var previews: some View { 52 | StoriesView() 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Shared/View/StoryItemView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StoryItemView.swift 3 | // InstagramRedesignConcept 4 | // 5 | // Created by Raphael Cerqueira on 01/12/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct StoryItemView: View { 11 | var item: StoryItem 12 | var size: CGFloat = 60 13 | 14 | var body: some View { 15 | Button(action: {}, label: { 16 | Image(item.image) 17 | .resizable() 18 | .scaledToFill() 19 | .frame(width: size, height: size) 20 | .font(.system(size: 18, weight: .bold)) 21 | .clipShape(Circle()) 22 | .padding(6) 23 | .background( 24 | Circle() 25 | .strokeBorder(LinearGradient(gradient: Gradient(colors: [Color(#colorLiteral(red: 0.9868244529, green: 0.5855258107, blue: 0.09304409474, alpha: 1)), Color(#colorLiteral(red: 0.7633709311, green: 0.1634711623, blue: 0.7447224855, alpha: 1))]), startPoint: .topTrailing, endPoint: .bottomLeading), lineWidth: item.new ? 3 : 0) 26 | .foregroundColor(Color(#colorLiteral(red: 0.9389725327, green: 0.9531454444, blue: 0.9702789187, alpha: 1))) 27 | ) 28 | }) 29 | .buttonStyle(PlainButtonStyle()) 30 | } 31 | } 32 | 33 | struct StoryItem: Identifiable { 34 | let id = UUID().uuidString 35 | var image: String 36 | var new: Bool 37 | } 38 | 39 | let storyItems = [ 40 | StoryItem(image: "profile1", new: false), 41 | StoryItem(image: "profile2", new: true), 42 | StoryItem(image: "profile3", new: true), 43 | StoryItem(image: "profile4", new: false), 44 | StoryItem(image: "profile5", new: true), 45 | StoryItem(image: "profile1", new: false), 46 | StoryItem(image: "profile2", new: true), 47 | StoryItem(image: "profile3", new: true), 48 | StoryItem(image: "profile4", new: false), 49 | StoryItem(image: "profile5", new: true) 50 | ] 51 | 52 | struct StoryItemView_Previews: PreviewProvider { 53 | static var previews: some View { 54 | StoryItemView(item: storyItems[0]) 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /iOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UIApplicationSceneManifest 24 | 25 | UIApplicationSupportsMultipleScenes 26 | 27 | 28 | UIApplicationSupportsIndirectInputEvents 29 | 30 | UILaunchScreen 31 | 32 | UIRequiredDeviceCapabilities 33 | 34 | armv7 35 | 36 | UISupportedInterfaceOrientations 37 | 38 | UIInterfaceOrientationPortrait 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UISupportedInterfaceOrientations~ipad 43 | 44 | UIInterfaceOrientationPortrait 45 | UIInterfaceOrientationPortraitUpsideDown 46 | UIInterfaceOrientationLandscapeLeft 47 | UIInterfaceOrientationLandscapeRight 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /iOS/View/ContentView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContentView.swift 3 | // InstagramRedesignConcept 4 | // 5 | // Created by Raphael Cerqueira on 01/12/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct ContentView: View { 11 | @State var selectedTab = 0 12 | @State var showPostView = false 13 | @Namespace var animation 14 | 15 | var body: some View { 16 | ZStack { 17 | if selectedTab == 0 { 18 | HomeView(selectedTab: $selectedTab, showPostView: $showPostView, animation: animation) 19 | } else if selectedTab == 3 { 20 | ProfileView(selectedTab: $selectedTab) 21 | } 22 | 23 | if showPostView { 24 | PostView(showPostView: $showPostView, animation: animation) 25 | } 26 | } 27 | } 28 | } 29 | 30 | struct ContentView_Previews: PreviewProvider { 31 | static var previews: some View { 32 | Group { 33 | ContentView() 34 | .preferredColorScheme(.light) 35 | 36 | ContentView() 37 | .preferredColorScheme(.dark) 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /iOS/View/CustomNavigationView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CustomNavigationView.swift 3 | // InstagramRedesignConcept 4 | // 5 | // Created by Raphael Cerqueira on 06/12/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct CustomNavigationView: View { 11 | @Binding var showPostView: Bool 12 | 13 | var body: some View { 14 | HStack { 15 | Button(action: { 16 | withAnimation { 17 | showPostView.toggle() 18 | } 19 | }, label: { 20 | Image(systemName: "arrow.left") 21 | .font(.system(size: 19)) 22 | .foregroundColor(Color("accent")) 23 | }) 24 | 25 | Spacer() 26 | 27 | Text("Kate Lingard") 28 | .font(.system(size: 19, weight: .bold)) 29 | .foregroundColor(Color("accent")) 30 | 31 | Spacer() 32 | 33 | Button(action: /*@START_MENU_TOKEN@*/{}/*@END_MENU_TOKEN@*/, label: { 34 | Image(systemName: "ellipsis") 35 | .font(.system(size: 19)) 36 | .foregroundColor(Color("accent")) 37 | }) 38 | } 39 | } 40 | } 41 | 42 | struct CustomNavigationView_Previews: PreviewProvider { 43 | static var previews: some View { 44 | CustomNavigationView(showPostView: .constant(false)) 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /iOS/View/HomeView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HomeView.swift 3 | // InstagramRedesignConcept 4 | // 5 | // Created by Raphael Cerqueira on 04/12/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct HomeView: View { 11 | @Binding var selectedTab: Int 12 | @Binding var showPostView: Bool 13 | var animation: Namespace.ID 14 | 15 | var body: some View { 16 | ZStack { 17 | Color("foreground") 18 | .ignoresSafeArea(.all, edges: .top) 19 | 20 | VStack(spacing: 0) { 21 | VStack { 22 | ZStack { 23 | HStack(spacing: 15) { 24 | Button(action: {}, label: { 25 | Image(systemName: "camera") 26 | .font(.system(size: 28)) 27 | .foregroundColor(Color("accent")) 28 | }) 29 | 30 | Spacer() 31 | 32 | Button(action: {}, label: { 33 | Image(systemName: "tv") 34 | .font(.system(size: 28)) 35 | .foregroundColor(Color(#colorLiteral(red: 0.9868244529, green: 0.5855258107, blue: 0.09304409474, alpha: 1))) 36 | }) 37 | 38 | Button(action: {}, label: { 39 | Image(systemName: "paperplane") 40 | .font(.system(size: 28)) 41 | .foregroundColor(Color(#colorLiteral(red: 0.7633709311, green: 0.1634711623, blue: 0.7447224855, alpha: 1))) 42 | }) 43 | } 44 | 45 | Image("instagram") 46 | .resizable() 47 | .scaledToFit() 48 | .frame(width: 130) 49 | .foregroundColor(Color("accent")) 50 | } 51 | .padding(.horizontal) 52 | 53 | StoriesView() 54 | .padding(.vertical) 55 | } 56 | .background(Color("foreground")) 57 | 58 | ScrollView(.vertical, showsIndicators: false) { 59 | VStack { 60 | VStack(spacing: 15) { 61 | ForEach(0 ..< 5) { item in 62 | VStack { 63 | HStack { 64 | Image("profile1") 65 | .resizable() 66 | .scaledToFill() 67 | .frame(width: 60, height: 60) 68 | .clipShape(Circle()) 69 | 70 | Text("Jennifer_Cole") 71 | .font(.system(size: 19, weight: .bold)) 72 | 73 | Spacer() 74 | 75 | Button(action: {}, label: { 76 | Image(systemName: "ellipsis") 77 | .font(.system(size: 21)) 78 | .foregroundColor(.gray) 79 | }) 80 | } 81 | 82 | Image("post1") 83 | .resizable() 84 | .scaledToFill() 85 | .frame(height: UIScreen.main.bounds.width - 60) 86 | .cornerRadius(30) 87 | .onTapGesture { 88 | withAnimation(.spring()) { 89 | showPostView.toggle() 90 | } 91 | } 92 | .zIndex(1) 93 | .matchedGeometryEffect(id: "post", in: animation, isSource: false) 94 | 95 | PostSocialView() 96 | .padding(.top) 97 | } 98 | .padding() 99 | .background(Color("foreground")) 100 | .cornerRadius(30) 101 | } 102 | } 103 | .padding() 104 | 105 | Spacer(minLength: 120) 106 | } 107 | .background(Color("background")) 108 | } 109 | } 110 | 111 | TabBarView(selectedIndex: $selectedTab) 112 | } 113 | } 114 | } 115 | 116 | //struct HomeView_Previews: PreviewProvider { 117 | // static var previews: some View { 118 | // HomeView(selectedTab: .constant(0), showPostView: .constant(false)) 119 | // } 120 | //} 121 | -------------------------------------------------------------------------------- /iOS/View/InstagramRedesignConceptApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InstagramRedesignConceptApp.swift 3 | // InstagramRedesignConcept 4 | // 5 | // Created by Raphael Cerqueira on 01/12/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct InstagramRedesignConceptApp: App { 12 | var body: some Scene { 13 | WindowGroup { 14 | ContentView() 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /iOS/View/PostSocialView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PostSocialView.swift 3 | // InstagramRedesignConcept 4 | // 5 | // Created by Raphael Cerqueira on 06/12/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct PostSocialView: View { 11 | var body: some View { 12 | HStack { 13 | Button(action: {}, label: { 14 | HStack { 15 | Image(systemName: "heart.fill") 16 | .font(.system(size: 26)) 17 | .foregroundColor(Color(#colorLiteral(red: 0.9346720576, green: 0.3965729177, blue: 0.2802894711, alpha: 1))) 18 | 19 | Text("1, 242") 20 | .font(.system(size: 23, weight: .medium)) 21 | .foregroundColor(Color("accent")) 22 | } 23 | }) 24 | 25 | Button(action: {}, label: { 26 | HStack { 27 | Image(systemName: "bubble.left") 28 | .font(.system(size: 26)) 29 | .foregroundColor(Color("accent")) 30 | 31 | Text("24") 32 | .font(.system(size: 23, weight: .medium)) 33 | .foregroundColor(Color("accent")) 34 | } 35 | }) 36 | .padding(.leading, 20) 37 | 38 | Spacer() 39 | 40 | Button(action: {}, label: { 41 | Image(systemName: "bookmark") 42 | .font(.system(size: 26)) 43 | .foregroundColor(Color("accent")) 44 | }) 45 | } 46 | } 47 | } 48 | 49 | struct PostSocialView_Previews: PreviewProvider { 50 | static var previews: some View { 51 | PostSocialView() 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /iOS/View/PostView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PostView.swift 3 | // InstagramRedesignConcept 4 | // 5 | // Created by Raphael Cerqueira on 06/12/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct PostView: View { 11 | @State var comment = "" 12 | @Binding var showPostView: Bool 13 | var animation: Namespace.ID 14 | 15 | var body: some View { 16 | ZStack(alignment: .bottom) { 17 | Color("foreground") 18 | .ignoresSafeArea(.all, edges: .vertical) 19 | 20 | VStack(alignment: .leading) { 21 | CustomNavigationView(showPostView: $showPostView) 22 | .zIndex(2) 23 | 24 | Image("post1") 25 | .resizable() 26 | .scaledToFill() 27 | .frame(height: UIScreen.main.bounds.width - 60) 28 | .cornerRadius(30) 29 | .padding(.top) 30 | .matchedGeometryEffect(id: "post", in: animation) 31 | .zIndex(1) 32 | 33 | PostSocialView() 34 | .padding(.top) 35 | 36 | Text("Tiffany Jones: Freedom #holidays #greece #sea #travel #sunshine") 37 | .padding(.top) 38 | 39 | Text("12 mins ago") 40 | .padding(.top) 41 | .foregroundColor(.gray) 42 | 43 | Divider() 44 | 45 | ScrollView(.vertical, showsIndicators: false) { 46 | ForEach(0 ..< 5) { item in 47 | CommentView() 48 | .padding(.vertical) 49 | } 50 | } 51 | 52 | Spacer() 53 | } 54 | .padding(.horizontal) 55 | .background(Color("foreground")) 56 | 57 | HStack { 58 | RoundedRectangle(cornerRadius: 60) 59 | .frame(height: 60) 60 | .foregroundColor(Color("background")) 61 | .overlay( 62 | HStack { 63 | Image("profile") 64 | .resizable() 65 | .scaledToFill() 66 | .frame(width: 40, height: 40) 67 | .clipShape(Circle()) 68 | .padding(.horizontal) 69 | 70 | TextField("Enter your comment", text: $comment) 71 | } 72 | ) 73 | .padding(.top) 74 | } 75 | .background(Color("foreground")) 76 | .padding(.horizontal) 77 | } 78 | } 79 | } 80 | 81 | struct CommentView: View { 82 | var body: some View { 83 | HStack(alignment: .top) { 84 | Image("profile") 85 | .resizable() 86 | .scaledToFill() 87 | .frame(width: 50, height: 50) 88 | .clipShape(Circle()) 89 | 90 | VStack(alignment: .leading, spacing: 8) { 91 | Text("@YourMartin") 92 | .foregroundColor(.gray) 93 | 94 | Text("Amazing view! Regards from the Maldives! 🌴🍹") 95 | .foregroundColor(Color("accent")) 96 | } 97 | } 98 | } 99 | } 100 | 101 | //struct PostView_Previews: PreviewProvider { 102 | // static var previews: some View { 103 | // Group { 104 | // PostView(showPostView: .constant(false)) 105 | // .preferredColorScheme(.light) 106 | // 107 | // PostView(showPostView: .constant(false)) 108 | // .preferredColorScheme(.dark) 109 | // } 110 | // } 111 | //} 112 | -------------------------------------------------------------------------------- /iOS/View/ProfileView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ProfileView.swift 3 | // InstagramRedesignConcept 4 | // 5 | // Created by Raphael Cerqueira on 04/12/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct ProfileView: View { 11 | let gridItemLayout = [ 12 | GridItem(.flexible(minimum: 40), spacing: 15), 13 | GridItem(.flexible(minimum: 40), spacing: 15), 14 | ] 15 | 16 | let images = ["post2", "post3", "post4", "post5"] 17 | 18 | @Binding var selectedTab: Int 19 | 20 | var body: some View { 21 | ZStack { 22 | Color("background") 23 | 24 | VStack(spacing: 0) { 25 | VStack { 26 | CustomNavigationView(showPostView: .constant(true)) 27 | .padding(.horizontal) 28 | .padding(.top, 44) 29 | 30 | StoryItemView(item: StoryItem(image: "profile", new: true)) 31 | .padding() 32 | 33 | Text("Kate Lingard") 34 | .font(.system(size: 29, weight: .semibold)) 35 | .foregroundColor(Color("accent")) 36 | 37 | Text("🤑 I love my life 🥰") 38 | .font(.system(size: 17, weight: .medium)) 39 | .foregroundColor(Color("accent")) 40 | .padding() 41 | 42 | HStack(spacing: 20) { 43 | VStack(spacing: 4) { 44 | Text("46") 45 | .font(.system(size: 17, weight: .bold)) 46 | .foregroundColor(Color("accent")) 47 | 48 | Text("Posts") 49 | .font(.system(size: 15)) 50 | .foregroundColor(Color.gray) 51 | } 52 | 53 | Divider() 54 | .frame(height: 40) 55 | 56 | VStack(spacing: 4) { 57 | Text("2,823") 58 | .font(.system(size: 17, weight: .bold)) 59 | .foregroundColor(Color("accent")) 60 | 61 | Text("Followers") 62 | .font(.system(size: 15)) 63 | .foregroundColor(Color.gray) 64 | } 65 | 66 | Divider() 67 | .frame(height: 40) 68 | 69 | VStack(spacing: 4) { 70 | Text("526") 71 | .font(.system(size: 17, weight: .bold)) 72 | .foregroundColor(Color("accent")) 73 | 74 | Text("Following") 75 | .font(.system(size: 15)) 76 | .foregroundColor(Color.gray) 77 | } 78 | } 79 | .frame(height: 70) 80 | 81 | HStack { 82 | Button(action: {}, label: { 83 | Text("Follow") 84 | .font(.system(size: 17, weight: .semibold)) 85 | .foregroundColor(.white) 86 | }) 87 | .frame(width: 130, height: 44) 88 | .background(LinearGradient(gradient: Gradient(colors: [Color(#colorLiteral(red: 0.9803691506, green: 0.6443859935, blue: 0.2819789648, alpha: 1)), Color(#colorLiteral(red: 0.89657408, green: 0.2502866685, blue: 0.409398675, alpha: 1))]), startPoint: .bottomLeading, endPoint: .topTrailing)) 89 | .cornerRadius(15) 90 | 91 | Button(action: {}, label: { 92 | Image(systemName: "paperplane") 93 | .font(.system(size: 17, weight: .semibold)) 94 | .foregroundColor(.black) 95 | }) 96 | .frame(width: 50, height: 44) 97 | .background(Color(#colorLiteral(red: 0.9251086116, green: 0.9291313291, blue: 0.9552046657, alpha: 1))) 98 | .cornerRadius(15) 99 | } 100 | .padding(.bottom, 30) 101 | } 102 | .background(Color("foreground")) 103 | .cornerRadius(40) 104 | .ignoresSafeArea(.container, edges: .top) 105 | 106 | ScrollView(.vertical, showsIndicators: false) { 107 | LazyVGrid(columns: gridItemLayout, spacing: 15, content: { 108 | ForEach(images, id: \.self) { item in 109 | Image(item) 110 | .resizable() 111 | .scaledToFill() 112 | .frame(minWidth: 0, maxWidth: .infinity) 113 | .aspectRatio(1, contentMode: .fill) 114 | .cornerRadius(30) 115 | } 116 | }) 117 | .padding(.horizontal) 118 | .padding(.bottom, 50) 119 | } 120 | .offset(y: -25) 121 | 122 | Spacer() 123 | } 124 | 125 | TabBarView(selectedIndex: $selectedTab) 126 | } 127 | } 128 | } 129 | 130 | struct ProfileView_Previews: PreviewProvider { 131 | static var previews: some View { 132 | ProfileView(selectedTab: .constant(3)) 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /iOS/View/TabBarShape.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TabBarShape.swift 3 | // InstagramRedesignConcept 4 | // 5 | // Created by Raphael Cerqueira on 02/12/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct TabBarShape: Shape { 11 | func path(in rect: CGRect) -> Path { 12 | var path = Path() 13 | 14 | let widthFactor = rect.maxX / 6 15 | let widthFactorTimesCount = widthFactor * 3 16 | 17 | path.move(to: CGPoint(x: rect.minX, y: rect.midY)) 18 | path.addLine(to: CGPoint(x: rect.minX, y: rect.maxY)) 19 | path.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY)) 20 | path.addLine(to: CGPoint(x: rect.maxX, y: rect.midY)) 21 | 22 | path.addLine(to: CGPoint(x: widthFactorTimesCount + (1.5 * widthFactor), y: rect.midY)) 23 | 24 | path.addCurve(to: CGPoint(x: widthFactorTimesCount, y: rect.minY + 50), 25 | control1: CGPoint(x: widthFactorTimesCount + 40, y: rect.midY), 26 | control2: CGPoint(x: widthFactorTimesCount + 40, y: rect.minY + 50)) 27 | 28 | path.addCurve(to: CGPoint(x: widthFactorTimesCount - (1.5 * widthFactor), y: rect.midY), 29 | control1: CGPoint(x: widthFactorTimesCount - 40, y: rect.minY + 50), 30 | control2: CGPoint(x: widthFactorTimesCount - 40, y: rect.midY)) 31 | 32 | path.addLine(to: CGPoint(x: rect.maxX - widthFactorTimesCount, y: rect.midY)) 33 | 34 | return path 35 | } 36 | } 37 | 38 | struct TabBarShape_Previews: PreviewProvider { 39 | static var previews: some View { 40 | TabBarShape() 41 | .frame(height: 200) 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /iOS/View/TabBarView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TabBarView.swift 3 | // InstagramRedesignConcept 4 | // 5 | // Created by Raphael Cerqueira on 04/12/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct TabBarView: View { 11 | @Binding var selectedIndex: Int 12 | 13 | var body: some View { 14 | VStack { 15 | Spacer() 16 | 17 | ZStack(alignment: .bottom) { 18 | TabBarShape() 19 | .foregroundColor(Color("foreground")) 20 | .frame(width: UIScreen.main.bounds.width, height: 200) 21 | .shadow(color: Color.black.opacity(0.1), radius: 7, x: 0.0, y: 0.0) 22 | 23 | HStack { 24 | Button(action: { 25 | selectedIndex = 0 26 | }, label: { 27 | Image(systemName: selectedIndex == 0 ? "house.fill" : "house") 28 | .font(.system(size: 28)) 29 | .foregroundColor(Color("accent")) 30 | }) 31 | 32 | Spacer() 33 | 34 | Button(action: { 35 | selectedIndex = 1 36 | }, label: { 37 | Image(systemName: selectedIndex == 1 ? "magnifyingglass" : "magnifyingglass") 38 | .font(.system(size: 28)) 39 | .foregroundColor(Color("accent")) 40 | }) 41 | 42 | Spacer() 43 | 44 | Button(action: { 45 | 46 | }, label: { 47 | Image(systemName: "plus") 48 | .font(.system(size: 32, weight: .light)) 49 | .foregroundColor(.white) 50 | 51 | }) 52 | .frame(width: 65, height: 65) 53 | .background(LinearGradient(gradient: Gradient(colors: [Color(#colorLiteral(red: 0.9803691506, green: 0.6443859935, blue: 0.2819789648, alpha: 1)), Color(#colorLiteral(red: 0.8927131891, green: 0.2405647933, blue: 0.4056327939, alpha: 1))]), startPoint: .bottomLeading, endPoint: .topTrailing)) 54 | .clipShape(Circle()) 55 | .offset(y: -50) 56 | 57 | Spacer() 58 | 59 | Button(action: { 60 | selectedIndex = 2 61 | }, label: { 62 | Image(systemName: selectedIndex == 2 ? "heart.fill" : "heart") 63 | .font(.system(size: 28)) 64 | .foregroundColor(Color("accent")) 65 | }) 66 | 67 | Spacer() 68 | 69 | Button(action: { 70 | selectedIndex = 3 71 | }, label: { 72 | Image(systemName: selectedIndex == 3 ? "person.fill" : "person") 73 | .font(.system(size: 28)) 74 | .foregroundColor(Color("accent")) 75 | }) 76 | } 77 | .padding(.horizontal) 78 | .padding(.bottom) 79 | } 80 | } 81 | .ignoresSafeArea(.all, edges: .bottom) 82 | } 83 | } 84 | 85 | struct TabBarView_Previews: PreviewProvider { 86 | static var previews: some View { 87 | TabBarView(selectedIndex: .constant(0)) 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /macOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1 23 | LSMinimumSystemVersion 24 | $(MACOSX_DEPLOYMENT_TARGET) 25 | 26 | 27 | -------------------------------------------------------------------------------- /macOS/View/HomeView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HomeView.swift 3 | // InstagramRedesignConcept 4 | // 5 | // Created by Raphael Cerqueira on 08/12/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct HomeView: View { 11 | var window = NSScreen.main?.visibleFrame 12 | @State var search = "" 13 | @Namespace var animation: Namespace.ID 14 | @State var selectedIndex = 0 15 | 16 | var body: some View { 17 | HStack { 18 | SideMenuView() 19 | 20 | VStack { 21 | HStack { 22 | HStack { 23 | Image(systemName: "magnifyingglass") 24 | 25 | TextField("Search", text: $search) 26 | .textFieldStyle(PlainTextFieldStyle()) 27 | } 28 | .padding(8) 29 | .background(Color.gray.opacity(0.1)) 30 | .frame(width: 200) 31 | .cornerRadius(5) 32 | 33 | Spacer() 34 | 35 | Button(action: {}, label: { 36 | ZStack(alignment: .topTrailing) { 37 | Image(systemName: "bell") 38 | .font(.system(size: 21)) 39 | 40 | Circle() 41 | .frame(width: 3, height: 3) 42 | .foregroundColor(Color(#colorLiteral(red: 0.8857493997, green: 0.2029119432, blue: 0.4205158353, alpha: 1))) 43 | .offset(y: -4) 44 | } 45 | }) 46 | .buttonStyle(PlainButtonStyle()) 47 | 48 | Button(action: {}, label: { 49 | ZStack(alignment: .topTrailing) { 50 | Image(systemName: "envelope") 51 | .font(.system(size: 21)) 52 | 53 | Circle() 54 | .frame(width: 3, height: 3) 55 | .foregroundColor(Color(#colorLiteral(red: 0.8857493997, green: 0.2029119432, blue: 0.4205158353, alpha: 1))) 56 | .offset(x: 8, y: -4) 57 | } 58 | }) 59 | .buttonStyle(PlainButtonStyle()) 60 | .padding(.horizontal) 61 | 62 | Button(action: /*@START_MENU_TOKEN@*/{}/*@END_MENU_TOKEN@*/, label: { 63 | HStack { 64 | Circle() 65 | .fill(Color.white.opacity(0.3)) 66 | .overlay( 67 | Image(systemName: "plus") 68 | .foregroundColor(.white) 69 | ) 70 | .frame(width: 20, height: 20) 71 | 72 | Text("Add photo") 73 | .font(.system(size: 17)) 74 | .foregroundColor(.white) 75 | } 76 | .padding(.horizontal, 12) 77 | .padding(.vertical, 8) 78 | .background(LinearGradient(gradient: Gradient(colors: [Color(#colorLiteral(red: 0.8889061809, green: 0.2303937674, blue: 0.41062814, alpha: 1)), Color(#colorLiteral(red: 0.9780260921, green: 0.6275852323, blue: 0.2913298011, alpha: 1))]), startPoint: /*@START_MENU_TOKEN@*/.leading/*@END_MENU_TOKEN@*/, endPoint: /*@START_MENU_TOKEN@*/.trailing/*@END_MENU_TOKEN@*/)) 79 | .cornerRadius(10) 80 | }) 81 | .buttonStyle(PlainButtonStyle()) 82 | } 83 | 84 | HStack { 85 | Text("Stories") 86 | .font(.title) 87 | .fontWeight(.bold) 88 | 89 | Spacer() 90 | 91 | Button(action: {}, label: { 92 | HStack { 93 | Image(systemName: "play.fill") 94 | .foregroundColor(.black) 95 | .padding(12) 96 | .background(Circle().stroke(Color.gray.opacity(0.7), lineWidth: 1)) 97 | 98 | Text("Watch all") 99 | } 100 | }) 101 | .buttonStyle(PlainButtonStyle()) 102 | } 103 | .padding(.top) 104 | 105 | StoriesView() 106 | 107 | HStack { 108 | Text("Feed") 109 | .font(.title) 110 | .fontWeight(.bold) 111 | 112 | Spacer() 113 | 114 | Button(action: { 115 | withAnimation { 116 | selectedIndex = 0 117 | } 118 | }, label: { 119 | VStack { 120 | Text("Latest") 121 | .fontWeight(.semibold) 122 | 123 | ZStack { 124 | Circle() 125 | .fill(Color.white) 126 | .frame(width: 3, height: 3) 127 | 128 | if selectedIndex == 0 { 129 | Circle() 130 | .fill(Color.black) 131 | .frame(width: 3, height: 3) 132 | .matchedGeometryEffect(id: "tab", in: animation) 133 | } 134 | } 135 | } 136 | }) 137 | .buttonStyle(PlainButtonStyle()) 138 | 139 | Button(action: { 140 | withAnimation { 141 | selectedIndex = 1 142 | } 143 | }, label: { 144 | VStack { 145 | Text("Popular") 146 | .fontWeight(.semibold) 147 | 148 | ZStack { 149 | Circle() 150 | .fill(Color.white) 151 | .frame(width: 3, height: 3) 152 | 153 | if selectedIndex == 1 { 154 | Circle() 155 | .fill(Color.black) 156 | .frame(width: 3, height: 3) 157 | .matchedGeometryEffect(id: "tab", in: animation) 158 | } 159 | } 160 | } 161 | }) 162 | .buttonStyle(PlainButtonStyle()) 163 | } 164 | 165 | GeometryReader { reader in 166 | ScrollView(.vertical, showsIndicators: false) { 167 | LazyVGrid(columns: Array(repeating: GridItem(.flexible(), spacing: 15), count: 3), spacing: 15, content: { 168 | ForEach(0 ..< 15) { item in 169 | VStack { 170 | Image("post1") 171 | .resizable() 172 | .scaledToFit() 173 | .cornerRadius(20) 174 | 175 | HStack { 176 | StoryItemView(item: StoryItem(image: "profile", new: true), size: 30) 177 | .frame(width: 20, height: 20) 178 | .padding(.horizontal) 179 | 180 | Text("Dom.Hill") 181 | .fontWeight(.bold) 182 | 183 | Spacer() 184 | 185 | Button(action: {}, label: { 186 | HStack(spacing: 0) { 187 | Image(systemName: "heart") 188 | 189 | Text("5.2k") 190 | } 191 | }) 192 | .buttonStyle(PlainButtonStyle()) 193 | 194 | Button(action: {}, label: { 195 | HStack(spacing: 0) { 196 | Image(systemName: "message") 197 | 198 | Text("38") 199 | } 200 | }) 201 | .buttonStyle(PlainButtonStyle()) 202 | } 203 | .padding(.vertical, 8) 204 | } 205 | .padding(.bottom, 4) 206 | } 207 | }) 208 | } 209 | } 210 | .padding(.bottom, 30) 211 | 212 | Spacer(minLength: 0) 213 | } 214 | .padding(.horizontal, 30) 215 | .padding(.top, 35) 216 | .background(Color("foreground")) 217 | } 218 | .ignoresSafeArea(.all, edges: .all) 219 | .frame(width: window!.width / 1.2, height: window!.height - 50) 220 | .background(Color("foreground")) 221 | } 222 | } 223 | 224 | extension NSTextField { 225 | open override var focusRingType: NSFocusRingType { 226 | get { .none } 227 | set {} 228 | } 229 | } 230 | 231 | struct HomeView_Previews: PreviewProvider { 232 | static var previews: some View { 233 | HomeView() 234 | .preferredColorScheme(.light) 235 | } 236 | } 237 | 238 | struct MenuOptionsView: View { 239 | let options = [ 240 | MenuOption(image: "square.grid.2x2", title: "Feed"), 241 | MenuOption(image: "magnifyingglass", title: "Explore"), 242 | MenuOption(image: "bell", title: "Notifications", count: 2), 243 | MenuOption(image: "envelope", title: "Messages", count: 8), 244 | MenuOption(image: "paperplane", title: "Direct"), 245 | MenuOption(image: "chart.bar", title: "Stats"), 246 | MenuOption(image: "gearshape", title: "Settings"), 247 | MenuOption(image: "arrow.right", title: "Logout"), 248 | ] 249 | 250 | @State var selectedIndex = 0 251 | @Namespace var animation 252 | 253 | var body: some View { 254 | ForEach(0 ..< options.count) { index in 255 | Button(action: { 256 | withAnimation(.spring()) { 257 | selectedIndex = index 258 | } 259 | }, label: { 260 | HStack { 261 | Image(systemName: options[index].image) 262 | .resizable() 263 | .scaledToFit() 264 | .frame(width: 18) 265 | .foregroundColor(selectedIndex == index ? .pink : .black) 266 | 267 | Text(options[index].title) 268 | .font(.system(size: 17, weight: .bold)) 269 | .foregroundColor(selectedIndex == index ? .pink : .black) 270 | .padding(.leading) 271 | 272 | // if options[index].count > 0 { 273 | // Text(options[index].count) 274 | // .font(.system(size: 15)) 275 | // .foregroundColor(.gray) 276 | // } 277 | 278 | Spacer() 279 | 280 | ZStack { 281 | Capsule() 282 | .fill(Color.clear) 283 | .frame(width: 3, height: 25) 284 | 285 | if selectedIndex == index { 286 | Capsule() 287 | .fill(Color.pink) 288 | .frame(width: 3, height: 25) 289 | .matchedGeometryEffect(id: "tab", in: animation) 290 | } 291 | } 292 | } 293 | .padding(.leading) 294 | }) 295 | .buttonStyle(PlainButtonStyle()) 296 | } 297 | } 298 | } 299 | 300 | struct MenuOption: Identifiable { 301 | let id = UUID().uuidString 302 | var image: String 303 | var title: String 304 | var count = 0 305 | } 306 | 307 | struct SideMenuView: View { 308 | var body: some View { 309 | VStack { 310 | HStack { 311 | Image("instagram") 312 | .resizable() 313 | .scaledToFit() 314 | .frame(width: 100) 315 | .foregroundColor(Color("accent")) 316 | 317 | Spacer() 318 | } 319 | .padding(.top, 35) 320 | .padding(.horizontal) 321 | 322 | StoryItemView(item: StoryItem(image: "profile", new: true)) 323 | .padding() 324 | 325 | Text("Kate Lingard") 326 | .font(.system(size: 29, weight: .semibold)) 327 | .foregroundColor(Color("accent")) 328 | 329 | Text("🤑 I love my life 🥰") 330 | .font(.system(size: 17, weight: .medium)) 331 | .foregroundColor(Color("accent")) 332 | .padding() 333 | 334 | HStack(spacing: 20) { 335 | VStack(spacing: 4) { 336 | Text("46") 337 | .font(.system(size: 17, weight: .bold)) 338 | .foregroundColor(Color("accent")) 339 | 340 | Text("Posts") 341 | .font(.system(size: 15)) 342 | .foregroundColor(Color.gray) 343 | } 344 | 345 | Divider() 346 | .frame(height: 40) 347 | 348 | VStack(spacing: 4) { 349 | Text("2,823") 350 | .font(.system(size: 17, weight: .bold)) 351 | .foregroundColor(Color("accent")) 352 | 353 | Text("Followers") 354 | .font(.system(size: 15)) 355 | .foregroundColor(Color.gray) 356 | } 357 | 358 | Divider() 359 | .frame(height: 40) 360 | 361 | VStack(spacing: 4) { 362 | Text("526") 363 | .font(.system(size: 17, weight: .bold)) 364 | .foregroundColor(Color("accent")) 365 | 366 | Text("Following") 367 | .font(.system(size: 15)) 368 | .foregroundColor(Color.gray) 369 | } 370 | } 371 | 372 | MenuOptionsView() 373 | .padding(.top, 20) 374 | 375 | Spacer() 376 | } 377 | .frame(width: 280) 378 | .background(Color("background")) 379 | } 380 | } 381 | -------------------------------------------------------------------------------- /macOS/macOS.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-only 8 | 9 | 10 | 11 | --------------------------------------------------------------------------------