diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Autumn.appiconset/1024-dark.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Autumn.appiconset/1024-dark.png new file mode 100644 index 000000000..c67b2bc23 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Autumn.appiconset/1024-dark.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Autumn.appiconset/1024-tinted.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Autumn.appiconset/1024-tinted.png new file mode 100644 index 000000000..1279a29f6 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Autumn.appiconset/1024-tinted.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Autumn.appiconset/1024.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Autumn.appiconset/1024.png new file mode 100644 index 000000000..0880d0184 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Autumn.appiconset/1024.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Autumn.appiconset/Contents.json b/LoopFollow/Resources/Assets.xcassets/AppIcon-Autumn.appiconset/Contents.json new file mode 100644 index 000000000..591fe42fc --- /dev/null +++ b/LoopFollow/Resources/Assets.xcassets/AppIcon-Autumn.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "filename" : "1024.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "1024-dark.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "tinted" + } + ], + "filename" : "1024-tinted.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Lavender.appiconset/1024-dark.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Lavender.appiconset/1024-dark.png new file mode 100644 index 000000000..cd7dbbe18 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Lavender.appiconset/1024-dark.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Lavender.appiconset/1024-tinted.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Lavender.appiconset/1024-tinted.png new file mode 100644 index 000000000..9dbe8f932 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Lavender.appiconset/1024-tinted.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Lavender.appiconset/1024.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Lavender.appiconset/1024.png new file mode 100644 index 000000000..b3cce31f4 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Lavender.appiconset/1024.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Lavender.appiconset/Contents.json b/LoopFollow/Resources/Assets.xcassets/AppIcon-Lavender.appiconset/Contents.json new file mode 100644 index 000000000..591fe42fc --- /dev/null +++ b/LoopFollow/Resources/Assets.xcassets/AppIcon-Lavender.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "filename" : "1024.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "1024-dark.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "tinted" + } + ], + "filename" : "1024-tinted.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Midnight.appiconset/1024-dark.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Midnight.appiconset/1024-dark.png new file mode 100644 index 000000000..a9bf44abe Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Midnight.appiconset/1024-dark.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Midnight.appiconset/1024-tinted.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Midnight.appiconset/1024-tinted.png new file mode 100644 index 000000000..d85505d3c Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Midnight.appiconset/1024-tinted.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Midnight.appiconset/1024.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Midnight.appiconset/1024.png new file mode 100644 index 000000000..4ab0980de Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Midnight.appiconset/1024.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Midnight.appiconset/Contents.json b/LoopFollow/Resources/Assets.xcassets/AppIcon-Midnight.appiconset/Contents.json new file mode 100644 index 000000000..591fe42fc --- /dev/null +++ b/LoopFollow/Resources/Assets.xcassets/AppIcon-Midnight.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "filename" : "1024.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "1024-dark.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "tinted" + } + ], + "filename" : "1024-tinted.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Mint.appiconset/1024-dark.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Mint.appiconset/1024-dark.png new file mode 100644 index 000000000..ffa4b5b33 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Mint.appiconset/1024-dark.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Mint.appiconset/1024-tinted.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Mint.appiconset/1024-tinted.png new file mode 100644 index 000000000..7941227b9 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Mint.appiconset/1024-tinted.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Mint.appiconset/1024.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Mint.appiconset/1024.png new file mode 100644 index 000000000..b14bcb9df Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Mint.appiconset/1024.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Mint.appiconset/Contents.json b/LoopFollow/Resources/Assets.xcassets/AppIcon-Mint.appiconset/Contents.json new file mode 100644 index 000000000..591fe42fc --- /dev/null +++ b/LoopFollow/Resources/Assets.xcassets/AppIcon-Mint.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "filename" : "1024.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "1024-dark.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "tinted" + } + ], + "filename" : "1024-tinted.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Pink.appiconset/1024-dark.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Pink.appiconset/1024-dark.png new file mode 100644 index 000000000..b88833070 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Pink.appiconset/1024-dark.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Pink.appiconset/1024-tinted.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Pink.appiconset/1024-tinted.png new file mode 100644 index 000000000..1d5c7be04 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Pink.appiconset/1024-tinted.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Pink.appiconset/1024.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Pink.appiconset/1024.png new file mode 100644 index 000000000..20aeda6bd Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Pink.appiconset/1024.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Pink.appiconset/Contents.json b/LoopFollow/Resources/Assets.xcassets/AppIcon-Pink.appiconset/Contents.json new file mode 100644 index 000000000..591fe42fc --- /dev/null +++ b/LoopFollow/Resources/Assets.xcassets/AppIcon-Pink.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "filename" : "1024.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "1024-dark.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "tinted" + } + ], + "filename" : "1024-tinted.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Spring.appiconset/1024-dark.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Spring.appiconset/1024-dark.png new file mode 100644 index 000000000..744b508a3 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Spring.appiconset/1024-dark.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Spring.appiconset/1024-tinted.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Spring.appiconset/1024-tinted.png new file mode 100644 index 000000000..6b88456c5 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Spring.appiconset/1024-tinted.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Spring.appiconset/1024.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Spring.appiconset/1024.png new file mode 100644 index 000000000..58ecd80a9 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Spring.appiconset/1024.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Spring.appiconset/Contents.json b/LoopFollow/Resources/Assets.xcassets/AppIcon-Spring.appiconset/Contents.json new file mode 100644 index 000000000..591fe42fc --- /dev/null +++ b/LoopFollow/Resources/Assets.xcassets/AppIcon-Spring.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "filename" : "1024.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "1024-dark.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "tinted" + } + ], + "filename" : "1024-tinted.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Summer.appiconset/1024-dark.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Summer.appiconset/1024-dark.png new file mode 100644 index 000000000..83c940d0e Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Summer.appiconset/1024-dark.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Summer.appiconset/1024-tinted.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Summer.appiconset/1024-tinted.png new file mode 100644 index 000000000..d4c6b399f Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Summer.appiconset/1024-tinted.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Summer.appiconset/1024.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Summer.appiconset/1024.png new file mode 100644 index 000000000..65024d173 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Summer.appiconset/1024.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Summer.appiconset/Contents.json b/LoopFollow/Resources/Assets.xcassets/AppIcon-Summer.appiconset/Contents.json new file mode 100644 index 000000000..591fe42fc --- /dev/null +++ b/LoopFollow/Resources/Assets.xcassets/AppIcon-Summer.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "filename" : "1024.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "1024-dark.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "tinted" + } + ], + "filename" : "1024-tinted.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Winter.appiconset/1024-dark.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Winter.appiconset/1024-dark.png new file mode 100644 index 000000000..6d207b66a Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Winter.appiconset/1024-dark.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Winter.appiconset/1024-tinted.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Winter.appiconset/1024-tinted.png new file mode 100644 index 000000000..74e3eee65 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Winter.appiconset/1024-tinted.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Winter.appiconset/1024.png b/LoopFollow/Resources/Assets.xcassets/AppIcon-Winter.appiconset/1024.png new file mode 100644 index 000000000..873d9973b Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIcon-Winter.appiconset/1024.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIcon-Winter.appiconset/Contents.json b/LoopFollow/Resources/Assets.xcassets/AppIcon-Winter.appiconset/Contents.json new file mode 100644 index 000000000..591fe42fc --- /dev/null +++ b/LoopFollow/Resources/Assets.xcassets/AppIcon-Winter.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "filename" : "1024.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "1024-dark.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "tinted" + } + ], + "filename" : "1024-tinted.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Autumn.imageset/Contents.json b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Autumn.imageset/Contents.json new file mode 100644 index 000000000..f900a526d --- /dev/null +++ b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Autumn.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "filename" : "preview.png", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "preview-dark.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Autumn.imageset/preview-dark.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Autumn.imageset/preview-dark.png new file mode 100644 index 000000000..205b30a18 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Autumn.imageset/preview-dark.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Autumn.imageset/preview.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Autumn.imageset/preview.png new file mode 100644 index 000000000..94da37b30 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Autumn.imageset/preview.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Classic.imageset/Contents.json b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Classic.imageset/Contents.json new file mode 100644 index 000000000..f900a526d --- /dev/null +++ b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Classic.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "filename" : "preview.png", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "preview-dark.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Classic.imageset/preview-dark.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Classic.imageset/preview-dark.png new file mode 100644 index 000000000..6c1bac0b4 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Classic.imageset/preview-dark.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Classic.imageset/preview.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Classic.imageset/preview.png new file mode 100644 index 000000000..a3332bffc Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Classic.imageset/preview.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Lavender.imageset/Contents.json b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Lavender.imageset/Contents.json new file mode 100644 index 000000000..f900a526d --- /dev/null +++ b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Lavender.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "filename" : "preview.png", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "preview-dark.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Lavender.imageset/preview-dark.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Lavender.imageset/preview-dark.png new file mode 100644 index 000000000..f195e4f87 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Lavender.imageset/preview-dark.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Lavender.imageset/preview.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Lavender.imageset/preview.png new file mode 100644 index 000000000..2fe924a63 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Lavender.imageset/preview.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Midnight.imageset/Contents.json b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Midnight.imageset/Contents.json new file mode 100644 index 000000000..f900a526d --- /dev/null +++ b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Midnight.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "filename" : "preview.png", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "preview-dark.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Midnight.imageset/preview-dark.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Midnight.imageset/preview-dark.png new file mode 100644 index 000000000..2a0d5384c Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Midnight.imageset/preview-dark.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Midnight.imageset/preview.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Midnight.imageset/preview.png new file mode 100644 index 000000000..db9dffeda Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Midnight.imageset/preview.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Mint.imageset/Contents.json b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Mint.imageset/Contents.json new file mode 100644 index 000000000..f900a526d --- /dev/null +++ b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Mint.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "filename" : "preview.png", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "preview-dark.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Mint.imageset/preview-dark.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Mint.imageset/preview-dark.png new file mode 100644 index 000000000..a727d500b Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Mint.imageset/preview-dark.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Mint.imageset/preview.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Mint.imageset/preview.png new file mode 100644 index 000000000..5434401bb Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Mint.imageset/preview.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Pink.imageset/Contents.json b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Pink.imageset/Contents.json new file mode 100644 index 000000000..f900a526d --- /dev/null +++ b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Pink.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "filename" : "preview.png", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "preview-dark.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Pink.imageset/preview-dark.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Pink.imageset/preview-dark.png new file mode 100644 index 000000000..c876626c3 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Pink.imageset/preview-dark.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Pink.imageset/preview.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Pink.imageset/preview.png new file mode 100644 index 000000000..0ee59add3 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Pink.imageset/preview.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Spring.imageset/Contents.json b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Spring.imageset/Contents.json new file mode 100644 index 000000000..f900a526d --- /dev/null +++ b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Spring.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "filename" : "preview.png", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "preview-dark.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Spring.imageset/preview-dark.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Spring.imageset/preview-dark.png new file mode 100644 index 000000000..1a8142e73 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Spring.imageset/preview-dark.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Spring.imageset/preview.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Spring.imageset/preview.png new file mode 100644 index 000000000..651718f1a Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Spring.imageset/preview.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Summer.imageset/Contents.json b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Summer.imageset/Contents.json new file mode 100644 index 000000000..f900a526d --- /dev/null +++ b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Summer.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "filename" : "preview.png", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "preview-dark.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Summer.imageset/preview-dark.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Summer.imageset/preview-dark.png new file mode 100644 index 000000000..247dbe6ce Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Summer.imageset/preview-dark.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Summer.imageset/preview.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Summer.imageset/preview.png new file mode 100644 index 000000000..fe437b086 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Summer.imageset/preview.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Winter.imageset/Contents.json b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Winter.imageset/Contents.json new file mode 100644 index 000000000..f900a526d --- /dev/null +++ b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Winter.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "filename" : "preview.png", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "preview-dark.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Winter.imageset/preview-dark.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Winter.imageset/preview-dark.png new file mode 100644 index 000000000..3e648190b Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Winter.imageset/preview-dark.png differ diff --git a/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Winter.imageset/preview.png b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Winter.imageset/preview.png new file mode 100644 index 000000000..262fa1dc4 Binary files /dev/null and b/LoopFollow/Resources/Assets.xcassets/AppIconPreview-Winter.imageset/preview.png differ diff --git a/LoopFollow/Settings/AppIconSettingsView.swift b/LoopFollow/Settings/AppIconSettingsView.swift new file mode 100644 index 000000000..cc426b2cf --- /dev/null +++ b/LoopFollow/Settings/AppIconSettingsView.swift @@ -0,0 +1,148 @@ +// LoopFollow +// AppIconSettingsView.swift + +import SwiftUI +import UIKit + +enum AppIconOption: String, CaseIterable, Identifiable { + case classic = "Classic" + case pink = "Pink" + case lavender = "Lavender" + case mint = "Mint" + case midnight = "Midnight" + case spring = "Spring" + case summer = "Summer" + case autumn = "Autumn" + case winter = "Winter" + + var id: String { + rawValue + } + + var displayName: String { + rawValue + } + + /// Name of the alternate icon set in the asset catalog; `nil` for the primary icon. + var alternateIconName: String? { + self == .classic ? nil : "AppIcon-\(rawValue)" + } + + var previewImageName: String { + "AppIconPreview-\(rawValue)" + } + + init(alternateIconName: String?) { + self = Self.allCases.first { $0.alternateIconName == alternateIconName } ?? .classic + } +} + +final class AppIconManager: ObservableObject { + static let shared = AppIconManager() + + @Published private(set) var current = AppIconOption(alternateIconName: UIApplication.shared.alternateIconName) + + var isSupported: Bool { + UIApplication.shared.supportsAlternateIcons + } + + func select(_ option: AppIconOption) { + guard option != current else { return } + let previous = current + current = option + UIApplication.shared.setAlternateIconName(option.alternateIconName) { error in + guard let error else { return } + LogManager.shared.log(category: .general, message: "Failed to change app icon: \(error.localizedDescription)") + DispatchQueue.main.async { self.current = previous } + } + } +} + +struct AppIconImage: View { + let option: AppIconOption + let size: CGFloat + + var body: some View { + Image(option.previewImageName) + .resizable() + .scaledToFill() + .frame(width: size, height: size) + .clipShape(RoundedRectangle(cornerRadius: size * 0.225, style: .continuous)) + .overlay( + RoundedRectangle(cornerRadius: size * 0.225, style: .continuous) + .strokeBorder(Color.primary.opacity(0.1), lineWidth: 0.5) + ) + } +} + +struct AppIconSettingsView: View { + @ObservedObject private var manager = AppIconManager.shared + + private let columns = Array(repeating: GridItem(.flexible(), spacing: 12), count: 3) + + var body: some View { + ScrollView { + VStack(spacing: 24) { + VStack(spacing: 10) { + AppIconImage(option: manager.current, size: 110) + .shadow(color: .black.opacity(0.15), radius: 8, y: 4) + Text(manager.current.displayName) + .font(.headline) + } + .padding(.top, 12) + + LazyVGrid(columns: columns, spacing: 20) { + ForEach(AppIconOption.allCases) { option in + iconCell(option) + } + } + .padding(16) + .background(Color(.secondarySystemGroupedBackground)) + .clipShape(RoundedRectangle(cornerRadius: 12, style: .continuous)) + + Text("The icon on the Home Screen changes right away and iOS shows a short confirmation. The Apple Watch app keeps the classic icon.") + .font(.footnote) + .foregroundStyle(.secondary) + .frame(maxWidth: .infinity, alignment: .leading) + .padding(.horizontal, 4) + } + .padding(.horizontal, 16) + .padding(.bottom, 24) + } + .background(Color(.systemGroupedBackground).ignoresSafeArea()) + .preferredColorScheme(Storage.shared.appearanceMode.value.colorScheme) + .navigationBarTitle("App Icon", displayMode: .inline) + } + + private func iconCell(_ option: AppIconOption) -> some View { + let selected = option == manager.current + return Button { + manager.select(option) + } label: { + VStack(spacing: 8) { + AppIconImage(option: option, size: 72) + .padding(4) + .overlay( + RoundedRectangle(cornerRadius: 20, style: .continuous) + .strokeBorder(selected ? Color.accentColor : .clear, lineWidth: 3) + ) + .overlay(alignment: .topTrailing) { + if selected { + Image(systemName: "checkmark.circle.fill") + .font(.system(size: 22)) + .symbolRenderingMode(.palette) + .foregroundStyle(.white, Color.accentColor) + .offset(x: 6, y: -6) + } + } + Text(option.displayName) + .font(.footnote) + .fontWeight(selected ? .semibold : .regular) + .foregroundStyle(selected ? Color.primary : .secondary) + } + } + .buttonStyle(.plain) + .accessibilityLabel(option.displayName) + .accessibilityAddTraits(selected ? .isSelected : []) + } +} diff --git a/LoopFollow/Settings/GeneralSettingsView.swift b/LoopFollow/Settings/GeneralSettingsView.swift index 073d9c72d..efa45e2c9 100644 --- a/LoopFollow/Settings/GeneralSettingsView.swift +++ b/LoopFollow/Settings/GeneralSettingsView.swift @@ -46,6 +46,11 @@ struct GeneralSettingsView: View { Text(mode.displayName).tag(mode) } } + if AppIconManager.shared.isSupported { + NavigationLink("App Icon") { + AppIconSettingsView() + } + } Toggle("Display Small Graph", isOn: $showSmallGraph.value) Toggle("Color BG Text", isOn: $colorBGText.value) Toggle("Keep Screen Active", isOn: $screenlockSwitchState.value)