mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Brand tuning: switch from "blueprint B" to "cloud imagery" (#96)

* Switch app icon to bluesky image

* Update splash screen to clouds

* Update login screen to use branding

* Lighten the shadows in the brand imagery

authored by

Paul Frazee and committed by
GitHub
59b09619 f39a27ed

+329 -120
android/app/src/main/res/mipmap-hdpi/ic_launcher.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-mdpi/ic_launcher.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-xhdpi/ic_launcher.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png

This is a binary file and will not be displayed.

+4 -4
ios/app.xcodeproj/project.pbxproj
··· 13 13 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 14 14 5698CA584FD738B2091BD18F /* libPods-app-appTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C0C7BDE7769B84011D3747DC /* libPods-app-appTests.a */; }; 15 15 67BF1AE6AABFC881715B2D6A /* libPods-app.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8789F612EDA2C48C6064ADD6 /* libPods-app.a */; }; 16 - 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; 16 + E46FE2C12981C0DB007C107C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E46FE2C02981C0DB007C107C /* LaunchScreen.storyboard */; }; 17 17 E4BBD590292C1F5200296224 /* app.entitlements in Resources */ = {isa = PBXBuildFile; fileRef = E4437C9E28581FA7006DA9E7 /* app.entitlements */; }; 18 18 /* End PBXBuildFile section */ 19 19 ··· 38 38 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = app/Info.plist; sourceTree = "<group>"; }; 39 39 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = app/main.m; sourceTree = "<group>"; }; 40 40 53DBA218C184B95B107AC33E /* Pods-app.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-app.release.xcconfig"; path = "Target Support Files/Pods-app/Pods-app.release.xcconfig"; sourceTree = "<group>"; }; 41 - 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = app/LaunchScreen.storyboard; sourceTree = "<group>"; }; 42 41 8789F612EDA2C48C6064ADD6 /* libPods-app.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-app.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 43 42 8BB4EDB104E125B8A1913E74 /* Pods-app.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-app.debug.xcconfig"; path = "Target Support Files/Pods-app/Pods-app.debug.xcconfig"; sourceTree = "<group>"; }; 44 43 A8E093A0B5DA947150924A68 /* Pods-app-appTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-app-appTests.release.xcconfig"; path = "Target Support Files/Pods-app-appTests/Pods-app-appTests.release.xcconfig"; sourceTree = "<group>"; }; 45 44 C01FB6762BC17DADC0319338 /* Pods-app-appTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-app-appTests.debug.xcconfig"; path = "Target Support Files/Pods-app-appTests/Pods-app-appTests.debug.xcconfig"; sourceTree = "<group>"; }; 46 45 C0C7BDE7769B84011D3747DC /* libPods-app-appTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-app-appTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 47 46 E4437C9E28581FA7006DA9E7 /* app.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = app.entitlements; path = app/app.entitlements; sourceTree = "<group>"; }; 47 + E46FE2C02981C0DB007C107C /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; }; 48 48 ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; 49 49 /* End PBXFileReference section */ 50 50 ··· 93 93 13B07FB01A68108700A75B9A /* AppDelegate.mm */, 94 94 13B07FB51A68108700A75B9A /* Images.xcassets */, 95 95 13B07FB61A68108700A75B9A /* Info.plist */, 96 - 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, 97 96 13B07FB71A68108700A75B9A /* main.m */, 97 + E46FE2C02981C0DB007C107C /* LaunchScreen.storyboard */, 98 98 ); 99 99 name = app; 100 100 sourceTree = "<group>"; ··· 245 245 isa = PBXResourcesBuildPhase; 246 246 buildActionMask = 2147483647; 247 247 files = ( 248 + E46FE2C12981C0DB007C107C /* LaunchScreen.storyboard in Resources */, 248 249 E4BBD590292C1F5200296224 /* app.entitlements in Resources */, 249 - 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, 250 250 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 251 251 ); 252 252 runOnlyForDeploymentPostprocessing = 0;
ios/app/Images.xcassets/AppIcon.appiconset/100.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/1024.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/114.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/120 1.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/120.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/128.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/144.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/152.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/16.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/167.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/172.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/180.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/196.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/20.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/216.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/256.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/29.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/32.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/40.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/48.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/50.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/512.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/55.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/57.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/58.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/60.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/64.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/66.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/72.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/76.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/80.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/87.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/88.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/AppIcon.appiconset/92.png

This is a binary file and will not be displayed.

+267 -1
ios/app/Images.xcassets/AppIcon.appiconset/Contents.json
··· 55 55 "size" : "57x57" 56 56 }, 57 57 { 58 - "filename" : "120 1.png", 58 + "filename" : "120.png", 59 59 "idiom" : "iphone", 60 60 "scale" : "2x", 61 61 "size" : "60x60" ··· 67 67 "size" : "60x60" 68 68 }, 69 69 { 70 + "filename" : "20.png", 71 + "idiom" : "ipad", 72 + "scale" : "1x", 73 + "size" : "20x20" 74 + }, 75 + { 76 + "filename" : "40.png", 77 + "idiom" : "ipad", 78 + "scale" : "2x", 79 + "size" : "20x20" 80 + }, 81 + { 82 + "filename" : "29.png", 83 + "idiom" : "ipad", 84 + "scale" : "1x", 85 + "size" : "29x29" 86 + }, 87 + { 88 + "filename" : "58.png", 89 + "idiom" : "ipad", 90 + "scale" : "2x", 91 + "size" : "29x29" 92 + }, 93 + { 94 + "filename" : "40.png", 95 + "idiom" : "ipad", 96 + "scale" : "1x", 97 + "size" : "40x40" 98 + }, 99 + { 100 + "filename" : "80.png", 101 + "idiom" : "ipad", 102 + "scale" : "2x", 103 + "size" : "40x40" 104 + }, 105 + { 106 + "filename" : "50.png", 107 + "idiom" : "ipad", 108 + "scale" : "1x", 109 + "size" : "50x50" 110 + }, 111 + { 112 + "filename" : "100.png", 113 + "idiom" : "ipad", 114 + "scale" : "2x", 115 + "size" : "50x50" 116 + }, 117 + { 118 + "filename" : "72.png", 119 + "idiom" : "ipad", 120 + "scale" : "1x", 121 + "size" : "72x72" 122 + }, 123 + { 124 + "filename" : "144.png", 125 + "idiom" : "ipad", 126 + "scale" : "2x", 127 + "size" : "72x72" 128 + }, 129 + { 130 + "filename" : "76.png", 131 + "idiom" : "ipad", 132 + "scale" : "1x", 133 + "size" : "76x76" 134 + }, 135 + { 136 + "filename" : "152.png", 137 + "idiom" : "ipad", 138 + "scale" : "2x", 139 + "size" : "76x76" 140 + }, 141 + { 142 + "filename" : "167.png", 143 + "idiom" : "ipad", 144 + "scale" : "2x", 145 + "size" : "83.5x83.5" 146 + }, 147 + { 70 148 "filename" : "1024.png", 71 149 "idiom" : "ios-marketing", 150 + "scale" : "1x", 151 + "size" : "1024x1024" 152 + }, 153 + { 154 + "filename" : "16.png", 155 + "idiom" : "mac", 156 + "scale" : "1x", 157 + "size" : "16x16" 158 + }, 159 + { 160 + "filename" : "32.png", 161 + "idiom" : "mac", 162 + "scale" : "2x", 163 + "size" : "16x16" 164 + }, 165 + { 166 + "filename" : "32.png", 167 + "idiom" : "mac", 168 + "scale" : "1x", 169 + "size" : "32x32" 170 + }, 171 + { 172 + "filename" : "64.png", 173 + "idiom" : "mac", 174 + "scale" : "2x", 175 + "size" : "32x32" 176 + }, 177 + { 178 + "filename" : "128.png", 179 + "idiom" : "mac", 180 + "scale" : "1x", 181 + "size" : "128x128" 182 + }, 183 + { 184 + "filename" : "256.png", 185 + "idiom" : "mac", 186 + "scale" : "2x", 187 + "size" : "128x128" 188 + }, 189 + { 190 + "filename" : "256.png", 191 + "idiom" : "mac", 192 + "scale" : "1x", 193 + "size" : "256x256" 194 + }, 195 + { 196 + "filename" : "512.png", 197 + "idiom" : "mac", 198 + "scale" : "2x", 199 + "size" : "256x256" 200 + }, 201 + { 202 + "filename" : "512.png", 203 + "idiom" : "mac", 204 + "scale" : "1x", 205 + "size" : "512x512" 206 + }, 207 + { 208 + "filename" : "1024.png", 209 + "idiom" : "mac", 210 + "scale" : "2x", 211 + "size" : "512x512" 212 + }, 213 + { 214 + "filename" : "48.png", 215 + "idiom" : "watch", 216 + "role" : "notificationCenter", 217 + "scale" : "2x", 218 + "size" : "24x24", 219 + "subtype" : "38mm" 220 + }, 221 + { 222 + "filename" : "55.png", 223 + "idiom" : "watch", 224 + "role" : "notificationCenter", 225 + "scale" : "2x", 226 + "size" : "27.5x27.5", 227 + "subtype" : "42mm" 228 + }, 229 + { 230 + "filename" : "58.png", 231 + "idiom" : "watch", 232 + "role" : "companionSettings", 233 + "scale" : "2x", 234 + "size" : "29x29" 235 + }, 236 + { 237 + "filename" : "87.png", 238 + "idiom" : "watch", 239 + "role" : "companionSettings", 240 + "scale" : "3x", 241 + "size" : "29x29" 242 + }, 243 + { 244 + "filename" : "66.png", 245 + "idiom" : "watch", 246 + "role" : "notificationCenter", 247 + "scale" : "2x", 248 + "size" : "33x33", 249 + "subtype" : "45mm" 250 + }, 251 + { 252 + "filename" : "80.png", 253 + "idiom" : "watch", 254 + "role" : "appLauncher", 255 + "scale" : "2x", 256 + "size" : "40x40", 257 + "subtype" : "38mm" 258 + }, 259 + { 260 + "filename" : "88.png", 261 + "idiom" : "watch", 262 + "role" : "appLauncher", 263 + "scale" : "2x", 264 + "size" : "44x44", 265 + "subtype" : "40mm" 266 + }, 267 + { 268 + "filename" : "92.png", 269 + "idiom" : "watch", 270 + "role" : "appLauncher", 271 + "scale" : "2x", 272 + "size" : "46x46", 273 + "subtype" : "41mm" 274 + }, 275 + { 276 + "filename" : "100.png", 277 + "idiom" : "watch", 278 + "role" : "appLauncher", 279 + "scale" : "2x", 280 + "size" : "50x50", 281 + "subtype" : "44mm" 282 + }, 283 + { 284 + "idiom" : "watch", 285 + "role" : "appLauncher", 286 + "scale" : "2x", 287 + "size" : "51x51", 288 + "subtype" : "45mm" 289 + }, 290 + { 291 + "idiom" : "watch", 292 + "role" : "appLauncher", 293 + "scale" : "2x", 294 + "size" : "54x54", 295 + "subtype" : "49mm" 296 + }, 297 + { 298 + "filename" : "172.png", 299 + "idiom" : "watch", 300 + "role" : "quickLook", 301 + "scale" : "2x", 302 + "size" : "86x86", 303 + "subtype" : "38mm" 304 + }, 305 + { 306 + "filename" : "196.png", 307 + "idiom" : "watch", 308 + "role" : "quickLook", 309 + "scale" : "2x", 310 + "size" : "98x98", 311 + "subtype" : "42mm" 312 + }, 313 + { 314 + "filename" : "216.png", 315 + "idiom" : "watch", 316 + "role" : "quickLook", 317 + "scale" : "2x", 318 + "size" : "108x108", 319 + "subtype" : "44mm" 320 + }, 321 + { 322 + "idiom" : "watch", 323 + "role" : "quickLook", 324 + "scale" : "2x", 325 + "size" : "117x117", 326 + "subtype" : "45mm" 327 + }, 328 + { 329 + "idiom" : "watch", 330 + "role" : "quickLook", 331 + "scale" : "2x", 332 + "size" : "129x129", 333 + "subtype" : "49mm" 334 + }, 335 + { 336 + "filename" : "1024.png", 337 + "idiom" : "watch-marketing", 72 338 "scale" : "1x", 73 339 "size" : "1024x1024" 74 340 }
+3 -3
ios/app/Images.xcassets/LaunchScreen.imageset/Contents.json
··· 1 1 { 2 2 "images" : [ 3 3 { 4 - "filename" : "splash.jpg", 4 + "filename" : "bsky-app-splash.png", 5 5 "idiom" : "universal", 6 6 "scale" : "1x" 7 7 }, 8 8 { 9 - "filename" : "splash@2x.jpg", 9 + "filename" : "bsky-app-splash@2x.png", 10 10 "idiom" : "universal", 11 11 "scale" : "2x" 12 12 }, 13 13 { 14 - "filename" : "splash@3x.jpg", 14 + "filename" : "bsky-app-splash@3x.png", 15 15 "idiom" : "universal", 16 16 "scale" : "3x" 17 17 }
ios/app/Images.xcassets/LaunchScreen.imageset/bsky-app-splash.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/LaunchScreen.imageset/bsky-app-splash@2x.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/LaunchScreen.imageset/bsky-app-splash@3x.png

This is a binary file and will not be displayed.

ios/app/Images.xcassets/LaunchScreen.imageset/splash.jpg

This is a binary file and will not be displayed.

ios/app/Images.xcassets/LaunchScreen.imageset/splash@2x.jpg

This is a binary file and will not be displayed.

ios/app/Images.xcassets/LaunchScreen.imageset/splash@3x.jpg

This is a binary file and will not be displayed.

+15 -15
ios/app/LaunchScreen.storyboard ios/LaunchScreen.storyboard
··· 1 1 <?xml version="1.0" encoding="UTF-8"?> 2 - <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM"> 3 - <device id="retina4_7" orientation="portrait" appearance="light"/> 2 + <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="Y6W-OH-hqX"> 3 + <device id="retina6_12" orientation="portrait" appearance="light"/> 4 4 <dependencies> 5 5 <deployment identifier="iOS"/> 6 6 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/> ··· 9 9 </dependencies> 10 10 <scenes> 11 11 <!--View Controller--> 12 - <scene sceneID="EHf-IW-A2E"> 12 + <scene sceneID="s0d-6b-0kx"> 13 13 <objects> 14 - <viewController id="01J-lp-oVM" sceneMemberID="viewController"> 15 - <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> 16 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> 14 + <viewController id="Y6W-OH-hqX" sceneMemberID="viewController"> 15 + <view key="view" contentMode="scaleToFill" id="5EZ-qb-Rvc"> 16 + <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> 17 17 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 18 18 <subviews> 19 - <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" image="LaunchScreen" translatesAutoresizingMaskIntoConstraints="NO" id="3xW-LZ-8bI"> 20 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> 19 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" image="LaunchScreen" translatesAutoresizingMaskIntoConstraints="NO" id="Ppr-Vi-7AA"> 20 + <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> 21 21 </imageView> 22 22 </subviews> 23 23 <color key="backgroundColor" systemColor="systemBackgroundColor"/> 24 24 <constraints> 25 - <constraint firstAttribute="bottom" secondItem="3xW-LZ-8bI" secondAttribute="bottom" id="Qjl-JH-apV"/> 26 - <constraint firstItem="3xW-LZ-8bI" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" id="c7a-bI-Hl7"/> 27 - <constraint firstAttribute="trailing" secondItem="3xW-LZ-8bI" secondAttribute="trailing" id="vM9-Qy-zds"/> 28 - <constraint firstItem="3xW-LZ-8bI" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="yhO-am-Ve0"/> 25 + <constraint firstAttribute="trailing" secondItem="Ppr-Vi-7AA" secondAttribute="trailing" id="8NR-sO-ZhN"/> 26 + <constraint firstItem="Ppr-Vi-7AA" firstAttribute="top" secondItem="5EZ-qb-Rvc" secondAttribute="top" id="Od5-pK-zM2"/> 27 + <constraint firstItem="Ppr-Vi-7AA" firstAttribute="leading" secondItem="5EZ-qb-Rvc" secondAttribute="leading" id="Ww6-nx-IYo"/> 28 + <constraint firstAttribute="bottom" secondItem="Ppr-Vi-7AA" secondAttribute="bottom" id="vTP-N3-Ihm"/> 29 29 </constraints> 30 30 </view> 31 31 </viewController> 32 - <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> 32 + <placeholder placeholderIdentifier="IBFirstResponder" id="Ief-a0-LHa" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> 33 33 </objects> 34 - <point key="canvasLocation" x="52.173913043478265" y="375"/> 34 + <point key="canvasLocation" x="119.84732824427481" y="4.9295774647887329"/> 35 35 </scene> 36 36 </scenes> 37 37 <resources> 38 - <image name="LaunchScreen" width="500" height="750"/> 38 + <image name="LaunchScreen" width="600" height="900"/> 39 39 <systemColor name="systemBackgroundColor"> 40 40 <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> 41 41 </systemColor>
public/img/cloud-splash.png

This is a binary file and will not be displayed.

+2 -36
src/view/com/login/Logo.tsx
··· 1 1 import React from 'react' 2 - import {StyleSheet, View} from 'react-native' 2 + import {StyleSheet} from 'react-native' 3 3 import LinearGradient from 'react-native-linear-gradient' 4 - import Svg, {Circle, Line, Text as SvgText} from 'react-native-svg' 5 4 import {s, gradients} from '../../lib/styles' 6 5 import {Text} from '../util/text/Text' 7 6 8 - export const Logo = ({color, size = 100}: {color: string; size?: number}) => { 9 - return ( 10 - <View style={styles.logo}> 11 - <Svg width={size} height={size} viewBox="0 0 100 100"> 12 - <Circle 13 - cx="50" 14 - cy="50" 15 - r="46" 16 - fill="none" 17 - stroke={color} 18 - strokeWidth={2} 19 - /> 20 - <Line stroke={color} strokeWidth={1} x1="30" x2="30" y1="0" y2="100" /> 21 - <Line stroke={color} strokeWidth={1} x1="74" x2="74" y1="0" y2="100" /> 22 - <Line stroke={color} strokeWidth={1} x1="0" x2="100" y1="22" y2="22" /> 23 - <Line stroke={color} strokeWidth={1} x1="0" x2="100" y1="74" y2="74" /> 24 - <SvgText 25 - fill="none" 26 - stroke={color} 27 - strokeWidth={2} 28 - fontSize="60" 29 - fontWeight="bold" 30 - x="52" 31 - y="70" 32 - textAnchor="middle"> 33 - B 34 - </SvgText> 35 - </Svg> 36 - </View> 37 - ) 38 - } 39 - 40 7 export const LogoTextHero = () => { 41 8 return ( 42 9 <LinearGradient ··· 44 11 start={{x: 0, y: 0}} 45 12 end={{x: 1, y: 1}} 46 13 style={[styles.textHero]}> 47 - <Logo color="white" size={40} /> 48 - <Text type="title-lg" style={[s.white, s.pl10]}> 14 + <Text type="title-lg" style={[s.white, s.bold]}> 49 15 Bluesky 50 16 </Text> 51 17 </LinearGradient>
+1
src/view/lib/assets.native.ts
··· 2 2 3 3 export const DEF_AVATAR: ImageSourcePropType = require('../../../public/img/default-avatar.jpg') 4 4 export const TABS_EXPLAINER: ImageSourcePropType = require('../../../public/img/tabs-explainer.jpg') 5 + export const CLOUD_SPLASH: ImageSourcePropType = require('../../../public/img/cloud-splash.png')
+1
src/view/lib/assets.ts
··· 4 4 export const TABS_EXPLAINER: ImageSourcePropType = { 5 5 uri: '/img/tabs-explainer.jpg', 6 6 } 7 + export const CLOUD_SPLASH: ImageSourcePropType = {uri: '/img/cloud-splash.png'}
+36 -61
src/view/screens/Login.tsx
··· 1 1 import React, {useState} from 'react' 2 2 import { 3 + Image, 3 4 SafeAreaView, 4 5 StyleSheet, 5 6 TouchableOpacity, 6 7 View, 7 - useWindowDimensions, 8 8 } from 'react-native' 9 - import Svg, {Line} from 'react-native-svg' 10 - import LinearGradient from 'react-native-linear-gradient' 11 9 import {observer} from 'mobx-react-lite' 12 10 import {Signin} from '../com/login/Signin' 13 - import {Logo} from '../com/login/Logo' 14 11 import {CreateAccount} from '../com/login/CreateAccount' 15 12 import {Text} from '../com/util/text/Text' 16 13 import {ErrorBoundary} from '../com/util/ErrorBoundary' 17 - import {s, colors} from '../lib/styles' 14 + import {colors} from '../lib/styles' 18 15 import {usePalette} from '../lib/hooks/usePalette' 16 + import {CLOUD_SPLASH} from '../lib/assets' 19 17 20 18 enum ScreenState { 21 19 S_SigninOrCreateAccount, ··· 30 28 onPressSignin: () => void 31 29 onPressCreateAccount: () => void 32 30 }) => { 33 - const winDim = useWindowDimensions() 34 - const halfWidth = winDim.width / 2 31 + const pal = usePalette('default') 35 32 return ( 36 33 <> 37 34 <View style={styles.hero}> 38 - <Logo color="white" /> 39 - <Text style={styles.title}>Bluesky</Text> 40 - <Text style={styles.subtitle}>[ private beta ]</Text> 35 + <View style={styles.heroText}> 36 + <Text style={styles.title}>Bluesky</Text> 37 + <Text style={styles.subtitle}>[ private beta ]</Text> 38 + </View> 41 39 </View> 42 - <View testID="signinOrCreateAccount" style={s.flex1}> 40 + <View testID="signinOrCreateAccount" style={styles.btns}> 43 41 <TouchableOpacity 44 42 testID="createAccountButton" 45 - style={styles.btn} 43 + style={[pal.view, styles.btn]} 46 44 onPress={onPressCreateAccount}> 47 - <Text style={styles.btnLabel}>Create a new account</Text> 45 + <Text style={[pal.link, styles.btnLabel]}>Create a new account</Text> 48 46 </TouchableOpacity> 49 - <View style={styles.or}> 50 - <Svg height="1" width={winDim.width} style={styles.orLine}> 51 - <Line 52 - x1="30" 53 - y1="0" 54 - x2={halfWidth - 20} 55 - y2="0" 56 - stroke="white" 57 - strokeWidth="1" 58 - /> 59 - <Line 60 - x1={halfWidth + 20} 61 - y1="0" 62 - x2={winDim.width - 30} 63 - y2="0" 64 - stroke="white" 65 - strokeWidth="1" 66 - /> 67 - </Svg> 68 - <Text style={styles.orLabel}>or</Text> 69 - </View> 70 47 <TouchableOpacity 71 48 testID="signInButton" 72 - style={styles.btn} 49 + style={[pal.view, styles.btn]} 73 50 onPress={onPressSignin}> 74 - <Text style={styles.btnLabel}>Sign in</Text> 51 + <Text style={[pal.link, styles.btnLabel]}>Sign in</Text> 75 52 </TouchableOpacity> 76 53 </View> 77 54 </> ··· 86 63 87 64 if (screenState === ScreenState.S_SigninOrCreateAccount) { 88 65 return ( 89 - <LinearGradient 90 - colors={['#007CFF', '#00BCFF']} 91 - start={{x: 0, y: 0.8}} 92 - end={{x: 0, y: 1}} 93 - style={styles.container}> 66 + <View style={styles.container}> 67 + <Image source={CLOUD_SPLASH} style={styles.bgImg} /> 94 68 <SafeAreaView testID="noSessionView" style={styles.container}> 95 69 <ErrorBoundary> 96 70 <SigninOrCreateAccount ··· 101 75 /> 102 76 </ErrorBoundary> 103 77 </SafeAreaView> 104 - </LinearGradient> 78 + </View> 105 79 ) 106 80 } 107 81 ··· 139 113 hero: { 140 114 flex: 2, 141 115 justifyContent: 'center', 116 + }, 117 + bgImg: { 118 + position: 'absolute', 119 + top: 0, 120 + left: 0, 121 + width: '100%', 122 + height: '100%', 123 + }, 124 + heroText: { 125 + backgroundColor: colors.white, 126 + paddingTop: 10, 127 + paddingBottom: 20, 128 + }, 129 + btns: { 130 + paddingBottom: 40, 142 131 }, 143 132 title: { 144 133 textAlign: 'center', 145 - color: colors.white, 134 + color: colors.blue3, 146 135 fontSize: 68, 147 136 fontWeight: 'bold', 148 137 }, 149 138 subtitle: { 150 139 textAlign: 'center', 151 - color: colors.white, 140 + color: colors.blue3, 152 141 fontSize: 18, 153 142 }, 154 143 btn: { 155 - borderWidth: 1, 156 - borderColor: colors.white, 157 - borderRadius: 10, 144 + borderRadius: 4, 158 145 paddingVertical: 16, 159 146 marginBottom: 20, 160 147 marginHorizontal: 20, ··· 162 149 }, 163 150 btnLabel: { 164 151 textAlign: 'center', 165 - color: colors.white, 166 - fontSize: 18, 167 - fontWeight: 'bold', 168 - }, 169 - or: { 170 - marginBottom: 20, 171 - }, 172 - orLine: { 173 - position: 'absolute', 174 - top: 10, 175 - }, 176 - orLabel: { 177 - textAlign: 'center', 152 + fontSize: 21, 153 + // fontWeight: '500', 178 154 color: colors.white, 179 - fontSize: 16, 180 155 }, 181 156 })