[
  {
    "path": ".gitignore",
    "content": ".DS_Store\n/.build\n/Packages\n/*.xcodeproj\nxcuserdata/\nDerivedData/\n.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata\n"
  },
  {
    "path": ".swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Demo/UIKit-Storyboard-WelcomeSheetDemo/Readme.md",
    "content": "# UIKit Storyboard WelcomeSheet Demo\n\nFor a step-by-step guide on how to configure by storyboards, please see the [Documentation](../../Documentation/UIKit/Readme.md)"
  },
  {
    "path": "Demo/UIKit-Storyboard-WelcomeSheetDemo/UIKit-Storyboard-WelcomeSheetDemo/AppDelegate.swift",
    "content": "//\n//  AppDelegate.swift\n//  UIKit-Storyboard-WelcomeSheetDemo\n//\n//  Created by Eskil Gjerde Sviggum on 18/01/2023.\n//\n\nimport UIKit\n\n@main\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n\n\n\n    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n        // Override point for customization after application launch.\n        return true\n    }\n\n    // MARK: UISceneSession Lifecycle\n\n    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {\n        // Called when a new scene session is being created.\n        // Use this method to select a configuration to create the new scene with.\n        return UISceneConfiguration(name: \"Default Configuration\", sessionRole: connectingSceneSession.role)\n    }\n\n    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {\n        // Called when the user discards a scene session.\n        // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.\n        // Use this method to release any resources that were specific to the discarded scenes, as they will not return.\n    }\n\n\n}\n\n"
  },
  {
    "path": "Demo/UIKit-Storyboard-WelcomeSheetDemo/UIKit-Storyboard-WelcomeSheetDemo/Assets.xcassets/AccentColor.colorset/Contents.json",
    "content": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"display-p3\",\n        \"components\" : {\n          \"alpha\" : \"1.000\",\n          \"blue\" : \"0.769\",\n          \"green\" : \"0.682\",\n          \"red\" : \"0.353\"\n        }\n      },\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Demo/UIKit-Storyboard-WelcomeSheetDemo/UIKit-Storyboard-WelcomeSheetDemo/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"1024.png\",\n      \"idiom\" : \"universal\",\n      \"platform\" : \"ios\",\n      \"size\" : \"1024x1024\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Demo/UIKit-Storyboard-WelcomeSheetDemo/UIKit-Storyboard-WelcomeSheetDemo/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Demo/UIKit-Storyboard-WelcomeSheetDemo/UIKit-Storyboard-WelcomeSheetDemo/Assets.xcassets/gears.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"settings-gears.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Demo/UIKit-Storyboard-WelcomeSheetDemo/UIKit-Storyboard-WelcomeSheetDemo/Base.lproj/LaunchScreen.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"13122.16\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"01J-lp-oVM\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"13104.12\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"EHf-IW-A2E\">\n            <objects>\n                <viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <color key=\"backgroundColor\" xcode11CocoaTouchSystemColor=\"systemBackgroundColor\" cocoaTouchSystemColor=\"whiteColor\"/>\n                        <viewLayoutGuide key=\"safeArea\" id=\"6Tk-OE-BBY\"/>\n                    </view>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"53\" y=\"375\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "Demo/UIKit-Storyboard-WelcomeSheetDemo/UIKit-Storyboard-WelcomeSheetDemo/Base.lproj/Main.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"21507\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"BYZ-38-t0r\">\n    <device id=\"retina6_12\" orientation=\"portrait\" appearance=\"light\"/>\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"21505\"/>\n        <capability name=\"Image references\" minToolsVersion=\"12.0\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"System colors in document resources\" minToolsVersion=\"11.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"tne-QT-ifu\">\n            <objects>\n                <viewController id=\"BYZ-38-t0r\" customClass=\"ViewController\" customModule=\"UIKit_Storyboard_WelcomeSheetDemo\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"8bC-Xf-vdC\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"393\" height=\"852\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"system\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"aZk-kz-NN5\">\n                                <rect key=\"frame\" x=\"140\" y=\"421\" width=\"113\" height=\"35\"/>\n                                <state key=\"normal\" title=\"Button\"/>\n                                <buttonConfiguration key=\"configuration\" style=\"plain\" title=\"Show sheet\"/>\n                                <connections>\n                                    <segue destination=\"wSc-U9-mbO\" kind=\"show\" id=\"Dav-6d-i9Z\"/>\n                                </connections>\n                            </button>\n                        </subviews>\n                        <viewLayoutGuide key=\"safeArea\" id=\"6Tk-OE-BBY\"/>\n                        <color key=\"backgroundColor\" systemColor=\"systemBackgroundColor\"/>\n                        <constraints>\n                            <constraint firstItem=\"aZk-kz-NN5\" firstAttribute=\"centerX\" secondItem=\"6Tk-OE-BBY\" secondAttribute=\"centerX\" id=\"Ntg-ty-FqX\"/>\n                            <constraint firstItem=\"aZk-kz-NN5\" firstAttribute=\"centerY\" secondItem=\"6Tk-OE-BBY\" secondAttribute=\"centerY\" id=\"laf-ey-900\"/>\n                        </constraints>\n                    </view>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"dkx-z0-nzr\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-474\" y=\"-9\"/>\n        </scene>\n        <!--Welcome Sheet Storyboard Controller-->\n        <scene sceneID=\"g5V-Rl-cAY\">\n            <objects>\n                <viewController id=\"wSc-U9-mbO\" customClass=\"WelcomeSheetStoryboardController\" customModule=\"WelcomeSheet\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"hYR-T5-H5T\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"393\" height=\"783\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <viewLayoutGuide key=\"safeArea\" id=\"wpQ-6y-NkU\"/>\n                        <color key=\"backgroundColor\" systemColor=\"systemBackgroundColor\"/>\n                    </view>\n                    <navigationItem key=\"navigationItem\" id=\"cz2-V1-5ZD\"/>\n                    <connections>\n                        <outletCollection property=\"pages\" destination=\"w5l-MJ-fFT\" collectionClass=\"NSMutableArray\" id=\"0BP-Vc-Kh4\"/>\n                        <outletCollection property=\"pages\" destination=\"xQK-Qv-ynw\" collectionClass=\"NSMutableArray\" id=\"wih-KP-Fyu\"/>\n                        <outletCollection property=\"pages\" destination=\"3P9-yZ-Obt\" collectionClass=\"NSMutableArray\" id=\"oQJ-qQ-t2D\"/>\n                        <outletCollection property=\"pages\" destination=\"uEx-Tk-d3j\" collectionClass=\"NSMutableArray\" id=\"b5e-J6-3qd\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"Qfn-oK-HbK\" userLabel=\"First Responder\" customClass=\"UIResponder\" sceneMemberID=\"firstResponder\"/>\n                <customObject id=\"w5l-MJ-fFT\" customClass=\"UIWelcomeSheetPage\" customModule=\"WelcomeSheet\">\n                    <userDefinedRuntimeAttributes>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"title\" value=\"Welcome to Welcome Sheet\"/>\n                        <userDefinedRuntimeAttribute type=\"color\" keyPath=\"accentColor\">\n                            <color key=\"value\" systemColor=\"systemPurpleColor\"/>\n                        </userDefinedRuntimeAttribute>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"optionalButtonTitle\" value=\"About Welcome Sheet...\"/>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"optionalButtonURL\" value=\"https://github.com/MAJKFL/Welcome-Sheet\"/>\n                    </userDefinedRuntimeAttributes>\n                    <connections>\n                        <outletCollection property=\"rows\" destination=\"VMc-pg-0aM\" collectionClass=\"NSMutableArray\" id=\"CTb-UH-6aO\"/>\n                        <outletCollection property=\"rows\" destination=\"Mx5-HU-xig\" collectionClass=\"NSMutableArray\" id=\"lb8-Hd-qbT\"/>\n                        <outletCollection property=\"rows\" destination=\"gqg-iL-fVk\" collectionClass=\"NSMutableArray\" id=\"fon-1L-hpS\"/>\n                    </connections>\n                </customObject>\n                <customObject id=\"VMc-pg-0aM\" customClass=\"UIWelcomeSheetPageRow\" customModule=\"WelcomeSheet\">\n                    <userDefinedRuntimeAttributes>\n                        <userDefinedRuntimeAttribute type=\"color\" keyPath=\"accentColor\">\n                            <color key=\"value\" systemColor=\"systemMintColor\"/>\n                        </userDefinedRuntimeAttribute>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"title\" value=\"Quick Creation\"/>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"content\" value=\"It's incredibly intuitive. Simply declare an array of pages filled with content.\"/>\n                        <userDefinedRuntimeAttribute type=\"image\" keyPath=\"image\">\n                            <imageReference key=\"value\" image=\"rectangle.stack.fill.badge.plus\" catalog=\"system\" symbolScale=\"default\"/>\n                        </userDefinedRuntimeAttribute>\n                    </userDefinedRuntimeAttributes>\n                </customObject>\n                <customObject id=\"Mx5-HU-xig\" customClass=\"UIWelcomeSheetPageRow\" customModule=\"WelcomeSheet\">\n                    <userDefinedRuntimeAttributes>\n                        <userDefinedRuntimeAttribute type=\"color\" keyPath=\"accentColor\">\n                            <color key=\"value\" systemColor=\"systemIndigoColor\"/>\n                        </userDefinedRuntimeAttribute>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"title\" value=\"Highly Customisable\"/>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"content\" value=\"Match sheet's appearance to your app, link buttons, perform actions after dismissal.\"/>\n                        <userDefinedRuntimeAttribute type=\"image\" keyPath=\"image\" value=\"gears\"/>\n                    </userDefinedRuntimeAttributes>\n                </customObject>\n                <customObject id=\"gqg-iL-fVk\" customClass=\"UIWelcomeSheetPageRow\" customModule=\"WelcomeSheet\">\n                    <userDefinedRuntimeAttributes>\n                        <userDefinedRuntimeAttribute type=\"color\" keyPath=\"accentColor\">\n                            <color key=\"value\" systemColor=\"systemGreenColor\"/>\n                        </userDefinedRuntimeAttribute>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"title\" value=\"Works out of the box\"/>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"content\" value=\"Don't worry about various screen sizes. It will look gorgeous on every iOS device.\"/>\n                        <userDefinedRuntimeAttribute type=\"image\" keyPath=\"image\">\n                            <imageReference key=\"value\" image=\"ipad.and.iphone\" catalog=\"system\" symbolScale=\"default\"/>\n                        </userDefinedRuntimeAttribute>\n                    </userDefinedRuntimeAttributes>\n                </customObject>\n                <customObject id=\"xQK-Qv-ynw\" customClass=\"UIWelcomeSheetPage\" customModule=\"WelcomeSheet\">\n                    <userDefinedRuntimeAttributes>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"title\" value=\"What's New in Translate\"/>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"mainButtonTitle\" value=\"Wassup?\"/>\n                    </userDefinedRuntimeAttributes>\n                    <connections>\n                        <outletCollection property=\"rows\" destination=\"eek-ZA-X6h\" collectionClass=\"NSMutableArray\" id=\"dq5-Yd-e2h\"/>\n                        <outletCollection property=\"rows\" destination=\"7JK-8p-Gwq\" collectionClass=\"NSMutableArray\" id=\"4eo-Qu-hGd\"/>\n                        <outletCollection property=\"rows\" destination=\"7ec-m2-wg8\" collectionClass=\"NSMutableArray\" id=\"DIf-A6-g1m\"/>\n                    </connections>\n                </customObject>\n                <customObject id=\"eek-ZA-X6h\" customClass=\"UIWelcomeSheetPageRow\" customModule=\"WelcomeSheet\">\n                    <userDefinedRuntimeAttributes>\n                        <userDefinedRuntimeAttribute type=\"image\" keyPath=\"image\">\n                            <imageReference key=\"value\" image=\"platter.2.filled.iphone\" catalog=\"system\" symbolScale=\"default\"/>\n                        </userDefinedRuntimeAttribute>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"content\" value=\"Choose a side-by-side or face-to-face conversation view.\"/>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"title\" value=\"Conversation Views\"/>\n                    </userDefinedRuntimeAttributes>\n                </customObject>\n                <customObject id=\"7JK-8p-Gwq\" customClass=\"UIWelcomeSheetPageRow\" customModule=\"WelcomeSheet\">\n                    <userDefinedRuntimeAttributes>\n                        <userDefinedRuntimeAttribute type=\"image\" keyPath=\"image\">\n                            <imageReference key=\"value\" image=\"mic.badge.plus\" catalog=\"system\" symbolScale=\"default\"/>\n                        </userDefinedRuntimeAttribute>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"content\" value=\"Respond in conversations without tapping the microphone button.\"/>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"title\" value=\"Auto Translate\"/>\n                    </userDefinedRuntimeAttributes>\n                </customObject>\n                <customObject id=\"7ec-m2-wg8\" customClass=\"UIWelcomeSheetPageRow\" customModule=\"WelcomeSheet\">\n                    <userDefinedRuntimeAttributes>\n                        <userDefinedRuntimeAttribute type=\"image\" keyPath=\"image\">\n                            <imageReference key=\"value\" image=\"iphone\" catalog=\"system\" symbolScale=\"default\"/>\n                        </userDefinedRuntimeAttribute>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"content\" value=\"Translate selected text anywhere on your iPhone.\"/>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"title\" value=\"System-Wide Translation\"/>\n                    </userDefinedRuntimeAttributes>\n                </customObject>\n                <customObject id=\"3P9-yZ-Obt\" customClass=\"UIWelcomeSheetPage\" customModule=\"WelcomeSheet\">\n                    <userDefinedRuntimeAttributes>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"title\" value=\"Welcome to Reminders\"/>\n                        <userDefinedRuntimeAttribute type=\"color\" keyPath=\"accentColor\">\n                            <color key=\"value\" systemColor=\"systemBlueColor\"/>\n                        </userDefinedRuntimeAttribute>\n                    </userDefinedRuntimeAttributes>\n                    <connections>\n                        <outletCollection property=\"rows\" destination=\"Qtg-f6-rtp\" collectionClass=\"NSMutableArray\" id=\"xFY-ou-4Pj\"/>\n                        <outletCollection property=\"rows\" destination=\"SnT-cV-GNR\" collectionClass=\"NSMutableArray\" id=\"gZ2-sN-rYi\"/>\n                        <outletCollection property=\"rows\" destination=\"3ku-ur-HfQ\" collectionClass=\"NSMutableArray\" id=\"wIs-4M-kk9\"/>\n                    </connections>\n                </customObject>\n                <customObject id=\"Qtg-f6-rtp\" customClass=\"UIWelcomeSheetPageRow\" customModule=\"WelcomeSheet\">\n                    <userDefinedRuntimeAttributes>\n                        <userDefinedRuntimeAttribute type=\"color\" keyPath=\"accentColor\">\n                            <color key=\"value\" systemColor=\"systemGreenColor\"/>\n                        </userDefinedRuntimeAttribute>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"title\" value=\"Quick Creation\"/>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"content\" value=\"Simply type, ask Siri, or use the quick toolbar to create reminders.\"/>\n                        <userDefinedRuntimeAttribute type=\"image\" keyPath=\"image\">\n                            <imageReference key=\"value\" image=\"note.text.badge.plus\" catalog=\"system\" symbolScale=\"default\"/>\n                        </userDefinedRuntimeAttribute>\n                    </userDefinedRuntimeAttributes>\n                </customObject>\n                <customObject id=\"SnT-cV-GNR\" customClass=\"UIWelcomeSheetPageRow\" customModule=\"WelcomeSheet\">\n                    <userDefinedRuntimeAttributes>\n                        <userDefinedRuntimeAttribute type=\"color\" keyPath=\"accentColor\">\n                            <color key=\"value\" red=\"0.0\" green=\"0.69803921568627447\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        </userDefinedRuntimeAttribute>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"title\" value=\"Easy Organizing\"/>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"content\">\n                            <string key=\"value\">Create lists to match your needs and categorize reminders with tags. Collaborate with others by sharing lists and assigning individual tasks.</string>\n                        </userDefinedRuntimeAttribute>\n                        <userDefinedRuntimeAttribute type=\"image\" keyPath=\"image\">\n                            <imageReference key=\"value\" image=\"rectangle.grid.2x2.fill\" catalog=\"system\" symbolScale=\"default\"/>\n                        </userDefinedRuntimeAttribute>\n                    </userDefinedRuntimeAttributes>\n                </customObject>\n                <customObject id=\"3ku-ur-HfQ\" customClass=\"UIWelcomeSheetPageRow\" customModule=\"WelcomeSheet\">\n                    <userDefinedRuntimeAttributes>\n                        <userDefinedRuntimeAttribute type=\"color\" keyPath=\"accentColor\">\n                            <color key=\"value\" systemColor=\"systemOrangeColor\"/>\n                        </userDefinedRuntimeAttribute>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"title\" value=\"Suggestions and Smart Lists\"/>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"content\" value=\"Suggestions help you organize quickly, and smart lists automatically group reminders.\"/>\n                        <userDefinedRuntimeAttribute type=\"image\" keyPath=\"image\">\n                            <imageReference key=\"value\" image=\"lightbulb.fill\" catalog=\"system\" symbolScale=\"default\"/>\n                        </userDefinedRuntimeAttribute>\n                    </userDefinedRuntimeAttributes>\n                </customObject>\n                <customObject id=\"uEx-Tk-d3j\" customClass=\"UIWelcomeSheetPage\" customModule=\"WelcomeSheet\">\n                    <userDefinedRuntimeAttributes>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"title\" value=\"What’s New in Maps\"/>\n                        <userDefinedRuntimeAttribute type=\"color\" keyPath=\"accentColor\">\n                            <color key=\"value\" systemColor=\"systemPinkColor\"/>\n                        </userDefinedRuntimeAttribute>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"mainButtonTitle\" value=\"Let’s go!\"/>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"optionalButtonTitle\" value=\"About Apple Maps &amp; Privacy...\"/>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"optionalButtonURL\" value=\"https://apple.com\"/>\n                    </userDefinedRuntimeAttributes>\n                    <connections>\n                        <outletCollection property=\"rows\" destination=\"2eI-i6-v16\" collectionClass=\"NSMutableArray\" id=\"93Q-Dr-Yuo\"/>\n                        <outletCollection property=\"rows\" destination=\"dng-gJ-e0k\" collectionClass=\"NSMutableArray\" id=\"1am-C6-DGO\"/>\n                        <outletCollection property=\"rows\" destination=\"7Zk-Z4-udS\" collectionClass=\"NSMutableArray\" id=\"ePo-mI-6eN\"/>\n                    </connections>\n                </customObject>\n                <customObject id=\"2eI-i6-v16\" customClass=\"UIWelcomeSheetPageRow\" customModule=\"WelcomeSheet\">\n                    <userDefinedRuntimeAttributes>\n                        <userDefinedRuntimeAttribute type=\"color\" keyPath=\"accentColor\">\n                            <color key=\"value\" systemColor=\"systemGreenColor\"/>\n                        </userDefinedRuntimeAttribute>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"title\" value=\"Updated Map Style\"/>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"content\" value=\"An improved design makes it easier to navigate and explore the map.\"/>\n                        <userDefinedRuntimeAttribute type=\"image\" keyPath=\"image\">\n                            <imageReference key=\"value\" image=\"map.fill\" catalog=\"system\" symbolScale=\"default\"/>\n                        </userDefinedRuntimeAttribute>\n                    </userDefinedRuntimeAttributes>\n                </customObject>\n                <customObject id=\"dng-gJ-e0k\" customClass=\"UIWelcomeSheetPageRow\" customModule=\"WelcomeSheet\">\n                    <userDefinedRuntimeAttributes>\n                        <userDefinedRuntimeAttribute type=\"color\" keyPath=\"accentColor\">\n                            <color key=\"value\" systemColor=\"systemRedColor\"/>\n                        </userDefinedRuntimeAttribute>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"title\" value=\"All-New Place Cards\"/>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"content\" value=\"Completely redesigned place cards make it easier to learn about and interact with places.\"/>\n                        <userDefinedRuntimeAttribute type=\"image\" keyPath=\"image\">\n                            <imageReference key=\"value\" image=\"mappin.and.ellipse\" catalog=\"system\" symbolScale=\"default\"/>\n                        </userDefinedRuntimeAttribute>\n                    </userDefinedRuntimeAttributes>\n                </customObject>\n                <customObject id=\"7Zk-Z4-udS\" customClass=\"UIWelcomeSheetPageRow\" customModule=\"WelcomeSheet\">\n                    <userDefinedRuntimeAttributes>\n                        <userDefinedRuntimeAttribute type=\"color\" keyPath=\"accentColor\">\n                            <color key=\"value\" systemColor=\"systemBlueColor\"/>\n                        </userDefinedRuntimeAttribute>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"title\" value=\"Improved Search\"/>\n                        <userDefinedRuntimeAttribute type=\"string\" keyPath=\"content\" value=\"Finding places is now easier with filters and automatic updates when you're browsing results on the map.\"/>\n                        <userDefinedRuntimeAttribute type=\"image\" keyPath=\"image\">\n                            <imageReference key=\"value\" image=\"magnifyingglass\" catalog=\"system\" symbolScale=\"default\"/>\n                        </userDefinedRuntimeAttribute>\n                    </userDefinedRuntimeAttributes>\n                </customObject>\n            </objects>\n            <point key=\"canvasLocation\" x=\"369\" y=\"-9\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <image name=\"gears\" width=\"512\" height=\"512\"/>\n        <image name=\"ipad.and.iphone\" catalog=\"system\" width=\"128\" height=\"87\"/>\n        <image name=\"iphone\" catalog=\"system\" width=\"112\" height=\"128\"/>\n        <image name=\"lightbulb.fill\" catalog=\"system\" width=\"92\" height=\"128\"/>\n        <image name=\"magnifyingglass\" catalog=\"system\" width=\"128\" height=\"117\"/>\n        <image name=\"map.fill\" catalog=\"system\" width=\"128\" height=\"110\"/>\n        <image name=\"mappin.and.ellipse\" catalog=\"system\" width=\"117\" height=\"128\"/>\n        <image name=\"mic.badge.plus\" catalog=\"system\" width=\"121\" height=\"128\"/>\n        <image name=\"note.text.badge.plus\" catalog=\"system\" width=\"128\" height=\"108\"/>\n        <image name=\"platter.2.filled.iphone\" catalog=\"system\" width=\"114\" height=\"128\"/>\n        <image name=\"rectangle.grid.2x2.fill\" catalog=\"system\" width=\"128\" height=\"97\"/>\n        <image name=\"rectangle.stack.fill.badge.plus\" catalog=\"system\" width=\"128\" height=\"118\"/>\n        <systemColor name=\"systemBackgroundColor\">\n            <color white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n        </systemColor>\n        <systemColor name=\"systemBlueColor\">\n            <color red=\"0.0\" green=\"0.47843137254901963\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </systemColor>\n        <systemColor name=\"systemGreenColor\">\n            <color red=\"0.20392156862745098\" green=\"0.7803921568627451\" blue=\"0.34901960784313724\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </systemColor>\n        <systemColor name=\"systemIndigoColor\">\n            <color red=\"0.34509803921568627\" green=\"0.33725490196078434\" blue=\"0.83921568627450982\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </systemColor>\n        <systemColor name=\"systemMintColor\">\n            <color red=\"0.0\" green=\"0.7803921568627451\" blue=\"0.74509803921568629\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </systemColor>\n        <systemColor name=\"systemOrangeColor\">\n            <color red=\"1\" green=\"0.58431372549019611\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </systemColor>\n        <systemColor name=\"systemPinkColor\">\n            <color red=\"1\" green=\"0.17647058823529413\" blue=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </systemColor>\n        <systemColor name=\"systemPurpleColor\">\n            <color red=\"0.68627450980392157\" green=\"0.32156862745098042\" blue=\"0.87058823529411766\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </systemColor>\n        <systemColor name=\"systemRedColor\">\n            <color red=\"1\" green=\"0.23137254901960785\" blue=\"0.18823529411764706\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </systemColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "Demo/UIKit-Storyboard-WelcomeSheetDemo/UIKit-Storyboard-WelcomeSheetDemo/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<false/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict>\n\t\t\t<key>UIWindowSceneSessionRoleApplication</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>UISceneConfigurationName</key>\n\t\t\t\t\t<string>Default Configuration</string>\n\t\t\t\t\t<key>UISceneDelegateClassName</key>\n\t\t\t\t\t<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>\n\t\t\t\t\t<key>UISceneStoryboardFile</key>\n\t\t\t\t\t<string>Main</string>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Demo/UIKit-Storyboard-WelcomeSheetDemo/UIKit-Storyboard-WelcomeSheetDemo/SceneDelegate.swift",
    "content": "//\n//  SceneDelegate.swift\n//  UIKit-Storyboard-WelcomeSheetDemo\n//\n//  Created by Eskil Gjerde Sviggum on 18/01/2023.\n//\n\nimport UIKit\n\nclass SceneDelegate: UIResponder, UIWindowSceneDelegate {\n\n    var window: UIWindow?\n\n\n    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {\n        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.\n        // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.\n        // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).\n        guard let _ = (scene as? UIWindowScene) else { return }\n    }\n\n    func sceneDidDisconnect(_ scene: UIScene) {\n        // Called as the scene is being released by the system.\n        // This occurs shortly after the scene enters the background, or when its session is discarded.\n        // Release any resources associated with this scene that can be re-created the next time the scene connects.\n        // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).\n    }\n\n    func sceneDidBecomeActive(_ scene: UIScene) {\n        // Called when the scene has moved from an inactive state to an active state.\n        // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.\n    }\n\n    func sceneWillResignActive(_ scene: UIScene) {\n        // Called when the scene will move from an active state to an inactive state.\n        // This may occur due to temporary interruptions (ex. an incoming phone call).\n    }\n\n    func sceneWillEnterForeground(_ scene: UIScene) {\n        // Called as the scene transitions from the background to the foreground.\n        // Use this method to undo the changes made on entering the background.\n    }\n\n    func sceneDidEnterBackground(_ scene: UIScene) {\n        // Called as the scene transitions from the foreground to the background.\n        // Use this method to save data, release shared resources, and store enough scene-specific state information\n        // to restore the scene back to its current state.\n    }\n\n\n}\n\n"
  },
  {
    "path": "Demo/UIKit-Storyboard-WelcomeSheetDemo/UIKit-Storyboard-WelcomeSheetDemo/ViewController.swift",
    "content": "//\n//  ViewController.swift\n//  UIKit-Storyboard-WelcomeSheetDemo\n//\n//  Created by Eskil Gjerde Sviggum on 18/01/2023.\n//\n\nimport UIKit\nimport WelcomeSheet\n\nclass ViewController: UIViewController {\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        // Do any additional setup after loading the view.\n    }\n    \n    \n    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {\n        if let welcomeSheetController = segue.destination as? WelcomeSheetStoryboardController {\n            welcomeSheetController.delegate = self\n        }\n    }\n    \n    \n}\n\nextension ViewController: WelcomeSheetDelegate {\n    \n    func welcomeSheetController(didDismiss welcomeSheetController: UIViewController) {\n        print(\"Did dismiss\")\n    }\n    \n}\n"
  },
  {
    "path": "Demo/UIKit-Storyboard-WelcomeSheetDemo/UIKit-Storyboard-WelcomeSheetDemo.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t7B5F339A2978166000E957C1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B5F33992978166000E957C1 /* AppDelegate.swift */; };\n\t\t7B5F339C2978166000E957C1 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B5F339B2978166000E957C1 /* SceneDelegate.swift */; };\n\t\t7B5F339E2978166000E957C1 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B5F339D2978166000E957C1 /* ViewController.swift */; };\n\t\t7B5F33A12978166000E957C1 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7B5F339F2978166000E957C1 /* Main.storyboard */; };\n\t\t7B5F33A32978166100E957C1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7B5F33A22978166100E957C1 /* Assets.xcassets */; };\n\t\t7B5F33A62978166100E957C1 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7B5F33A42978166100E957C1 /* LaunchScreen.storyboard */; };\n\t\t7B5F33B12978170500E957C1 /* WelcomeSheet in Frameworks */ = {isa = PBXBuildFile; productRef = 7B5F33B02978170500E957C1 /* WelcomeSheet */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t7B5F33962978166000E957C1 /* UIKit-Storyboard-WelcomeSheetDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = \"UIKit-Storyboard-WelcomeSheetDemo.app\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t7B5F33992978166000E957C1 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = \"<group>\"; };\n\t\t7B5F339B2978166000E957C1 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = \"<group>\"; };\n\t\t7B5F339D2978166000E957C1 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = \"<group>\"; };\n\t\t7B5F33A02978166000E957C1 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = \"<group>\"; };\n\t\t7B5F33A22978166100E957C1 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t7B5F33A52978166100E957C1 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = \"<group>\"; };\n\t\t7B5F33A72978166100E957C1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t7B5F33AE297816BB00E957C1 /* Welcome-Sheet */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = \"Welcome-Sheet\"; path = ../..; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t7B5F33932978166000E957C1 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t7B5F33B12978170500E957C1 /* WelcomeSheet in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t7B5F338D2978166000E957C1 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7B5F33AD297816BB00E957C1 /* Packages */,\n\t\t\t\t7B5F33982978166000E957C1 /* UIKit-Storyboard-WelcomeSheetDemo */,\n\t\t\t\t7B5F33972978166000E957C1 /* Products */,\n\t\t\t\t7B5F33AF2978170500E957C1 /* Frameworks */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7B5F33972978166000E957C1 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7B5F33962978166000E957C1 /* UIKit-Storyboard-WelcomeSheetDemo.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7B5F33982978166000E957C1 /* UIKit-Storyboard-WelcomeSheetDemo */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7B5F33992978166000E957C1 /* AppDelegate.swift */,\n\t\t\t\t7B5F339B2978166000E957C1 /* SceneDelegate.swift */,\n\t\t\t\t7B5F339D2978166000E957C1 /* ViewController.swift */,\n\t\t\t\t7B5F339F2978166000E957C1 /* Main.storyboard */,\n\t\t\t\t7B5F33A22978166100E957C1 /* Assets.xcassets */,\n\t\t\t\t7B5F33A42978166100E957C1 /* LaunchScreen.storyboard */,\n\t\t\t\t7B5F33A72978166100E957C1 /* Info.plist */,\n\t\t\t);\n\t\t\tpath = \"UIKit-Storyboard-WelcomeSheetDemo\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7B5F33AD297816BB00E957C1 /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7B5F33AE297816BB00E957C1 /* Welcome-Sheet */,\n\t\t\t);\n\t\t\tname = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7B5F33AF2978170500E957C1 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t7B5F33952978166000E957C1 /* UIKit-Storyboard-WelcomeSheetDemo */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 7B5F33AA2978166100E957C1 /* Build configuration list for PBXNativeTarget \"UIKit-Storyboard-WelcomeSheetDemo\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t7B5F33922978166000E957C1 /* Sources */,\n\t\t\t\t7B5F33932978166000E957C1 /* Frameworks */,\n\t\t\t\t7B5F33942978166000E957C1 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"UIKit-Storyboard-WelcomeSheetDemo\";\n\t\t\tpackageProductDependencies = (\n\t\t\t\t7B5F33B02978170500E957C1 /* WelcomeSheet */,\n\t\t\t);\n\t\t\tproductName = \"UIKit-Storyboard-WelcomeSheetDemo\";\n\t\t\tproductReference = 7B5F33962978166000E957C1 /* UIKit-Storyboard-WelcomeSheetDemo.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t7B5F338E2978166000E957C1 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1420;\n\t\t\t\tLastUpgradeCheck = 1420;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t7B5F33952978166000E957C1 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 14.2;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 7B5F33912978166000E957C1 /* Build configuration list for PBXProject \"UIKit-Storyboard-WelcomeSheetDemo\" */;\n\t\t\tcompatibilityVersion = \"Xcode 14.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 7B5F338D2978166000E957C1;\n\t\t\tproductRefGroup = 7B5F33972978166000E957C1 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t7B5F33952978166000E957C1 /* UIKit-Storyboard-WelcomeSheetDemo */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t7B5F33942978166000E957C1 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t7B5F33A62978166100E957C1 /* LaunchScreen.storyboard in Resources */,\n\t\t\t\t7B5F33A32978166100E957C1 /* Assets.xcassets in Resources */,\n\t\t\t\t7B5F33A12978166000E957C1 /* Main.storyboard in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t7B5F33922978166000E957C1 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t7B5F339E2978166000E957C1 /* ViewController.swift in Sources */,\n\t\t\t\t7B5F339A2978166000E957C1 /* AppDelegate.swift in Sources */,\n\t\t\t\t7B5F339C2978166000E957C1 /* SceneDelegate.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXVariantGroup section */\n\t\t7B5F339F2978166000E957C1 /* Main.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t7B5F33A02978166000E957C1 /* Base */,\n\t\t\t);\n\t\t\tname = Main.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7B5F33A42978166100E957C1 /* LaunchScreen.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t7B5F33A52978166100E957C1 /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t7B5F33A82978166100E957C1 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 16.2;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t7B5F33A92978166100E957C1 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 16.2;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-O\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t7B5F33AB2978166100E957C1 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = EUKTZ7725R;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"UIKit-Storyboard-WelcomeSheetDemo/Info.plist\";\n\t\t\t\tINFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;\n\t\t\t\tINFOPLIST_KEY_UIMainStoryboardFile = Main;\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = \"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = \"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.jakubflorek.UIKit-WelcomeSheetDemo.UIKit-Storyboard-WelcomeSheetDemo\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t7B5F33AC2978166100E957C1 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = EUKTZ7725R;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"UIKit-Storyboard-WelcomeSheetDemo/Info.plist\";\n\t\t\t\tINFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;\n\t\t\t\tINFOPLIST_KEY_UIMainStoryboardFile = Main;\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = \"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = \"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.jakubflorek.UIKit-WelcomeSheetDemo.UIKit-Storyboard-WelcomeSheetDemo\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t7B5F33912978166000E957C1 /* Build configuration list for PBXProject \"UIKit-Storyboard-WelcomeSheetDemo\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t7B5F33A82978166100E957C1 /* Debug */,\n\t\t\t\t7B5F33A92978166100E957C1 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t7B5F33AA2978166100E957C1 /* Build configuration list for PBXNativeTarget \"UIKit-Storyboard-WelcomeSheetDemo\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t7B5F33AB2978166100E957C1 /* Debug */,\n\t\t\t\t7B5F33AC2978166100E957C1 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\t7B5F33B02978170500E957C1 /* WelcomeSheet */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = WelcomeSheet;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = 7B5F338E2978166000E957C1 /* Project object */;\n}\n"
  },
  {
    "path": "Demo/UIKit-Storyboard-WelcomeSheetDemo/UIKit-Storyboard-WelcomeSheetDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Demo/UIKit-Storyboard-WelcomeSheetDemo/UIKit-Storyboard-WelcomeSheetDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Demo/UIKit-WelcomeSheetDemo/UIKit-WelcomeSheetDemo/AppDelegate.swift",
    "content": "//\n//  AppDelegate.swift\n//  UIKit-WelcomeSheetDemo\n//\n//  Created by Kevin Romero Peces-Barba on 6/10/22.\n//\n\nimport UIKit\n\n@main\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n\n\n\n    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n        // Override point for customization after application launch.\n        return true\n    }\n\n    // MARK: UISceneSession Lifecycle\n\n    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {\n        // Called when a new scene session is being created.\n        // Use this method to select a configuration to create the new scene with.\n        return UISceneConfiguration(name: \"Default Configuration\", sessionRole: connectingSceneSession.role)\n    }\n\n    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {\n        // Called when the user discards a scene session.\n        // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.\n        // Use this method to release any resources that were specific to the discarded scenes, as they will not return.\n    }\n\n\n}\n\n"
  },
  {
    "path": "Demo/UIKit-WelcomeSheetDemo/UIKit-WelcomeSheetDemo/Assets.xcassets/AccentColor.colorset/Contents.json",
    "content": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"display-p3\",\n        \"components\" : {\n          \"alpha\" : \"1.000\",\n          \"blue\" : \"0.769\",\n          \"green\" : \"0.682\",\n          \"red\" : \"0.353\"\n        }\n      },\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Demo/UIKit-WelcomeSheetDemo/UIKit-WelcomeSheetDemo/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"40.png\",\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"2x\",\n      \"size\" : \"20x20\"\n    },\n    {\n      \"filename\" : \"60.png\",\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"3x\",\n      \"size\" : \"20x20\"\n    },\n    {\n      \"filename\" : \"29.png\",\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"1x\",\n      \"size\" : \"29x29\"\n    },\n    {\n      \"filename\" : \"58.png\",\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"2x\",\n      \"size\" : \"29x29\"\n    },\n    {\n      \"filename\" : \"87.png\",\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"3x\",\n      \"size\" : \"29x29\"\n    },\n    {\n      \"filename\" : \"80.png\",\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"2x\",\n      \"size\" : \"40x40\"\n    },\n    {\n      \"filename\" : \"120.png\",\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"3x\",\n      \"size\" : \"40x40\"\n    },\n    {\n      \"filename\" : \"57.png\",\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"1x\",\n      \"size\" : \"57x57\"\n    },\n    {\n      \"filename\" : \"114.png\",\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"2x\",\n      \"size\" : \"57x57\"\n    },\n    {\n      \"filename\" : \"120.png\",\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"2x\",\n      \"size\" : \"60x60\"\n    },\n    {\n      \"filename\" : \"180.png\",\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"3x\",\n      \"size\" : \"60x60\"\n    },\n    {\n      \"filename\" : \"20.png\",\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"1x\",\n      \"size\" : \"20x20\"\n    },\n    {\n      \"filename\" : \"40.png\",\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"2x\",\n      \"size\" : \"20x20\"\n    },\n    {\n      \"filename\" : \"29.png\",\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"1x\",\n      \"size\" : \"29x29\"\n    },\n    {\n      \"filename\" : \"58.png\",\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"2x\",\n      \"size\" : \"29x29\"\n    },\n    {\n      \"filename\" : \"40.png\",\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"1x\",\n      \"size\" : \"40x40\"\n    },\n    {\n      \"filename\" : \"80.png\",\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"2x\",\n      \"size\" : \"40x40\"\n    },\n    {\n      \"filename\" : \"50.png\",\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"1x\",\n      \"size\" : \"50x50\"\n    },\n    {\n      \"filename\" : \"100.png\",\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"2x\",\n      \"size\" : \"50x50\"\n    },\n    {\n      \"filename\" : \"72.png\",\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"1x\",\n      \"size\" : \"72x72\"\n    },\n    {\n      \"filename\" : \"144.png\",\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"2x\",\n      \"size\" : \"72x72\"\n    },\n    {\n      \"filename\" : \"76.png\",\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"1x\",\n      \"size\" : \"76x76\"\n    },\n    {\n      \"filename\" : \"152.png\",\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"2x\",\n      \"size\" : \"76x76\"\n    },\n    {\n      \"filename\" : \"167.png\",\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"2x\",\n      \"size\" : \"83.5x83.5\"\n    },\n    {\n      \"filename\" : \"1024.png\",\n      \"idiom\" : \"ios-marketing\",\n      \"scale\" : \"1x\",\n      \"size\" : \"1024x1024\"\n    },\n    {\n      \"filename\" : \"16.png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"16x16\"\n    },\n    {\n      \"filename\" : \"32.png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"16x16\"\n    },\n    {\n      \"filename\" : \"32.png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"32x32\"\n    },\n    {\n      \"filename\" : \"64.png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"32x32\"\n    },\n    {\n      \"filename\" : \"128.png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"128x128\"\n    },\n    {\n      \"filename\" : \"256.png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"128x128\"\n    },\n    {\n      \"filename\" : \"256.png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"256x256\"\n    },\n    {\n      \"filename\" : \"512.png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"256x256\"\n    },\n    {\n      \"filename\" : \"512.png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"512x512\"\n    },\n    {\n      \"filename\" : \"1024.png\",\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"512x512\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Demo/UIKit-WelcomeSheetDemo/UIKit-WelcomeSheetDemo/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Demo/UIKit-WelcomeSheetDemo/UIKit-WelcomeSheetDemo/Assets.xcassets/gears.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"settings-gears.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Demo/UIKit-WelcomeSheetDemo/UIKit-WelcomeSheetDemo/Base.lproj/LaunchScreen.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"13122.16\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"01J-lp-oVM\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"13104.12\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"EHf-IW-A2E\">\n            <objects>\n                <viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <color key=\"backgroundColor\" xcode11CocoaTouchSystemColor=\"systemBackgroundColor\" cocoaTouchSystemColor=\"whiteColor\"/>\n                        <viewLayoutGuide key=\"safeArea\" id=\"6Tk-OE-BBY\"/>\n                    </view>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"53\" y=\"375\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "Demo/UIKit-WelcomeSheetDemo/UIKit-WelcomeSheetDemo/Base.lproj/Main.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"21506\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"BYZ-38-t0r\">\n    <device id=\"retina6_12\" orientation=\"portrait\" appearance=\"light\"/>\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"21504\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"System colors in document resources\" minToolsVersion=\"11.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"tne-QT-ifu\">\n            <objects>\n                <viewController id=\"BYZ-38-t0r\" customClass=\"ViewController\" customModule=\"UIKit_WelcomeSheetDemo\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"8bC-Xf-vdC\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"393\" height=\"852\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"system\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"cQc-3d-P2P\">\n                                <rect key=\"frame\" x=\"140\" y=\"408.66666666666669\" width=\"113\" height=\"35\"/>\n                                <state key=\"normal\" title=\"Button\"/>\n                                <buttonConfiguration key=\"configuration\" style=\"plain\" title=\"Show sheet\"/>\n                            </button>\n                        </subviews>\n                        <viewLayoutGuide key=\"safeArea\" id=\"6Tk-OE-BBY\"/>\n                        <color key=\"backgroundColor\" systemColor=\"systemBackgroundColor\"/>\n                        <constraints>\n                            <constraint firstItem=\"cQc-3d-P2P\" firstAttribute=\"centerY\" secondItem=\"8bC-Xf-vdC\" secondAttribute=\"centerY\" id=\"C9C-v5-Skf\"/>\n                            <constraint firstItem=\"cQc-3d-P2P\" firstAttribute=\"centerX\" secondItem=\"8bC-Xf-vdC\" secondAttribute=\"centerX\" id=\"RKp-Ce-Uly\"/>\n                        </constraints>\n                    </view>\n                    <connections>\n                        <outlet property=\"showSheetButton\" destination=\"cQc-3d-P2P\" id=\"VW8-zl-tL4\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"dkx-z0-nzr\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"21\" y=\"4\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <systemColor name=\"systemBackgroundColor\">\n            <color white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n        </systemColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "Demo/UIKit-WelcomeSheetDemo/UIKit-WelcomeSheetDemo/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<false/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict>\n\t\t\t<key>UIWindowSceneSessionRoleApplication</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>UISceneConfigurationName</key>\n\t\t\t\t\t<string>Default Configuration</string>\n\t\t\t\t\t<key>UISceneDelegateClassName</key>\n\t\t\t\t\t<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>\n\t\t\t\t\t<key>UISceneStoryboardFile</key>\n\t\t\t\t\t<string>Main</string>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Demo/UIKit-WelcomeSheetDemo/UIKit-WelcomeSheetDemo/SceneDelegate.swift",
    "content": "//\n//  SceneDelegate.swift\n//  UIKit-WelcomeSheetDemo\n//\n//  Created by Kevin Romero Peces-Barba on 6/10/22.\n//\n\nimport UIKit\n\nclass SceneDelegate: UIResponder, UIWindowSceneDelegate {\n\n    var window: UIWindow?\n\n\n    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {\n        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.\n        // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.\n        // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).\n        guard let _ = (scene as? UIWindowScene) else { return }\n    }\n\n    func sceneDidDisconnect(_ scene: UIScene) {\n        // Called as the scene is being released by the system.\n        // This occurs shortly after the scene enters the background, or when its session is discarded.\n        // Release any resources associated with this scene that can be re-created the next time the scene connects.\n        // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).\n    }\n\n    func sceneDidBecomeActive(_ scene: UIScene) {\n        // Called when the scene has moved from an inactive state to an active state.\n        // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.\n    }\n\n    func sceneWillResignActive(_ scene: UIScene) {\n        // Called when the scene will move from an active state to an inactive state.\n        // This may occur due to temporary interruptions (ex. an incoming phone call).\n    }\n\n    func sceneWillEnterForeground(_ scene: UIScene) {\n        // Called as the scene transitions from the background to the foreground.\n        // Use this method to undo the changes made on entering the background.\n    }\n\n    func sceneDidEnterBackground(_ scene: UIScene) {\n        // Called as the scene transitions from the foreground to the background.\n        // Use this method to save data, release shared resources, and store enough scene-specific state information\n        // to restore the scene back to its current state.\n    }\n\n\n}\n\n"
  },
  {
    "path": "Demo/UIKit-WelcomeSheetDemo/UIKit-WelcomeSheetDemo/ViewController.swift",
    "content": "//\n//  ViewController.swift\n//  UIKit-WelcomeSheetDemo\n//\n//  Created by Kevin Romero Peces-Barba on 6/10/22.\n//\n\nimport UIKit\nimport WelcomeSheet\n\nclass ViewController: UIViewController {\n\n    @IBOutlet weak var showSheetButton: UIButton!\n\n    let pages = [\n        WelcomeSheetPage(title: \"Welcome to Welcome Sheet\",\n            rows: [\n                WelcomeSheetPageRow(imageSystemName: \"rectangle.stack.fill.badge.plus\",\n                                    accentColor: .mint,\n                                    title: \"Quick Creation\",\n                                    content: \"It's incredibly intuitive. Simply declare an array of pages filled with content.\"),\n\n                WelcomeSheetPageRow(imageNamed: \"gears\",\n                                    accentColor: .indigo,\n                                    title: \"Highly Customisable\",\n                                    content: \"Match sheet's appearance to your app, link buttons, perform actions after dismissal.\"),\n\n                WelcomeSheetPageRow(imageSystemName: \"ipad.and.iphone\",\n                                    accentColor: .green,\n                                    title: \"Works out of the box\",\n                                    content: \"Don't worry about various screen sizes. It will look gorgeous on every iOS device.\")\n            ],\n            accentColor: .purple,\n            optionalButtonTitle: \"About Welcome Sheet...\",\n            optionalButtonURL: URL(string: \"https://github.com/MAJKFL/Welcome-Sheet\")),\n\n        WelcomeSheetPage(title: \"What's New in Translate\",\n            rows: [\n                WelcomeSheetPageRow(imageSystemName: \"platter.2.filled.iphone\",\n                                    title: \"Conversation Views\",\n                                    content: \"Choose a side-by-side or face-to-face conversation view.\"),\n\n                WelcomeSheetPageRow(imageSystemName: \"mic.badge.plus\",\n                                    title: \"Auto Translate\",\n                                    content: \"Respond in conversations without tapping the microphone button.\"),\n\n                WelcomeSheetPageRow(imageSystemName: \"iphone\",\n                                    title: \"System-Wide Translation\",\n                                    content: \"Translate selected text anywhere on your iPhone.\")\n            ],\n            mainButtonTitle: \"Wassup?\"),\n\n        WelcomeSheetPage(title: \"Welcome to Reminders\",\n            rows: [\n                WelcomeSheetPageRow(imageSystemName: \"note.text.badge.plus\",\n                                    accentColor: .green,\n                                    title: \"Quick Creation\",\n                                    content: \"Simply type, ask Siri, or use the quick toolbar to create reminders.\"),\n\n                WelcomeSheetPageRow(imageSystemName: \"rectangle.grid.2x2.fill\",\n                                    accentColor: .init(red: 0.00, green: 0.70, blue: 1.00),\n                                    title: \"Easy Organizing\", content: \"Create lists to match your needs and categorize reminders with tags. Collaborate with others by sharing lists and assigning individual tasks.\"),\n\n                WelcomeSheetPageRow(imageSystemName: \"lightbulb.fill\",\n                                    accentColor: .orange,\n                                    title: \"Suggestions and Smart Lists\",\n                                    content: \"Suggestions help you organize quickly, and smart lists automatically group reminders.\")\n            ],\n            accentColor: .blue),\n\n        WelcomeSheetPage(title: \"What's New in Maps\",\n            rows: [\n                WelcomeSheetPageRow(imageSystemName: \"map.fill\",\n                                    accentColor: .green,\n                                    title: \"Updated Map Style\",\n                                    content: \"An improved design makes it easier to navigate and explore the map.\"),\n\n                WelcomeSheetPageRow(imageSystemName: \"mappin.and.ellipse\",\n                                    accentColor: .red,\n                                    title: \"All-New Place Cards\",\n                                    content: \"Completely redesigned place cards make it easier to learn about and interact with places.\"),\n\n                WelcomeSheetPageRow(imageSystemName: \"magnifyingglass\",\n                                    accentColor: .blue,\n                                    title: \"Improved Search\",\n                                    content: \"Finding places is now easier with filters and automatic updates when you're browsing results on the map.\")\n            ],\n            accentColor: .pink,\n            mainButtonTitle: \"Let's go!\",\n            optionalButtonTitle: \"About Apple Maps & Privacy...\",\n            optionalButtonURL: URL(string: \"https://apple.com\"))\n    ]\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        showSheetButton.addTarget(self, action: #selector(showSheet), for: .touchUpInside)\n    }\n\n    @objc func showSheet() {\n        let sheetVC = WelcomeSheetController()\n        sheetVC.pages = pages\n        sheetVC.onDismiss = sheetDismissed\n\n        present(sheetVC, animated: true)\n    }\n\n    func sheetDismissed() {\n        print(\"Sheet dismissed\")\n    }\n}\n\n"
  },
  {
    "path": "Demo/UIKit-WelcomeSheetDemo/UIKit-WelcomeSheetDemo.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t7B01CE742986A9B40044CE1E /* WelcomeSheet in Frameworks */ = {isa = PBXBuildFile; productRef = 7B01CE732986A9B40044CE1E /* WelcomeSheet */; };\n\t\tD757A23328EEB0CD00056497 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D757A23228EEB0CD00056497 /* AppDelegate.swift */; };\n\t\tD757A23528EEB0CD00056497 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D757A23428EEB0CD00056497 /* SceneDelegate.swift */; };\n\t\tD757A23728EEB0CD00056497 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D757A23628EEB0CD00056497 /* ViewController.swift */; };\n\t\tD757A23A28EEB0CD00056497 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D757A23828EEB0CD00056497 /* Main.storyboard */; };\n\t\tD757A23C28EEB0CE00056497 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D757A23B28EEB0CE00056497 /* Assets.xcassets */; };\n\t\tD757A23F28EEB0CE00056497 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D757A23D28EEB0CE00056497 /* LaunchScreen.storyboard */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t3A867362296E08A700ED9C49 /* WelcomeSheet */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = WelcomeSheet; path = ../..; sourceTree = \"<group>\"; };\n\t\tD757A22F28EEB0CD00056497 /* UIKit-WelcomeSheetDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = \"UIKit-WelcomeSheetDemo.app\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tD757A23228EEB0CD00056497 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = \"<group>\"; };\n\t\tD757A23428EEB0CD00056497 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = \"<group>\"; };\n\t\tD757A23628EEB0CD00056497 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = \"<group>\"; };\n\t\tD757A23928EEB0CD00056497 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = \"<group>\"; };\n\t\tD757A23B28EEB0CE00056497 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\tD757A23E28EEB0CE00056497 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = \"<group>\"; };\n\t\tD757A24028EEB0CE00056497 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tD757A24928EEB2F000056497 /* Welcome-Sheet */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = \"Welcome-Sheet\"; path = ../..; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tD757A22C28EEB0CD00056497 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t7B01CE742986A9B40044CE1E /* WelcomeSheet in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\tD757A22628EEB0CC00056497 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD757A23128EEB0CD00056497 /* UIKit-WelcomeSheetDemo */,\n\t\t\t\tD757A24828EEB2F000056497 /* Packages */,\n\t\t\t\tD757A23028EEB0CD00056497 /* Products */,\n\t\t\t\tD757A24A28EEB31000056497 /* Frameworks */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD757A23028EEB0CD00056497 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD757A22F28EEB0CD00056497 /* UIKit-WelcomeSheetDemo.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD757A23128EEB0CD00056497 /* UIKit-WelcomeSheetDemo */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD757A23228EEB0CD00056497 /* AppDelegate.swift */,\n\t\t\t\tD757A23428EEB0CD00056497 /* SceneDelegate.swift */,\n\t\t\t\tD757A23628EEB0CD00056497 /* ViewController.swift */,\n\t\t\t\tD757A23828EEB0CD00056497 /* Main.storyboard */,\n\t\t\t\tD757A23B28EEB0CE00056497 /* Assets.xcassets */,\n\t\t\t\tD757A23D28EEB0CE00056497 /* LaunchScreen.storyboard */,\n\t\t\t\tD757A24028EEB0CE00056497 /* Info.plist */,\n\t\t\t);\n\t\t\tpath = \"UIKit-WelcomeSheetDemo\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD757A24828EEB2F000056497 /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD757A24928EEB2F000056497 /* Welcome-Sheet */,\n\t\t\t\t3A867362296E08A700ED9C49 /* WelcomeSheet */,\n\t\t\t);\n\t\t\tname = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD757A24A28EEB31000056497 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\tD757A22E28EEB0CD00056497 /* UIKit-WelcomeSheetDemo */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = D757A24328EEB0CE00056497 /* Build configuration list for PBXNativeTarget \"UIKit-WelcomeSheetDemo\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tD757A22B28EEB0CD00056497 /* Sources */,\n\t\t\t\tD757A22C28EEB0CD00056497 /* Frameworks */,\n\t\t\t\tD757A22D28EEB0CD00056497 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"UIKit-WelcomeSheetDemo\";\n\t\t\tpackageProductDependencies = (\n\t\t\t\t7B01CE732986A9B40044CE1E /* WelcomeSheet */,\n\t\t\t);\n\t\t\tproductName = \"UIKit-WelcomeSheetDemo\";\n\t\t\tproductReference = D757A22F28EEB0CD00056497 /* UIKit-WelcomeSheetDemo.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tD757A22728EEB0CC00056497 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1410;\n\t\t\t\tLastUpgradeCheck = 1410;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\tD757A22E28EEB0CD00056497 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 14.1;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = D757A22A28EEB0CC00056497 /* Build configuration list for PBXProject \"UIKit-WelcomeSheetDemo\" */;\n\t\t\tcompatibilityVersion = \"Xcode 14.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = D757A22628EEB0CC00056497;\n\t\t\tproductRefGroup = D757A23028EEB0CD00056497 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tD757A22E28EEB0CD00056497 /* UIKit-WelcomeSheetDemo */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tD757A22D28EEB0CD00056497 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tD757A23F28EEB0CE00056497 /* LaunchScreen.storyboard in Resources */,\n\t\t\t\tD757A23C28EEB0CE00056497 /* Assets.xcassets in Resources */,\n\t\t\t\tD757A23A28EEB0CD00056497 /* Main.storyboard in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tD757A22B28EEB0CD00056497 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tD757A23728EEB0CD00056497 /* ViewController.swift in Sources */,\n\t\t\t\tD757A23328EEB0CD00056497 /* AppDelegate.swift in Sources */,\n\t\t\t\tD757A23528EEB0CD00056497 /* SceneDelegate.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXVariantGroup section */\n\t\tD757A23828EEB0CD00056497 /* Main.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tD757A23928EEB0CD00056497 /* Base */,\n\t\t\t);\n\t\t\tname = Main.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD757A23D28EEB0CE00056497 /* LaunchScreen.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tD757A23E28EEB0CE00056497 /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\tD757A24128EEB0CE00056497 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 16.1;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tD757A24228EEB0CE00056497 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 16.1;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-O\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tD757A24428EEB0CE00056497 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = T23P54M8LP;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"UIKit-WelcomeSheetDemo/Info.plist\";\n\t\t\t\tINFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;\n\t\t\t\tINFOPLIST_KEY_UIMainStoryboardFile = Main;\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = \"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = \"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.jakubflorek.UIKit-WelcomeSheetDemo\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tD757A24528EEB0CE00056497 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = T23P54M8LP;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = \"UIKit-WelcomeSheetDemo/Info.plist\";\n\t\t\t\tINFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;\n\t\t\t\tINFOPLIST_KEY_UIMainStoryboardFile = Main;\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = \"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = \"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.jakubflorek.UIKit-WelcomeSheetDemo\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tD757A22A28EEB0CC00056497 /* Build configuration list for PBXProject \"UIKit-WelcomeSheetDemo\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tD757A24128EEB0CE00056497 /* Debug */,\n\t\t\t\tD757A24228EEB0CE00056497 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tD757A24328EEB0CE00056497 /* Build configuration list for PBXNativeTarget \"UIKit-WelcomeSheetDemo\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tD757A24428EEB0CE00056497 /* Debug */,\n\t\t\t\tD757A24528EEB0CE00056497 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\t7B01CE732986A9B40044CE1E /* WelcomeSheet */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = WelcomeSheet;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = D757A22728EEB0CC00056497 /* Project object */;\n}\n"
  },
  {
    "path": "Demo/UIKit-WelcomeSheetDemo/UIKit-WelcomeSheetDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Demo/UIKit-WelcomeSheetDemo/UIKit-WelcomeSheetDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Demo/WelcomeSheetDemo/Shared/Assets.xcassets/AccentColor.colorset/Contents.json",
    "content": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"display-p3\",\n        \"components\" : {\n          \"alpha\" : \"1.000\",\n          \"blue\" : \"0.769\",\n          \"green\" : \"0.682\",\n          \"red\" : \"0.353\"\n        }\n      },\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Demo/WelcomeSheetDemo/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\"images\":[{\"size\":\"60x60\",\"expected-size\":\"180\",\"filename\":\"180.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"iphone\",\"scale\":\"3x\"},{\"size\":\"40x40\",\"expected-size\":\"80\",\"filename\":\"80.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"iphone\",\"scale\":\"2x\"},{\"size\":\"40x40\",\"expected-size\":\"120\",\"filename\":\"120.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"iphone\",\"scale\":\"3x\"},{\"size\":\"60x60\",\"expected-size\":\"120\",\"filename\":\"120.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"iphone\",\"scale\":\"2x\"},{\"size\":\"57x57\",\"expected-size\":\"57\",\"filename\":\"57.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"iphone\",\"scale\":\"1x\"},{\"size\":\"29x29\",\"expected-size\":\"58\",\"filename\":\"58.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"iphone\",\"scale\":\"2x\"},{\"size\":\"29x29\",\"expected-size\":\"29\",\"filename\":\"29.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"iphone\",\"scale\":\"1x\"},{\"size\":\"29x29\",\"expected-size\":\"87\",\"filename\":\"87.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"iphone\",\"scale\":\"3x\"},{\"size\":\"57x57\",\"expected-size\":\"114\",\"filename\":\"114.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"iphone\",\"scale\":\"2x\"},{\"size\":\"20x20\",\"expected-size\":\"40\",\"filename\":\"40.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"iphone\",\"scale\":\"2x\"},{\"size\":\"20x20\",\"expected-size\":\"60\",\"filename\":\"60.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"iphone\",\"scale\":\"3x\"},{\"size\":\"1024x1024\",\"filename\":\"1024.png\",\"expected-size\":\"1024\",\"idiom\":\"ios-marketing\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"scale\":\"1x\"},{\"size\":\"40x40\",\"expected-size\":\"80\",\"filename\":\"80.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"ipad\",\"scale\":\"2x\"},{\"size\":\"72x72\",\"expected-size\":\"72\",\"filename\":\"72.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"ipad\",\"scale\":\"1x\"},{\"size\":\"76x76\",\"expected-size\":\"152\",\"filename\":\"152.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"ipad\",\"scale\":\"2x\"},{\"size\":\"50x50\",\"expected-size\":\"100\",\"filename\":\"100.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"ipad\",\"scale\":\"2x\"},{\"size\":\"29x29\",\"expected-size\":\"58\",\"filename\":\"58.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"ipad\",\"scale\":\"2x\"},{\"size\":\"76x76\",\"expected-size\":\"76\",\"filename\":\"76.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"ipad\",\"scale\":\"1x\"},{\"size\":\"29x29\",\"expected-size\":\"29\",\"filename\":\"29.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"ipad\",\"scale\":\"1x\"},{\"size\":\"50x50\",\"expected-size\":\"50\",\"filename\":\"50.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"ipad\",\"scale\":\"1x\"},{\"size\":\"72x72\",\"expected-size\":\"144\",\"filename\":\"144.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"ipad\",\"scale\":\"2x\"},{\"size\":\"40x40\",\"expected-size\":\"40\",\"filename\":\"40.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"ipad\",\"scale\":\"1x\"},{\"size\":\"83.5x83.5\",\"expected-size\":\"167\",\"filename\":\"167.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"ipad\",\"scale\":\"2x\"},{\"size\":\"20x20\",\"expected-size\":\"20\",\"filename\":\"20.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"ipad\",\"scale\":\"1x\"},{\"size\":\"20x20\",\"expected-size\":\"40\",\"filename\":\"40.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"ipad\",\"scale\":\"2x\"},{\"size\":\"128x128\",\"expected-size\":\"128\",\"filename\":\"128.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"mac\",\"scale\":\"1x\"},{\"size\":\"256x256\",\"expected-size\":\"256\",\"filename\":\"256.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"mac\",\"scale\":\"1x\"},{\"size\":\"128x128\",\"expected-size\":\"256\",\"filename\":\"256.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"mac\",\"scale\":\"2x\"},{\"size\":\"256x256\",\"expected-size\":\"512\",\"filename\":\"512.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"mac\",\"scale\":\"2x\"},{\"size\":\"32x32\",\"expected-size\":\"32\",\"filename\":\"32.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"mac\",\"scale\":\"1x\"},{\"size\":\"512x512\",\"expected-size\":\"512\",\"filename\":\"512.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"mac\",\"scale\":\"1x\"},{\"size\":\"16x16\",\"expected-size\":\"16\",\"filename\":\"16.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"mac\",\"scale\":\"1x\"},{\"size\":\"16x16\",\"expected-size\":\"32\",\"filename\":\"32.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"mac\",\"scale\":\"2x\"},{\"size\":\"32x32\",\"expected-size\":\"64\",\"filename\":\"64.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"mac\",\"scale\":\"2x\"},{\"size\":\"512x512\",\"expected-size\":\"1024\",\"filename\":\"1024.png\",\"folder\":\"Assets.xcassets/AppIcon.appiconset/\",\"idiom\":\"mac\",\"scale\":\"2x\"}]}"
  },
  {
    "path": "Demo/WelcomeSheetDemo/Shared/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Demo/WelcomeSheetDemo/Shared/Assets.xcassets/gears.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"settings-gears.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Demo/WelcomeSheetDemo/Shared/ContentView.swift",
    "content": "//\n//  ContentView.swift\n//  Shared\n//\n//  Created by Jakub Florek on 27/11/2021.\n//\n\nimport SwiftUI\nimport WelcomeSheet\n\nstruct ContentView: View {\n    @State private var showSheet = false\n    \n    var body: some View {\n        Button(\"Show sheet\") {\n            showSheet.toggle()\n        }\n        .padding()\n        .welcomeSheet(isPresented: $showSheet, onDismiss: { sheetDismissed() }, isSlideToDismissDisabled: true, pages: getPages()) // Sheet from page array\n//        .welcomeSheet(isPresented: $showSheet, onDismiss: { sheetDismissed() }, isSlideToDismissDisabled: true, pages: getPagesFromJSON()) // Sheet from JSON\n    }\n    \n    func sheetDismissed() {\n        print(\"Sheet dismissed\")\n    }\n    \n    func getPages() -> [WelcomeSheetPage] {\n        [WelcomeSheetPage(title: \"Welcome to Welcome Sheet\", rows: [\n            WelcomeSheetPageRow(imageSystemName: \"rectangle.stack.fill.badge.plus\",\n                                accentColor: Color.mint,\n                                title: \"Quick Creation\",\n                                content: \"It's incredibly intuitive. Simply declare an array of pages filled with content.\"),\n            \n            WelcomeSheetPageRow(imageNamed: \"gears\",\n                                accentColor: Color.indigo,\n                                title: \"Highly Customisable\", content: \"Match sheet's appearance to your app, link buttons, perform actions after dismissal.\"),\n            \n            WelcomeSheetPageRow(imageSystemName: \"ipad.and.iphone\",\n                                accentColor: Color.green,\n                                title: \"Works out of the box\",\n                                content: \"Don't worry about various screen sizes. It will look gorgeous on every iOS device.\")\n        ], accentColor: Color.purple, optionalButtonTitle: \"About Welcome Sheet...\", optionalButtonURL: URL(string: \"https://github.com/MAJKFL/Welcome-Sheet\")),\n        \n        WelcomeSheetPage(title: \"What's New in Translate\", rows: [\n            WelcomeSheetPageRow(imageSystemName: \"platter.2.filled.iphone\",\n                                title: \"Conversation Views\",\n                                content: \"Choose a side-by-side or face-to-face conversation view.\"),\n            \n            WelcomeSheetPageRow(imageSystemName: \"mic.badge.plus\",\n                                title: \"Auto Translate\",\n                                content: \"Respond in conversations without tapping the microphone button.\"),\n            \n            WelcomeSheetPageRow(imageSystemName: \"iphone\",\n                                title: \"System-Wide Translation\",\n                                content: \"Translate selected text anywhere on your iPhone.\")\n        ], mainButtonTitle: \"Wassup?\"),\n        \n        WelcomeSheetPage(title: \"Welcome to Reminders\", rows: [\n            WelcomeSheetPageRow(imageSystemName: \"note.text.badge.plus\",\n                                accentColor: Color.green,\n                                title: \"Quick Creation\",\n                                content: \"Simply type, ask Siri, or use the quick toolbar to create reminders.\"),\n            \n            WelcomeSheetPageRow(imageSystemName: \"rectangle.grid.2x2.fill\",\n                                accentColor: Color(red: 0.00, green: 0.70, blue: 1.00),\n                                title: \"Easy Organizing\", content: \"Create lists to match your needs and categorize reminders with tags. Collaborate with others by sharing lists and assigning individual tasks.\"),\n            \n            WelcomeSheetPageRow(imageSystemName: \"lightbulb.fill\",\n                                accentColor: Color.orange,\n                                title: \"Suggestions and Smart Lists\",\n                                content: \"Suggestions help you organize quickly, and smart lists automatically group reminders.\")\n        ], accentColor: Color.blue, optionalButtonTitle: \"Show Terms and Conditions\", optionalButtonView: { Text(\"Terms and Conditions\") }),\n        \n        WelcomeSheetPage(title: \"What's New in Maps\", rows: [\n            WelcomeSheetPageRow(imageSystemName: \"map.fill\",\n                                accentColor: Color.green,\n                                title: \"Updated Map Style\",\n                                content: \"An improved design makes it easier to navigate and explore the map.\"),\n            \n            WelcomeSheetPageRow(imageSystemName: \"mappin.and.ellipse\",\n                                accentColor: Color.red,\n                                title: \"All-New Place Cards\",\n                                content: \"Completely redesigned place cards make it easier to learn about and interact with places.\"),\n            \n            WelcomeSheetPageRow(imageSystemName: \"magnifyingglass\",\n                                accentColor: Color.blue,\n                                title: \"Improved Search\",\n                                content: \"Finding places is now easier with filters and automatic updates when you're browsing results on the map.\")\n        ], accentColor: Color.pink, mainButtonTitle: \"Let's go!\", optionalButtonTitle: \"About Apple Maps & Privacy...\", optionalButtonURL: URL(string: \"https://apple.com\"))\n        ]\n    }\n    \n    func getPagesFromJSON() -> [WelcomeSheetPage] {\n        if let url = Bundle.main.url(forResource: \"demo\", withExtension: \"json\") {\n            do {\n                let jsonData = try Data(contentsOf: url)\n                let decoder = JSONDecoder()\n                return try decoder.decode([WelcomeSheetPage].self, from: jsonData)\n            } catch {\n                print(error)\n            }\n        }\n        return []\n    }\n}\n"
  },
  {
    "path": "Demo/WelcomeSheetDemo/Shared/WelcomeSheetDemoApp.swift",
    "content": "//\n//  WelcomeSheetDemoApp.swift\n//  Shared\n//\n//  Created by Jakub Florek on 27/11/2021.\n//\n\nimport SwiftUI\n\n@main\nstruct WelcomeSheetDemoApp: App {\n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n        }\n    }\n}\n"
  },
  {
    "path": "Demo/WelcomeSheetDemo/Shared/demo.json",
    "content": "[\r\n   {\r\n      \"optionalButtonURL\":\"https:\\/\\/github.com\\/MAJKFL\\/Welcome-Sheet\",\r\n      \"accentColor\":\"BF5AF2\",\r\n      \"isShowingOptionalButton\":true,\r\n      \"title\":\"Welcome to Welcome Sheet\",\r\n      \"rows\":[\r\n         {\r\n            \"accentColor\":\"63E6E1\",\r\n            \"title\":\"Quick Creation\",\r\n            \"content\":\"Sheet creation is incredibly intuitive. Simply create an array of pages filled with your content.\",\r\n            \"imageName\":\"rectangle.stack.fill.badge.plus\"\r\n         },\r\n         {\r\n            \"accentColor\":\"5E5CE6\",\r\n            \"title\":\"Highly Customizable\",\r\n            \"content\":\"Set accent colors, add optional buttons, disable dismiss gestures, perform actions after button taps or sheet dismissal and more!\",\r\n            \"imageName\":\"gears\"\r\n         },\r\n         {\r\n            \"accentColor\":\"30D158\",\r\n            \"title\":\"Works out of the box\",\r\n            \"content\":\"Don't worry about different screen sizes. Your Welcome Sheet will look gorgeous on every iOS device!\",\r\n            \"imageName\":\"ipad.and.iphone\"\r\n         }\r\n      ],\r\n      \"optionalButtonTitle\":\"About Welcome Sheet...\",\r\n      \"mainButtonTitle\":\"Continue\"\r\n   }\r\n]\r\n"
  },
  {
    "path": "Demo/WelcomeSheetDemo/WelcomeSheetDemo.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 55;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t3A1EC3972752B0E70005F216 /* WelcomeSheetDemoApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A1EC3872752B0E70005F216 /* WelcomeSheetDemoApp.swift */; };\n\t\t3A1EC3982752B0E70005F216 /* WelcomeSheetDemoApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A1EC3872752B0E70005F216 /* WelcomeSheetDemoApp.swift */; };\n\t\t3A1EC3992752B0E70005F216 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A1EC3882752B0E70005F216 /* ContentView.swift */; };\n\t\t3A1EC39A2752B0E70005F216 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A1EC3882752B0E70005F216 /* ContentView.swift */; };\n\t\t3A1EC39B2752B0E70005F216 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3A1EC3892752B0E70005F216 /* Assets.xcassets */; };\n\t\t3A1EC39C2752B0E70005F216 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3A1EC3892752B0E70005F216 /* Assets.xcassets */; };\n\t\t3A75F403275D1E30009E94E6 /* demo.json in Resources */ = {isa = PBXBuildFile; fileRef = 3A75F402275D1E30009E94E6 /* demo.json */; };\n\t\t3A75F404275D1E30009E94E6 /* demo.json in Resources */ = {isa = PBXBuildFile; fileRef = 3A75F402275D1E30009E94E6 /* demo.json */; };\n\t\tD74557F528EEBA6E0025C195 /* WelcomeSheet in Frameworks */ = {isa = PBXBuildFile; productRef = D74557F428EEBA6E0025C195 /* WelcomeSheet */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t3A1EC3872752B0E70005F216 /* WelcomeSheetDemoApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelcomeSheetDemoApp.swift; sourceTree = \"<group>\"; };\n\t\t3A1EC3882752B0E70005F216 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = \"<group>\"; };\n\t\t3A1EC3892752B0E70005F216 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t3A1EC38E2752B0E70005F216 /* WelcomeSheetDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WelcomeSheetDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3A1EC3942752B0E70005F216 /* WelcomeSheetDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WelcomeSheetDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3A1EC3962752B0E70005F216 /* macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = macOS.entitlements; sourceTree = \"<group>\"; };\n\t\t3A75F402275D1E30009E94E6 /* demo.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = demo.json; sourceTree = \"<group>\"; };\n\t\tD74557F228EEBA560025C195 /* Welcome-Sheet */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = \"Welcome-Sheet\"; path = ../..; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t3A1EC38B2752B0E70005F216 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tD74557F528EEBA6E0025C195 /* WelcomeSheet in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t3A1EC3912752B0E70005F216 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t3A1EC3812752B0E70005F216 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3A1EC3862752B0E70005F216 /* Shared */,\n\t\t\t\t3A1EC3952752B0E70005F216 /* macOS */,\n\t\t\t\tD74557F128EEBA560025C195 /* Packages */,\n\t\t\t\t3A1EC38F2752B0E70005F216 /* Products */,\n\t\t\t\tD74557F328EEBA6E0025C195 /* Frameworks */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3A1EC3862752B0E70005F216 /* Shared */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3A75F402275D1E30009E94E6 /* demo.json */,\n\t\t\t\t3A1EC3872752B0E70005F216 /* WelcomeSheetDemoApp.swift */,\n\t\t\t\t3A1EC3882752B0E70005F216 /* ContentView.swift */,\n\t\t\t\t3A1EC3892752B0E70005F216 /* Assets.xcassets */,\n\t\t\t);\n\t\t\tpath = Shared;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3A1EC38F2752B0E70005F216 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3A1EC38E2752B0E70005F216 /* WelcomeSheetDemo.app */,\n\t\t\t\t3A1EC3942752B0E70005F216 /* WelcomeSheetDemo.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3A1EC3952752B0E70005F216 /* macOS */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3A1EC3962752B0E70005F216 /* macOS.entitlements */,\n\t\t\t);\n\t\t\tpath = macOS;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD74557F128EEBA560025C195 /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD74557F228EEBA560025C195 /* Welcome-Sheet */,\n\t\t\t);\n\t\t\tname = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD74557F328EEBA6E0025C195 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t3A1EC38D2752B0E70005F216 /* WelcomeSheetDemo (iOS) */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3A1EC39F2752B0E70005F216 /* Build configuration list for PBXNativeTarget \"WelcomeSheetDemo (iOS)\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3A1EC38A2752B0E70005F216 /* Sources */,\n\t\t\t\t3A1EC38B2752B0E70005F216 /* Frameworks */,\n\t\t\t\t3A1EC38C2752B0E70005F216 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"WelcomeSheetDemo (iOS)\";\n\t\t\tpackageProductDependencies = (\n\t\t\t\tD74557F428EEBA6E0025C195 /* WelcomeSheet */,\n\t\t\t);\n\t\t\tproductName = \"WelcomeSheetDemo (iOS)\";\n\t\t\tproductReference = 3A1EC38E2752B0E70005F216 /* WelcomeSheetDemo.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\t3A1EC3932752B0E70005F216 /* WelcomeSheetDemo (macOS) */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3A1EC3A22752B0E70005F216 /* Build configuration list for PBXNativeTarget \"WelcomeSheetDemo (macOS)\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3A1EC3902752B0E70005F216 /* Sources */,\n\t\t\t\t3A1EC3912752B0E70005F216 /* Frameworks */,\n\t\t\t\t3A1EC3922752B0E70005F216 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"WelcomeSheetDemo (macOS)\";\n\t\t\tproductName = \"WelcomeSheetDemo (macOS)\";\n\t\t\tproductReference = 3A1EC3942752B0E70005F216 /* WelcomeSheetDemo.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t3A1EC3822752B0E70005F216 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1310;\n\t\t\t\tLastUpgradeCheck = 1320;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t3A1EC38D2752B0E70005F216 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 13.1;\n\t\t\t\t\t};\n\t\t\t\t\t3A1EC3932752B0E70005F216 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 13.1;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 3A1EC3852752B0E70005F216 /* Build configuration list for PBXProject \"WelcomeSheetDemo\" */;\n\t\t\tcompatibilityVersion = \"Xcode 13.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 3A1EC3812752B0E70005F216;\n\t\t\tpackageReferences = (\n\t\t\t);\n\t\t\tproductRefGroup = 3A1EC38F2752B0E70005F216 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t3A1EC38D2752B0E70005F216 /* WelcomeSheetDemo (iOS) */,\n\t\t\t\t3A1EC3932752B0E70005F216 /* WelcomeSheetDemo (macOS) */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t3A1EC38C2752B0E70005F216 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3A75F403275D1E30009E94E6 /* demo.json in Resources */,\n\t\t\t\t3A1EC39B2752B0E70005F216 /* Assets.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t3A1EC3922752B0E70005F216 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3A75F404275D1E30009E94E6 /* demo.json in Resources */,\n\t\t\t\t3A1EC39C2752B0E70005F216 /* Assets.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t3A1EC38A2752B0E70005F216 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3A1EC3992752B0E70005F216 /* ContentView.swift in Sources */,\n\t\t\t\t3A1EC3972752B0E70005F216 /* WelcomeSheetDemoApp.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t3A1EC3902752B0E70005F216 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3A1EC39A2752B0E70005F216 /* ContentView.swift in Sources */,\n\t\t\t\t3A1EC3982752B0E70005F216 /* WelcomeSheetDemoApp.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t3A1EC39D2752B0E70005F216 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++17\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3A1EC39E2752B0E70005F216 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++17\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-O\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3A1EC3A02752B0E70005F216 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = 9RS6NWG958;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;\n\t\t\t\tINFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchScreen_Generation = YES;\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = \"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = \"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 15.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.florekjakub.WelcomeSheetDemo;\n\t\t\t\tPRODUCT_NAME = WelcomeSheetDemo;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3A1EC3A12752B0E70005F216 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = 9RS6NWG958;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;\n\t\t\t\tINFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchScreen_Generation = YES;\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = \"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = \"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 15.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.florekjakub.WelcomeSheetDemo;\n\t\t\t\tPRODUCT_NAME = WelcomeSheetDemo;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3A1EC3A32752B0E70005F216 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements;\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = 9RS6NWG958;\n\t\t\t\tENABLE_HARDENED_RUNTIME = YES;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_KEY_NSHumanReadableCopyright = \"\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/../Frameworks\",\n\t\t\t\t);\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.florekjakub.WelcomeSheetDemo;\n\t\t\t\tPRODUCT_NAME = WelcomeSheetDemo;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3A1EC3A42752B0E70005F216 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements;\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = 9RS6NWG958;\n\t\t\t\tENABLE_HARDENED_RUNTIME = YES;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_KEY_NSHumanReadableCopyright = \"\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/../Frameworks\",\n\t\t\t\t);\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.florekjakub.WelcomeSheetDemo;\n\t\t\t\tPRODUCT_NAME = WelcomeSheetDemo;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3A1EC3852752B0E70005F216 /* Build configuration list for PBXProject \"WelcomeSheetDemo\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3A1EC39D2752B0E70005F216 /* Debug */,\n\t\t\t\t3A1EC39E2752B0E70005F216 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3A1EC39F2752B0E70005F216 /* Build configuration list for PBXNativeTarget \"WelcomeSheetDemo (iOS)\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3A1EC3A02752B0E70005F216 /* Debug */,\n\t\t\t\t3A1EC3A12752B0E70005F216 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3A1EC3A22752B0E70005F216 /* Build configuration list for PBXNativeTarget \"WelcomeSheetDemo (macOS)\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3A1EC3A32752B0E70005F216 /* Debug */,\n\t\t\t\t3A1EC3A42752B0E70005F216 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\tD74557F428EEBA6E0025C195 /* WelcomeSheet */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = WelcomeSheet;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = 3A1EC3822752B0E70005F216 /* Project object */;\n}\n"
  },
  {
    "path": "Demo/WelcomeSheetDemo/macOS/macOS.entitlements",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n    <key>com.apple.security.app-sandbox</key>\n    <true/>\n    <key>com.apple.security.files.user-selected.read-only</key>\n    <true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Documentation/UIKit/Readme.md",
    "content": "# Configuring from Storyboards\n\nYou can set up the pages of your Welcome Sheet from a Storyboard or XIB file—without writing a single line of code. Check out the [demo](../../Demo/UIKit-Storyboard-WelcomeSheetDemo/) for more details.\n\n## Creating a WelcomeSheetStoryboardController\n\nDrag out a new UIViewController and set the class to `WelcomeSheetStoryboardController`.\n<div style=\"display: flex; align-items: center\">\n    <img alt=\"A new UIViewController\" src=\"Resources/ViewController.png\" width=\"300px\"/>\n    <img alt=\"Set class of the controller to WelcomeSheetStoryboardController\" src=\"Resources/SetClassOfViewController.png\" width=\"300px\"/>\n</div>\n\n## Creating a page\n\n- Create a new object and set the class to `UIWelcomeSheetPage`.  \n<div style=\"display: flex; align-items: center\">\n    <img alt=\"A new Object\" src=\"Resources/Object.png\" width=\"300px\"/>\n    <img alt=\"Set class of the object to UIWelcomeSheetPage\" src=\"Resources/SetClassOfObjectToPage.png\" width=\"300px\"/>\n</div>\n\n- Go to the *Attributes* tab and configure the page.\n\n<img alt=\"Configure the attributes of a page\" src=\"Resources/ConfigurePage.png\" width=\"300px\"/>\n\n### Adding a row to the page\n\n- Create a new object and set the class to `UIWelcomeSheetPageRow`.  \n\n<div style=\"display: flex; align-items: center\">\n    <img alt=\"A new Object\" src=\"Resources/Object.png\" width=\"300px\"/>\n    <img alt=\"Set class of the object to UIWelcomeSheetPageRow\" src=\"Resources/SetClassOfObjectToRow.png\" width=\"300px\"/>\n</div>\n\n- Go to the *Attributes* tab and configure the row.  \n\n<img alt=\"Configure the attributes of a page row\" src=\"Resources/ConfigureRow.png\" width=\"300px\"/>\n\n- Go to the *Connections* tab of your *page* and connect the `rows` outlet collection to all of the rows for the page.\n\n<img alt=\"Connect the rows for your page\" src=\"Resources/ConnectRows.png\" width=\"300px\"/>\n\n### Connecting a page to the controller\n\n- On your controller, go to the *Connections* tab and make a connection for each of your pages.  \n\n<img alt=\"Connect the pages for your welcome sheet\" src=\"Resources/ConnectPages.png\" width=\"300px\"/>\n\n## Summary\n\nTo configure your Welcome sheet from a storyboard do as follows:\n\n- Drag out a new UIViewController and set the class to `WelcomeSheetStoryboardController`.  \n- For each of your pages:\n    - Drag out a new Object and set the class to `UIWelcomeSheetPage`.\n    - Configure the attributes\n    - For each of the rows in your page:\n        - Drag out a new Object and set the class to `UIWelcomeSheetPageRow`.\n        - Configure the attributes\n        - Connect the row to your page by draging out a connection to the `rows` outlet.\n    - Connect the page to your sheet by draging out a connection to the `pages` outlet.\n- You now have a Welcome Sheet without writing a single line of code!\n\nYou should end up with a lot of objects like so:\n\n<img alt=\"Objects connected to your sheet\" src=\"Resources/WelcomeSheetScene.png\" width=\"300px\"/>\n\n# Using a System Symbol in a UIImage\n\nDue to conversion issues between `UIImage` and SwiftUI’s `Image`, system symbols will have a squashed appearance. Welcome Sheet overcomes this issue by obtaining the name of the system symbol from the `UIImage` and creating a new `Image` from the system name."
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2021 Jakub Florek\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "Package.swift",
    "content": "// swift-tools-version:5.5\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"WelcomeSheet\",\n    platforms: [.iOS(.v13)],\n    products: [\n        // Products define the executables and libraries a package produces, and make them visible to other packages.\n        .library(\n            name: \"WelcomeSheet\",\n            targets: [\"WelcomeSheet\"]),\n    ],\n    dependencies: [\n        // Dependencies declare other packages that this package depends on.\n        // .package(url: /* package url */, from: \"1.0.0\"),\n    ],\n    targets: [\n        // Targets are the basic building blocks of a package. A target can define a module or a test suite.\n        // Targets can depend on other targets in this package, and on products in packages this package depends on.\n        .target(\n            name: \"WelcomeSheet\",\n            dependencies: []),\n    ]\n)\n"
  },
  {
    "path": "README.md",
    "content": "# Welcome Sheet\n\n![Welcome Sheet baner](Documentation/WelcomeSheetBanner.png)\n\nWelcome sheet for iOS enables incredibly easy way for creating onboarding screens, update notes, or whatever you imagine! The main idea standing behind this project was to follow the design of Apple’s native onboarding screens as much as possible, that’s why you can be always sure they will look gorgeous on iPhone SE screen as well as on iPad Pro’s massive 12,9” display!\n\n<p align=\"center\">\n    <img src=\"Documentation/WelcomeSheetPromo.gif\">\n</p>\n\n# SwiftUI\nTo create a welcome sheet in SwiftUI simply add .welcomeSheet view modifier to your view and pass page array as an argument.\n```swift\nimport SwiftUI\nimport WelcomeSheet\n\nstruct ContentView: View {\n    @State private var showSheet = false\n    \n    let pages = [\n        WelcomeSheetPage(title: \"Welcome to Welcome Sheet\", rows: [\n            WelcomeSheetPageRow(imageSystemName: \"rectangle.stack.fill.badge.plus\",\n                                title: \"Quick Creation\",\n                                content: \"It's incredibly intuitive. Simply declare an array of pages filled with content.\"),\n            \n            WelcomeSheetPageRow(imageSystemName: \"slider.horizontal.3\",\n                                title: \"Highly Customisable\",\n                                content: \"Match sheet's appearance to your app, link buttons, perform actions after dismissal.\"),\n            \n            WelcomeSheetPageRow(imageSystemName: \"ipad.and.iphone\",\n                                title: \"Works out of the box\",\n                                content: \"Don't worry about various screen sizes. It will look gorgeous on every iOS device.\")\n        ])\n    ]\n    \n    var body: some View {\n        Button(\"Show sheet\") {\n            showSheet.toggle()\n        }\n        .welcomeSheet(isPresented: $showSheet, pages: pages)\n    }\n}\n```\n\n## .welcomeSheet\n\n`.welcomeSheet` presents welcome sheet with given pages when a binding to a Boolean value that you provide is true.\n\n```swift\n.welcomeSheet(isPresented: $showSheet, \n              onDismiss: { /* Run this code when sheet is dismissed */ }, \n              isSlideToDismissDisabled: true, \n              preferredColorScheme = .dark,\n              pages: pages)\n```\n\n- `isPresented` - `bool` binding. When set to `true` presents sheet.\n- `onDismiss` - Closure called after sheet's dismissal.\n- `isSlideToDismissDisabled` - When set to `true` disables sheet's swipe to dismiss gesture.\n- `preferredColorScheme` - Overrides the default color scheme.\n- `pages` - Array of pages to be displayed chronologically.\n\n# UIKit  \nTo create a welcome sheet in UIKit create `WelcomeSheetController` and present it from your ViewController.\n\n```Swift\nclass ViewController: UIViewController {\n\n    @IBOutlet weak var showSheetButton: UIButton!\n\n    let pages = [\n        WelcomeSheetPage(title: \"Welcome to Welcome Sheet\", rows: [\n            WelcomeSheetPageRow(imageSystemName: \"rectangle.stack.fill.badge.plus\",\n                                title: \"Quick Creation\",\n                                content: \"It's incredibly intuitive. Simply declare an array of pages filled with content.\"),\n            \n            WelcomeSheetPageRow(imageSystemName: \"slider.horizontal.3\",\n                                title: \"Highly Customisable\",\n                                content: \"Match sheet's appearance to your app, link buttons, perform actions after dismissal.\"),\n            \n            WelcomeSheetPageRow(imageSystemName: \"ipad.and.iphone\",\n                                title: \"Works out of the box\",\n                                content: \"Don't worry about various screen sizes. It will look gorgeous on every iOS device.\")\n        ])\n    ]\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        showSheetButton.addTarget(self, action: #selector(showSheet), for: .touchUpInside)\n    }\n\n    @objc func showSheet() {\n        let sheetVC = WelcomeSheetController()\n        sheetVC.pages = pages\n        sheetVC.onDismiss = sheetDismissed\n\n        present(sheetVC, animated: true)\n    }\n\n    func sheetDismissed() {\n        print(\"Sheet dismissed\")\n    }\n}\n```\n\n## WelcomeSheetController\n`WelcomeSheetController` controller used to create, configure and present the sheet.\n\n```Swift\nlet sheetVC = WelcomeSheetController()\nsheetVC.pages = pages\nsheetVC.onDismiss = { /* Run this code when sheet is dismissed */ }\nsheetVC.isModalInPresentation = true\n\npresent(sheetVC, animated: true)\n```\n- `pages` - Array of pages to be displayed chronologically.\n- `onDismiss` - Closure called after sheet's dismissal.\n- `isModalInPresentation` - When set to `true` disables sheet's swipe to dismiss gesture.\n\n# Models\nObjects used to configure sheets. Each model has also a set of UIKit data initializers.\n\n## WelcomeSheetPage\n\n`WelcomeSheetPage` type that describes page's content.\n\n```swift\nWelcomeSheetPage(title: \"Welcome to Welcome Sheet\", rows: [\n    // Rows\n],\nmainButtonTitle: \"Let's go!\",\naccentColor: Color.purple, \noptionalButtonTitle: \"About Welcome Sheet...\", \noptionalButtonURL: URL(string: \"https://github.com/MAJKFL/Welcome-Sheet\"))\n```\n- `title` - Large title displayed on the top.\n- `rows` - Rows of content inside a body\n- `mainButtonTitle` - Optional title for a main button. Set to `\"Continue\"` by default.\n- `accentColor` - Color used for buttons. When set to `nil`, uses default accent colour.\n- `optionalButtonTitle` - Title for an optional button.\n- `optionalButtonURL` - `URL` to open when an optional button is pressed.\n\n## WelcomeSheetPageRow\n\n`WelcomeSheetPageRow` describes row's content.\n\n```swift\nWelcomeSheetPageRow(imageSystemName: \"ipad.and.iphone\", // Or `image: Image(\"ExampleImageName\")`\n                    accentColor: Color.green,\n                    title: \"Works out of the box\",\n                    content: \"Don't worry about various screen sizes. It will look gorgeous on every iOS device.\")\n```\n- `imageSystemName` - SF Symbol name for image displayed at the beginning of a row.\n- `image` - Image displayed at the beginning of a row.\n- `accentColor` - Color used for an image. When set to `nil`, uses default accent colour.\n- `title` - Title displayed over a content.\n- `content` - Text displayed beneath a title.\n\n## Decodable support\n\nYou can decode pages from JSON.\n\n```JSON\n[\n   {\n      \"optionalButtonURL\":\"https:\\/\\/github.com\\/MAJKFL\\/Welcome-Sheet\",\n      \"accentColor\":\"BF5AF2\",\n      \"isShowingOptionalButton\":true,\n      \"title\":\"Welcome to Welcome Sheet\",\n      \"rows\":[\n         {\n            \"accentColor\":\"63E6E1\",\n            \"title\":\"Quick Creation\",\n            \"content\":\"Sheet creation is incredibly intuitive. Simply create an array of pages filled with your content.\",\n            \"imageName\":\"rectangle.stack.fill.badge.plus\"\n         },\n         {\n            \"accentColor\":\"5E5CE6\",\n            \"title\":\"Highly Customizable\",\n            \"content\":\"Set accent colors, add optional buttons, disable dismiss gestures, perform actions after button taps or sheet dismissal and more!\",\n            \"imageName\":\"gears\"\n         },\n         {\n            \"accentColor\":\"30D158\",\n            \"title\":\"Works out of the box\",\n            \"content\":\"Don't worry about different screen sizes. Your Welcome Sheet will look gorgeous on every iOS device!\",\n            \"imageName\":\"ipad.and.iphone\"\n         }\n      ],\n      \"optionalButtonTitle\":\"About Welcome Sheet...\",\n      \"mainButtonTitle\":\"Continue\"\n   }\n]\n```\n\n**Note:** `imageName` can store asset catalogue image name or SF Symbol name.\n\n## UIKit Storyboards support\nYou can configure your Welcome Sheet without writing a single line of code.\n\n![Configuring Welcome Sheet from a Storyboard](Documentation/UIKit/Resources/Teaser.png)\n\nFor a step-by-step guide on how to configure by storyboards, please see the [Documentation](Documentation/UIKit/Readme.md)\n\n## Installation\n\nUsing Swift Package Manager\n\n```\n.package(url: \"https://github.com/MAJKFL/Welcome-Sheet\", from: \"0.1.1\"),\n```\n\n## Example\n\n``` Swift\nimport SwiftUI\nimport WelcomeSheet\n\nstruct ContentView: View {\n    @State private var showSheet = false\n    \n    let pages = [\n        WelcomeSheetPage(title: \"Welcome to Welcome Sheet\", rows: [\n            WelcomeSheetPageRow(imageSystemName: \"rectangle.stack.fill.badge.plus\",\n                                accentColor: Color.mint,\n                                title: \"Quick Creation\",\n                                content: \"It's incredibly intuitive. Simply declare an array of pages filled with content.\"),\n            \n            WelcomeSheetPageRow(imageSystemName: \"slider.horizontal.3\",\n                                accentColor: Color.indigo,\n                                title: \"Highly Customisable\", content: \"Match sheet's appearance to your app, link buttons, perform actions after dismissal.\"),\n            \n            WelcomeSheetPageRow(imageSystemName: \"ipad.and.iphone\",\n                                accentColor: Color.green,\n                                title: \"Works out of the box\",\n                                content: \"Don't worry about various screen sizes. It will look gorgeous on every iOS device.\")\n        ], accentColor: Color.purple, optionalButtonTitle: \"About Welcome Sheet...\", optionalButtonURL: URL(string: \"https://github.com/MAJKFL/Welcome-Sheet\")),\n        \n        WelcomeSheetPage(title: \"What's New in Translate\", rows: [\n            WelcomeSheetPageRow(imageSystemName: \"platter.2.filled.iphone\",\n                                title: \"Conversation Views\",\n                                content: \"Choose a side-by-side or face-to-face conversation view.\"),\n            \n            WelcomeSheetPageRow(imageSystemName: \"mic.badge.plus\",\n                                title: \"Auto Translate\",\n                                content: \"Respond in conversations without tapping the microphone button.\"),\n            \n            WelcomeSheetPageRow(imageSystemName: \"iphone\",\n                                title: \"System-Wide Translation\",\n                                content: \"Translate selected text anywhere on your iPhone.\")\n        ], mainButtonTitle: \"Wassup?\")\n    ]\n    \n    var body: some View {\n        Button(\"Show sheet\") {\n            showSheet.toggle()\n        }\n        .welcomeSheet(isPresented: $showSheet, onDismiss: { print(\"Sheet dismissed\") }, isSlideToDismissDisabled: true, pages: pages)\n    }\n}\n```\n"
  },
  {
    "path": "Sources/WelcomeSheet/Dimensions/iPadSheetDimensions.swift",
    "content": "//\n//  iPadSheetDimensions.swift\n//  \n//\n//  Created by Jakub Florek on 29/11/2021.\n//\n\nimport SwiftUI\n\nstruct iPadSheetDimensions {\n    static var width: CGFloat {\n        let width = UIScreen.main.bounds.width\n        \n        if width >= 1024 { // iPad pro 12.9\"\n            return width / 1.65\n        } else if width == 744 || width == 768 { // iPad mini (6th gen), older iPads\n            return width / 1.2\n        } else if width > 810 { // iPads bigger than standard iPad\n            return width / 1.35\n        } else { // The rest\n            return width / 1.3\n        }\n    }\n    \n    static var height: CGFloat {\n        let height = UIScreen.main.bounds.height\n        \n        if height >= 1366 { // iPad pro 12.9\"\n            return height / 1.65\n        } else if height == 1133 { // iPad mini (6th gen)\n            return height / 1.7\n        } else if height > 1080 { // iPads bigger than standard iPad\n            return height / 1.6\n        } else { // The rest\n            return height / 1.5\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/Dimensions/iPhoneDimensions.swift",
    "content": "//\n//  iPhoneDimensions.swift\n//  \n//\n//  Created by Jakub Florek on 29/11/2021.\n//\n\nimport SwiftUI\n\nstruct iPhoneDimensions {\n    static let screenHeight = UIScreen.main.bounds.height\n    \n    static var spacing: CGFloat {\n        if UIScreen.main.nativeBounds.height == 2340 || screenHeight < 736 { // iPhone mini, Smaller than iPhone plus\n            return 30\n        } else { // The rest\n            return 60\n        }\n    }\n    \n    static var topPadding: CGFloat {\n        if screenHeight == 568 { // iPhone SE 1st gen\n            return 50\n        } else if screenHeight <= 736 { // Smaller than iPhone plus\n            return 60\n        } else { // The rest\n            return 80\n        }\n    }\n    \n    static var horizontalPaddingAddend: CGFloat {\n        if screenHeight * UIScreen.main.nativeScale >= 896 * 3 || screenHeight == 736 { // iPhone pro max, iPhone plus\n            return 20\n        } else if screenHeight == 568 { // iPhone SE 1st gen\n            return -10\n        } else { // The rest\n            return 0\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/Extensions/AnyView+Extensitons.swift",
    "content": "//\n//  File.swift\n//  \n//\n//  Created by Jakub Florek on 14/01/2023.\n//\n\nimport SwiftUI\n\nextension AnyView: Identifiable {\n    public var id: UUID {\n        UUID()\n    }\n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/Extensions/Color+Extensions.swift",
    "content": "//\n//  Color+Extensions.swift\n//  \n//\n//  Created by Jakub Florek on 05/12/2021.\n//\n\nimport SwiftUI\n\nextension Color {\n    init(hex: String) {\n        let hex = hex.trimmingCharacters(in: CharacterSet.alphanumerics.inverted)\n        var int: UInt64 = 0\n        Scanner(string: hex).scanHexInt64(&int)\n        let a, r, g, b: UInt64\n        switch hex.count {\n        case 3: // RGB (12-bit)\n            (a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17)\n        case 6: // RGB (24-bit)\n            (a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF)\n        case 8: // ARGB (32-bit)\n            (a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF)\n        default:\n            (a, r, g, b) = (1, 1, 1, 0)\n        }\n\n        self.init(\n            .sRGB,\n            red: Double(r) / 255,\n            green: Double(g) / 255,\n            blue:  Double(b) / 255,\n            opacity: Double(a) / 255\n        )\n    }\n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/Extensions/UIColor+Extensions.swift",
    "content": "//\n//  File.swift\n//  \n//\n//  Created by Jakub Florek on 18/01/2023.\n//\n\nimport SwiftUI\n\nextension UIColor {\n    func toColor() -> Color {\n        Color(self)\n    }\n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/Extensions/UIImage+Extensions.swift",
    "content": "//\n//  UIImage+Extensions.swift\n//  \n//\n//  Created by Eskil Gjerde Sviggum on 30/01/2023.\n//\n\nimport UIKit\n\nextension UIImage {\n    \n    func systemSymbolName() -> String? {\n        guard let imageAsset = self.imageAsset else {\n            return nil\n        }\n        \n        let systemSymbolAssetManagerName = \"CoreGlyphs\"\n        \n        // Get the assetName, and assetManagerName.\n        guard\n            imageAsset.responds(to: NSSelectorFromString(\"assetName\")),\n            let assetName = imageAsset.value(forKey: \"_assetName\") as? String,\n            \n            imageAsset.responds(to: NSSelectorFromString(\"_assetManager\")),\n            let assetManager = imageAsset.value(forKey: \"_assetManager\") as? NSObject,\n            \n            let assetManagerName = assetManager.value(forKey: \"_assetManagerName\") as? String\n        else {\n            assertionFailure(\"assetName or assetManagerName is not available.\")\n            return nil\n        }\n        \n        // Check if image is a system symbol.\n        if assetManagerName != systemSymbolAssetManagerName {\n            return nil\n        }\n        \n        return assetName\n    }\n    \n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/Models/UIWelcomeSheetPage.swift",
    "content": "//\n//  UIWelcomeSheetPage.swift\n//  \n//\n//  Created by Eskil Gjerde Sviggum on 18/01/2023.\n//\n\nimport UIKit\n\n@objc\npublic class UIWelcomeSheetPage: NSObject {\n    \n    /// Large title displayed on the top.\n    @IBInspectable\n    public var title: String = \"\"\n    \n    /// Rows of content inside body.\n    @IBOutlet\n    public var rows: [UIWelcomeSheetPageRow] = []\n    \n    /// Title for the main button. Set to `\"Continue\"` by\n    @IBInspectable\n    public var mainButtonTitle: String = \"Continue\"\n    \n    /// Color used for main buttons. When `nil`, uses default accent color.\n    @IBInspectable\n    public var accentColor: UIColor?\n    \n    /// Background color. When `nil`, uses default system background.\n    @IBInspectable\n    public var backgroundColor: UIColor?\n    \n    /// Specifies whether to show the optional button.\n    @IBInspectable\n    public var isShowingOptionalButton = false\n    \n    /// Optional button title.\n    @IBInspectable\n    public var optionalButtonTitle: String?\n    \n    /// URL to open after optional button is tapped.\n    @IBInspectable\n    public var optionalButtonURL: String?\n    \n    /// Clousure executed after optional button is tapped.\n    public var optionalButtonAction: (() -> ())?\n    \n    /// Clousure executed after optional button is tapped.\n    public var optionalButtonView: UIView?\n    \n    func welcomeSheetPage() -> WelcomeSheetPage {\n        WelcomeSheetPage(title: title, rows: rows.map { $0.welcomeSheetPageRow() }, accentUIColor: accentColor, backgroundUIColor: backgroundColor, mainButtonTitle: mainButtonTitle, optionalButtonTitle: optionalButtonTitle, optionalButtonURL: URL(string: optionalButtonURL ?? \"\"), optionalButtonAction: optionalButtonAction, optionalButtonUIView: optionalButtonView)\n    }\n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/Models/UIWelcomeSheetPageRow.swift",
    "content": "//\n//  UIWelcomeSheetPageRow.swift\n//  \n//\n//  Created by Eskil Gjerde Sviggum on 18/01/2023.\n//\n\nimport UIKit\n\n@objc\npublic class UIWelcomeSheetPageRow: NSObject {\n    /// Title displayed above the content.\n    @IBInspectable\n    public var title: String = \"\"\n    \n    /// Text displayed beneath the title.\n    @IBInspectable\n    public var content: String = \"\"\n    \n    /// Image displayed at the beginning of a row.\n    @IBInspectable\n    public var image: UIImage = UIImage()\n    \n    /// Color used for image. When `nil`, uses default accent color.\n    @IBInspectable\n    public var accentColor: UIColor?\n    \n    func welcomeSheetPageRow() -> WelcomeSheetPageRow {\n        WelcomeSheetPageRow(uiImage: image, accentUIColor: accentColor, title: title, content: content)\n    }\n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/Models/WelcomeSheetPage.swift",
    "content": "//\n//  WelcomeSheetPage.swift\n//  \n//\n//  Created by Jakub Florek on 27/11/2021.\n//\n\nimport SwiftUI\n\n/// Describes Welcome Sheet page's content.\npublic struct WelcomeSheetPage: Identifiable, Decodable {\n    private enum CodingKeys : String, CodingKey {\n        case title, rows, mainButtonTitle, accentColor, backgroundColor, isShowingOptionalButton, optionalButtonTitle, optionalButtonURL\n    }\n    \n    public var id = UUID()\n    \n    \n    /// Large title displayed on the top.\n    public var title: String\n    /// Rows of content inside body.\n    public var rows: [WelcomeSheetPageRow]\n    \n    \n    /// Title for the main button. Set to `\"Continue\"` by default.\n    public var mainButtonTitle: String\n    /// Color used for main buttons. When `nil`, uses default accent color.\n    public var accentColor: Color?\n    /// Background color. When `nil`, uses default system background.\n    public var backgroundColor: Color?\n    \n    \n    /// Specifies whether to show the optional button.\n    public var isShowingOptionalButton = false\n    /// Optional button title.\n    public var optionalButtonTitle: String?\n    /// URL to open after optional button is tapped.\n    public var optionalButtonURL: URL?\n    /// Clousure executed after optional button is tapped.\n    public var optionalButtonAction: (() -> ())?\n    /// View shown after optional button is tapped.\n    public var optionalButtonView: AnyView?\n    \n    \n    private init(title: String, rows: [WelcomeSheetPageRow], accentColor: Color? = nil, backgroundColor: Color? = nil, mainButtonTitle: String? = nil, optionalButtonTitle: String? = nil, optionalButtonURL: URL? = nil, optionalButtonAction: (() -> ())? = nil, optionalButtonView: AnyView? = nil) {\n        self.title = title\n        self.rows = rows\n        self.mainButtonTitle = mainButtonTitle ?? \"Continue\"\n        self.accentColor = accentColor\n        self.backgroundColor = backgroundColor\n        self.isShowingOptionalButton = true\n        self.optionalButtonTitle = optionalButtonTitle\n        self.optionalButtonURL = optionalButtonURL\n        self.optionalButtonAction = optionalButtonAction\n        self.optionalButtonView = optionalButtonView\n    }\n    \n    /// Creates Welcome Sheet page.\n    public init(title: String, rows: [WelcomeSheetPageRow], mainButtonTitle: String? = nil, optionalButtonTitle: String? = nil, optionalButtonURL: URL? = nil, optionalButtonAction: (() -> ())? = nil, optionalButtonUIView: UIView? = nil) {\n        self.init(title: title, rows: rows, accentColor: nil, backgroundColor: nil, mainButtonTitle: mainButtonTitle, optionalButtonTitle: optionalButtonTitle, optionalButtonURL: optionalButtonURL, optionalButtonAction: optionalButtonAction, optionalButtonView: Self.getAnyViewFrom(uiVIew: optionalButtonUIView))\n    }\n    \n    // V SwiftUI Initializers V\n    \n    /// Creates Welcome Sheet page.\n    public init(title: String, rows: [WelcomeSheetPageRow], accentColor: Color?, backgroundColor: Color?, mainButtonTitle: String? = nil, optionalButtonTitle: String? = nil, optionalButtonURL: URL? = nil, optionalButtonAction: (() -> ())? = nil, optionalButtonView: (() -> any View)? = nil) {\n        self.init(title: title, rows: rows, accentColor: accentColor, backgroundColor: backgroundColor, mainButtonTitle: mainButtonTitle, optionalButtonTitle: optionalButtonTitle, optionalButtonURL: optionalButtonURL, optionalButtonAction: optionalButtonAction, optionalButtonView: Self.getAnyViewFrom(view: optionalButtonView))\n    }\n    \n    /// Creates Welcome Sheet page.\n    public init(title: String, rows: [WelcomeSheetPageRow], accentColor: Color?, mainButtonTitle: String? = nil, optionalButtonTitle: String? = nil, optionalButtonURL: URL? = nil, optionalButtonAction: (() -> ())? = nil, optionalButtonView: (() -> any View)? = nil) {\n        self.init(title: title, rows: rows, accentColor: accentColor, backgroundColor: nil, mainButtonTitle: mainButtonTitle, optionalButtonTitle: optionalButtonTitle, optionalButtonURL: optionalButtonURL, optionalButtonAction: optionalButtonAction, optionalButtonView: Self.getAnyViewFrom(view: optionalButtonView))\n    }\n    \n    /// Creates Welcome Sheet page.\n    public init(title: String, rows: [WelcomeSheetPageRow], backgroundColor: Color?, mainButtonTitle: String? = nil, optionalButtonTitle: String? = nil, optionalButtonURL: URL? = nil, optionalButtonAction: (() -> ())? = nil, optionalButtonView: (() -> any View)? = nil) {\n        self.init(title: title, rows: rows, accentColor: nil, backgroundColor: backgroundColor, mainButtonTitle: mainButtonTitle, optionalButtonTitle: optionalButtonTitle, optionalButtonURL: optionalButtonURL, optionalButtonAction: optionalButtonAction, optionalButtonView: Self.getAnyViewFrom(view: optionalButtonView))\n    }\n    \n    // V UIKit initializer V\n    \n    /// Creates Welcome Sheet page.\n    public init(title: String, rows: [WelcomeSheetPageRow], accentUIColor: UIColor?, backgroundUIColor: UIColor?, mainButtonTitle: String? = nil, optionalButtonTitle: String? = nil, optionalButtonURL: URL? = nil, optionalButtonAction: (() -> ())? = nil, optionalButtonUIView: UIView? = nil) {\n        self.init(title: title, rows: rows, accentColor: accentUIColor?.toColor(), backgroundColor: backgroundUIColor?.toColor(), mainButtonTitle: mainButtonTitle, optionalButtonTitle: optionalButtonTitle, optionalButtonURL: optionalButtonURL, optionalButtonAction: optionalButtonAction, optionalButtonView: Self.getAnyViewFrom(uiVIew: optionalButtonUIView))\n    }\n    \n    /// Creates Welcome Sheet page.\n    public init(title: String, rows: [WelcomeSheetPageRow], accentUIColor: UIColor?, mainButtonTitle: String? = nil, optionalButtonTitle: String? = nil, optionalButtonURL: URL? = nil, optionalButtonAction: (() -> ())? = nil, optionalButtonUIView: UIView? = nil) {\n        self.init(title: title, rows: rows, accentColor: accentUIColor?.toColor(), backgroundColor: nil, mainButtonTitle: mainButtonTitle, optionalButtonTitle: optionalButtonTitle, optionalButtonURL: optionalButtonURL, optionalButtonAction: optionalButtonAction, optionalButtonView: Self.getAnyViewFrom(uiVIew: optionalButtonUIView))\n    }\n    \n    /// Creates Welcome Sheet page.\n    public init(title: String, rows: [WelcomeSheetPageRow], backgroundUIColor: UIColor?, mainButtonTitle: String? = nil, optionalButtonTitle: String? = nil, optionalButtonURL: URL? = nil, optionalButtonAction: (() -> ())? = nil, optionalButtonUIView: UIView? = nil) {\n        self.init(title: title, rows: rows, accentColor: nil, backgroundColor: backgroundUIColor?.toColor(), mainButtonTitle: mainButtonTitle, optionalButtonTitle: optionalButtonTitle, optionalButtonURL: optionalButtonURL, optionalButtonAction: optionalButtonAction, optionalButtonView: Self.getAnyViewFrom(uiVIew: optionalButtonUIView))\n    }\n    \n    // V Codable initializer V\n    \n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: CodingKeys.self)\n        title = try container.decode(String.self, forKey: .title)\n        rows = try container.decode([WelcomeSheetPageRow].self, forKey: .rows)\n        \n        do {\n            mainButtonTitle = try container.decode(String.self, forKey: .mainButtonTitle)\n        } catch {\n            mainButtonTitle = \"Continue\"\n        }\n        \n        do {\n            let colorHex = try container.decode(String.self, forKey: .accentColor)\n            accentColor = Color(hex: colorHex)\n        } catch {\n            accentColor = nil\n        }\n        \n        do {\n            let colorHex = try container.decode(String.self, forKey: .backgroundColor)\n            backgroundColor = Color(hex: colorHex)\n        } catch {\n            accentColor = nil\n        }\n        \n        do {\n            optionalButtonTitle = try container.decode(String.self, forKey: .optionalButtonTitle)\n        } catch {\n            optionalButtonTitle = nil\n        }\n        \n        do {\n            let urlString = try container.decode(String.self, forKey: .optionalButtonURL)\n            optionalButtonURL = URL(string: urlString)\n        } catch {\n            optionalButtonURL = nil\n        }\n        \n        do {\n            isShowingOptionalButton = try container.decode(Bool.self, forKey: .isShowingOptionalButton)\n        } catch {\n            if optionalButtonTitle != nil {\n                isShowingOptionalButton = true\n            } else {\n                isShowingOptionalButton = false\n            }\n        }\n    }\n}\n\nprivate extension WelcomeSheetPage {\n    static func getAnyViewFrom(view: (() -> any View)?) -> AnyView? {\n        guard let view else { return nil }\n        return AnyView(view())\n    }\n    \n    static func getAnyViewFrom(uiVIew: UIView?) -> AnyView? {\n        guard let uiVIew else { return nil }\n        return AnyView(OptionalButtonView(uiView: uiVIew))\n    }\n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/Models/WelcomeSheetPageRow.swift",
    "content": "//\n//  WelcomeSheetPageRow.swift\n//\n//\n//  Created by Jakub Florek on 27/11/2021.\n//\n\nimport SwiftUI\n\n/// Describes Welcome Sheet page row's content.\npublic struct WelcomeSheetPageRow: Identifiable, Decodable {\n    private enum CodingKeys : String, CodingKey {\n        case title, content, imageName, accentColor\n    }\n    \n    public var id = UUID()\n    \n    \n    /// Title displayed above the content.\n    public var title: String\n    /// Text displayed beneath the title.\n    public var content: String\n    /// Image displayed at the beginning of a row.\n    public var image: Image\n    \n    \n    /// Color used for image. When `nil`, uses default accent color.\n    public var accentColor: Color?\n    \n    \n    // V SwiftUI Initializers V\n    \n    /// Creates Welcome Sheet page row with given image, title and content.\n    public init(image: Image, accentColor: Color? = nil, title: String, content: String) {\n        self.image = image\n        self.accentColor = accentColor\n        self.title = title\n        self.content = content\n    }\n\n    /// Creates Welcome Sheet page row with system image, given title and content. Tints image with specified colour.\n    public init(imageSystemName: String, accentColor: Color?, title: String, content: String) {\n        self.init(image: Image(systemName: imageSystemName), accentColor: accentColor, title: title, content: content)\n    }\n\n    /// Creates Welcome Sheet page row with image name, given title and content. Tints image with specified colour.\n    public init(imageNamed: String, accentColor: Color?, title: String, content: String) {\n        self.init(image: Image(imageNamed), accentColor: accentColor, title: title, content: content)\n    }\n    \n    // V UIKit initializers V\n    \n    /// Creates Welcome Sheet page row with given image, title and content. Tints image with specified colour.\n    public init(uiImage: UIImage, accentUIColor: UIColor? = nil, title: String, content: String) {\n        if let systemSymbolName = uiImage.systemSymbolName() {\n            self.init(imageSystemName: systemSymbolName, accentUIColor: accentUIColor, title: title, content: content)\n        } else {\n            self.init(image: Image(uiImage: uiImage), accentColor: accentUIColor?.toColor(), title: title, content: content)\n        }\n    }\n    \n    /// Creates Welcome Sheet page row with system image, given title and content. Tints image with specified colour.\n    public init(imageSystemName: String, accentUIColor: UIColor?, title: String, content: String) {\n        self.init(image: Image(systemName: imageSystemName), accentColor: accentUIColor?.toColor(), title: title, content: content)\n    }\n\n    /// Creates Welcome Sheet page row with image name, given title and content. Tints image with specified colour.\n    public init(imageNamed: String, accentUIColor: UIColor?, title: String, content: String) {\n        self.init(image: Image(imageNamed), accentColor: accentUIColor?.toColor(), title: title, content: content)\n    }\n    \n    // V Universal initializers V\n    \n    /// Creates Welcome Sheet page row with system image, given title and content. Tints image with specified colour.\n    public init(imageSystemName: String, title: String, content: String) {\n        self.init(image: Image(systemName: imageSystemName), title: title, content: content)\n    }\n\n    /// Creates Welcome Sheet page row with image name, given title and content. Tints image with specified colour.\n    public init(imageNamed: String, title: String, content: String) {\n        self.init(image: Image(imageNamed), title: title, content: content)\n    }\n    \n    // V Codable initializer V\n    \n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: CodingKeys.self)\n        title = try container.decode(String.self, forKey: .title)\n        content = try container.decode(String.self, forKey: .content)\n        \n        let imageName = try container.decode(String.self, forKey: .imageName)\n        \n        if let uiImage = UIImage(named: imageName) {\n            image = Image(uiImage: uiImage)\n        } else {\n            image = Image(systemName: imageName)\n        }\n        \n        do {\n            let colorHex = try container.decode(String.self, forKey: .accentColor)\n            accentColor = Color(hex: colorHex)\n        } catch {\n            accentColor = nil\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/Views/HorizontalAlignment.swift",
    "content": "//\n//  File.swift\n//  \n//\n//  Created by Jakub Florek on 14/01/2023.\n//\n\nimport SwiftUI\n\nextension HorizontalAlignment {\n    enum MidIcons: AlignmentID {\n        static func defaultValue(in d: ViewDimensions) -> CGFloat {\n            d[.leading]\n        }\n    }\n\n    static let midIcons = HorizontalAlignment(MidIcons.self)\n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/Views/OptionalButtonView.swift",
    "content": "//\n//  File.swift\n//  \n//\n//  Created by Jakub Florek on 18/01/2023.\n//\n\nimport SwiftUI\n\nstruct OptionalButtonView: UIViewRepresentable {\n    let uiView: UIView\n    \n    func makeUIView(context: Context) -> UIView { uiView }\n\n    func updateUIView(_ uiView: UIView, context: Context) {}\n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/Views/ScrollOnlyOnOverflow.swift",
    "content": "// Source: https://stackoverflow.com/a/66875954\n\nimport SwiftUI\n\nstruct OverflowScrollView<Content>: View where Content : View {\n    \n    @State private var axes: Axis.Set\n    \n    private let showsIndicator: Bool\n    \n    private let content: Content\n    \n    init(_ axes: Axis.Set = .vertical, showsIndicators: Bool = true, @ViewBuilder content: @escaping () -> Content) {\n        self._axes = .init(wrappedValue: axes)\n        self.showsIndicator = showsIndicators\n        self.content = content()\n    }\n\n    fileprivate init(scrollView: ScrollView<Content>) {\n        self._axes = .init(wrappedValue: scrollView.axes)\n        self.showsIndicator = scrollView.showsIndicators\n        self.content = scrollView.content\n    }\n\n    public var body: some View {\n        GeometryReader { geometry in\n            ScrollView(axes, showsIndicators: showsIndicator) {\n                content\n                    .background(ContentSizeReader())\n                    .onPreferenceChange(ContentSizeKey.self) {\n                        if $0.height <= geometry.size.height {\n                            axes.remove(.vertical)\n                        }\n                        if $0.width <= geometry.size.width {\n                            axes.remove(.horizontal)\n                        }\n                    }\n            }\n        }\n    }\n}\n\nprivate struct ContentSizeReader: View {\n    \n    var body: some View {\n        GeometryReader {\n            Color.clear\n                .preference(\n                    key: ContentSizeKey.self,\n                    value: $0.frame(in: .local).size\n                )\n        }\n    }\n}\n\nprivate struct ContentSizeKey: PreferenceKey {\n    static var defaultValue: CGSize { .zero }\n    static func reduce(value: inout Value, nextValue: () -> Value) {\n        value = CGSize(width: value.width+nextValue().width,\n                       height: value.height+nextValue().height)\n    }\n}\n\nextension ScrollView {\n    func scrollOnlyOnOverflow() -> some View {\n        OverflowScrollView(scrollView: self)\n    }\n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/Views/WelcomeSheetModal.swift",
    "content": "//\n//  WelcomeSheetModal.swift\n//\n//\n//  Created by Jakub Florek on 14/01/2023.\n//\n\nimport SwiftUI\n\nopen class ModalWelcomeSheetUIHostingController: UIHostingController<WelcomeSheetView>, UIPopoverPresentationControllerDelegate {\n    override internal init(rootView: WelcomeSheetView) {\n        super.init(rootView: rootView)\n        \n        self.rootView.onDismiss = getOnDismiss(with: rootView.onDismiss)\n        \n        modalPresentationStyle = .formSheet\n        preferredContentSize = CGSize(width: iPadSheetDimensions.width, height: iPadSheetDimensions.height)\n        presentationController?.delegate = self\n    }\n    \n    required public init?(coder: NSCoder) { fatalError(\"init(coder:) has not been implemented\") }\n    \n    public func presentationControllerDidDismiss(_ presentationController: UIPresentationController) { rootView.onDismiss() }\n    \n    internal func getOnDismiss(with action: @escaping () -> Void) -> (() -> Void) {\n        return { [weak self] in\n            action()\n            self?.dismiss(animated: true)\n        }\n    }\n}\n\nclass ModalWelcomeSheetUIViewController: UIViewController {\n    var isSlideToDismissDisabled: Bool?\n    var welcomeSheetView: WelcomeSheetView?\n    \n    func show() {\n        guard let welcomeSheetView else { return }\n        let hostVC = ModalWelcomeSheetUIHostingController(rootView: welcomeSheetView)\n        hostVC.overrideUserInterfaceStyle = self.overrideUserInterfaceStyle\n        hostVC.isModalInPresentation = isSlideToDismissDisabled ?? false\n        present(hostVC, animated: true)\n    }\n}\n\nstruct ModalWelcomeSheetUIViewControllerRepresentable: UIViewControllerRepresentable {\n    let show: Bool\n    let isSlideToDismissDisabled: Bool\n    let preferredColorScheme: ColorScheme?\n    let welcomeSheetView: WelcomeSheetView\n    \n    var userInterfaceStyle: UIUserInterfaceStyle? {        \n        if preferredColorScheme == .dark {\n            return .dark\n        } else {\n            return .light\n        }\n    }\n    \n    func makeUIViewController(context: UIViewControllerRepresentableContext<ModalWelcomeSheetUIViewControllerRepresentable>) -> ModalWelcomeSheetUIViewController {\n        let vc = ModalWelcomeSheetUIViewController()\n        vc.welcomeSheetView = welcomeSheetView\n        vc.isSlideToDismissDisabled = isSlideToDismissDisabled\n        \n        if let userInterfaceStyle {\n            vc.overrideUserInterfaceStyle = userInterfaceStyle\n        }\n        \n        return vc\n    }\n    \n    func updateUIViewController(_ uiViewController: ModalWelcomeSheetUIViewController, context: UIViewControllerRepresentableContext<ModalWelcomeSheetUIViewControllerRepresentable>) {\n        if show {\n            uiViewController.show()\n        } else {\n            uiViewController.dismiss(animated: true)\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/Views/WelcomeSheetPageView.swift",
    "content": "//\n//  WelcomeSheetPageView.swift\n//\n//\n//  Created by Jakub Florek on 27/11/2021.\n//\n\nimport SwiftUI\n\nstruct WelcomeSheetPageView: View {\n    let page: WelcomeSheetPage\n    let restPages: [WelcomeSheetPage]\n    let onDismiss: () -> Void\n    \n    let isiPad = UIDevice.current.userInterfaceIdiom == .pad\n    \n    @State private var optionalView: AnyView?\n    \n    var body: some View {\n        VStack(spacing: 0) {\n            ScrollView {\n                VStack(spacing: iPhoneDimensions.spacing) {\n                    HStack {\n                        Spacer()\n                        \n                        if #available(iOS 15.0, *) {\n                            Text(page.title)\n                                .font(.largeTitle)\n                                .fontWeight(.bold)\n                                .lineSpacing(8)\n                                .multilineTextAlignment(.center)\n                                .padding(.top, iPhoneDimensions.topPadding - (isiPad ? 15 : 0))\n                                .fixedSize(horizontal: false, vertical: true)\n                                .accessibilityHeading(.h1)\n                        } else {\n                            Text(page.title)\n                                .font(.largeTitle)\n                                .fontWeight(.bold)\n                                .lineSpacing(8)\n                                .multilineTextAlignment(.center)\n                                .padding(.top, iPhoneDimensions.topPadding - (isiPad ? 15 : 0))\n                                .fixedSize(horizontal: false, vertical: true)\n                        }\n                        \n                        Spacer()\n                    }\n                    \n                    VStack(alignment: .midIcons, spacing: 30) {\n                        ForEach(page.rows) { row in\n                            HStack(spacing: 17.5) {\n                                row.image\n                                    .renderingMode(.template)\n                                    .resizable()\n                                    .scaledToFit()\n                                    .foregroundColor(row.accentColor ?? Color.accentColor)\n                                    .frame(width: 37, height: 37)\n                                    .alignmentGuide(.midIcons) { d in d[HorizontalAlignment.center] }\n                                    .accessibility(hidden: true)\n                                \n                                VStack(alignment: .leading, spacing: 2) {\n                                    Text(row.title)\n                                        .font(.headline)\n                                        .lineLimit(2)\n                                        .fixedSize(horizontal: false, vertical: true)\n                                    \n                                    Text(row.content)\n                                        .font(.subheadline)\n                                        .foregroundColor(.secondary)\n                                        .fixedSize(horizontal: false, vertical: true)\n                                }\n                                \n                                Spacer()\n                            }\n                            .padding(.horizontal, 20 + iPhoneDimensions.horizontalPaddingAddend)\n                            .accessibilityElement(children: .combine)\n                        }\n                    }\n                }\n                .padding(.horizontal)\n                .padding(.horizontal, isiPad ? 45 : 0)\n            }\n            .scrollOnlyOnOverflow()\n            \n            VStack(spacing: 5) {\n                if page.isShowingOptionalButton {\n                    if let optionalButtonTitle = page.optionalButtonTitle {\n                        Button(optionalButtonTitle) {\n                            if let view = page.optionalButtonView {\n                                optionalView = view\n                            } else if let action = page.optionalButtonAction {\n                                action()\n                            } else if let url = page.optionalButtonURL {\n                                UIApplication.shared.open(url)\n                            }\n                        }\n                        .buttonStyle(PlainButtonStyle())\n                        .font(Font.headline.weight(.medium))\n                        .foregroundColor(page.accentColor ?? Color.accentColor)\n                        .padding(.top)\n                    }\n                }\n                \n                if let nextPage = restPages.first {\n                    NavigationLink {\n                        WelcomeSheetPageView(page: nextPage, restPages: restPages.filter({ $0.id != nextPage.id }), onDismiss: onDismiss)\n                    } label: {\n                        ZStack {\n                            page.accentColor ?? Color.accentColor\n                            \n                            Text(page.mainButtonTitle)\n                                .font(.headline)\n                                .foregroundColor(.white)\n                                .padding()\n                        }\n                        .frame(width: isiPad ? iPadSheetDimensions.width / 1.7 : nil)\n                        .fixedSize(horizontal: false, vertical: true)\n                        .clipShape(RoundedRectangle(cornerRadius: 15, style: .continuous))\n                    }\n                    .buttonStyle(PlainButtonStyle())\n                    .padding(.horizontal, 10)\n                    .padding(.top)\n                } else {\n                    Button {\n                        onDismiss()\n                    } label: {\n                        ZStack {\n                            page.accentColor ?? Color.accentColor\n                            \n                            Text(page.mainButtonTitle)\n                                .font(.headline)\n                                .foregroundColor(.white)\n                                .padding()\n                        }\n                        .frame(width: isiPad ? iPadSheetDimensions.width / 1.7 : nil)\n                        .fixedSize(horizontal: false, vertical: true)\n                        .clipShape(RoundedRectangle(cornerRadius: 15, style: .continuous))\n                    }\n                    .buttonStyle(PlainButtonStyle())\n                    .padding(.horizontal, 10)\n                    .padding(.top)\n                }\n            }\n            .padding(.horizontal, 15 + iPhoneDimensions.horizontalPaddingAddend)\n            .padding(.bottom, 60)\n            .sheet(item: $optionalView) { view in\n                view.edgesIgnoringSafeArea(.all)\n            }\n        }\n        .background(\n            page.backgroundColor.edgesIgnoringSafeArea(.all)\n        )\n        .edgesIgnoringSafeArea(.top)\n    }\n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/Views/WelcomeSheetView.swift",
    "content": "//\n//  WelcomeSheetView.swift\n//\n//\n//  Created by Jakub Florek on 27/11/2021.\n//\n\nimport SwiftUI\n\npublic struct WelcomeSheetView: View {\n    var pages: [WelcomeSheetPage]\n    var onDismiss: () -> Void\n    \n    public var body: some View {\n        NavigationView {\n            if let firstPage = pages.first {\n                WelcomeSheetPageView(page: firstPage, restPages: pages.filter({ $0.id != firstPage.id }), onDismiss: onDismiss)\n                    .navigationBarTitle(Text(\"\"), displayMode: .inline)\n                    .navigationBarHidden(true)\n            }\n        }\n        .navigationViewStyle(StackNavigationViewStyle())\n    }\n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/WelcomeSheet.swift",
    "content": "//\n//  WelcomeSheet.swift\n//\n//\n//  Created by Jakub Florek on 27/11/2021.\n//\n\nimport SwiftUI\n \nstruct WelcomeSheet: ViewModifier {\n    @Binding var showSheet: Bool\n    \n    let pages: [WelcomeSheetPage]\n    let onDismiss: () -> Void\n    let isSlideToDismissDisabled: Bool\n    let preferredColorScheme: ColorScheme?\n\n    func body(content: Content) -> some View {\n        content\n            .background(ModalWelcomeSheetUIViewControllerRepresentable(show: showSheet, isSlideToDismissDisabled: isSlideToDismissDisabled, preferredColorScheme: preferredColorScheme, welcomeSheetView: WelcomeSheetView(pages: pages, onDismiss: getOnDismiss())))\n    }\n    \n    func getOnDismiss() -> () -> Void {\n        return {\n            showSheet = false\n            onDismiss()\n        }\n    }\n}\n\npublic extension View {\n    /// Presents Welcome Sheet with given pages when a binding to a Boolean value that you provide is true.\n    func welcomeSheet(isPresented showSheet: Binding<Bool>, onDismiss: @escaping () -> Void = {}, isSlideToDismissDisabled: Bool = false, preferredColorScheme: ColorScheme? = nil, pages: [WelcomeSheetPage]) -> some View {\n        modifier(WelcomeSheet(showSheet: showSheet, pages: pages, onDismiss: onDismiss, isSlideToDismissDisabled: isSlideToDismissDisabled, preferredColorScheme: preferredColorScheme))\n    }\n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/WelcomeSheetController.swift",
    "content": "//\n//  WelcomeSheetController.swift\n//  \n//\n//  Created by Kevin Romero Peces-Barba on 2/10/22.\n//\n\nimport UIKit\n\nopen class WelcomeSheetController: ModalWelcomeSheetUIHostingController {\n    /// Pages of the sheet.\n    public var pages: [WelcomeSheetPage] = [] {\n        didSet {\n            rootView.pages = pages\n        }\n    }\n    \n    /// Closure called on dismissal of the sheet.\n    public var onDismiss: (() -> Void)?\n    \n    /// Creates Welcome Sheet controller without pages and onDismiss action.\n    public init() {\n        super.init(rootView: WelcomeSheetView(pages: [], onDismiss: {}))\n        rootView.onDismiss = getOnDismiss(with: didDismiss)\n    }\n    \n    /// Creates Welcome Sheet controller with given pages and onDismiss action.\n    public init(pages: [WelcomeSheetPage], isSlideToDismissDisabled: Bool = false, onDismiss: @escaping () -> Void = {}) {\n        super.init(rootView: WelcomeSheetView(pages: pages, onDismiss: {}))\n        self.onDismiss = onDismiss\n        rootView.onDismiss = getOnDismiss(with: didDismiss)\n        \n        self.pages = pages\n        self.isModalInPresentation = isSlideToDismissDisabled\n    }\n    \n    required public init?(coder: NSCoder) {\n        super.init(rootView: WelcomeSheetView(pages: [], onDismiss: {}))\n        rootView.onDismiss = getOnDismiss(with: didDismiss)\n    }\n    \n    open func didDismiss() {\n        self.onDismiss?()\n    }\n}\n"
  },
  {
    "path": "Sources/WelcomeSheet/WelcomeSheetStoryboardController.swift",
    "content": "//\n//  WelcomeSheetController.swift\n//\n//\n//  Created by Eskil Gjerde Sviggum on 29/01/2023.\n//\n\nimport UIKit\nimport SwiftUI\n\n@objc\npublic protocol WelcomeSheetDelegate: AnyObject {\n    @objc\n    optional func welcomeSheetController(didDismiss welcomeSheetController: UIViewController)\n    \n    @objc\n    optional func welcomeSheetController(pages welcomeSheetController: UIViewController) -> [UIWelcomeSheetPage]\n}\n\nopen class WelcomeSheetStoryboardController: ModalWelcomeSheetUIHostingController {\n    \n    @IBOutlet weak public var delegate: WelcomeSheetDelegate?\n    \n    /// Pages of the sheet.\n    @IBOutlet\n    public var pages: [UIWelcomeSheetPage] = [] {\n        didSet {\n            rootView.pages = pages.map { $0.welcomeSheetPage() }\n        }\n    }\n    \n    /// Closure called on dismissal of the sheet.\n    public var onDismiss: (() -> Void)?\n    \n    /// Creates Welcome Sheet controller without pages and onDismiss action.\n    public init() {\n        super.init(rootView: WelcomeSheetView(pages: [], onDismiss: {}))\n        rootView.onDismiss = getOnDismiss(with: didDismiss)\n    }\n    \n    /// Creates Welcome Sheet controller with given pages and onDismiss action.\n    public init(pages: [UIWelcomeSheetPage], isSlideToDismissDisabled: Bool = false, onDismiss: @escaping () -> Void = {}) {\n        super.init(rootView: WelcomeSheetView(pages: pages.map { $0.welcomeSheetPage() }, onDismiss: {}))\n        self.onDismiss = onDismiss\n        rootView.onDismiss = getOnDismiss(with: didDismiss)\n        \n        self.pages = pages\n        self.isModalInPresentation = isSlideToDismissDisabled\n    }\n    \n    required public init?(coder: NSCoder) {\n        super.init(rootView: WelcomeSheetView(pages: [], onDismiss: {}))\n        rootView.onDismiss = getOnDismiss(with: didDismiss)\n    }\n    \n    public override func viewDidLoad() {\n        if let pages = delegate?.welcomeSheetController?(pages: self) {\n            self.pages = pages\n        } else {\n            rootView.pages = pages.map { $0.welcomeSheetPage() }\n        }\n    }\n    \n    open func didDismiss() {\n        delegate?.welcomeSheetController?(didDismiss: self)\n        self.onDismiss?()\n    }\n}\n"
  }
]