diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..330d167 --- /dev/null +++ b/.gitignore @@ -0,0 +1,90 @@ +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## User settings +xcuserdata/ + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 + +## Obj-C/Swift specific +*.hmap + +## App packaging +*.ipa +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + +.build/ + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +# Pods/ +# +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace + +# Carthage +# +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build/ + +# Accio dependency management +Dependencies/ +.accio/ + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ diff --git a/nirvana-ios.xcodeproj/project.pbxproj b/nirvana-ios.xcodeproj/project.pbxproj index 9fb4bd1..f079c4b 100644 --- a/nirvana-ios.xcodeproj/project.pbxproj +++ b/nirvana-ios.xcodeproj/project.pbxproj @@ -11,6 +11,17 @@ 891A15E327653A7000B26659 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891A15E227653A7000B26659 /* ContentView.swift */; }; 891A15E527653A7100B26659 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 891A15E427653A7100B26659 /* Assets.xcassets */; }; 891A15E827653A7100B26659 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 891A15E727653A7100B26659 /* Preview Assets.xcassets */; }; + 891A15F12765528700B26659 /* Satisfy-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 891A15F02765528700B26659 /* Satisfy-Regular.ttf */; }; + 891A15F5276557AB00B26659 /* colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891A15F4276557AB00B26659 /* colors.swift */; }; + 891A15F9276563CA00B26659 /* WelcomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891A15F8276563CA00B26659 /* WelcomeView.swift */; }; + 891A15FD276566B800B26659 /* constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891A15FC276566B800B26659 /* constants.swift */; }; + 891A15FF27656F9200B26659 /* HeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891A15FE27656F9200B26659 /* HeaderView.swift */; }; + 891A160127656FB200B26659 /* Footer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891A160027656FB200B26659 /* Footer.swift */; }; + 891A160327656FC700B26659 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891A160227656FC700B26659 /* HomeView.swift */; }; + 891A1607276572A800B26659 /* Onboarding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891A1606276572A800B26659 /* Onboarding.swift */; }; + 891A160B2765732700B26659 /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891A160A2765732700B26659 /* HomeViewModel.swift */; }; + 891A160E27657CEA00B26659 /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891A160D27657CEA00B26659 /* User.swift */; }; + 891A1611276590B000B26659 /* ChatsCarouselView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891A1610276590B000B26659 /* ChatsCarouselView.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -19,6 +30,18 @@ 891A15E227653A7000B26659 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 891A15E427653A7100B26659 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 891A15E727653A7100B26659 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 891A15F02765528700B26659 /* Satisfy-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Satisfy-Regular.ttf"; sourceTree = ""; }; + 891A15F32765554600B26659 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 891A15F4276557AB00B26659 /* colors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = colors.swift; sourceTree = ""; }; + 891A15F8276563CA00B26659 /* WelcomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelcomeView.swift; sourceTree = ""; }; + 891A15FC276566B800B26659 /* constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = constants.swift; sourceTree = ""; }; + 891A15FE27656F9200B26659 /* HeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeaderView.swift; sourceTree = ""; }; + 891A160027656FB200B26659 /* Footer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Footer.swift; sourceTree = ""; }; + 891A160227656FC700B26659 /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; + 891A1606276572A800B26659 /* Onboarding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Onboarding.swift; sourceTree = ""; }; + 891A160A2765732700B26659 /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; + 891A160D27657CEA00B26659 /* User.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = ""; }; + 891A1610276590B000B26659 /* ChatsCarouselView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatsCarouselView.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -51,6 +74,11 @@ 891A15DF27653A7000B26659 /* nirvana-ios */ = { isa = PBXGroup; children = ( + 891A160C27657CD600B26659 /* Models */, + 891A1609276572C600B26659 /* Globals */, + 891A15F62765639B00B26659 /* Views */, + 891A15F32765554600B26659 /* Info.plist */, + 891A15F2276552ED00B26659 /* fonts */, 891A15E027653A7000B26659 /* nirvana_iosApp.swift */, 891A15E227653A7000B26659 /* ContentView.swift */, 891A15E427653A7100B26659 /* Assets.xcassets */, @@ -67,6 +95,77 @@ path = "Preview Content"; sourceTree = ""; }; + 891A15F2276552ED00B26659 /* fonts */ = { + isa = PBXGroup; + children = ( + 891A15F02765528700B26659 /* Satisfy-Regular.ttf */, + ); + path = fonts; + sourceTree = ""; + }; + 891A15F62765639B00B26659 /* Views */ = { + isa = PBXGroup; + children = ( + 891A16052765726800B26659 /* Templates */, + 891A16042765725D00B26659 /* WelcomeView */, + 891A1608276572BB00B26659 /* HomeView */, + ); + path = Views; + sourceTree = ""; + }; + 891A16042765725D00B26659 /* WelcomeView */ = { + isa = PBXGroup; + children = ( + 891A15F8276563CA00B26659 /* WelcomeView.swift */, + ); + path = WelcomeView; + sourceTree = ""; + }; + 891A16052765726800B26659 /* Templates */ = { + isa = PBXGroup; + children = ( + 891A160027656FB200B26659 /* Footer.swift */, + 891A15FE27656F9200B26659 /* HeaderView.swift */, + 891A1606276572A800B26659 /* Onboarding.swift */, + ); + path = Templates; + sourceTree = ""; + }; + 891A1608276572BB00B26659 /* HomeView */ = { + isa = PBXGroup; + children = ( + 891A160F2765909400B26659 /* ChatsCarouselView */, + 891A160227656FC700B26659 /* HomeView.swift */, + 891A160A2765732700B26659 /* HomeViewModel.swift */, + ); + path = HomeView; + sourceTree = ""; + }; + 891A1609276572C600B26659 /* Globals */ = { + isa = PBXGroup; + children = ( + 891A15F4276557AB00B26659 /* colors.swift */, + 891A15FC276566B800B26659 /* constants.swift */, + ); + path = Globals; + sourceTree = ""; + }; + 891A160C27657CD600B26659 /* Models */ = { + isa = PBXGroup; + children = ( + 891A160D27657CEA00B26659 /* User.swift */, + ); + path = Models; + sourceTree = ""; + }; + 891A160F2765909400B26659 /* ChatsCarouselView */ = { + isa = PBXGroup; + children = ( + 891A1610276590B000B26659 /* ChatsCarouselView.swift */, + ); + path = ChatsCarouselView; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -125,6 +224,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 891A15F12765528700B26659 /* Satisfy-Regular.ttf in Resources */, 891A15E827653A7100B26659 /* Preview Assets.xcassets in Resources */, 891A15E527653A7100B26659 /* Assets.xcassets in Resources */, ); @@ -137,8 +237,18 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 891A1607276572A800B26659 /* Onboarding.swift in Sources */, 891A15E327653A7000B26659 /* ContentView.swift in Sources */, + 891A160327656FC700B26659 /* HomeView.swift in Sources */, + 891A160B2765732700B26659 /* HomeViewModel.swift in Sources */, + 891A15F5276557AB00B26659 /* colors.swift in Sources */, + 891A15F9276563CA00B26659 /* WelcomeView.swift in Sources */, + 891A1611276590B000B26659 /* ChatsCarouselView.swift in Sources */, 891A15E127653A7000B26659 /* nirvana_iosApp.swift in Sources */, + 891A160127656FB200B26659 /* Footer.swift in Sources */, + 891A15FF27656F9200B26659 /* HeaderView.swift in Sources */, + 891A15FD276566B800B26659 /* constants.swift in Sources */, + 891A160E27657CEA00B26659 /* User.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -271,6 +381,7 @@ DEVELOPMENT_ASSET_PATHS = "\"nirvana-ios/Preview Content\""; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "nirvana-ios/Info.plist"; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES; @@ -299,6 +410,7 @@ DEVELOPMENT_ASSET_PATHS = "\"nirvana-ios/Preview Content\""; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "nirvana-ios/Info.plist"; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES; diff --git a/nirvana-ios/Assets.xcassets/dummy_profile_picture.imageset/Contents.json b/nirvana-ios/Assets.xcassets/dummy_profile_picture.imageset/Contents.json new file mode 100644 index 0000000..81f7f82 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/dummy_profile_picture.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "dummy_profile_picture.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/dummy_profile_picture.imageset/dummy_profile_picture.jpeg b/nirvana-ios/Assets.xcassets/dummy_profile_picture.imageset/dummy_profile_picture.jpeg new file mode 100644 index 0000000..7fc82a5 Binary files /dev/null and b/nirvana-ios/Assets.xcassets/dummy_profile_picture.imageset/dummy_profile_picture.jpeg differ diff --git a/nirvana-ios/Assets.xcassets/dummy_profile_picture.jpeg b/nirvana-ios/Assets.xcassets/dummy_profile_picture.jpeg new file mode 100644 index 0000000..7fc82a5 Binary files /dev/null and b/nirvana-ios/Assets.xcassets/dummy_profile_picture.jpeg differ diff --git a/nirvana-ios/Assets.xcassets/handcrafts/Contents.json b/nirvana-ios/Assets.xcassets/handcrafts/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/handcrafts/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_leaf.imageset/Contents.json b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_leaf.imageset/Contents.json new file mode 100644 index 0000000..2b65107 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_leaf.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "undraw_handcrafts_leaf.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_leaf.imageset/undraw_handcrafts_leaf.svg b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_leaf.imageset/undraw_handcrafts_leaf.svg new file mode 100644 index 0000000..d3cce96 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_leaf.imageset/undraw_handcrafts_leaf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_menu.imageset/Contents.json b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_menu.imageset/Contents.json new file mode 100644 index 0000000..bf472d8 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_menu.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "undraw_handcrafts_menu.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_menu.imageset/undraw_handcrafts_menu.svg b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_menu.imageset/undraw_handcrafts_menu.svg new file mode 100644 index 0000000..87e9b36 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_menu.imageset/undraw_handcrafts_menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_options.imageset/Contents.json b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_options.imageset/Contents.json new file mode 100644 index 0000000..e378d6d --- /dev/null +++ b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_options.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "undraw_handcrafts_options.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_options.imageset/undraw_handcrafts_options.svg b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_options.imageset/undraw_handcrafts_options.svg new file mode 100644 index 0000000..1242cfa --- /dev/null +++ b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_options.imageset/undraw_handcrafts_options.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_signal.imageset/Contents.json b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_signal.imageset/Contents.json new file mode 100644 index 0000000..a3ad5a5 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_signal.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "undraw_handcrafts_signal.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_signal.imageset/undraw_handcrafts_signal.svg b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_signal.imageset/undraw_handcrafts_signal.svg new file mode 100644 index 0000000..d914e6e --- /dev/null +++ b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_signal.imageset/undraw_handcrafts_signal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_user.imageset/Contents.json b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_user.imageset/Contents.json new file mode 100644 index 0000000..8b2f01f --- /dev/null +++ b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_user.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "undraw_handcrafts_user.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_user.imageset/undraw_handcrafts_user.svg b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_user.imageset/undraw_handcrafts_user.svg new file mode 100644 index 0000000..a50b763 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/handcrafts/undraw_handcrafts_user.imageset/undraw_handcrafts_user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/nirvana-ios/Assets.xcassets/illustrations/Contents.json b/nirvana-ios/Assets.xcassets/illustrations/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_art_re_vj2w.imageset/Contents.json b/nirvana-ios/Assets.xcassets/illustrations/undraw_art_re_vj2w.imageset/Contents.json new file mode 100644 index 0000000..d126ba3 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_art_re_vj2w.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "undraw_art_re_vj2w.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_art_re_vj2w.imageset/undraw_art_re_vj2w.svg b/nirvana-ios/Assets.xcassets/illustrations/undraw_art_re_vj2w.imageset/undraw_art_re_vj2w.svg new file mode 100644 index 0000000..9015bd9 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_art_re_vj2w.imageset/undraw_art_re_vj2w.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_calling_re_mgft.imageset/Contents.json b/nirvana-ios/Assets.xcassets/illustrations/undraw_calling_re_mgft.imageset/Contents.json new file mode 100644 index 0000000..02dedf5 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_calling_re_mgft.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "undraw_calling_re_mgft.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_calling_re_mgft.imageset/undraw_calling_re_mgft.svg b/nirvana-ios/Assets.xcassets/illustrations/undraw_calling_re_mgft.imageset/undraw_calling_re_mgft.svg new file mode 100644 index 0000000..98f8ba9 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_calling_re_mgft.imageset/undraw_calling_re_mgft.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_connection_b-38-q.imageset/Contents.json b/nirvana-ios/Assets.xcassets/illustrations/undraw_connection_b-38-q.imageset/Contents.json new file mode 100644 index 0000000..d079b76 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_connection_b-38-q.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "undraw_connection_b-38-q.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_connection_b-38-q.imageset/undraw_connection_b-38-q.svg b/nirvana-ios/Assets.xcassets/illustrations/undraw_connection_b-38-q.imageset/undraw_connection_b-38-q.svg new file mode 100644 index 0000000..4c501d0 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_connection_b-38-q.imageset/undraw_connection_b-38-q.svg @@ -0,0 +1 @@ +connection \ No newline at end of file diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_enter_uhqk.imageset/Contents.json b/nirvana-ios/Assets.xcassets/illustrations/undraw_enter_uhqk.imageset/Contents.json new file mode 100644 index 0000000..672ba29 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_enter_uhqk.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "undraw_enter_uhqk.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_enter_uhqk.imageset/undraw_enter_uhqk.svg b/nirvana-ios/Assets.xcassets/illustrations/undraw_enter_uhqk.imageset/undraw_enter_uhqk.svg new file mode 100644 index 0000000..c1c24d8 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_enter_uhqk.imageset/undraw_enter_uhqk.svg @@ -0,0 +1 @@ +enter \ No newline at end of file diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_friendship_mni7.imageset/Contents.json b/nirvana-ios/Assets.xcassets/illustrations/undraw_friendship_mni7.imageset/Contents.json new file mode 100644 index 0000000..3083998 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_friendship_mni7.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "undraw_friendship_mni7.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_friendship_mni7.imageset/undraw_friendship_mni7.svg b/nirvana-ios/Assets.xcassets/illustrations/undraw_friendship_mni7.imageset/undraw_friendship_mni7.svg new file mode 100644 index 0000000..f29be0c --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_friendship_mni7.imageset/undraw_friendship_mni7.svg @@ -0,0 +1 @@ +friendship \ No newline at end of file diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_grades_re_j7d6.imageset/Contents.json b/nirvana-ios/Assets.xcassets/illustrations/undraw_grades_re_j7d6.imageset/Contents.json new file mode 100644 index 0000000..28fc5fe --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_grades_re_j7d6.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "undraw_grades_re_j7d6.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_grades_re_j7d6.imageset/undraw_grades_re_j7d6.svg b/nirvana-ios/Assets.xcassets/illustrations/undraw_grades_re_j7d6.imageset/undraw_grades_re_j7d6.svg new file mode 100644 index 0000000..4ed320b --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_grades_re_j7d6.imageset/undraw_grades_re_j7d6.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_mobile_application_mr-4-r.imageset/Contents.json b/nirvana-ios/Assets.xcassets/illustrations/undraw_mobile_application_mr-4-r.imageset/Contents.json new file mode 100644 index 0000000..308494b --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_mobile_application_mr-4-r.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "undraw_mobile_application_mr-4-r.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_mobile_application_mr-4-r.imageset/undraw_mobile_application_mr-4-r.svg b/nirvana-ios/Assets.xcassets/illustrations/undraw_mobile_application_mr-4-r.imageset/undraw_mobile_application_mr-4-r.svg new file mode 100644 index 0000000..4534c39 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_mobile_application_mr-4-r.imageset/undraw_mobile_application_mr-4-r.svg @@ -0,0 +1 @@ +Mobile_application \ No newline at end of file diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_social_dashboard_re_ocbd.imageset/Contents.json b/nirvana-ios/Assets.xcassets/illustrations/undraw_social_dashboard_re_ocbd.imageset/Contents.json new file mode 100644 index 0000000..3ae0c88 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_social_dashboard_re_ocbd.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "undraw_social_dashboard_re_ocbd.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_social_dashboard_re_ocbd.imageset/undraw_social_dashboard_re_ocbd.svg b/nirvana-ios/Assets.xcassets/illustrations/undraw_social_dashboard_re_ocbd.imageset/undraw_social_dashboard_re_ocbd.svg new file mode 100644 index 0000000..fb714a7 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_social_dashboard_re_ocbd.imageset/undraw_social_dashboard_re_ocbd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_taking_selfie_re_wlgd.imageset/Contents.json b/nirvana-ios/Assets.xcassets/illustrations/undraw_taking_selfie_re_wlgd.imageset/Contents.json new file mode 100644 index 0000000..a746a80 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_taking_selfie_re_wlgd.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "undraw_taking_selfie_re_wlgd.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_taking_selfie_re_wlgd.imageset/undraw_taking_selfie_re_wlgd.svg b/nirvana-ios/Assets.xcassets/illustrations/undraw_taking_selfie_re_wlgd.imageset/undraw_taking_selfie_re_wlgd.svg new file mode 100644 index 0000000..1eddab4 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_taking_selfie_re_wlgd.imageset/undraw_taking_selfie_re_wlgd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_through_the_park_lxnl.imageset/Contents.json b/nirvana-ios/Assets.xcassets/illustrations/undraw_through_the_park_lxnl.imageset/Contents.json new file mode 100644 index 0000000..cf880b3 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_through_the_park_lxnl.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "undraw_through_the_park_lxnl.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_through_the_park_lxnl.imageset/undraw_through_the_park_lxnl.svg b/nirvana-ios/Assets.xcassets/illustrations/undraw_through_the_park_lxnl.imageset/undraw_through_the_park_lxnl.svg new file mode 100644 index 0000000..de55c96 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_through_the_park_lxnl.imageset/undraw_through_the_park_lxnl.svg @@ -0,0 +1 @@ +through_the_park \ No newline at end of file diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_voice_assistant_nrv7.imageset/Contents.json b/nirvana-ios/Assets.xcassets/illustrations/undraw_voice_assistant_nrv7.imageset/Contents.json new file mode 100644 index 0000000..03da4c0 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_voice_assistant_nrv7.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "undraw_voice_assistant_nrv7.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/nirvana-ios/Assets.xcassets/illustrations/undraw_voice_assistant_nrv7.imageset/undraw_voice_assistant_nrv7.svg b/nirvana-ios/Assets.xcassets/illustrations/undraw_voice_assistant_nrv7.imageset/undraw_voice_assistant_nrv7.svg new file mode 100644 index 0000000..c784eb5 --- /dev/null +++ b/nirvana-ios/Assets.xcassets/illustrations/undraw_voice_assistant_nrv7.imageset/undraw_voice_assistant_nrv7.svg @@ -0,0 +1 @@ +voice_assistant \ No newline at end of file diff --git a/nirvana-ios/ContentView.swift b/nirvana-ios/ContentView.swift index 0fd21e1..6b75d91 100644 --- a/nirvana-ios/ContentView.swift +++ b/nirvana-ios/ContentView.swift @@ -9,8 +9,9 @@ import SwiftUI struct ContentView: View { var body: some View { - Text("Hello, world!") - .padding() + WelcomeView() + + HomeView() } } diff --git a/nirvana-ios/Globals/colors.swift b/nirvana-ios/Globals/colors.swift new file mode 100644 index 0000000..2a3cdc9 --- /dev/null +++ b/nirvana-ios/Globals/colors.swift @@ -0,0 +1,43 @@ +// +// colors.swift +// nirvana-ios +// +// Created by Arjun Patel on 12/11/21. +// + +import Foundation +import SwiftUI + +extension UIColor { + public convenience init?(hex: String) { + let r, g, b, a: CGFloat + + if hex.hasPrefix("#") { + let start = hex.index(hex.startIndex, offsetBy: 1) + let hexColor = String(hex[start...]) + + if hexColor.count == 8 { + let scanner = Scanner(string: hexColor) + var hexNumber: UInt64 = 0 + + if scanner.scanHexInt64(&hexNumber) { + r = CGFloat((hexNumber & 0xff000000) >> 24) / 255 + g = CGFloat((hexNumber & 0x00ff0000) >> 16) / 255 + b = CGFloat((hexNumber & 0x0000ff00) >> 8) / 255 + a = CGFloat(hexNumber & 0x000000ff) / 255 + + self.init(red: r, green: g, blue: b, alpha: a) + return + } + } + } + + return nil + } +} + +final class NirvanaColors { + static let teal:Color = Color(red: 0.0, green: 0.314, blue: 0.314) + static let bgLightGrey:Color = Color(red: 0.898, green: 0.898, blue: 0.898) + static let white: Color = Color.white +} diff --git a/nirvana-ios/Globals/constants.swift b/nirvana-ios/Globals/constants.swift new file mode 100644 index 0000000..312741e --- /dev/null +++ b/nirvana-ios/Globals/constants.swift @@ -0,0 +1,12 @@ +// +// constants.swift +// nirvana-ios +// +// Created by Arjun Patel on 12/11/21. +// + +import Foundation + +final class NirvanaConstants { + static let landingPageUrl: String = "https://usenirvana.com" +} diff --git a/nirvana-ios/Info.plist b/nirvana-ios/Info.plist new file mode 100644 index 0000000..ed7a5a9 --- /dev/null +++ b/nirvana-ios/Info.plist @@ -0,0 +1,10 @@ + + + + + UIAppFonts + + Satisfy-Regular.ttf + + + diff --git a/nirvana-ios/Models/User.swift b/nirvana-ios/Models/User.swift new file mode 100644 index 0000000..6520805 --- /dev/null +++ b/nirvana-ios/Models/User.swift @@ -0,0 +1,18 @@ +// +// User.swift +// nirvana-ios +// +// Created by Arjun Patel on 12/11/21. +// + +import Foundation +import SwiftUI + +class User: Identifiable { + var id = UUID() + var profilePictureUrl:String = "" + var firstName:String = "" + var lastName:String = "" + var name:String = "" + +} diff --git a/nirvana-ios/Views/HomeView/ChatsCarouselView/ChatsCarouselView.swift b/nirvana-ios/Views/HomeView/ChatsCarouselView/ChatsCarouselView.swift new file mode 100644 index 0000000..4aaf390 --- /dev/null +++ b/nirvana-ios/Views/HomeView/ChatsCarouselView/ChatsCarouselView.swift @@ -0,0 +1,51 @@ +// +// ChatsCarouselView.swift +// nirvana-ios +// +// Created by Arjun Patel on 12/11/21. +// + +import SwiftUI + +struct ChatsCarouselView: View { + var body: some View { + mainCarouselView + } + + var mainCarouselView: some View { + TabView { + ForEach(/*@START_MENU_TOKEN@*/0 ..< 5/*@END_MENU_TOKEN@*/) { item in + GeometryReader {proxy in + let minX = proxy.frame(in: .global).minX + + carouselUser + .rotation3DEffect(.degrees(minX / -10), axis: (x: 0, y: 1, z: 0)) + .shadow(color: Color("Shadow").opacity(0.3), radius: 10, x:0, y:10) + .blur(radius: abs(minX) / 40) + + Text("\(minX)") + }gi + } + } + .tabViewStyle(.page(indexDisplayMode: .always)) + .frame(height: 400) + } + + //the bottom navigation of the small profile pictures +// var navigationCarouselView: some View { } + + var carouselUser: some View { + Image("dummy_profile_picture") + .renderingMode(.original) + .resizable() + .aspectRatio(contentMode: .fit) + .cornerRadius(0) + .clipShape(Circle()) + } +} + +struct ChatsCarouselView_Previews: PreviewProvider { + static var previews: some View { + ChatsCarouselView() + } +} diff --git a/nirvana-ios/Views/HomeView/HomeView.swift b/nirvana-ios/Views/HomeView/HomeView.swift new file mode 100644 index 0000000..3f10a37 --- /dev/null +++ b/nirvana-ios/Views/HomeView/HomeView.swift @@ -0,0 +1,31 @@ +// +// MainVoiceChat.swift +// nirvana-ios +// +// Created by Arjun Patel on 12/11/21. +// + +import SwiftUI + +struct HomeView: View { + var body: some View { + VStack { + HeaderView(isAuth:true) + + ChatsCarouselView() + + Spacer() + } + .frame(maxWidth:.infinity, maxHeight: .infinity) + .accentColor(NirvanaColors.teal) + .background(NirvanaColors.bgLightGrey) + } +} + +struct HomeView_Previews: PreviewProvider { + static var previews: some View { + Group { + HomeView() + } + } +} diff --git a/nirvana-ios/Views/HomeView/HomeViewModel.swift b/nirvana-ios/Views/HomeView/HomeViewModel.swift new file mode 100644 index 0000000..151e2d1 --- /dev/null +++ b/nirvana-ios/Views/HomeView/HomeViewModel.swift @@ -0,0 +1,13 @@ +// +// HomeViewModel.swift +// nirvana-ios +// +// Created by Arjun Patel on 12/11/21. +// + +import Foundation + +final class HomeViewModel: ObservableObject { + @Published var personalUsers: [User] = [] + +} diff --git a/nirvana-ios/Views/Templates/Footer.swift b/nirvana-ios/Views/Templates/Footer.swift new file mode 100644 index 0000000..77912c2 --- /dev/null +++ b/nirvana-ios/Views/Templates/Footer.swift @@ -0,0 +1,8 @@ +// +// Footer.swift +// nirvana-ios +// +// Created by Arjun Patel on 12/11/21. +// + +import Foundation diff --git a/nirvana-ios/Views/Templates/HeaderView.swift b/nirvana-ios/Views/Templates/HeaderView.swift new file mode 100644 index 0000000..fae48b1 --- /dev/null +++ b/nirvana-ios/Views/Templates/HeaderView.swift @@ -0,0 +1,58 @@ +// +// Header.swift +// nirvana-ios +// +// Created by Arjun Patel on 12/11/21. +// + +import SwiftUI + +struct HeaderView: View { + var isAuthenticated:Bool = false + + init(isAuth:Bool = false) { + self.isAuthenticated = isAuth + } + + var body: some View { + HStack(alignment:.center) { + if (self.isAuthenticated) { + Image(systemName: "list.bullet.circle") + .font(Font.system(.largeTitle)) + .padding() + .foregroundColor(NirvanaColors.teal) + + } + + Spacer() + + HStack { + Image("undraw_handcrafts_leaf") + .resizable() + .frame(width: 20.0, height: 32.132) + + Text("nirvana") + .font(Font.custom("Satisfy-Regular", size: 35)) + .foregroundColor(NirvanaColors.teal) + .multilineTextAlignment(.center) + } + + Spacer() + + if (self.isAuthenticated) { + Image(systemName: "person.crop.circle.badge.plus") + .font(Font.system(.largeTitle)) + .padding() + .foregroundColor(NirvanaColors.teal) + } + + } + .frame(maxWidth: .infinity) + } +} + +struct HeaderView_Previews: PreviewProvider { + static var previews: some View { + HeaderView(isAuth:true) + } +} diff --git a/nirvana-ios/Views/Templates/Onboarding.swift b/nirvana-ios/Views/Templates/Onboarding.swift new file mode 100644 index 0000000..ce4a4eb --- /dev/null +++ b/nirvana-ios/Views/Templates/Onboarding.swift @@ -0,0 +1,20 @@ +// +// Onboarding.swift +// nirvana-ios +// +// Created by Arjun Patel on 12/11/21. +// + +import SwiftUI + +struct Onboarding: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +struct Onboarding_Previews: PreviewProvider { + static var previews: some View { + Onboarding() + } +} diff --git a/nirvana-ios/Views/WelcomeView/WelcomeView.swift b/nirvana-ios/Views/WelcomeView/WelcomeView.swift new file mode 100644 index 0000000..7e77fbf --- /dev/null +++ b/nirvana-ios/Views/WelcomeView/WelcomeView.swift @@ -0,0 +1,100 @@ +// +// Onboarding.swift +// nirvana-ios +// +// Created by Arjun Patel on 12/11/21. +// + +import SwiftUI + +struct WelcomeView: View { + var body: some View { + VStack { + // nav bar + HeaderView() + + VStack { + // illustration + Image("undraw_friendship_mni7") + .renderingMode(.original) + .resizable() + .aspectRatio(contentMode: .fit) + .padding(.horizontal, 30) + .padding(.top, 30) + + VStack(alignment: .leading) { + + Text("Your ") + .font(.title) + + Text("minimalist ") + .font(.title) + .foregroundColor(NirvanaColors.teal) + + Text("social media.") + .font(.title) + + Text("tired of the rat race on insta, tik-tok, snap, meta?") + .foregroundColor(Color.gray) + .padding(.top, 5) + } + .frame(maxWidth: .infinity) + .padding(.horizontal, 30) + .padding(.top, 20) + + Spacer() + + VStack(alignment: .center) { + Button( + action: { + print("Start your detox button clicked") + }, + label: { + Text("Start Your Detox") + .bold() + .foregroundColor(NirvanaColors.white) + } + ) + .frame(maxWidth: .infinity) + .padding(.vertical, 25) + .background(NirvanaColors.teal) + .clipShape(Capsule()) + // .shadow(color: NirvanaColors.teal, radius: 3, x: 1, y: 2) + // .cornerRadius(8) + + Button( + action: { + print("link to w ebsite learn more clicked") + }, + label: { + Text("Learn More") + .bold() + } + ) + .background(NirvanaColors.bgLightGrey) + + //learn more button to usenirvana.com + } + .frame(maxWidth: .infinity) + .padding(.horizontal, 30) + .padding(.top, 20) + + Spacer() + } + .padding() + + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + .accentColor(NirvanaColors.teal) + .background(NirvanaColors.bgLightGrey) + // .background(RadialGradient(gradient: Gradient(colors: [NirvanaColors.teal.opacity(0.1), NirvanaColors.bgLightGrey, NirvanaColors.bgLightGrey]), center: .center, startRadius: 0, endRadius: 200) + // ) + + } +} + + +struct WelcomeView_Previews: PreviewProvider { + static var previews: some View { + WelcomeView() + } +} + diff --git a/nirvana-ios/fonts/Satisfy-Regular.ttf b/nirvana-ios/fonts/Satisfy-Regular.ttf new file mode 100644 index 0000000..d428788 Binary files /dev/null and b/nirvana-ios/fonts/Satisfy-Regular.ttf differ