").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
diff --git a/Documentation/search.json b/Documentation/search.json
new file mode 100644
index 0000000..21ccfcc
--- /dev/null
+++ b/Documentation/search.json
@@ -0,0 +1 @@
+{"Protocols/VSAlertControllerDelegate.html#/c:objc(pl)VSAlertControllerDelegate(im)alertControllerWillAppear:":{"name":"-alertControllerWillAppear:","abstract":"
Sent to the delegate just before the view controller appears.
","parent_name":"VSAlertControllerDelegate"},"Protocols/VSAlertControllerDelegate.html#/c:objc(pl)VSAlertControllerDelegate(im)alertControllerDidAppear:":{"name":"-alertControllerDidAppear:","abstract":"
Sent to teh delegate just after the view controller appears.
","parent_name":"VSAlertControllerDelegate"},"Protocols/VSAlertControllerDelegate.html#/c:objc(pl)VSAlertControllerDelegate(im)alertControllerWillDisappear:":{"name":"-alertControllerWillDisappear:","abstract":"
Sent to the delegate just before the view controller disappears.
","parent_name":"VSAlertControllerDelegate"},"Protocols/VSAlertControllerDelegate.html#/c:objc(pl)VSAlertControllerDelegate(im)alertControllerDidDisappear:":{"name":"-alertControllerDidDisappear:","abstract":"
Sent to teh delegate just after the view controller disappears.
","parent_name":"VSAlertControllerDelegate"},"Protocols/VSAlertControllerDelegate.html#/c:objc(pl)VSAlertControllerDelegate(im)alertController:didSelectAction:":{"name":"-alertController:didSelectAction:","abstract":"
Sent to the delegate when the user taps on an action. Message is sent before the action block is executed.
","parent_name":"VSAlertControllerDelegate"},"Protocols/VSAlertControllerDelegate.html":{"name":"VSAlertControllerDelegate","abstract":"
VSAlertControllerDelegate is a protocol used to inform an object about user intractions with alerts
"},"Enums/VSAlertControllerAnimationStyle.html#/c:@E@VSAlertControllerAnimationStyle@VSAlertControllerAnimationStyleRise":{"name":"VSAlertControllerAnimationStyleRise","abstract":"
The alert rises from the bottom of the screen and falls down when dismissed.
","parent_name":"VSAlertControllerAnimationStyle"},"Enums/VSAlertControllerAnimationStyle.html#/c:@E@VSAlertControllerAnimationStyle@VSAlertControllerAnimationStyleFall":{"name":"VSAlertControllerAnimationStyleFall","abstract":"
The alert falls from the top of the screen and rises up when dismissed.
","parent_name":"VSAlertControllerAnimationStyle"},"Enums/VSAlertControllerAnimationStyle.html#/c:@E@VSAlertControllerAnimationStyle@VSAlertControllerAnimationStyleSlide":{"name":"VSAlertControllerAnimationStyleSlide","abstract":"
The alert slides from the left of the screen and slides to the right when dismissed.
","parent_name":"VSAlertControllerAnimationStyle"},"Enums/VSAlertControllerAnimationStyle.html#/c:@E@VSAlertControllerAnimationStyle@VSAlertControllerAnimationStyleFlip":{"name":"VSAlertControllerAnimationStyleFlip","abstract":"
The alert flips from the right, and flips to the left when dismissed.
","parent_name":"VSAlertControllerAnimationStyle"},"Enums/VSAlertControllerAnimationStyle.html#/c:@E@VSAlertControllerAnimationStyle@VSAlertControllerAnimationStyleSticker":{"name":"VSAlertControllerAnimationStyleSticker","abstract":"
The alert page flips from the top, then again from the bottom when dismissed.
","parent_name":"VSAlertControllerAnimationStyle"},"Enums/VSAlertControllerAnimationStyle.html#/c:@E@VSAlertControllerAnimationStyle@VSAlertControllerAnimationStyleCrossDisolve":{"name":"VSAlertControllerAnimationStyleCrossDisolve","abstract":"
The alert page fades in, then fades out dismissed.
","parent_name":"VSAlertControllerAnimationStyle"},"Enums/VSAlertControllerAnimationStyle.html#/c:@E@VSAlertControllerAnimationStyle@VSAlertControllerAnimationStyleAutomatic":{"name":"VSAlertControllerAnimationStyleAutomatic","abstract":"
The alert chooses its presentation and dismissal styles automatically.
","parent_name":"VSAlertControllerAnimationStyle"},"Enums/VSAlertControllerStyle.html#/c:@E@VSAlertControllerStyle@VSAlertControllerStyleAlert":{"name":"VSAlertControllerStyleAlert","abstract":"
A standard alert, 270pt wide, variable height. Supports text fields
","parent_name":"VSAlertControllerStyle"},"Enums/VSAlertControllerStyle.html#/c:@E@VSAlertControllerStyle@VSAlertControllerStyleWalkthroughAlert":{"name":"VSAlertControllerStyleWalkthroughAlert","abstract":"
A wider alert that stretches to the margins of the device - 18pt in either direction. Supports text fields, useful for onboarding. 500pt wide on iPad.
","parent_name":"VSAlertControllerStyle"},"Enums/VSAlertControllerStyle.html#/c:@E@VSAlertControllerStyle@VSAlertControllerStyleActionSheet":{"name":"VSAlertControllerStyleActionSheet","abstract":"
An alert that appears at the bottom of the display, similar to Apple’s action sheet stlye. Does NOT support text fields.
","parent_name":"VSAlertControllerStyle"},"Enums/VSAlertActionStyle.html#/c:@E@VSAlertActionStyle@VSAlertActionStyleDefault":{"name":"VSAlertActionStyleDefault","abstract":"
A normal action
","parent_name":"VSAlertActionStyle"},"Enums/VSAlertActionStyle.html#/c:@E@VSAlertActionStyle@VSAlertActionStyleCancel":{"name":"VSAlertActionStyleCancel","abstract":"
An action that indicates to the user that the current process wil be cancelled
","parent_name":"VSAlertActionStyle"},"Enums/VSAlertActionStyle.html#/c:@E@VSAlertActionStyle@VSAlertActionStyleDestructive":{"name":"VSAlertActionStyleDestructive","abstract":"
An action indicates to the user that an irreversible process is about to happen.
","parent_name":"VSAlertActionStyle"},"Enums/VSAlertActionStyle.html":{"name":"VSAlertActionStyle","abstract":"
An enumeration for the kinds of actions that can be created
"},"Enums/VSAlertControllerStyle.html":{"name":"VSAlertControllerStyle","abstract":"
An enumeration describing the kinds of alerts that VSAlertController can display
"},"Enums/VSAlertControllerAnimationStyle.html":{"name":"VSAlertControllerAnimationStyle","abstract":"
An enumeration describing the kinds of animations that can be used to present and hide an alert
"},"Constants.html#/c:@VSAlertControllerNotImplementedException":{"name":"VSAlertControllerNotImplementedException","abstract":"
An exception thrown when an unimplemented feature is encountered at runtime.
"},"Constants.html#/c:@VSAlertControllerTextFieldInvalidException":{"name":"VSAlertControllerTextFieldInvalidException","abstract":"
An exception thrown when a text field is added to an alert controller which doesn’t support text fields
"},"Constants.html#/c:@VSAlertControllerPresentationAnimationException":{"name":"VSAlertControllerPresentationAnimationException","abstract":"
An exception thrown when a view controller presentation animation fails
"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(cm)alertControllerWithTitle:message:image:style:":{"name":"+alertControllerWithTitle:message:image:style:","abstract":"
A factory method to create an instance of VSAlertController. This is the preffered way to instantiate alerts
","parent_name":"VSAlertController"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(cm)alertControllerWithTitle:message:style:":{"name":"+alertControllerWithTitle:message:style:","abstract":"
A factory method to create an instance of VSAlertController.
","parent_name":"VSAlertController"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(im)initWithTitle:message:image:style:":{"name":"-initWithTitle:message:image:style:","abstract":"
Create an instance of VSAlertController
","parent_name":"VSAlertController"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(py)alertTitleTextColor":{"name":"alertTitleTextColor","abstract":"
The color of the alert title. The default value is black.
","parent_name":"VSAlertController"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(py)alertMessageTextColor":{"name":"alertMessageTextColor","abstract":"
The color of the alert message (description). The default value is black.
","parent_name":"VSAlertController"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(py)alertTitleTextFont":{"name":"alertTitleTextFont","abstract":"
The font of the alert title. The default value is the system font size 17 weight medium.
","parent_name":"VSAlertController"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(py)alertMessageTextFont":{"name":"alertMessageTextFont","abstract":"
The font of the alert message (description). The default value is the system font size 15 weight regular.
","parent_name":"VSAlertController"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(py)alertMessageTextAlignment":{"name":"alertMessageTextAlignment","abstract":"
The text alignment of the alert message
","parent_name":"VSAlertController"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(py)alertBackgroundColor":{"name":"alertBackgroundColor","abstract":"
The background color of the alert
","parent_name":"VSAlertController"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(im)addAction:":{"name":"-addAction:","abstract":"
Add an action to an alert
","parent_name":"VSAlertController"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(im)addTextField:":{"name":"-addTextField:","abstract":"
Add a text field to the alert. Rather than instantiating a UITextField object yourself, VSAlertController instantiates one for you. You can configure it using the optional configuration block
","parent_name":"VSAlertController"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(py)dismissOnBackgroundTap":{"name":"dismissOnBackgroundTap","abstract":"
Set to YES if you want the alert to dismiss itself when the user taps on the background of the alert. Default is NO.
","parent_name":"VSAlertController"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(py)animationStyle":{"name":"animationStyle","abstract":"
Change the animation used when the alert is presented AND dismissed. Default is VSAlertControllerAnimationStyleRise.
","parent_name":"VSAlertController"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(py)delegate":{"name":"delegate","abstract":"
The delegate object to handle alert action interactions
","parent_name":"VSAlertController"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(py)textFields":{"name":"textFields","abstract":"
Returns the array of text field objects that are displayed in the alert, so you can interact with the user’s inputs.
","parent_name":"VSAlertController"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(py)style":{"name":"style","abstract":"
The style of the alert
","parent_name":"VSAlertController"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(py)message":{"name":"message","abstract":"
The message of the alert
","parent_name":"VSAlertController"},"Classes/VSAlertController.html#/c:objc(cs)VSAlertController(py)image":{"name":"image","abstract":"
The image of the alert
","parent_name":"VSAlertController"},"Classes/VSAlertAction.html#/c:objc(cs)VSAlertAction(cm)alertActionWithTitle:style:action:":{"name":"+alertActionWithTitle:style:action:","abstract":"
A factory method to create an instance of UIAlertAction. This is the prefered way to create alert actions.
","parent_name":"VSAlertAction"},"Classes/VSAlertAction.html#/c:objc(cs)VSAlertAction(im)initWithTitle:style:action:":{"name":"-initWithTitle:style:action:","abstract":"
Create an instance of UIAlertAction
","parent_name":"VSAlertAction"},"Classes/VSAlertAction.html#/c:objc(cs)VSAlertAction(py)actionTextColor":{"name":"actionTextColor","abstract":"
The color of the title text used in non-desctructive actions
","parent_name":"VSAlertAction"},"Classes/VSAlertAction.html#/c:objc(cs)VSAlertAction(py)destructiveActionTextColor":{"name":"destructiveActionTextColor","abstract":"
The color of the title text used in destructive actions
","parent_name":"VSAlertAction"},"Classes/VSAlertAction.html#/c:objc(cs)VSAlertAction(py)actionTextFont":{"name":"actionTextFont","abstract":"
The font of the title used in non-cancel actions
","parent_name":"VSAlertAction"},"Classes/VSAlertAction.html#/c:objc(cs)VSAlertAction(py)cancelActionTextFont":{"name":"cancelActionTextFont","abstract":"
The font of the title used in cancel actions
","parent_name":"VSAlertAction"},"Classes/VSAlertAction.html#/c:objc(cs)VSAlertAction(py)alertTitle":{"name":"alertTitle","abstract":"
The title of the alert
","parent_name":"VSAlertAction"},"Classes/VSAlertAction.html#/c:objc(cs)VSAlertAction(py)style":{"name":"style","abstract":"
The display style of the alert
","parent_name":"VSAlertAction"},"Classes/VSAlertAction.html#/c:objc(cs)VSAlertAction(py)action":{"name":"action","abstract":"
The block that will be executed when the user interacts with the action. The block is called on the main thread always, and begins executed before the alert is dismissed
","parent_name":"VSAlertAction"},"Classes/VSAlertAction.html":{"name":"VSAlertAction","abstract":"
VSAlertAction is a specialized subclass of UIButton that is used to populate and provide interactive controls to an instance of VSAlertController.
"},"Classes/VSAlertController.html":{"name":"VSAlertController","abstract":"
VSAlertController is a drop-in replacement for UIAlertController with more features. It is created using the +alertControllerWithTitle:message:image:style:
class method, and configured using instances of VSAlertAction. You can add text fields by calling -addTextField:
on an instance of VSAlertController. Instantiate the controller, add your actions and textfieds. and any other configuration you might need. Present the controller modally using UIViewController’s -presentViewController:animated:completion:
method. VSAlertController respects the animation paramater of this call, and you configure the animation in question by setting your instances animationStyle property before presentation. You can also change this property in the handler of an action to use a different animation on dismissal.
"},"Classes.html":{"name":"Classes","abstract":"
The following classes are available globally.
"},"Constants.html":{"name":"Constants","abstract":"
The following constants are available globally.
"},"Enums.html":{"name":"Enumerations","abstract":"
The following enumerations are available globally.
"},"Protocols.html":{"name":"Protocols","abstract":"
The following protocols are available globally.
"}}
\ No newline at end of file
diff --git a/Documentation/undocumented.json b/Documentation/undocumented.json
new file mode 100644
index 0000000..fee0fc0
--- /dev/null
+++ b/Documentation/undocumented.json
@@ -0,0 +1,6 @@
+{
+ "warnings": [
+
+ ],
+ "source_directory": "/Users/vsanthanam/Documents/Dev/VMS/VSAlert"
+}
\ No newline at end of file
diff --git a/Release/VSAlert.framework/Headers b/Release/VSAlert.framework/Headers
new file mode 120000
index 0000000..a177d2a
--- /dev/null
+++ b/Release/VSAlert.framework/Headers
@@ -0,0 +1 @@
+Versions/Current/Headers
\ No newline at end of file
diff --git a/Release/VSAlert.framework/Modules/module.modulemap b/Release/VSAlert.framework/Modules/module.modulemap
new file mode 100755
index 0000000..2ecc7ad
--- /dev/null
+++ b/Release/VSAlert.framework/Modules/module.modulemap
@@ -0,0 +1,6 @@
+framework module VSAlert {
+ umbrella header "VSAlert.h"
+
+ export *
+ module * { export * }
+}
diff --git a/Release/VSAlert.framework/VSAlert b/Release/VSAlert.framework/VSAlert
new file mode 120000
index 0000000..1199dc3
--- /dev/null
+++ b/Release/VSAlert.framework/VSAlert
@@ -0,0 +1 @@
+Versions/Current/VSAlert
\ No newline at end of file
diff --git a/Release/VSAlert.framework/Versions/A/Headers/VSAlert.h b/Release/VSAlert.framework/Versions/A/Headers/VSAlert.h
new file mode 100755
index 0000000..9904210
--- /dev/null
+++ b/Release/VSAlert.framework/Versions/A/Headers/VSAlert.h
@@ -0,0 +1,15 @@
+//
+// VSAlert.h
+// VSAlert
+//
+// Created by Varun Santhanam on 10/8/17.
+//
+
+#import
+
+/**
+ Umbrella Header
+ */
+
+#import
+#import
diff --git a/Release/VSAlert.framework/Versions/A/Headers/VSAlertAction.h b/Release/VSAlert.framework/Versions/A/Headers/VSAlertAction.h
new file mode 100755
index 0000000..8a537d2
--- /dev/null
+++ b/Release/VSAlert.framework/Versions/A/Headers/VSAlertAction.h
@@ -0,0 +1,108 @@
+//
+// VSAlertAction.h
+// VSAlertController
+//
+// Created by Varun Santhanam on 10/8/17.
+//
+
+@import UIKit;
+
+/**
+ An enumeration for the kinds of actions that can be created
+
+ - VSAlertActionStyleDefault: A normal action
+ - VSAlertActionStyleCancel: An action that indicates to the user that the current process wil be cancelled
+ - VSAlertActionStyleDestructive: An action indicates to the user that an irreversible process is about to happen.
+ */
+typedef NS_ENUM(NSInteger, VSAlertActionStyle) {
+
+ /**
+ A normal action
+ */
+ VSAlertActionStyleDefault,
+
+ /**
+ An action that indicates to the user that the current process wil be cancelled
+ */
+ VSAlertActionStyleCancel,
+
+ /**
+ An action indicates to the user that an irreversible process is about to happen.
+ */
+ VSAlertActionStyleDestructive
+
+};
+
+/**
+ VSAlertAction is a specialized subclass of UIButton that is used to populate and provide interactive controls to an instance of VSAlertController.
+ */
+@interface VSAlertAction : UIButton
+
+/**
+ @name Creating Actions
+ */
+
+/**
+ A factory method to create an instance of UIAlertAction. This is the prefered way to create alert actions.
+
+ @param title The title of the action
+ @param style The style of the action
+ @param action The block to be executed when the user interacts with the action, but before the alert is dismissed
+ @return The instantiaed action
+ */
++ (nullable instancetype)alertActionWithTitle:(nonnull NSString *)title style:(VSAlertActionStyle)style action:(void (^_Nullable)(VSAlertAction * _Nonnull action))action;
+
+/**
+ Create an instance of UIAlertAction
+
+ @param title The title of the action
+ @param style The style of the action
+ @param action The block to be executed when the user interacts with the action, but before the alert is dismissed
+ @return The instantiaed action
+ */
+- (nullable instancetype)initWithTitle:(nonnull NSString *)title style:(VSAlertActionStyle)style action:(void (^_Nullable)(VSAlertAction *_Nonnull))action NS_DESIGNATED_INITIALIZER;
+
+/**
+ @name Configuring Action Appearance
+ */
+
+/**
+ The color of the title text used in non-desctructive actions
+ */
+@property (NS_NONATOMIC_IOSONLY, strong, nonnull) UIColor *actionTextColor UI_APPEARANCE_SELECTOR;
+
+/**
+ The color of the title text used in destructive actions
+ */
+@property (NS_NONATOMIC_IOSONLY, strong, nonnull) UIColor *destructiveActionTextColor UI_APPEARANCE_SELECTOR;
+
+/**
+ The font of the title used in non-cancel actions
+ */
+@property (NS_NONATOMIC_IOSONLY, strong, nonnull) UIFont *actionTextFont UI_APPEARANCE_SELECTOR;
+
+/**
+ The font of the title used in cancel actions
+ */
+@property (NS_NONATOMIC_IOSONLY, strong, nonnull) UIFont *cancelActionTextFont UI_APPEARANCE_SELECTOR;
+
+/**
+ @name Interacting with Actions
+ */
+
+/**
+ The title of the alert
+ */
+@property (NS_NONATOMIC_IOSONLY, copy, readonly, nullable) NSString *alertTitle;
+
+/**
+ The display style of the alert
+ */
+@property (NS_NONATOMIC_IOSONLY, assign, readonly) VSAlertActionStyle style;
+
+/**
+ The block that will be executed when the user interacts with the action. The block is called on the main thread always, and begins executed before the alert is dismissed
+ */
+@property (NS_NONATOMIC_IOSONLY, copy, readonly, nullable) void (^action)(VSAlertAction * _Nonnull action);
+
+@end
diff --git a/Release/VSAlert.framework/Versions/A/Headers/VSAlertController.h b/Release/VSAlert.framework/Versions/A/Headers/VSAlertController.h
new file mode 100755
index 0000000..5c8872e
--- /dev/null
+++ b/Release/VSAlert.framework/Versions/A/Headers/VSAlertController.h
@@ -0,0 +1,286 @@
+//
+// VSAlertController.h
+// VSAlertController
+//
+// Created by Varun Santhanam on 10/8/17.
+//
+
+@import UIKit;
+
+#import "VSAlertAction.h"
+
+/**
+ An exception thrown when an unimplemented feature is encountered at runtime.
+ */
+extern NSString * _Nonnull const VSAlertControllerNotImplementedException;
+
+/**
+ An exception thrown when a text field is added to an alert controller which doesn't support text fields
+ */
+extern NSString * _Nonnull const VSAlertControllerTextFieldInvalidException;
+
+/**
+ An exception thrown when a view controller presentation animation fails
+ */
+extern NSString * _Nonnull const VSAlertControllerPresentationAnimationException;
+
+/**
+ An enumeration describing the kinds of alerts that VSAlertController can display
+
+ - VSAlertControllerStyleAlert: A standard alert, 270pt wide, variable height. Supports texts fields.
+ - VSAlertControllerStyleWalkthroughAlert: A wider alert that stretches to the margins of the device - 18pt in either direction. Supports text fields, useful for onboarding. 500pt wide on iPad.
+ - VSAlertControllerStyleActionSheet: An alert that appears at the bottom of the display, similar to Apple's action sheet stlye. Does NOT support text fields.
+ */
+typedef NS_ENUM(NSInteger, VSAlertControllerStyle) {
+
+ /**
+ A standard alert, 270pt wide, variable height. Supports text fields
+ */
+ VSAlertControllerStyleAlert,
+
+ /**
+ A wider alert that stretches to the margins of the device - 18pt in either direction. Supports text fields, useful for onboarding. 500pt wide on iPad.
+ */
+ VSAlertControllerStyleWalkthroughAlert,
+
+ /**
+ An alert that appears at the bottom of the display, similar to Apple's action sheet stlye. Does NOT support text fields.
+ */
+ VSAlertControllerStyleActionSheet
+
+};
+
+/**
+ An enumeration describing the kinds of animations that can be used to present and hide an alert
+
+ - VSAlertControllerAnimationStyleRise: The alert rises from the bottom of the screen and falls down when dismissed.
+ - VSAlertControllerAnimationStyleFall: The alert falls from the top of the screen and rises up when dismissed.
+ - VSAlertControllerAnimationStyleSlide: The alert slides from the left of the screen and slides to the right when dismissed.
+ - VSAlertControllerAnimationStyleFlip: The alert flips from the right, and flips to the left when dismissed.
+ - VSAlertControllerAnimationStyleSticker: The alert page flips from the top, then again from the bottom when dismissed.
+ - VSAlertControllerAnimationStyleCrossDisolve: The alert page fades in, then fades out dismissed.
+ - VSAlertControllerAnimationStyleAutomatic: The alert chooses its presentation and dismissal styles automatically.
+ */
+typedef NS_ENUM(NSInteger, VSAlertControllerAnimationStyle) {
+
+ /**
+ The alert rises from the bottom of the screen and falls down when dismissed.
+ */
+ VSAlertControllerAnimationStyleRise,
+
+ /**
+ The alert falls from the top of the screen and rises up when dismissed.
+ */
+ VSAlertControllerAnimationStyleFall,
+
+ /**
+ The alert slides from the left of the screen and slides to the right when dismissed.
+ */
+ VSAlertControllerAnimationStyleSlide,
+
+ /**
+ The alert flips from the right, and flips to the left when dismissed.
+ */
+ VSAlertControllerAnimationStyleFlip,
+
+ /**
+ The alert page flips from the top, then again from the bottom when dismissed.
+ */
+ VSAlertControllerAnimationStyleSticker,
+
+ /**
+ The alert page fades in, then fades out dismissed.
+ */
+ VSAlertControllerAnimationStyleCrossDisolve,
+
+ /**
+ The alert chooses its presentation and dismissal styles automatically.
+ */
+ VSAlertControllerAnimationStyleAutomatic
+
+};
+
+@class VSAlertController;
+
+/**
+ VSAlertControllerDelegate is a protocol used to inform an object about user intractions with alerts
+ */
+@protocol VSAlertControllerDelegate
+
+@optional
+
+/**
+ Sent to the delegate just before the view controller appears.
+
+ @param alertController The alert controller
+ */
+- (void)alertControllerWillAppear:(nonnull VSAlertController *)alertController;
+
+/**
+ Sent to teh delegate just after the view controller appears.
+
+ @param alertController The alert controller
+ */
+- (void)alertControllerDidAppear:(nonnull VSAlertController *)alertController;
+
+/**
+ Sent to the delegate just before the view controller disappears.
+
+ @param alertController The alert controller
+ */
+- (void)alertControllerWillDisappear:(nonnull VSAlertController *)alertController;
+
+/**
+ Sent to teh delegate just after the view controller disappears.
+
+ @param alertController The alert controller
+ */
+- (void)alertControllerDidDisappear:(nonnull VSAlertController *)alertController;
+
+/**
+ Sent to the delegate when the user taps on an action. Message is sent *before* the action block is executed.
+
+ @param alertController The alert controller that houses the action.
+ @param action The action that was interacted with.
+ */
+- (void)alertController:(nonnull VSAlertController *)alertController didSelectAction:(nonnull VSAlertAction *)action;
+
+@end
+
+/**
+ VSAlertController is a drop-in replacement for UIAlertController with more features. It is created using the `+alertControllerWithTitle:message:image:style:` class method, and configured using instances of VSAlertAction. You can add text fields by calling `-addTextField:` on an instance of VSAlertController. Instantiate the controller, add your actions and textfieds. and any other configuration you might need. Present the controller modally using UIViewController's `-presentViewController:animated:completion:` method. VSAlertController respects the animation paramater of this call, and you configure the animation in question by setting your instances animationStyle property before presentation. You can also change this property in the handler of an action to use a different animation on dismissal.
+ */
+@interface VSAlertController : UIViewController
+
+/**
+ @name Creating Alerts
+ */
+
+/**
+ A factory method to create an instance of VSAlertController. This is the preffered way to instantiate alerts
+
+ @param title The title of the alert
+ @param message The message of the alert
+ @param image The image to be displayed in the header of the alert.
+ @param style The style of the alert
+ @return The instantiated alert object
+ */
++ (nullable instancetype)alertControllerWithTitle:(nullable NSString *)title message:(nullable NSString *)message image:(nullable UIImage *)image style:(VSAlertControllerStyle)style;
+
+
+/**
+ A factory method to create an instance of VSAlertController.
+
+ @param title The title of the alert
+ @param message The message of the alert
+ @param style The style of the alert
+ @return The instantiated alert object
+ */
++ (nullable instancetype)alertControllerWithTitle:(nullable NSString *)title message:(nullable NSString *)message style:(VSAlertControllerStyle)style;
+
+/** Create an instance of VSAlertController
+
+ @param title The title of the alert
+ @param message The message of the alert
+ @param image The image to be displayed in the header of the alert.
+ @param style The style of the alert
+ @return The instantiated alert object
+ */
+- (nullable instancetype)initWithTitle:(nullable NSString *)title message:(nullable NSString *)message image:(nullable UIImage *)image style:(VSAlertControllerStyle)style NS_DESIGNATED_INITIALIZER;
+
+/**
+ @name Configuring Alert Appearance
+ */
+
+/**
+ The color of the alert title. The default value is black.
+ */
+@property (NS_NONATOMIC_IOSONLY, strong, nonnull) UIColor *alertTitleTextColor UI_APPEARANCE_SELECTOR;
+
+/**
+ The color of the alert message (description). The default value is black.
+ */
+@property (NS_NONATOMIC_IOSONLY, strong, nonnull) UIColor *alertMessageTextColor UI_APPEARANCE_SELECTOR;
+
+/**
+ The font of the alert title. The default value is the system font size 17 weight medium.
+ */
+@property (NS_NONATOMIC_IOSONLY, strong, nonnull) UIFont *alertTitleTextFont UI_APPEARANCE_SELECTOR;
+
+/**
+ The font of the alert message (description). The default value is the system font size 15 weight regular.
+ */
+@property (NS_NONATOMIC_IOSONLY, strong, nonnull) UIFont *alertMessageTextFont UI_APPEARANCE_SELECTOR;
+
+/**
+ The text alignment of the alert message
+ */
+@property (NS_NONATOMIC_IOSONLY, assign) NSTextAlignment alertMessageTextAlignment;
+
+/**
+ The background color of the alert
+ */
+@property (NS_NONATOMIC_IOSONLY, strong, nonnull) UIColor *alertBackgroundColor UI_APPEARANCE_SELECTOR;
+
+/**
+ @name Configuring Interactive Alert Content
+ */
+
+/**
+ Add an action to an alert
+
+ @param alertAction The action to add to the alert.
+ */
+- (void)addAction:(nonnull VSAlertAction *)alertAction;
+
+/**
+ Add a text field to the alert. Rather than instantiating a UITextField object yourself, VSAlertController instantiates one for you. You can configure it using the optional configuration block
+
+ @param configuration The block used to configure the text field.
+ */
+- (void)addTextField:(void (^_Nullable)(UITextField * _Nonnull textField))configuration;
+
+/**
+ @name Configure Alert Behavior
+ */
+
+/**
+ Set to YES if you want the alert to dismiss itself when the user taps on the background of the alert. Default is NO.
+ */
+@property (NS_NONATOMIC_IOSONLY, assign, getter=shouldDismissOnBackgroundTap) BOOL dismissOnBackgroundTap;
+
+/**
+ Change the animation used when the alert is presented AND dismissed. Default is VSAlertControllerAnimationStyleRise.
+ */
+@property (NS_NONATOMIC_IOSONLY, assign) VSAlertControllerAnimationStyle animationStyle;
+
+/**
+ @name Interacting with Alerts
+ */
+
+/**
+ The delegate object to handle alert action interactions
+ */
+@property (weak, nullable) id delegate;
+
+/**
+ Returns the array of text field objects that are displayed in the alert, so you can interact with the user's inputs.
+ */
+@property (NS_NONATOMIC_IOSONLY, strong, readonly, nonnull) NSArray *textFields;
+
+/**
+ The style of the alert
+ */
+@property (NS_NONATOMIC_IOSONLY, assign, readonly) VSAlertControllerStyle style;
+
+/**
+ The message of the alert
+ */
+@property (NS_NONATOMIC_IOSONLY, copy, readonly, nonnull) NSString *message;
+
+/**
+ The image of the alert
+ */
+@property (NS_NONATOMIC_IOSONLY, strong, readonly, nullable) UIImage *image;
+
+@end
diff --git a/Release/VSAlert.framework/Versions/A/VSAlert b/Release/VSAlert.framework/Versions/A/VSAlert
new file mode 100644
index 0000000..6d465bc
Binary files /dev/null and b/Release/VSAlert.framework/Versions/A/VSAlert differ
diff --git a/Release/VSAlert.framework/Versions/Current b/Release/VSAlert.framework/Versions/Current
new file mode 120000
index 0000000..8c7e5a6
--- /dev/null
+++ b/Release/VSAlert.framework/Versions/Current
@@ -0,0 +1 @@
+A
\ No newline at end of file
diff --git a/VSAlert.podspec b/VSAlert.podspec
index a0ad2a6..082ab68 100644
--- a/VSAlert.podspec
+++ b/VSAlert.podspec
@@ -8,7 +8,7 @@
Pod::Spec.new do |s|
s.name = 'VSAlert'
- s.version = '1.2.4'
+ s.version = '1.3'
s.summary = "An drop-in replacement for UIAlertController with more power and better looks."
s.description = "An drop-in replacement for UIAlertController that looks a hell of a lot better, built in Objective-C. Based on Codedio's aweomse Swift library, PMAlertController."
s.homepage = 'https://github.com/vsanthanam/VSAlert'