Initial Commit

This commit is contained in:
2024-05-02 13:20:40 +05:30
commit 39bd2e66da
103 changed files with 5420 additions and 0 deletions

240
.gitignore vendored Normal file
View File

@@ -0,0 +1,240 @@
#########################
# .gitignore file for Xcode4 and Xcode5 Source projects
#
# Apple bugs, waiting for Apple to fix/respond:
#
# 15564624 - what does the xccheckout file in Xcode5 do? Where's the documentation?
#
# Version 2.6
# For latest version, see: http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects
#
# 2015 updates:
# - Fixed typo in "xccheckout" line - thanks to @lyck for pointing it out!
# - Fixed the .idea optional ignore. Thanks to @hashier for pointing this out
# - Finally added "xccheckout" to the ignore. Apple still refuses to answer support requests about this, but in practice it seems you should ignore it.
# - minor tweaks from Jona and Coeur (slightly more precise xc* filtering/names)
# 2014 updates:
# - appended non-standard items DISABLED by default (uncomment if you use those tools)
# - removed the edit that an SO.com moderator made without bothering to ask me
# - researched CocoaPods .lock more carefully, thanks to Gokhan Celiker
# 2013 updates:
# - fixed the broken "save personal Schemes"
# - added line-by-line explanations for EVERYTHING (some were missing)
#
# NB: if you are storing "built" products, this WILL NOT WORK,
# and you should use a different .gitignore (or none at all)
# This file is for SOURCE projects, where there are many extra
# files that we want to exclude
#
#########################
#####
# OS X temporary files that should never be committed
#
# c.f. http://www.westwind.com/reference/os-x/invisibles.html
.DS_Store
# c.f. http://www.westwind.com/reference/os-x/invisibles.html
.Trashes
# c.f. http://www.westwind.com/reference/os-x/invisibles.html
*.swp
#
# *.lock - this is used and abused by many editors for many different things.
# For the main ones I use (e.g. Eclipse), it should be excluded
# from source-control, but YMMV.
# (lock files are usually local-only file-synchronization on the local FS that should NOT go in git)
# c.f. the "OPTIONAL" section at bottom though, for tool-specific variations!
#
# In particular, if you're using CocoaPods, you'll want to comment-out this line:
*.lock
#
# profile - REMOVED temporarily (on double-checking, I can't find it in OS X docs?)
#profile
####
# Xcode temporary files that should never be committed
#
# NB: NIB/XIB files still exist even on Storyboard projects, so we want this...
*~.nib
####
# Xcode build files -
#
# NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "DerivedData"
DerivedData/
# NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "build"
build/
#####
# Xcode private settings (window sizes, bookmarks, breakpoints, custom executables, smart groups)
#
# This is complicated:
#
# SOMETIMES you need to put this file in version control.
# Apple designed it poorly - if you use "custom executables", they are
# saved in this file.
# 99% of projects do NOT use those, so they do NOT want to version control this file.
# ..but if you're in the 1%, comment out the line "*.pbxuser"
# .pbxuser: http://lists.apple.com/archives/xcode-users/2004/Jan/msg00193.html
*.pbxuser
# .mode1v3: http://lists.apple.com/archives/xcode-users/2007/Oct/msg00465.html
*.mode1v3
# .mode2v3: http://lists.apple.com/archives/xcode-users/2007/Oct/msg00465.html
*.mode2v3
# .perspectivev3: http://stackoverflow.com/questions/5223297/xcode-projects-what-is-a-perspectivev3-file
*.perspectivev3
# NB: also, whitelist the default ones, some projects need to use these
!default.pbxuser
!default.mode1v3
!default.mode2v3
!default.perspectivev3
####
# Xcode 4 - semi-personal settings
#
# Apple Shared data that Apple put in the wrong folder
# c.f. http://stackoverflow.com/a/19260712/153422
# FROM ANSWER: Apple says "don't ignore it"
# FROM COMMENTS: Apple is wrong; Apple code is too buggy to trust; there are no known negative side-effects to ignoring Apple's unofficial advice and instead doing the thing that actively fixes bugs in Xcode
# Up to you, but ... current advice: ignore it.
*.xccheckout
#
#
# OPTION 1: ---------------------------------
# throw away ALL personal settings (including custom schemes!
# - unless they are "shared")
# As per build/ and DerivedData/, this ought to have a trailing slash
#
# NB: this is exclusive with OPTION 2 below
xcuserdata/
# OPTION 2: ---------------------------------
# get rid of ALL personal settings, but KEEP SOME OF THEM
# - NB: you must manually uncomment the bits you want to keep
#
# NB: this *requires* git v1.8.2 or above; you may need to upgrade to latest OS X,
# or manually install git over the top of the OS X version
# NB: this is exclusive with OPTION 1 above
#
#xcuserdata/**/*
# (requires option 2 above): Personal Schemes
#
#!xcuserdata/**/xcschemes/*
####
# XCode 4 workspaces - more detailed
#
# Workspaces are important! They are a core feature of Xcode - don't exclude them :)
#
# Workspace layout is quite spammy. For reference:
#
# /(root)/
# /(project-name).xcodeproj/
# project.pbxproj
# /project.xcworkspace/
# contents.xcworkspacedata
# /xcuserdata/
# /(your name)/xcuserdatad/
# UserInterfaceState.xcuserstate
# /xcshareddata/
# /xcschemes/
# (shared scheme name).xcscheme
# /xcuserdata/
# /(your name)/xcuserdatad/
# (private scheme).xcscheme
# xcschememanagement.plist
#
#
####
# Xcode 4 - Deprecated classes
#
# Allegedly, if you manually "deprecate" your classes, they get moved here.
#
# We're using source-control, so this is a "feature" that we do not want!
*.moved-aside
####
# OPTIONAL: Some well-known tools that people use side-by-side with Xcode / iOS development
#
# NB: I'd rather not include these here, but gitignore's design is weak and doesn't allow
# modular gitignore: you have to put EVERYTHING in one file.
#
# COCOAPODS:
#
# c.f. http://guides.cocoapods.org/using/using-cocoapods.html#what-is-a-podfilelock
# c.f. http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
#
#!Podfile.lock
#
# RUBY:
#
# c.f. http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/
#
#!Gemfile.lock
#
# IDEA:
#
# c.f. https://www.jetbrains.com/objc/help/managing-projects-under-version-control.html?search=workspace.xml
#
#.idea/workspace.xml
#
# TEXTMATE:
#
# -- UNVERIFIED: c.f. http://stackoverflow.com/a/50283/153422
#
#tm_build_errors
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
# CocoaPods
Podfile.lock
Pods
*.xcworkspace
####
# UNKNOWN: recommended by others, but I can't discover what these files are
#

26
Podfile Normal file
View File

@@ -0,0 +1,26 @@
# Uncomment the next line to define a global platform for your project
platform :ios, '13.0'
target 'WOKA' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
pod 'IQKeyboardManagerSwift', '~> 7.0.2'
pod 'lottie-ios'
# Bottom line is for removing IPHONEOS_DEPLOYMENT_TARGET
post_install do |installer|
installer.generated_projects.each do |project|
project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
config.build_settings['CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER'] = 'NO'
xcconfig_path = config.base_configuration_reference.real_path
xcconfig = File.read(xcconfig_path)
xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, "TOOLCHAIN_DIR")
File.open(xcconfig_path, "w") { |file| file << xcconfig_mod }
end
end
end
end
end

1
README.md Normal file
View File

@@ -0,0 +1 @@
# SimpliTend

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1530"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
buildArchitectures = "Automatic">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "523ED2592BDA2BC700CFED02"
BuildableName = "WOKA.app"
BlueprintName = "WOKA"
ReferencedContainer = "container:WOKA.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "523ED26F2BDA2BC900CFED02"
BuildableName = "WOKATests.xctest"
BlueprintName = "WOKATests"
ReferencedContainer = "container:WOKA.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "523ED2792BDA2BC900CFED02"
BuildableName = "WOKAUITests.xctest"
BlueprintName = "WOKAUITests"
ReferencedContainer = "container:WOKA.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "523ED2592BDA2BC700CFED02"
BuildableName = "WOKA.app"
BlueprintName = "WOKA"
ReferencedContainer = "container:WOKA.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "523ED2592BDA2BC700CFED02"
BuildableName = "WOKA.app"
BlueprintName = "WOKA"
ReferencedContainer = "container:WOKA.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@@ -0,0 +1,11 @@
{
"colors" : [
{
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,14 @@
{
"images" : [
{
"filename" : "appstore.png",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.604",
"green" : "0.051",
"red" : "0.106"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "1.000",
"green" : "1.000",
"red" : "1.000"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,23 @@
{
"images" : [
{
"filename" : "Boy.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Boy@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Boy@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,23 @@
{
"images" : [
{
"filename" : "Girl.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Girl@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Girl@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "16Years@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,23 @@
{
"images" : [
{
"filename" : "bg-splash.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "bg-splash@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "bg-splash@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Image.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Slide2@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Slide3@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

View File

@@ -0,0 +1,23 @@
{
"images" : [
{
"filename" : "Woka Logo@0.1x.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Woka Logo@0.1x@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Woka Logo@0.1x@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,27 @@
//
// AuthenticationStringConstant.swift
// WOKA
//
// Created by MacBook Pro on 29/04/24.
//
import Foundation
extension K{
struct AuthenticationStringConstant{
static let safeBelow = "Lets be Safe!"
static let safeAbove = "Lets Start Here"
static let emailAbove = "CAN WE HAVE YOUR EMAIL?"
static let emailBelow = "CAN WE HAVE YOUR PARENTS EMAIL?"
// PlaceHolderText
static let enterEmail = "Enter your email"
static let enterParentsEmail = "Enter your parent's email"
static let selectUsername = "Enter a username"
static let enterName = "Enter your name"
static let enterPassword = "Enter your password"
}
}

View File

@@ -0,0 +1,733 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
<capability name="Named colors" minToolsVersion="9.0"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<customFonts key="customFonts">
<array key="Exo2-Bold.ttf">
<string>Exo2-Bold</string>
</array>
<array key="Exo2-Medium.ttf">
<string>Exo2-Medium</string>
</array>
<array key="Exo2-Regular.ttf">
<string>Exo2-Regular</string>
</array>
</customFonts>
<scenes>
<!--EmailVC-->
<scene sceneID="d9j-IF-0ZE">
<objects>
<viewController storyboardIdentifier="EmailVC" id="Mch-YP-RvY" customClass="EmailVC" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="xyH-HB-PHf">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="BackgroundSplash" translatesAutoresizingMaskIntoConstraints="NO" id="8ZK-w6-Qrb">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="WokaLogo" translatesAutoresizingMaskIntoConstraints="NO" id="28f-Ou-tkU">
<rect key="frame" x="137" y="50" width="140" height="52.5"/>
<constraints>
<constraint firstAttribute="width" secondItem="28f-Ou-tkU" secondAttribute="height" multiplier="8:3" id="CRw-zp-zNS"/>
<constraint firstAttribute="width" constant="140" id="ecb-Ds-0NZ"/>
</constraints>
</imageView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="70" translatesAutoresizingMaskIntoConstraints="NO" id="wZZ-TW-F7M">
<rect key="frame" x="20" y="172.5" width="374" height="203.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Lets be Safe!" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yPx-mT-kaf" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="10" y="0.0" width="354" height="34"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="28"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="xww-d1-beY">
<rect key="frame" x="10" y="104" width="354" height="99.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="CAN WE HAVE YOUR PARENTS EMAIL?" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="STc-F9-ORA">
<rect key="frame" x="0.0" y="0.0" width="354" height="19.5"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="a@a.com" placeholder="Enter your email" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="DSB-Ge-wNO" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="34.5" width="354" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="MQ3-QN-YF3"/>
</constraints>
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<textInputTraits key="textInputTraits" autocorrectionType="no" keyboardType="emailAddress" enablesReturnKeyAutomatically="YES" textContentType="email"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JHJ-Zh-JC5">
<rect key="frame" x="0.0" y="99.5" width="354" height="0.0"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
</subviews>
<edgeInsets key="layoutMargins" top="0.0" left="10" bottom="0.0" right="10"/>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="35" translatesAutoresizingMaskIntoConstraints="NO" id="kWC-4v-p9x">
<rect key="frame" x="30" y="740" width="354" height="102"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="We will send a verification code to their email" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lqT-ZV-x5p" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="354" height="17"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="14"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zNR-RE-Ax8" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="52" width="354" height="50"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="4eR-zk-hWT"/>
</constraints>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Next">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
<connections>
<action selector="nextBtnTapped:" destination="Mch-YP-RvY" eventType="touchUpInside" id="B0V-Yn-gKx"/>
</connections>
</button>
</subviews>
</stackView>
</subviews>
<viewLayoutGuide key="safeArea" id="ttg-h6-Xru"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="ttg-h6-Xru" firstAttribute="trailing" secondItem="kWC-4v-p9x" secondAttribute="trailing" constant="30" id="Aiz-gO-rKU"/>
<constraint firstItem="wZZ-TW-F7M" firstAttribute="leading" secondItem="xyH-HB-PHf" secondAttribute="leading" constant="20" id="DMg-QN-pA6"/>
<constraint firstItem="ttg-h6-Xru" firstAttribute="trailing" secondItem="8ZK-w6-Qrb" secondAttribute="trailing" id="K37-Mx-ajf"/>
<constraint firstItem="28f-Ou-tkU" firstAttribute="top" secondItem="xyH-HB-PHf" secondAttribute="top" constant="50" id="Ozh-zK-f9z"/>
<constraint firstItem="8ZK-w6-Qrb" firstAttribute="top" secondItem="xyH-HB-PHf" secondAttribute="top" id="QM1-aC-fjC"/>
<constraint firstItem="ttg-h6-Xru" firstAttribute="trailing" secondItem="wZZ-TW-F7M" secondAttribute="trailing" constant="20" id="WAa-0k-8r1"/>
<constraint firstItem="28f-Ou-tkU" firstAttribute="centerX" secondItem="8ZK-w6-Qrb" secondAttribute="centerX" id="are-Hl-jNe"/>
<constraint firstAttribute="bottom" secondItem="8ZK-w6-Qrb" secondAttribute="bottom" id="aws-dt-sDv"/>
<constraint firstItem="ttg-h6-Xru" firstAttribute="bottom" secondItem="kWC-4v-p9x" secondAttribute="bottom" constant="20" id="cLG-Cn-ePY"/>
<constraint firstItem="kWC-4v-p9x" firstAttribute="leading" secondItem="ttg-h6-Xru" secondAttribute="leading" constant="30" id="ey4-4F-Gi2"/>
<constraint firstItem="wZZ-TW-F7M" firstAttribute="top" secondItem="28f-Ou-tkU" secondAttribute="bottom" constant="70" id="hWB-EW-iAt"/>
<constraint firstItem="8ZK-w6-Qrb" firstAttribute="leading" secondItem="ttg-h6-Xru" secondAttribute="leading" id="p42-pj-p5d"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="2Ni-G3-V0x"/>
<connections>
<outlet property="beSafeLabel" destination="yPx-mT-kaf" id="92c-Lu-g8h"/>
<outlet property="emailLabel" destination="STc-F9-ORA" id="HqR-bD-XIR"/>
<outlet property="emailVerifyLabel" destination="lqT-ZV-x5p" id="EBo-jq-vYb"/>
<outlet property="enterEmailTF" destination="DSB-Ge-wNO" id="D55-hm-xCe"/>
<outlet property="nextBtn" destination="zNR-RE-Ax8" id="5Lg-cZ-4HL"/>
<outlet property="wokaLogoTopConstriant" destination="Ozh-zK-f9z" id="YEf-Xn-jKl"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="uKC-hK-yO4" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-696" y="-27"/>
</scene>
<!--OTPVC-->
<scene sceneID="N9n-j1-Hje">
<objects>
<viewController storyboardIdentifier="OTPVC" id="Yeg-Vy-0ZA" customClass="OTPVC" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="xdz-zP-bYf">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="BackgroundSplash" translatesAutoresizingMaskIntoConstraints="NO" id="d15-AB-06K">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="WokaLogo" translatesAutoresizingMaskIntoConstraints="NO" id="kF6-ix-4nj">
<rect key="frame" x="137" y="50" width="140" height="52.5"/>
<constraints>
<constraint firstAttribute="width" constant="140" id="FC4-VF-29V"/>
<constraint firstAttribute="width" secondItem="kF6-ix-4nj" secondAttribute="height" multiplier="8:3" id="Har-Qr-ggl"/>
</constraints>
</imageView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="70" translatesAutoresizingMaskIntoConstraints="NO" id="mhH-Ov-1nU">
<rect key="frame" x="20" y="172.5" width="374" height="247"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NYC-6J-drr" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="10" y="0.0" width="354" height="67.5"/>
<string key="text">Please Get the Code
Sent to Your Parents Email</string>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="28"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="dF8-rD-e8F">
<rect key="frame" x="10" y="137.5" width="354" height="109.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="PLEASE ENTER THE CODE" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tB6-Qz-8Ez" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="354" height="19.5"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="HGA-bw-mMW">
<rect key="frame" x="0.0" y="34.5" width="354" height="60"/>
<subviews>
<textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="*" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="81S-Fa-CiD" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="81" height="60"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<fontDescription key="fontDescription" name="Exo2-Medium" family="Exo 2" pointSize="18"/>
<textInputTraits key="textInputTraits" keyboardType="numberPad"/>
</textField>
<textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="*" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="42K-Uu-lPQ" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="91" y="0.0" width="81" height="60"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<fontDescription key="fontDescription" name="Exo2-Medium" family="Exo 2" pointSize="18"/>
<textInputTraits key="textInputTraits" keyboardType="numberPad"/>
</textField>
<textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="*" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Hcd-Mm-IxW" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="182" y="0.0" width="81" height="60"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<fontDescription key="fontDescription" name="Exo2-Medium" family="Exo 2" pointSize="18"/>
<textInputTraits key="textInputTraits" keyboardType="numberPad"/>
</textField>
<textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="*" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="MpT-bm-drv" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="273" y="0.0" width="81" height="60"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<fontDescription key="fontDescription" name="Exo2-Medium" family="Exo 2" pointSize="18"/>
<textInputTraits key="textInputTraits" keyboardType="numberPad"/>
</textField>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="60" id="wdo-po-1qc"/>
</constraints>
</stackView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dt3-hg-7T4" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="109.5" width="354" height="0.0"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
</subviews>
<edgeInsets key="layoutMargins" top="0.0" left="10" bottom="0.0" right="10"/>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="35" translatesAutoresizingMaskIntoConstraints="NO" id="xga-nK-9qJ">
<rect key="frame" x="30" y="723" width="354" height="119"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Request them for the verfication code to activate your account" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="M3r-lS-DmW" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="354" height="34"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="14"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vVW-Kz-YaV" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="69" width="354" height="50"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="KmJ-vu-pxT"/>
</constraints>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Next">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
<connections>
<action selector="nextBtnTapped:" destination="Yeg-Vy-0ZA" eventType="touchUpInside" id="Oly-KJ-kKA"/>
</connections>
</button>
</subviews>
</stackView>
</subviews>
<viewLayoutGuide key="safeArea" id="nfv-fl-fhY"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="xga-nK-9qJ" firstAttribute="leading" secondItem="nfv-fl-fhY" secondAttribute="leading" constant="30" id="2Dp-Pf-MGJ"/>
<constraint firstItem="d15-AB-06K" firstAttribute="leading" secondItem="nfv-fl-fhY" secondAttribute="leading" id="7fw-yV-XZu"/>
<constraint firstItem="nfv-fl-fhY" firstAttribute="trailing" secondItem="mhH-Ov-1nU" secondAttribute="trailing" constant="20" id="DcY-qc-HLh"/>
<constraint firstAttribute="bottom" secondItem="d15-AB-06K" secondAttribute="bottom" id="EVj-BX-ofS"/>
<constraint firstItem="mhH-Ov-1nU" firstAttribute="leading" secondItem="xdz-zP-bYf" secondAttribute="leading" constant="20" id="Fll-JK-ujv"/>
<constraint firstItem="kF6-ix-4nj" firstAttribute="top" secondItem="xdz-zP-bYf" secondAttribute="top" constant="50" id="Plj-68-HPq"/>
<constraint firstItem="nfv-fl-fhY" firstAttribute="trailing" secondItem="d15-AB-06K" secondAttribute="trailing" id="VnF-dx-mVi"/>
<constraint firstItem="mhH-Ov-1nU" firstAttribute="top" secondItem="kF6-ix-4nj" secondAttribute="bottom" constant="70" id="cTD-Fa-gTh"/>
<constraint firstItem="nfv-fl-fhY" firstAttribute="trailing" secondItem="xga-nK-9qJ" secondAttribute="trailing" constant="30" id="fQ9-tZ-uxN"/>
<constraint firstItem="d15-AB-06K" firstAttribute="top" secondItem="xdz-zP-bYf" secondAttribute="top" id="fVp-EX-QEw"/>
<constraint firstItem="kF6-ix-4nj" firstAttribute="centerX" secondItem="d15-AB-06K" secondAttribute="centerX" id="ovf-cy-7GI"/>
<constraint firstItem="nfv-fl-fhY" firstAttribute="bottom" secondItem="xga-nK-9qJ" secondAttribute="bottom" constant="20" id="p7a-Qh-ADf"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="b8q-VK-vwl"/>
<connections>
<outlet property="codeSentLabel" destination="NYC-6J-drr" id="g32-r4-g1l"/>
<outlet property="enterCodeLabel" destination="tB6-Qz-8Ez" id="SGr-eL-sFE"/>
<outlet property="nextBtn" destination="vVW-Kz-YaV" id="oCe-dA-eea"/>
<outlet property="requestThemLabel" destination="M3r-lS-DmW" id="CzM-3U-q7x"/>
<outlet property="tf1" destination="81S-Fa-CiD" id="Eir-ru-GLT"/>
<outlet property="tf2" destination="42K-Uu-lPQ" id="PnG-VM-sHk"/>
<outlet property="tf3" destination="Hcd-Mm-IxW" id="HrM-fm-bRo"/>
<outlet property="tf4" destination="MpT-bm-drv" id="Gih-8m-Fl9"/>
<outlet property="wokaLogoTopConstriant" destination="Plj-68-HPq" id="iiN-K2-PGJ"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="XEO-Ee-iKz" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="41" y="-27"/>
</scene>
<!--User Details RegisterVC-->
<scene sceneID="wyQ-Rp-Q1h">
<objects>
<viewController storyboardIdentifier="UserDetailsRegisterVC" id="MyJ-bq-ekO" customClass="UserDetailsRegisterVC" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="VpN-eA-ll3">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="BackgroundSplash" translatesAutoresizingMaskIntoConstraints="NO" id="owo-BQ-q03">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="WokaLogo" translatesAutoresizingMaskIntoConstraints="NO" id="3uH-t8-hYF">
<rect key="frame" x="137" y="50" width="140" height="52.5"/>
<constraints>
<constraint firstAttribute="width" constant="140" id="MyE-Df-oTg"/>
<constraint firstAttribute="width" secondItem="3uH-t8-hYF" secondAttribute="height" multiplier="8:3" id="PEA-Ql-z37"/>
</constraints>
</imageView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="70" translatesAutoresizingMaskIntoConstraints="NO" id="L80-bN-1T0">
<rect key="frame" x="20" y="172.5" width="374" height="540.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Great! Now Lets Create Your WOKAccount" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3x2-kd-tL1" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="10" y="0.0" width="354" height="65"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="27"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="30" translatesAutoresizingMaskIntoConstraints="NO" id="bJs-H6-708">
<rect key="frame" x="10" y="135" width="354" height="405.5"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="qSD-g5-OZA">
<rect key="frame" x="0.0" y="0.0" width="354" height="99.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="WHATS YOUR NAME?" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eZm-zl-55m" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="354" height="19.5"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter your name" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="tgW-LH-XfR" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="34.5" width="354" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="XQt-fy-rey"/>
</constraints>
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<textInputTraits key="textInputTraits" autocorrectionType="no" enablesReturnKeyAutomatically="YES" textContentType="name"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Y3K-h2-Gbg">
<rect key="frame" x="0.0" y="99.5" width="354" height="0.0"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="LUQ-BX-nHw">
<rect key="frame" x="0.0" y="129.5" width="354" height="99.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SELECT USERNAME" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="w7B-kJ-IgM" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="354" height="19.5"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter your username" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="m50-FZ-yVO" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="34.5" width="354" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="s2f-b9-xgY"/>
</constraints>
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<textInputTraits key="textInputTraits" autocorrectionType="no" enablesReturnKeyAutomatically="YES" textContentType="username"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RuI-5z-pyW">
<rect key="frame" x="0.0" y="99.5" width="354" height="0.0"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="hWX-C0-soL">
<rect key="frame" x="0.0" y="259" width="354" height="99.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="CREATE YOUR PASSWORD" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Fev-AX-lcQ" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="354" height="19.5"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter your password" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="4gw-z0-s4a" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="34.5" width="354" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="s5g-2j-BWF"/>
</constraints>
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<textInputTraits key="textInputTraits" autocorrectionType="no" keyboardType="emailAddress" enablesReturnKeyAutomatically="YES" textContentType="email"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lyv-wM-y12">
<rect key="frame" x="0.0" y="99.5" width="354" height="0.0"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Shh!! Dont share your password with anyone." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3LF-iY-Hoi" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="388.5" width="354" height="17"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="14"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
</subviews>
<edgeInsets key="layoutMargins" top="0.0" left="10" bottom="0.0" right="10"/>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="35" translatesAutoresizingMaskIntoConstraints="NO" id="EvA-Qj-QKv">
<rect key="frame" x="30" y="792" width="354" height="50"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Kqz-rN-BEF" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="354" height="50"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="VxZ-hu-QVD"/>
</constraints>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Next">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
<connections>
<action selector="nextBtnTapped:" destination="MyJ-bq-ekO" eventType="touchUpInside" id="uMg-oZ-SbZ"/>
</connections>
</button>
</subviews>
</stackView>
</subviews>
<viewLayoutGuide key="safeArea" id="5pw-Iu-Wpd"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="5pw-Iu-Wpd" firstAttribute="trailing" secondItem="owo-BQ-q03" secondAttribute="trailing" id="4wW-gl-5z5"/>
<constraint firstItem="owo-BQ-q03" firstAttribute="leading" secondItem="5pw-Iu-Wpd" secondAttribute="leading" id="DuU-RI-0OW"/>
<constraint firstItem="5pw-Iu-Wpd" firstAttribute="trailing" secondItem="L80-bN-1T0" secondAttribute="trailing" constant="20" id="SLL-hJ-Tq0"/>
<constraint firstItem="5pw-Iu-Wpd" firstAttribute="bottom" secondItem="EvA-Qj-QKv" secondAttribute="bottom" constant="20" id="SjJ-bu-ptM"/>
<constraint firstItem="EvA-Qj-QKv" firstAttribute="leading" secondItem="5pw-Iu-Wpd" secondAttribute="leading" constant="30" id="Tri-Ey-BJe"/>
<constraint firstItem="owo-BQ-q03" firstAttribute="top" secondItem="VpN-eA-ll3" secondAttribute="top" id="VbB-Vc-lO9"/>
<constraint firstItem="5pw-Iu-Wpd" firstAttribute="trailing" secondItem="EvA-Qj-QKv" secondAttribute="trailing" constant="30" id="Vzg-K8-35e"/>
<constraint firstItem="L80-bN-1T0" firstAttribute="leading" secondItem="VpN-eA-ll3" secondAttribute="leading" constant="20" id="d1q-3N-6ue"/>
<constraint firstItem="3uH-t8-hYF" firstAttribute="centerX" secondItem="owo-BQ-q03" secondAttribute="centerX" id="hlr-Rg-23t"/>
<constraint firstAttribute="bottom" secondItem="owo-BQ-q03" secondAttribute="bottom" id="rba-mw-YXY"/>
<constraint firstItem="L80-bN-1T0" firstAttribute="top" secondItem="3uH-t8-hYF" secondAttribute="bottom" constant="70" id="rik-Hy-wqV"/>
<constraint firstItem="3uH-t8-hYF" firstAttribute="top" secondItem="VpN-eA-ll3" secondAttribute="top" constant="50" id="s9Y-ki-uEK"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="as0-6B-j9I"/>
<connections>
<outlet property="enterNameTF" destination="tgW-LH-XfR" id="4Vt-ub-4z2"/>
<outlet property="enterPasswordTF" destination="4gw-z0-s4a" id="0nn-80-Rli"/>
<outlet property="enterUserNameTF" destination="m50-FZ-yVO" id="dNR-QE-LZs"/>
<outlet property="nextBtn" destination="Kqz-rN-BEF" id="Lyc-Tb-K5U"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Bow-7Q-7qp" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="799" y="-27"/>
</scene>
<!--User IntrestVC-->
<scene sceneID="T5g-K3-JbZ">
<objects>
<viewController storyboardIdentifier="UserIntrestVC" id="cJN-jE-dFM" customClass="UserIntrestVC" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="cAe-Mf-lsK">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="BackgroundSplash" translatesAutoresizingMaskIntoConstraints="NO" id="YXE-BY-CLo">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
</imageView>
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tyX-OO-8o2">
<rect key="frame" x="0.0" y="48" width="414" height="814"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="30" translatesAutoresizingMaskIntoConstraints="NO" id="VdK-J5-rgR">
<rect key="frame" x="0.0" y="30" width="414" height="556"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="03q-h4-3f0">
<rect key="frame" x="10" y="0.0" width="394" height="68"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Nice to meet you," textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Pix-7E-Qy7">
<rect key="frame" x="0.0" y="0.0" width="394" height="31.5"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="26"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" usesAttributedText="YES" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5fJ-Y1-sF5">
<rect key="frame" x="0.0" y="36.5" width="394" height="31.5"/>
<attributedString key="attributedText">
<fragment content="Vijay">
<attributes>
<color key="NSColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<font key="NSFont" size="26" name="Exo2-Bold"/>
<paragraphStyle key="NSParagraphStyle" alignment="center" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
</attributes>
</fragment>
</attributedString>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Can we know a bit more about you?" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SDb-xl-JQx">
<rect key="frame" x="10" y="98" width="394" height="26.5"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="22"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="16" translatesAutoresizingMaskIntoConstraints="NO" id="3iR-vv-IUk">
<rect key="frame" x="10" y="154.5" width="394" height="138"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="YOUR GENDER" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GuV-CV-Huq">
<rect key="frame" x="0.0" y="0.0" width="394" height="22"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="50" translatesAutoresizingMaskIntoConstraints="NO" id="UBH-i2-Wx5">
<rect key="frame" x="0.0" y="38" width="394" height="100"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vzD-bQ-1cP">
<rect key="frame" x="30" y="0.0" width="142" height="100"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="cMG-wb-u14">
<rect key="frame" x="46.5" y="10" width="49.5" height="72"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Boy" translatesAutoresizingMaskIntoConstraints="NO" id="tci-wS-ZxN">
<rect key="frame" x="0.0" y="0.0" width="49.5" height="50"/>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="BOY" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nnY-MI-513">
<rect key="frame" x="0.0" y="50" width="49.5" height="22"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="cMG-wb-u14" firstAttribute="centerX" secondItem="vzD-bQ-1cP" secondAttribute="centerX" id="0Kj-gB-edb"/>
<constraint firstItem="cMG-wb-u14" firstAttribute="top" secondItem="vzD-bQ-1cP" secondAttribute="top" constant="10" id="WI4-qh-xwP"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6Ik-wa-umx">
<rect key="frame" x="222" y="0.0" width="142" height="100"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="yXQ-aC-gR1">
<rect key="frame" x="47" y="10" width="48.5" height="72"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Girl" translatesAutoresizingMaskIntoConstraints="NO" id="Fqa-vi-auf">
<rect key="frame" x="0.0" y="0.0" width="48.5" height="50"/>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="GIRL" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="K9G-cT-fBK">
<rect key="frame" x="0.0" y="50" width="48.5" height="22"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="yXQ-aC-gR1" firstAttribute="top" secondItem="6Ik-wa-umx" secondAttribute="top" constant="10" id="K2z-I7-Qxq"/>
<constraint firstItem="yXQ-aC-gR1" firstAttribute="centerX" secondItem="6Ik-wa-umx" secondAttribute="centerX" id="sdg-WB-W4p"/>
</constraints>
</view>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="100" id="TCe-xi-kO9"/>
</constraints>
<edgeInsets key="layoutMargins" top="0.0" left="30" bottom="0.0" right="30"/>
</stackView>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="713-kI-2TZ">
<rect key="frame" x="10" y="322.5" width="394" height="132"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="WHEN IS YOUR BIRTHDAY?" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="J83-KL-Pex">
<rect key="frame" x="0.0" y="0.0" width="394" height="22"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<datePicker contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" datePickerMode="date" style="wheels" translatesAutoresizingMaskIntoConstraints="NO" id="QrL-xJ-2yI">
<rect key="frame" x="0.0" y="32" width="394" height="100"/>
<constraints>
<constraint firstAttribute="height" constant="100" id="uDd-Ik-9bt"/>
</constraints>
</datePicker>
</subviews>
</stackView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="WHEN ARE YOUR INTRESTS?" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="agP-Pb-cQD">
<rect key="frame" x="10" y="484.5" width="394" height="22"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Select as many as you want" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LYR-yD-QKs">
<rect key="frame" x="10" y="536.5" width="394" height="19.5"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<edgeInsets key="layoutMargins" top="0.0" left="10" bottom="0.0" right="10"/>
</stackView>
</subviews>
<constraints>
<constraint firstItem="OHA-L6-olC" firstAttribute="bottom" secondItem="VdK-J5-rgR" secondAttribute="bottom" id="A4j-Yl-reT"/>
<constraint firstItem="VdK-J5-rgR" firstAttribute="leading" secondItem="OHA-L6-olC" secondAttribute="leading" id="JMQ-LC-HYL"/>
<constraint firstItem="VdK-J5-rgR" firstAttribute="top" secondItem="tyX-OO-8o2" secondAttribute="top" constant="30" id="WQq-91-b9o"/>
<constraint firstItem="VdK-J5-rgR" firstAttribute="width" secondItem="OHA-L6-olC" secondAttribute="width" id="wXz-8T-OB4"/>
<constraint firstItem="mpe-FM-ECN" firstAttribute="trailing" secondItem="VdK-J5-rgR" secondAttribute="trailing" id="xaU-89-Bc5"/>
</constraints>
<viewLayoutGuide key="contentLayoutGuide" id="OHA-L6-olC"/>
<viewLayoutGuide key="frameLayoutGuide" id="mpe-FM-ECN"/>
</scrollView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hAv-PV-elG" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="30" y="812" width="354" height="50"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="3O5-pI-43j"/>
</constraints>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Next">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
<connections>
<action selector="nextBtnTapped:" destination="Yeg-Vy-0ZA" eventType="touchUpInside" id="aL8-ue-HWX"/>
</connections>
</button>
</subviews>
<viewLayoutGuide key="safeArea" id="foj-UB-yJK"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="YXE-BY-CLo" firstAttribute="leading" secondItem="foj-UB-yJK" secondAttribute="leading" id="JN0-oN-QAw"/>
<constraint firstItem="tyX-OO-8o2" firstAttribute="bottom" secondItem="foj-UB-yJK" secondAttribute="bottom" id="NOb-CN-qZc"/>
<constraint firstItem="foj-UB-yJK" firstAttribute="trailing" secondItem="YXE-BY-CLo" secondAttribute="trailing" id="RJ4-RM-4oI"/>
<constraint firstItem="tyX-OO-8o2" firstAttribute="top" secondItem="foj-UB-yJK" secondAttribute="top" id="UYo-ev-rGX"/>
<constraint firstItem="tyX-OO-8o2" firstAttribute="leading" secondItem="foj-UB-yJK" secondAttribute="leading" id="X2N-pX-DNK"/>
<constraint firstItem="foj-UB-yJK" firstAttribute="bottom" secondItem="hAv-PV-elG" secondAttribute="bottom" id="a0f-Rb-HMB"/>
<constraint firstItem="tyX-OO-8o2" firstAttribute="trailing" secondItem="foj-UB-yJK" secondAttribute="trailing" id="aqh-4x-hox"/>
<constraint firstItem="YXE-BY-CLo" firstAttribute="top" secondItem="cAe-Mf-lsK" secondAttribute="top" id="bd4-5g-gQk"/>
<constraint firstItem="foj-UB-yJK" firstAttribute="trailing" secondItem="hAv-PV-elG" secondAttribute="trailing" constant="30" id="vhA-ui-fMg"/>
<constraint firstItem="hAv-PV-elG" firstAttribute="leading" secondItem="foj-UB-yJK" secondAttribute="leading" constant="30" id="xTU-It-yee"/>
<constraint firstAttribute="bottom" secondItem="YXE-BY-CLo" secondAttribute="bottom" id="xTr-fi-VFU"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="gHq-kx-Fzi"/>
<connections>
<outlet property="boyView" destination="vzD-bQ-1cP" id="Sq8-2n-ZeA"/>
<outlet property="datePicker" destination="QrL-xJ-2yI" id="KD6-A4-7fS"/>
<outlet property="girlView" destination="6Ik-wa-umx" id="JOO-44-pWF"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="1l2-jy-JLN" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1576.8115942028987" y="-27.455357142857142"/>
</scene>
</scenes>
<designables>
<designable name="42K-Uu-lPQ">
<size key="intrinsicContentSize" width="8.5" height="23.5"/>
</designable>
<designable name="4gw-z0-s4a">
<size key="intrinsicContentSize" width="200.5" height="21"/>
</designable>
<designable name="81S-Fa-CiD">
<size key="intrinsicContentSize" width="8.5" height="23.5"/>
</designable>
<designable name="DSB-Ge-wNO">
<size key="intrinsicContentSize" width="169" height="21"/>
</designable>
<designable name="Hcd-Mm-IxW">
<size key="intrinsicContentSize" width="8.5" height="23.5"/>
</designable>
<designable name="MpT-bm-drv">
<size key="intrinsicContentSize" width="8.5" height="23.5"/>
</designable>
<designable name="m50-FZ-yVO">
<size key="intrinsicContentSize" width="201.5" height="21"/>
</designable>
<designable name="tgW-LH-XfR">
<size key="intrinsicContentSize" width="169.5" height="21"/>
</designable>
</designables>
<resources>
<image name="BackgroundSplash" width="428" height="926"/>
<image name="Boy" width="49.5" height="50"/>
<image name="Girl" width="48.5" height="50"/>
<image name="WokaLogo" width="2224" height="450.5"/>
<namedColor name="TextDarkBlue">
<color red="0.10599999874830246" green="0.050999999046325684" blue="0.60399997234344482" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

View File

@@ -0,0 +1,66 @@
//
// EmailVC.swift
// WOKA
//
// Created by Bilal on 26/04/2024.
//
import UIKit
class EmailVC: UIViewController {
@IBOutlet weak var nextBtn: LocalisedElementsButton!
@IBOutlet weak var enterEmailTF: UITextField!
@IBOutlet weak var wokaLogoTopConstriant: NSLayoutConstraint!
@IBOutlet weak var beSafeLabel: UILabel!
@IBOutlet weak var emailLabel: UILabel!
@IBOutlet weak var emailVerifyLabel: LocalisedElementsLabel!
var vm = EmailVM()
// MARK: - LifeCycle
override func viewDidLoad() {
super.viewDidLoad()
vm.vc = self
vm.initView()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.setNavigationBarHidden(false, animated: animated)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.setNavigationBarHidden(true, animated: animated)
}
@IBAction func nextBtnTapped(_ sender: LocalisedElementsButton) {
DispatchQueue.main.async { [weak self] in
guard let self else{return}
//validate email fiirst
let emailValidate = EmailValidation(email: enterEmailTF.text!).validate()
if emailValidate != .isCorrect{
enterEmailTF.rightView?.isHidden = false
enterEmailTF.setError(emailValidate.rawValue, show: true)
return
}
let sb = UIStoryboard(name: K.StoryBoard.authenticationSB, bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Authentication.oTPVC) as! OTPVC
self.navigationController?.pushViewController(vc, animated: true)
}
}
}
extension EmailVC : UITextFieldDelegate{
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool{
return true
}
}

View File

@@ -0,0 +1,80 @@
//
// OTPVC.swift
// WOKA
//
// Created by MacBook Pro on 29/04/24.
//
import UIKit
class OTPVC : UIViewController{
@IBOutlet weak var wokaLogoTopConstriant: NSLayoutConstraint!
@IBOutlet weak var tf1: UITextField!
@IBOutlet weak var tf2: UITextField!
@IBOutlet weak var tf3: UITextField!
@IBOutlet weak var tf4: UITextField!
@IBOutlet weak var nextBtn: LocalisedElementsButton!
@IBOutlet weak var codeSentLabel: UILabel!
@IBOutlet weak var enterCodeLabel: UILabel!
@IBOutlet weak var requestThemLabel: LocalisedElementsLabel!
var vm = OTPVM()
override func viewDidLoad() {
super.viewDidLoad()
vm.vc = self
vm.initView()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.setNavigationBarHidden(false, animated: animated)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.setNavigationBarHidden(true, animated: animated)
}
// MARK: - Button Tap Handler
@IBAction func nextBtnTapped(_ sender: LocalisedElementsButton) {
let sb = UIStoryboard(name: K.StoryBoard.authenticationSB, bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Authentication.userDetailsRegisterVC) as! UserDetailsRegisterVC
self.navigationController?.pushViewController(vc, animated: true)
}
}
// MARK: - TextField Delegate
extension OTPVC : UITextFieldDelegate{
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool{
// Check if the input text contains only numbers
if !string.onlyNumber(){return false}
// If user pastes text into the text field, check the count and process accordingly
if string.count == 4{
self.vm.textFieldDidChange(textField, otpCode: string)
return false
}
// Limit the input to one character
let maxLength = 1
let currentString = (textField.text ?? "") as NSString
let newString = currentString.replacingCharacters(in: range, with: string)
return newString.count <= maxLength
}
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
// Check if the pasted text contains the content of the general pasteboard
if text.contains(UIPasteboard.general.string ?? "") {
return false
}
return true
}
}

View File

@@ -0,0 +1,48 @@
//
// UserDetailsRegisterVC.swift
// WOKA
//
// Created by MacBook Pro on 29/04/24.
//
import UIKit
class UserDetailsRegisterVC : UIViewController{
@IBOutlet weak var nextBtn: LocalisedElementsButton!
@IBOutlet weak var enterNameTF: TextFieldShadow!
@IBOutlet weak var enterUserNameTF: TextFieldShadow!
@IBOutlet weak var enterPasswordTF: TextFieldShadow!
var vm = UserDetailsRegisterVM()
override func viewDidLoad() {
super.viewDidLoad()
vm.vc = self
vm.initView()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.setNavigationBarHidden(false, animated: animated)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.setNavigationBarHidden(true, animated: animated)
}
// MARK: - Button Tap Handler
@IBAction func nextBtnTapped(_ sender: LocalisedElementsButton) {
let sb = UIStoryboard(name: K.StoryBoard.authenticationSB, bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Authentication.userIntrestVC) as! UserIntrestVC
self.navigationController?.pushViewController(vc, animated: true)
}
}
// MARK: - Textfield Delegate
extension UserDetailsRegisterVC : UITextFieldDelegate{
}

View File

@@ -0,0 +1,28 @@
//
// UserIntrestVC.swift
// WOKA
//
// Created by MacBook Pro on 30/04/24.
//
import UIKit
class UserIntrestVC: UIViewController {
@IBOutlet weak var boyView: UIView!
@IBOutlet weak var girlView: UIView!
@IBOutlet weak var datePicker: UIDatePicker!
var vm = UserIntrestVM()
override func viewDidLoad() {
super.viewDidLoad()
vm.vc = self
vm.initView()
boyView.roundCorner(radius: 25)
girlView.roundCorner(radius: 25)
datePicker.setValue(UIColor.appColor(.TextDarkBlue), forKeyPath: "textColor")
}
}

View File

@@ -0,0 +1,49 @@
//
// EmailVM.swift
// WOKA
//
// Created by MacBook Pro on 29/04/24.
//
import UIKit
class EmailVM{
weak var vc : EmailVC!
func initView(){
let color1 = #colorLiteral(red: 0.144693464, green: 0.1426281333, blue: 0.6686832905, alpha: 1)
let color2 = #colorLiteral(red: 0.6901960784, green: 0.2745098039, blue: 0.7568627451, alpha: 1)
vc.nextBtn.applyGradient(colors: [color1, color2], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0.8, y: 0))
vc.nextBtn.roundCorner()
vc.enterEmailTF.roundCorner()
// Set up text field delegate
vc.enterEmailTF.delegate = vc.self
vc.enterEmailTF.addRightButton(title: "", tintColor: UIColor.red, btnImage: UIImage(systemName: "exclamationmark.circle.fill"), target: self, action: #selector(validationIconTapped))
vc.enterEmailTF.rightView?.isHidden = true
self.vc.wokaLogoTopConstriant.constant = CheckPhoneHomeBtnOrNotch.shareInstance.topConstriant()
//Checking UserType to update the text
if AuthFunc.shareInstance.userType == .adult{
vc.enterEmailTF.placeholder = K.AuthenticationStringConstant.enterEmail.localized(loc: K.GVar.localized)
vc.emailVerifyLabel.isHidden = true
vc.beSafeLabel.text = K.AuthenticationStringConstant.safeAbove.localized(loc: K.GVar.localized)
vc.emailLabel.text = K.AuthenticationStringConstant.emailAbove.localized(loc: K.GVar.localized)
}else{
vc.enterEmailTF.placeholder = K.AuthenticationStringConstant.enterParentsEmail.localized(loc: K.GVar.localized)
vc.beSafeLabel.text = K.AuthenticationStringConstant.safeBelow.localized(loc: K.GVar.localized)
vc.emailLabel.text = K.AuthenticationStringConstant.emailBelow.localized(loc: K.GVar.localized)
}
}
// Function to handle tap on validation icon
@objc func validationIconTapped() {
let errorView = errorViews.object(forKey: vc.enterEmailTF)
if let errorView = errorView {
errorView.isHidden.toggle()
}
}
}

View File

@@ -0,0 +1,104 @@
//
// OTPVM.swift
// WOKA
//
// Created by MacBook Pro on 29/04/24.
//
import UIKit
class OTPVM{
weak var vc : OTPVC!
func initView(){
let color1 = #colorLiteral(red: 0.144693464, green: 0.1426281333, blue: 0.6686832905, alpha: 1)
let color2 = #colorLiteral(red: 0.6901960784, green: 0.2745098039, blue: 0.7568627451, alpha: 1)
vc.nextBtn.applyGradient(colors: [color1, color2], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0.8, y: 0))
vc.nextBtn.roundCorner()
self.vc.wokaLogoTopConstriant.constant = CheckPhoneHomeBtnOrNotch.shareInstance.topConstriant()
tfMod(textField: [vc.tf1, vc.tf2, vc.tf3, vc.tf4])
if AuthFunc.shareInstance.userType == .adult{
vc.codeSentLabel.text = "Please Get the OTP Sent to Your Email".localized(loc: K.GVar.localized)
vc.enterCodeLabel.text = "PLEASE ENTER THE OTP".localized(loc: K.GVar.localized)
vc.requestThemLabel.text = "Dont forget to check your JUNK/SPAM folder".localized(loc: K.GVar.localized)
}else{
vc.codeSentLabel.text = "Please Get the Code Sent to Your Parents Email".localized(loc: K.GVar.localized)
vc.enterCodeLabel.text = "PLEASE ENTER THE CODE".localized(loc: K.GVar.localized)
vc.requestThemLabel.text = "Request them for the verfication code to activate your account".localized(loc: K.GVar.localized)
}
}
private func tfMod(textField : [UITextField]){
for i in textField{
i.roundCorner(radius: i.frame.height / 2)
i.delegate = vc.self
i.textContentType = .oneTimeCode
i.addTarget(self, action: #selector(self.textFieldDidChange(textField:)), for: UIControl.Event.editingChanged)
}
}
// MARK: - TextField OTp handling
func textFieldDidChange(_ textField: UITextField, otpCode: String) {
if textField.textContentType == UITextContentType.oneTimeCode{
//here split the text to your four text fields
if otpCode.count == 4, Int(otpCode) != nil {
vc.tf1.text = String(otpCode[otpCode.index(otpCode.startIndex, offsetBy: 0)])
vc.tf2.text = String(otpCode[otpCode.index(otpCode.startIndex, offsetBy: 1)])
vc.tf3.text = String(otpCode[otpCode.index(otpCode.startIndex, offsetBy: 2)])
vc.tf4.text = String(otpCode[otpCode.index(otpCode.startIndex, offsetBy: 3)])
// let textFields = [vc.tf1,vc.tf2,vc.tf3,vc.tf4]
// for i in 0..<textFields.count{
// textFields[i].layer.borderColor = UIColor.GREEN_COLOR.cgColor
// }
} else {
textField.text = ""
}
textField.resignFirstResponder()
}
}
func emptyTF(tf : [UITextField]){
DispatchQueue.main.async {
for i in tf{
i.text = ""
}
}
}
@objc func textFieldDidChange(textField: UITextField){
let text = textField.text
if text?.count == 1 {
switch textField{
case vc.tf1:
vc.tf2.becomeFirstResponder()
case vc.tf2:
vc.tf3.becomeFirstResponder()
case vc.tf3:
vc.tf4.becomeFirstResponder()
case vc.tf4:
vc.tf4.resignFirstResponder()
default:
break
}
}
if text?.count == 0 {
switch textField{
case vc.tf1:
vc.tf1.becomeFirstResponder()
case vc.tf2:
vc.tf1.becomeFirstResponder()
case vc.tf3:
vc.tf2.becomeFirstResponder()
case vc.tf4:
vc.tf3.becomeFirstResponder()
default:
break
}
}
}
}

View File

@@ -0,0 +1,35 @@
//
// UserDetailsRegisterVM.swift
// WOKA
//
// Created by MacBook Pro on 29/04/24.
//
import UIKit
class UserDetailsRegisterVM{
weak var vc : UserDetailsRegisterVC!
func initView(){
let color1 = #colorLiteral(red: 0.144693464, green: 0.1426281333, blue: 0.6686832905, alpha: 1)
let color2 = #colorLiteral(red: 0.6901960784, green: 0.2745098039, blue: 0.7568627451, alpha: 1)
vc.nextBtn.applyGradient(colors: [color1, color2], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0.8, y: 0))
vc.nextBtn.roundCorner()
tfMod(textField: [vc.enterNameTF, vc.enterPasswordTF, vc.enterUserNameTF])
hindiEnglishLanguage()
}
func hindiEnglishLanguage(){
vc.enterNameTF.placeholder = K.AuthenticationStringConstant.enterName.localized(loc: K.GVar.localized)
vc.enterUserNameTF.placeholder = K.AuthenticationStringConstant.selectUsername.localized(loc: K.GVar.localized)
vc.enterPasswordTF.placeholder = K.AuthenticationStringConstant.enterPassword.localized(loc: K.GVar.localized)
}
private func tfMod(textField : [UITextField]){
for i in textField{
i.roundCorner(radius: i.frame.height / 2)
i.delegate = vc.self
}
}
}

View File

@@ -0,0 +1,17 @@
//
// UserIntrestVM.swift
// WOKA
//
// Created by MacBook Pro on 30/04/24.
//
import Foundation
class UserIntrestVM{
weak var vc : UserIntrestVC!
func initView(){
}
}

View File

@@ -0,0 +1,2 @@

View File

@@ -0,0 +1,6 @@
/* Class = "UIButton"; normalTitle = "हिंदी"; ObjectID = "SYp-e1-w6s"; */
"SYp-e1-w6s.normalTitle" = "हिंदी";
/* Class = "UIButton"; normalTitle = "English"; ObjectID = "XdB-NB-osA"; */
"XdB-NB-osA.normalTitle" = "English";

View File

@@ -0,0 +1,30 @@
{
"sourceLanguage" : "en",
"strings" : {
"STc-F9-ORA.text" : {
"comment" : "Class = \"UILabel\"; text = \"CAN WE HAVE YOUR EMAIL?\"; ObjectID = \"STc-F9-ORA\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "CAN WE HAVE YOUR EMAIL?"
}
}
}
},
"yPx-mT-kaf.text" : {
"comment" : "Class = \"UILabel\"; text = \"Lets Start Here\"; ObjectID = \"yPx-mT-kaf\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Lets Start Here"
}
}
}
}
},
"version" : "1.0"
}

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="BackgroundSplash" translatesAutoresizingMaskIntoConstraints="NO" id="8v1-SP-QP0">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
</imageView>
</subviews>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="8v1-SP-QP0" secondAttribute="bottom" id="53S-Io-tSh"/>
<constraint firstItem="8v1-SP-QP0" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="DZq-d9-ryJ"/>
<constraint firstItem="8v1-SP-QP0" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" id="E7C-iB-TDx"/>
<constraint firstItem="8v1-SP-QP0" firstAttribute="trailing" secondItem="6Tk-OE-BBY" secondAttribute="trailing" id="G7L-G0-AS5"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="52.671755725190835" y="374.64788732394368"/>
</scene>
</scenes>
<resources>
<image name="BackgroundSplash" width="428" height="926"/>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

View File

@@ -0,0 +1,18 @@
//
// CellIdentifier.swift
// WOKA
//
// Created by Bilal on 26/04/2024.
//
import Foundation
extension K{
struct CellIdentifier{
struct OnBoarding{
static let onBoardCell = "OnBoardCell"
}
}
}

View File

@@ -0,0 +1,12 @@
//
// Constant.swift
// WOKA
//
// Created by MacBook Pro on 25/04/24.
//
import Foundation
struct K {
}

View File

@@ -0,0 +1,16 @@
//
// GVar.swift
// WOKA
//
// Created by Bilal on 26/04/2024.
//
import Foundation
extension K{
struct GVar{
static var localized = K.LocalizedEnum.english
}
}

View File

@@ -0,0 +1,15 @@
//
// LocalizedEnum.swift
// WOKA
//
// Created by MacBook Pro on 25/04/24.
//
import Foundation
extension K{
enum LocalizedEnum{
static let hindi = "hi"
static let english = "en"
}
}

View File

@@ -0,0 +1,108 @@
//
// OnBoardVM.swift
// WOKA
//
// Created by Bilal on 26/04/2024.
//
import UIKit
import Lottie
class OnBoardVM{
weak var vc : OnBoardVC!
private var animationView: LottieAnimationView?
var data : [CarouselData]?
func initData(){
//Animate background
animateWokaLogo()
//Play Sound globally
playBackGroundAnimationJSON()
//Gradient and round corner for button
let color1 = #colorLiteral(red: 0.144693464, green: 0.1426281333, blue: 0.6686832905, alpha: 1)
let color2 = #colorLiteral(red: 0.4862745098, green: 0.1960784314, blue: 0.7019607843, alpha: 1)
let color3 = #colorLiteral(red: 0.968627451, green: 0.7882352941, blue: 0.1294117647, alpha: 1)
let color4 = #colorLiteral(red: 0.968627451, green: 0.4196078431, blue: 0.1098039216, alpha: 1)
let color5 = #colorLiteral(red: 0.6666666667, green: 0.6666666667, blue: 0.231372549, alpha: 1)
let color6 = #colorLiteral(red: 0.09803921569, green: 0.4392156863, blue: 0.4156862745, alpha: 1)
vc.createAccountBtn.applyGradient(colors: [color1, color2], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0, y: 0.8))
vc.loginBtn.applyGradient(colors: [color4, color3], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0, y: 0.8))
vc.loginAsGuestBtn.applyGradient(colors: [color6, color5], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0, y: 0.8))
vc.createAccountBtn.roundCorner()
vc.loginBtn.roundCorner()
vc.loginAsGuestBtn.roundCorner()
// Setting button text to localize
vc.createAccountBtn.setTitle("CREATE YOUR ACCOUNT".localized(loc: K.GVar.localized), for: .normal)
vc.loginBtn.setTitle("LOGIN".localized(loc: K.GVar.localized), for: .normal)
vc.loginAsGuestBtn.setTitle("Continue as a Guest".localized(loc: K.GVar.localized), for: .normal)
// Init Collection Data
vc.pageControl.numberOfPages = 3
data = [CarouselData(title: "Watch, Listen & Play".localized(loc: K.GVar.localized), desc: "LIVE TV, VIDEOS, GAMES, AND AUDIO BOOKS".localized(loc: K.GVar.localized), image: "Slide1"),
CarouselData(title: "Sing-Along and Shop".localized(loc: K.GVar.localized), desc: "", image: "Slide2"),
CarouselData(title: "Lets all go to WOKALAND".localized(loc: K.GVar.localized), desc: "".localized(loc: K.GVar.localized), image: "Slide3")]
//Setup CollectionView
setupCell()
//after all setup animate the bottom stack to appear
UIView.animate(withDuration: 0.3, delay: 0.4, options: .transitionCrossDissolve, animations: {
self.vc.mainStack.alpha = 1
}, completion: nil)
}
func animateWokaLogo(){
var topConstriant = CheckPhoneHomeBtnOrNotch.shareInstance.topConstriant()
UIView.animate(withDuration: 0.6, animations: {
self.vc.wokaLogoTopConstriant.constant = topConstriant
// Inform the layout system to update
self.vc.view.layoutIfNeeded()
// Unhide the view with cross dissolve animation and delay
})
}
func setupCell(){
vc.carouselCV.register(UINib(nibName: K.CellIdentifier.OnBoarding.onBoardCell, bundle: nil), forCellWithReuseIdentifier: K.CellIdentifier.OnBoarding.onBoardCell)
vc.carouselCV.delegate = vc.self
vc.carouselCV.dataSource = vc.self
}
// MARK: - Background animation
func playBackGroundAnimationJSON(){
animationView = .init(name: K.StaticFilesString.passingCloud)
animationView!.frame = vc.viewLottie.bounds
//Set animation content mode
animationView!.contentMode = .scaleAspectFill
//Set animation loop mode
animationView!.loopMode = .loop
animationView?.backgroundBehavior = .pauseAndRestore
//Adjust animation speed
animationView!.animationSpeed = 1
vc.viewLottie.addSubview(animationView!)
//Play animation
animationView!.play()
}
func stopBackGroundAnimationJSON(){
animationView?.pause()
}
func resumeBackGroundAnimationJSON(){
animationView?.play()
}
}

View File

@@ -0,0 +1,17 @@
//
// StaticFilesString.swift
// WOKA
//
// Created by MacBook Pro on 25/04/24.
//
import Foundation
extension K{
struct StaticFilesString{
static let wokaSplashSound = "WokaSplashSound"
static let onBoardMainSound = "OnBoardMainSound"
static let passingCloud = "PassingCloud"
}
}

View File

@@ -0,0 +1,16 @@
//
// StoryBoard.swift
// WOKA
//
// Created by Bilal on 26/04/2024.
//
import Foundation
extension K{
struct StoryBoard{
static let main = "Main"
static let authenticationSB = "AuthenticationSB"
}
}

View File

@@ -0,0 +1,28 @@
//
// StoryBoard.swift
// WOKA
//
// Created by Bilal on 26/04/2024.
//
import Foundation
extension K{
struct StoryBoardID{
struct OnBoarding{
static let splashVC = "SplashVC"
static let onBoardVC = "OnBoardVC"
static let selectAgeVC = "SelectAgeVC"
}
struct Authentication{
static let emailVC = "EmailVC"
static let oTPVC = "OTPVC"
static let userDetailsRegisterVC = "UserDetailsRegisterVC"
static let userIntrestVC = "UserIntrestVC"
}
}
}

View File

@@ -0,0 +1,21 @@
//
// File.swift
// WOKA
//
// Created by Bilal on 26/04/2024.
//
import Foundation
extension K{
/**
This is not for external use!
This should only be used for storing the defaults
*/
struct UserDefaultsStruct{
// App Update
static let appUpdateSkipVer = "appUpdateSkipVer"
}
}

View File

@@ -0,0 +1,19 @@
//
// AssetColor.swift
// WOKA
//
// Created by Bilal on 26/04/2024.
//
import UIKit
enum AssetsColor: String {
case TextDarkBlue
}
extension UIColor {
static func appColor(_ name: AssetsColor) -> UIColor? {
return UIColor(named: name.rawValue)
}
}

View File

@@ -0,0 +1,59 @@
//
// CheckPhoneHomeBtnOrNotch.swift
// WOKA
//
// Created by MacBook Pro on 29/04/24.
//
import UIKit
enum DeviceTypeEnum{
case notch
case homeButton
case notFound
}
class CheckPhoneHomeBtnOrNotch{
static let shareInstance = CheckPhoneHomeBtnOrNotch()
func check() -> DeviceTypeEnum{
switch UIDevice().hasNotch{
case true:
return .notch
case false:
return .homeButton
}
}
func topConstriant() -> CGFloat{
switch CheckPhoneHomeBtnOrNotch.shareInstance.check(){
case .notch:
return 40
case .homeButton:
return 15
case .notFound:
return 0
}
}
}
extension UIDevice {
var hasNotch: Bool {
if #available(iOS 13.0, *) {
let scenes = UIApplication.shared.connectedScenes
let windowScene = scenes.first as? UIWindowScene
guard let window = windowScene?.windows.first else { return false }
return window.safeAreaInsets.top > 20
}
if #available(iOS 11.0, *) {
let top = UIApplication.shared.windows[0].safeAreaInsets.top
return top > 20
} else {
// Fallback on earlier versions
return false
}
}
}

View File

@@ -0,0 +1,16 @@
//
// LocalizedString.swift
// WOKA
//
// Created by MacBook Pro on 25/04/24.
//
import Foundation
extension String{
func localized(loc: String) -> String{
let path = Bundle.main.path(forResource: loc, ofType: "lproj")
let bundle = Bundle(path: path!)
return NSLocalizedString(self, tableName: nil , bundle: bundle!, value: "", comment: "")
}
}

View File

@@ -0,0 +1,47 @@
//
// ShadowView.swift
// WOKA
//
// Created by MacBook Pro on 29/04/24.
//
import UIKit
class ShadowView: UIView {
@IBInspectable var shadowColor : UIColor?
@IBInspectable var cornerRadius : CGFloat = 8
@IBInspectable var shadowOpacity : Float = 0.3
override var bounds: CGRect {
didSet {
setupShadow()
}
}
private func setupShadow() {
self.layer.cornerRadius = cornerRadius
self.layer.shadowOffset = CGSize(width: 0, height: 3)
self.layer.shadowColor = (shadowColor != nil) ? shadowColor!.cgColor : UIColor.lightGray.cgColor
self.layer.shadowRadius = cornerRadius
self.layer.shadowOpacity = shadowOpacity
self.layer.shadowPath = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: .allCorners, cornerRadii: CGSize(width: 8, height: 8)).cgPath
self.layer.shouldRasterize = true
self.layer.rasterizationScale = UIScreen.main.scale
}
}
extension UIView {
func addShadowAndCorner(radius: CGFloat, shadowColor: UIColor = .black, shadowOpacity: Float = 0.5, shadowOffset: CGSize = CGSize(width: 0, height: 2), shadowRadius: CGFloat = 2) {
layer.cornerRadius = radius
layer.masksToBounds = false
layer.shadowColor = shadowColor.cgColor
layer.shadowOpacity = shadowOpacity
layer.shadowOffset = shadowOffset
layer.shadowRadius = shadowRadius
layer.shadowPath = UIBezierPath(roundedRect: bounds, cornerRadius: radius).cgPath
}
}

View File

@@ -0,0 +1,57 @@
//
// StringSubScript.swift
// WOKA
//
// Created by MacBook Pro on 29/04/24.
//
import Foundation
/*
The first subscript allows you to access an element at a specific offset in the string.
The next two subscripts allow you to get a subsequence using a range (open or closed).
The last three subscripts handle partial ranges, providing a subsequence from the start, up to a specified index, or from a specified index to the end.
*/
import Foundation
extension StringProtocol {
subscript(_ offset: Int) -> Element { self[index(startIndex, offsetBy: offset)] }
subscript(_ range: Range<Int>) -> SubSequence { prefix(range.lowerBound+range.count).suffix(range.count) }
subscript(_ range: ClosedRange<Int>) -> SubSequence { prefix(range.lowerBound+range.count).suffix(range.count) }
subscript(_ range: PartialRangeThrough<Int>) -> SubSequence { prefix(range.upperBound.advanced(by: 1)) }
subscript(_ range: PartialRangeUpTo<Int>) -> SubSequence { prefix(range.upperBound) }
subscript(_ range: PartialRangeFrom<Int>) -> SubSequence { suffix(Swift.max(0, count-range.lowerBound)) }
}
extension LosslessStringConvertible {
var string: String { .init(self) }
}
extension BidirectionalCollection {
subscript(safe offset: Int) -> Element? {
if offset < 0 { return nil }
guard !isEmpty, let i = index(startIndex, offsetBy: offset, limitedBy: index(before: endIndex)) else { return nil }
return self[i]
}
}
/*
let test = "Hello USA 🇺🇸!!! Hello Brazil 🇧🇷!!!"
test[safe: 10] // "🇺🇸"
test[11] // "!"
test[10...] // "🇺🇸!!! Hello Brazil 🇧🇷!!!"
test[10..<12] // "🇺🇸!"
test[10...12] // "🇺🇸!!"
test[...10] // "Hello USA 🇺🇸"
test[..<10] // "Hello USA "
test.first // "H"
test.last // "!"
// Subscripting the Substring
test[...][...3] // "Hell"
// Note that they all return a Substring of the original String.
// To create a new String from a substring
test[10...].string // "🇺🇸!!! Hello Brazil 🇧🇷!!!"
*/

View File

@@ -0,0 +1,36 @@
//
// ApplyGradrient.swift
// WOKA
//
// Created by MacBook Pro on 25/04/24.
//
import UIKit
extension UIView {
/// Apply gradient colors to the view.
///
/// - Parameters:
/// - colors: An array of UIColor objects defining the color of each gradient stop.
/// - startPoint: The start point of the gradient, defined in the unit coordinate space. The start point corresponds to the top-left corner of the layer's bounds rectangle.
/// - endPoint: The end point of the gradient, defined in the unit coordinate space. The end point corresponds to the bottom-right corner of the layer's bounds rectangle.
///
func applyGradient(colors: [UIColor], startPoint: CGPoint, endPoint: CGPoint) {
// Create a new CAGradientLayer instance
let gradientLayer = CAGradientLayer()
// Set the frame of the gradient layer to match the bounds of the view
gradientLayer.frame = bounds
// Convert the array of UIColor objects to an array of CGColor objects
gradientLayer.colors = colors.map { $0.cgColor }
// Set the start and end points of the gradient
gradientLayer.startPoint = startPoint
gradientLayer.endPoint = endPoint
// Insert the gradient layer as the bottom layer of the view's layer hierarchy
layer.insertSublayer(gradientLayer, at: 0)
}
}

View File

@@ -0,0 +1,45 @@
//
// LocalisedElements.swift
// WOKA
//
// Created by MacBook Pro on 29/04/24.
//
import UIKit
class LocalisedElementsLabel: UILabel {
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
// This will call `awakeFromNib` in your code
setup()
}
private func setup() {
self.text = self.text?.localized(loc: K.GVar.localized)
}
}
class LocalisedElementsButton : UIButton {
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
// This will call `awakeFromNib` in your code
setup()
}
private func setup() {
self.setTitle(self.titleLabel?.text?.localized(loc: K.GVar.localized), for: .normal)
}
}

View File

@@ -0,0 +1,68 @@
//
// RoundCorner.swift
// WOKA
//
// Created by MacBook Pro on 25/04/24.
//
import UIKit
// MARK: - Define all corner radius elements in this file
extension UIView{
func roundCorner(radius : CGFloat? = nil){
self.clipsToBounds = true
if let radius{
self.layer.cornerRadius = radius
}else{
self.layer.cornerRadius = self.frame.height / 2
}
}
}
// MARK: - Round corner for view all ends
extension UIView {
func roundCorners(radius: CGFloat = 10, corners: UIRectCorner = .allCorners) {
self.clipsToBounds = true
self.layer.cornerRadius = radius
if #available(iOS 11.0, *) {
var arr: CACornerMask = []
let allCorners: [UIRectCorner] = [.topLeft, .topRight, .bottomLeft, .bottomRight, .allCorners]
for corn in allCorners {
if(corners.contains(corn)){
switch corn {
case .topLeft:
arr.insert(.layerMinXMinYCorner)
case .topRight:
arr.insert(.layerMaxXMinYCorner)
case .bottomLeft:
arr.insert(.layerMinXMaxYCorner)
case .bottomRight:
arr.insert(.layerMaxXMaxYCorner)
case .allCorners:
arr.insert(.layerMinXMinYCorner)
arr.insert(.layerMaxXMinYCorner)
arr.insert(.layerMinXMaxYCorner)
arr.insert(.layerMaxXMaxYCorner)
default: break
}
}
}
self.layer.maskedCorners = arr
} else {
self.roundCornersBezierPath(corners: corners, radius: radius)
}
}
private func roundCornersBezierPath(corners: UIRectCorner, radius: CGFloat) {
let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let mask = CAShapeLayer()
mask.path = path.cgPath
layer.mask = mask
}
}

View File

@@ -0,0 +1,143 @@
//
// TextFieldErrorView.swift
// WOKA
//
// Created by MacBook Pro on 29/04/24.
//
import UIKit
//private var rightViews = NSMapTable<UITextField, UIView>(keyOptions: NSPointerFunctions.Options.weakMemory, valueOptions: NSPointerFunctions.Options.strongMemory)
var errorViews = NSMapTable<UITextField, UIView>(keyOptions: NSPointerFunctions.Options.weakMemory, valueOptions: NSPointerFunctions.Options.strongMemory)
extension UITextField {
// Add/remove error message
func setError(_ string: String? = nil, show: Bool = true) {
// Remove message
guard string != nil else {
if let errorView = errorViews.object(forKey: self) {
errorView.isHidden = true
errorViews.removeObject(forKey: self)
}
return
}
// Create container
let container = UIView()
container.translatesAutoresizingMaskIntoConstraints = false
// Create triangle
let triagle = TriangleTop()
triagle.backgroundColor = .clear
triagle.translatesAutoresizingMaskIntoConstraints = false
container.addSubview(triagle)
// Create red line
let line = UIView()
line.backgroundColor = .red
line.translatesAutoresizingMaskIntoConstraints = false
container.addSubview(line)
// Create message
let label = UILabel()
label.text = " \(string ?? "") "
label.textColor = .white
label.numberOfLines = 0
label.font = UIFont.systemFont(ofSize: 15)
label.backgroundColor = .black
label.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 250), for: .horizontal)
label.translatesAutoresizingMaskIntoConstraints = false
container.addSubview(label)
// Set constraints for triangle
triagle.heightAnchor.constraint(equalToConstant: 10).isActive = true
triagle.widthAnchor.constraint(equalToConstant: 15).isActive = true
triagle.topAnchor.constraint(equalTo: container.topAnchor, constant: -20).isActive = true
triagle.trailingAnchor.constraint(equalTo: container.trailingAnchor, constant: -15).isActive = true
// Set constraints for line
line.heightAnchor.constraint(equalToConstant: 3).isActive = true
line.topAnchor.constraint(equalTo: triagle.bottomAnchor, constant: 0).isActive = true
line.leadingAnchor.constraint(equalTo: container.leadingAnchor, constant: 0).isActive = true
line.trailingAnchor.constraint(equalTo: container.trailingAnchor, constant: 0).isActive = true
// Set constraints for label
label.topAnchor.constraint(equalTo: line.bottomAnchor, constant: 0).isActive = true
label.heightAnchor.constraint(equalToConstant: 30).isActive = true
label.bottomAnchor.constraint(equalTo: container.bottomAnchor, constant: 0).isActive = true
label.leadingAnchor.constraint(equalTo: container.leadingAnchor, constant: 0).isActive = true
label.trailingAnchor.constraint(equalTo: container.trailingAnchor, constant: 0).isActive = true
if !show {
container.isHidden = true
}
// Add container to superview
if let rootView = UIApplication.shared.windows.first(where: { $0.isKeyWindow }) {
rootView.addSubview(container)
// Set constraints for container
container.widthAnchor.constraint(lessThanOrEqualTo: superview!.widthAnchor, multiplier: 1).isActive = true
container.trailingAnchor.constraint(equalTo: superview!.trailingAnchor, constant: 0).isActive = true
container.topAnchor.constraint(equalTo: superview!.bottomAnchor, constant: 0).isActive = true
}
// Hide other error messages
let enumerator = errorViews.objectEnumerator()
while let view = enumerator!.nextObject() as! UIView? {
view.isHidden = true
}
// Save view with error message
errorViews.setObject(container, forKey: self)
}
// // Show error message
// @IBAction
// func errorAction(_ sender: Any) {
// let errorButton = sender as! UIButton
// let textField = errorButton.superview as! UITextField
//
// let errorView = errorViews.object(forKey: textField)
// if let errorView = errorView {
// errorView.isHidden.toggle()
// }
//
// let enumerator = errorViews.objectEnumerator()
// while let view = enumerator!.nextObject() as! UIView? {
// if view != errorView {
// view.isHidden = true
// }
// }
//
// // Don't hide keyboard after click by icon
// // UIViewController.isCatchTappedAround = false
// }
}
class TriangleTop: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func draw(_ rect: CGRect) {
guard let context = UIGraphicsGetCurrentContext() else {
return
}
context.beginPath()
context.move(to: CGPoint(x: (rect.maxX / 2.0), y: rect.minY))
context.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY))
context.addLine(to: CGPoint(x: (rect.minX / 2.0), y: rect.maxY))
context.closePath()
context.setFillColor(UIColor.red.cgColor)
context.fillPath()
}
}

View File

@@ -0,0 +1,51 @@
//
// TextFieldImage.swift
// WOKA
//
// Created by MacBook Pro on 29/04/24.
//
import UIKit
extension UITextField {
//MARK:- Set Image on the right of text fields
func setupRightImage(imageName:String,tintColor : UIColor?){
let imageView = UIImageView(frame: CGRect(x: 10, y: 10, width: 20, height: 20))
imageView.image = UIImage(named: imageName)
let imageContainerView: UIView = UIView(frame: CGRect(x: 0, y: 0, width: 55, height: 40))
imageContainerView.addSubview(imageView)
rightView = imageContainerView
rightViewMode = .always
self.tintColor = tintColor ?? .lightGray
}
//MARK:- Set Image on left of text fields
func setupLeftImage(imageName:String,tintColor : UIColor?){
let imageView = UIImageView(frame: CGRect(x: 10, y: 10, width: 20, height: 20))
imageView.image = UIImage(named: imageName)
let imageContainerView: UIView = UIView(frame: CGRect(x: 0, y: 0, width: 55, height: 40))
imageContainerView.addSubview(imageView)
leftView = imageContainerView
leftViewMode = .always
self.tintColor = tintColor ?? .lightGray
}
}
extension UITextField {
func addRightButton(title: String?, tintColor : UIColor, btnImage : UIImage?, target: Any?, action: Selector) {
// Create a button
let button = UIButton(type: .system)
button.setTitle(title, for: .normal)
button.addTarget(target, action: action, for: .touchUpInside)
button.setImage(btnImage, for: .normal)
button.tintColor = tintColor
button.contentEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 10)
// Set the button as the right view of the text field
self.rightView = button
self.rightViewMode = .always
}
}

View File

@@ -0,0 +1,35 @@
//
// TextFieldPadding.swift
// WOKA
//
// Created by MacBook Pro on 29/04/24.
//
import UIKit
@IBDesignable
extension UITextField {
@IBInspectable var paddingLeftCustom: CGFloat {
get {
return leftView!.frame.size.width
}
set {
let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: newValue, height: frame.size.height))
leftView = paddingView
leftViewMode = .always
}
}
@IBInspectable var paddingRightCustom: CGFloat {
get {
return rightView!.frame.size.width
}
set {
let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: newValue, height: frame.size.height))
rightView = paddingView
rightViewMode = .always
}
}
}

View File

@@ -0,0 +1,42 @@
//
// TextFieldShadow.swift
// WOKA
//
// Created by MacBook Pro on 29/04/24.
//
import UIKit
class TextFieldShadow: UITextField {
lazy var innerShadow: CALayer = {
let innerShadow = CALayer()
layer.addSublayer(innerShadow)
return innerShadow
}()
override func layoutSubviews() {
super.layoutSubviews()
applyDesign()
}
func applyDesign() {
innerShadow.frame = bounds
// Shadow path (1pt ring around bounds)
let radius = self.frame.size.height/2
let path = UIBezierPath(roundedRect: innerShadow.bounds.insetBy(dx: -1, dy:-1), cornerRadius:radius)
let cutout = UIBezierPath(roundedRect: innerShadow.bounds, cornerRadius:radius).reversing()
path.append(cutout)
innerShadow.shadowPath = path.cgPath
innerShadow.masksToBounds = true
// Shadow properties
innerShadow.shadowColor = UIColor.black.cgColor
innerShadow.shadowOffset = CGSize(width: 0, height: 1.2)
innerShadow.shadowOpacity = 0.8
innerShadow.shadowRadius = 2
innerShadow.cornerRadius = self.frame.size.height/2
}
}

View File

@@ -0,0 +1,59 @@
//
// File.swift
// WOKA
//
// Created by MacBook Pro on 29/04/24.
//
import Foundation
// MARK: - This will validate the Email ID, validation result can be modified from the enum
struct EmailValidation {
let emailString: String
init(email: String) {
self.emailString = email
}
private func validate() -> Bool {
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
let emailPred = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
return emailPred.evaluate(with: emailString)
}
func validate() -> EmailValidatorResult {
if emailString == "" {
return .isEmpty
}
if !emailString.contains("@") {
return .missingAtTheRateSymbol
}
// if !emailDomain.allCases.contains(where: { emailString.contains($0.rawValue) }) {
// return .missingDotCom
// }
if !validate() {
return .badlyFormatted
}
return .isCorrect
}
}
enum EmailValidatorResult: String {
case missingAtTheRateSymbol = "An Email Address must contain a single '@'"
case isEmpty = "Please enter your email"
case isCorrect = "Email address is in correct format"
case missingDotCom = "Email Address does not contain the domain portion (e.g. '.com')"
case badlyFormatted = "Please enter a valid Email Address"
}
enum emailDomain : String,CaseIterable{
case com = ".com"
case net = ".net"
case coin = ".co.in"
case couk = ".co.uk"
}

View File

@@ -0,0 +1,79 @@
//
// StringValidations.swift
// WOKA
//
// Created by MacBook Pro on 29/04/24.
//
import UIKit
// MARK: - Validation for numbers , name , name & number
extension String{
func nameCharacterOnly()->Bool{
let allowedCharacters = CharacterSet(charactersIn:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ").inverted
let components = string.components(separatedBy: allowedCharacters)
let filtered = components.joined(separator: "")
if string != filtered {
return false
}else{
return true
}
}
func onlyNumber()->Bool{
let allowedNumber = CharacterSet(charactersIn:"0123456789").inverted
let components = string.components(separatedBy: allowedNumber)
let filtered = components.joined(separator: "")
if string != filtered {
return false
}else{
return true
}
}
func onlyPhoneNumber()->Bool{
let allowedNumber = CharacterSet(charactersIn:"+0123456789").inverted
let components = string.components(separatedBy: allowedNumber)
let filtered = components.joined(separator: "")
if string != filtered {
return false
}else{
return true
}
}
func onlyNumberAndDecimal()->Bool{
let allowedNumber = CharacterSet(charactersIn:"0123456789.").inverted
let components = string.components(separatedBy: allowedNumber)
let filtered = components.joined(separator: "")
if string != filtered {
return false
}else{
return true
}
}
func numberAndCharacter()->Bool{
let allowedCharacters = CharacterSet(charactersIn:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ").inverted
let components = string.components(separatedBy: allowedCharacters)
let filtered = components.joined(separator: "")
if string != filtered {
return false
}else{
return true
}
}
func numberAndCharacterAndSpecialChar()->Bool{
let allowedCharacters = CharacterSet(charactersIn:"!@#$%^&*()+=-[]{};:'\"|<>,.?/~`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ").inverted
let components = string.components(separatedBy: allowedCharacters)
let filtered = components.joined(separator: "")
if string != filtered {
return false
}else{
return true
}
}
}

36
WOKA/Info.plist Normal file
View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UIUserInterfaceStyle</key>
<string>Light</string>
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<false/>
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default Configuration</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
<key>UISceneStoryboardFile</key>
<string>Main</string>
</dict>
</array>
</dict>
</dict>
<key>UIAppFonts</key>
<array>
<string>Exo2-Bold.ttf</string>
<string>Exo2-ExtraBold.ttf</string>
<string>Exo2-Medium.ttf</string>
<string>Exo2-Regular.ttf</string>
<string>Exo2-SemiBold.ttf</string>
<string>Exo2-Thin.ttf</string>
</array>
</dict>
</plist>

View File

@@ -0,0 +1,13 @@
/*
Localizable.strings
WOKA
Created by MacBook Pro on 25/04/24.
*/
/* Class = "UIButton"; normalTitle = "हिंदी"; ObjectID = "SYp-e1-w6s"; */
"SYp-e1-w6s.normalTitle" = "हिंदी";
/* Class = "UIButton"; normalTitle = "English"; ObjectID = "XdB-NB-osA"; */
"XdB-NB-osA.normalTitle" = "English";

View File

@@ -0,0 +1,77 @@
"Hello" = "नमस्ते";
/*
Carousel Text
*/
//Slide 1
"Watch, Listen & Play" = "देखो, सुनो और खेलो";
"LIVE TV, VIDEOS, GAMES, AND AUDIO BOOKS" = "लाइव टीवी, वीडियो गेम और ऑडियो पुस्तकें";
// Slide 2
"Sing-Along and Shop" = "मिलकर गायें और खरेदी करें";
// Slide 3
"Lets all go to WOKALAND" = "चलो चलें WOKALAND";
/*
OnBoard Screen
*/
"CREATE YOUR ACCOUNT" = "अपना नि:शुल्क खाता बनाएं";
"LOGIN" = "लॉग इन करें" ;
"Continue as a Guest" = "अतिथि के रूप में जारी रखें";
/*
Age Check Screen
*/
"We Value Your Privacy" = "हम आपकी गोपनीयता को महत्व देते हैं";
"YEARS" = "साल";
"I AM" = "मैं हूँ";
"UNDER" = "कम १६";
"ABOVE" = "अधिक १६";
"We will need your parents email so they can verify and agree to create an account." = "हमें आपके माता-पिता के ईमेल की आवश्यकता होगी ताकि वे सत्यापित कर सकें और खाता बनाने के लिए सहमत हो सकें।";
"Above 16 users will be registered as a guardian with additional content." = "१६ से अधिक उपयोगकर्ताओं को अतिरिक्त सामग्री के साथ अभिभावक के रूप में पंजीकृत किया जाएगा।";
"16 IS THE MAGIC NUMBER" = "१६ जादुई संख्या है";
"16" = "१६";
/*
Enter Email VC
*/
"Enter your email" = "अपना ईमेल दर्ज करें";
"Enter your parent's email" = "अपने माता-पिता का ईमेल दर्ज करें";
"Lets be Safe!" = "आइए सुरक्षित रहें!";
"Lets Start Here" = "आइए यहां से शुरू करें";
"CAN WE HAVE YOUR PARENTS EMAIL?" = "क्या हमें आपके माता-पिता का ईमेल मिल सकता है?";
"CAN WE HAVE YOUR EMAIL?" = "क्या हमें आपका ईमेल मिल सकता है?";
"We will send a verification code to their email" = "हम उनके ईमेल पर एक सत्यापन कोड भेजेंगे";
"Next" = "अगला";
/*
OTP VC
*/
"Request them for the verfication code to activate your account" = "अपने खाते को सक्रिय करने के लिए उनसे सत्यापन कोड के लिए अनुरोध करें";
"Please Get the Code Sent to Your Parents Email" = "कृपया कोड अपने माता-पिता के ईमेल पर भेजें";
"Please Get the OTP Sent to Your Email" = "कृपया अपने ईमेल पर भेजा गया ओटीपी प्राप्त करें";
"PLEASE ENTER THE CODE" = "कृपया कोड दर्ज करें";
"PLEASE ENTER THE OTP" = "कृपया ओटीपी दर्ज करें";
"Dont forget to check your JUNK/SPAM folder" = "अपना जंक/स्पैम फ़ोल्डर जांचना न भूलें";
/*
UserDetails Registeration VC
*/
"WHATS YOUR NAME?" = "तुम्हारा नाम क्या है?";
"SELECT USERNAME" = "उपयोक्तानाम चुनें";
"CREATE YOUR PASSWORD" = "अपना पासवर्ड बनाएं";
"Great! Now Lets Create Your WOKAccount" = "महान! आइए अब अपना WOKA अकाउंट बनाएं";
"Shh!! Dont share your password with anyone." = "शश!! अपना पासवर्ड किसी के साथ साझा न करें.";
"Enter a username" = "एक उपयोगकर्ता नाम दर्ज करें";
"Enter your name" = "आपका नाम क्या है?";
"Enter your password" = "अपना पासवर्ड भरें";

View File

@@ -0,0 +1,45 @@
//
// AppDelegate.swift
// WOKA
//
// Created by MacBook Pro on 25/04/24.
//
import UIKit
import Lottie
import IQKeyboardManagerSwift
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// enabling the IQKeyboard manager instance
IQKeyboardManager.shared.enable = true
IQKeyboardManager.shared.resignOnTouchOutside = true
// IQKeyboardManager.shared.enableAutoToolbar = false
// IQKeyboardManager.shared.layoutIfNeededOnUpdate = true
//Lottie Config to handle rendering
LottieConfiguration.shared.renderingEngine = .mainThread
return true
}
// MARK: UISceneSession Lifecycle
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
// Called when a new scene session is being created.
// Use this method to select a configuration to create the new scene with.
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
}
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
// Called when the user discards a scene session.
// If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
// Use this method to release any resources that were specific to the discarded scenes, as they will not return.
}
}

51
WOKA/Main/AuthFunc.swift Normal file
View File

@@ -0,0 +1,51 @@
//
// AuthFunc.swift
// WOKA
//
// Created by Bilal on 26/04/2024.
//
import Foundation
import AVFoundation
class AuthFunc{
/**
This is not for external use!
This should only be used for login, registration, Auth Process process & userData Extraction.
*/
var player: AVQueuePlayer?
var playerLooper: AVPlayerLooper?
var userType = UserType.adult
static let shareInstance = AuthFunc()
func playStartUpsound(){
guard let path = Bundle.main.path(forResource: K.StaticFilesString.onBoardMainSound, ofType:"m4a") else {
return }
let url = URL(fileURLWithPath: path)
let playerItem = AVPlayerItem(url: url)
// Initialize AVQueuePlayer with the player item
player = AVQueuePlayer(items: [playerItem])
// Create AVPlayerLooper
playerLooper = AVPlayerLooper(player: player!, templateItem: playerItem)
player?.play()
}
func stopSound(){
player?.removeAllItems()
}
func pauseSound(){
player?.pause()
}
}
enum UserType {
case adult
case kid
}

View File

@@ -0,0 +1,52 @@
//
// SceneDelegate.swift
// WOKA
//
// Created by MacBook Pro on 25/04/24.
//
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let _ = (scene as? UIWindowScene) else { return }
}
func sceneDidDisconnect(_ scene: UIScene) {
// Called as the scene is being released by the system.
// This occurs shortly after the scene enters the background, or when its session is discarded.
// Release any resources associated with this scene that can be re-created the next time the scene connects.
// The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
}
func sceneDidBecomeActive(_ scene: UIScene) {
// Called when the scene has moved from an inactive state to an active state.
// Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
}
func sceneWillResignActive(_ scene: UIScene) {
// Called when the scene will move from an active state to an inactive state.
// This may occur due to temporary interruptions (ex. an incoming phone call).
}
func sceneWillEnterForeground(_ scene: UIScene) {
// Called as the scene transitions from the background to the foreground.
// Use this method to undo the changes made on entering the background.
}
func sceneDidEnterBackground(_ scene: UIScene) {
// Called as the scene transitions from the foreground to the background.
// Use this method to save data, release shared resources, and store enough scene-specific state information
// to restore the scene back to its current state.
}
}

View File

@@ -0,0 +1,496 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="v6B-41-NJx">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<customFonts key="customFonts">
<array key="Exo2-Bold.ttf">
<string>Exo2-Bold</string>
</array>
<array key="Exo2-Regular.ttf">
<string>Exo2-Regular</string>
</array>
</customFonts>
<scenes>
<!--SplashVC-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController storyboardIdentifier="SplashVC" id="BYZ-38-t0r" customClass="SplashVC" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="BackgroundSplash" translatesAutoresizingMaskIntoConstraints="NO" id="OYq-ie-PCX">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="WokaLogo" translatesAutoresizingMaskIntoConstraints="NO" id="0T1-bR-Cvy">
<rect key="frame" x="137" y="429" width="140" height="52.5"/>
<constraints>
<constraint firstAttribute="width" constant="140" id="5Om-xJ-yBC"/>
<constraint firstAttribute="width" secondItem="0T1-bR-Cvy" secondAttribute="height" multiplier="8:3" id="IPk-eZ-y1g"/>
</constraints>
</imageView>
<stackView hidden="YES" opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="30" translatesAutoresizingMaskIntoConstraints="NO" id="KHl-9W-vAe">
<rect key="frame" x="30" y="561.5" width="354" height="60"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XdB-NB-osA">
<rect key="frame" x="0.0" y="0.0" width="162" height="60"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="English"/>
<connections>
<action selector="languageBtnTapped:" destination="BYZ-38-t0r" eventType="touchUpInside" id="6XC-m2-ULl"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="SYp-e1-w6s">
<rect key="frame" x="192" y="0.0" width="162" height="60"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="हिंदी"/>
<connections>
<action selector="languageBtnTapped:" destination="BYZ-38-t0r" eventType="touchUpInside" id="CMC-XA-zLs"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="60" id="uib-PY-aKX"/>
</constraints>
</stackView>
</subviews>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="KHl-9W-vAe" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="30" id="E1n-Eh-P1N"/>
<constraint firstAttribute="bottom" secondItem="OYq-ie-PCX" secondAttribute="bottom" id="JoJ-CY-PKV"/>
<constraint firstItem="OYq-ie-PCX" firstAttribute="top" secondItem="8bC-Xf-vdC" secondAttribute="top" id="QIp-RX-W6O"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="KHl-9W-vAe" secondAttribute="trailing" constant="30" id="WgR-cO-AqS"/>
<constraint firstItem="0T1-bR-Cvy" firstAttribute="centerX" secondItem="OYq-ie-PCX" secondAttribute="centerX" id="crp-Vn-eE2"/>
<constraint firstAttribute="trailing" secondItem="OYq-ie-PCX" secondAttribute="trailing" id="eul-m2-arb"/>
<constraint firstItem="0T1-bR-Cvy" firstAttribute="centerY" secondItem="6Tk-OE-BBY" secondAttribute="centerY" id="fdB-2S-YYe"/>
<constraint firstItem="KHl-9W-vAe" firstAttribute="top" secondItem="0T1-bR-Cvy" secondAttribute="bottom" constant="80" id="ld4-Um-qic"/>
<constraint firstItem="OYq-ie-PCX" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leading" id="yVI-ZY-646"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="cMP-Th-2kL"/>
<connections>
<outlet property="englishBtn" destination="XdB-NB-osA" id="eiP-q9-9TH"/>
<outlet property="hindiBtn" destination="SYp-e1-w6s" id="mgg-al-7J8"/>
<outlet property="languageBtnStack" destination="KHl-9W-vAe" id="ssW-dX-fxk"/>
<outlet property="wokaLogo" destination="0T1-bR-Cvy" id="d6a-va-BqC"/>
<outlet property="wokaOriginY" destination="fdB-2S-YYe" id="g0Q-Zd-FKu"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1049.2753623188407" y="3.3482142857142856"/>
</scene>
<!--On BoardVC-->
<scene sceneID="mNL-rE-kz5">
<objects>
<viewController storyboardIdentifier="OnBoardVC" id="Ugf-xS-kWn" customClass="OnBoardVC" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="ask-ar-Fuj">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NxP-bj-mtL">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
</view>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="WokaLogo" translatesAutoresizingMaskIntoConstraints="NO" id="5Wa-iZ-sl2">
<rect key="frame" x="137" y="400" width="140" height="52.5"/>
<constraints>
<constraint firstAttribute="width" secondItem="5Wa-iZ-sl2" secondAttribute="height" multiplier="8:3" id="rbO-nC-nTq"/>
<constraint firstAttribute="width" constant="140" id="sS5-02-nUm"/>
</constraints>
</imageView>
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0dF-BT-pk2">
<rect key="frame" x="0.0" y="48" width="414" height="814"/>
<subviews>
<stackView opaque="NO" alpha="0.0" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="E4U-36-FaU">
<rect key="frame" x="0.0" y="80" width="414" height="656"/>
<subviews>
<collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" pagingEnabled="YES" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="zAH-Rg-6R9">
<rect key="frame" x="0.0" y="0.0" width="414" height="400"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<collectionViewFlowLayout key="collectionViewLayout" scrollDirection="horizontal" minimumLineSpacing="10" minimumInteritemSpacing="10" id="64p-RZ-jkG">
<size key="itemSize" width="128" height="128"/>
<size key="headerReferenceSize" width="0.0" height="0.0"/>
<size key="footerReferenceSize" width="0.0" height="0.0"/>
<inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
</collectionViewFlowLayout>
<cells/>
</collectionView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YZj-8P-5H1">
<rect key="frame" x="0.0" y="400" width="414" height="5"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="5" id="iKl-ax-jPr"/>
</constraints>
</view>
<pageControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" numberOfPages="3" translatesAutoresizingMaskIntoConstraints="NO" id="bN3-e7-4Gz">
<rect key="frame" x="0.0" y="405" width="414" height="26"/>
<color key="pageIndicatorTintColor" red="0.23137254901960785" green="0.10196078431372549" blue="0.63921568627450975" alpha="1" colorSpace="calibratedRGB"/>
<color key="currentPageIndicatorTintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<connections>
<action selector="pageControl:" destination="Ugf-xS-kWn" eventType="valueChanged" id="oG3-n5-Vf5"/>
</connections>
</pageControl>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="m5z-1C-wNG">
<rect key="frame" x="0.0" y="431" width="414" height="30"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="30" id="Z9c-NE-w9W"/>
</constraints>
</view>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="4lL-AO-KqG">
<rect key="frame" x="0.0" y="461" width="414" height="195"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lyg-OD-j2H">
<rect key="frame" x="10" y="0.0" width="394" height="58.5"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="CREATE YOUR ACCOUNT">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
<connections>
<action selector="createAccountBtnTapped:" destination="Ugf-xS-kWn" eventType="touchUpInside" id="WG3-4I-wNh"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7ID-Rn-iaD">
<rect key="frame" x="10" y="68.5" width="394" height="58"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="LOGIN">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
<connections>
<action selector="loginBtnTapped:" destination="Ugf-xS-kWn" eventType="touchUpInside" id="i8y-Xy-4rT"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="tY2-cn-nfS">
<rect key="frame" x="10" y="136.5" width="394" height="58.5"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Continue as a Guest">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
<connections>
<action selector="guestLoginBtnTapped:" destination="Ugf-xS-kWn" eventType="touchUpInside" id="jqT-lw-QqR"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="195" id="W8g-qy-0dn"/>
</constraints>
<edgeInsets key="layoutMargins" top="0.0" left="10" bottom="0.0" right="10"/>
</stackView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</stackView>
</subviews>
<constraints>
<constraint firstItem="E4U-36-FaU" firstAttribute="top" secondItem="0dF-BT-pk2" secondAttribute="top" constant="80" id="KIP-H3-Hs0"/>
<constraint firstItem="P5Y-eT-Uwh" firstAttribute="bottom" secondItem="E4U-36-FaU" secondAttribute="bottom" id="fs6-8i-dXe"/>
<constraint firstAttribute="trailing" secondItem="E4U-36-FaU" secondAttribute="trailing" id="nWO-jM-P6m"/>
<constraint firstItem="E4U-36-FaU" firstAttribute="leading" secondItem="0dF-BT-pk2" secondAttribute="leading" id="nX3-LJ-ibI"/>
<constraint firstItem="JUd-j4-PaA" firstAttribute="trailing" secondItem="E4U-36-FaU" secondAttribute="trailing" id="nuQ-Py-o4b"/>
</constraints>
<viewLayoutGuide key="contentLayoutGuide" id="P5Y-eT-Uwh"/>
<viewLayoutGuide key="frameLayoutGuide" id="JUd-j4-PaA"/>
</scrollView>
</subviews>
<viewLayoutGuide key="safeArea" id="1nB-nf-7LU"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="5Wa-iZ-sl2" firstAttribute="top" secondItem="ask-ar-Fuj" secondAttribute="top" constant="400" id="46G-h9-1YN"/>
<constraint firstAttribute="bottom" secondItem="NxP-bj-mtL" secondAttribute="bottom" id="9CY-bD-WEh"/>
<constraint firstItem="1nB-nf-7LU" firstAttribute="trailing" secondItem="NxP-bj-mtL" secondAttribute="trailing" id="9qY-HC-O2N"/>
<constraint firstItem="0dF-BT-pk2" firstAttribute="top" secondItem="1nB-nf-7LU" secondAttribute="top" id="Fqw-ZB-B7A"/>
<constraint firstItem="NxP-bj-mtL" firstAttribute="leading" secondItem="1nB-nf-7LU" secondAttribute="leading" id="Gck-f5-H5t"/>
<constraint firstItem="NxP-bj-mtL" firstAttribute="top" secondItem="ask-ar-Fuj" secondAttribute="top" id="KMM-zF-m2B"/>
<constraint firstItem="0dF-BT-pk2" firstAttribute="leading" secondItem="1nB-nf-7LU" secondAttribute="leading" id="eVl-AG-pJ2"/>
<constraint firstItem="0dF-BT-pk2" firstAttribute="bottom" secondItem="1nB-nf-7LU" secondAttribute="bottom" id="osN-Dx-cDv"/>
<constraint firstItem="5Wa-iZ-sl2" firstAttribute="centerX" secondItem="1nB-nf-7LU" secondAttribute="centerX" id="sKy-na-bsK"/>
<constraint firstItem="0dF-BT-pk2" firstAttribute="trailing" secondItem="1nB-nf-7LU" secondAttribute="trailing" id="xaS-L7-wig"/>
<constraint firstItem="zAH-Rg-6R9" firstAttribute="height" secondItem="ask-ar-Fuj" secondAttribute="height" multiplier="0.446429" id="zkT-FI-0NG"/>
</constraints>
</view>
<connections>
<outlet property="carouselCV" destination="zAH-Rg-6R9" id="naT-8B-eAg"/>
<outlet property="createAccountBtn" destination="lyg-OD-j2H" id="quB-jN-7aG"/>
<outlet property="loginAsGuestBtn" destination="tY2-cn-nfS" id="q2p-25-Gm8"/>
<outlet property="loginBtn" destination="7ID-Rn-iaD" id="k07-rK-dmB"/>
<outlet property="mainStack" destination="E4U-36-FaU" id="IvT-An-aYO"/>
<outlet property="pageControl" destination="bN3-e7-4Gz" id="gxK-E1-5V4"/>
<outlet property="viewLottie" destination="NxP-bj-mtL" id="aST-9j-7Ol"/>
<outlet property="wokaLogoTopConstriant" destination="46G-h9-1YN" id="LLT-ks-jqh"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="aFn-ay-7SU" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1881.1594202898552" y="2.6785714285714284"/>
</scene>
<!--Navigation Controller-->
<scene sceneID="lM2-wG-a76">
<objects>
<navigationController automaticallyAdjustsScrollViewInsets="NO" navigationBarHidden="YES" id="v6B-41-NJx" sceneMemberID="viewController">
<toolbarItems/>
<navigationBar key="navigationBar" contentMode="scaleToFill" id="Odo-w6-zNL">
<autoresizingMask key="autoresizingMask"/>
<color key="tintColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</navigationBar>
<nil name="viewControllers"/>
<toolbar key="toolbar" opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="tiS-09-25i">
<autoresizingMask key="autoresizingMask"/>
</toolbar>
<connections>
<segue destination="BYZ-38-t0r" kind="relationship" relationship="rootViewController" id="8WJ-90-RQ3"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="hqA-ar-oSc" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="139.13043478260872" y="3.3482142857142856"/>
</scene>
<!--Select AgeVC-->
<scene sceneID="aL7-my-uTs">
<objects>
<viewController storyboardIdentifier="SelectAgeVC" id="5cf-Ca-pko" customClass="SelectAgeVC" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="qMS-vC-b1G">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="BackgroundSplash" translatesAutoresizingMaskIntoConstraints="NO" id="GN2-ta-IyD">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="WokaLogo" translatesAutoresizingMaskIntoConstraints="NO" id="3qB-gN-hV4">
<rect key="frame" x="137" y="50" width="140" height="52.5"/>
<constraints>
<constraint firstAttribute="width" constant="140" id="4Ox-eC-MEA"/>
<constraint firstAttribute="width" secondItem="3qB-gN-hV4" secondAttribute="height" multiplier="8:3" id="nyn-T8-ryQ"/>
</constraints>
</imageView>
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QU1-fM-pg9">
<rect key="frame" x="0.0" y="102.5" width="414" height="759.5"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="45" translatesAutoresizingMaskIntoConstraints="NO" id="AbT-1b-YxT">
<rect key="frame" x="0.0" y="45" width="414" height="511"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="We Value Your Privacy" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kAc-XC-R0J">
<rect key="frame" x="10" y="0.0" width="394" height="31.5"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="26"/>
<color key="textColor" red="0.035294117647058823" green="0.0" blue="0.36470588235294116" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eC7-Nz-BfB">
<rect key="frame" x="10" y="76.5" width="394" height="0.0"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" id="McN-qk-JmM"/>
</constraints>
</view>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="IvC-MQ-aot">
<rect key="frame" x="10" y="121.5" width="394" height="157.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="16 IS THE MAGIC NUMBER" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="z1g-nr-hDh">
<rect key="frame" x="0.0" y="0.0" width="394" height="19.5"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117647058823" green="0.0" blue="0.36470588235294116" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Jxw-Lm-Uev">
<rect key="frame" x="0.0" y="29.5" width="394" height="128"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="16Years" translatesAutoresizingMaskIntoConstraints="NO" id="ILs-9m-HBf">
<rect key="frame" x="0.0" y="0.0" width="394" height="128"/>
</imageView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="hGX-Rs-8Ei">
<rect key="frame" x="176.5" y="28" width="41" height="62.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="16" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Q5x-RL-o9O">
<rect key="frame" x="0.0" y="0.0" width="41" height="48"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="40"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="YEARS" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5xD-nv-Vqh">
<rect key="frame" x="0.0" y="48" width="41" height="14.5"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="12"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</stackView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="ILs-9m-HBf" secondAttribute="bottom" id="71d-Ky-PHd"/>
<constraint firstItem="hGX-Rs-8Ei" firstAttribute="centerY" secondItem="Jxw-Lm-Uev" secondAttribute="centerY" constant="-5" id="8JS-WH-CdL"/>
<constraint firstItem="hGX-Rs-8Ei" firstAttribute="centerX" secondItem="Jxw-Lm-Uev" secondAttribute="centerX" id="O20-MQ-bDK"/>
<constraint firstItem="ILs-9m-HBf" firstAttribute="top" secondItem="Jxw-Lm-Uev" secondAttribute="top" id="bNJ-JX-6ia"/>
<constraint firstItem="ILs-9m-HBf" firstAttribute="leading" secondItem="Jxw-Lm-Uev" secondAttribute="leading" id="dZa-qM-jxc"/>
<constraint firstAttribute="trailing" secondItem="ILs-9m-HBf" secondAttribute="trailing" id="xxG-UL-qwc"/>
<constraint firstAttribute="height" constant="128" id="yWn-ej-MSY"/>
</constraints>
</view>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="4MV-0i-bHM">
<rect key="frame" x="10" y="324" width="394" height="187"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="40" translatesAutoresizingMaskIntoConstraints="NO" id="6LR-pm-DQz">
<rect key="frame" x="0.0" y="0.0" width="394" height="100"/>
<subviews>
<view alpha="0.69999999999999996" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zRB-HI-qyw">
<rect key="frame" x="15" y="0.0" width="162" height="100"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="PHl-9L-rHV">
<rect key="frame" x="41" y="23.5" width="80" height="53.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="I AM" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nDM-Lp-P02">
<rect key="frame" x="0.0" y="0.0" width="80" height="19.5"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="UNDER" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BhH-nh-RaQ">
<rect key="frame" x="0.0" y="24.5" width="80" height="29"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="24"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</stackView>
</subviews>
<color key="backgroundColor" red="0.035294117647058823" green="0.0" blue="0.36470588235294116" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="PHl-9L-rHV" firstAttribute="centerY" secondItem="zRB-HI-qyw" secondAttribute="centerY" id="29o-j4-anr"/>
<constraint firstItem="PHl-9L-rHV" firstAttribute="centerX" secondItem="zRB-HI-qyw" secondAttribute="centerX" id="Vr4-6F-jbw"/>
</constraints>
</view>
<view alpha="0.69999999999999996" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3nX-lb-ERZ">
<rect key="frame" x="217" y="0.0" width="162" height="100"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="vJO-O8-VZ3">
<rect key="frame" x="42.5" y="23.5" width="77" height="53.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="I AM" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Lap-hA-rD3">
<rect key="frame" x="0.0" y="0.0" width="77" height="19.5"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ABOVE" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VUN-Ep-Tia">
<rect key="frame" x="0.0" y="24.5" width="77" height="29"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="24"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</stackView>
</subviews>
<color key="backgroundColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="vJO-O8-VZ3" firstAttribute="centerX" secondItem="3nX-lb-ERZ" secondAttribute="centerX" id="E7w-5N-R93"/>
<constraint firstItem="vJO-O8-VZ3" firstAttribute="centerY" secondItem="3nX-lb-ERZ" secondAttribute="centerY" id="xaL-jZ-9dz"/>
</constraints>
</view>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="100" id="DB9-mi-JDq"/>
</constraints>
<edgeInsets key="layoutMargins" top="0.0" left="15" bottom="0.0" right="15"/>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="35" translatesAutoresizingMaskIntoConstraints="NO" id="Hwe-9h-x3Y">
<rect key="frame" x="0.0" y="115" width="394" height="72"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="We will need your parents email so they can verify and agree to create an account." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VuZ-1Z-b39">
<rect key="frame" x="10" y="0.0" width="169.5" height="72"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="15"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Above 16 users will be registered as a guardian with additional content." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wSp-wJ-fpO">
<rect key="frame" x="214.5" y="0.0" width="169.5" height="72"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="15"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<edgeInsets key="layoutMargins" top="0.0" left="10" bottom="0.0" right="10"/>
</stackView>
</subviews>
</stackView>
</subviews>
<edgeInsets key="layoutMargins" top="0.0" left="10" bottom="0.0" right="10"/>
</stackView>
</subviews>
<constraints>
<constraint firstItem="mxm-o6-oh0" firstAttribute="trailing" secondItem="AbT-1b-YxT" secondAttribute="trailing" id="CuG-pg-wHl"/>
<constraint firstItem="3wp-V5-cWJ" firstAttribute="bottom" secondItem="AbT-1b-YxT" secondAttribute="bottom" id="V0c-QN-jJE"/>
<constraint firstItem="AbT-1b-YxT" firstAttribute="top" secondItem="QU1-fM-pg9" secondAttribute="top" constant="45" id="Zju-oR-ffR"/>
<constraint firstItem="AbT-1b-YxT" firstAttribute="width" secondItem="3wp-V5-cWJ" secondAttribute="width" id="dDN-wM-C3y"/>
<constraint firstItem="AbT-1b-YxT" firstAttribute="leading" secondItem="3wp-V5-cWJ" secondAttribute="leading" id="zY6-H9-bm1"/>
</constraints>
<viewLayoutGuide key="contentLayoutGuide" id="3wp-V5-cWJ"/>
<viewLayoutGuide key="frameLayoutGuide" id="mxm-o6-oh0"/>
</scrollView>
</subviews>
<viewLayoutGuide key="safeArea" id="GeR-ha-19K"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="QU1-fM-pg9" firstAttribute="leading" secondItem="GeR-ha-19K" secondAttribute="leading" id="2L5-dj-u12"/>
<constraint firstItem="3qB-gN-hV4" firstAttribute="top" secondItem="qMS-vC-b1G" secondAttribute="top" constant="50" id="5wp-eN-0MI"/>
<constraint firstItem="QU1-fM-pg9" firstAttribute="bottom" secondItem="GeR-ha-19K" secondAttribute="bottom" id="GFq-A2-u0c"/>
<constraint firstItem="3qB-gN-hV4" firstAttribute="centerX" secondItem="GN2-ta-IyD" secondAttribute="centerX" id="LUL-nW-cla"/>
<constraint firstItem="GN2-ta-IyD" firstAttribute="leading" secondItem="GeR-ha-19K" secondAttribute="leading" id="VhT-FE-K4T"/>
<constraint firstItem="QU1-fM-pg9" firstAttribute="trailing" secondItem="GeR-ha-19K" secondAttribute="trailing" id="fHj-pY-4pl"/>
<constraint firstItem="GN2-ta-IyD" firstAttribute="top" secondItem="qMS-vC-b1G" secondAttribute="top" id="kCO-cp-Ym3"/>
<constraint firstItem="QU1-fM-pg9" firstAttribute="top" secondItem="3qB-gN-hV4" secondAttribute="bottom" id="pfW-Rd-6RH"/>
<constraint firstAttribute="bottom" secondItem="GN2-ta-IyD" secondAttribute="bottom" id="yZ0-Sh-Gv6"/>
<constraint firstItem="GeR-ha-19K" firstAttribute="trailing" secondItem="GN2-ta-IyD" secondAttribute="trailing" id="zph-z4-Zd0"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="LZ1-Kz-jec"/>
<connections>
<outlet property="aboveAgeView" destination="3nX-lb-ERZ" id="JdV-YA-bWW"/>
<outlet property="aboveLabel" destination="VUN-Ep-Tia" id="akF-nG-Vnu"/>
<outlet property="aboveTextLabel" destination="wSp-wJ-fpO" id="XnA-TU-eez"/>
<outlet property="iAmAboveLabel" destination="Lap-hA-rD3" id="Pyo-7D-3vx"/>
<outlet property="iAmUnderLabel" destination="nDM-Lp-P02" id="py1-jw-eJz"/>
<outlet property="magicNoLabel" destination="z1g-nr-hDh" id="amS-QG-gNm"/>
<outlet property="numberText" destination="Q5x-RL-o9O" id="IKI-4h-lAU"/>
<outlet property="privacyLabel" destination="kAc-XC-R0J" id="jDr-Ms-iiA"/>
<outlet property="underAgeView" destination="zRB-HI-qyw" id="OhR-SA-MaA"/>
<outlet property="underLabel" destination="BhH-nh-RaQ" id="nLL-pM-dxH"/>
<outlet property="underTextLabel" destination="VuZ-1Z-b39" id="697-Oy-eq3"/>
<outlet property="wokaLogoTopSpacing" destination="5wp-eN-0MI" id="Ko3-zs-L2j"/>
<outlet property="yearsLabel" destination="5xD-nv-Vqh" id="Gi6-aP-veL"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="qz4-v9-A9M" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="2750.7246376811595" y="2.6785714285714284"/>
</scene>
</scenes>
<resources>
<image name="16Years" width="99" height="79.333335876464844"/>
<image name="BackgroundSplash" width="428" height="926"/>
<image name="WokaLogo" width="2224" height="450.5"/>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

View File

@@ -0,0 +1,115 @@
//
// OnBoardVC.swift
// WOKA
//
// Created by MacBook Pro on 25/04/24.
//
import UIKit
import Lottie
class OnBoardVC: UIViewController {
@IBOutlet var viewLottie: UIView!
@IBOutlet weak var wokaLogoTopConstriant: NSLayoutConstraint!
@IBOutlet weak var carouselCV: UICollectionView!
@IBOutlet weak var pageControl: UIPageControl!
@IBOutlet weak var createAccountBtn: UIButton!
@IBOutlet weak var loginBtn: UIButton!
@IBOutlet weak var loginAsGuestBtn: UIButton!
@IBOutlet weak var mainStack: UIStackView!
var topConstriantFromSplash = Float()
var vm = OnBoardVM()
// MARK: - LifeCycle
deinit{
AuthFunc.shareInstance.stopSound()
}
override func viewDidLoad() {
super.viewDidLoad()
vm.vc = self
AuthFunc.shareInstance.playStartUpsound()
vm.initData()
}
@IBAction func pageControl(_ sender: UIPageControl) {
self.carouselCV.scrollToItem(at: IndexPath(row: sender.currentPage, section: 0), at: .centeredHorizontally, animated: true)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.setNavigationBarHidden(false, animated: animated)
vm.resumeBackGroundAnimationJSON()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.setNavigationBarHidden(true, animated: animated)
vm.stopBackGroundAnimationJSON()
}
// MARK: - Button Tap Handler
@IBAction func createAccountBtnTapped(_ sender: UIButton) {
let sb = UIStoryboard(name: K.StoryBoard.main, bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.OnBoarding.selectAgeVC) as! SelectAgeVC
self.navigationController?.pushViewController(vc, animated: true)
}
@IBAction func loginBtnTapped(_ sender: UIButton) {
}
@IBAction func guestLoginBtnTapped(_ sender: UIButton) {
}
// MARK: - Collection Scroll Handling
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
let visibleRect = CGRect(origin: self.carouselCV.contentOffset, size: self.carouselCV.bounds.size)
let visiblePoint = CGPoint(x: visibleRect.midX, y: visibleRect.midY)
if let visibleIndexPath = self.carouselCV.indexPathForItem(at: visiblePoint) {
self.pageControl.currentPage = visibleIndexPath.row
}
}
}
// MARK: - Collection delegate and datasource
extension OnBoardVC : UICollectionViewDelegate,UICollectionViewDataSource{
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return vm.data?.count ?? 0
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: K.CellIdentifier.OnBoarding.onBoardCell, for: indexPath) as! OnBoardCell
if let data = vm.data?[indexPath.row]{
cell.setData(data: data)
}
return cell
}
}
// MARK: - Collection Flow Layout
extension OnBoardVC : UICollectionViewDelegateFlowLayout{
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 10
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let frameSize = collectionView.frame.size
return CGSize(width: frameSize.width - 10, height: frameSize.height)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 5)
}
}

View File

@@ -0,0 +1,51 @@
//
// SelectAgeVC.swift
// WOKA
//
// Created by Bilal on 26/04/2024.
//
import UIKit
class SelectAgeVC: UIViewController {
@IBOutlet weak var underAgeView: UIView!
@IBOutlet weak var aboveAgeView: UIView!
@IBOutlet weak var privacyLabel: UILabel!
@IBOutlet weak var magicNoLabel: UILabel!
@IBOutlet weak var yearsLabel: UILabel!
@IBOutlet weak var iAmUnderLabel: UILabel!
@IBOutlet weak var iAmAboveLabel: UILabel!
@IBOutlet weak var underLabel: UILabel!
@IBOutlet weak var aboveLabel: UILabel!
@IBOutlet weak var underTextLabel: UILabel!
@IBOutlet weak var aboveTextLabel: UILabel!
@IBOutlet weak var numberText: UILabel!
@IBOutlet weak var wokaLogoTopSpacing: NSLayoutConstraint!
var vm = SelectAgeVM()
// MARK: - LifeCycle
override func viewDidLoad() {
super.viewDidLoad()
vm.vc = self
vm.initData()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.setNavigationBarHidden(false, animated: animated)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.setNavigationBarHidden(true, animated: animated)
}
// MARK: - Button Tap Handler
}

View File

@@ -0,0 +1,95 @@
//
// SplashVC.swift
// WOKA
//
// Created by MacBook Pro on 25/04/24.
//
import UIKit
import Lottie
class SplashVC: UIViewController {
@IBOutlet weak var wokaLogo: UIImageView!
@IBOutlet weak var hindiBtn: UIButton!
@IBOutlet weak var englishBtn: UIButton!
@IBOutlet weak var languageBtnStack: UIStackView!
@IBOutlet weak var wokaOriginY: NSLayoutConstraint!
var vm = SplashVM()
// MARK: - View Life Cycle
override func viewDidLoad() {
super.viewDidLoad()
vm.vc = self
vm.playSplashSound()
animateImageScale()
self.navigationItem.backBarButtonItem = UIBarButtonItem(title:"", style:.plain, target:nil, action:nil)
}
@IBAction func languageBtnTapped(_ sender: UIButton) {
switch sender{
case hindiBtn:
K.GVar.localized = K.LocalizedEnum.hindi
case englishBtn:
K.GVar.localized = K.LocalizedEnum.english
default:
K.GVar.localized = K.LocalizedEnum.english
}
let sb = UIStoryboard(name: K.StoryBoard.main, bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.OnBoarding.onBoardVC) as! OnBoardVC
// Create a CATransition instance
let transition = CATransition()
transition.duration = 0.3 // Set the duration of the animation
transition.type = CATransitionType.fade // Set the type of animation to fade
// Optionally, set other properties such as timing function, subtype, etc.
// transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
// transition.subtype = CATransitionSubtype.fromTop
// Get the navigation controller
guard let navigationController = navigationController else { return }
// Perform the push animation with the custom transition
navigationController.view.layer.add(transition, forKey: nil)
navigationController.pushViewController(vc, animated: false)
}
func animateImageScale() {
UIView.animate(withDuration: 3.0, delay: 0, options: [], animations: {
self.wokaLogo.transform = CGAffineTransform(scaleX: 1.8, y: 1.8)
}, completion: nil)
let newConstant = wokaOriginY.constant - 50
Timer.scheduledTimer(withTimeInterval: 6, repeats: false) { _ in
UIView.animate(withDuration: 0.5, animations: {
// Update the constant value of the top constraint
self.wokaOriginY.constant = newConstant
// Inform the layout system to update
self.view.layoutIfNeeded()
}) { _ in
UIView.animate(withDuration: 0.3, delay: 0,options : [.transitionCrossDissolve],animations: {
// Set the isHidden property of the view
self.languageBtnStack.isHidden = false
}) {_ in
// Inform the stack view to update its layout
self.languageBtnStack.layoutIfNeeded()
}
}
}
}
override func viewDidLayoutSubviews() {
vm.initView()
}
}

View File

@@ -0,0 +1,14 @@
//
// CarouselData.swift
// WOKA
//
// Created by Bilal on 26/04/2024.
//
import Foundation
struct CarouselData{
let title : String
let desc : String
let image : String
}

View File

@@ -0,0 +1,27 @@
//
// OnBoardCell.swift
// WOKA
//
// Created by Bilal on 26/04/2024.
//
import UIKit
class OnBoardCell: UICollectionViewCell {
@IBOutlet weak var carouselImage: UIImageView!
@IBOutlet weak var heading: UILabel!
@IBOutlet weak var subHead: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
func setData(data : CarouselData){
self.carouselImage.image = UIImage(named: data.image)
self.heading.text = data.title
self.subHead.text = data.desc
}
}

View File

@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
<capability name="Named colors" minToolsVersion="9.0"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<customFonts key="customFonts">
<array key="Exo2-Bold.ttf">
<string>Exo2-Bold</string>
</array>
<array key="Exo2-Regular.ttf">
<string>Exo2-Regular</string>
</array>
</customFonts>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="OnBoardCell" id="gTV-IL-0wX" customClass="OnBoardCell" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="274" height="442"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="274" height="442"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="O8c-Dr-seP">
<rect key="frame" x="0.0" y="0.0" width="274" height="442"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ijP-88-pXW">
<rect key="frame" x="0.0" y="0.0" width="274" height="279"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="5th-Sm-oox">
<rect key="frame" x="20" y="10" width="234" height="259"/>
</imageView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="5th-Sm-oox" firstAttribute="leading" secondItem="ijP-88-pXW" secondAttribute="leading" constant="20" id="cKO-Ru-NsK"/>
<constraint firstItem="5th-Sm-oox" firstAttribute="top" secondItem="ijP-88-pXW" secondAttribute="top" constant="10" id="cwc-gj-BYl"/>
<constraint firstAttribute="bottom" secondItem="5th-Sm-oox" secondAttribute="bottom" constant="10" id="p6I-3w-yXb"/>
<constraint firstAttribute="trailing" secondItem="5th-Sm-oox" secondAttribute="trailing" constant="20" id="sCu-DR-jBh"/>
</constraints>
</view>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="Dkk-pi-h3c">
<rect key="frame" x="0.0" y="299" width="274" height="143"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalCompressionResistancePriority="749" text="Label" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="20" translatesAutoresizingMaskIntoConstraints="NO" id="paa-o2-Dbu">
<rect key="frame" x="5" y="0.0" width="264" height="72.333333333333329"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="22"/>
<color key="textColor" red="0.035294117647058823" green="0.0" blue="0.36470588235294116" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="16" translatesAutoresizingMaskIntoConstraints="NO" id="qhy-ql-pmY">
<rect key="frame" x="5" y="87.333333333333314" width="264" height="21.666666666666671"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="18"/>
<color key="textColor" name="TextDarkBlue"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<edgeInsets key="layoutMargins" top="0.0" left="5" bottom="0.0" right="5"/>
</stackView>
</subviews>
</stackView>
</subviews>
</view>
<viewLayoutGuide key="safeArea" id="ZTg-uK-7eu"/>
<constraints>
<constraint firstItem="O8c-Dr-seP" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="5Pf-kM-sJW"/>
<constraint firstAttribute="trailing" secondItem="O8c-Dr-seP" secondAttribute="trailing" id="JwU-uf-5EQ"/>
<constraint firstAttribute="bottom" secondItem="O8c-Dr-seP" secondAttribute="bottom" id="ehf-sF-knf"/>
<constraint firstItem="ijP-88-pXW" firstAttribute="height" secondItem="gTV-IL-0wX" secondAttribute="height" multiplier="0.631222" id="g6X-mP-Zn9"/>
<constraint firstItem="O8c-Dr-seP" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="v6L-aV-PBf"/>
</constraints>
<size key="customSize" width="274" height="442"/>
<connections>
<outlet property="carouselImage" destination="5th-Sm-oox" id="YdR-SE-LLP"/>
<outlet property="heading" destination="paa-o2-Dbu" id="RHa-BD-FFo"/>
<outlet property="subHead" destination="qhy-ql-pmY" id="cM2-kd-Leg"/>
</connections>
<point key="canvasLocation" x="300.76335877862596" y="126.7605633802817"/>
</collectionViewCell>
</objects>
<resources>
<namedColor name="TextDarkBlue">
<color red="0.10599999874830246" green="0.050999999046325684" blue="0.60399997234344482" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor>
</resources>
</document>

View File

@@ -0,0 +1,84 @@
//
// SelectAgeVM.swift
// WOKA
//
// Created by Bilal on 26/04/2024.
//
import UIKit
class SelectAgeVM{
weak var vc : SelectAgeVC!
func initData(){
vc.underAgeView.roundCorner(radius: 25)
vc.aboveAgeView.roundCorner(radius: 25)
// Add tap gesture recognizer to the view
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(kid))
vc.underAgeView.addGestureRecognizer(tapGesture)
// Add tap gesture recognizer to the view
let tapGesture2 = UITapGestureRecognizer(target: self, action: #selector(adult))
vc.aboveAgeView.addGestureRecognizer(tapGesture2)
vc.privacyLabel.text = "We Value Your Privacy".localized(loc: K.GVar.localized)
vc.magicNoLabel.text = "16 IS THE MAGIC NUMBER".localized(loc: K.GVar.localized)
vc.yearsLabel.text = "YEARS".localized(loc: K.GVar.localized)
vc.iAmAboveLabel.text = "I AM".localized(loc: K.GVar.localized)
vc.iAmUnderLabel.text = "I AM".localized(loc: K.GVar.localized)
vc.underLabel.text = "UNDER".localized(loc: K.GVar.localized)
vc.aboveLabel.text = "ABOVE".localized(loc: K.GVar.localized)
vc.numberText.text = "16".localized(loc: K.GVar.localized)
vc.underTextLabel.text = "We will need your parents email so they can verify and agree to create an account.".localized(loc: K.GVar.localized)
vc.aboveTextLabel.text = "Above 16 users will be registered as a guardian with additional content.".localized(loc: K.GVar.localized)
self.vc.wokaLogoTopSpacing.constant = CheckPhoneHomeBtnOrNotch.shareInstance.topConstriant()
}
@objc func kid() {
// Apply click effect animation
UIView.animate(withDuration: 0.1, animations: {
self.vc.underAgeView.transform = CGAffineTransform(scaleX: 0.9, y: 0.9)
}) { _ in
UIView.animate(withDuration: 0.1) {
self.vc.underAgeView.transform = .identity
}
}
AuthFunc.shareInstance.userType = .kid
pushToEmail()
}
@objc func adult() {
// Apply click effect animation
UIView.animate(withDuration: 0.1, animations: {
self.vc.aboveAgeView.transform = CGAffineTransform(scaleX: 0.9, y: 0.9)
}) { _ in
UIView.animate(withDuration: 0.1) {
self.vc.aboveAgeView.transform = .identity
}
}
AuthFunc.shareInstance.userType = .adult
pushToEmail()
}
private func pushToEmail(){
let sb = UIStoryboard(name: K.StoryBoard.authenticationSB, bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Authentication.emailVC) as! EmailVC
self.vc.navigationController?.pushViewController(vc, animated: true)
}
}
extension String {
var localized: String {
return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: "")
}
func localizedWithComment(comment:String) -> String {
return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: comment)
}
}

View File

@@ -0,0 +1,38 @@
//
// SplashVM.swift
// WOKA
//
// Created by MacBook Pro on 25/04/24.
//
import UIKit
import AVFoundation
class SplashVM{
weak var vc : SplashVC!
var player: AVAudioPlayer?
func playSplashSound() {
guard let path = Bundle.main.path(forResource: K.StaticFilesString.wokaSplashSound, ofType:"m4a") else {
return }
let url = URL(fileURLWithPath: path)
do {
player = try AVAudioPlayer(contentsOf: url)
player?.play()
} catch let error {
print(error.localizedDescription)
}
}
func initView(){
let color1 = #colorLiteral(red: 0.144693464, green: 0.1426281333, blue: 0.6686832905, alpha: 1)
let color2 = #colorLiteral(red: 0.4862745098, green: 0.1960784314, blue: 0.7019607843, alpha: 1)
vc.hindiBtn.applyGradient(colors: [color1, color2], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0, y: 0.8))
vc.englishBtn.applyGradient(colors: [color1, color2], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0, y: 0.8))
vc.hindiBtn.roundCorner()
vc.englishBtn.roundCorner()
}
}

View File

@@ -0,0 +1,9 @@
/* Class = "UILabel"; text = "Hello"; ObjectID = "0Ab-Q1-iCR"; */
"0Ab-Q1-iCR.text" = "Hello";
/* Class = "UIButton"; normalTitle = "हिंदी"; ObjectID = "SYp-e1-w6s"; */
"SYp-e1-w6s.normalTitle" = "हिंदी";
/* Class = "UIButton"; normalTitle = "English"; ObjectID = "XdB-NB-osA"; */
"XdB-NB-osA.normalTitle" = "English";

View File

@@ -0,0 +1,6 @@
/* Class = "UIButton"; normalTitle = "हिंदी"; ObjectID = "SYp-e1-w6s"; */
"SYp-e1-w6s.normalTitle" = "हिंदी";
/* Class = "UIButton"; normalTitle = "English"; ObjectID = "XdB-NB-osA"; */
"XdB-NB-osA.normalTitle" = "English";

Some files were not shown because too many files have changed in this diff Show More