diff --git a/README.md b/README.md index 8a271bf6..15252097 100644 --- a/README.md +++ b/README.md @@ -30,8 +30,9 @@ Parabeac-Core is an open-source repository that converts design files into Flutt If you have any trouble with getting Parabeac-Core running, check out this video! [![Parabeac-Core Getting Started](https://img.youtube.com/vi/e4CJgPMNCyo/0.jpg)](https://www.youtube.com/watch?v=e4CJgPMNCyo&feature=youtu.be) +Development on Windows is possible, too. However, [this requires some setup](WINDOWS_SETUP.md). -Parabeac currently supports conversions from [Sketch](https://www.sketch.com) but is designed to support more platforms in the future. +Parabeac-Core now supports both [Figma](https://www.figma.com/) and [Sketch](https://www.sketch.com)! We have plans to expand in the future as Parabeac-Core is built to support more platforms by design. ### Dependencies @@ -40,7 +41,9 @@ Parabeac currently supports conversions from [Sketch](https://www.sketch.com) bu - [node.js](https://nodejs.org/en/download/) - MacOS + Xcode or Android Studio -To test out a Sketch file feel free to download [this Sketch file](https://drive.google.com/file/d/10ZdTTUCFLrGJ-1oVmapWoH5HCe87Sz4e/view?usp=sharing)! +Need a file to test with? Feel free to download one of our sample design files below (Make sure to duplicate the Design to your account if you're using Figma): +* [Sketch](https://drive.google.com/file/d/10ZdTTUCFLrGJ-1oVmapWoH5HCe87Sz4e/view?usp=sharing) +* [Figma](https://www.figma.com/file/zXXWPWb5wJXd0ImGUjEU1X/parabeac_demo_alt?node-id=0%3A156) ## Cloning the Repo Because parabeac-core contains the Sketch-Asset-Converter submodule, it is easier to clone the repo using the following command: @@ -63,6 +66,9 @@ For more information about git submodules, click [here](https://git-scm.com/book ## Running the conversion +We currently support both Sketch and Figma. See below for running the conversion for both Sketch and Figma. + +### Sketch Follow these steps in order to run Parabeac Core on your local environment: 1. Clone PBCore repo in order to get the code on your machine 2. If you have any plugins make sure to put the plugins in the plugin folder @@ -72,6 +78,28 @@ Follow these steps in order to run Parabeac Core on your local environment: $ pub install $ dart parabeac.dart -p -n ``` +### Figma +1. Clone PBCore repo in order to get the code on your machine +2. If you have any plugins make sure to put the plugins in the plugin folder +3. In your terminal change directory to the root PBCore directory and run: + +``` bash + $ pub install + $ dart parabeac.dart -f -k -o +``` +If you're wondering about where to find your Figma File ID or Figma API Key Please Read Below: +#### Figma File ID and API Key +Since Figma operates from a cloud native approach we use the Figma File ID and a Figma User API Key in order to pull down your figma designs and run the conversion. Your Figma File ID is a unique ID used to identify your specific Figma File amoungst all other Figma Design Files. Your Figma API Key is a custom key assigned to your figma account that you generate in order to give Parabeac Core the ability to pull down your Figma File. +**In order to find your Figma File ID do the following:** +1. Go to your Figma Homepage at www.Figma.com +2. Select your Design File +3. Within your design File's URL is your Figma File ID. Simply take the value after Figma.com/file/. So in the URL ```https://www.figma.com/file/zXXWPWb5wJXd0ImGUjEU1X/parabeac_demo_alt?node-id=0%3A156``` the Figma File ID is ```zXXWPWb5wJXd0ImGUjEU1X``` + +**In order to create a Figma API Token do the following:** +1. Go to your Figma Homepage at www.Figma.com +2. Navigate to your user Profile +3. Scroll Down to the "Create a new Personal Access Token" +4. Create a new Personal Access Token with the name Parabeac, you should then be prompted with your new API Key. Make sure to copy this as you wont be able to access it again after you click confirm. (It should look something like this: ```64522-a0e5509a-d5ce-47a8-880b-c295f9cb27ed``` ## Metrics Parabeac-core keeps track of how many times it is run. Although we do not collect any personal information, you can turn off metrics at any time by creating the environment variable `PB_METRICS = "false"`. diff --git a/WINDOWS_SETUP.md b/WINDOWS_SETUP.md new file mode 100644 index 00000000..94afdeeb --- /dev/null +++ b/WINDOWS_SETUP.md @@ -0,0 +1,181 @@ +# Parabeac-Core setup for Windows +To get starting with using or developing the source code on Windows some configuration is required. This document is meant to help users with that. + +## Setup using WSL 2 +One of the ways we can get starting with Parabeac-Core on Windows is by utilizing the Windows Subset for Linux version 2. This allows Windows 10 users to utilize the most of linux and to combine this with the Windows workflow. This prevents overhead that comes with solutions like a VM or dualboot. To learn more about WSL 2 you can visit [this page](https://docs.microsoft.com/en-us/windows/wsl/about). + +## Index +- [Requirements](#Requirements) +- [Installing WSL 2](#Installing-WSL-2) +- [Ubunutu setup](#Ubunutu-setup) +- [Flutter install](#Flutter-install) +- [Cloning Parabeac-core](#Cloning-Parabeac-core) +- [(Optional) Fix NPM](#(Optional)-Fix-NPM) +- [(Optional) Install VS-Code and WSL 2 extension](#(Optional)-Install-VS-Code-and-WSL-2-extension) +- [(Optional) Android emulation](#(Optional)-Android-emulation) + +### Requirements +Although WSL is supported on most Windows installations, there are still some requirements that need to be met before we can continue: +- For x64: + - At least Windows version 1903 with at least build 18362 + +Although WSL 2 is supported on ARM64 we'll only focus on x64. + +### Installing WSL 2 +To summarize the first step, we first need to activate WSL 1 and then update it to version 2. Follow these steps: +1. First we need to enable WSL. Open up an elevated PowerShell instance and execute the following command: `dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart` + +2. Next we need to enable the virtual machine platform. Execute this PowerShell command: `dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart` + +3. **Now, restart your device!** This is required to finish the installation of WSL. + +4. After restarting, download and install the [WSL2 linux kernel update](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi). + +5. Execute this PowerShell command: `wsl --set-default-version 2` This makes WSL 2 the default version for further usage. This may take some minutes. + +6. WSL 2 is now enabled. Next we need a linux distro. You could choose some of your choice from the Windows Store, but for this guide we'll use the Ubuntu, [download this distro](https://www.microsoft.com/nl-nl/p/ubuntu/9nblggh4msv6). + + +### Ubunutu setup +Next, ubunutu requires some setup. +1. Boot up Ubuntu. It will install some things, let it finish +2. Next choose an username, password and reconfirm your password. +3. Lastly let's update our distro. Execute the following commands: `sudo apt-get upgrade` and `sudo apt-get update` + +### Flutter install +Parabeac-core is built in Dart and generates Flutter apps, which make use of Dart and the Android SDK. The Android SDK itself requires the Java JDK. Let's install all of this. +1. First let's make a download folder: `mkdir downloads` and move into it: `cd downloads`. + +2. Then download the OpenJDK 8. Recommended is visiting [AdoptOpenJDK.net](https://adoptopenjdk.net/releases.html?variant=openjdk8&jvmVariant=hotspot) and copying the download url by right clicking the **JDK** `.tar.gz` download button and then copy. Then type `sudo wget [url]`. You can past the url you copied by right clicking in the console and execute it. + +3. Extract the JDK: `sudo tar -xvzf [downloadedJdk.tar.gz]` By typing `O` and then pressing tab you can autocomplete the name of the downloaded file. + +4. Next, lets move the JDK to a more permanent place: `sudo mv [extractionName] /opt/openJDK`. extractionName is the folder name to where the downloaded file is extracted. You can find this with the `ls` command. + +5. Next up: the Android SDK. Google provides a command line tool to download android development software, so we'll make use of that. The download url can be found on the [Android Developers site](https://developer.android.com/studio). Scroll to the bottom to "Command line tools only", click the link of Linux, read and accept the terms and copy the url by right clicking the download button and copy. Then back in Ubuntu execute the following: `sudo wget [downloadUrl]`. + +6. We got another zip, but this time a `.zip` file. For this, we need a new package: `sudo apt-get install unzip`. + +7. Then extract the download: `sudo unzip [downloadedFile.zip]` + +8. And move it to a permanent place: `sudo mkdir --parents ~/Android/Sdk/cmdline-tools; sudo mv tools ~/Android/Sdk/cmdline-tools/tools` + +9. To make the JDK and android command line tools available throughout the distro we'll need to make it findable. We can do this by adding a few lines to the `.bashrc` file. Open the file: `sudo nano ~/.bashrc` + +10. Add the following lines to the file: +```bashrc +export DART=/home/roel/snap/flutter/common/flutter/bin +export ANDROID_SDK_ROOT=/home/[your selected ubuntu username]/Android/Sdk +export JAVA_HOME=/opt/openJDK +export PATH=$PATH:$ANDROID_SDK_ROOT/build-tools +export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools +export PATH=$PATH:$ANDROID_SDK_ROOT/emulators +export PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/tools/bin +export PATH=$PATH:$DART +``` + +Exit out of nano with `CTRL-x & CTRL-y`. + +11. At this point we'd be required to restart our Ubuntu machine. But since we're use WSL 2 we can just restart our distro instance. Close the app, and re-open it. + +If everything went correctly we now can use the command line tools. +Next, we need the build tools. The choice we make here will determine the Android version the Parabeac-core Flutter app will target. If you choose to debug using the emulator we'll install later on, you can follow the following instructions. But if you want to do this on your own device you'll need to select an API level that supports your device. You can do that on [this page](https://developer.android.com/studio/releases/platforms). You'll need to replace the API version numbers we'll use in the following commands with the one your device supports. You can look up the versions with `sdkmanager --list` + +13. For our commands to succeed we need to give write access to the folder, execute `sudo chmod -R a+w ~/Android/Sdk` + +14. Now install the SDK and build-tools: `sdkmanager "platforms;android-30" "build-tools;30.0.2"` Optionally replace the version number with your API level. + +15. And for debugging later on, we need the platform tools: `sdkmanager "platform-tools"` + +Now, time for Flutter. Flutter uses the snap package manager, sadly this doesn't work in WSL 2 out of the box because of an issue with systemd at time of writing. So, let's fix it first! + +16. Move back to your home: `cd ~/` and make a repos folder `mkdir repos` + +17. Clone our fix: `git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git` and move into it `cd ubuntu-wsl2-systemd-script/` + +18. Run the script: `sudo bash ubuntu-wsl2-systemd-script.sh` + +19. Lastly, run these scripts `cmd.exe /C setx WSLENV BASH_ENV/u` and `cmd.exe /C setx BASH_ENV /etc/bash.bashrc` + +20. Now we need to restart Ubuntu by closing and re-opening the app. + +21. Finally, test if snap works: `snap --version` This should return the version numbers of the snap components. If it hangs it means snap isn't yet working correctly. + +22. Now, install Flutter: `sudo snap install flutter --classic` This could take some time! + +23. Now initialize Flutter: `flutter doctor` This, again, could take some time! + +24. If this went correctly Flutter should state that you need to accept the Android licenses, so, do that: `flutter doctor --android-licenses` Read the terms and accept each of them by entering `y` + +### Cloning Parabeac-core +With all of this done, we can now get started with Parabeac-core. +Let's get started: + +1. Move back into your repo folder: `cd ~/repos` + +2. Clone Parabeac-core: `git clone --recurse-submodules https://github.com/Parabeac/Parabeac-Core.git` + +3. Move into Parabeac-core: `cd Parabeac-core` and restore packages `flutter pub get` + +4. Parabeac makes use of Node.js to restore NPM packages during a project build. So let's install Node: `curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -` and then `sudo apt-get install -y nodejs` + +And there we have it! Congratulations, we've installed: +- Ubuntu +- WSL 2 +- Java OpenJDK 8 +- Android command line tools +- Android build tools +- Android platform SDK +- Android platform tools +- Flutter +- Dart +- Node.js + +And now have a Parabeac-core repo ready for usage/development! + +### (Optional) Fix NPM +When you run parabeac to generate a project it tries to restore NPM packages. However, an error could occur. This probably because you have Node installed both on Windows and WSL 2. A solution: remove the ocation of the Windows installation from your Windows path. + +1. Open Windows search and open "Edit the system environment variables" + +2. Click on "Environment variables". + +3. Select the "Path" variable under user variables. + +4. Check if there's a reference to node or npm. Try temporarily removing this. + +5. Repeat from step 3, but then under system variables. + +6. Restart the Ubuntu distro + + +### (Optional) Install VS-Code and WSL 2 extension +A recommended code editor is Visual Studio Code. This program provides an extension to link the Windows VSCode installation with code from WSL 2. + +1. [Download and install VSCode.](https://code.visualstudio.com/) + +2. Next, download and install the [Remote - WSL](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl) extension. + +3. After this is done, go back to Ubuntu. Move into your repo `cd ~/repos/Parabeac-core` and open VSCode by executing: `code .` This opens VSCode in Windows, with a link to WSL 2. You can now program in Windows, and commit in WSL. + +### (Optional) Android emulation +Parabeac generates a Flutter project for Android. Now, we could build this project to an APK and push it to a device. Or we could emulate it. +By installing Android Studio with the emulator component and some ADB tricks we can emulate our generated project which resides in WSL 2 in an Android Studio emulator which runs on Windows! + +1. Let's first download and install [Android Studio](https://developer.android.com/studio) for Windows. Make sure you select the emulator component during installation! + +2. Start Android studio, but stop at the project selection screen. Here we go into `Configure -> AVD Manager`. + +3. There should be a default emulator already present, named `Pixel_3a_API_30_x86`. This could differ slightly in device name and API level. Start this emulator. + +4. Move with a Windows command line into the Android platform-tools folder which was installed by Android Studio: `cd %LocalAppData%/Android/Sdk/platform-tools` + +5. Next, kill any running adb instances: `adb kill-server` and then start it again `adb -a nodaemon server start` It will ask to define the firewall rule. Make sure to select **Public** here, since the network adapter to WSL 2 belongs in the public profile! + +6. Go back to the Ubuntu terminal, we need to set some env variables: `export WSL_HOST=$(tail -1 /etc/resolv.conf | cut -d' ' -f2)` and `export ADB_SERVER_SOCKET=tcp:$WSL_HOST:5037` + +7. Install socat: `sudo apt-get install socat` and then use socat to relay WSL2 adb requests to Windows: `socat -d -d TCP-LISTEN:5037,reuseaddr,fork TCP:$(cat /etc/resolv.conf | tail -n1 | cut -d " " -f 2):5037` + +8. Open up a new instance of the Ubuntu terminal. Now, if you search for adb devices, the emulator should pop up there `adb devices`. + +With this, you can now push the Flutter project to your emulator. This should be confirmed by the doctor tool: `flutter doctor` diff --git a/lib/APICaller/api_call_service.dart b/lib/APICaller/api_call_service.dart new file mode 100644 index 00000000..6248856b --- /dev/null +++ b/lib/APICaller/api_call_service.dart @@ -0,0 +1,92 @@ +import 'dart:convert'; +import 'dart:async'; +import 'dart:io'; +import 'package:http2/http2.dart'; +import 'package:quick_log/quick_log.dart'; + +import 'api_exceptions.dart'; + +class APICallService { + APICallService(); + static var log = Logger('API Call Service'); + + /// Makes a GET call to figma using `url` and `token` + static Future makeAPICall(String url, String token) async { + var response; + var uri = Uri.parse(url); + + /// The following request must be done using http2. The reason is + /// that the Figma API enforces http2, so using regular http will + /// not work. + try { + var transport = ClientTransportConnection.viaSocket( + await SecureSocket.connect( + uri.host, + uri.port, + supportedProtocols: ['h2'], + ), + ); + + var stream = transport.makeRequest( + [ + Header.ascii(':method', 'GET'), + Header.ascii( + ':path', uri.path + (uri.query.isEmpty ? '' : '?${uri.query}')), + Header.ascii(':scheme', uri.scheme), + Header.ascii(':authority', uri.host), + Header.ascii('x-figma-token', token), + ], + endStream: true, + ); + + final buffer = StringBuffer(); + await for (var message in stream.incomingMessages) { + if (message is HeadersStreamMessage) { + for (var header in message.headers) { + var name = utf8.decode(header.name); + var value = utf8.decode(header.value); + // print('Header: $name: $value'); + if (name == ':status') { + _returnResponse(int.parse(value)); + break; + } + } + } else if (message is DataStreamMessage) { + // Use [message.bytes] (but respect 'content-encoding' header) + buffer.write(utf8.decode(message.bytes)); + } + } + await transport.finish(); + var map = buffer.toString(); + response = json.decode(map); + return response; + } catch (e) { + print(e); + } + } + + static dynamic _returnResponse(int status) { + switch (status) { + case 200: + // TODO: Only print when verbose flag is active + // log.debug('API call went successfully : ${status}'); + break; + case 400: + log.error('BadRequestException : ${status}'); + throw BadRequestException(); + break; + case 401: + case 403: + log.error('UnauthorizedException : ${status}'); + throw UnauthorisedException(); + break; + case 500: + default: + log.error( + 'Error occured while Communication with Server with StatusCode : ${status}'); + throw FetchDataException( + 'Error occured while Communication with Server with StatusCode : ${status}'); + break; + } + } +} diff --git a/lib/APICaller/api_exceptions.dart b/lib/APICaller/api_exceptions.dart new file mode 100644 index 00000000..1f00fc15 --- /dev/null +++ b/lib/APICaller/api_exceptions.dart @@ -0,0 +1,25 @@ +class APIException implements Exception { + final _message; + final _prefix; + APIException([this._message, this._prefix]); + String toString() { + return "$_prefix$_message"; + } +} + +class FetchDataException extends APIException { + FetchDataException([String message]) + : super(message, "Error During Communication: "); +} + +class BadRequestException extends APIException { + BadRequestException([message]) : super(message, "Invalid Request: "); +} + +class UnauthorisedException extends APIException { + UnauthorisedException([message]) : super(message, "Unauthorised: "); +} + +class InvalidInputException extends APIException { + InvalidInputException([String message]) : super(message, "Invalid Input: "); +} diff --git a/lib/controllers/controller.dart b/lib/controllers/controller.dart new file mode 100644 index 00000000..0ef36e28 --- /dev/null +++ b/lib/controllers/controller.dart @@ -0,0 +1,37 @@ +import 'package:quick_log/quick_log.dart'; +import 'dart:convert'; +import 'dart:io'; +import 'main_info.dart'; + +abstract class Controller { + ///SERVICE + var log = Logger('Controller'); + + Controller(); + + void convertFile( + var fileAbsPath, var projectPath, var configurationPath, var configType); + + void configure(var configurationPath, var configType) async { + Map configurations; + try { + if (configurationPath == null || configurationPath.isEmpty) { + configurations = MainInfo().defaultConfigs; + } else { + configurations = + json.decode(File(configurationPath).readAsStringSync()); + } + } catch (e, stackTrace) { + // await MainInfo().sentry.captureException( + // exception: e, + // stackTrace: stackTrace, + // ); + log.error(e.toString()); + } + + ///SET CONFIGURATION + // Setting configurations globally + MainInfo().configurations = configurations; + MainInfo().configurationType = configType; + } +} diff --git a/lib/controllers/figma_controller.dart b/lib/controllers/figma_controller.dart new file mode 100644 index 00000000..6dad7249 --- /dev/null +++ b/lib/controllers/figma_controller.dart @@ -0,0 +1,56 @@ +import 'package:parabeac_core/controllers/controller.dart'; +import 'package:parabeac_core/generation/flutter_project_builder/flutter_project_builder.dart'; +import 'package:parabeac_core/input/figma/entities/layers/frame.dart'; +import 'package:parabeac_core/input/figma/helper/figma_node_tree.dart'; +import 'package:quick_log/quick_log.dart'; + +import 'interpret.dart'; + +class FigmaController extends Controller { + ///SERVICE + @override + var log = Logger('FigmaController'); + + FigmaController(); + + @override + void convertFile(var jsonFigma, var outputPath, var configurationPath, + var configType) async { + configure(configurationPath, configType); + + var figmaNodeTree = await generateFigmaTree(jsonFigma, outputPath); + + figmaNodeTree = declareScaffolds(figmaNodeTree); + + Interpret().init(outputPath); + + var mainTree = await Interpret().interpretAndOptimize(figmaNodeTree); + + var fpb = + FlutterProjectBuilder(projectName: outputPath, mainTree: mainTree); + + fpb.convertToFlutterProject(); + } + + FigmaNodeTree generateFigmaTree(var jsonFigma, var projectname) { + try { + return FigmaNodeTree(projectname, jsonFigma); + } catch (e, stackTrace) { + print(e); + return null; + } + } + + /// This method was required for Figma, so we could + /// detect which `FigmaFrame` were Scaffolds or Containers + FigmaNodeTree declareScaffolds(FigmaNodeTree tree) { + for (var page in tree.pages) { + for (var item in page.getPageItems()) { + if (item.root is FigmaFrame) { + (item.root as FigmaFrame).isScaffold = true; + } + } + } + return tree; + } +} diff --git a/lib/controllers/interpret.dart b/lib/controllers/interpret.dart index 76eeeeab..7d01a335 100644 --- a/lib/controllers/interpret.dart +++ b/lib/controllers/interpret.dart @@ -2,10 +2,11 @@ import 'package:parabeac_core/controllers/main_info.dart'; import 'package:parabeac_core/design_logic/design_node.dart'; import 'package:parabeac_core/generation/generators/pb_widget_manager.dart'; import 'package:parabeac_core/generation/prototyping/pb_prototype_linker_service.dart'; -import 'package:parabeac_core/input/sketch/helper/sketch_node_tree.dart'; -import 'package:parabeac_core/input/sketch/helper/sketch_page.dart'; -import 'package:parabeac_core/input/sketch/helper/sketch_page_item.dart'; +import 'package:parabeac_core/input/helper/node_tree.dart'; +import 'package:parabeac_core/input/helper/page.dart'; +import 'package:parabeac_core/input/helper/page_item.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/inherited_scaffold.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/layouts/temp_group_layout_node.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/pb_shared_master_node.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; @@ -47,7 +48,7 @@ class Interpret { _interpret._pbPrototypeLinkerService = PBPrototypeLinkerService(); } - Future interpretAndOptimize(SketchNodeTree tree) async { + Future interpretAndOptimize(NodeTree tree) async { _pb_intermediate_tree = PBIntermediateTree(projectName); ///3rd Party Symbols @@ -58,7 +59,7 @@ class Interpret { } } - /// Main Sketch Pages + /// Main Pages if (tree.pages != null) { for (var i = 0; i < tree.pages?.length; i++) { _pb_intermediate_tree.groups.add((await _generateGroup(tree.pages[i]))); @@ -68,7 +69,7 @@ class Interpret { return _pb_intermediate_tree; } - Future _generateGroup(SketchPage group) async { + Future _generateGroup(Page group) async { var intermediateGroup = PBIntermediateGroup(group.name.toLowerCase()); var pageItems = group.getPageItems(); for (var i = 0; i < pageItems.length; i++) { @@ -81,10 +82,11 @@ class Interpret { } else { itemType = 'MISC'; } - log.fine( - 'Processed \'${item.name}\' in group \'${group.name}\' with item type: \'${itemType}\''); if (item != null) { + log.fine( + 'Processed \'${item.name}\' in group \'${group.name}\' with item type: \'${itemType}\''); + var newItem = PBIntermediateItem(item, itemType); ///Searching for the root item. @@ -97,22 +99,55 @@ class Interpret { return intermediateGroup; } - Future _generateScreen(SketchPageItem item) async { + Future _generateScreen(PageItem item) async { var currentContext = PBContext( jsonConfigurations: MainInfo().configurations ?? MainInfo().defaultConfigs); var parentComponent = item.root; - PBIntermediateNode parentVisualIntermediateNode; var stopwatch = Stopwatch()..start(); + /// VisualGenerationService + var parentVisualIntermediateNode = await _visualGenerationService( + parentComponent, currentContext, stopwatch); + + /// + /// pre-layout generation service for plugin nodes. + /// NOTE Disabled Plugin Control Service for right now + /// + var stopwatch1 = Stopwatch()..start(); + var parentPreLayoutIntermediateNode = await _pluginService( + parentVisualIntermediateNode, currentContext, stopwatch1); + + var stopwatch2 = Stopwatch()..start(); + + /// LayoutGenerationService + + var parentLayoutIntermediateNode = await _layoutGenerationService( + parentPreLayoutIntermediateNode, currentContext, stopwatch2); + + var stopwatch3 = Stopwatch()..start(); + + /// AlignGenerationService + var parentAlignIntermediateNode = await _alignGenerationService( + parentLayoutIntermediateNode, currentContext, stopwatch3); + + return parentAlignIntermediateNode; + } + + Future generateNonRootItem(DesignNode root) async { + var currentContext = PBContext( + jsonConfigurations: + MainInfo().configurations ?? MainInfo().defaultConfigs); + + PBIntermediateNode parentVisualIntermediateNode; + /// VisualGenerationService try { - parentVisualIntermediateNode = await PBVisualGenerationService( - parentComponent, - currentContext: currentContext) - .getIntermediateTree(); + parentVisualIntermediateNode = + await PBVisualGenerationService(root, currentContext: currentContext) + .getIntermediateTree(); } catch (e, stackTrace) { // await MainInfo().sentry.captureException( // exception: e, @@ -120,17 +155,9 @@ class Interpret { // ); log.error(e.toString()); } - // print( - // 'Visual Generation Service executed in ${stopwatch.elapsedMilliseconds} milliseconds.'); - stopwatch.stop(); - var stopwatch1 = Stopwatch()..start(); - - parentVisualIntermediateNode = - await _pbSymbolLinkerService.linkSymbols(parentVisualIntermediateNode); /// /// pre-layout generation service for plugin nodes. - /// NOTE Disabled Plugin Control Service for right now /// PBIntermediateNode parentPreLayoutIntermediateNode; try { @@ -144,12 +171,9 @@ class Interpret { // stackTrace: stackTrace, // ); log.error(e.toString()); - parentPreLayoutIntermediateNode = parentVisualIntermediateNode; + parentPreLayoutIntermediateNode = + parentVisualIntermediateNode; //parentVisualIntermediateNode; } - // print( - // 'Pre-Layout Service executed in ${stopwatch.elapsedMilliseconds} milliseconds.'); - stopwatch1.stop(); - var stopwatch2 = Stopwatch()..start(); PBIntermediateNode parentLayoutIntermediateNode; @@ -166,14 +190,7 @@ class Interpret { log.error(e.toString()); parentLayoutIntermediateNode = parentPreLayoutIntermediateNode; } - - parentLayoutIntermediateNode = await _pbPrototypeLinkerService - .linkPrototypeNodes(parentLayoutIntermediateNode); var parentAlignIntermediateNode; - // print( - // 'Layout Generation Service executed in ${stopwatch.elapsedMilliseconds} milliseconds.'); - stopwatch2.stop(); - var stopwatch3 = Stopwatch()..start(); /// AlignGenerationService try { @@ -189,25 +206,17 @@ class Interpret { log.error(e.toString()); parentAlignIntermediateNode = parentLayoutIntermediateNode; } - // print( - // 'Align Generation Service executed in ${stopwatch.elapsedMilliseconds} milliseconds.'); - stopwatch3.stop(); return parentAlignIntermediateNode; } - Future generateNonRootItem(DesignNode root) async { - var currentContext = PBContext( - jsonConfigurations: - MainInfo().configurations ?? MainInfo().defaultConfigs); - - PBIntermediateNode parentVisualIntermediateNode; - + Future _visualGenerationService( + var component, var context, var stopwatch) async { /// VisualGenerationService + PBIntermediateNode node; try { - parentVisualIntermediateNode = - await PBVisualGenerationService(root, currentContext: currentContext) - .getIntermediateTree(); + node = await PBVisualGenerationService(component, currentContext: context) + .getIntermediateTree(); } catch (e, stackTrace) { // await MainInfo().sentry.captureException( // exception: e, @@ -215,15 +224,18 @@ class Interpret { // ); log.error(e.toString()); } + // print( + // 'Visual Generation Service executed in ${stopwatch.elapsedMilliseconds} milliseconds.'); + stopwatch.stop(); + node = await _pbSymbolLinkerService.linkSymbols(node); + return node; + } - /// - /// pre-layout generation service for plugin nodes. - /// - PBIntermediateNode parentPreLayoutIntermediateNode; + Future _pluginService( + PBIntermediateNode parentnode, var context, var stopwatch1) async { + PBIntermediateNode node; try { - parentPreLayoutIntermediateNode = PBPluginControlService( - parentVisualIntermediateNode, - currentContext: currentContext) + node = PBPluginControlService(parentnode, currentContext: context) .convertAndModifyPluginNodeTree(); } catch (e, stackTrace) { // await MainInfo().sentry.captureException( @@ -231,32 +243,47 @@ class Interpret { // stackTrace: stackTrace, // ); log.error(e.toString()); - parentPreLayoutIntermediateNode = - parentVisualIntermediateNode; //parentVisualIntermediateNode; + node = parentnode; } + // print( + // 'Pre-Layout Service executed in ${stopwatch.elapsedMilliseconds} milliseconds.'); + stopwatch1.stop(); + return node; + } - PBIntermediateNode parentLayoutIntermediateNode; - - /// LayoutGenerationService + Future _layoutGenerationService( + PBIntermediateNode parentNode, var context, var stopwatch2) async { + PBIntermediateNode node; try { - parentLayoutIntermediateNode = - PBLayoutGenerationService(currentContext: currentContext) - .injectNodes(parentPreLayoutIntermediateNode); + node = PBLayoutGenerationService(currentContext: context) + .injectNodes(parentNode); } catch (e, stackTrace) { // await MainInfo().sentry.captureException( // exception: e, // stackTrace: stackTrace, // ); log.error(e.toString()); - parentLayoutIntermediateNode = parentPreLayoutIntermediateNode; + node = parentNode; + } + + node = await _pbPrototypeLinkerService.linkPrototypeNodes(node); + // print( + // 'Layout Generation Service executed in ${stopwatch.elapsedMilliseconds} milliseconds.'); + stopwatch2.stop(); + return node; + } + + Future _alignGenerationService( + PBIntermediateNode parentnode, var context, var stopwatch3) async { + PBIntermediateNode node; + + /// This covers a case where the designer created an empty group. This would cause an issue as there is nothing to align. + if (parentnode is TempGroupLayoutNode) { + return null; } - var parentAlignIntermediateNode; - /// AlignGenerationService try { - parentAlignIntermediateNode = PBAlignGenerationService( - parentLayoutIntermediateNode, - currentContext: currentContext) + node = PBAlignGenerationService(parentnode, currentContext: context) .addAlignmentToLayouts(); } catch (e, stackTrace) { // await MainInfo().sentry.captureException( @@ -264,9 +291,11 @@ class Interpret { // stackTrace: stackTrace, // ); log.error(e.toString()); - parentAlignIntermediateNode = parentLayoutIntermediateNode; + node = parentnode; } - - return parentAlignIntermediateNode; + // print( + // 'Align Generation Service executed in ${stopwatch.elapsedMilliseconds} milliseconds.'); + stopwatch3.stop(); + return node; } } diff --git a/lib/controllers/main_info.dart b/lib/controllers/main_info.dart index e71baa6d..0059f3c1 100644 --- a/lib/controllers/main_info.dart +++ b/lib/controllers/main_info.dart @@ -12,6 +12,8 @@ class MainInfo { /// Path to the user's sketch file String sketchPath; + String platform; + /// Current working directory; contains the path from where the script was called Directory cwd; Map configurations; @@ -25,6 +27,12 @@ class MainInfo { /// Name of the project String projectName; + /// API needed to do API callls + String figmaKey; + + /// Project ID on Figma + String figmaProjectID; + Map defaultConfigs = { 'default': { 'widgetStyle': 'Material', diff --git a/lib/controllers/sketch_controller.dart b/lib/controllers/sketch_controller.dart index 175e8573..dbfea3ac 100644 --- a/lib/controllers/sketch_controller.dart +++ b/lib/controllers/sketch_controller.dart @@ -1,24 +1,24 @@ +import 'dart:convert'; +import 'dart:io'; import 'package:archive/archive_io.dart'; +import 'package:parabeac_core/controllers/controller.dart'; import 'package:parabeac_core/controllers/interpret.dart'; import 'package:parabeac_core/generation/flutter_project_builder/flutter_project_builder.dart'; import 'package:parabeac_core/input/sketch/helper/sketch_node_tree.dart'; import 'package:parabeac_core/input/sketch/services/input_design.dart'; import 'package:quick_log/quick_log.dart'; -import 'dart:convert'; -import 'dart:io'; import 'main_info.dart'; -class SketchController { +class SketchController extends Controller { ///SERVICE + @override var log = Logger('SketchController'); - void initialize() { - ///Initialize services HERE - } ///Converting the [fileAbsPath] sketch file to flutter - void convertSketchFile( - var fileAbsPath, var projectPath, var configurationPath, var configType) async { + @override + void convertFile(var fileAbsPath, var projectPath, var configurationPath, + var configType) async { configure(configurationPath, configType); ///INTAKE @@ -38,30 +38,6 @@ class SketchController { fpb.convertToFlutterProject(); } - void configure(var configurationPath, var configType) async { - Map configurations; - try { - if (configurationPath == null || configurationPath.isEmpty) { - configurations = MainInfo().defaultConfigs; - - } else { - configurations = - json.decode(File(configurationPath).readAsStringSync()); - } - } catch (e, stackTrace) { - // await MainInfo().sentry.captureException( - // exception: e, - // stackTrace: stackTrace, - // ); - log.error(e.toString()); - } - - ///SET CONFIGURATION - // Setting configurations globally - MainInfo().configurations = configurations; - MainInfo().configurationType = configType; - } - SketchNodeTree generateSketchNodeTree( Archive archive, Map pagesAndArtboards, projectName) { try { diff --git a/lib/design_logic/artboard.dart b/lib/design_logic/artboard.dart index 9cf23336..b0b08e5e 100644 --- a/lib/design_logic/artboard.dart +++ b/lib/design_logic/artboard.dart @@ -1,9 +1,10 @@ +import 'package:parabeac_core/design_logic/color.dart'; import 'package:parabeac_core/design_logic/design_node.dart'; import 'package:parabeac_core/design_logic/group_node.dart'; import 'package:parabeac_core/design_logic/rect.dart'; abstract class PBArtboard extends DesignNode implements GroupNode { - var backgroundColor; + PBColor backgroundColor; PBArtboard(this.backgroundColor, UUID, String name, bool isVisible, Rect boundaryRectangle, String type, style, prototypeNode) : super(UUID, name, isVisible, boundaryRectangle, type, style, diff --git a/lib/design_logic/color.dart b/lib/design_logic/color.dart index 06a3bddc..85eb9521 100644 --- a/lib/design_logic/color.dart +++ b/lib/design_logic/color.dart @@ -1,5 +1,7 @@ -abstract class Color { - Color( +import 'package:hex/hex.dart'; + +abstract class PBColor { + PBColor( this.alpha, this.red, this.green, @@ -10,4 +12,21 @@ abstract class Color { double red; double green; double blue; + + toJson(); +} + +mixin PBColorMixin { + String toHex(PBColor color) { + if (color != null) { + int a, r, g, b; + a = ((color.alpha ?? 0) * 255).round(); + r = ((color.red ?? 0) * 255).round(); + g = ((color.green ?? 0) * 255).round(); + b = ((color.blue ?? 0) * 255).round(); + return '0x' + HEX.encode([a, r, g, b]); + } else { + return '0x' + HEX.encode([0, 0, 0, 0]); + } + } } diff --git a/lib/design_logic/design_node.dart b/lib/design_logic/design_node.dart index 52f7caf8..7f1f45bb 100644 --- a/lib/design_logic/design_node.dart +++ b/lib/design_logic/design_node.dart @@ -1,3 +1,4 @@ +import 'package:parabeac_core/design_logic/pb_style.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; @@ -17,8 +18,10 @@ abstract class DesignNode { bool isVisible; var boundaryRectangle; String type; - var style; + PBStyle style; String prototypeNodeUUID; + toJson(); + Future interpretNode(PBContext currentContext); } diff --git a/lib/design_logic/design_shape.dart b/lib/design_logic/design_shape.dart index 84b05fc0..d19b344e 100644 --- a/lib/design_logic/design_shape.dart +++ b/lib/design_logic/design_shape.dart @@ -1,7 +1,5 @@ -import 'package:json_annotation/json_annotation.dart'; import 'package:parabeac_core/design_logic/design_element.dart'; -@JsonSerializable() abstract class DesignShape extends DesignElement { DesignShape() : super(); } diff --git a/lib/design_logic/group_node.dart b/lib/design_logic/group_node.dart index 21b435ea..642f5026 100644 --- a/lib/design_logic/group_node.dart +++ b/lib/design_logic/group_node.dart @@ -1,6 +1,3 @@ -import 'package:json_annotation/json_annotation.dart'; - -@JsonSerializable(nullable: true) abstract class GroupNode { GroupNode( this.children, diff --git a/lib/design_logic/pb_border.dart b/lib/design_logic/pb_border.dart new file mode 100644 index 00000000..6d701e06 --- /dev/null +++ b/lib/design_logic/pb_border.dart @@ -0,0 +1,17 @@ +import 'color.dart'; + +abstract class PBBorder { + final bool isEnabled; + final double fillType; + final PBColor color; + final double thickness; + + PBBorder({ + this.isEnabled = true, + this.fillType, + this.color, + this.thickness, + }); + + toJson(); +} diff --git a/lib/design_logic/pb_border_options.dart b/lib/design_logic/pb_border_options.dart new file mode 100644 index 00000000..e3f383fa --- /dev/null +++ b/lib/design_logic/pb_border_options.dart @@ -0,0 +1,14 @@ +abstract class PBBorderOptions { + bool isEnabled; + List dashPattern; + int lineCapStyle, lineJoinStyle; + + PBBorderOptions({ + this.isEnabled, + this.dashPattern, + this.lineCapStyle, + this.lineJoinStyle, + }); + + toJson(); +} diff --git a/lib/design_logic/pb_fill.dart b/lib/design_logic/pb_fill.dart new file mode 100644 index 00000000..33861d56 --- /dev/null +++ b/lib/design_logic/pb_fill.dart @@ -0,0 +1,9 @@ +import 'package:parabeac_core/design_logic/color.dart'; + +abstract class PBFill { + PBColor color; + bool isEnabled; + PBFill(this.color, [this.isEnabled = true]); + + toJson(); +} diff --git a/lib/design_logic/pb_font_descriptor.dart b/lib/design_logic/pb_font_descriptor.dart new file mode 100644 index 00000000..a0d5bb55 --- /dev/null +++ b/lib/design_logic/pb_font_descriptor.dart @@ -0,0 +1,5 @@ +abstract class PBFontDescriptor { + Map rawAttributes; + String fontName; + num fontSize; +} diff --git a/lib/design_logic/pb_paragraph_style.dart b/lib/design_logic/pb_paragraph_style.dart new file mode 100644 index 00000000..e57b6243 --- /dev/null +++ b/lib/design_logic/pb_paragraph_style.dart @@ -0,0 +1,10 @@ +abstract class PBParagraphStyle { + int alignment; +} + +enum ALIGNMENT { + LEFT, + RIGHT, + CENTER, + JUSTIFY, +} diff --git a/lib/design_logic/pb_shared_instance_node.dart b/lib/design_logic/pb_shared_instance_design_node.dart similarity index 67% rename from lib/design_logic/pb_shared_instance_node.dart rename to lib/design_logic/pb_shared_instance_design_node.dart index d79bc7f8..df8f4cc4 100644 --- a/lib/design_logic/pb_shared_instance_node.dart +++ b/lib/design_logic/pb_shared_instance_design_node.dart @@ -1,10 +1,10 @@ import 'package:parabeac_core/design_logic/design_node.dart'; -abstract class PBSharedInstanceNodeDesign extends DesignNode { +abstract class PBSharedInstanceDesignNode extends DesignNode { String symbolID; List parameters; - PBSharedInstanceNodeDesign(String UUID, String name, bool isVisible, + PBSharedInstanceDesignNode(String UUID, String name, bool isVisible, boundaryRectangle, String type, style, prototypeNode) : super(UUID, name, isVisible, boundaryRectangle, type, style, prototypeNode); diff --git a/lib/design_logic/pb_shared_master_node.dart b/lib/design_logic/pb_shared_master_node.dart index 1feea798..a146011f 100644 --- a/lib/design_logic/pb_shared_master_node.dart +++ b/lib/design_logic/pb_shared_master_node.dart @@ -1,10 +1,10 @@ import 'package:parabeac_core/design_logic/design_node.dart'; -abstract class PBSharedMasterNodeDesign extends DesignNode { +abstract class PBSharedMasterDesignNode extends DesignNode { String symbolID; List overriadableProperties; - PBSharedMasterNodeDesign(String UUID, String name, bool isVisible, + PBSharedMasterDesignNode(String UUID, String name, bool isVisible, boundaryRectangle, String type, style, prototypeNode) : super(UUID, name, isVisible, boundaryRectangle, type, style, prototypeNode); diff --git a/lib/design_logic/pb_style.dart b/lib/design_logic/pb_style.dart new file mode 100644 index 00000000..3a488691 --- /dev/null +++ b/lib/design_logic/pb_style.dart @@ -0,0 +1,16 @@ +import 'package:parabeac_core/design_logic/color.dart'; +import 'package:parabeac_core/design_logic/pb_fill.dart'; +import 'package:parabeac_core/design_logic/pb_text_style.dart'; +import 'package:parabeac_core/design_logic/pb_border.dart'; +import 'package:parabeac_core/design_logic/pb_border_options.dart'; + +abstract class PBStyle { + PBColor backgroundColor; + List fills; + List borders; + PBBorderOptions borderOptions; + PBTextStyle textStyle; + + PBStyle({this.fills, this.backgroundColor}); + Map toJson(); +} diff --git a/lib/design_logic/pb_text_style.dart b/lib/design_logic/pb_text_style.dart new file mode 100644 index 00000000..ca30daba --- /dev/null +++ b/lib/design_logic/pb_text_style.dart @@ -0,0 +1,19 @@ +import 'package:parabeac_core/design_logic/color.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/design_logic/pb_font_descriptor.dart'; +import 'package:parabeac_core/design_logic/pb_paragraph_style.dart'; + +abstract class PBTextStyle { + PBColor fontColor; + String weight; + PBFontDescriptor fontDescriptor; + PBParagraphStyle paragraphStyle; + + PBTextStyle({ + this.fontColor, + this.weight, + this.paragraphStyle, + }); + + toJson(); +} diff --git a/lib/eggs/injected_app_bar.dart b/lib/eggs/injected_app_bar.dart index 71678c1d..a252665d 100644 --- a/lib/eggs/injected_app_bar.dart +++ b/lib/eggs/injected_app_bar.dart @@ -21,9 +21,10 @@ class InjectedNavbar extends PBEgg implements PBInjectedIntermediate { - InjectedNavbar(Point topLeftCorner, Point bottomRightCorner, this.UUID, + InjectedNavbar( + Point topLeftCorner, Point bottomRightCorner, this.UUID, String name, {this.currentContext}) - : super(topLeftCorner, bottomRightCorner, currentContext) { + : super(topLeftCorner, bottomRightCorner, currentContext, name) { generator = PBAppBarGenerator(); } @@ -66,7 +67,8 @@ class InjectedNavbar extends PBEgg implements PBInjectedIntermediate { @override PBEgg generatePluginNode( Point topLeftCorner, Point bottomRightCorner, originalRef) { - return InjectedNavbar(topLeftCorner, bottomRightCorner, UUID, + return InjectedNavbar( + topLeftCorner, bottomRightCorner, UUID, originalRef.name, currentContext: currentContext); } diff --git a/lib/eggs/injected_tab.dart b/lib/eggs/injected_tab.dart index 5ffcb14f..b8adadac 100644 --- a/lib/eggs/injected_tab.dart +++ b/lib/eggs/injected_tab.dart @@ -20,11 +20,13 @@ class Tab extends PBEgg implements PBInjectedIntermediate { Tab( Point topLeftCorner, - Point bottomRightCorner, { + Point bottomRightCorner, + String name, { UUID, this.currentContext, this.prototypeNode, - }) : super(topLeftCorner, bottomRightCorner, currentContext, UUID: UUID) { + }) : super(topLeftCorner, bottomRightCorner, currentContext, name, + UUID: UUID) { generator = PBTabGenerator(); } @@ -42,15 +44,20 @@ class Tab extends PBEgg implements PBInjectedIntermediate { var tab = Tab( topLeftCorner, bottomRightCorner, + originalRef.name, currentContext: currentContext, - UUID: Uuid().v4(), + UUID: originalRef != null && + originalRef.UUID != null && + originalRef.UUID.isNotEmpty + ? originalRef.UUID + : Uuid().v4(), prototypeNode: PrototypeNode(originalRef?.prototypeNodeUUID), ); if (originalRef is! AbstractGroupLayer) { - var sketchNode = _convertWrapper(originalRef); + var designNode = _convertWrapper(originalRef); ///Clean the node so that it doesn't get interpreted as a plugin again. - sketchNode.interpretNode(currentContext).then(tab.addChild); + designNode.interpretNode(currentContext).then(tab.addChild); } return tab; diff --git a/lib/eggs/injected_tab_bar.dart b/lib/eggs/injected_tab_bar.dart index 18653ca6..27dd2c5c 100644 --- a/lib/eggs/injected_tab_bar.dart +++ b/lib/eggs/injected_tab_bar.dart @@ -20,9 +20,10 @@ class InjectedTabBar extends PBEgg implements PBInjectedIntermediate { InjectedTabBar( Point topLeftCorner, Point bottomRightCorner, + String name, this.UUID, { this.currentContext, - }) : super(topLeftCorner, bottomRightCorner, currentContext) { + }) : super(topLeftCorner, bottomRightCorner, currentContext, name) { generator = PBTabBarGenerator(); } @@ -52,7 +53,8 @@ class InjectedTabBar extends PBEgg implements PBInjectedIntermediate { @override PBEgg generatePluginNode( Point topLeftCorner, Point bottomRightCorner, DesignNode originalRef) { - return InjectedTabBar(topLeftCorner, bottomRightCorner, UUID, + return InjectedTabBar( + topLeftCorner, bottomRightCorner, UUID, originalRef.name, currentContext: currentContext); } diff --git a/lib/generation/flutter_project_builder/flutter_project_builder.dart b/lib/generation/flutter_project_builder/flutter_project_builder.dart index ae074829..4739773f 100644 --- a/lib/generation/flutter_project_builder/flutter_project_builder.dart +++ b/lib/generation/flutter_project_builder/flutter_project_builder.dart @@ -15,8 +15,10 @@ import 'package:parabeac_core/interpret_and_optimize/entities/pb_shared_master_n import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_layout_intermediate_node.dart'; import 'package:parabeac_core/interpret_and_optimize/helpers/pb_gen_cache.dart'; -import 'package:parabeac_core/interpret_and_optimize/helpers/pb_intermediate_node_tree.dart'; import 'package:quick_log/quick_log.dart'; +import 'package:parabeac_core/interpret_and_optimize/helpers/pb_intermediate_node_tree.dart'; +import 'package:parabeac_core/input/figma/helper/image_helper.dart' + as image_helper; String pathToFlutterProject = '${MainInfo().outputPath}/temp/'; @@ -44,9 +46,13 @@ class FlutterProjectBuilder { void convertToFlutterProject({List rawImages}) async { try { - log.info(Process.runSync('flutter', ['create', '$projectName'], - workingDirectory: MainInfo().outputPath) - .stdout); + var createResult = Process.runSync('flutter', ['create', '$projectName'], + workingDirectory: MainInfo().outputPath); + if (createResult.stderr != null && createResult.stderr.isNotEmpty) { + log.error(createResult.stderr); + } else { + log.info(createResult.stdout); + } } catch (error, stackTrace) { await MainInfo().sentry.captureException( exception: error, @@ -74,6 +80,12 @@ class FlutterProjectBuilder { log.error(e.toString()); }); + if (MainInfo().figmaProjectID != null && + MainInfo().figmaProjectID.isNotEmpty) { + log.info('Processing remaining images...'); + await image_helper.processImageQueue(); + } + Process.runSync( '${MainInfo().cwd.path}/lib/generation/helperScripts/shell-proxy.sh', [ @@ -242,7 +254,7 @@ class FlutterProjectBuilder { (intermediateItem.node as InheritedScaffold).isHomeScreen) { var relPath = PBGenCache().getRelativePath( '${projectName}/lib/main.dart', intermediateItem.node.UUID); - pageWriter.writeMainScreenWithHome(intermediateItem.node.name, + await pageWriter.writeMainScreenWithHome(intermediateItem.node.name, '${projectName}/lib/main.dart', relPath); } diff --git a/lib/generation/generators/attribute-helper/pb_color_gen_helper.dart b/lib/generation/generators/attribute-helper/pb_color_gen_helper.dart index 0a3e1b04..8a135154 100644 --- a/lib/generation/generators/attribute-helper/pb_color_gen_helper.dart +++ b/lib/generation/generators/attribute-helper/pb_color_gen_helper.dart @@ -1,4 +1,5 @@ import 'package:parabeac_core/generation/generators/attribute-helper/pb_attribute_gen_helper.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/inherited_container.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/inherited_scaffold.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; @@ -24,9 +25,17 @@ class PBColorGenHelper extends PBAttributesHelper { if (source.color == null) { statement = ''; } else { - statement = findDefaultColor(source.color) != null - ? 'color: ${findDefaultColor(source.color)},' - : 'color: Color(${source.color}),\n'; + if (source is! InheritedContainer) { + statement = findDefaultColor(source.color) != null + ? 'color: ${findDefaultColor(source.color)},' + : 'color: Color(${source.color}),\n'; + } else if ((source as InheritedContainer).isBackgroundVisible) { + statement = findDefaultColor(source.color) != null + ? 'color: ${findDefaultColor(source.color)},' + : 'color: Color(${source.color}),\n'; + } else { + statement = ''; + } } return statement; } diff --git a/lib/generation/generators/attribute-helper/pb_size_helper.dart b/lib/generation/generators/attribute-helper/pb_size_helper.dart index aa1722d0..cf5034c8 100644 --- a/lib/generation/generators/attribute-helper/pb_size_helper.dart +++ b/lib/generation/generators/attribute-helper/pb_size_helper.dart @@ -33,16 +33,17 @@ class PBSizeHelper extends PBAttributesHelper { .abs(); } - height = (height != null && screenHeight != null && screenHeight != 0.0) + height = (height != null && screenHeight != null && screenHeight > 0.0) ? height / screenHeight : height; - width = (width != null && screenHeight != null && screenWidth != 0.0) + width = (width != null && screenWidth != null && screenWidth > 0.0) ? width / screenWidth : width; if (width != null) { if (source.topLeftCorner.x != null && - source.bottomRightCorner.x != null) { + source.bottomRightCorner.x != null && + screenWidth != null) { buffer.write( 'width : MediaQuery.of(context).size.width * ${width.toStringAsFixed(3)},'); } else { @@ -51,7 +52,8 @@ class PBSizeHelper extends PBAttributesHelper { } if (height != null) { if (source.topLeftCorner.y != null && - source.bottomRightCorner.y != null) { + source.bottomRightCorner.y != null && + screenHeight != null) { buffer.write( ' height : MediaQuery.of(context).size.height * ${height.toStringAsFixed(3)},'); } else { diff --git a/lib/generation/generators/pb_flutter_writer.dart b/lib/generation/generators/pb_flutter_writer.dart index 9898aee3..5825f5b2 100644 --- a/lib/generation/generators/pb_flutter_writer.dart +++ b/lib/generation/generators/pb_flutter_writer.dart @@ -19,34 +19,34 @@ class PBFlutterWriter implements PBPageWriter { /// Creates a new `main.dart` file that starts the Flutter application at /// `homeName` and adds the import from `main.dart` to `relativeImportPath`. - void writeMainScreenWithHome( - String homeName, String pathToMain, String relativeImportPath) { + Future writeMainScreenWithHome( + String homeName, String pathToMain, String relativeImportPath) async { var mainFile = File(pathToMain).openWrite(mode: FileMode.writeOnly); mainFile.write(''' - import 'package:flutter/material.dart'; - import '$relativeImportPath'; +import 'package:flutter/material.dart'; +import '$relativeImportPath'; - void main() { - runApp(MyApp()); - } +void main() { + runApp(MyApp()); +} - class MyApp extends StatelessWidget { - // This widget is the root of your application. - @override - Widget build(BuildContext context) { - return MaterialApp( - title: '${MainInfo().projectName ?? 'Parabeac-Core Generated Project'}', - theme: ThemeData( - primarySwatch: Colors.blue, - visualDensity: VisualDensity.adaptivePlatformDensity, - ), - home: ${homeName}(), - ); - } - } +class MyApp extends StatelessWidget { + // This widget is the root of your application. + @override + Widget build(BuildContext context) { + return MaterialApp( + title: '${MainInfo().projectName ?? 'Parabeac-Core Generated Project'}', + theme: ThemeData( + primarySwatch: Colors.blue, + visualDensity: VisualDensity.adaptivePlatformDensity, + ), + home: ${homeName}(), + ); + } +}'''); - '''); - mainFile.close(); + await mainFile.flush(); + await mainFile.close(); } void submitDependencies(String yamlAbsPath) async { diff --git a/lib/generation/generators/pb_generator.dart b/lib/generation/generators/pb_generator.dart index d59478e9..8b0baf3e 100644 --- a/lib/generation/generators/pb_generator.dart +++ b/lib/generation/generators/pb_generator.dart @@ -4,9 +4,10 @@ import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_inte abstract class PBGenerator { @Deprecated('Widget Indentifier is not being used anymore') final String WIDGET_TYPE_IDENTIFIER = 'widgetType'; - final String OBJECTID = 'do_objectID'; + final String OBJECTID = 'UUID'; PBGenerationManager _manager; - set manager (PBGenerationManager generationManager) => _manager = generationManager; + set manager(PBGenerationManager generationManager) => + _manager = generationManager; PBGenerationManager get manager => _manager; PBGenerator(); diff --git a/lib/generation/generators/plugins/pb_injected_node.dart b/lib/generation/generators/plugins/pb_injected_node.dart index 09897f7c..18cf1e19 100644 --- a/lib/generation/generators/plugins/pb_injected_node.dart +++ b/lib/generation/generators/plugins/pb_injected_node.dart @@ -6,11 +6,7 @@ class PBInjectedNode extends PBIntermediateNode { Point topLeftCorner, Point bottomRightCorner, String UUID, - ) : super( - topLeftCorner, - bottomRightCorner, - UUID, - ); + ) : super(topLeftCorner, bottomRightCorner, UUID, ''); @override void addChild(PBIntermediateNode node) { // TODO: implement addChild diff --git a/lib/generation/generators/plugins/pb_plugin_node.dart b/lib/generation/generators/plugins/pb_plugin_node.dart index a857920b..a49a3614 100644 --- a/lib/generation/generators/plugins/pb_plugin_node.dart +++ b/lib/generation/generators/plugins/pb_plugin_node.dart @@ -11,8 +11,9 @@ abstract class PBEgg extends PBVisualIntermediateNode { final String UUID; PBEgg(Point topLeftCorner, Point bottomRightCorner, PBContext currentContext, - {this.UUID}) - : super(topLeftCorner, bottomRightCorner, currentContext, UUID: UUID); + String name, {this.UUID}) + : super(topLeftCorner, bottomRightCorner, currentContext, name, + UUID: UUID); /// Override this function if you want to make tree modification prior to the layout service. /// Be sure to return something or you will remove the node from the tree. diff --git a/lib/generation/generators/visual-widgets/pb_flexible_gen.dart b/lib/generation/generators/visual-widgets/pb_flexible_gen.dart index 16abfaea..2672bf1a 100644 --- a/lib/generation/generators/visual-widgets/pb_flexible_gen.dart +++ b/lib/generation/generators/visual-widgets/pb_flexible_gen.dart @@ -20,10 +20,6 @@ class PBFlexibleGenerator extends PBGenerator { buffer.write( 'child: ${manager.generate(source.child, type: source.builder_type ?? BUILDER_TYPE.BODY)},'); } catch (e, stackTrace) { - MainInfo().sentry.captureException( - exception: e, - stackTrace: stackTrace, - ); log.error(e.toString()); } buffer.write(')'); diff --git a/lib/generation/prototyping/pb_dest_holder.dart b/lib/generation/prototyping/pb_dest_holder.dart index d569bc8f..2b753f9f 100644 --- a/lib/generation/prototyping/pb_dest_holder.dart +++ b/lib/generation/prototyping/pb_dest_holder.dart @@ -9,7 +9,7 @@ class PBDestHolder extends PBIntermediateNode { PBDestHolder( Point topLeftCorner, Point bottomRightCorner, String UUID, this.pNode) - : super(topLeftCorner, bottomRightCorner, UUID) { + : super(topLeftCorner, bottomRightCorner, UUID, '') { generator = PBPrototypeGenerator(pNode); } diff --git a/lib/input/figma/entities/abstract_figma_node_factory.dart b/lib/input/figma/entities/abstract_figma_node_factory.dart new file mode 100644 index 00000000..24f23a5e --- /dev/null +++ b/lib/input/figma/entities/abstract_figma_node_factory.dart @@ -0,0 +1,54 @@ +import 'package:parabeac_core/input/figma/entities/layers/boolean_operation.dart'; +import 'package:parabeac_core/input/figma/entities/layers/canvas.dart'; +import 'package:parabeac_core/input/figma/entities/layers/component.dart'; +import 'package:parabeac_core/input/figma/entities/layers/ellipse.dart'; +import 'package:parabeac_core/input/figma/entities/layers/frame.dart'; +import 'package:parabeac_core/input/figma/entities/layers/group.dart'; +import 'package:parabeac_core/input/figma/entities/layers/instance.dart'; +import 'package:parabeac_core/input/figma/entities/layers/line.dart'; +import 'package:parabeac_core/input/figma/entities/layers/rectangle.dart'; +import 'package:parabeac_core/input/figma/entities/layers/slice.dart'; +import 'package:parabeac_core/input/figma/entities/layers/star.dart'; +import 'package:parabeac_core/input/figma/entities/layers/text.dart'; + +import 'layers/figma_node.dart'; +import 'layers/vector.dart'; + +class AbstractFigmaNodeFactory { + static final String FIGMA_CLASS_KEY = 'type'; + + static final List _figmaNodes = [ + BooleanOperation(), + Canvas(), + Component(), + FigmaEllipse(), + FigmaFrame(), + Group(), + Instance(), + FigmaLine(), + FigmaRectangle(), + FigmaSlice(), + FigmaStar(), + FigmaText(), + FigmaVector(), + ]; + + AbstractFigmaNodeFactory(); + + static FigmaNode getFigmaNode(Map json) { + var className = json[FIGMA_CLASS_KEY]; + if (className != null) { + for (var figmaNode in _figmaNodes) { + if (figmaNode.type == className) { + return figmaNode.createFigmaNode(json); + } + } + } + return null; + } +} + +abstract class FigmaNodeFactory { + String type; + FigmaNode createFigmaNode(Map json); +} diff --git a/lib/input/figma/entities/layers/boolean_operation.dart b/lib/input/figma/entities/layers/boolean_operation.dart new file mode 100644 index 00000000..98398320 --- /dev/null +++ b/lib/input/figma/entities/layers/boolean_operation.dart @@ -0,0 +1,66 @@ +import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/design_logic/group_node.dart'; +import 'package:parabeac_core/design_logic/image.dart'; +import 'package:parabeac_core/input/figma/entities/abstract_figma_node_factory.dart'; +import 'package:parabeac_core/input/figma/entities/layers/vector.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_style.dart'; +import 'package:parabeac_core/input/sketch/entities/objects/frame.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/inherited_bitmap.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; +import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; +import 'package:quick_log/quick_log.dart'; +import 'figma_node.dart'; +import 'package:parabeac_core/input/figma/helper/image_helper.dart' + as image_helper; + +part 'boolean_operation.g.dart'; + +@JsonSerializable(nullable: true) +class BooleanOperation extends FigmaVector + with image_helper.PBImageHelperMixin + implements FigmaNodeFactory, GroupNode, Image { + @JsonKey(ignore: true) + Logger log; + @override + List children; + String booleanOperation; + + @override + String type = 'BOOLEAN_OPERATION'; + + @override + var boundaryRectangle; + + BooleanOperation({ + List this.children, + booleanOperation, + type, + FigmaStyle style, + Frame this.boundaryRectangle, + String UUID, + }) : super( + style: style, + UUID: UUID, + ) { + log = Logger(runtimeType.toString()); + } + + @override + FigmaNode createFigmaNode(Map json) => + BooleanOperation.fromJson(json); + factory BooleanOperation.fromJson(Map json) => + _$BooleanOperationFromJson(json); + @override + Map toJson() => _$BooleanOperationToJson(this); + + @override + Future interpretNode(PBContext currentContext) async { + imageReference = addToImageQueue(UUID); + + return Future.value( + InheritedBitmap(this, name, currentContext: currentContext)); + } + + @override + String imageReference; +} diff --git a/lib/input/figma/entities/layers/boolean_operation.g.dart b/lib/input/figma/entities/layers/boolean_operation.g.dart new file mode 100644 index 00000000..3d264ee5 --- /dev/null +++ b/lib/input/figma/entities/layers/boolean_operation.g.dart @@ -0,0 +1,63 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'boolean_operation.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +BooleanOperation _$BooleanOperationFromJson(Map json) { + return BooleanOperation( + children: (json['children'] as List) + ?.map((e) => + e == null ? null : FigmaNode.fromJson(e as Map)) + ?.toList(), + booleanOperation: json['booleanOperation'], + type: json['type'], + style: json['style'] == null + ? null + : FigmaStyle.fromJson(json['style'] as Map), + boundaryRectangle: json['absoluteBoundingBox'] == null + ? null + : Frame.fromJson(json['absoluteBoundingBox'] as Map), + UUID: json['id'] as String, + ) + ..name = json['name'] as String + ..pluginData = json['pluginData'] + ..sharedPluginData = json['sharedPluginData'] + ..isVisible = json['visible'] as bool ?? true + ..layoutAlign = json['layoutAlign'] as String + ..constraints = json['constraints'] + ..prototypeNodeUUID = json['transitionNodeID'] as String + ..size = json['size'] + ..strokes = json['strokes'] + ..strokeWeight = (json['strokeWeight'] as num)?.toDouble() + ..strokeAlign = json['strokeAlign'] as String + ..styles = json['styles'] + ..fillsList = json['fills'] as List + ..imageReference = json['imageReference'] as String; +} + +Map _$BooleanOperationToJson(BooleanOperation instance) => + { + 'id': instance.UUID, + 'name': instance.name, + 'pluginData': instance.pluginData, + 'sharedPluginData': instance.sharedPluginData, + 'visible': instance.isVisible, + 'style': instance.style, + 'layoutAlign': instance.layoutAlign, + 'constraints': instance.constraints, + 'transitionNodeID': instance.prototypeNodeUUID, + 'size': instance.size, + 'strokes': instance.strokes, + 'strokeWeight': instance.strokeWeight, + 'strokeAlign': instance.strokeAlign, + 'styles': instance.styles, + 'fills': instance.fillsList, + 'children': instance.children, + 'booleanOperation': instance.booleanOperation, + 'type': instance.type, + 'absoluteBoundingBox': instance.boundaryRectangle, + 'imageReference': instance.imageReference, + }; diff --git a/lib/input/figma/entities/layers/canvas.dart b/lib/input/figma/entities/layers/canvas.dart new file mode 100644 index 00000000..1de30300 --- /dev/null +++ b/lib/input/figma/entities/layers/canvas.dart @@ -0,0 +1,63 @@ +import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/design_logic/group_node.dart'; +import 'package:parabeac_core/input/figma/entities/layers/figma_node.dart'; +import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; + +import '../abstract_figma_node_factory.dart'; + +part 'canvas.g.dart'; + +@JsonSerializable(nullable: true) +class Canvas extends FigmaNode implements FigmaNodeFactory, GroupNode { + @override + String type = 'CANVAS'; + Canvas({ + this.name, + this.type, + List this.children, + this.backgroundColor, + this.prototypeStartNodeID, + this.prototypeDevice, + this.exportSettings, + }) : super(name, true, type, null, null); + // Last two nulls are used for Figma plugins + + @override + String name; + + @override + List children; + + dynamic backgroundColor; + + dynamic prototypeStartNodeID; + + dynamic prototypeDevice; + + dynamic exportSettings; + + Canvas createSketchNode(Map json) => Canvas.fromJson(json); + factory Canvas.fromJson(Map json) => _$CanvasFromJson(json); + + Map toJson() => _$CanvasToJson(this); + + @override + FigmaNode createFigmaNode(Map json) => Canvas.fromJson(json); + + @override + var boundaryRectangle; + + @override + String prototypeNodeUUID; + + @override + @JsonKey(ignore: true) + var style; + + @override + Future interpretNode(PBContext currentContext) { + assert(false, 'We don\'t product pages as Intermediate Nodes.'); + return null; + } +} diff --git a/lib/input/figma/entities/layers/canvas.g.dart b/lib/input/figma/entities/layers/canvas.g.dart new file mode 100644 index 00000000..363307d5 --- /dev/null +++ b/lib/input/figma/entities/layers/canvas.g.dart @@ -0,0 +1,44 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'canvas.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +Canvas _$CanvasFromJson(Map json) { + return Canvas( + name: json['name'] as String, + type: json['type'] as String, + children: (json['children'] as List) + ?.map((e) => + e == null ? null : FigmaNode.fromJson(e as Map)) + ?.toList(), + backgroundColor: json['backgroundColor'], + prototypeStartNodeID: json['prototypeStartNodeID'], + prototypeDevice: json['prototypeDevice'], + exportSettings: json['exportSettings'], + ) + ..UUID = json['id'] as String + ..pluginData = json['pluginData'] + ..sharedPluginData = json['sharedPluginData'] + ..isVisible = json['visible'] as bool ?? true + ..boundaryRectangle = json['boundaryRectangle'] + ..prototypeNodeUUID = json['prototypeNodeUUID'] as String; +} + +Map _$CanvasToJson(Canvas instance) => { + 'id': instance.UUID, + 'pluginData': instance.pluginData, + 'sharedPluginData': instance.sharedPluginData, + 'visible': instance.isVisible, + 'type': instance.type, + 'name': instance.name, + 'children': instance.children, + 'backgroundColor': instance.backgroundColor, + 'prototypeStartNodeID': instance.prototypeStartNodeID, + 'prototypeDevice': instance.prototypeDevice, + 'exportSettings': instance.exportSettings, + 'boundaryRectangle': instance.boundaryRectangle, + 'prototypeNodeUUID': instance.prototypeNodeUUID, + }; diff --git a/lib/input/figma/entities/layers/component.dart b/lib/input/figma/entities/layers/component.dart new file mode 100644 index 00000000..a874bfe6 --- /dev/null +++ b/lib/input/figma/entities/layers/component.dart @@ -0,0 +1,110 @@ +import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/design_logic/pb_shared_master_node.dart'; +import 'package:parabeac_core/input/figma/entities/abstract_figma_node_factory.dart'; +import 'package:parabeac_core/input/figma/entities/layers/figma_node.dart'; +import 'package:parabeac_core/input/figma/entities/layers/frame.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_color.dart'; +import 'package:parabeac_core/input/sketch/entities/layers/flow.dart'; +import 'package:parabeac_core/input/sketch/entities/objects/frame.dart'; +import 'package:parabeac_core/input/sketch/entities/objects/override_property.dart'; +import 'package:parabeac_core/input/sketch/helper/symbol_node_mixin.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/pb_shared_master_node.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; +import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; +import 'package:parabeac_core/interpret_and_optimize/value_objects/point.dart'; + +part 'component.g.dart'; + +@JsonSerializable(nullable: true) +class Component extends FigmaFrame + with SymbolNodeMixin + implements AbstractFigmaNodeFactory, PBSharedMasterDesignNode { + @override + String type = 'COMPONENT'; + Component({ + name, + isVisible, + type, + pluginData, + sharedPluginData, + Frame boundaryRectangle, + style, + fills, + strokes, + strokeWeight, + strokeAlign, + cornerRadius, + constraints, + layoutAlign, + size, + horizontalPadding, + verticalPadding, + itemSpacing, + Flow flow, + this.overrideProperties, + List children, + FigmaColor backgroundColor, + this.symbolID, + this.overriadableProperties, + }) : super( + name: name, + isVisible: isVisible, + type: type, + pluginData: pluginData, + sharedPluginData: sharedPluginData, + boundaryRectangle: boundaryRectangle, + style: style, + fills: fills, + strokes: strokes, + strokeWeight: strokeWeight, + strokeAlign: strokeAlign, + cornerRadius: cornerRadius, + constraints: constraints, + layoutAlign: layoutAlign, + size: size, + horizontalPadding: horizontalPadding, + verticalPadding: verticalPadding, + itemSpacing: itemSpacing, + flow: flow, + children: children, + backgroundColor: backgroundColor, + ); + + final List overrideProperties; + + @override + FigmaNode createFigmaNode(Map json) => + Component.fromJson(json); + factory Component.fromJson(Map json) => + _$ComponentFromJson(json); + @override + Map toJson() => _$ComponentToJson(this); + + List _extractParameters() => + overrideProperties?.map((prop) { + var properties = extractParameter(prop.overrideName); + return PBSharedParameterProp( + properties[0], null, prop.canOverride, name, properties[1]); + })?.toList(); + + @override + Future interpretNode(PBContext currentContext) { + var sym_master = PBSharedMasterNode( + this, + UUID, + name, + Point(boundaryRectangle.x, boundaryRectangle.y), + Point(boundaryRectangle.x + boundaryRectangle.width, + boundaryRectangle.y + boundaryRectangle.height), + overridableProperties: _extractParameters() ?? [], + currentContext: currentContext, + ); + return Future.value(sym_master); + } + + @override + List overriadableProperties; + + @override + String symbolID; +} diff --git a/lib/input/figma/entities/layers/component.g.dart b/lib/input/figma/entities/layers/component.g.dart new file mode 100644 index 00000000..709e2885 --- /dev/null +++ b/lib/input/figma/entities/layers/component.g.dart @@ -0,0 +1,76 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'component.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +Component _$ComponentFromJson(Map json) { + return Component( + name: json['name'], + isVisible: json['visible'] ?? true, + type: json['type'], + pluginData: json['pluginData'], + sharedPluginData: json['sharedPluginData'], + boundaryRectangle: json['absoluteBoundingBox'] == null + ? null + : Frame.fromJson(json['absoluteBoundingBox'] as Map), + strokes: json['strokes'], + strokeWeight: json['strokeWeight'], + strokeAlign: json['strokeAlign'], + cornerRadius: json['cornerRadius'], + constraints: json['constraints'], + layoutAlign: json['layoutAlign'], + size: json['size'], + horizontalPadding: json['horizontalPadding'], + verticalPadding: json['verticalPadding'], + itemSpacing: json['itemSpacing'], + overrideProperties: (json['overrideProperties'] as List) + ?.map((e) => e == null + ? null + : OverridableProperty.fromJson(e as Map)) + ?.toList(), + children: (json['children'] as List) + ?.map((e) => + e == null ? null : FigmaNode.fromJson(e as Map)) + ?.toList(), + backgroundColor: json['backgroundColor'] == null + ? null + : FigmaColor.fromJson(json['backgroundColor'] as Map), + symbolID: json['symbolID'] as String, + overriadableProperties: json['overriadableProperties'] as List, + ) + ..UUID = json['id'] as String + ..prototypeNodeUUID = json['transitionNodeID'] as String + ..fillsList = json['fills'] as List + ..imageReference = json['imageReference'] as String; +} + +Map _$ComponentToJson(Component instance) => { + 'id': instance.UUID, + 'name': instance.name, + 'pluginData': instance.pluginData, + 'sharedPluginData': instance.sharedPluginData, + 'visible': instance.isVisible, + 'absoluteBoundingBox': instance.boundaryRectangle, + 'transitionNodeID': instance.prototypeNodeUUID, + 'children': instance.children, + 'strokes': instance.strokes, + 'strokeWeight': instance.strokeWeight, + 'strokeAlign': instance.strokeAlign, + 'cornerRadius': instance.cornerRadius, + 'constraints': instance.constraints, + 'layoutAlign': instance.layoutAlign, + 'size': instance.size, + 'horizontalPadding': instance.horizontalPadding, + 'verticalPadding': instance.verticalPadding, + 'itemSpacing': instance.itemSpacing, + 'backgroundColor': instance.backgroundColor, + 'fills': instance.fillsList, + 'imageReference': instance.imageReference, + 'type': instance.type, + 'overrideProperties': instance.overrideProperties, + 'overriadableProperties': instance.overriadableProperties, + 'symbolID': instance.symbolID, + }; diff --git a/lib/input/figma/entities/layers/ellipse.dart b/lib/input/figma/entities/layers/ellipse.dart new file mode 100644 index 00000000..ea04393a --- /dev/null +++ b/lib/input/figma/entities/layers/ellipse.dart @@ -0,0 +1,79 @@ +import 'package:parabeac_core/design_logic/image.dart'; +import 'package:parabeac_core/input/figma/entities/abstract_figma_node_factory.dart'; +import 'package:parabeac_core/input/figma/entities/layers/vector.dart'; +import 'package:parabeac_core/input/sketch/entities/objects/frame.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/inherited_bitmap.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; +import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'package:quick_log/quick_log.dart'; +import 'package:parabeac_core/input/figma/helper/image_helper.dart' + as image_helper; +import 'figma_node.dart'; + +part 'ellipse.g.dart'; + +@JsonSerializable(nullable: true) +class FigmaEllipse extends FigmaVector + with image_helper.PBImageHelperMixin + implements AbstractFigmaNodeFactory, Image { + @override + String imageReference; + @JsonKey(ignore: true) + Logger log; + + @JsonKey(ignore: true) + var fills; + + @override + String type = 'ELLIPSE'; + FigmaEllipse({ + String name, + bool visible, + String type, + pluginData, + sharedPluginData, + style, + layoutAlign, + constraints, + Frame boundaryRectangle, + size, + this.fills, + strokes, + strokeWeight, + strokeAlign, + styles, + }) : super( + name: name, + visible: visible, + type: type, + pluginData: pluginData, + sharedPluginData: sharedPluginData, + style: style, + layoutAlign: layoutAlign, + constraints: constraints, + boundaryRectangle: boundaryRectangle, + size: size, + strokes: strokes, + strokeWeight: strokeWeight, + strokeAlign: strokeAlign, + styles: styles, + ) { + log = Logger(runtimeType.toString()); + } + + @override + FigmaNode createFigmaNode(Map json) => + FigmaEllipse.fromJson(json); + factory FigmaEllipse.fromJson(Map json) => + _$FigmaEllipseFromJson(json); + @override + Map toJson() => _$FigmaEllipseToJson(this); + + @override + Future interpretNode(PBContext currentContext) async { + imageReference = addToImageQueue(UUID); + return Future.value( + InheritedBitmap(this, name, currentContext: currentContext)); + } +} diff --git a/lib/input/figma/entities/layers/ellipse.g.dart b/lib/input/figma/entities/layers/ellipse.g.dart new file mode 100644 index 00000000..4d830496 --- /dev/null +++ b/lib/input/figma/entities/layers/ellipse.g.dart @@ -0,0 +1,54 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'ellipse.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FigmaEllipse _$FigmaEllipseFromJson(Map json) { + return FigmaEllipse( + name: json['name'] as String, + type: json['type'] as String, + pluginData: json['pluginData'], + sharedPluginData: json['sharedPluginData'], + style: json['style'], + layoutAlign: json['layoutAlign'], + constraints: json['constraints'], + boundaryRectangle: json['absoluteBoundingBox'] == null + ? null + : Frame.fromJson(json['absoluteBoundingBox'] as Map), + size: json['size'], + strokes: json['strokes'], + strokeWeight: json['strokeWeight'], + strokeAlign: json['strokeAlign'], + styles: json['styles'], + ) + ..UUID = json['id'] as String + ..isVisible = json['visible'] as bool ?? true + ..prototypeNodeUUID = json['transitionNodeID'] as String + ..fillsList = json['fills'] as List + ..imageReference = json['imageReference'] as String; +} + +Map _$FigmaEllipseToJson(FigmaEllipse instance) => + { + 'id': instance.UUID, + 'name': instance.name, + 'pluginData': instance.pluginData, + 'sharedPluginData': instance.sharedPluginData, + 'visible': instance.isVisible, + 'style': instance.style, + 'layoutAlign': instance.layoutAlign, + 'constraints': instance.constraints, + 'transitionNodeID': instance.prototypeNodeUUID, + 'absoluteBoundingBox': instance.boundaryRectangle, + 'size': instance.size, + 'strokes': instance.strokes, + 'strokeWeight': instance.strokeWeight, + 'strokeAlign': instance.strokeAlign, + 'styles': instance.styles, + 'fills': instance.fillsList, + 'imageReference': instance.imageReference, + 'type': instance.type, + }; diff --git a/lib/input/figma/entities/layers/figma_font_descriptor.dart b/lib/input/figma/entities/layers/figma_font_descriptor.dart new file mode 100644 index 00000000..1638b10c --- /dev/null +++ b/lib/input/figma/entities/layers/figma_font_descriptor.dart @@ -0,0 +1,27 @@ +import 'package:parabeac_core/design_logic/pb_font_descriptor.dart'; + +class FigmaFontDescriptor implements PBFontDescriptor { + @override + String fontName; + + @override + num fontSize; + + String fontWeight; + + String fontStyle; + + num letterSpacing; + + @override + Map rawAttributes; + + FigmaFontDescriptor( + this.fontName, + this.fontSize, + this.rawAttributes, + this.fontWeight, + this.fontStyle, + this.letterSpacing, + ); +} diff --git a/lib/input/figma/entities/layers/figma_node.dart b/lib/input/figma/entities/layers/figma_node.dart new file mode 100644 index 00000000..74cb00b9 --- /dev/null +++ b/lib/input/figma/entities/layers/figma_node.dart @@ -0,0 +1,42 @@ +import 'package:parabeac_core/design_logic/design_node.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; +import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; + +import '../abstract_figma_node_factory.dart'; + +@JsonSerializable(nullable: true) +abstract class FigmaNode implements DesignNode { + @JsonKey(name: 'id') + @override + String UUID; + + @override + String name; + + @override + String type; + + var pluginData; + + var sharedPluginData; + + @override + @JsonKey(name: 'visible', defaultValue: true) + bool isVisible; + + FigmaNode( + this.name, + this.isVisible, + this.type, + this.pluginData, + this.sharedPluginData, { + this.UUID, + }); + @override + Map toJson(); + factory FigmaNode.fromJson(Map json) => + AbstractFigmaNodeFactory.getFigmaNode(json); + @override + Future interpretNode(PBContext currentContext); +} diff --git a/lib/input/figma/entities/layers/figma_paragraph_style.dart b/lib/input/figma/entities/layers/figma_paragraph_style.dart new file mode 100644 index 00000000..70189b7e --- /dev/null +++ b/lib/input/figma/entities/layers/figma_paragraph_style.dart @@ -0,0 +1,7 @@ +import 'package:parabeac_core/design_logic/pb_paragraph_style.dart'; + +class FigmaParagraphStyle implements PBParagraphStyle { + int alignment = ALIGNMENT.LEFT.index; + + FigmaParagraphStyle({this.alignment}); +} diff --git a/lib/input/figma/entities/layers/frame.dart b/lib/input/figma/entities/layers/frame.dart new file mode 100644 index 00000000..b1da284c --- /dev/null +++ b/lib/input/figma/entities/layers/frame.dart @@ -0,0 +1,164 @@ +import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/design_logic/artboard.dart'; +import 'package:parabeac_core/design_logic/color.dart'; +import 'package:parabeac_core/design_logic/group_node.dart'; +import 'package:parabeac_core/design_logic/image.dart'; +import 'package:parabeac_core/input/figma/entities/abstract_figma_node_factory.dart'; +import 'package:parabeac_core/input/figma/entities/layers/figma_node.dart'; +import 'package:parabeac_core/input/figma/entities/layers/group.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_color.dart'; +import 'package:parabeac_core/input/figma/helper/style_extractor.dart'; +import 'package:parabeac_core/input/sketch/entities/layers/flow.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/inherited_scaffold.dart'; +import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; +import 'package:parabeac_core/input/sketch/entities/objects/frame.dart'; +import 'package:parabeac_core/interpret_and_optimize/value_objects/point.dart'; +import 'package:parabeac_core/input/figma/helper/image_helper.dart' + as image_helper; + +part 'frame.g.dart'; + +@JsonSerializable(nullable: true) +class FigmaFrame extends FigmaNode + with PBColorMixin + implements FigmaNodeFactory, GroupNode, PBArtboard, Image { + @override + @JsonKey(name: 'absoluteBoundingBox') + var boundaryRectangle; + + @override + @JsonKey(name: 'transitionNodeID') + String prototypeNodeUUID; + + @override + @JsonKey(ignore: true) + var style; + + @override + List children; + + @JsonKey(ignore: true) + var fills; + + var strokes; + + double strokeWeight; + + String strokeAlign; + + double cornerRadius; + + var constraints; + + String layoutAlign; + + var size; + + double horizontalPadding; + + double verticalPadding; + + double itemSpacing; + + @override + PBColor backgroundColor; + + @override + String type = 'FRAME'; + + @JsonKey(ignore: true) + bool isScaffold = false; + + FigmaFrame({ + name, + isVisible, + type, + pluginData, + sharedPluginData, + Frame this.boundaryRectangle, + this.style, + this.fills, + this.strokes, + this.strokeWeight, + this.strokeAlign, + this.cornerRadius, + this.constraints, + this.layoutAlign, + this.size, + this.horizontalPadding, + this.verticalPadding, + this.itemSpacing, + List this.children, + Flow flow, + String UUID, + FigmaColor this.backgroundColor, + }) : super( + name, + isVisible, + type, + pluginData, + sharedPluginData, + UUID: UUID, + ); + @JsonKey(ignore: true) + List points; + + @JsonKey(name: 'fills') + List fillsList; + + @override + FigmaNode createFigmaNode(Map json) { + var node = FigmaFrame.fromJson(json); + node.style = StyleExtractor().getStyle(json); + return node; + } + + factory FigmaFrame.fromJson(Map json) => + _$FigmaFrameFromJson(json); + @override + Map toJson() => _$FigmaFrameToJson(this); + + @override + Future interpretNode(PBContext currentContext) { + /// TODO: change `isHomeScreen` to its actual value + if (isScaffold) { + return Future.value(InheritedScaffold( + this, + currentContext: currentContext, + name: name, + isHomeScreen: false, + )); + } else { + var tempGroup = Group( + name: name, + isVisible: isVisible, + type: type, + pluginData: pluginData, + sharedPluginData: sharedPluginData, + boundaryRectangle: boundaryRectangle, + style: style, + fills: fills, + strokes: strokes, + strokeWeight: strokeWeight, + strokeAlign: strokeAlign, + cornerRadius: cornerRadius, + constraints: constraints, + layoutAlign: layoutAlign, + size: size, + horizontalPadding: horizontalPadding, + verticalPadding: verticalPadding, + itemSpacing: itemSpacing, + flow: null, + children: children, + UUID: UUID, + backgroundColor: backgroundColor, + ); + + return Future.value(tempGroup.interpretNode(currentContext)); + } + } + + @override + String imageReference; +} diff --git a/lib/input/figma/entities/layers/frame.g.dart b/lib/input/figma/entities/layers/frame.g.dart new file mode 100644 index 00000000..db0f11c6 --- /dev/null +++ b/lib/input/figma/entities/layers/frame.g.dart @@ -0,0 +1,67 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'frame.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FigmaFrame _$FigmaFrameFromJson(Map json) { + return FigmaFrame( + name: json['name'], + isVisible: json['visible'] ?? true, + type: json['type'], + pluginData: json['pluginData'], + sharedPluginData: json['sharedPluginData'], + boundaryRectangle: json['absoluteBoundingBox'] == null + ? null + : Frame.fromJson(json['absoluteBoundingBox'] as Map), + strokes: json['strokes'], + strokeWeight: (json['strokeWeight'] as num)?.toDouble(), + strokeAlign: json['strokeAlign'] as String, + cornerRadius: (json['cornerRadius'] as num)?.toDouble(), + constraints: json['constraints'], + layoutAlign: json['layoutAlign'] as String, + size: json['size'], + horizontalPadding: (json['horizontalPadding'] as num)?.toDouble(), + verticalPadding: (json['verticalPadding'] as num)?.toDouble(), + itemSpacing: (json['itemSpacing'] as num)?.toDouble(), + children: (json['children'] as List) + ?.map((e) => + e == null ? null : FigmaNode.fromJson(e as Map)) + ?.toList(), + UUID: json['id'] as String, + backgroundColor: json['backgroundColor'] == null + ? null + : FigmaColor.fromJson(json['backgroundColor'] as Map), + ) + ..prototypeNodeUUID = json['transitionNodeID'] as String + ..fillsList = json['fills'] as List + ..imageReference = json['imageReference'] as String; +} + +Map _$FigmaFrameToJson(FigmaFrame instance) => + { + 'id': instance.UUID, + 'name': instance.name, + 'pluginData': instance.pluginData, + 'sharedPluginData': instance.sharedPluginData, + 'visible': instance.isVisible, + 'absoluteBoundingBox': instance.boundaryRectangle, + 'transitionNodeID': instance.prototypeNodeUUID, + 'children': instance.children, + 'strokes': instance.strokes, + 'strokeWeight': instance.strokeWeight, + 'strokeAlign': instance.strokeAlign, + 'cornerRadius': instance.cornerRadius, + 'constraints': instance.constraints, + 'layoutAlign': instance.layoutAlign, + 'size': instance.size, + 'horizontalPadding': instance.horizontalPadding, + 'verticalPadding': instance.verticalPadding, + 'itemSpacing': instance.itemSpacing, + 'backgroundColor': instance.backgroundColor, + 'type': instance.type, + 'fills': instance.fillsList, + 'imageReference': instance.imageReference, + }; diff --git a/lib/input/figma/entities/layers/group.dart b/lib/input/figma/entities/layers/group.dart new file mode 100644 index 00000000..62516fd2 --- /dev/null +++ b/lib/input/figma/entities/layers/group.dart @@ -0,0 +1,121 @@ +import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/design_logic/image.dart'; +import 'package:parabeac_core/input/figma/entities/abstract_figma_node_factory.dart'; +import 'package:parabeac_core/input/figma/entities/layers/figma_node.dart'; +import 'package:parabeac_core/input/figma/entities/layers/frame.dart'; +import 'package:parabeac_core/input/figma/entities/layers/text.dart'; +import 'package:parabeac_core/input/figma/entities/layers/vector.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_color.dart'; +import 'package:parabeac_core/input/figma/helper/image_helper.dart' + as image_helper; +import 'package:parabeac_core/input/sketch/entities/layers/flow.dart'; +import 'package:parabeac_core/input/sketch/entities/objects/frame.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/inherited_bitmap.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/layouts/temp_group_layout_node.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; +import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; +import 'package:parabeac_core/interpret_and_optimize/value_objects/point.dart'; +import 'package:quick_log/quick_log.dart'; + +part 'group.g.dart'; + +@JsonSerializable(nullable: true) + +/// Class that represents a Figma Group. +/// The reason this class implements Image is because Groups can hold multiple vectors +/// which we need to convert into images. +class Group extends FigmaFrame + with image_helper.PBImageHelperMixin + implements AbstractFigmaNodeFactory, Image { + @JsonKey(ignore: true) + Logger log; + @override + String type = 'GROUP'; + + @override + String imageReference; + + Group({ + name, + isVisible, + type, + pluginData, + sharedPluginData, + Frame boundaryRectangle, + style, + fills, + strokes, + strokeWeight, + strokeAlign, + cornerRadius, + constraints, + layoutAlign, + size, + horizontalPadding, + verticalPadding, + itemSpacing, + Flow flow, + List children, + String UUID, + FigmaColor backgroundColor, + }) : super( + name: name, + isVisible: isVisible, + type: type, + pluginData: pluginData, + sharedPluginData: sharedPluginData, + boundaryRectangle: boundaryRectangle, + style: style, + fills: fills, + strokes: strokes, + strokeWeight: strokeWeight, + strokeAlign: strokeAlign, + cornerRadius: cornerRadius, + constraints: constraints, + layoutAlign: layoutAlign, + size: size, + horizontalPadding: horizontalPadding, + verticalPadding: verticalPadding, + itemSpacing: itemSpacing, + flow: flow, + children: children, + UUID: UUID, + backgroundColor: backgroundColor, + ) { + log = Logger(runtimeType.toString()); + } + + @override + FigmaNode createFigmaNode(Map json) => Group.fromJson(json); + factory Group.fromJson(Map json) => _$GroupFromJson(json); + @override + Map toJson() => _$GroupToJson(this); + + @override + Future interpretNode(PBContext currentContext) async { + if (areAllVectors()) { + imageReference = addToImageQueue(UUID); + + children.clear(); + + return Future.value( + InheritedBitmap(this, name, currentContext: currentContext)); + } + return Future.value(TempGroupLayoutNode(this, currentContext, name, + topLeftCorner: Point(boundaryRectangle.x, boundaryRectangle.y), + bottomRightCorner: Point(boundaryRectangle.x + boundaryRectangle.width, + boundaryRectangle.y + boundaryRectangle.height))); + } + + bool areAllVectors() { + for (var child in children) { + if (child is! FigmaVector) { + return false; + } + if (child is FigmaText) { + return false; + } + } + return true; + } +} diff --git a/lib/input/figma/entities/layers/group.g.dart b/lib/input/figma/entities/layers/group.g.dart new file mode 100644 index 00000000..a28f1b64 --- /dev/null +++ b/lib/input/figma/entities/layers/group.g.dart @@ -0,0 +1,66 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'group.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +Group _$GroupFromJson(Map json) { + return Group( + name: json['name'], + isVisible: json['visible'] ?? true, + type: json['type'], + pluginData: json['pluginData'], + sharedPluginData: json['sharedPluginData'], + boundaryRectangle: json['absoluteBoundingBox'] == null + ? null + : Frame.fromJson(json['absoluteBoundingBox'] as Map), + strokes: json['strokes'], + strokeWeight: json['strokeWeight'], + strokeAlign: json['strokeAlign'], + cornerRadius: json['cornerRadius'], + constraints: json['constraints'], + layoutAlign: json['layoutAlign'], + size: json['size'], + horizontalPadding: json['horizontalPadding'], + verticalPadding: json['verticalPadding'], + itemSpacing: json['itemSpacing'], + children: (json['children'] as List) + ?.map((e) => + e == null ? null : FigmaNode.fromJson(e as Map)) + ?.toList(), + UUID: json['id'] as String, + backgroundColor: json['backgroundColor'] == null + ? null + : FigmaColor.fromJson(json['backgroundColor'] as Map), + ) + ..prototypeNodeUUID = json['transitionNodeID'] as String + ..fillsList = json['fills'] as List + ..imageReference = json['imageReference'] as String; +} + +Map _$GroupToJson(Group instance) => { + 'id': instance.UUID, + 'name': instance.name, + 'pluginData': instance.pluginData, + 'sharedPluginData': instance.sharedPluginData, + 'visible': instance.isVisible, + 'absoluteBoundingBox': instance.boundaryRectangle, + 'transitionNodeID': instance.prototypeNodeUUID, + 'children': instance.children, + 'strokes': instance.strokes, + 'strokeWeight': instance.strokeWeight, + 'strokeAlign': instance.strokeAlign, + 'cornerRadius': instance.cornerRadius, + 'constraints': instance.constraints, + 'layoutAlign': instance.layoutAlign, + 'size': instance.size, + 'horizontalPadding': instance.horizontalPadding, + 'verticalPadding': instance.verticalPadding, + 'itemSpacing': instance.itemSpacing, + 'backgroundColor': instance.backgroundColor, + 'fills': instance.fillsList, + 'type': instance.type, + 'imageReference': instance.imageReference, + }; diff --git a/lib/input/figma/entities/layers/instance.dart b/lib/input/figma/entities/layers/instance.dart new file mode 100644 index 00000000..e443917d --- /dev/null +++ b/lib/input/figma/entities/layers/instance.dart @@ -0,0 +1,99 @@ +import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/design_logic/pb_shared_instance_design_node.dart'; +import 'package:parabeac_core/input/figma/entities/abstract_figma_node_factory.dart'; +import 'package:parabeac_core/input/figma/entities/layers/figma_node.dart'; +import 'package:parabeac_core/input/figma/entities/layers/frame.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_color.dart'; +import 'package:parabeac_core/input/sketch/entities/layers/flow.dart'; +import 'package:parabeac_core/input/sketch/entities/objects/frame.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/pb_shared_instance.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; +import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; + +part 'instance.g.dart'; + +@JsonSerializable(nullable: true) +class Instance extends FigmaFrame + implements AbstractFigmaNodeFactory, PBSharedInstanceDesignNode { + @override + String type = 'INSTANCE'; + + @override + List parameters; + + @override + String symbolID; + + @override + List children; + Instance({ + name, + isVisible, + type, + pluginData, + sharedPluginData, + Frame boundaryRectangle, + style, + fills, + strokes, + strokeWeight, + strokeAlign, + cornerRadius, + constraints, + layoutAlign, + size, + horizontalPadding, + verticalPadding, + itemSpacing, + Flow flow, + this.componentId, + List this.children, + this.parameters, + this.symbolID, + FigmaColor backgroundColor, + }) : super( + name: name, + isVisible: isVisible, + type: type, + pluginData: pluginData, + sharedPluginData: sharedPluginData, + boundaryRectangle: boundaryRectangle, + style: style, + fills: fills, + strokes: strokes, + strokeWeight: strokeWeight, + strokeAlign: strokeAlign, + cornerRadius: cornerRadius, + constraints: constraints, + layoutAlign: layoutAlign, + size: size, + horizontalPadding: horizontalPadding, + verticalPadding: verticalPadding, + itemSpacing: itemSpacing, + flow: flow, + children: children, + backgroundColor: backgroundColor, + ); + + String componentId; + + @override + FigmaNode createFigmaNode(Map json) => + Instance.fromJson(json); + factory Instance.fromJson(Map json) => + _$InstanceFromJson(json); + @override + Map toJson() => _$InstanceToJson(this); + + @override + Future interpretNode(PBContext currentContext) { + /// TODO: Check if `sharedParamValues` exits and pass to it, default to emptu for now + var sym = PBSharedInstanceIntermediateNode( + this, + componentId, + sharedParamValues: [], + currentContext: currentContext, + ); + return Future.value(sym); + } +} diff --git a/lib/input/figma/entities/layers/instance.g.dart b/lib/input/figma/entities/layers/instance.g.dart new file mode 100644 index 00000000..cb9555dd --- /dev/null +++ b/lib/input/figma/entities/layers/instance.g.dart @@ -0,0 +1,72 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'instance.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +Instance _$InstanceFromJson(Map json) { + return Instance( + name: json['name'], + isVisible: json['visible'] ?? true, + type: json['type'], + pluginData: json['pluginData'], + sharedPluginData: json['sharedPluginData'], + boundaryRectangle: json['absoluteBoundingBox'] == null + ? null + : Frame.fromJson(json['absoluteBoundingBox'] as Map), + strokes: json['strokes'], + strokeWeight: json['strokeWeight'], + strokeAlign: json['strokeAlign'], + cornerRadius: json['cornerRadius'], + constraints: json['constraints'], + layoutAlign: json['layoutAlign'], + size: json['size'], + horizontalPadding: json['horizontalPadding'], + verticalPadding: json['verticalPadding'], + itemSpacing: json['itemSpacing'], + componentId: json['componentId'] as String, + children: (json['children'] as List) + ?.map((e) => + e == null ? null : FigmaNode.fromJson(e as Map)) + ?.toList(), + parameters: json['parameters'] as List, + symbolID: json['symbolID'] as String, + backgroundColor: json['backgroundColor'] == null + ? null + : FigmaColor.fromJson(json['backgroundColor'] as Map), + ) + ..UUID = json['id'] as String + ..prototypeNodeUUID = json['transitionNodeID'] as String + ..fillsList = json['fills'] as List + ..imageReference = json['imageReference'] as String; +} + +Map _$InstanceToJson(Instance instance) => { + 'id': instance.UUID, + 'name': instance.name, + 'pluginData': instance.pluginData, + 'sharedPluginData': instance.sharedPluginData, + 'visible': instance.isVisible, + 'absoluteBoundingBox': instance.boundaryRectangle, + 'transitionNodeID': instance.prototypeNodeUUID, + 'strokes': instance.strokes, + 'strokeWeight': instance.strokeWeight, + 'strokeAlign': instance.strokeAlign, + 'cornerRadius': instance.cornerRadius, + 'constraints': instance.constraints, + 'layoutAlign': instance.layoutAlign, + 'size': instance.size, + 'horizontalPadding': instance.horizontalPadding, + 'verticalPadding': instance.verticalPadding, + 'itemSpacing': instance.itemSpacing, + 'backgroundColor': instance.backgroundColor, + 'fills': instance.fillsList, + 'imageReference': instance.imageReference, + 'type': instance.type, + 'parameters': instance.parameters, + 'symbolID': instance.symbolID, + 'children': instance.children, + 'componentId': instance.componentId, + }; diff --git a/lib/input/figma/entities/layers/line.dart b/lib/input/figma/entities/layers/line.dart new file mode 100644 index 00000000..1edcb3eb --- /dev/null +++ b/lib/input/figma/entities/layers/line.dart @@ -0,0 +1,62 @@ +import 'package:parabeac_core/input/figma/entities/abstract_figma_node_factory.dart'; +import 'package:parabeac_core/input/figma/entities/layers/vector.dart'; +import 'package:parabeac_core/input/sketch/entities/objects/frame.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; +import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; +import 'package:json_annotation/json_annotation.dart'; + +import 'figma_node.dart'; + +part 'line.g.dart'; + +@JsonSerializable(nullable: true) +class FigmaLine extends FigmaVector implements AbstractFigmaNodeFactory { + @override + String type = 'LINE'; + FigmaLine({ + String name, + bool visible, + String type, + pluginData, + sharedPluginData, + style, + layoutAlign, + constraints, + Frame boundaryRectangle, + size, + fills, + strokes, + strokeWeight, + strokeAlign, + styles, + }) : super( + name: name, + visible: visible, + type: type, + pluginData: pluginData, + sharedPluginData: sharedPluginData, + style: style, + layoutAlign: layoutAlign, + constraints: constraints, + boundaryRectangle: boundaryRectangle, + size: size, + strokes: strokes, + strokeWeight: strokeWeight, + strokeAlign: strokeAlign, + styles: styles, + ); + + @override + FigmaNode createFigmaNode(Map json) => + FigmaLine.fromJson(json); + factory FigmaLine.fromJson(Map json) => + _$FigmaLineFromJson(json); + @override + Map toJson() => _$FigmaLineToJson(this); + + @override + Future interpretNode(PBContext currentContext) { + // TODO: implement interpretNode + throw UnimplementedError(); + } +} diff --git a/lib/input/figma/entities/layers/line.g.dart b/lib/input/figma/entities/layers/line.g.dart new file mode 100644 index 00000000..69f0f304 --- /dev/null +++ b/lib/input/figma/entities/layers/line.g.dart @@ -0,0 +1,53 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'line.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FigmaLine _$FigmaLineFromJson(Map json) { + return FigmaLine( + name: json['name'] as String, + type: json['type'] as String, + pluginData: json['pluginData'], + sharedPluginData: json['sharedPluginData'], + style: json['style'], + layoutAlign: json['layoutAlign'], + constraints: json['constraints'], + boundaryRectangle: json['absoluteBoundingBox'] == null + ? null + : Frame.fromJson(json['absoluteBoundingBox'] as Map), + size: json['size'], + strokes: json['strokes'], + strokeWeight: json['strokeWeight'], + strokeAlign: json['strokeAlign'], + styles: json['styles'], + ) + ..UUID = json['id'] as String + ..isVisible = json['visible'] as bool ?? true + ..prototypeNodeUUID = json['transitionNodeID'] as String + ..fillsList = json['fills'] as List + ..imageReference = json['imageReference'] as String; +} + +Map _$FigmaLineToJson(FigmaLine instance) => { + 'id': instance.UUID, + 'name': instance.name, + 'pluginData': instance.pluginData, + 'sharedPluginData': instance.sharedPluginData, + 'visible': instance.isVisible, + 'style': instance.style, + 'layoutAlign': instance.layoutAlign, + 'constraints': instance.constraints, + 'transitionNodeID': instance.prototypeNodeUUID, + 'absoluteBoundingBox': instance.boundaryRectangle, + 'size': instance.size, + 'strokes': instance.strokes, + 'strokeWeight': instance.strokeWeight, + 'strokeAlign': instance.strokeAlign, + 'styles': instance.styles, + 'fills': instance.fillsList, + 'imageReference': instance.imageReference, + 'type': instance.type, + }; diff --git a/lib/input/figma/entities/layers/rectangle.dart b/lib/input/figma/entities/layers/rectangle.dart new file mode 100644 index 00000000..ade34b29 --- /dev/null +++ b/lib/input/figma/entities/layers/rectangle.dart @@ -0,0 +1,115 @@ +import 'package:parabeac_core/design_logic/color.dart'; +import 'package:parabeac_core/design_logic/pb_border.dart'; +import 'package:parabeac_core/input/figma/entities/abstract_figma_node_factory.dart'; +import 'package:parabeac_core/input/figma/entities/layers/vector.dart'; +import 'package:parabeac_core/input/figma/helper/style_extractor.dart'; +import 'package:parabeac_core/input/sketch/entities/objects/frame.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/inherited_bitmap.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/inherited_container.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; +import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/interpret_and_optimize/value_objects/point.dart'; +import 'package:parabeac_core/input/figma/helper/image_helper.dart' + as image_helper; + +import 'figma_node.dart'; + +part 'rectangle.g.dart'; + +@JsonSerializable(nullable: true) +class FigmaRectangle extends FigmaVector + with PBColorMixin, image_helper.PBImageHelperMixin + implements AbstractFigmaNodeFactory { + @override + String type = 'RECTANGLE'; + FigmaRectangle({ + String name, + bool isVisible, + type, + pluginData, + sharedPluginData, + style, + layoutAlign, + constraints, + Frame boundaryRectangle, + size, + strokes, + strokeWeight, + strokeAlign, + styles, + this.cornerRadius, + this.rectangleCornerRadii, + this.points, + List fillsList, + }) : super( + name: name, + visible: isVisible, + type: type, + pluginData: pluginData, + sharedPluginData: sharedPluginData, + style: style, + layoutAlign: layoutAlign, + constraints: constraints, + boundaryRectangle: boundaryRectangle, + size: size, + strokes: strokes, + strokeWeight: strokeWeight, + strokeAlign: strokeAlign, + styles: styles, + fillsList: fillsList, + ); + + List points; + double cornerRadius; + + List rectangleCornerRadii; + + @override + FigmaNode createFigmaNode(Map json) { + var node = FigmaRectangle.fromJson(json); + node.style = StyleExtractor().getStyle(json); + return node; + } + + factory FigmaRectangle.fromJson(Map json) => + _$FigmaRectangleFromJson(json); + @override + Map toJson() => _$FigmaRectangleToJson(this); + + @override + Future interpretNode(PBContext currentContext) { + var fillsMap = + (fillsList == null || fillsList.isEmpty) ? {} : fillsList.first; + if (fillsMap != null && fillsMap['type'] == 'IMAGE') { + imageReference = addToImageQueue(UUID); + + return Future.value( + InheritedBitmap(this, name, currentContext: currentContext)); + } + PBBorder border; + for (var b in style?.borders?.reversed ?? []) { + if (b.isEnabled) { + border = b; + } + } + return Future.value(InheritedContainer( + this, + Point(boundaryRectangle.x, boundaryRectangle.y), + Point(boundaryRectangle.x + boundaryRectangle.width, + boundaryRectangle.y + boundaryRectangle.height), + name, + currentContext: currentContext, + isBackgroundVisible: + !fillsMap.containsKey('visible') || fillsMap['visible'], + borderInfo: { + 'borderRadius': (style != null && style.borderOptions != null) + ? cornerRadius + : null, + 'borderColorHex': style.borders != null && style.borders.isNotEmpty + ? toHex(style.borders[0].color) + : null + }, + )); + } +} diff --git a/lib/input/figma/entities/layers/rectangle.g.dart b/lib/input/figma/entities/layers/rectangle.g.dart new file mode 100644 index 00000000..42223b70 --- /dev/null +++ b/lib/input/figma/entities/layers/rectangle.g.dart @@ -0,0 +1,62 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'rectangle.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FigmaRectangle _$FigmaRectangleFromJson(Map json) { + return FigmaRectangle( + name: json['name'] as String, + isVisible: json['visible'] as bool ?? true, + type: json['type'], + pluginData: json['pluginData'], + sharedPluginData: json['sharedPluginData'], + style: json['style'], + layoutAlign: json['layoutAlign'], + constraints: json['constraints'], + boundaryRectangle: json['absoluteBoundingBox'] == null + ? null + : Frame.fromJson(json['absoluteBoundingBox'] as Map), + size: json['size'], + strokes: json['strokes'], + strokeWeight: json['strokeWeight'], + strokeAlign: json['strokeAlign'], + styles: json['styles'], + cornerRadius: (json['cornerRadius'] as num)?.toDouble(), + rectangleCornerRadii: (json['rectangleCornerRadii'] as List) + ?.map((e) => (e as num)?.toDouble()) + ?.toList(), + points: json['points'] as List, + fillsList: json['fills'] as List, + ) + ..UUID = json['id'] as String + ..prototypeNodeUUID = json['transitionNodeID'] as String + ..imageReference = json['imageReference'] as String; +} + +Map _$FigmaRectangleToJson(FigmaRectangle instance) => + { + 'id': instance.UUID, + 'name': instance.name, + 'pluginData': instance.pluginData, + 'sharedPluginData': instance.sharedPluginData, + 'visible': instance.isVisible, + 'style': instance.style, + 'layoutAlign': instance.layoutAlign, + 'constraints': instance.constraints, + 'transitionNodeID': instance.prototypeNodeUUID, + 'absoluteBoundingBox': instance.boundaryRectangle, + 'size': instance.size, + 'strokes': instance.strokes, + 'strokeWeight': instance.strokeWeight, + 'strokeAlign': instance.strokeAlign, + 'styles': instance.styles, + 'fills': instance.fillsList, + 'imageReference': instance.imageReference, + 'type': instance.type, + 'points': instance.points, + 'cornerRadius': instance.cornerRadius, + 'rectangleCornerRadii': instance.rectangleCornerRadii, + }; diff --git a/lib/input/figma/entities/layers/regular_polygon.dart b/lib/input/figma/entities/layers/regular_polygon.dart new file mode 100644 index 00000000..c1b404de --- /dev/null +++ b/lib/input/figma/entities/layers/regular_polygon.dart @@ -0,0 +1,63 @@ +import 'package:parabeac_core/input/figma/entities/abstract_figma_node_factory.dart'; +import 'package:parabeac_core/input/figma/entities/layers/vector.dart'; +import 'package:parabeac_core/input/sketch/entities/objects/frame.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; +import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; +import 'package:json_annotation/json_annotation.dart'; + +import 'figma_node.dart'; + +part 'regular_polygon.g.dart'; + +@JsonSerializable(nullable: true) +class FigmaRegularPolygon extends FigmaVector + implements AbstractFigmaNodeFactory { + @override + String type = 'REGULAR_POLYGON'; + FigmaRegularPolygon({ + String name, + bool visible, + String type, + pluginData, + sharedPluginData, + style, + layoutAlign, + constraints, + Frame boundaryRectangle, + size, + fills, + strokes, + strokeWeight, + strokeAlign, + styles, + }) : super( + name: name, + visible: visible, + type: type, + pluginData: pluginData, + sharedPluginData: sharedPluginData, + style: style, + layoutAlign: layoutAlign, + constraints: constraints, + boundaryRectangle: boundaryRectangle, + size: size, + strokes: strokes, + strokeWeight: strokeWeight, + strokeAlign: strokeAlign, + styles: styles, + ); + + @override + FigmaNode createFigmaNode(Map json) => + FigmaRegularPolygon.fromJson(json); + factory FigmaRegularPolygon.fromJson(Map json) => + _$FigmaRegularPolygonFromJson(json); + @override + Map toJson() => _$FigmaRegularPolygonToJson(this); + + @override + Future interpretNode(PBContext currentContext) { + // TODO: implement interpretNode + throw UnimplementedError(); + } +} diff --git a/lib/input/figma/entities/layers/regular_polygon.g.dart b/lib/input/figma/entities/layers/regular_polygon.g.dart new file mode 100644 index 00000000..cb30639f --- /dev/null +++ b/lib/input/figma/entities/layers/regular_polygon.g.dart @@ -0,0 +1,55 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'regular_polygon.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FigmaRegularPolygon _$FigmaRegularPolygonFromJson(Map json) { + return FigmaRegularPolygon( + name: json['name'] as String, + type: json['type'] as String, + pluginData: json['pluginData'], + sharedPluginData: json['sharedPluginData'], + style: json['style'], + layoutAlign: json['layoutAlign'], + constraints: json['constraints'], + boundaryRectangle: json['absoluteBoundingBox'] == null + ? null + : Frame.fromJson(json['absoluteBoundingBox'] as Map), + size: json['size'], + strokes: json['strokes'], + strokeWeight: json['strokeWeight'], + strokeAlign: json['strokeAlign'], + styles: json['styles'], + ) + ..UUID = json['id'] as String + ..isVisible = json['visible'] as bool ?? true + ..prototypeNodeUUID = json['transitionNodeID'] as String + ..fillsList = json['fills'] as List + ..imageReference = json['imageReference'] as String; +} + +Map _$FigmaRegularPolygonToJson( + FigmaRegularPolygon instance) => + { + 'id': instance.UUID, + 'name': instance.name, + 'pluginData': instance.pluginData, + 'sharedPluginData': instance.sharedPluginData, + 'visible': instance.isVisible, + 'style': instance.style, + 'layoutAlign': instance.layoutAlign, + 'constraints': instance.constraints, + 'transitionNodeID': instance.prototypeNodeUUID, + 'absoluteBoundingBox': instance.boundaryRectangle, + 'size': instance.size, + 'strokes': instance.strokes, + 'strokeWeight': instance.strokeWeight, + 'strokeAlign': instance.strokeAlign, + 'styles': instance.styles, + 'fills': instance.fillsList, + 'imageReference': instance.imageReference, + 'type': instance.type, + }; diff --git a/lib/input/figma/entities/layers/slice.dart b/lib/input/figma/entities/layers/slice.dart new file mode 100644 index 00000000..ce997e72 --- /dev/null +++ b/lib/input/figma/entities/layers/slice.dart @@ -0,0 +1,67 @@ +import 'package:parabeac_core/input/figma/entities/abstract_figma_node_factory.dart'; +import 'package:parabeac_core/input/figma/entities/layers/figma_node.dart'; +import 'package:parabeac_core/input/sketch/entities/objects/frame.dart'; +import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; +import 'package:json_annotation/json_annotation.dart'; + +part 'slice.g.dart'; + +@JsonSerializable(nullable: true) +class FigmaSlice extends FigmaNode implements FigmaNodeFactory { + @override + String type = 'SLICE'; + + String layoutAlign; + + var constraints; + + @override + @JsonKey(name: 'transitionNodeID') + String prototypeNodeUUID; + + @override + @JsonKey(name: 'absoluteBoundingBox') + var boundaryRectangle; + + var size; + + FigmaSlice({ + String name, + bool visible, + String type, + pluginData, + sharedPluginData, + this.layoutAlign, + this.constraints, + Frame this.boundaryRectangle, + this.size, + }) : super( + name, + visible, + type, + pluginData, + sharedPluginData, + ); + + @override + FigmaNode createFigmaNode(Map json) => + FigmaSlice.fromJson(json); + factory FigmaSlice.fromJson(Map json) => + _$FigmaSliceFromJson(json); + @override + Map toJson() => _$FigmaSliceToJson(this); + + @override + Future interpretNode(PBContext currentContext) { + // TODO: implement interpretNode + throw UnimplementedError(); + } + + @override + bool isVisible; + + @override + @JsonKey(ignore: true) + var style; +} diff --git a/lib/input/figma/entities/layers/slice.g.dart b/lib/input/figma/entities/layers/slice.g.dart new file mode 100644 index 00000000..c4a72bdf --- /dev/null +++ b/lib/input/figma/entities/layers/slice.g.dart @@ -0,0 +1,40 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'slice.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FigmaSlice _$FigmaSliceFromJson(Map json) { + return FigmaSlice( + name: json['name'] as String, + type: json['type'] as String, + pluginData: json['pluginData'], + sharedPluginData: json['sharedPluginData'], + layoutAlign: json['layoutAlign'] as String, + constraints: json['constraints'], + boundaryRectangle: json['absoluteBoundingBox'] == null + ? null + : Frame.fromJson(json['absoluteBoundingBox'] as Map), + size: json['size'], + ) + ..UUID = json['id'] as String + ..prototypeNodeUUID = json['transitionNodeID'] as String + ..isVisible = json['visible'] as bool ?? true; +} + +Map _$FigmaSliceToJson(FigmaSlice instance) => + { + 'id': instance.UUID, + 'name': instance.name, + 'pluginData': instance.pluginData, + 'sharedPluginData': instance.sharedPluginData, + 'type': instance.type, + 'layoutAlign': instance.layoutAlign, + 'constraints': instance.constraints, + 'transitionNodeID': instance.prototypeNodeUUID, + 'absoluteBoundingBox': instance.boundaryRectangle, + 'size': instance.size, + 'visible': instance.isVisible, + }; diff --git a/lib/input/figma/entities/layers/star.dart b/lib/input/figma/entities/layers/star.dart new file mode 100644 index 00000000..f24d55f7 --- /dev/null +++ b/lib/input/figma/entities/layers/star.dart @@ -0,0 +1,62 @@ +import 'package:parabeac_core/input/figma/entities/abstract_figma_node_factory.dart'; +import 'package:parabeac_core/input/figma/entities/layers/vector.dart'; +import 'package:parabeac_core/input/sketch/entities/objects/frame.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; +import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; +import 'package:json_annotation/json_annotation.dart'; + +import 'figma_node.dart'; + +part 'star.g.dart'; + +@JsonSerializable(nullable: true) +class FigmaStar extends FigmaVector implements AbstractFigmaNodeFactory { + @override + String type = 'STAR'; + FigmaStar({ + String name, + bool visible, + String type, + pluginData, + sharedPluginData, + style, + layoutAlign, + constraints, + Frame boundaryRectangle, + size, + fills, + strokes, + strokeWeight, + strokeAlign, + styles, + }) : super( + name: name, + visible: visible, + type: type, + pluginData: pluginData, + sharedPluginData: sharedPluginData, + style: style, + layoutAlign: layoutAlign, + constraints: constraints, + boundaryRectangle: boundaryRectangle, + size: size, + strokes: strokes, + strokeWeight: strokeWeight, + strokeAlign: strokeAlign, + styles: styles, + ); + + @override + FigmaNode createFigmaNode(Map json) => + FigmaStar.fromJson(json); + factory FigmaStar.fromJson(Map json) => + _$FigmaStarFromJson(json); + @override + Map toJson() => _$FigmaStarToJson(this); + + @override + Future interpretNode(PBContext currentContext) { + // TODO: implement interpretNode + throw UnimplementedError(); + } +} diff --git a/lib/input/figma/entities/layers/star.g.dart b/lib/input/figma/entities/layers/star.g.dart new file mode 100644 index 00000000..c47b932e --- /dev/null +++ b/lib/input/figma/entities/layers/star.g.dart @@ -0,0 +1,53 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'star.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FigmaStar _$FigmaStarFromJson(Map json) { + return FigmaStar( + name: json['name'] as String, + type: json['type'] as String, + pluginData: json['pluginData'], + sharedPluginData: json['sharedPluginData'], + style: json['style'], + layoutAlign: json['layoutAlign'], + constraints: json['constraints'], + boundaryRectangle: json['absoluteBoundingBox'] == null + ? null + : Frame.fromJson(json['absoluteBoundingBox'] as Map), + size: json['size'], + strokes: json['strokes'], + strokeWeight: json['strokeWeight'], + strokeAlign: json['strokeAlign'], + styles: json['styles'], + ) + ..UUID = json['id'] as String + ..isVisible = json['visible'] as bool ?? true + ..prototypeNodeUUID = json['transitionNodeID'] as String + ..fillsList = json['fills'] as List + ..imageReference = json['imageReference'] as String; +} + +Map _$FigmaStarToJson(FigmaStar instance) => { + 'id': instance.UUID, + 'name': instance.name, + 'pluginData': instance.pluginData, + 'sharedPluginData': instance.sharedPluginData, + 'visible': instance.isVisible, + 'style': instance.style, + 'layoutAlign': instance.layoutAlign, + 'constraints': instance.constraints, + 'transitionNodeID': instance.prototypeNodeUUID, + 'absoluteBoundingBox': instance.boundaryRectangle, + 'size': instance.size, + 'strokes': instance.strokes, + 'strokeWeight': instance.strokeWeight, + 'strokeAlign': instance.strokeAlign, + 'styles': instance.styles, + 'fills': instance.fillsList, + 'imageReference': instance.imageReference, + 'type': instance.type, + }; diff --git a/lib/input/figma/entities/layers/text.dart b/lib/input/figma/entities/layers/text.dart new file mode 100644 index 00000000..83e4938f --- /dev/null +++ b/lib/input/figma/entities/layers/text.dart @@ -0,0 +1,96 @@ +import 'package:parabeac_core/design_logic/pb_style.dart'; +import 'package:parabeac_core/design_logic/text.dart'; +import 'package:parabeac_core/input/figma/entities/abstract_figma_node_factory.dart'; +import 'package:parabeac_core/input/figma/entities/layers/vector.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_style.dart'; +import 'package:parabeac_core/input/figma/helper/style_extractor.dart'; +import 'package:parabeac_core/input/sketch/entities/objects/frame.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/inherited_container.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/inherited_text.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; +import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/interpret_and_optimize/value_objects/point.dart'; + +import 'figma_node.dart'; + +part 'text.g.dart'; + +@JsonSerializable(nullable: true) +class FigmaText extends FigmaVector implements AbstractFigmaNodeFactory, Text { + @override + String type = 'TEXT'; + FigmaText({ + String name, + bool visible, + String type, + pluginData, + sharedPluginData, + FigmaStyle this.style, + layoutAlign, + constraints, + Frame boundaryRectangle, + size, + fills, + strokes, + strokeWeight, + strokeAlign, + styles, + this.content, + this.characterStyleOverrides, + this.styleOverrideTable, + }) : super( + name: name, + visible: visible, + type: type, + pluginData: pluginData, + sharedPluginData: sharedPluginData, + style: style, + layoutAlign: layoutAlign, + constraints: constraints, + boundaryRectangle: boundaryRectangle, + size: size, + strokes: strokes, + strokeWeight: strokeWeight, + strokeAlign: strokeAlign, + styles: styles, + ); + + @override + @JsonKey(name: 'characters') + String content; + + @override + PBStyle style; + + List characterStyleOverrides; + + Map styleOverrideTable; + + @override + FigmaNode createFigmaNode(Map json) { + var node = FigmaText.fromJson(json); + node.style = StyleExtractor().getStyle(json); + return node; + } + + factory FigmaText.fromJson(Map json) => + _$FigmaTextFromJson(json); + @override + Map toJson() => _$FigmaTextToJson(this); + + @override + Future interpretNode(PBContext currentContext) { + return Future.value(InheritedContainer( + this, + Point(boundaryRectangle.x, boundaryRectangle.y), + Point(boundaryRectangle.x + boundaryRectangle.width, + boundaryRectangle.y + boundaryRectangle.height), + name, + currentContext: currentContext, + isBackgroundVisible: style.backgroundColor != null, + )..addChild( + InheritedText(this, name, currentContext: currentContext), + )); + } +} diff --git a/lib/input/figma/entities/layers/text.g.dart b/lib/input/figma/entities/layers/text.g.dart new file mode 100644 index 00000000..01986fd2 --- /dev/null +++ b/lib/input/figma/entities/layers/text.g.dart @@ -0,0 +1,63 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'text.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FigmaText _$FigmaTextFromJson(Map json) { + return FigmaText( + name: json['name'] as String, + type: json['type'] as String, + pluginData: json['pluginData'], + sharedPluginData: json['sharedPluginData'], + style: json['style'] == null + ? null + : FigmaStyle.fromJson(json['style'] as Map), + layoutAlign: json['layoutAlign'], + constraints: json['constraints'], + boundaryRectangle: json['absoluteBoundingBox'] == null + ? null + : Frame.fromJson(json['absoluteBoundingBox'] as Map), + size: json['size'], + strokes: json['strokes'], + strokeWeight: json['strokeWeight'], + strokeAlign: json['strokeAlign'], + styles: json['styles'], + content: json['characters'] as String, + characterStyleOverrides: (json['characterStyleOverrides'] as List) + ?.map((e) => (e as num)?.toDouble()) + ?.toList(), + styleOverrideTable: json['styleOverrideTable'] as Map, + ) + ..UUID = json['id'] as String + ..isVisible = json['visible'] as bool ?? true + ..prototypeNodeUUID = json['transitionNodeID'] as String + ..fillsList = json['fills'] as List + ..imageReference = json['imageReference'] as String; +} + +Map _$FigmaTextToJson(FigmaText instance) => { + 'id': instance.UUID, + 'name': instance.name, + 'pluginData': instance.pluginData, + 'sharedPluginData': instance.sharedPluginData, + 'visible': instance.isVisible, + 'layoutAlign': instance.layoutAlign, + 'constraints': instance.constraints, + 'transitionNodeID': instance.prototypeNodeUUID, + 'absoluteBoundingBox': instance.boundaryRectangle, + 'size': instance.size, + 'strokes': instance.strokes, + 'strokeWeight': instance.strokeWeight, + 'strokeAlign': instance.strokeAlign, + 'styles': instance.styles, + 'fills': instance.fillsList, + 'imageReference': instance.imageReference, + 'type': instance.type, + 'characters': instance.content, + 'style': instance.style, + 'characterStyleOverrides': instance.characterStyleOverrides, + 'styleOverrideTable': instance.styleOverrideTable, + }; diff --git a/lib/input/figma/entities/layers/vector.dart b/lib/input/figma/entities/layers/vector.dart new file mode 100644 index 00000000..4337d287 --- /dev/null +++ b/lib/input/figma/entities/layers/vector.dart @@ -0,0 +1,98 @@ +import 'package:parabeac_core/design_logic/image.dart'; +import 'package:parabeac_core/design_logic/pb_style.dart'; +import 'package:parabeac_core/input/figma/entities/abstract_figma_node_factory.dart'; +import 'package:parabeac_core/input/figma/entities/layers/figma_node.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_style.dart'; +import 'package:parabeac_core/input/sketch/entities/objects/frame.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/inherited_bitmap.dart'; +import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/input/figma/helper/image_helper.dart' + as image_helper; +import 'package:quick_log/quick_log.dart'; + +part 'vector.g.dart'; + +@JsonSerializable(nullable: true) +class FigmaVector extends FigmaNode + with image_helper.PBImageHelperMixin + implements FigmaNodeFactory, Image { + @JsonKey(ignore: true) + Logger log; + @override + PBStyle style; + + String layoutAlign; + + var constraints; + + @override + @JsonKey(name: 'transitionNodeID') + String prototypeNodeUUID; + + @override + @JsonKey(name: 'absoluteBoundingBox') + var boundaryRectangle; + + var size; + + var strokes; + + double strokeWeight; + + String strokeAlign; + + var styles; + @override + String type = 'VECTOR'; + + @JsonKey(name: 'fills') + List fillsList; + + FigmaVector({ + String name, + bool visible, + String type, + pluginData, + sharedPluginData, + FigmaStyle this.style, + this.layoutAlign, + this.constraints, + Frame this.boundaryRectangle, + this.size, + this.strokes, + this.strokeWeight, + this.strokeAlign, + this.styles, + this.fillsList, + String UUID, + }) : super( + name, + visible, + type, + pluginData, + sharedPluginData, + UUID: UUID, + ) { + log = Logger(runtimeType.toString()); + } + + @override + FigmaNode createFigmaNode(Map json) => + FigmaVector.fromJson(json); + factory FigmaVector.fromJson(Map json) => + _$FigmaVectorFromJson(json); + @override + Map toJson() => _$FigmaVectorToJson(this); + + @override + Future interpretNode(PBContext currentContext) async { + imageReference = addToImageQueue(UUID); + + return Future.value(InheritedBitmap(this, name, currentContext: currentContext)); + } + + @override + String imageReference; +} diff --git a/lib/input/figma/entities/layers/vector.g.dart b/lib/input/figma/entities/layers/vector.g.dart new file mode 100644 index 00000000..f3469c91 --- /dev/null +++ b/lib/input/figma/entities/layers/vector.g.dart @@ -0,0 +1,56 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'vector.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FigmaVector _$FigmaVectorFromJson(Map json) { + return FigmaVector( + name: json['name'] as String, + type: json['type'] as String, + pluginData: json['pluginData'], + sharedPluginData: json['sharedPluginData'], + style: json['style'] == null + ? null + : FigmaStyle.fromJson(json['style'] as Map), + layoutAlign: json['layoutAlign'] as String, + constraints: json['constraints'], + boundaryRectangle: json['absoluteBoundingBox'] == null + ? null + : Frame.fromJson(json['absoluteBoundingBox'] as Map), + size: json['size'], + strokes: json['strokes'], + strokeWeight: (json['strokeWeight'] as num)?.toDouble(), + strokeAlign: json['strokeAlign'] as String, + styles: json['styles'], + fillsList: json['fills'] as List, + UUID: json['id'] as String, + ) + ..isVisible = json['visible'] as bool ?? true + ..prototypeNodeUUID = json['transitionNodeID'] as String + ..imageReference = json['imageReference'] as String; +} + +Map _$FigmaVectorToJson(FigmaVector instance) => + { + 'id': instance.UUID, + 'name': instance.name, + 'pluginData': instance.pluginData, + 'sharedPluginData': instance.sharedPluginData, + 'visible': instance.isVisible, + 'style': instance.style, + 'layoutAlign': instance.layoutAlign, + 'constraints': instance.constraints, + 'transitionNodeID': instance.prototypeNodeUUID, + 'absoluteBoundingBox': instance.boundaryRectangle, + 'size': instance.size, + 'strokes': instance.strokes, + 'strokeWeight': instance.strokeWeight, + 'strokeAlign': instance.strokeAlign, + 'styles': instance.styles, + 'type': instance.type, + 'fills': instance.fillsList, + 'imageReference': instance.imageReference, + }; diff --git a/lib/input/figma/entities/style/figma_border.dart b/lib/input/figma/entities/style/figma_border.dart new file mode 100644 index 00000000..9f748971 --- /dev/null +++ b/lib/input/figma/entities/style/figma_border.dart @@ -0,0 +1,29 @@ +import 'package:parabeac_core/design_logic/pb_border.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_color.dart'; +import 'package:parabeac_core/input/sketch/entities/style/color.dart'; +import 'package:json_annotation/json_annotation.dart'; + +part 'figma_border.g.dart'; + +@JsonSerializable() +class FigmaBorder implements PBBorder { + @override + final bool isEnabled; + @override + final double fillType; + @override + final FigmaColor color; + @override + final double thickness; + + FigmaBorder({ + this.isEnabled, + this.fillType, + this.color, + this.thickness, + }); + + Map toJson() => _$FigmaBorderToJson(this); + factory FigmaBorder.fromJson(Map json) => + _$FigmaBorderFromJson(json); +} diff --git a/lib/input/figma/entities/style/figma_border.g.dart b/lib/input/figma/entities/style/figma_border.g.dart new file mode 100644 index 00000000..3abb91dc --- /dev/null +++ b/lib/input/figma/entities/style/figma_border.g.dart @@ -0,0 +1,26 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'figma_border.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FigmaBorder _$FigmaBorderFromJson(Map json) { + return FigmaBorder( + isEnabled: json['isEnabled'] as bool, + fillType: (json['fillType'] as num)?.toDouble(), + color: json['color'] == null + ? null + : FigmaColor.fromJson(json['color'] as Map), + thickness: (json['thickness'] as num)?.toDouble(), + ); +} + +Map _$FigmaBorderToJson(FigmaBorder instance) => + { + 'isEnabled': instance.isEnabled, + 'fillType': instance.fillType, + 'color': instance.color, + 'thickness': instance.thickness, + }; diff --git a/lib/input/figma/entities/style/figma_border_options.dart b/lib/input/figma/entities/style/figma_border_options.dart new file mode 100644 index 00000000..34776b1c --- /dev/null +++ b/lib/input/figma/entities/style/figma_border_options.dart @@ -0,0 +1,33 @@ +import 'package:parabeac_core/design_logic/pb_border_options.dart'; + +import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_border.dart'; + +part 'figma_border_options.g.dart'; + +@JsonSerializable() +class FigmaBorderOptions implements PBBorderOptions { + @override + List dashPattern; + + @override + bool isEnabled; + + @override + int lineCapStyle; + + @override + int lineJoinStyle; + + FigmaBorderOptions( + this.dashPattern, + this.isEnabled, + this.lineCapStyle, + this.lineJoinStyle, + ); + + Map toJson() => _$FigmaBorderOptionsToJson(this); + + factory FigmaBorderOptions.fromJson(Map json) => + _$FigmaBorderOptionsFromJson(json); +} diff --git a/lib/input/figma/entities/style/figma_border_options.g.dart b/lib/input/figma/entities/style/figma_border_options.g.dart new file mode 100644 index 00000000..2e23ca16 --- /dev/null +++ b/lib/input/figma/entities/style/figma_border_options.g.dart @@ -0,0 +1,24 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'figma_border_options.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FigmaBorderOptions _$FigmaBorderOptionsFromJson(Map json) { + return FigmaBorderOptions( + json['dashPattern'] as List, + json['isEnabled'] as bool, + json['lineCapStyle'] as int, + json['lineJoinStyle'] as int, + ); +} + +Map _$FigmaBorderOptionsToJson(FigmaBorderOptions instance) => + { + 'dashPattern': instance.dashPattern, + 'isEnabled': instance.isEnabled, + 'lineCapStyle': instance.lineCapStyle, + 'lineJoinStyle': instance.lineJoinStyle, + }; diff --git a/lib/input/figma/entities/style/figma_color.dart b/lib/input/figma/entities/style/figma_color.dart new file mode 100644 index 00000000..483a2b54 --- /dev/null +++ b/lib/input/figma/entities/style/figma_color.dart @@ -0,0 +1,27 @@ +import 'package:parabeac_core/design_logic/color.dart'; + +import 'package:json_annotation/json_annotation.dart'; +part 'figma_color.g.dart'; + +@JsonSerializable() +class FigmaColor implements PBColor { + @override + double alpha; + + @override + double blue; + + @override + double green; + + @override + double red; + + FigmaColor({this.alpha, this.red, this.green, this.blue}); + + @override + Map toJson() => _$FigmaColorToJson(this); + + factory FigmaColor.fromJson(Map json) => + _$FigmaColorFromJson(json); +} diff --git a/lib/input/figma/entities/style/figma_color.g.dart b/lib/input/figma/entities/style/figma_color.g.dart new file mode 100644 index 00000000..3149fe2b --- /dev/null +++ b/lib/input/figma/entities/style/figma_color.g.dart @@ -0,0 +1,24 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'figma_color.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FigmaColor _$FigmaColorFromJson(Map json) { + return FigmaColor( + alpha: (json['alpha'] as num)?.toDouble(), + red: (json['red'] as num)?.toDouble(), + green: (json['green'] as num)?.toDouble(), + blue: (json['blue'] as num)?.toDouble(), + ); +} + +Map _$FigmaColorToJson(FigmaColor instance) => + { + 'alpha': instance.alpha, + 'blue': instance.blue, + 'green': instance.green, + 'red': instance.red, + }; diff --git a/lib/input/figma/entities/style/figma_fill.dart b/lib/input/figma/entities/style/figma_fill.dart new file mode 100644 index 00000000..1ef4bd81 --- /dev/null +++ b/lib/input/figma/entities/style/figma_fill.dart @@ -0,0 +1,20 @@ +import 'package:parabeac_core/design_logic/pb_fill.dart'; +import 'package:parabeac_core/design_logic/color.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_color.dart'; +part 'figma_fill.g.dart'; + +@JsonSerializable() +class FigmaFill implements PBFill { + @override + PBColor color; + + FigmaFill(FigmaColor this.color, [this.isEnabled = true]); + + @override + bool isEnabled; + + Map toJson() => _$FigmaFillToJson(this); + factory FigmaFill.fromJson(Map json) => + _$FigmaFillFromJson(json); +} diff --git a/lib/input/figma/entities/style/figma_fill.g.dart b/lib/input/figma/entities/style/figma_fill.g.dart new file mode 100644 index 00000000..43f47068 --- /dev/null +++ b/lib/input/figma/entities/style/figma_fill.g.dart @@ -0,0 +1,21 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'figma_fill.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FigmaFill _$FigmaFillFromJson(Map json) { + return FigmaFill( + json['color'] == null + ? null + : FigmaColor.fromJson(json['color'] as Map), + json['isEnabled'] as bool, + ); +} + +Map _$FigmaFillToJson(FigmaFill instance) => { + 'color': instance.color, + 'isEnabled': instance.isEnabled, + }; diff --git a/lib/input/figma/entities/style/figma_style.dart b/lib/input/figma/entities/style/figma_style.dart new file mode 100644 index 00000000..44768e99 --- /dev/null +++ b/lib/input/figma/entities/style/figma_style.dart @@ -0,0 +1,45 @@ +import 'package:parabeac_core/design_logic/color.dart'; +import 'package:parabeac_core/design_logic/pb_border_options.dart'; +import 'package:parabeac_core/design_logic/pb_fill.dart'; +import 'package:parabeac_core/design_logic/pb_style.dart'; +import 'package:parabeac_core/design_logic/pb_border.dart'; +import 'package:parabeac_core/design_logic/pb_text_style.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_border.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_border_options.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_color.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_fill.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_text_style.dart'; + +part 'figma_style.g.dart'; + +@JsonSerializable() +class FigmaStyle implements PBStyle { + @override + PBColor backgroundColor; + @override + List fills = []; + @override + List borders; + @override + PBTextStyle textStyle; + + FigmaStyle({ + FigmaColor this.backgroundColor, + List this.borders, + List this.fills, + FigmaTextStyle this.textStyle, + FigmaBorderOptions this.borderOptions, + }) { + if (this.fills == null) { + this.fills = []; + } + } + + @override + PBBorderOptions borderOptions; + + Map toJson() => _$FigmaStyleToJson(this); + factory FigmaStyle.fromJson(Map json) => + _$FigmaStyleFromJson(json); +} diff --git a/lib/input/figma/entities/style/figma_style.g.dart b/lib/input/figma/entities/style/figma_style.g.dart new file mode 100644 index 00000000..bac904ff --- /dev/null +++ b/lib/input/figma/entities/style/figma_style.g.dart @@ -0,0 +1,39 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'figma_style.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FigmaStyle _$FigmaStyleFromJson(Map json) { + return FigmaStyle( + backgroundColor: json['backgroundColor'] == null + ? null + : FigmaColor.fromJson(json['backgroundColor'] as Map), + borders: (json['borders'] as List) + ?.map((e) => + e == null ? null : FigmaBorder.fromJson(e as Map)) + ?.toList(), + fills: (json['fills'] as List) + ?.map((e) => + e == null ? null : FigmaFill.fromJson(e as Map)) + ?.toList(), + textStyle: json['textStyle'] == null + ? null + : FigmaTextStyle.fromJson(json['textStyle'] as Map), + borderOptions: json['borderOptions'] == null + ? null + : FigmaBorderOptions.fromJson( + json['borderOptions'] as Map), + ); +} + +Map _$FigmaStyleToJson(FigmaStyle instance) => + { + 'backgroundColor': instance.backgroundColor, + 'fills': instance.fills, + 'borders': instance.borders, + 'textStyle': instance.textStyle, + 'borderOptions': instance.borderOptions, + }; diff --git a/lib/input/figma/entities/style/figma_text_style.dart b/lib/input/figma/entities/style/figma_text_style.dart new file mode 100644 index 00000000..cc3c4760 --- /dev/null +++ b/lib/input/figma/entities/style/figma_text_style.dart @@ -0,0 +1,38 @@ +import 'package:parabeac_core/design_logic/color.dart'; +import 'package:parabeac_core/design_logic/pb_font_descriptor.dart'; +import 'package:parabeac_core/design_logic/pb_paragraph_style.dart'; +import 'package:parabeac_core/design_logic/pb_text_style.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/input/figma/entities/layers/figma_paragraph_style.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_color.dart'; +import 'package:parabeac_core/input/sketch/entities/style/color.dart'; + +part 'figma_text_style.g.dart'; + +@JsonSerializable() +class FigmaTextStyle implements PBTextStyle { + @override + PBColor fontColor; + + @override + String weight; + + @JsonKey(ignore: true) + @override + PBFontDescriptor fontDescriptor; + + @override + @JsonKey(ignore: true) + PBParagraphStyle paragraphStyle; + + FigmaTextStyle({ + FigmaColor this.fontColor, + this.fontDescriptor, + this.weight, + this.paragraphStyle, + }); + + Map toJson() => _$FigmaTextStyleToJson(this); + factory FigmaTextStyle.fromJson(Map json) => + _$FigmaTextStyleFromJson(json); +} diff --git a/lib/input/figma/entities/style/figma_text_style.g.dart b/lib/input/figma/entities/style/figma_text_style.g.dart new file mode 100644 index 00000000..d5097964 --- /dev/null +++ b/lib/input/figma/entities/style/figma_text_style.g.dart @@ -0,0 +1,22 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'figma_text_style.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FigmaTextStyle _$FigmaTextStyleFromJson(Map json) { + return FigmaTextStyle( + fontColor: json['fontColor'] == null + ? null + : FigmaColor.fromJson(json['fontColor'] as Map), + weight: json['weight'] as String, + ); +} + +Map _$FigmaTextStyleToJson(FigmaTextStyle instance) => + { + 'fontColor': instance.fontColor, + 'weight': instance.weight, + }; diff --git a/lib/input/figma/helper/figma_node_tree.dart b/lib/input/figma/helper/figma_node_tree.dart new file mode 100644 index 00000000..49f7edf7 --- /dev/null +++ b/lib/input/figma/helper/figma_node_tree.dart @@ -0,0 +1,40 @@ +import 'package:parabeac_core/input/figma/entities/layers/canvas.dart'; +import 'package:parabeac_core/input/figma/helper/figma_page.dart'; +import 'package:parabeac_core/input/helper/node_tree.dart'; +import 'package:quick_log/src/logger.dart'; + +import 'figma_page_item.dart'; + +class FigmaNodeTree extends NodeTree { + @override + bool debug; + + @override + Logger log = Logger('FigmaNodeTree'); + + @override + String projectName; + + var figmaJson; + + FigmaPage rootScreen; + + FigmaNodeTree(this.projectName, this.figmaJson) { + pages.addAll(_setConventionalPages(figmaJson['document']['children'])); + } + + List _setConventionalPages(var canvasAndArtboards) { + var figmaPages = []; + for (var canvas in canvasAndArtboards) { + var pg = FigmaPage(canvas['name']); + + var node = Canvas.fromJson(canvas); + + for (var layer in node.children) { + pg.addPageItem(FigmaPageItem(layer, pg)); + } + figmaPages.add(pg); + } + return figmaPages; + } +} diff --git a/lib/input/figma/helper/figma_page.dart b/lib/input/figma/helper/figma_page.dart new file mode 100644 index 00000000..345d06b0 --- /dev/null +++ b/lib/input/figma/helper/figma_page.dart @@ -0,0 +1,8 @@ +import 'package:parabeac_core/input/helper/page.dart'; +import 'package:quick_log/quick_log.dart'; + +class FigmaPage extends Page { + @override + var log = Logger('Figma'); + FigmaPage(String name) : super(name); +} diff --git a/lib/input/figma/helper/figma_page_item.dart b/lib/input/figma/helper/figma_page_item.dart new file mode 100644 index 00000000..eba9a29a --- /dev/null +++ b/lib/input/figma/helper/figma_page_item.dart @@ -0,0 +1,7 @@ +import 'package:parabeac_core/design_logic/design_node.dart'; +import 'package:parabeac_core/input/helper/page.dart'; +import 'package:parabeac_core/input/helper/page_item.dart'; + +class FigmaPageItem extends PageItem { + FigmaPageItem(DesignNode root, Page parentPage) : super(root, parentPage); +} diff --git a/lib/input/figma/helper/image_helper.dart b/lib/input/figma/helper/image_helper.dart new file mode 100644 index 00000000..f5f6f2a7 --- /dev/null +++ b/lib/input/figma/helper/image_helper.dart @@ -0,0 +1,75 @@ +import 'dart:io'; + +import 'package:http/http.dart' as http; +import 'package:parabeac_core/APICaller/api_call_service.dart'; +import 'package:parabeac_core/controllers/main_info.dart'; +import 'package:quick_log/quick_log.dart'; + +List uuidQueue = []; + +Logger log = Logger('Figma Image helper'); + +/// Downloads the image with the given `UUID` +/// and writes it to the `pngs` folder in the `outputPath`. +/// Returns true if the operation was successful. Returns false +/// otherwise. +Future _processImages(List uuids) async { + // Call Figma API to get Image link + return Future(() async { + var response = await APICallService.makeAPICall( + 'https://api.figma.com/v1/images/${MainInfo().figmaProjectID}?ids=${uuids.join(',')}', + MainInfo().figmaKey); + + if (response != null && + response.containsKey('images') && + response['images'] != null && + response['images'].values.isNotEmpty) { + Map images = response['images']; + // Download the images + for (var entry in images.entries) { + if (entry?.value != null && entry?.value.isNotEmpty) { + response = await http.get(entry.value).then((imageRes) { + // Check if the request was successful + if (imageRes == null || imageRes.statusCode != 200) { + log.error('Image ${entry.key} was not processed correctly'); + } + + var file = File('${MainInfo().outputPath}pngs/${entry.key}.png' + .replaceAll(':', '_')); + file.writeAsBytesSync(imageRes.bodyBytes); + // TODO: Only print out when verbose flag is active + // log.debug('File written to following path ${file.path}'); + }).catchError(log.error); + } + } + return response; + } + }); + // TODO: Investigate API call for when values.first == null +} + +Future processImageQueue() async { + // Split uuids into 6 lists to create separate API requests to figma + List> uuidLists = List.generate(8, (_) => []); + for (var i = 0; i < uuidQueue.length; i++) { + uuidLists[i % 8].add(uuidQueue[i]); + } + + // Process images in separate queues + List futures = []; + for (var uuidList in uuidLists) { + futures.add(_processImages(uuidList)); + } + + // Wait for the images to complete writing process + await Future.wait(futures, eagerError: true); +} + +mixin PBImageHelperMixin { + /// Adds [uuid] to queue to be processed as an image. + /// Returns the formatted name of the image reference. + String addToImageQueue(String uuid) { + uuidQueue.add(uuid); + return ('images/' + uuid + '.png').replaceAll(':', '_'); + } +} diff --git a/lib/input/figma/helper/style_extractor.dart b/lib/input/figma/helper/style_extractor.dart new file mode 100644 index 00000000..2eded750 --- /dev/null +++ b/lib/input/figma/helper/style_extractor.dart @@ -0,0 +1,140 @@ +import 'package:parabeac_core/design_logic/pb_paragraph_style.dart'; +import 'package:parabeac_core/design_logic/pb_style.dart'; +import 'package:parabeac_core/input/figma/entities/layers/figma_font_descriptor.dart'; +import 'package:parabeac_core/input/figma/entities/layers/figma_paragraph_style.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_border.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_border_options.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_color.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_fill.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_style.dart'; +import 'package:parabeac_core/input/figma/entities/style/figma_text_style.dart'; + +/// Helper class used to get and sort the styling of FigmaNodes +class StyleExtractor { + StyleExtractor(); + + PBStyle getStyle(Map json) { + if (json != null) { + var bgColor; + // Check if color exists in fills + if (json['fills'] != null && json['fills'].isNotEmpty) { + // Check if color should be visible + if (!json['fills'][0].containsKey('visible') || + !json['fills'][0]['visible']) { + bgColor = _getColor(null); + } else { + bgColor = _getColor(json['background'][0]['color']); + } + } else { + bgColor = _getColor(null); + } + + var textStyle; + if (json['style'] != null) { + textStyle = _getTextStyle(json); + } + + List borders = []; + + var strokes = json['strokes']; + + var borderOptions; + + var visible = strokes.isNotEmpty ? strokes[0]['visible'] : false; + + var figmaBorder = FigmaBorder( + isEnabled: visible ?? false, + fillType: strokes.isNotEmpty ? strokes[0]['opacity'] : 1.0, + color: strokes.isNotEmpty + ? _getColor(strokes[0]['color']) + : _getColor(null), + thickness: json['strokeWeight'], + ); + + var tempVisible = strokes.isNotEmpty ? strokes[0]['visible'] : false; + + borderOptions = FigmaBorderOptions( + json['strokeDashes'], + tempVisible ?? false, + json['strokeCap'], + json['strokeJoin'], + ); + + borders.add(figmaBorder); + + List fills = []; + + var fill = FigmaFill( + _getColor(json['fills'].isNotEmpty ? json['fills'][0]['color'] : null), + ); + + fills.add(fill); + + return FigmaStyle( + backgroundColor: bgColor, + borders: borders, + textStyle: textStyle, + borderOptions: borderOptions, + fills: fills, + ); + } else { + return null; + } + } + + FigmaTextStyle _getTextStyle(Map json) { + var fontColor = json['fills'] != null + ? _getColor(json['fills'][0]['color']) + : _getColor(null); + var fontDescriptor = _getFontDescriptor(json['style']); + var alignment = _getAlignment(json['style']['textAlignHorizontal']); + + return FigmaTextStyle( + fontColor: fontColor, + fontDescriptor: fontDescriptor, + weight: '${json['style']['fontWeight']}', + paragraphStyle: FigmaParagraphStyle(alignment: alignment.index), + ); + } + + ALIGNMENT _getAlignment(String align) { + switch (align) { + case 'RIGHT': + return ALIGNMENT.RIGHT; + break; + case 'JUSTIFIED': + return ALIGNMENT.JUSTIFY; + break; + case 'CENTER': + return ALIGNMENT.CENTER; + break; + case 'LEFT': + default: + return ALIGNMENT.LEFT; + } + } + + FigmaFontDescriptor _getFontDescriptor(Map json) { + return FigmaFontDescriptor( + json['fontFamily'], + json['fontSize'], + json, + 'w' + (json['fontWeight'].toString() ?? '100'), + json.containsKey('italic') && json['italic'] ? 'italic' : 'normal', + json['letterSpacing'], + ); + } + + FigmaColor _getColor(Map json) { + if (json != null && json.isNotEmpty) { + return FigmaColor( + alpha: json['a'], + blue: json['b'], + green: json['g'], + red: json['r'], + ); + } else { + return null; + } + } +} diff --git a/lib/input/helper/node_tree.dart b/lib/input/helper/node_tree.dart new file mode 100644 index 00000000..2de786d3 --- /dev/null +++ b/lib/input/helper/node_tree.dart @@ -0,0 +1,23 @@ +import 'package:parabeac_core/input/helper/page.dart'; +import 'package:quick_log/quick_log.dart'; + +abstract class NodeTree { + var log = Logger('NodeTree'); + String projectName; + bool debug = false; + + List pages = []; + List miscPages = []; + + Map toJson() { + var result = {}; + result['projectName'] = projectName; + for (var page in pages) { + result.addAll(page.toJson()); + } + for (var page in miscPages) { + result.addAll(page.toJson()); + } + return result; + } +} diff --git a/lib/input/helper/page.dart b/lib/input/helper/page.dart new file mode 100644 index 00000000..6f499eba --- /dev/null +++ b/lib/input/helper/page.dart @@ -0,0 +1,33 @@ +import 'package:parabeac_core/input/helper/page_item.dart'; +import 'package:quick_log/quick_log.dart'; + +class Page { + var log = Logger('Sketch'); + + String name; + List _pageItems = []; + + Page( + this.name, + ) { + _pageItems = []; + } + + void addPageItem(PageItem item) { + _pageItems.add(item); + } + + List getPageItems() { + log.info('We encountered a page that has 0 page items.'); + return _pageItems; + } + + Map toJson() { + Map result = {}; + result['name'] = name; + for (var item in _pageItems) { + result.addAll(item.root.toJson()); + } + return result; + } +} diff --git a/lib/input/helper/page_item.dart b/lib/input/helper/page_item.dart new file mode 100644 index 00000000..ffa68a00 --- /dev/null +++ b/lib/input/helper/page_item.dart @@ -0,0 +1,10 @@ +import 'package:parabeac_core/design_logic/design_node.dart'; +import 'package:parabeac_core/input/helper/page.dart'; + +class PageItem { + DesignNode root; + Page parentPage; + PageItem(this.root, this.parentPage); + + Map toJson() => root.toJson(); +} diff --git a/lib/input/sketch/entities/documents/abstract_document.dart b/lib/input/sketch/entities/documents/abstract_document.dart index b09a589d..f5785a32 100644 --- a/lib/input/sketch/entities/documents/abstract_document.dart +++ b/lib/input/sketch/entities/documents/abstract_document.dart @@ -2,7 +2,7 @@ import 'package:parabeac_core/input/sketch/entities/objects/foreign_symbol.dart' abstract class AbstractDocument { final String CLASS_NAME = 'document'; - final dynamic do_objectID; + final dynamic UUID; final dynamic assets; final dynamic colorSpace; final dynamic currentPageIndex; @@ -17,7 +17,7 @@ abstract class AbstractDocument { final bool agreedToFontEmbedding; AbstractDocument( - this.do_objectID, + this.UUID, this.assets, this.colorSpace, this.currentPageIndex, diff --git a/lib/input/sketch/entities/documents/document.dart b/lib/input/sketch/entities/documents/document.dart index e23afaab..cd37ae9e 100644 --- a/lib/input/sketch/entities/documents/document.dart +++ b/lib/input/sketch/entities/documents/document.dart @@ -11,7 +11,7 @@ class Document extends AbstractDocument { Document( this.pages, - do_objectID, + UUID, assets, colorSpace, currentPageIndex, @@ -25,7 +25,7 @@ class Document extends AbstractDocument { bool autoEmbedFonts, bool agreedToFontEmbedding) : super( - do_objectID, + UUID, assets, colorSpace, currentPageIndex, diff --git a/lib/input/sketch/entities/documents/document.g.dart b/lib/input/sketch/entities/documents/document.g.dart index 5e65f758..d6cb30f2 100644 --- a/lib/input/sketch/entities/documents/document.g.dart +++ b/lib/input/sketch/entities/documents/document.g.dart @@ -9,7 +9,7 @@ part of 'document.dart'; Document _$DocumentFromJson(Map json) { return Document( json['pages'] as List, - json['do_objectID'], + json['UUID'], json['assets'], json['colorSpace'], json['currentPageIndex'], @@ -30,7 +30,7 @@ Document _$DocumentFromJson(Map json) { } Map _$DocumentToJson(Document instance) => { - 'do_objectID': instance.do_objectID, + 'UUID': instance.UUID, 'assets': instance.assets, 'colorSpace': instance.colorSpace, 'currentPageIndex': instance.currentPageIndex, diff --git a/lib/input/sketch/entities/layers/abstract_group_layer.dart b/lib/input/sketch/entities/layers/abstract_group_layer.dart index 8c094bd7..2d7ac429 100644 --- a/lib/input/sketch/entities/layers/abstract_group_layer.dart +++ b/lib/input/sketch/entities/layers/abstract_group_layer.dart @@ -1,18 +1,20 @@ +import 'package:parabeac_core/design_logic/group_node.dart'; import 'package:parabeac_core/input/sketch/entities/layers/abstract_layer.dart'; import 'package:parabeac_core/input/sketch/entities/layers/flow.dart'; import 'package:parabeac_core/input/sketch/entities/objects/frame.dart'; import 'package:parabeac_core/input/sketch/entities/style/style.dart'; -abstract class AbstractGroupLayer extends SketchNode { +abstract class AbstractGroupLayer extends SketchNode implements GroupNode { final bool hasClickThrough; final dynamic groupLayout; - final List layers; + @override + final List children; AbstractGroupLayer( this.hasClickThrough, this.groupLayout, - this.layers, - do_objectID, + this.children, + UUID, booleanOperation, exportOptions, Frame boundaryRectangle, @@ -36,7 +38,7 @@ abstract class AbstractGroupLayer extends SketchNode { Style style, maintainScrollPosition) : super( - do_objectID, + UUID, booleanOperation, exportOptions, boundaryRectangle, diff --git a/lib/input/sketch/entities/layers/abstract_layer.dart b/lib/input/sketch/entities/layers/abstract_layer.dart index cc76149f..68b1d720 100644 --- a/lib/input/sketch/entities/layers/abstract_layer.dart +++ b/lib/input/sketch/entities/layers/abstract_layer.dart @@ -12,7 +12,9 @@ import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; // description: Abstract base schema for all layers // type: object abstract class SketchNode implements DesignNode { - final String do_objectID; + @override + @JsonKey(name: 'do_objectID') + final String UUID; final dynamic booleanOperation; final dynamic exportOptions; @@ -46,7 +48,7 @@ abstract class SketchNode implements DesignNode { String get prototypeNodeUUID => flow?.destinationArtboardID; SketchNode( - this.do_objectID, + this.UUID, this.booleanOperation, this.exportOptions, Frame this.boundaryRectangle, @@ -70,6 +72,7 @@ abstract class SketchNode implements DesignNode { this.style, this.maintainScrollPosition); + @override Map toJson(); factory SketchNode.fromJson(Map json) => AbstractSketchNodeFactory.getSketchNode(json); diff --git a/lib/input/sketch/entities/layers/abstract_shape_layer.dart b/lib/input/sketch/entities/layers/abstract_shape_layer.dart index 30b33a24..4ebb3301 100644 --- a/lib/input/sketch/entities/layers/abstract_shape_layer.dart +++ b/lib/input/sketch/entities/layers/abstract_shape_layer.dart @@ -17,7 +17,7 @@ abstract class AbstractShapeLayer extends SketchNode implements DesignShape { this.isClosed, this.pointRadiusBehaviour, this.points, - do_objectID, + UUID, booleanOperation, exportOptions, Frame boundaryRectangle, @@ -41,7 +41,7 @@ abstract class AbstractShapeLayer extends SketchNode implements DesignShape { Style style, maintainScrollPosition) : super( - do_objectID, + UUID, booleanOperation, exportOptions, boundaryRectangle, diff --git a/lib/input/sketch/entities/layers/artboard.dart b/lib/input/sketch/entities/layers/artboard.dart index 1b0d1e5d..bda323f1 100644 --- a/lib/input/sketch/entities/layers/artboard.dart +++ b/lib/input/sketch/entities/layers/artboard.dart @@ -78,7 +78,7 @@ class Artboard extends AbstractGroupLayer this.presetDictionary, hasClickThrough, groupLayout, - List children, + List this.children, this.UUID, booleanOperation, exportOptions, diff --git a/lib/input/sketch/entities/layers/bitmap.dart b/lib/input/sketch/entities/layers/bitmap.dart index 14a17964..73edd455 100644 --- a/lib/input/sketch/entities/layers/bitmap.dart +++ b/lib/input/sketch/entities/layers/bitmap.dart @@ -4,7 +4,6 @@ import 'package:parabeac_core/input/sketch/entities/abstract_sketch_node_factory import 'package:parabeac_core/input/sketch/entities/layers/abstract_layer.dart'; import 'package:parabeac_core/input/sketch/entities/layers/flow.dart'; import 'package:parabeac_core/input/sketch/entities/objects/frame.dart'; -import 'package:parabeac_core/input/sketch/entities/objects/image_ref.dart'; import 'package:parabeac_core/input/sketch/entities/style/style.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/inherited_bitmap.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; @@ -21,7 +20,6 @@ part 'bitmap.g.dart'; class Bitmap extends SketchNode implements SketchNodeFactory, Image { @override String CLASS_NAME = 'bitmap'; - final ImageRef image; final bool fillReplacesImage; final int intendedDPI; final dynamic clippingMask; @@ -34,35 +32,36 @@ class Bitmap extends SketchNode implements SketchNodeFactory, Image { @JsonKey(name: 'do_objectID') String UUID; - Bitmap( - {this.image, - this.fillReplacesImage, - this.intendedDPI, - this.clippingMask, - this.UUID, - booleanOperation, - exportOptions, - Frame this.boundaryRectangle, - Flow flow, - isFixedToViewport, - isFlippedHorizontal, - isFlippedVertical, - isLocked, - isVisible, - layerListExpandedType, - name, - nameIsFixed, - resizingConstraint, - resizingType, - rotation, - sharedStyleID, - shouldBreakMaskChain, - hasClippingMask, - clippingMaskMode, - userInfo, - Style style, - maintainScrollPosition}) - : _isVisible = isVisible, + Bitmap({ + this.imageReference, + this.fillReplacesImage, + this.intendedDPI, + this.clippingMask, + this.UUID, + booleanOperation, + exportOptions, + Frame this.boundaryRectangle, + Flow flow, + isFixedToViewport, + isFlippedHorizontal, + isFlippedVertical, + isLocked, + isVisible, + layerListExpandedType, + name, + nameIsFixed, + resizingConstraint, + resizingType, + rotation, + sharedStyleID, + shouldBreakMaskChain, + hasClippingMask, + clippingMaskMode, + userInfo, + Style style, + maintainScrollPosition, + this.imageReferenceMap = const {}, + }) : _isVisible = isVisible, _style = style, super( UUID, @@ -87,7 +86,9 @@ class Bitmap extends SketchNode implements SketchNodeFactory, Image { clippingMaskMode, userInfo, style, - maintainScrollPosition); + maintainScrollPosition) { + imageReference ??= imageReferenceMap['_ref']; + } @override SketchNode createSketchNode(Map json) => @@ -108,11 +109,15 @@ class Bitmap extends SketchNode implements SketchNodeFactory, Image { if (intermediateNode != null) { return intermediateNode; } - return Future.value(InheritedBitmap(this, currentContext: currentContext)); + return Future.value( + InheritedBitmap(this, name, currentContext: currentContext)); } + @JsonKey(name: 'image') + Map imageReferenceMap; + @override - @JsonKey(name: '_ref') + @JsonKey(ignore: true) String imageReference; @override diff --git a/lib/input/sketch/entities/layers/bitmap.g.dart b/lib/input/sketch/entities/layers/bitmap.g.dart index aa8f33c0..2040c543 100644 --- a/lib/input/sketch/entities/layers/bitmap.g.dart +++ b/lib/input/sketch/entities/layers/bitmap.g.dart @@ -8,9 +8,6 @@ part of 'bitmap.dart'; Bitmap _$BitmapFromJson(Map json) { return Bitmap( - image: json['image'] == null - ? null - : ImageRef.fromJson(json['image'] as Map), fillReplacesImage: json['fillReplacesImage'] as bool, intendedDPI: json['intendedDPI'] as int, clippingMask: json['clippingMask'], @@ -43,10 +40,10 @@ Bitmap _$BitmapFromJson(Map json) { ? null : Style.fromJson(json['style'] as Map), maintainScrollPosition: json['maintainScrollPosition'], + imageReferenceMap: json['image'] as Map, ) ..prototypeNodeUUID = json['prototypeNodeUUID'] as String ..CLASS_NAME = json['CLASS_NAME'] as String - ..imageReference = json['_ref'] as String ..type = json['_class'] as String; } @@ -72,13 +69,12 @@ Map _$BitmapToJson(Bitmap instance) => { 'maintainScrollPosition': instance.maintainScrollPosition, 'prototypeNodeUUID': instance.prototypeNodeUUID, 'CLASS_NAME': instance.CLASS_NAME, - 'image': instance.image, 'fillReplacesImage': instance.fillReplacesImage, 'intendedDPI': instance.intendedDPI, 'clippingMask': instance.clippingMask, 'frame': instance.boundaryRectangle, 'do_objectID': instance.UUID, - '_ref': instance.imageReference, + 'image': instance.imageReferenceMap, '_class': instance.type, 'isVisible': instance.isVisible, 'style': instance.style, diff --git a/lib/input/sketch/entities/layers/group.dart b/lib/input/sketch/entities/layers/group.dart index 64830aa9..f8684e79 100644 --- a/lib/input/sketch/entities/layers/group.dart +++ b/lib/input/sketch/entities/layers/group.dart @@ -47,10 +47,14 @@ class Group extends AbstractGroupLayer implements SketchNodeFactory { @override Style get style => _style; + @override + @JsonKey(name: 'layers') + List children; + Group( {bool hasClickThrough, groupLayout, - List layers, + List this.children, this.UUID, booleanOperation, exportOptions, @@ -79,7 +83,7 @@ class Group extends AbstractGroupLayer implements SketchNodeFactory { super( hasClickThrough, groupLayout, - layers, + children, UUID, booleanOperation, exportOptions, @@ -111,7 +115,7 @@ class Group extends AbstractGroupLayer implements SketchNodeFactory { Map toJson() => _$GroupToJson(this); @override Future interpretNode(PBContext currentContext) => - Future.value(TempGroupLayoutNode(this, currentContext, + Future.value(TempGroupLayoutNode(this, currentContext, name, topLeftCorner: Point(boundaryRectangle.x, boundaryRectangle.y), bottomRightCorner: Point( boundaryRectangle.x + boundaryRectangle.width, diff --git a/lib/input/sketch/entities/layers/group.g.dart b/lib/input/sketch/entities/layers/group.g.dart index 33a57ce8..63166ea2 100644 --- a/lib/input/sketch/entities/layers/group.g.dart +++ b/lib/input/sketch/entities/layers/group.g.dart @@ -10,7 +10,7 @@ Group _$GroupFromJson(Map json) { return Group( hasClickThrough: json['hasClickThrough'] as bool, groupLayout: json['groupLayout'], - layers: (json['layers'] as List) + children: (json['layers'] as List) ?.map((e) => e == null ? null : SketchNode.fromJson(e as Map)) ?.toList(), @@ -73,7 +73,6 @@ Map _$GroupToJson(Group instance) => { 'prototypeNodeUUID': instance.prototypeNodeUUID, 'hasClickThrough': instance.hasClickThrough, 'groupLayout': instance.groupLayout, - 'layers': instance.layers, 'CLASS_NAME': instance.CLASS_NAME, 'frame': instance.boundaryRectangle, 'do_objectID': instance.UUID, @@ -81,4 +80,5 @@ Map _$GroupToJson(Group instance) => { '_class': instance.type, 'isVisible': instance.isVisible, 'style': instance.style, + 'layers': instance.children, }; diff --git a/lib/input/sketch/entities/layers/oval.dart b/lib/input/sketch/entities/layers/oval.dart index 38fceaba..c89ade55 100644 --- a/lib/input/sketch/entities/layers/oval.dart +++ b/lib/input/sketch/entities/layers/oval.dart @@ -121,7 +121,7 @@ class Oval extends AbstractShapeLayer implements SketchNodeFactory { if (image == null) { return null; } - return Future.value( - InheritedOval(this, currentContext: currentContext, image: image)); + return Future.value(InheritedOval(this, name, + currentContext: currentContext, image: image)); } } diff --git a/lib/input/sketch/entities/layers/page.dart b/lib/input/sketch/entities/layers/page.dart index 8135f81e..751791f4 100644 --- a/lib/input/sketch/entities/layers/page.dart +++ b/lib/input/sketch/entities/layers/page.dart @@ -39,6 +39,10 @@ class Page extends AbstractGroupLayer implements SketchNodeFactory { Style _style; + @override + @JsonKey(name: 'layers') + List children; + @override void set isVisible(bool _isVisible) => this._isVisible = _isVisible; @@ -54,7 +58,7 @@ class Page extends AbstractGroupLayer implements SketchNodeFactory { Page( {bool hasClickThrough, groupLayout, - List layers, + List this.children, this.UUID, booleanOperation, exportOptions, @@ -83,7 +87,7 @@ class Page extends AbstractGroupLayer implements SketchNodeFactory { super( hasClickThrough, groupLayout, - layers, + children, UUID, booleanOperation, exportOptions, diff --git a/lib/input/sketch/entities/layers/page.g.dart b/lib/input/sketch/entities/layers/page.g.dart index aff4ad47..ca9f0078 100644 --- a/lib/input/sketch/entities/layers/page.g.dart +++ b/lib/input/sketch/entities/layers/page.g.dart @@ -10,7 +10,7 @@ Page _$PageFromJson(Map json) { return Page( hasClickThrough: json['hasClickThrough'] as bool, groupLayout: json['groupLayout'], - layers: (json['layers'] as List) + children: (json['layers'] as List) ?.map((e) => e == null ? null : SketchNode.fromJson(e as Map)) ?.toList(), @@ -77,7 +77,6 @@ Map _$PageToJson(Page instance) => { 'prototypeNodeUUID': instance.prototypeNodeUUID, 'hasClickThrough': instance.hasClickThrough, 'groupLayout': instance.groupLayout, - 'layers': instance.layers, 'CLASS_NAME': instance.CLASS_NAME, 'includeInCloudUpload': instance.includeInCloudUpload, 'horizontalRulerData': instance.horizontalRulerData, @@ -87,6 +86,7 @@ Map _$PageToJson(Page instance) => { 'frame': instance.boundaryRectangle, 'do_objectID': instance.UUID, '_class': instance.type, + 'layers': instance.children, 'isVisible': instance.isVisible, 'style': instance.style, }; diff --git a/lib/input/sketch/entities/layers/polygon.dart b/lib/input/sketch/entities/layers/polygon.dart index 4b48ed3c..a84b6bb8 100644 --- a/lib/input/sketch/entities/layers/polygon.dart +++ b/lib/input/sketch/entities/layers/polygon.dart @@ -110,7 +110,8 @@ class Polygon extends AbstractShapeLayer implements SketchNodeFactory { return polygon; } - factory Polygon.fromJson(Map json) => _$PolygonFromJson(json); + factory Polygon.fromJson(Map json) => + _$PolygonFromJson(json); @override Map toJson() => _$PolygonToJson(this); @@ -121,7 +122,7 @@ class Polygon extends AbstractShapeLayer implements SketchNodeFactory { if (image == null) { return null; } - return Future.value( - InheritedPolygon(this, currentContext: currentContext, image: image)); + return Future.value(InheritedPolygon(this, name, + currentContext: currentContext, image: image)); } } diff --git a/lib/input/sketch/entities/layers/rectangle.dart b/lib/input/sketch/entities/layers/rectangle.dart index ce294915..3289858a 100644 --- a/lib/input/sketch/entities/layers/rectangle.dart +++ b/lib/input/sketch/entities/layers/rectangle.dart @@ -1,3 +1,4 @@ +import 'package:parabeac_core/design_logic/color.dart'; import 'package:json_annotation/json_annotation.dart'; import 'package:parabeac_core/input/sketch/entities/abstract_sketch_node_factory.dart'; import 'package:parabeac_core/input/sketch/entities/layers/abstract_layer.dart'; @@ -17,7 +18,9 @@ part 'rectangle.g.dart'; // description: // Rectangle layers are the result of adding a rectangle shape to the canvas @JsonSerializable(nullable: true) -class Rectangle extends AbstractShapeLayer implements SketchNodeFactory { +class Rectangle extends AbstractShapeLayer + with PBColorMixin + implements SketchNodeFactory { @override String CLASS_NAME = 'rectangle'; final double fixedRadius; @@ -132,12 +135,13 @@ class Rectangle extends AbstractShapeLayer implements SketchNodeFactory { Point(boundaryRectangle.x, boundaryRectangle.y), Point(boundaryRectangle.x + boundaryRectangle.width, boundaryRectangle.y + boundaryRectangle.height), + name, currentContext: currentContext, borderInfo: { 'borderRadius': style.borderOptions.isEnabled ? points[0]['cornerRadius'] : null, - 'borderColorHex': border != null ? border.color.toHex() : null, - 'borderThickness' : border != null ? border.thickness : null + 'borderColorHex': border != null ? toHex(border.color) : null, + 'borderThickness': border != null ? border.thickness : null }, )); } diff --git a/lib/input/sketch/entities/layers/shape_group.dart b/lib/input/sketch/entities/layers/shape_group.dart index 081435ad..366c66db 100644 --- a/lib/input/sketch/entities/layers/shape_group.dart +++ b/lib/input/sketch/entities/layers/shape_group.dart @@ -47,10 +47,14 @@ class ShapeGroup extends AbstractGroupLayer implements SketchNodeFactory { @override Style get style => _style; + @override + @JsonKey(name: 'layers') + List children; + ShapeGroup( {bool hasClickThrough, groupLayout, - List layers, + List this.children, this.UUID, booleanOperation, exportOptions, @@ -80,7 +84,7 @@ class ShapeGroup extends AbstractGroupLayer implements SketchNodeFactory { super( hasClickThrough, groupLayout, - layers, + children, UUID, booleanOperation, exportOptions, @@ -120,7 +124,7 @@ class ShapeGroup extends AbstractGroupLayer implements SketchNodeFactory { if (image == null) { return null; } - return InheritedShapeGroup(this, + return InheritedShapeGroup(this, name, currentContext: currentContext, image: image); } } diff --git a/lib/input/sketch/entities/layers/shape_group.g.dart b/lib/input/sketch/entities/layers/shape_group.g.dart index e921f514..45638bce 100644 --- a/lib/input/sketch/entities/layers/shape_group.g.dart +++ b/lib/input/sketch/entities/layers/shape_group.g.dart @@ -10,7 +10,7 @@ ShapeGroup _$ShapeGroupFromJson(Map json) { return ShapeGroup( hasClickThrough: json['hasClickThrough'] as bool, groupLayout: json['groupLayout'], - layers: (json['layers'] as List) + children: (json['layers'] as List) ?.map((e) => e == null ? null : SketchNode.fromJson(e as Map)) ?.toList(), @@ -74,7 +74,6 @@ Map _$ShapeGroupToJson(ShapeGroup instance) => 'prototypeNodeUUID': instance.prototypeNodeUUID, 'hasClickThrough': instance.hasClickThrough, 'groupLayout': instance.groupLayout, - 'layers': instance.layers, 'CLASS_NAME': instance.CLASS_NAME, 'windingRule': instance.windingRule, 'frame': instance.boundaryRectangle, @@ -82,4 +81,5 @@ Map _$ShapeGroupToJson(ShapeGroup instance) => '_class': instance.type, 'isVisible': instance.isVisible, 'style': instance.style, + 'layers': instance.children, }; diff --git a/lib/input/sketch/entities/layers/shape_path.dart b/lib/input/sketch/entities/layers/shape_path.dart index 46f8e0b8..f6f928f7 100644 --- a/lib/input/sketch/entities/layers/shape_path.dart +++ b/lib/input/sketch/entities/layers/shape_path.dart @@ -120,10 +120,7 @@ class ShapePath extends AbstractShapeLayer implements SketchNodeFactory { if (image == null) { return null; } - return Future.value( - InheritedShapePath(this, currentContext: currentContext, image: image)); + return Future.value(InheritedShapePath(this, name, + currentContext: currentContext, image: image)); } - - @override - var designNode; } diff --git a/lib/input/sketch/entities/layers/shape_path.g.dart b/lib/input/sketch/entities/layers/shape_path.g.dart index 598c4cea..21d529ec 100644 --- a/lib/input/sketch/entities/layers/shape_path.g.dart +++ b/lib/input/sketch/entities/layers/shape_path.g.dart @@ -44,8 +44,7 @@ ShapePath _$ShapePathFromJson(Map json) { ) ..prototypeNodeUUID = json['prototypeNodeUUID'] as String ..CLASS_NAME = json['CLASS_NAME'] as String - ..type = json['_class'] as String - ..designNode = json['designNode']; + ..type = json['_class'] as String; } Map _$ShapePathToJson(ShapePath instance) => { @@ -79,5 +78,4 @@ Map _$ShapePathToJson(ShapePath instance) => { '_class': instance.type, 'isVisible': instance.isVisible, 'style': instance.style, - 'designNode': instance.designNode, }; diff --git a/lib/input/sketch/entities/layers/sketch_text.dart b/lib/input/sketch/entities/layers/sketch_text.dart index 27506fa8..63acbcdf 100644 --- a/lib/input/sketch/entities/layers/sketch_text.dart +++ b/lib/input/sketch/entities/layers/sketch_text.dart @@ -19,7 +19,8 @@ part 'sketch_text.g.dart'; class SketchText extends SketchNode implements SketchNodeFactory, Text { @override String CLASS_NAME = 'text'; - final dynamic attributedString; + + Map attributedString; final bool automaticallyDrawOnUnderlyingPath; final bool dontSynchroniseWithSymbol; final dynamic lineSpacingBehaviour; @@ -108,7 +109,9 @@ class SketchText extends SketchNode implements SketchNodeFactory, Text { clippingMaskMode, userInfo, style, - maintainScrollPosition); + maintainScrollPosition) { + content = attributedString == null ? '' : attributedString['string']; + } @override SketchNode createSketchNode(Map json) => @@ -125,11 +128,13 @@ class SketchText extends SketchNode implements SketchNodeFactory, Text { Point(boundaryRectangle.x, boundaryRectangle.y), Point(boundaryRectangle.x + boundaryRectangle.width, boundaryRectangle.y + boundaryRectangle.height), + name, currentContext: currentContext, )..addChild( - InheritedText(this, currentContext: currentContext), + InheritedText(this, name, currentContext: currentContext), )); @override + @JsonKey(ignore: true) String content; } diff --git a/lib/input/sketch/entities/layers/sketch_text.g.dart b/lib/input/sketch/entities/layers/sketch_text.g.dart index 7839ebac..0b8ca903 100644 --- a/lib/input/sketch/entities/layers/sketch_text.g.dart +++ b/lib/input/sketch/entities/layers/sketch_text.g.dart @@ -37,7 +37,7 @@ SketchText _$SketchTextFromJson(Map json) { ? null : Style.fromJson(json['style'] as Map), maintainScrollPosition: json['maintainScrollPosition'] as bool, - attributedString: json['attributedString'], + attributedString: json['attributedString'] as Map, automaticallyDrawOnUnderlyingPath: json['automaticallyDrawOnUnderlyingPath'] as bool, dontSynchroniseWithSymbol: json['dontSynchroniseWithSymbol'] as bool, @@ -47,8 +47,7 @@ SketchText _$SketchTextFromJson(Map json) { ) ..prototypeNodeUUID = json['prototypeNodeUUID'] as String ..CLASS_NAME = json['CLASS_NAME'] as String - ..type = json['_class'] as String - ..content = json['content'] as String; + ..type = json['_class'] as String; } Map _$SketchTextToJson(SketchText instance) => @@ -86,5 +85,4 @@ Map _$SketchTextToJson(SketchText instance) => '_class': instance.type, 'isVisible': instance.isVisible, 'style': instance.style, - 'content': instance.content, }; diff --git a/lib/input/sketch/entities/layers/star.dart b/lib/input/sketch/entities/layers/star.dart index 73f93f7b..1f924331 100644 --- a/lib/input/sketch/entities/layers/star.dart +++ b/lib/input/sketch/entities/layers/star.dart @@ -121,7 +121,7 @@ class Star extends AbstractShapeLayer implements SketchNodeFactory { if (image == null) { return null; } - return Future.value( - InheritedStar(this, currentContext: currentContext, image: image)); + return Future.value(InheritedStar(this, name, + currentContext: currentContext, image: image)); } } diff --git a/lib/input/sketch/entities/layers/symbol_instance.dart b/lib/input/sketch/entities/layers/symbol_instance.dart index 63584630..3ed27b6f 100644 --- a/lib/input/sketch/entities/layers/symbol_instance.dart +++ b/lib/input/sketch/entities/layers/symbol_instance.dart @@ -1,4 +1,4 @@ -import 'package:parabeac_core/design_logic/pb_shared_instance_node.dart'; +import 'package:parabeac_core/design_logic/pb_shared_instance_design_node.dart'; import 'package:parabeac_core/input/sketch/entities/abstract_sketch_node_factory.dart'; import 'package:parabeac_core/input/sketch/entities/layers/abstract_layer.dart'; import 'package:parabeac_core/input/sketch/entities/layers/flow.dart'; @@ -17,7 +17,7 @@ part 'symbol_instance.g.dart'; @JsonSerializable(nullable: true) class SymbolInstance extends SketchNode with SymbolNodeMixin - implements SketchNodeFactory, PBSharedInstanceNodeDesign { + implements SketchNodeFactory, PBSharedInstanceDesignNode { @override String CLASS_NAME = 'symbolInstance'; final List overrideValues; diff --git a/lib/input/sketch/entities/layers/symbol_master.dart b/lib/input/sketch/entities/layers/symbol_master.dart index e69ab8fe..817997d8 100644 --- a/lib/input/sketch/entities/layers/symbol_master.dart +++ b/lib/input/sketch/entities/layers/symbol_master.dart @@ -1,4 +1,4 @@ -import 'package:parabeac_core/design_logic/pb_shared_instance_node.dart'; +import 'package:parabeac_core/design_logic/pb_shared_instance_design_node.dart'; import 'package:parabeac_core/input/sketch/entities/abstract_sketch_node_factory.dart'; import 'package:parabeac_core/input/sketch/entities/layers/abstract_group_layer.dart'; import 'package:parabeac_core/input/sketch/entities/layers/abstract_layer.dart'; @@ -20,7 +20,7 @@ part 'symbol_master.g.dart'; @JsonSerializable(nullable: true) class SymbolMaster extends AbstractGroupLayer with SymbolNodeMixin - implements SketchNodeFactory, PBSharedInstanceNodeDesign { + implements SketchNodeFactory, PBSharedInstanceDesignNode { @override String CLASS_NAME = 'symbolMaster'; final Color backgroundColor; @@ -66,10 +66,14 @@ class SymbolMaster extends AbstractGroupLayer @override Style get style => _style; + @override + @JsonKey(name: 'layers') + List children; + SymbolMaster( {bool hasClickThrough, groupLayout, - List layers, + List this.children, this.UUID, booleanOperation, exportOptions, @@ -112,7 +116,7 @@ class SymbolMaster extends AbstractGroupLayer super( hasClickThrough, groupLayout, - layers, + children, UUID, booleanOperation, exportOptions, diff --git a/lib/input/sketch/entities/layers/symbol_master.g.dart b/lib/input/sketch/entities/layers/symbol_master.g.dart index ab966ad1..73d49fc3 100644 --- a/lib/input/sketch/entities/layers/symbol_master.g.dart +++ b/lib/input/sketch/entities/layers/symbol_master.g.dart @@ -10,7 +10,7 @@ SymbolMaster _$SymbolMasterFromJson(Map json) { return SymbolMaster( hasClickThrough: json['hasClickThrough'] as bool, groupLayout: json['groupLayout'], - layers: (json['layers'] as List) + children: (json['layers'] as List) ?.map((e) => e == null ? null : SketchNode.fromJson(e as Map)) ?.toList(), @@ -96,7 +96,6 @@ Map _$SymbolMasterToJson(SymbolMaster instance) => 'prototypeNodeUUID': instance.prototypeNodeUUID, 'hasClickThrough': instance.hasClickThrough, 'groupLayout': instance.groupLayout, - 'layers': instance.layers, 'CLASS_NAME': instance.CLASS_NAME, 'backgroundColor': instance.backgroundColor, 'hasBackgroundColor': instance.hasBackgroundColor, @@ -118,5 +117,6 @@ Map _$SymbolMasterToJson(SymbolMaster instance) => '_class': instance.type, 'isVisible': instance.isVisible, 'style': instance.style, + 'layers': instance.children, 'parameters': instance.parameters, }; diff --git a/lib/input/sketch/entities/layers/triangle.dart b/lib/input/sketch/entities/layers/triangle.dart index e8231f4e..901cf783 100644 --- a/lib/input/sketch/entities/layers/triangle.dart +++ b/lib/input/sketch/entities/layers/triangle.dart @@ -110,7 +110,8 @@ class Triangle extends AbstractShapeLayer implements SketchNodeFactory { return triangle; } - factory Triangle.fromJson(Map json) => _$TriangleFromJson(json); + factory Triangle.fromJson(Map json) => + _$TriangleFromJson(json); @override Map toJson() => _$TriangleToJson(this); @@ -121,7 +122,7 @@ class Triangle extends AbstractShapeLayer implements SketchNodeFactory { if (image == null) { return null; } - return Future.value( - InheritedTriangle(this, currentContext: currentContext, image: image)); + return Future.value(InheritedTriangle(this, name, + currentContext: currentContext, image: image)); } } diff --git a/lib/input/sketch/entities/objects/foreign_symbol.dart b/lib/input/sketch/entities/objects/foreign_symbol.dart index 57788005..c5e66a43 100644 --- a/lib/input/sketch/entities/objects/foreign_symbol.dart +++ b/lib/input/sketch/entities/objects/foreign_symbol.dart @@ -8,7 +8,7 @@ part 'foreign_symbol.g.dart'; // description: The document entry in a Sketch file. class ForeignSymbol { static final String CLASS_NAME = 'MSImmutableForeignSymbol'; - final dynamic do_objectID; + final dynamic UUID; final dynamic libraryID; final String sourceLibraryName; final bool symbolPrivate; @@ -16,7 +16,7 @@ class ForeignSymbol { final SymbolMaster symbolMaster; ForeignSymbol( - {this.do_objectID, + {this.UUID, this.libraryID, this.sourceLibraryName, this.symbolPrivate, diff --git a/lib/input/sketch/entities/objects/foreign_symbol.g.dart b/lib/input/sketch/entities/objects/foreign_symbol.g.dart index 711828aa..011e394a 100644 --- a/lib/input/sketch/entities/objects/foreign_symbol.g.dart +++ b/lib/input/sketch/entities/objects/foreign_symbol.g.dart @@ -8,7 +8,7 @@ part of 'foreign_symbol.dart'; ForeignSymbol _$ForeignSymbolFromJson(Map json) { return ForeignSymbol( - do_objectID: json['do_objectID'], + UUID: json['UUID'], libraryID: json['libraryID'], sourceLibraryName: json['sourceLibraryName'] as String, symbolPrivate: json['symbolPrivate'] as bool, @@ -23,7 +23,7 @@ ForeignSymbol _$ForeignSymbolFromJson(Map json) { Map _$ForeignSymbolToJson(ForeignSymbol instance) => { - 'do_objectID': instance.do_objectID, + 'UUID': instance.UUID, 'libraryID': instance.libraryID, 'sourceLibraryName': instance.sourceLibraryName, 'symbolPrivate': instance.symbolPrivate, diff --git a/lib/input/sketch/entities/objects/image_ref.dart b/lib/input/sketch/entities/objects/image_ref.dart deleted file mode 100644 index 4c0a45a2..00000000 --- a/lib/input/sketch/entities/objects/image_ref.dart +++ /dev/null @@ -1,15 +0,0 @@ -import 'package:json_annotation/json_annotation.dart'; - -part 'image_ref.g.dart'; - -@JsonSerializable(nullable: true) -///Referenfece of an image according to Sketch' schema -class ImageRef{ - - @JsonKey(name: '_ref') - final String reference; - - ImageRef(this.reference); - factory ImageRef.fromJson(Map json) => _$ImageRefFromJson(json); - Map toJson() => _$ImageRefToJson(this); -} \ No newline at end of file diff --git a/lib/input/sketch/entities/objects/image_ref.g.dart b/lib/input/sketch/entities/objects/image_ref.g.dart deleted file mode 100644 index dbdb7131..00000000 --- a/lib/input/sketch/entities/objects/image_ref.g.dart +++ /dev/null @@ -1,17 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'image_ref.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -ImageRef _$ImageRefFromJson(Map json) { - return ImageRef( - json['_ref'] as String, - ); -} - -Map _$ImageRefToJson(ImageRef instance) => { - '_ref': instance.reference, - }; diff --git a/lib/input/sketch/entities/objects/override_value.dart b/lib/input/sketch/entities/objects/override_value.dart index 973a4db9..f1678af9 100644 --- a/lib/input/sketch/entities/objects/override_value.dart +++ b/lib/input/sketch/entities/objects/override_value.dart @@ -8,10 +8,11 @@ part 'override_value.g.dart'; class OverridableValue { static final String CLASS_NAME = 'overrideValue'; final String overrideName; - final String do_objectID; + @JsonKey(name: 'do_objectID') + final String UUID; final dynamic value; - OverridableValue(this.overrideName, this.do_objectID, this.value); + OverridableValue(this.overrideName, this.UUID, this.value); factory OverridableValue.fromJson(Map json) => _$OverridableValueFromJson(json); diff --git a/lib/input/sketch/entities/objects/override_value.g.dart b/lib/input/sketch/entities/objects/override_value.g.dart index 0801ed3d..e699fd1b 100644 --- a/lib/input/sketch/entities/objects/override_value.g.dart +++ b/lib/input/sketch/entities/objects/override_value.g.dart @@ -17,6 +17,6 @@ OverridableValue _$OverridableValueFromJson(Map json) { Map _$OverridableValueToJson(OverridableValue instance) => { 'overrideName': instance.overrideName, - 'do_objectID': instance.do_objectID, + 'do_objectID': instance.UUID, 'value': instance.value, }; diff --git a/lib/input/sketch/entities/style/border.dart b/lib/input/sketch/entities/style/border.dart index c28081d5..d52ea472 100644 --- a/lib/input/sketch/entities/style/border.dart +++ b/lib/input/sketch/entities/style/border.dart @@ -2,18 +2,23 @@ import 'package:json_annotation/json_annotation.dart'; import 'package:parabeac_core/input/sketch/entities/style/color.dart'; import 'package:parabeac_core/input/sketch/entities/style/context_settings.dart'; import 'package:parabeac_core/input/sketch/entities/style/gradient.dart'; +import 'package:parabeac_core/design_logic/pb_border.dart'; part 'border.g.dart'; @JsonSerializable(nullable: true) -class Border { +class Border implements PBBorder{ @JsonKey(name: '_class') final String classField; + @override final bool isEnabled; + @override final double fillType; + @override final Color color; final ContextSettings contextSettings; final Gradient gradient; final double position; + @override final double thickness; Border( diff --git a/lib/input/sketch/entities/style/border_options.dart b/lib/input/sketch/entities/style/border_options.dart index d8c91ab6..6db5abb0 100644 --- a/lib/input/sketch/entities/style/border_options.dart +++ b/lib/input/sketch/entities/style/border_options.dart @@ -1,16 +1,26 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/design_logic/pb_border_options.dart'; part 'border_options.g.dart'; @JsonSerializable(nullable: true) -class BorderOptions{ +class BorderOptions implements PBBorderOptions { @JsonKey(name: '_class') - final String classField; - final bool isEnabled; - final List dashPattern; - final int lineCapStyle, lineJoinStyle; + String classField; + @override + bool isEnabled; + @override + List dashPattern; + @override + int lineCapStyle, lineJoinStyle; - BorderOptions({this.classField, this.dashPattern, this.isEnabled, this.lineCapStyle, this.lineJoinStyle}); + BorderOptions( + this.classField, + this.dashPattern, + this.isEnabled, + this.lineCapStyle, + this.lineJoinStyle, + ); - factory BorderOptions.fromJson(Map json) =>_$BorderOptionsFromJson(json); + factory BorderOptions.fromJson(Map json) => _$BorderOptionsFromJson(json); Map toJson() => _$BorderOptionsToJson(this); } diff --git a/lib/input/sketch/entities/style/border_options.g.dart b/lib/input/sketch/entities/style/border_options.g.dart index 2124af5e..5e09807e 100644 --- a/lib/input/sketch/entities/style/border_options.g.dart +++ b/lib/input/sketch/entities/style/border_options.g.dart @@ -8,11 +8,11 @@ part of 'border_options.dart'; BorderOptions _$BorderOptionsFromJson(Map json) { return BorderOptions( - classField: json['_class'] as String, - dashPattern: json['dashPattern'] as List, - isEnabled: json['isEnabled'] as bool, - lineCapStyle: json['lineCapStyle'] as int, - lineJoinStyle: json['lineJoinStyle'] as int, + json['_class'] as String, + json['dashPattern'] as List, + json['isEnabled'] as bool, + json['lineCapStyle'] as int, + json['lineJoinStyle'] as int, ); } diff --git a/lib/input/sketch/entities/style/color.dart b/lib/input/sketch/entities/style/color.dart index 00d2f727..ca97279f 100644 --- a/lib/input/sketch/entities/style/color.dart +++ b/lib/input/sketch/entities/style/color.dart @@ -1,27 +1,16 @@ import 'package:json_annotation/json_annotation.dart'; -import 'package:hex/hex.dart'; +import 'package:parabeac_core/design_logic/color.dart'; part 'color.g.dart'; @JsonSerializable(nullable: true) -class Color { +class Color implements PBColor { @JsonKey(name: '_class') final String classField; - final double alpha, blue, green, red; + double alpha, blue, green, red; Color({this.alpha, this.blue, this.classField, this.green, this.red}); - ///Converts the current ARBG values into hex - ///in the form of a string `0xAARRGGBB` - String toHex() { - int a, r, g, b; - a = ((alpha ?? 0) * 255).round(); - r = ((red ?? 0) * 255).round(); - g = ((green ?? 0) * 255).round(); - b = ((blue ?? 0) * 255).round(); - return '0x' + HEX.encode([a, r, g, b]); - } - factory Color.fromJson(Map json) => _$ColorFromJson(json); Map toJson() => _$ColorToJson(this); } diff --git a/lib/input/sketch/entities/style/fill.dart b/lib/input/sketch/entities/style/fill.dart index f8ceda00..022252ac 100644 --- a/lib/input/sketch/entities/style/fill.dart +++ b/lib/input/sketch/entities/style/fill.dart @@ -1,16 +1,20 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/design_logic/color.dart'; +import 'package:parabeac_core/design_logic/pb_fill.dart'; import 'package:parabeac_core/input/sketch/entities/style/color.dart'; import 'package:parabeac_core/input/sketch/entities/style/context_settings.dart'; import 'package:parabeac_core/input/sketch/entities/style/gradient.dart'; part 'fill.g.dart'; @JsonSerializable(nullable: true) -class Fill { +class Fill implements PBFill { @JsonKey(name: '_class') final String classField; - final bool isEnabled; + @override + bool isEnabled; final int fillType; - final Color color; + @override + PBColor color; final ContextSettings contextSettings; final Gradient gradient; final int noiseIndex; @@ -20,7 +24,7 @@ class Fill { Fill( {this.classField, - this.color, + Color this.color, this.contextSettings, this.fillType, this.gradient, diff --git a/lib/input/sketch/entities/style/font_descriptor.dart b/lib/input/sketch/entities/style/font_descriptor.dart index a1f5b372..c82350ca 100644 --- a/lib/input/sketch/entities/style/font_descriptor.dart +++ b/lib/input/sketch/entities/style/font_descriptor.dart @@ -1,12 +1,16 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/design_logic/pb_font_descriptor.dart'; part 'font_descriptor.g.dart'; @JsonSerializable(nullable: true) -class FontDescriptor { +class FontDescriptor implements PBFontDescriptor { + @override @JsonKey(name: 'attributes') Map rawAttributes; + @override @JsonKey(ignore: true) String fontName; + @override @JsonKey(ignore: true) num fontSize; @JsonKey(ignore: true) diff --git a/lib/input/sketch/entities/style/paragraph_style.dart b/lib/input/sketch/entities/style/paragraph_style.dart index 5b828ddf..2070e81b 100644 --- a/lib/input/sketch/entities/style/paragraph_style.dart +++ b/lib/input/sketch/entities/style/paragraph_style.dart @@ -1,13 +1,16 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/design_logic/pb_paragraph_style.dart'; part 'paragraph_style.g.dart'; @JsonSerializable(nullable: true) -class ParagraphStyle { +class ParagraphStyle implements PBParagraphStyle { + @override int alignment; ParagraphStyle({this.alignment}); - factory ParagraphStyle.fromJson(Map json) => _$ParagraphStyleFromJson(json); + factory ParagraphStyle.fromJson(Map json) => + _$ParagraphStyleFromJson(json); - Map toJson() => _$ParagraphStyleToJson(this); + Map toJson() => _$ParagraphStyleToJson(this); } diff --git a/lib/input/sketch/entities/style/style.dart b/lib/input/sketch/entities/style/style.dart index 2e790fac..bba7922c 100644 --- a/lib/input/sketch/entities/style/style.dart +++ b/lib/input/sketch/entities/style/style.dart @@ -1,4 +1,10 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/design_logic/pb_border.dart'; +import 'package:parabeac_core/design_logic/pb_border_options.dart'; +import 'package:parabeac_core/design_logic/pb_fill.dart'; +import 'package:parabeac_core/design_logic/color.dart'; +import 'package:parabeac_core/design_logic/pb_style.dart'; +import 'package:parabeac_core/design_logic/pb_text_style.dart'; import 'package:parabeac_core/input/sketch/entities/style/border.dart'; import 'package:parabeac_core/input/sketch/entities/style/border_options.dart'; import 'package:parabeac_core/input/sketch/entities/style/color_controls.dart'; @@ -6,22 +12,28 @@ import 'package:parabeac_core/input/sketch/entities/style/context_settings.dart' import 'package:parabeac_core/input/sketch/entities/style/fill.dart'; import 'package:parabeac_core/input/sketch/entities/style/text_style.dart'; import 'package:parabeac_core/input/sketch/entities/style/blur.dart'; +import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; +import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; part 'style.g.dart'; @JsonSerializable(nullable: true) -class Style { +class Style implements PBStyle { @JsonKey(name: '_class') final String classField; - final String do_objectID; + @override + @JsonKey(name: 'do_objectID') + String UUID; final int endMarkerType, miterLimit, startMarkerType, windingRule; final Blur blur; + @override final BorderOptions borderOptions; + @override final List borders; final ColorControls colorControls; final ContextSettings contextSettings; - final List fills, innerShadows, shadows; + List fills, innerShadows, shadows; @JsonKey(nullable: true) - final TextStyle textStyle; + PBTextStyle textStyle; Style({ this.blur, @@ -30,17 +42,27 @@ class Style { this.classField, this.colorControls, this.contextSettings, - this.do_objectID, + this.UUID, this.endMarkerType, - this.fills, - this.innerShadows, + List this.fills, + List this.innerShadows, this.miterLimit, - this.shadows, + List this.shadows, this.startMarkerType, this.windingRule, - this.textStyle, + TextStyle this.textStyle, }); factory Style.fromJson(Map json) => _$StyleFromJson(json); - Map toJson() => _$StyleToJson(this); + Map toJson() => _$StyleToJson(this); + + @override + @JsonKey(ignore: true) + PBColor backgroundColor; + + @override + set borderOptions(PBBorderOptions _borderOptions) {} + + @override + set borders(List _borders) {} } diff --git a/lib/input/sketch/entities/style/style.g.dart b/lib/input/sketch/entities/style/style.g.dart index f4d9a5c5..b7c26d14 100644 --- a/lib/input/sketch/entities/style/style.g.dart +++ b/lib/input/sketch/entities/style/style.g.dart @@ -26,7 +26,7 @@ Style _$StyleFromJson(Map json) { ? null : ContextSettings.fromJson( json['contextSettings'] as Map), - do_objectID: json['do_objectID'] as String, + UUID: json['do_objectID'] as String, endMarkerType: json['endMarkerType'] as int, fills: (json['fills'] as List) ?.map( @@ -51,7 +51,7 @@ Style _$StyleFromJson(Map json) { Map _$StyleToJson(Style instance) => { '_class': instance.classField, - 'do_objectID': instance.do_objectID, + 'do_objectID': instance.UUID, 'endMarkerType': instance.endMarkerType, 'miterLimit': instance.miterLimit, 'startMarkerType': instance.startMarkerType, diff --git a/lib/input/sketch/entities/style/text_style.dart b/lib/input/sketch/entities/style/text_style.dart index f4930e8c..b2dc1956 100644 --- a/lib/input/sketch/entities/style/text_style.dart +++ b/lib/input/sketch/entities/style/text_style.dart @@ -1,19 +1,22 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:parabeac_core/design_logic/color.dart'; +import 'package:parabeac_core/design_logic/pb_font_descriptor.dart'; +import 'package:parabeac_core/design_logic/pb_paragraph_style.dart'; +import 'package:parabeac_core/design_logic/pb_text_style.dart'; import 'package:parabeac_core/input/sketch/entities/style/color.dart'; import 'package:parabeac_core/input/sketch/entities/style/font_descriptor.dart'; import 'package:parabeac_core/input/sketch/entities/style/paragraph_style.dart'; part 'text_style.g.dart'; @JsonSerializable(nullable: true) -class TextStyle { +class TextStyle implements PBTextStyle { @JsonKey(name: 'encodedAttributes') Map rawEncodedAttributes; + @override @JsonKey(ignore: true) - Color color; + PBFontDescriptor fontDescriptor; @JsonKey(ignore: true) - FontDescriptor fontDescriptor; - @JsonKey(ignore: true) - ParagraphStyle paragraphStyle; + PBParagraphStyle paragraphStyle; @JsonKey(ignore: true) num verticalAlignment; @JsonKey(ignore: true) @@ -44,29 +47,29 @@ class TextStyle { // 'Oblique', ]; - final Map > fontInfo = { - 'Thin': { 'fontWeight': 'w100', 'fontStyle': 'normal'}, - 'ThinItalic': { 'fontWeight': 'w100', 'fontStyle': 'italic'}, - 'ExtraLight': { 'fontWeight': 'w200', 'fontStyle': 'normal'}, - 'ExtraLightItalic': { 'fontWeight': 'w200', 'fontStyle': 'italic'}, - 'Light': { 'fontWeight': 'w300', 'fontStyle': 'normal'}, - 'LightItalic': { 'fontWeight': 'w300', 'fontStyle': 'italic'}, - 'Regular': { 'fontWeight': 'w400', 'fontStyle': 'normal'}, - 'Italic': { 'fontWeight': 'w400', 'fontStyle': 'italic'}, - 'Medium': { 'fontWeight': 'w500', 'fontStyle': 'normal'}, - 'MediumItalic': { 'fontWeight': 'w500', 'fontStyle': 'italic'}, - 'SemiBold': { 'fontWeight': 'w600', 'fontStyle': 'normal'}, - 'SemiBoldItalic': { 'fontWeight': 'w600', 'fontStyle': 'italic'}, - 'Bold': { 'fontWeight': 'w700', 'fontStyle': 'normal'}, - 'BoldItalic': { 'fontWeight': 'w700', 'fontStyle': 'italic'}, - 'ExtraBold': { 'fontWeight': 'w800', 'fontStyle': 'normal'}, - 'ExtraBoldItalic': { 'fontWeight': 'w800', 'fontStyle': 'italic'}, - 'Black': { 'fontWeight': 'w900', 'fontStyle': 'normal'}, - 'BlackItalic': { 'fontWeight': 'w900', 'fontStyle': 'italic'}, + final Map> fontInfo = { + 'Thin': {'fontWeight': 'w100', 'fontStyle': 'normal'}, + 'ThinItalic': {'fontWeight': 'w100', 'fontStyle': 'italic'}, + 'ExtraLight': {'fontWeight': 'w200', 'fontStyle': 'normal'}, + 'ExtraLightItalic': {'fontWeight': 'w200', 'fontStyle': 'italic'}, + 'Light': {'fontWeight': 'w300', 'fontStyle': 'normal'}, + 'LightItalic': {'fontWeight': 'w300', 'fontStyle': 'italic'}, + 'Regular': {'fontWeight': 'w400', 'fontStyle': 'normal'}, + 'Italic': {'fontWeight': 'w400', 'fontStyle': 'italic'}, + 'Medium': {'fontWeight': 'w500', 'fontStyle': 'normal'}, + 'MediumItalic': {'fontWeight': 'w500', 'fontStyle': 'italic'}, + 'SemiBold': {'fontWeight': 'w600', 'fontStyle': 'normal'}, + 'SemiBoldItalic': {'fontWeight': 'w600', 'fontStyle': 'italic'}, + 'Bold': {'fontWeight': 'w700', 'fontStyle': 'normal'}, + 'BoldItalic': {'fontWeight': 'w700', 'fontStyle': 'italic'}, + 'ExtraBold': {'fontWeight': 'w800', 'fontStyle': 'normal'}, + 'ExtraBoldItalic': {'fontWeight': 'w800', 'fontStyle': 'italic'}, + 'Black': {'fontWeight': 'w900', 'fontStyle': 'normal'}, + 'BlackItalic': {'fontWeight': 'w900', 'fontStyle': 'italic'}, }; TextStyle({this.rawEncodedAttributes}) { - color = Color.fromJson( + fontColor = Color.fromJson( rawEncodedAttributes['MSAttributedStringColorAttribute']); fontDescriptor = FontDescriptor.fromJson( rawEncodedAttributes['MSAttributedStringFontAttribute']); @@ -78,13 +81,15 @@ class TextStyle { for (var s in STYLES) { if (fontDescriptor.fontName.contains(s)) { // this is really a mapping of style to weight - fontDescriptor.fontWeight = fontInfo[s]['fontWeight']; + (fontDescriptor as FontDescriptor).fontWeight = + fontInfo[s]['fontWeight']; // this is only normal, italic style - fontDescriptor.fontStyle = fontInfo[s]['fontStyle']; + (fontDescriptor as FontDescriptor).fontStyle = fontInfo[s]['fontStyle']; // this is really fontFamily with removal of -XXX font type name suffix - fontDescriptor.fontName = + (fontDescriptor as FontDescriptor).fontName = fontDescriptor.fontName.replaceFirst('-$s', ''); - fontDescriptor.letterSpacing = rawEncodedAttributes['kerning'] ?? 0.0; + (fontDescriptor as FontDescriptor).letterSpacing = + rawEncodedAttributes['kerning'] ?? 0.0; break; } } @@ -93,4 +98,20 @@ class TextStyle { factory TextStyle.fromJson(Map json) => _$TextStyleFromJson(json); Map toJson() => _$TextStyleToJson(this); + + @override + @JsonKey(ignore: true) + PBColor fontColor; + + @override + String fontFamily; + + @override + String fontSize; + + @override + String fontWeight; + + @override + String weight; } diff --git a/lib/input/sketch/entities/style/text_style.g.dart b/lib/input/sketch/entities/style/text_style.g.dart index 08293674..32877b8e 100644 --- a/lib/input/sketch/entities/style/text_style.g.dart +++ b/lib/input/sketch/entities/style/text_style.g.dart @@ -9,9 +9,17 @@ part of 'text_style.dart'; TextStyle _$TextStyleFromJson(Map json) { return TextStyle( rawEncodedAttributes: json['encodedAttributes'] as Map, - ); + ) + ..fontFamily = json['fontFamily'] as String + ..fontSize = json['fontSize'] as String + ..fontWeight = json['fontWeight'] as String + ..weight = json['weight'] as String; } Map _$TextStyleToJson(TextStyle instance) => { 'encodedAttributes': instance.rawEncodedAttributes, + 'fontFamily': instance.fontFamily, + 'fontSize': instance.fontSize, + 'fontWeight': instance.fontWeight, + 'weight': instance.weight, }; diff --git a/lib/input/sketch/helper/sketch_node_tree.dart b/lib/input/sketch/helper/sketch_node_tree.dart index 902a14d3..22059ce7 100644 --- a/lib/input/sketch/helper/sketch_node_tree.dart +++ b/lib/input/sketch/helper/sketch_node_tree.dart @@ -1,4 +1,5 @@ import 'package:parabeac_core/controllers/main_info.dart'; +import 'package:parabeac_core/input/helper/node_tree.dart'; import 'package:parabeac_core/input/sketch/entities/documents/document.dart'; import 'package:parabeac_core/input/sketch/entities/layers/page.dart'; import 'package:parabeac_core/input/sketch/entities/objects/foreign_symbol.dart'; @@ -8,12 +9,14 @@ import 'dart:convert'; import 'package:archive/archive.dart'; import 'package:quick_log/quick_log.dart'; -class SketchNodeTree { +class SketchNodeTree extends NodeTree { + @override var log = Logger('SketchNodeTree'); - List pages = []; - List miscPages = []; SketchPage rootScreen; + + @override String projectName; + @override bool debug = false; final Archive _originalArchive; @@ -60,23 +63,11 @@ class SketchNodeTree { var node = Page.fromJson(jsonData); // Actual Sketch Node // Turn layers into PBNodes - for (var layer in node.layers) { + for (var layer in node.children) { pg.addPageItem(SketchPageItem(layer, pg)); } sketchPages.add(pg); } return sketchPages; } - - Map toJson() { - var result = {}; - result['projectName'] = projectName; - for (var page in pages) { - result.addAll(page.toJson()); - } - for (var page in miscPages) { - result.addAll(page.toJson()); - } - return result; - } } diff --git a/lib/input/sketch/helper/sketch_page.dart b/lib/input/sketch/helper/sketch_page.dart index 8fe26014..61e8ab23 100644 --- a/lib/input/sketch/helper/sketch_page.dart +++ b/lib/input/sketch/helper/sketch_page.dart @@ -1,33 +1,9 @@ +import 'package:parabeac_core/input/helper/page.dart'; import 'package:quick_log/quick_log.dart'; -import 'package:parabeac_core/input/sketch/helper/sketch_page_item.dart'; -class SketchPage { +class SketchPage extends Page { + @override var log = Logger('Sketch'); - String name; - List _pageItems = []; - - SketchPage( - this.name, - ) { - _pageItems = []; - } - - void addPageItem(SketchPageItem item) { - _pageItems.add(item); - } - - List getPageItems() { - log.info('We encountered a page that has 0 page items.'); - return _pageItems; - } - - Map toJson() { - Map result = {}; - result['name'] = name; - for (var item in _pageItems) { - result.addAll(item.root.toJson()); - } - return result; - } + SketchPage(String name) : super(name); } diff --git a/lib/input/sketch/helper/sketch_page_item.dart b/lib/input/sketch/helper/sketch_page_item.dart index 7bb9e334..1aa9c5a3 100644 --- a/lib/input/sketch/helper/sketch_page_item.dart +++ b/lib/input/sketch/helper/sketch_page_item.dart @@ -1,10 +1,7 @@ -import 'package:parabeac_core/input/sketch/entities/layers/abstract_layer.dart'; -import 'package:parabeac_core/input/sketch/helper/sketch_page.dart'; +import 'package:parabeac_core/design_logic/design_node.dart'; +import 'package:parabeac_core/input/helper/page.dart'; +import 'package:parabeac_core/input/helper/page_item.dart'; -class SketchPageItem { - SketchNode root; - SketchPage parentPage; - SketchPageItem(this.root, this.parentPage); - - Map toJson() => root.toJson(); +class SketchPageItem extends PageItem { + SketchPageItem(DesignNode root, Page parentPage) : super(root, parentPage); } diff --git a/lib/input/sketch/services/input_design.dart b/lib/input/sketch/services/input_design.dart index 417eaf5e..d6745a50 100644 --- a/lib/input/sketch/services/input_design.dart +++ b/lib/input/sketch/services/input_design.dart @@ -38,7 +38,7 @@ class InputDesignService { ///Getting the images in the sketch file and adding them to the png folder. void setImageDir() { - ///Creating the pngs folder, if its already not there. + ///Creating the pngs folder, if it's already not there. Directory('${MainInfo().outputPath}pngs').createSync(recursive: true); for (final file in archive) { final fileName = file.name; diff --git a/lib/input/sketch/services/positional_cleansing_service.dart b/lib/input/sketch/services/positional_cleansing_service.dart index 3860b7da..454e5854 100644 --- a/lib/input/sketch/services/positional_cleansing_service.dart +++ b/lib/input/sketch/services/positional_cleansing_service.dart @@ -1,26 +1,26 @@ +import 'package:parabeac_core/design_logic/design_node.dart'; import 'package:parabeac_core/input/sketch/entities/layers/abstract_group_layer.dart'; -import 'package:parabeac_core/input/sketch/entities/layers/abstract_layer.dart'; import 'package:parabeac_core/input/sketch/entities/layers/artboard.dart'; import 'package:parabeac_core/input/sketch/entities/layers/group.dart'; import '../entities/layers/symbol_master.dart'; -///Class for cleansing the positional data of the [SketchNode] +///Class for cleansing the positional data of the [DesignNode] ///TODO(Eddie): Abstract it, not only for Sketch node but potentially more design files. class PositionalCleansingService { ///Eliminating the offset of the nodes. NOTE: the only nodes that have an offset are [Artboard] and [Group] - SketchNode eliminateOffset(SketchNode rootNode) { + DesignNode eliminateOffset(DesignNode rootNode) { if (rootNode is Group || rootNode is Artboard || rootNode is SymbolMaster) { _eliminateOffsetChildren( - (rootNode as AbstractGroupLayer).layers, rootNode); + (rootNode as AbstractGroupLayer).children, rootNode); } if (rootNode is AbstractGroupLayer) { - rootNode.layers.map((layerNode) => eliminateOffset(layerNode)).toList(); + rootNode.children.map((layerNode) => eliminateOffset(layerNode)).toList(); } return rootNode; } - void _eliminateOffsetChildren(List children, SketchNode parent) => + void _eliminateOffsetChildren(List children, DesignNode parent) => children.forEach((child) { child.boundaryRectangle.x = (parent.boundaryRectangle.x + child.boundaryRectangle.x); diff --git a/lib/interpret_and_optimize/entities/alignments/flexible.dart b/lib/interpret_and_optimize/entities/alignments/flexible.dart index 7107b970..8cefe101 100644 --- a/lib/interpret_and_optimize/entities/alignments/flexible.dart +++ b/lib/interpret_and_optimize/entities/alignments/flexible.dart @@ -30,7 +30,13 @@ class Flexible extends PBVisualIntermediateNode { this.flex, this.topLeftCorner, this.bottomRightCorner, - }) : super(topLeftCorner, bottomRightCorner, currentContext, UUID: UUID) { + }) : super( + topLeftCorner, + bottomRightCorner, + currentContext, + '', + UUID: UUID, + ) { generator = PBFlexibleGenerator(); } diff --git a/lib/interpret_and_optimize/entities/alignments/injected_positioned.dart b/lib/interpret_and_optimize/entities/alignments/injected_positioned.dart index bd1ddb46..27ca6966 100644 --- a/lib/interpret_and_optimize/entities/alignments/injected_positioned.dart +++ b/lib/interpret_and_optimize/entities/alignments/injected_positioned.dart @@ -24,7 +24,8 @@ class InjectedPositioned extends PBIntermediateNode String horizontalAlignType, verticalAlignType; InjectedPositioned(this.UUID, {this.positionedHolder, this.currentContext}) - : super(Point(0, 0), Point(0, 0), UUID, currentContext: currentContext) { + : super(Point(0, 0), Point(0, 0), UUID, '', + currentContext: currentContext) { horizontalAlignType = positionedHolder.h_type.toString()?.split('.')[1]; verticalAlignType = positionedHolder.v_type.toString()?.split('.')[1]; horizontalAlignValue = positionedHolder.h_value; diff --git a/lib/interpret_and_optimize/entities/alignments/padding.dart b/lib/interpret_and_optimize/entities/alignments/padding.dart index df089447..40683ad2 100644 --- a/lib/interpret_and_optimize/entities/alignments/padding.dart +++ b/lib/interpret_and_optimize/entities/alignments/padding.dart @@ -34,7 +34,8 @@ class Padding extends PBVisualIntermediateNode { this.topLeftCorner, this.bottomRightCorner, this.currentContext}) - : super(topLeftCorner, bottomRightCorner, currentContext, UUID: UUID) { + : super(topLeftCorner, bottomRightCorner, currentContext, '', + UUID: UUID) { generator = PBPaddingGen(); } diff --git a/lib/interpret_and_optimize/entities/alignments/spacer.dart b/lib/interpret_and_optimize/entities/alignments/spacer.dart index 8a26e148..501847bb 100644 --- a/lib/interpret_and_optimize/entities/alignments/spacer.dart +++ b/lib/interpret_and_optimize/entities/alignments/spacer.dart @@ -18,7 +18,8 @@ class Spacer extends PBVisualIntermediateNode { Spacer(topLeftCorner, bottomRightCorner, this.UUID, {this.flex, this.currentContext}) - : super(topLeftCorner, bottomRightCorner, currentContext, UUID: UUID) { + : super(topLeftCorner, bottomRightCorner, currentContext, '', + UUID: UUID) { generator = PBSpacerGenerator(); } diff --git a/lib/interpret_and_optimize/entities/inherited_bitmap.dart b/lib/interpret_and_optimize/entities/inherited_bitmap.dart index db12c4fe..4e816547 100644 --- a/lib/interpret_and_optimize/entities/inherited_bitmap.dart +++ b/lib/interpret_and_optimize/entities/inherited_bitmap.dart @@ -1,8 +1,8 @@ import 'package:parabeac_core/controllers/main_info.dart'; import 'package:parabeac_core/design_logic/design_node.dart'; +import 'package:parabeac_core/design_logic/image.dart'; import 'package:parabeac_core/generation/generators/visual-widgets/pb_bitmap_gen.dart'; import 'package:parabeac_core/generation/prototyping/pb_prototype_node.dart'; -import 'package:parabeac_core/input/sketch/entities/layers/bitmap.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/interfaces/pb_inherited_intermediate.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_visual_intermediate_node.dart'; @@ -34,12 +34,14 @@ class InheritedBitmap extends PBVisualIntermediateNode @JsonKey(ignore: true) PBContext currentContext; - String name; - Map size; String referenceImage; - InheritedBitmap(this.originalRef, {this.currentContext}) - : super( + InheritedBitmap( + this.originalRef, + String name, { + this.currentContext, + this.referenceImage, + }) : super( Point(originalRef.boundaryRectangle.x, originalRef.boundaryRectangle.y), Point( @@ -47,22 +49,24 @@ class InheritedBitmap extends PBVisualIntermediateNode originalRef.boundaryRectangle.width, originalRef.boundaryRectangle.y + originalRef.boundaryRectangle.height), - currentContext) { + currentContext, + name) { if (originalRef is DesignNode && originalRef.prototypeNodeUUID != null) { prototypeNode = PrototypeNode(originalRef?.prototypeNodeUUID); } generator = PBBitmapGenerator(); - if (originalRef.name == null || (originalRef as Bitmap).image == null) { + if (originalRef.name == null || + (originalRef as Image).imageReference == null) { log.debug('NULL BITMAP'); } UUID = originalRef.UUID; - name = (originalRef as Bitmap).image.reference; + name = (originalRef as Image).imageReference; size = { 'width': originalRef.boundaryRectangle.width, 'height': originalRef.boundaryRectangle.height }; - referenceImage = (originalRef as Bitmap).image.reference; + this.referenceImage = (originalRef as Image).imageReference; ImageReferenceStorage().addReference( originalRef.UUID, '${MainInfo().outputPath}assets/images'); } diff --git a/lib/interpret_and_optimize/entities/inherited_bitmap.g.dart b/lib/interpret_and_optimize/entities/inherited_bitmap.g.dart index 0a023624..6cff06e7 100644 --- a/lib/interpret_and_optimize/entities/inherited_bitmap.g.dart +++ b/lib/interpret_and_optimize/entities/inherited_bitmap.g.dart @@ -9,6 +9,8 @@ part of 'inherited_bitmap.dart'; InheritedBitmap _$InheritedBitmapFromJson(Map json) { return InheritedBitmap( json['originalRef'], + json['name'] as String, + referenceImage: json['referenceImage'] as String, ) ..subsemantic = json['subsemantic'] as String ..child = json['child'] @@ -18,13 +20,11 @@ InheritedBitmap _$InheritedBitmapFromJson(Map json) { ..bottomRightCorner = json['bottomRightCorner'] == null ? null : Point.fromJson(json['bottomRightCorner'] as Map) + ..size = json['size'] as Map ..borderInfo = json['borderInfo'] as Map ..alignment = json['alignment'] as Map ..color = json['color'] as String - ..UUID = json['UUID'] as String - ..name = json['name'] as String - ..size = json['size'] as Map - ..referenceImage = json['referenceImage'] as String; + ..UUID = json['UUID'] as String; } Map _$InheritedBitmapToJson(InheritedBitmap instance) => @@ -33,12 +33,12 @@ Map _$InheritedBitmapToJson(InheritedBitmap instance) => 'child': instance.child, 'topLeftCorner': instance.topLeftCorner, 'bottomRightCorner': instance.bottomRightCorner, + 'size': instance.size, 'borderInfo': instance.borderInfo, 'alignment': instance.alignment, + 'name': instance.name, 'color': instance.color, 'originalRef': instance.originalRef, 'UUID': instance.UUID, - 'name': instance.name, - 'size': instance.size, 'referenceImage': instance.referenceImage, }; diff --git a/lib/interpret_and_optimize/entities/inherited_circle.dart b/lib/interpret_and_optimize/entities/inherited_circle.dart index a1765d11..0309ff9b 100644 --- a/lib/interpret_and_optimize/entities/inherited_circle.dart +++ b/lib/interpret_and_optimize/entities/inherited_circle.dart @@ -46,9 +46,10 @@ class InheritedCircle extends PBVisualIntermediateNode Map alignment; - InheritedCircle(this.originalRef, this.bottomRightCorner, this.topLeftCorner, + InheritedCircle( + this.originalRef, this.bottomRightCorner, this.topLeftCorner, String name, {this.currentContext, this.alignX, this.alignY}) - : super(topLeftCorner, bottomRightCorner, currentContext) { + : super(topLeftCorner, bottomRightCorner, currentContext, name) { if (originalRef is DesignNode && originalRef.prototypeNodeUUID != null) { prototypeNode = PrototypeNode(originalRef?.prototypeNodeUUID); } @@ -77,7 +78,7 @@ class InheritedCircle extends PBVisualIntermediateNode } // If there's multiple children add a temp group so that layout service lays the children out. if (child != null) { - var temp = TempGroupLayoutNode(null, currentContext); + var temp = TempGroupLayoutNode(null, currentContext, node.name); temp.addChild(child); temp.addChild(node); child = temp; @@ -90,7 +91,8 @@ class InheritedCircle extends PBVisualIntermediateNode /// alignCenterX/y = ((childCenter - parentCenter) / max) if > 0.5 subtract 0.5 if less than 0.5 multiply times -1 @override void alignChild() { - var align = InjectedAlign(topLeftCorner, bottomRightCorner, currentContext); + var align = + InjectedAlign(topLeftCorner, bottomRightCorner, currentContext, ''); align.addChild(child); align.alignChild(); child = align; diff --git a/lib/interpret_and_optimize/entities/inherited_circle.g.dart b/lib/interpret_and_optimize/entities/inherited_circle.g.dart index e8455ab4..4e01877a 100644 --- a/lib/interpret_and_optimize/entities/inherited_circle.g.dart +++ b/lib/interpret_and_optimize/entities/inherited_circle.g.dart @@ -15,10 +15,10 @@ InheritedCircle _$InheritedCircleFromJson(Map json) { json['topLeftCorner'] == null ? null : Point.fromJson(json['topLeftCorner'] as Map), + json['name'] as String, ) ..subsemantic = json['subsemantic'] as String ..child = json['child'] - ..name = json['name'] as String ..color = json['color'] as String ..UUID = json['UUID'] as String ..size = json['size'] as Map diff --git a/lib/interpret_and_optimize/entities/inherited_container.dart b/lib/interpret_and_optimize/entities/inherited_container.dart index f8e56e23..2e0b76fd 100644 --- a/lib/interpret_and_optimize/entities/inherited_container.dart +++ b/lib/interpret_and_optimize/entities/inherited_container.dart @@ -1,3 +1,4 @@ +import 'package:parabeac_core/design_logic/color.dart'; import 'package:parabeac_core/design_logic/design_node.dart'; import 'package:parabeac_core/generation/generators/visual-widgets/pb_container_gen.dart'; import 'package:parabeac_core/generation/prototyping/pb_prototype_node.dart'; @@ -14,6 +15,7 @@ part 'inherited_container.g.dart'; @JsonSerializable(nullable: true) class InheritedContainer extends PBVisualIntermediateNode + with PBColorMixin implements PBInheritedIntermediate { @override final originalRef; @@ -30,7 +32,7 @@ class InheritedContainer extends PBVisualIntermediateNode PBContext currentContext; @override - String UUID; //TODO find the root cause of why certain node have a null UUID + String UUID; /// Used for setting the alignment of it's children @JsonKey(ignore: true) @@ -45,10 +47,20 @@ class InheritedContainer extends PBVisualIntermediateNode @JsonKey(nullable: true) Map borderInfo; + @JsonKey(nullable: true) + bool isBackgroundVisible = true; + InheritedContainer( - this.originalRef, this.topLeftCorner, this.bottomRightCorner, - {this.alignX, this.alignY, this.currentContext, this.borderInfo}) - : super(topLeftCorner, bottomRightCorner, currentContext) { + this.originalRef, + this.topLeftCorner, + this.bottomRightCorner, + String name, { + this.alignX, + this.alignY, + this.currentContext, + this.borderInfo, + this.isBackgroundVisible = true, + }) : super(topLeftCorner, bottomRightCorner, currentContext, name) { if (originalRef is DesignNode && originalRef.prototypeNodeUUID != null) { prototypeNode = PrototypeNode(originalRef?.prototypeNodeUUID); } @@ -62,10 +74,10 @@ class InheritedContainer extends PBVisualIntermediateNode 'height': originalRef.boundaryRectangle.height, }; - if (originalRef.style.fills.isNotEmpty) { + if (originalRef.style != null && originalRef.style.fills.isNotEmpty) { for (var fill in originalRef.style.fills) { if (fill.isEnabled) { - color = fill.color.toHex(); + color = toHex(fill.color); } } } @@ -85,7 +97,7 @@ class InheritedContainer extends PBVisualIntermediateNode } // If there's multiple children add a temp group so that layout service lays the children out. if (child != null) { - var temp = TempGroupLayoutNode(null, currentContext); + var temp = TempGroupLayoutNode(null, currentContext, node.name); temp.addChild(child); temp.addChild(node); child = temp; @@ -98,7 +110,8 @@ class InheritedContainer extends PBVisualIntermediateNode /// alignCenterX/y = ((childCenter - parentCenter) / max) if > 0.5 subtract 0.5 if less than 0.5 multiply times -1 @override void alignChild() { - var align = InjectedAlign(topLeftCorner, bottomRightCorner, currentContext); + var align = + InjectedAlign(topLeftCorner, bottomRightCorner, currentContext, ''); align.addChild(child); align.alignChild(); child = align; diff --git a/lib/interpret_and_optimize/entities/inherited_container.g.dart b/lib/interpret_and_optimize/entities/inherited_container.g.dart index 71391dbd..c23b39f3 100644 --- a/lib/interpret_and_optimize/entities/inherited_container.g.dart +++ b/lib/interpret_and_optimize/entities/inherited_container.g.dart @@ -15,11 +15,12 @@ InheritedContainer _$InheritedContainerFromJson(Map json) { json['bottomRightCorner'] == null ? null : Point.fromJson(json['bottomRightCorner'] as Map), + json['name'] as String, borderInfo: json['borderInfo'] as Map, + isBackgroundVisible: json['isBackgroundVisible'] as bool, ) ..subsemantic = json['subsemantic'] as String ..child = json['child'] - ..name = json['name'] as String ..color = json['color'] as String ..UUID = json['UUID'] as String ..size = json['size'] as Map @@ -39,4 +40,5 @@ Map _$InheritedContainerToJson(InheritedContainer instance) => 'size': instance.size, 'alignment': instance.alignment, 'borderInfo': instance.borderInfo, + 'isBackgroundVisible': instance.isBackgroundVisible, }; diff --git a/lib/interpret_and_optimize/entities/inherited_oval.dart b/lib/interpret_and_optimize/entities/inherited_oval.dart index 77b89542..33fdc1e9 100644 --- a/lib/interpret_and_optimize/entities/inherited_oval.dart +++ b/lib/interpret_and_optimize/entities/inherited_oval.dart @@ -26,9 +26,6 @@ class InheritedOval extends PBVisualIntermediateNode @JsonKey(ignore: true) Uint8List image; - ///Name of the png file - String name; - @override String UUID; @@ -39,7 +36,8 @@ class InheritedOval extends PBVisualIntermediateNode String referenceImage; - InheritedOval(this.originalRef, {this.image, this.currentContext}) + InheritedOval(this.originalRef, String name, + {this.image, this.currentContext}) : super( Point(originalRef.boundaryRectangle.x, originalRef.boundaryRectangle.y), @@ -48,7 +46,8 @@ class InheritedOval extends PBVisualIntermediateNode originalRef.boundaryRectangle.width, originalRef.boundaryRectangle.y + originalRef.boundaryRectangle.height), - currentContext) { + currentContext, + name) { if (originalRef is DesignNode && originalRef.prototypeNodeUUID != null) { prototypeNode = PrototypeNode(originalRef?.prototypeNodeUUID); } diff --git a/lib/interpret_and_optimize/entities/inherited_oval.g.dart b/lib/interpret_and_optimize/entities/inherited_oval.g.dart index 9aaebc82..4751b593 100644 --- a/lib/interpret_and_optimize/entities/inherited_oval.g.dart +++ b/lib/interpret_and_optimize/entities/inherited_oval.g.dart @@ -9,6 +9,7 @@ part of 'inherited_oval.dart'; InheritedOval _$InheritedOvalFromJson(Map json) { return InheritedOval( json['originalRef'], + json['name'] as String, ) ..subsemantic = json['subsemantic'] as String ..child = json['child'] @@ -21,7 +22,6 @@ InheritedOval _$InheritedOvalFromJson(Map json) { ..borderInfo = json['borderInfo'] as Map ..alignment = json['alignment'] as Map ..color = json['color'] as String - ..name = json['name'] as String ..UUID = json['UUID'] as String ..size = json['size'] as Map ..referenceImage = json['referenceImage'] as String; @@ -35,9 +35,9 @@ Map _$InheritedOvalToJson(InheritedOval instance) => 'bottomRightCorner': instance.bottomRightCorner, 'borderInfo': instance.borderInfo, 'alignment': instance.alignment, + 'name': instance.name, 'color': instance.color, 'originalRef': instance.originalRef, - 'name': instance.name, 'UUID': instance.UUID, 'size': instance.size, 'referenceImage': instance.referenceImage, diff --git a/lib/interpret_and_optimize/entities/inherited_polygon.dart b/lib/interpret_and_optimize/entities/inherited_polygon.dart index 805baf83..6d8818c4 100644 --- a/lib/interpret_and_optimize/entities/inherited_polygon.dart +++ b/lib/interpret_and_optimize/entities/inherited_polygon.dart @@ -26,9 +26,6 @@ class InheritedPolygon extends PBVisualIntermediateNode @JsonKey(ignore: true) Uint8List image; - ///Name of the png file - String name; - @override String UUID; @@ -39,7 +36,8 @@ class InheritedPolygon extends PBVisualIntermediateNode String referenceImage; - InheritedPolygon(this.originalRef, {this.image, this.currentContext}) + InheritedPolygon(this.originalRef, String name, + {this.image, this.currentContext}) : super( Point(originalRef.boundaryRectangle.x, originalRef.boundaryRectangle.y), @@ -48,7 +46,8 @@ class InheritedPolygon extends PBVisualIntermediateNode originalRef.boundaryRectangle.width, originalRef.boundaryRectangle.y + originalRef.boundaryRectangle.height), - currentContext) { + currentContext, + name) { if (originalRef is DesignNode && originalRef.prototypeNodeUUID != null) { prototypeNode = PrototypeNode(originalRef?.prototypeNodeUUID); } diff --git a/lib/interpret_and_optimize/entities/inherited_polygon.g.dart b/lib/interpret_and_optimize/entities/inherited_polygon.g.dart index 27f28b1d..262074c5 100644 --- a/lib/interpret_and_optimize/entities/inherited_polygon.g.dart +++ b/lib/interpret_and_optimize/entities/inherited_polygon.g.dart @@ -9,6 +9,7 @@ part of 'inherited_polygon.dart'; InheritedPolygon _$InheritedPolygonFromJson(Map json) { return InheritedPolygon( json['originalRef'], + json['name'] as String, ) ..subsemantic = json['subsemantic'] as String ..child = json['child'] @@ -21,7 +22,6 @@ InheritedPolygon _$InheritedPolygonFromJson(Map json) { ..borderInfo = json['borderInfo'] as Map ..alignment = json['alignment'] as Map ..color = json['color'] as String - ..name = json['name'] as String ..UUID = json['UUID'] as String ..size = json['size'] as Map ..referenceImage = json['referenceImage'] as String; @@ -35,9 +35,9 @@ Map _$InheritedPolygonToJson(InheritedPolygon instance) => 'bottomRightCorner': instance.bottomRightCorner, 'borderInfo': instance.borderInfo, 'alignment': instance.alignment, + 'name': instance.name, 'color': instance.color, 'originalRef': instance.originalRef, - 'name': instance.name, 'UUID': instance.UUID, 'size': instance.size, 'referenceImage': instance.referenceImage, diff --git a/lib/interpret_and_optimize/entities/inherited_scaffold.dart b/lib/interpret_and_optimize/entities/inherited_scaffold.dart index 309825be..f6980a75 100644 --- a/lib/interpret_and_optimize/entities/inherited_scaffold.dart +++ b/lib/interpret_and_optimize/entities/inherited_scaffold.dart @@ -1,9 +1,9 @@ +import 'package:parabeac_core/design_logic/color.dart'; import 'package:parabeac_core/design_logic/design_node.dart'; import 'package:parabeac_core/eggs/injected_app_bar.dart'; import 'package:parabeac_core/eggs/injected_tab_bar.dart'; import 'package:parabeac_core/generation/generators/layouts/pb_scaffold_gen.dart'; import 'package:parabeac_core/generation/prototyping/pb_prototype_node.dart'; -import 'package:parabeac_core/input/sketch/entities/layers/artboard.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/injected_align.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/layouts/temp_group_layout_node.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/pb_shared_instance.dart'; @@ -20,6 +20,8 @@ part 'inherited_scaffold.g.dart'; @JsonSerializable(nullable: true) class InheritedScaffold extends PBVisualIntermediateNode + with + PBColorMixin implements /* with GeneratePBTree */ /* PropertySearchable,*/ PBInheritedIntermediate { @override @@ -27,7 +29,6 @@ class InheritedScaffold extends PBVisualIntermediateNode @override @JsonKey(ignore: true) PrototypeNode prototypeNode; - String name; @JsonSerializable(nullable: true) var navbar; @JsonSerializable(nullable: true) @@ -48,7 +49,7 @@ class InheritedScaffold extends PBVisualIntermediateNode InheritedScaffold(this.originalRef, {Point topLeftCorner, Point bottomRightCorner, - this.name, + String name, this.currentContext, this.isHomeScreen}) : super( @@ -59,7 +60,8 @@ class InheritedScaffold extends PBVisualIntermediateNode originalRef.boundaryRectangle.width, originalRef.boundaryRectangle.y + originalRef.boundaryRectangle.height), - currentContext) { + currentContext, + name) { if (originalRef is DesignNode && originalRef.prototypeNodeUUID != null) { prototypeNode = PrototypeNode(originalRef?.prototypeNodeUUID); } @@ -78,7 +80,7 @@ class InheritedScaffold extends PBVisualIntermediateNode UUID = originalRef.UUID; - backgroundColor = (originalRef as Artboard).backgroundColor?.toHex(); + backgroundColor = toHex(originalRef.backgroundColor); } @override @@ -117,7 +119,7 @@ class InheritedScaffold extends PBVisualIntermediateNode } // If there's multiple children add a temp group so that layout service lays the children out. if (child != null) { - var temp = TempGroupLayoutNode(null, currentContext); + var temp = TempGroupLayoutNode(null, currentContext, node.name); temp.addChild(child); temp.addChild(node); child = temp; @@ -128,7 +130,8 @@ class InheritedScaffold extends PBVisualIntermediateNode @override void alignChild() { - var align = InjectedAlign(topLeftCorner, bottomRightCorner, currentContext); + var align = + InjectedAlign(topLeftCorner, bottomRightCorner, currentContext, ''); align.addChild(child); align.alignChild(); child = align; diff --git a/lib/interpret_and_optimize/entities/inherited_scaffold.g.dart b/lib/interpret_and_optimize/entities/inherited_scaffold.g.dart index 34a21ae8..2d69c8e4 100644 --- a/lib/interpret_and_optimize/entities/inherited_scaffold.g.dart +++ b/lib/interpret_and_optimize/entities/inherited_scaffold.g.dart @@ -41,9 +41,9 @@ Map _$InheritedScaffoldToJson(InheritedScaffold instance) => 'size': instance.size, 'borderInfo': instance.borderInfo, 'alignment': instance.alignment, + 'name': instance.name, 'color': instance.color, 'originalRef': instance.originalRef, - 'name': instance.name, 'navbar': instance.navbar, 'tabbar': instance.tabbar, 'backgroundColor': instance.backgroundColor, diff --git a/lib/interpret_and_optimize/entities/inherited_shape_group.dart b/lib/interpret_and_optimize/entities/inherited_shape_group.dart index 5bdce659..2de76ec5 100644 --- a/lib/interpret_and_optimize/entities/inherited_shape_group.dart +++ b/lib/interpret_and_optimize/entities/inherited_shape_group.dart @@ -31,9 +31,6 @@ class InheritedShapeGroup extends PBVisualIntermediateNode @override String UUID; - ///Name of the png file - String name; - @JsonKey(ignore: true) PBContext currentContext; @@ -41,7 +38,8 @@ class InheritedShapeGroup extends PBVisualIntermediateNode Map size; - InheritedShapeGroup(this.originalRef, {this.image, this.currentContext}) + InheritedShapeGroup(this.originalRef, String name, + {this.image, this.currentContext}) : super( Point(originalRef.boundaryRectangle.x, originalRef.boundaryRectangle.y), @@ -50,7 +48,8 @@ class InheritedShapeGroup extends PBVisualIntermediateNode originalRef.boundaryRectangle.width, originalRef.boundaryRectangle.y + originalRef.boundaryRectangle.height), - currentContext) { + currentContext, + name) { if (originalRef is DesignNode && originalRef.prototypeNodeUUID != null) { prototypeNode = PrototypeNode(originalRef?.prototypeNodeUUID); } diff --git a/lib/interpret_and_optimize/entities/inherited_shape_group.g.dart b/lib/interpret_and_optimize/entities/inherited_shape_group.g.dart index 908ccaf8..2cae7637 100644 --- a/lib/interpret_and_optimize/entities/inherited_shape_group.g.dart +++ b/lib/interpret_and_optimize/entities/inherited_shape_group.g.dart @@ -9,6 +9,7 @@ part of 'inherited_shape_group.dart'; InheritedShapeGroup _$InheritedShapeGroupFromJson(Map json) { return InheritedShapeGroup( json['originalRef'], + json['name'] as String, ) ..subsemantic = json['subsemantic'] as String ..child = json['child'] @@ -22,7 +23,6 @@ InheritedShapeGroup _$InheritedShapeGroupFromJson(Map json) { ..alignment = json['alignment'] as Map ..color = json['color'] as String ..UUID = json['UUID'] as String - ..name = json['name'] as String ..referenceImage = json['referenceImage'] as String ..size = json['size'] as Map; } @@ -36,10 +36,10 @@ Map _$InheritedShapeGroupToJson( 'bottomRightCorner': instance.bottomRightCorner, 'borderInfo': instance.borderInfo, 'alignment': instance.alignment, + 'name': instance.name, 'color': instance.color, 'originalRef': instance.originalRef, 'UUID': instance.UUID, - 'name': instance.name, 'referenceImage': instance.referenceImage, 'size': instance.size, }; diff --git a/lib/interpret_and_optimize/entities/inherited_shape_path.dart b/lib/interpret_and_optimize/entities/inherited_shape_path.dart index b35cf0d2..68b7990c 100644 --- a/lib/interpret_and_optimize/entities/inherited_shape_path.dart +++ b/lib/interpret_and_optimize/entities/inherited_shape_path.dart @@ -1,6 +1,7 @@ import 'dart:typed_data'; import 'package:parabeac_core/controllers/main_info.dart'; +import 'package:parabeac_core/design_logic/color.dart'; import 'package:parabeac_core/design_logic/design_node.dart'; import 'package:parabeac_core/generation/generators/visual-widgets/pb_bitmap_gen.dart'; import 'package:parabeac_core/generation/generators/visual-widgets/pb_container_gen.dart'; @@ -18,6 +19,7 @@ part 'inherited_shape_path.g.dart'; @JsonSerializable(nullable: true) class InheritedShapePath extends PBVisualIntermediateNode + with PBColorMixin implements PBInheritedIntermediate { @override var originalRef; @@ -32,9 +34,6 @@ class InheritedShapePath extends PBVisualIntermediateNode @JsonKey(ignore: true) Uint8List image; - ///Name of the png file - String name; - @JsonKey(ignore: true) PBContext currentContext; @@ -43,7 +42,8 @@ class InheritedShapePath extends PBVisualIntermediateNode Map size; - InheritedShapePath(this.originalRef, {this.image, this.currentContext}) + InheritedShapePath(this.originalRef, String name, + {this.image, this.currentContext}) : super( Point(originalRef.boundaryRectangle.x, originalRef.boundaryRectangle.y), @@ -52,7 +52,8 @@ class InheritedShapePath extends PBVisualIntermediateNode originalRef.boundaryRectangle.width, originalRef.boundaryRectangle.y + originalRef.boundaryRectangle.height), - currentContext) { + currentContext, + name) { if (originalRef is DesignNode && originalRef.prototypeNodeUUID != null) { prototypeNode = PrototypeNode(originalRef?.prototypeNodeUUID); } @@ -103,7 +104,7 @@ class InheritedShapePath extends PBVisualIntermediateNode originalRef.boundaryRectangle.height); generator = PBContainerGenerator(); - color = originalRef.style.borders[0].color.toHex(); + color = toHex(originalRef.style.borders[0].color); } } } diff --git a/lib/interpret_and_optimize/entities/inherited_shape_path.g.dart b/lib/interpret_and_optimize/entities/inherited_shape_path.g.dart index fde4a029..7cc4a569 100644 --- a/lib/interpret_and_optimize/entities/inherited_shape_path.g.dart +++ b/lib/interpret_and_optimize/entities/inherited_shape_path.g.dart @@ -9,6 +9,7 @@ part of 'inherited_shape_path.dart'; InheritedShapePath _$InheritedShapePathFromJson(Map json) { return InheritedShapePath( json['originalRef'], + json['name'] as String, ) ..subsemantic = json['subsemantic'] as String ..child = json['child'] @@ -22,7 +23,6 @@ InheritedShapePath _$InheritedShapePathFromJson(Map json) { ..alignment = json['alignment'] as Map ..color = json['color'] as String ..UUID = json['UUID'] as String - ..name = json['name'] as String ..referenceImage = json['referenceImage'] as String ..size = json['size'] as Map; } @@ -35,10 +35,10 @@ Map _$InheritedShapePathToJson(InheritedShapePath instance) => 'bottomRightCorner': instance.bottomRightCorner, 'borderInfo': instance.borderInfo, 'alignment': instance.alignment, + 'name': instance.name, 'color': instance.color, 'originalRef': instance.originalRef, 'UUID': instance.UUID, - 'name': instance.name, 'referenceImage': instance.referenceImage, 'size': instance.size, }; diff --git a/lib/interpret_and_optimize/entities/inherited_star.dart b/lib/interpret_and_optimize/entities/inherited_star.dart index f95e7fc5..4f8460d3 100644 --- a/lib/interpret_and_optimize/entities/inherited_star.dart +++ b/lib/interpret_and_optimize/entities/inherited_star.dart @@ -26,9 +26,6 @@ class InheritedStar extends PBVisualIntermediateNode @JsonKey(ignore: true) Uint8List image; - ///Name of the png file - String name; - @override String UUID; @@ -39,7 +36,8 @@ class InheritedStar extends PBVisualIntermediateNode String referenceImage; - InheritedStar(this.originalRef, {this.image, this.currentContext}) + InheritedStar(this.originalRef, String name, + {this.image, this.currentContext}) : super( Point(originalRef.boundaryRectangle.x, originalRef.boundaryRectangle.y), @@ -48,7 +46,8 @@ class InheritedStar extends PBVisualIntermediateNode originalRef.boundaryRectangle.width, originalRef.boundaryRectangle.y + originalRef.boundaryRectangle.height), - currentContext) { + currentContext, + name) { if (originalRef is DesignNode && originalRef.prototypeNodeUUID != null) { prototypeNode = PrototypeNode(originalRef?.prototypeNodeUUID); } diff --git a/lib/interpret_and_optimize/entities/inherited_star.g.dart b/lib/interpret_and_optimize/entities/inherited_star.g.dart index 4c6c5934..79cccd93 100644 --- a/lib/interpret_and_optimize/entities/inherited_star.g.dart +++ b/lib/interpret_and_optimize/entities/inherited_star.g.dart @@ -9,6 +9,7 @@ part of 'inherited_star.dart'; InheritedStar _$InheritedStarFromJson(Map json) { return InheritedStar( json['originalRef'], + json['name'] as String, ) ..subsemantic = json['subsemantic'] as String ..child = json['child'] @@ -21,7 +22,6 @@ InheritedStar _$InheritedStarFromJson(Map json) { ..borderInfo = json['borderInfo'] as Map ..alignment = json['alignment'] as Map ..color = json['color'] as String - ..name = json['name'] as String ..UUID = json['UUID'] as String ..size = json['size'] as Map ..referenceImage = json['referenceImage'] as String; @@ -35,9 +35,9 @@ Map _$InheritedStarToJson(InheritedStar instance) => 'bottomRightCorner': instance.bottomRightCorner, 'borderInfo': instance.borderInfo, 'alignment': instance.alignment, + 'name': instance.name, 'color': instance.color, 'originalRef': instance.originalRef, - 'name': instance.name, 'UUID': instance.UUID, 'size': instance.size, 'referenceImage': instance.referenceImage, diff --git a/lib/interpret_and_optimize/entities/inherited_text.dart b/lib/interpret_and_optimize/entities/inherited_text.dart index eede0290..c3e91b11 100644 --- a/lib/interpret_and_optimize/entities/inherited_text.dart +++ b/lib/interpret_and_optimize/entities/inherited_text.dart @@ -1,7 +1,8 @@ +import 'package:parabeac_core/design_logic/color.dart'; import 'package:parabeac_core/design_logic/design_node.dart'; +import 'package:parabeac_core/design_logic/text.dart'; import 'package:parabeac_core/generation/generators/visual-widgets/pb_text_gen.dart'; import 'package:parabeac_core/generation/prototyping/pb_prototype_node.dart'; -import 'package:parabeac_core/input/sketch/entities/layers/sketch_text.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/interfaces/pb_inherited_intermediate.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_visual_intermediate_node.dart'; @@ -13,6 +14,7 @@ part 'inherited_text.g.dart'; @JsonSerializable(nullable: true) class InheritedText extends PBVisualIntermediateNode + with PBColorMixin implements PBInheritedIntermediate { ///For the generator to strip out the quotation marks. bool isTextParameter = false; @@ -37,12 +39,12 @@ class InheritedText extends PBVisualIntermediateNode num fontSize; String fontName; - String fontWeight; // one of the w100-w900 weights - String fontStyle; // normal, or italic + String fontWeight; // one of the w100-w900 weights + String fontStyle; // normal, or italic String textAlignment; num letterSpacing; - InheritedText(this.originalRef, {this.currentContext}) + InheritedText(this.originalRef, String name, {this.currentContext}) : super( Point(originalRef.boundaryRectangle.x, originalRef.boundaryRectangle.y), @@ -51,16 +53,17 @@ class InheritedText extends PBVisualIntermediateNode originalRef.boundaryRectangle.width, originalRef.boundaryRectangle.y + originalRef.boundaryRectangle.height), - currentContext) { + currentContext, + name) { if (originalRef is DesignNode && originalRef.prototypeNodeUUID != null) { prototypeNode = PrototypeNode(originalRef?.prototypeNodeUUID); } generator = PBTextGen(); UUID = originalRef.UUID; - text = (originalRef as SketchText).attributedString['string']; + text = (originalRef as Text).content; fontSize = originalRef.style.textStyle.fontDescriptor.fontSize; - color = originalRef.style.textStyle.color.toHex(); + color = toHex(originalRef.style.textStyle.fontColor); fontName = originalRef.style.textStyle.fontDescriptor.fontName; fontWeight = originalRef.style.textStyle.fontDescriptor.fontWeight; fontStyle = originalRef.style.textStyle.fontDescriptor.fontStyle; diff --git a/lib/interpret_and_optimize/entities/inherited_text.g.dart b/lib/interpret_and_optimize/entities/inherited_text.g.dart index 851eaa20..8fce780e 100644 --- a/lib/interpret_and_optimize/entities/inherited_text.g.dart +++ b/lib/interpret_and_optimize/entities/inherited_text.g.dart @@ -9,6 +9,7 @@ part of 'inherited_text.dart'; InheritedText _$InheritedTextFromJson(Map json) { return InheritedText( json['originalRef'], + json['name'] as String, ) ..subsemantic = json['subsemantic'] as String ..child = json['child'] @@ -21,7 +22,6 @@ InheritedText _$InheritedTextFromJson(Map json) { ..size = json['size'] as Map ..borderInfo = json['borderInfo'] as Map ..alignment = json['alignment'] as Map - ..name = json['name'] as String ..color = json['color'] as String ..isTextParameter = json['isTextParameter'] as bool ..UUID = json['UUID'] as String diff --git a/lib/interpret_and_optimize/entities/inherited_triangle.dart b/lib/interpret_and_optimize/entities/inherited_triangle.dart index aefb6694..8e7fba8f 100644 --- a/lib/interpret_and_optimize/entities/inherited_triangle.dart +++ b/lib/interpret_and_optimize/entities/inherited_triangle.dart @@ -26,9 +26,6 @@ class InheritedTriangle extends PBVisualIntermediateNode @JsonKey(ignore: true) Uint8List image; - ///Name of the png file - var name; - @override String UUID; @@ -39,7 +36,8 @@ class InheritedTriangle extends PBVisualIntermediateNode var referenceImage; - InheritedTriangle(this.originalRef, {this.image, this.currentContext}) + InheritedTriangle(this.originalRef, String name, + {this.image, this.currentContext}) : super( Point(originalRef.boundaryRectangle.x, originalRef.boundaryRectangle.y), @@ -48,7 +46,8 @@ class InheritedTriangle extends PBVisualIntermediateNode originalRef.boundaryRectangle.width, originalRef.boundaryRectangle.y + originalRef.boundaryRectangle.height), - currentContext) { + currentContext, + name) { if (originalRef is DesignNode && originalRef.prototypeNodeUUID != null) { prototypeNode = PrototypeNode(originalRef?.prototypeNodeUUID); } diff --git a/lib/interpret_and_optimize/entities/inherited_triangle.g.dart b/lib/interpret_and_optimize/entities/inherited_triangle.g.dart index 84736808..e098aa3b 100644 --- a/lib/interpret_and_optimize/entities/inherited_triangle.g.dart +++ b/lib/interpret_and_optimize/entities/inherited_triangle.g.dart @@ -9,6 +9,7 @@ part of 'inherited_triangle.dart'; InheritedTriangle _$InheritedTriangleFromJson(Map json) { return InheritedTriangle( json['originalRef'], + json['name'] as String, ) ..subsemantic = json['subsemantic'] as String ..child = json['child'] @@ -21,7 +22,6 @@ InheritedTriangle _$InheritedTriangleFromJson(Map json) { ..borderInfo = json['borderInfo'] as Map ..alignment = json['alignment'] as Map ..color = json['color'] as String - ..name = json['name'] as String ..UUID = json['UUID'] as String ..size = json['size'] as Map ..referenceImage = json['referenceImage']; @@ -35,9 +35,9 @@ Map _$InheritedTriangleToJson(InheritedTriangle instance) => 'bottomRightCorner': instance.bottomRightCorner, 'borderInfo': instance.borderInfo, 'alignment': instance.alignment, + 'name': instance.name, 'color': instance.color, 'originalRef': instance.originalRef, - 'name': instance.name, 'UUID': instance.UUID, 'size': instance.size, 'referenceImage': instance.referenceImage, diff --git a/lib/interpret_and_optimize/entities/injected_align.dart b/lib/interpret_and_optimize/entities/injected_align.dart index 4e974796..b6ad9f27 100644 --- a/lib/interpret_and_optimize/entities/injected_align.dart +++ b/lib/interpret_and_optimize/entities/injected_align.dart @@ -11,9 +11,9 @@ class InjectedAlign extends PBVisualIntermediateNode double alignX; double alignY; - InjectedAlign( - Point topLeftCorner, Point bottomRightCorner, PBContext currentContext) - : super(topLeftCorner, bottomRightCorner, currentContext) { + InjectedAlign(Point topLeftCorner, Point bottomRightCorner, + PBContext currentContext, String name) + : super(topLeftCorner, bottomRightCorner, currentContext, name) { generator = PBAlignGenerator(); } @@ -25,7 +25,7 @@ class InjectedAlign extends PBVisualIntermediateNode } // If there's multiple children add a temp group so that layout service lays the children out. if (child != null) { - var temp = TempGroupLayoutNode(null, currentContext); + var temp = TempGroupLayoutNode(null, currentContext, name); temp.addChild(child); temp.addChild(node); child = temp; diff --git a/lib/interpret_and_optimize/entities/injected_container.dart b/lib/interpret_and_optimize/entities/injected_container.dart index 8fe914db..2ac0e727 100644 --- a/lib/interpret_and_optimize/entities/injected_container.dart +++ b/lib/interpret_and_optimize/entities/injected_container.dart @@ -39,12 +39,13 @@ class InjectedContainer extends PBVisualIntermediateNode InjectedContainer( Point bottomRightCorner, Point topLeftCorner, + String name, this.UUID, { this.alignX, this.alignY, this.color, this.currentContext, - }) : super(topLeftCorner, bottomRightCorner, currentContext) { + }) : super(topLeftCorner, bottomRightCorner, currentContext, name) { generator = PBContainerGenerator(); if (currentContext.screenBottomRightCorner == null && @@ -71,7 +72,7 @@ class InjectedContainer extends PBVisualIntermediateNode } // If there's multiple children add a temp group so that layout service lays the children out. if (child != null) { - var temp = TempGroupLayoutNode(null, currentContext); + var temp = TempGroupLayoutNode(null, currentContext, name); temp.addChild(child); temp.addChild(node); child = temp; @@ -84,7 +85,8 @@ class InjectedContainer extends PBVisualIntermediateNode /// alignCenterX/y = ((childCenter - parentCenter) / max) if > 0.5 subtract 0.5 if less than 0.5 multiply times -1 @override void alignChild() { - var align = InjectedAlign(topLeftCorner, bottomRightCorner, currentContext); + var align = + InjectedAlign(topLeftCorner, bottomRightCorner, currentContext, ''); align.addChild(child); align.alignChild(); child = align; diff --git a/lib/interpret_and_optimize/entities/injected_container.g.dart b/lib/interpret_and_optimize/entities/injected_container.g.dart index 5214e43a..8bd1a80a 100644 --- a/lib/interpret_and_optimize/entities/injected_container.g.dart +++ b/lib/interpret_and_optimize/entities/injected_container.g.dart @@ -14,13 +14,13 @@ InjectedContainer _$InjectedContainerFromJson(Map json) { json['topLeftCorner'] == null ? null : Point.fromJson(json['topLeftCorner'] as Map), + json['name'] as String, json['UUID'] as String, alignX: (json['alignX'] as num)?.toDouble(), alignY: (json['alignY'] as num)?.toDouble(), color: json['color'] as String, ) ..subsemantic = json['subsemantic'] as String - ..name = json['name'] as String ..child = json['child'] ..size = json['size'] as Map ..margins = json['margins'] as Map diff --git a/lib/interpret_and_optimize/entities/layouts/column.dart b/lib/interpret_and_optimize/entities/layouts/column.dart index 9f136239..8ecd68d9 100644 --- a/lib/interpret_and_optimize/entities/layouts/column.dart +++ b/lib/interpret_and_optimize/entities/layouts/column.dart @@ -45,12 +45,15 @@ class PBIntermediateColumnLayout extends PBLayoutIntermediateNode { Map alignment = {}; - + @override + @JsonKey(ignore: true) + PrototypeNode prototypeNode; - PBIntermediateColumnLayout({ + PBIntermediateColumnLayout( + String name, { this.currentContext, this.UUID, - }) : super(COLUMN_RULES, COLUMN_EXCEPTIONS, currentContext) { + }) : super(COLUMN_RULES, COLUMN_EXCEPTIONS, currentContext, name) { generator = PBColumnGenerator(); checkCrossAxisAlignment(); } @@ -107,9 +110,9 @@ class PBIntermediateColumnLayout extends PBLayoutIntermediateNode { } @override - PBLayoutIntermediateNode generateLayout( - List children, PBContext currentContext) { - var col = PBIntermediateColumnLayout( + PBLayoutIntermediateNode generateLayout(List children, + PBContext currentContext, String name) { + var col = PBIntermediateColumnLayout(name, currentContext: currentContext, UUID: Uuid().v4()); col.prototypeNode = prototypeNode; children.forEach((child) => col.addChild(child)); diff --git a/lib/interpret_and_optimize/entities/layouts/column.g.dart b/lib/interpret_and_optimize/entities/layouts/column.g.dart index 53ea21ca..513b1acd 100644 --- a/lib/interpret_and_optimize/entities/layouts/column.g.dart +++ b/lib/interpret_and_optimize/entities/layouts/column.g.dart @@ -9,6 +9,7 @@ part of 'column.dart'; PBIntermediateColumnLayout _$PBIntermediateColumnLayoutFromJson( Map json) { return PBIntermediateColumnLayout( + json['name'] as String, UUID: json['UUID'] as String, ) ..subsemantic = json['subsemantic'] as String @@ -16,10 +17,6 @@ PBIntermediateColumnLayout _$PBIntermediateColumnLayoutFromJson( ..color = json['color'] as String ..size = json['size'] as Map ..borderInfo = json['borderInfo'] as Map - ..name = json['name'] as String - ..prototypeNode = json['prototypeNode'] == null - ? null - : PrototypeNode.fromJson(json['prototypeNode'] as Map) ..alignment = json['alignment'] as Map; } @@ -32,7 +29,6 @@ Map _$PBIntermediateColumnLayoutToJson( 'size': instance.size, 'borderInfo': instance.borderInfo, 'name': instance.name, - 'prototypeNode': instance.prototypeNode, 'UUID': instance.UUID, 'alignment': instance.alignment, }; diff --git a/lib/interpret_and_optimize/entities/layouts/row.dart b/lib/interpret_and_optimize/entities/layouts/row.dart index 4806773e..3ea6e1ef 100644 --- a/lib/interpret_and_optimize/entities/layouts/row.dart +++ b/lib/interpret_and_optimize/entities/layouts/row.dart @@ -43,8 +43,12 @@ class PBIntermediateRowLayout extends PBLayoutIntermediateNode { @JsonKey(ignore: true) Point bottomRightCorner; - PBIntermediateRowLayout(this.UUID, {this.currentContext}) - : super(ROW_RULES, ROW_EXCEPTIONS, currentContext) { + @override + @JsonKey(ignore: true) + PrototypeNode prototypeNode; + + PBIntermediateRowLayout(String name, this.UUID, {this.currentContext}) + : super(ROW_RULES, ROW_EXCEPTIONS, currentContext, name) { generator = PBRowGenerator(); checkCrossAxisAlignment(); } @@ -97,10 +101,11 @@ class PBIntermediateRowLayout extends PBLayoutIntermediateNode { } } - PBLayoutIntermediateNode generateLayout( - List children, PBContext currentContext) { - var row = - PBIntermediateRowLayout(Uuid().v4(), currentContext: currentContext); + @override + PBLayoutIntermediateNode generateLayout(List children, + PBContext currentContext, String name) { + var row = PBIntermediateRowLayout(name, Uuid().v4(), + currentContext: currentContext); row.prototypeNode = prototypeNode; children.forEach((child) => row.addChild(child)); return row; diff --git a/lib/interpret_and_optimize/entities/layouts/row.g.dart b/lib/interpret_and_optimize/entities/layouts/row.g.dart index 7dd2ea9d..d3275370 100644 --- a/lib/interpret_and_optimize/entities/layouts/row.g.dart +++ b/lib/interpret_and_optimize/entities/layouts/row.g.dart @@ -9,6 +9,7 @@ part of 'row.dart'; PBIntermediateRowLayout _$PBIntermediateRowLayoutFromJson( Map json) { return PBIntermediateRowLayout( + json['name'] as String, json['UUID'] as String, ) ..subsemantic = json['subsemantic'] as String @@ -16,10 +17,6 @@ PBIntermediateRowLayout _$PBIntermediateRowLayoutFromJson( ..color = json['color'] as String ..size = json['size'] as Map ..borderInfo = json['borderInfo'] as Map - ..name = json['name'] as String - ..prototypeNode = json['prototypeNode'] == null - ? null - : PrototypeNode.fromJson(json['prototypeNode'] as Map) ..alignment = json['alignment'] as Map; } @@ -32,7 +29,6 @@ Map _$PBIntermediateRowLayoutToJson( 'size': instance.size, 'borderInfo': instance.borderInfo, 'name': instance.name, - 'prototypeNode': instance.prototypeNode, 'UUID': instance.UUID, 'alignment': instance.alignment, }; diff --git a/lib/interpret_and_optimize/entities/layouts/rules/container_constraint_rule.dart b/lib/interpret_and_optimize/entities/layouts/rules/container_constraint_rule.dart index 69b075b6..a35602b9 100644 --- a/lib/interpret_and_optimize/entities/layouts/rules/container_constraint_rule.dart +++ b/lib/interpret_and_optimize/entities/layouts/rules/container_constraint_rule.dart @@ -9,8 +9,8 @@ class ContainerConstraintRule extends PostConditionRule { dynamic executeAction( PBIntermediateNode currentNode, PBIntermediateNode nextNode) { if (testRule(currentNode, nextNode)) { - var container = InjectedContainer( - currentNode.bottomRightCorner, currentNode.topLeftCorner, Uuid().v4(), + var container = InjectedContainer(currentNode.bottomRightCorner, + currentNode.topLeftCorner, Uuid().v4(), '', currentContext: currentNode.currentContext); container.addChild(currentNode); return container; diff --git a/lib/interpret_and_optimize/entities/layouts/stack.dart b/lib/interpret_and_optimize/entities/layouts/stack.dart index 2bac7c48..2a8c64cf 100644 --- a/lib/interpret_and_optimize/entities/layouts/stack.dart +++ b/lib/interpret_and_optimize/entities/layouts/stack.dart @@ -32,8 +32,12 @@ class PBIntermediateStackLayout extends PBLayoutIntermediateNode { Map alignment = {}; - PBIntermediateStackLayout(this.UUID, {this.currentContext}) - : super(STACK_RULES, [], currentContext) { + @override + @JsonKey(ignore: true) + PrototypeNode prototypeNode; + + PBIntermediateStackLayout(String name, this.UUID, {this.currentContext}) + : super(STACK_RULES, [], currentContext, name) { generator = PBStackGenerator(); } @@ -80,11 +84,14 @@ class PBIntermediateStackLayout extends PBLayoutIntermediateNode { } @override - PBLayoutIntermediateNode generateLayout( - List children, PBContext currentContext) { + PBLayoutIntermediateNode generateLayout(List children, + PBContext currentContext, String name) { /// The width of this stack must be the full width of the Scaffold or Artboard. As discussed, at some point we can change this but for now, this makes the most sense. - var stack = - PBIntermediateStackLayout(Uuid().v4(), currentContext: currentContext); + var stack = PBIntermediateStackLayout( + name, + Uuid().v4(), + currentContext: currentContext, + ); stack.prototypeNode = prototypeNode; children.forEach((child) => stack.addChild(child)); return stack; diff --git a/lib/interpret_and_optimize/entities/layouts/stack.g.dart b/lib/interpret_and_optimize/entities/layouts/stack.g.dart index 9d9edd57..17dd6e56 100644 --- a/lib/interpret_and_optimize/entities/layouts/stack.g.dart +++ b/lib/interpret_and_optimize/entities/layouts/stack.g.dart @@ -9,6 +9,7 @@ part of 'stack.dart'; PBIntermediateStackLayout _$PBIntermediateStackLayoutFromJson( Map json) { return PBIntermediateStackLayout( + json['name'] as String, json['UUID'] as String, ) ..subsemantic = json['subsemantic'] as String @@ -16,10 +17,6 @@ PBIntermediateStackLayout _$PBIntermediateStackLayoutFromJson( ..color = json['color'] as String ..size = json['size'] as Map ..borderInfo = json['borderInfo'] as Map - ..name = json['name'] as String - ..prototypeNode = json['prototypeNode'] == null - ? null - : PrototypeNode.fromJson(json['prototypeNode'] as Map) ..topLeftCorner = json['topLeftCorner'] == null ? null : Point.fromJson(json['topLeftCorner'] as Map) @@ -38,7 +35,6 @@ Map _$PBIntermediateStackLayoutToJson( 'size': instance.size, 'borderInfo': instance.borderInfo, 'name': instance.name, - 'prototypeNode': instance.prototypeNode, 'UUID': instance.UUID, 'topLeftCorner': instance.topLeftCorner, 'bottomRightCorner': instance.bottomRightCorner, diff --git a/lib/interpret_and_optimize/entities/layouts/temp_group_layout_node.dart b/lib/interpret_and_optimize/entities/layouts/temp_group_layout_node.dart index 1269caea..158c4b4c 100644 --- a/lib/interpret_and_optimize/entities/layouts/temp_group_layout_node.dart +++ b/lib/interpret_and_optimize/entities/layouts/temp_group_layout_node.dart @@ -15,9 +15,9 @@ class TempGroupLayoutNode extends PBLayoutIntermediateNode @override String get UUID => originalRef.UUID; - TempGroupLayoutNode(this.originalRef, PBContext currentContext, + TempGroupLayoutNode(this.originalRef, PBContext currentContext, String name, {topLeftCorner, bottomRightCorner}) - : super([], [], currentContext) { + : super([], [], currentContext, name) { if (originalRef is DesignNode && originalRef.prototypeNodeUUID != null) { prototypeNode = PrototypeNode(originalRef?.prototypeNodeUUID); } @@ -37,17 +37,17 @@ class TempGroupLayoutNode extends PBLayoutIntermediateNode } @override - PBLayoutIntermediateNode generateLayout( - List children, PBContext currentContext) { - assert( - false, 'Attempted to generateLayout for class type [${runtimeType}]'); + bool satisfyRules( + PBIntermediateNode currentNode, PBIntermediateNode nextNode) { + assert(false, 'Attempted to satisfyRules for class type [${runtimeType}]'); return null; } @override - bool satisfyRules( - PBIntermediateNode currentNode, PBIntermediateNode nextNode) { - assert(false, 'Attempted to satisfyRules for class type [${runtimeType}]'); + PBLayoutIntermediateNode generateLayout(List children, + PBContext currentContext, String name) { + assert( + false, 'Attempted to generateLayout for class type [${runtimeType}]'); return null; } } diff --git a/lib/interpret_and_optimize/entities/pb_deny_list_node.dart b/lib/interpret_and_optimize/entities/pb_deny_list_node.dart index ca45061d..c720afe0 100644 --- a/lib/interpret_and_optimize/entities/pb_deny_list_node.dart +++ b/lib/interpret_and_optimize/entities/pb_deny_list_node.dart @@ -5,11 +5,16 @@ import 'package:parabeac_core/interpret_and_optimize/value_objects/point.dart'; /// A node that should not be converted to intermediate. class PBDenyListNode extends PBIntermediateNode { final String UUID; - PBDenyListNode( - Point topLeftCorner, Point bottomRightCorner, PBContext currentContext, + PBDenyListNode(Point topLeftCorner, Point bottomRightCorner, + PBContext currentContext, String name, {this.UUID}) - : super(topLeftCorner, bottomRightCorner, UUID, - currentContext: currentContext); + : super( + topLeftCorner, + bottomRightCorner, + UUID, + name, + currentContext: currentContext, + ); @override void addChild(PBIntermediateNode node) { diff --git a/lib/interpret_and_optimize/entities/pb_shared_instance.dart b/lib/interpret_and_optimize/entities/pb_shared_instance.dart index 15ca8dbb..b1143f19 100644 --- a/lib/interpret_and_optimize/entities/pb_shared_instance.dart +++ b/lib/interpret_and_optimize/entities/pb_shared_instance.dart @@ -1,7 +1,6 @@ import 'package:parabeac_core/design_logic/design_node.dart'; import 'package:parabeac_core/generation/generators/symbols/pb_instancesym_gen.dart'; import 'package:parabeac_core/generation/prototyping/pb_prototype_node.dart'; -import 'package:parabeac_core/input/sketch/entities/layers/symbol_instance.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/interfaces/pb_inherited_intermediate.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; @@ -32,7 +31,7 @@ class PBSharedInstanceIntermediateNode extends PBIntermediateNode bool foundMaster = false; @override - SymbolInstance originalRef; + var originalRef; @override @JsonKey(ignore: true) @@ -59,7 +58,8 @@ class PBSharedInstanceIntermediateNode extends PBIntermediateNode originalRef.boundaryRectangle.width), (originalRef.boundaryRectangle.y + originalRef.boundaryRectangle.height)), - originalRef.do_objectID, + originalRef.UUID, + originalRef.name, currentContext: currentContext, ) { if (originalRef is DesignNode && originalRef.prototypeNodeUUID != null) { @@ -67,11 +67,10 @@ class PBSharedInstanceIntermediateNode extends PBIntermediateNode } generator = PBSymbolInstanceGenerator(); - UUID = originalRef.do_objectID; + UUID = originalRef.UUID; overrideValues = sharedParamValues - .map((v) => - PBSymbolInstanceOverridableValue(v.do_objectId, v.value, v.type)) + .map((v) => PBSymbolInstanceOverridableValue(v.UUID, v.value, v.type)) .toList() ..removeWhere((v) => v == null || v.value == null); } @@ -93,8 +92,8 @@ class PBSharedParameterValue { final dynamic _value; dynamic get value => _value; - final String _do_objectId; - String get do_objectId => _do_objectId; + final String _UUID; + String get UUID => _UUID; - PBSharedParameterValue(this._type, this._value, this._do_objectId); + PBSharedParameterValue(this._type, this._value, this._UUID); } diff --git a/lib/interpret_and_optimize/entities/pb_shared_instance.g.dart b/lib/interpret_and_optimize/entities/pb_shared_instance.g.dart index 8e692bba..99563acb 100644 --- a/lib/interpret_and_optimize/entities/pb_shared_instance.g.dart +++ b/lib/interpret_and_optimize/entities/pb_shared_instance.g.dart @@ -9,9 +9,7 @@ part of 'pb_shared_instance.dart'; PBSharedInstanceIntermediateNode _$PBSharedInstanceIntermediateNodeFromJson( Map json) { return PBSharedInstanceIntermediateNode( - json['originalRef'] == null - ? null - : SymbolInstance.fromJson(json['originalRef'] as Map), + json['originalRef'], json['SYMBOL_ID'] as String, topLeftCorner: json['topLeftCorner'] == null ? null diff --git a/lib/interpret_and_optimize/entities/pb_shared_master_node.dart b/lib/interpret_and_optimize/entities/pb_shared_master_node.dart index fbdf2d09..d09b9b0c 100644 --- a/lib/interpret_and_optimize/entities/pb_shared_master_node.dart +++ b/lib/interpret_and_optimize/entities/pb_shared_master_node.dart @@ -1,7 +1,6 @@ import 'package:parabeac_core/design_logic/design_node.dart'; import 'package:parabeac_core/generation/generators/symbols/pb_mastersym_gen.dart'; import 'package:parabeac_core/generation/prototyping/pb_prototype_node.dart'; -import 'package:parabeac_core/input/sketch/entities/layers/symbol_master.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/interfaces/pb_inherited_intermediate.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/layouts/temp_group_layout_node.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; @@ -22,7 +21,7 @@ class PBSharedMasterNode extends PBVisualIntermediateNode String UUID; @override - final SymbolMaster originalRef; + final originalRef; @override @JsonKey(ignore: true) @@ -45,11 +44,11 @@ class PBSharedMasterNode extends PBVisualIntermediateNode ///The children that makes the UI of the [PBSharedMasterNode]. The children are going to be wrapped ///using a [TempGroupLayoutNode] as the root Node. set children(List children) { - child ??= TempGroupLayoutNode(originalRef, currentContext); + child ??= TempGroupLayoutNode(originalRef, currentContext, name); if (child is PBLayoutIntermediateNode) { children.forEach((element) => child.addChild(element)); } else { - child = TempGroupLayoutNode(originalRef, currentContext) + child = TempGroupLayoutNode(originalRef, currentContext, name) ..replaceChildren([child, ...children]); } } @@ -66,11 +65,11 @@ class PBSharedMasterNode extends PBVisualIntermediateNode Point bottomRightCorner, { this.overridableProperties, this.currentContext, - }) : super(topLeftCorner, bottomRightCorner, currentContext) { + }) : super(topLeftCorner, bottomRightCorner, currentContext, name) { if (originalRef is DesignNode && originalRef.prototypeNodeUUID != null) { prototypeNode = PrototypeNode(originalRef?.prototypeNodeUUID); } - UUID = originalRef.do_objectID; + UUID = originalRef.UUID; generator = PBMasterSymbolGenerator(); @@ -83,7 +82,7 @@ class PBSharedMasterNode extends PBVisualIntermediateNode parametersDefinition = overridableProperties .map((p) => PBSymbolMasterParameter( p.type, - p.do_objectId, + p.UUID, p.canOverride, p.propertyName, p.value?.toJson(), @@ -121,9 +120,9 @@ class PBSharedParameterProp { final String _propertyName; String get propertyName => _propertyName; - final String _do_objectId; - String get do_objectId => _do_objectId; + final String _UUID; + String get UUID => _UUID; PBSharedParameterProp(this._type, this.value, this._canOverride, - this._propertyName, this._do_objectId); + this._propertyName, this._UUID); } diff --git a/lib/interpret_and_optimize/entities/pb_shared_master_node.g.dart b/lib/interpret_and_optimize/entities/pb_shared_master_node.g.dart index 2804ed41..65c7102f 100644 --- a/lib/interpret_and_optimize/entities/pb_shared_master_node.g.dart +++ b/lib/interpret_and_optimize/entities/pb_shared_master_node.g.dart @@ -8,9 +8,7 @@ part of 'pb_shared_master_node.dart'; PBSharedMasterNode _$PBSharedMasterNodeFromJson(Map json) { return PBSharedMasterNode( - json['originalRef'] == null - ? null - : SymbolMaster.fromJson(json['originalRef'] as Map), + json['originalRef'], json['SYMBOL_ID'] as String, json['name'] as String, json['topLeftCorner'] == null diff --git a/lib/interpret_and_optimize/entities/plugins/plugin_container.dart b/lib/interpret_and_optimize/entities/plugins/plugin_container.dart index 107720ca..cb91ce2d 100644 --- a/lib/interpret_and_optimize/entities/plugins/plugin_container.dart +++ b/lib/interpret_and_optimize/entities/plugins/plugin_container.dart @@ -55,7 +55,8 @@ class PluginContainer extends PBVisualIntermediateNode implements PBEgg { this.alignY, this.color, this.currentContext, - }) : super(topLeftCorner, bottomRightCorner, currentContext) { + String name, + }) : super(topLeftCorner, bottomRightCorner, currentContext, name) { generator = PBContainerGenerator(); size = { 'width': (bottomRightCorner.x - topLeftCorner.x).abs(), @@ -74,7 +75,7 @@ class PluginContainer extends PBVisualIntermediateNode implements PBEgg { } // If there's multiple children add a temp group so that layout service lays the children out. if (child != null) { - var temp = TempGroupLayoutNode(null, currentContext); + var temp = TempGroupLayoutNode(null, currentContext, name); temp.addChild(child); temp.addChild(node); child = temp; @@ -97,7 +98,8 @@ class PluginContainer extends PBVisualIntermediateNode implements PBEgg { @override void alignChild() { - var align = InjectedAlign(topLeftCorner, bottomRightCorner, currentContext); + var align = + InjectedAlign(topLeftCorner, bottomRightCorner, currentContext, ''); align.addChild(child); align.alignChild(); child = align; diff --git a/lib/interpret_and_optimize/entities/plugins/plugin_container.g.dart b/lib/interpret_and_optimize/entities/plugins/plugin_container.g.dart index ce7f06a1..8bec9271 100644 --- a/lib/interpret_and_optimize/entities/plugins/plugin_container.g.dart +++ b/lib/interpret_and_optimize/entities/plugins/plugin_container.g.dart @@ -18,8 +18,8 @@ PluginContainer _$PluginContainerFromJson(Map json) { alignX: (json['alignX'] as num)?.toDouble(), alignY: (json['alignY'] as num)?.toDouble(), color: json['color'] as String, + name: json['name'] as String, ) - ..name = json['name'] as String ..semanticName = json['semanticName'] as String ..subsemantic = json['subsemantic'] as String ..child = json['child'] diff --git a/lib/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart b/lib/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart index adaf2e0d..4cbf7196 100644 --- a/lib/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart +++ b/lib/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart @@ -36,12 +36,8 @@ abstract class PBIntermediateNode { String name; PBIntermediateNode( - this.topLeftCorner, - this.bottomRightCorner, - this.UUID, { - this.currentContext, - this.subsemantic, - }) { + this.topLeftCorner, this.bottomRightCorner, this.UUID, this.name, + {this.currentContext, this.subsemantic}) { if (topLeftCorner != null && bottomRightCorner != null) { assert(topLeftCorner.x <= bottomRightCorner.x && topLeftCorner.y <= bottomRightCorner.y); diff --git a/lib/interpret_and_optimize/entities/subclasses/pb_layout_intermediate_node.dart b/lib/interpret_and_optimize/entities/subclasses/pb_layout_intermediate_node.dart index fc4b7f49..b265892c 100644 --- a/lib/interpret_and_optimize/entities/subclasses/pb_layout_intermediate_node.dart +++ b/lib/interpret_and_optimize/entities/subclasses/pb_layout_intermediate_node.dart @@ -34,10 +34,10 @@ abstract class PBLayoutIntermediateNode extends PBIntermediateNode PrototypeNode prototypeNode; /// - PBLayoutIntermediateNode( - this._layoutRules, this._exceptions, PBContext currentContext, + PBLayoutIntermediateNode(this._layoutRules, this._exceptions, + PBContext currentContext, String name, {topLeftCorner, bottomRightCorner, this.UUID, this.prototypeNode}) - : super(topLeftCorner, bottomRightCorner, UUID, + : super(topLeftCorner, bottomRightCorner, UUID, name, currentContext: currentContext); void alignChildren(); @@ -118,5 +118,5 @@ abstract class PBLayoutIntermediateNode extends PBIntermediateNode ///NOTE: make sure that the children that are going to be added satisfy the reles of the [PBLayoutIntermediateNode] PBLayoutIntermediateNode generateLayout( - List children, PBContext currentContext); + List children, PBContext currentContext, String name); } diff --git a/lib/interpret_and_optimize/entities/subclasses/pb_visual_intermediate_node.dart b/lib/interpret_and_optimize/entities/subclasses/pb_visual_intermediate_node.dart index b1ec393f..4da8e40d 100644 --- a/lib/interpret_and_optimize/entities/subclasses/pb_visual_intermediate_node.dart +++ b/lib/interpret_and_optimize/entities/subclasses/pb_visual_intermediate_node.dart @@ -9,10 +9,9 @@ abstract class PBVisualIntermediateNode extends PBIntermediateNode { final String UUID; - PBVisualIntermediateNode( - Point topLeftCorner, Point bottomRightCorner, PBContext currentContext, - {this.UUID}) - : super(topLeftCorner, bottomRightCorner, UUID, + PBVisualIntermediateNode(Point topLeftCorner, Point bottomRightCorner, + PBContext currentContext, String name, {this.UUID}) + : super(topLeftCorner, bottomRightCorner, UUID, name, currentContext: currentContext); void alignChild(); diff --git a/lib/interpret_and_optimize/helpers/node_tuple.dart b/lib/interpret_and_optimize/helpers/node_tuple.dart index 386c1321..b52563aa 100644 --- a/lib/interpret_and_optimize/helpers/node_tuple.dart +++ b/lib/interpret_and_optimize/helpers/node_tuple.dart @@ -4,11 +4,11 @@ import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_inte /// A simple child Sketch Node & Converted Parent Node holder. (Tuple) class NodeTuple { /// Child Sketch Node - DesignNode sketchNode; + DesignNode designNode; /// Parent Intermediate node where `sketchNode.interpretNode()` should be assigned as a child. PBIntermediateNode convertedParent; /// Constructor for NodeTuple. - NodeTuple(this.sketchNode, this.convertedParent); + NodeTuple(this.designNode, this.convertedParent); } diff --git a/lib/interpret_and_optimize/helpers/pb_deny_list_helper.dart b/lib/interpret_and_optimize/helpers/pb_deny_list_helper.dart index cf14be1a..22244f5f 100644 --- a/lib/interpret_and_optimize/helpers/pb_deny_list_helper.dart +++ b/lib/interpret_and_optimize/helpers/pb_deny_list_helper.dart @@ -22,7 +22,7 @@ class PBDenyListHelper { PBDenyListNode returnDenyListNodeIfExist(DesignNode node) { if (isInDenyListDirect(node)) { - return PBDenyListNode(Point(0, 0), Point(0, 0), null); + return PBDenyListNode(Point(0, 0), Point(0, 0), null, ''); } else { return null; } diff --git a/lib/interpret_and_optimize/helpers/pb_plugin_list_helper.dart b/lib/interpret_and_optimize/helpers/pb_plugin_list_helper.dart index e64eee12..8a63bd31 100644 --- a/lib/interpret_and_optimize/helpers/pb_plugin_list_helper.dart +++ b/lib/interpret_and_optimize/helpers/pb_plugin_list_helper.dart @@ -13,11 +13,11 @@ class PBPluginListHelper { static final PBPluginListHelper _instance = PBPluginListHelper._internal(); void initPlugins(PBContext context) { allowListNames = { - '.*tabbar': InjectedTabBar(Point(0, 0), Point(0, 0), Uuid().v4(), + '.*tabbar': InjectedTabBar(Point(0, 0), Point(0, 0), Uuid().v4(), '', currentContext: context), - '.*navbar': InjectedNavbar(Point(0, 0), Point(0, 0), Uuid().v4(), + '.*navbar': InjectedNavbar(Point(0, 0), Point(0, 0), Uuid().v4(), '', currentContext: context), - '.*tab': Tab(Point(0, 0), Point(0, 0), + '.*tab': Tab(Point(0, 0), Point(0, 0), '', currentContext: context, UUID: Uuid().v4()), }; } @@ -30,7 +30,6 @@ class PBPluginListHelper { /// List of static plugin names used for Amplitude static List names = [ - '.*switch', '.*background', '.*navbar', '.*tabbar', diff --git a/lib/interpret_and_optimize/services/pb_layout_generation_service.dart b/lib/interpret_and_optimize/services/pb_layout_generation_service.dart index 7954a434..9fbd41b2 100644 --- a/lib/interpret_and_optimize/services/pb_layout_generation_service.dart +++ b/lib/interpret_and_optimize/services/pb_layout_generation_service.dart @@ -37,10 +37,13 @@ class PBLayoutGenerationService implements PBGenerationService { PBLayoutGenerationService({this.currentContext}) { Map layoutHandlers = { 'column': PBIntermediateColumnLayout( - currentContext: currentContext, UUID: Uuid().v4()), - 'row': - PBIntermediateRowLayout(Uuid().v4(), currentContext: currentContext), - 'stack': PBIntermediateStackLayout(Uuid().v4(), + '', + currentContext: currentContext, + UUID: Uuid().v4(), + ), + 'row': PBIntermediateRowLayout('', Uuid().v4(), + currentContext: currentContext), + 'stack': PBIntermediateStackLayout('', Uuid().v4(), currentContext: currentContext), }; @@ -94,8 +97,12 @@ class PBLayoutGenerationService implements PBGenerationService { return rootNode.children[0]; } var replacementNode = InjectedContainer( - rootNode.bottomRightCorner, rootNode.topLeftCorner, Uuid().v4(), - currentContext: currentContext); + rootNode.bottomRightCorner, + rootNode.topLeftCorner, + Uuid().v4(), + '', + currentContext: currentContext, + ); replacementNode.prototypeNode = prototypeNode; replacementNode.addChild(rootNode.children.first); return replacementNode; @@ -135,7 +142,7 @@ class PBLayoutGenerationService implements PBGenerationService { children = _arrangeChildren(group); rootLayout = children.length == 1 ? children[0] - : defaultLayout.generateLayout(children, currentContext); + : defaultLayout.generateLayout(children, currentContext, group.name); return rootLayout; } @@ -165,8 +172,10 @@ class PBLayoutGenerationService implements PBGenerationService { .replaceChildren(_arrangeChildren(nextNode)); generatedLayout = nextNode; } - generatedLayout ??= - layout.generateLayout([currentNode, nextNode], currentContext); + + /// Generated / Injected Layouts can have no names because they don't derive from a group, which means they would also not end up being a misc. node. + generatedLayout ??= layout + .generateLayout([currentNode, nextNode], currentContext, ''); children .replaceRange(childPointer, childPointer + 2, [generatedLayout]); childPointer = 0; diff --git a/lib/interpret_and_optimize/services/pb_shared_aggregation_service.dart b/lib/interpret_and_optimize/services/pb_shared_aggregation_service.dart index db7fea27..4bbffb12 100644 --- a/lib/interpret_and_optimize/services/pb_shared_aggregation_service.dart +++ b/lib/interpret_and_optimize/services/pb_shared_aggregation_service.dart @@ -44,7 +44,7 @@ class PBSharedInterAggregationService { PBSharedMasterNode sharedMasterNode, PBIntermediateNode rootChildNode) { for (var prop in sharedMasterNode.overridableProperties) { prop.value = PBIntermediateNodeSearcherService.searchNodeByUUID( - rootChildNode, prop?.do_objectId); + rootChildNode, prop?.UUID); if (prop.type == PBSharedInstanceIntermediateNode) { ///if the [PBSharedMasterNode] contains [PBSharedInstanceIntermediateNode] as parameters ///then its going gather the information of its [PBSharedMasterNode]. @@ -84,9 +84,9 @@ class PBSharedInterAggregationService { instanceIntermediateNode.sharedParamValues = instanceIntermediateNode.sharedParamValues.map((v) { for (var symParam in masterNode.overridableProperties) { - if (symParam.do_objectId == v.do_objectId) { + if (symParam.UUID == v.UUID) { return PBSharedParameterValue( - symParam.type, v.value, symParam.do_objectId); + symParam.type, v.value, symParam.UUID); } } return null; diff --git a/lib/interpret_and_optimize/services/pb_visual_generation_service.dart b/lib/interpret_and_optimize/services/pb_visual_generation_service.dart index 72b58d70..84c03261 100644 --- a/lib/interpret_and_optimize/services/pb_visual_generation_service.dart +++ b/lib/interpret_and_optimize/services/pb_visual_generation_service.dart @@ -1,11 +1,11 @@ import 'package:parabeac_core/design_logic/design_node.dart'; +import 'package:parabeac_core/design_logic/group_node.dart'; +import 'package:parabeac_core/design_logic/pb_shared_instance_design_node.dart'; +import 'package:parabeac_core/design_logic/pb_shared_master_node.dart'; import 'package:parabeac_core/generation/prototyping/pb_dest_holder.dart'; import 'package:parabeac_core/generation/prototyping/pb_prototype_node.dart'; -import 'package:parabeac_core/input/sketch/entities/layers/abstract_group_layer.dart'; import 'package:parabeac_core/input/sketch/services/positional_cleansing_service.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/pb_deny_list_node.dart'; -import 'package:parabeac_core/interpret_and_optimize/entities/pb_shared_instance.dart'; -import 'package:parabeac_core/interpret_and_optimize/entities/pb_shared_master_node.dart'; import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart'; import 'package:parabeac_core/interpret_and_optimize/helpers/node_tuple.dart'; import 'package:parabeac_core/interpret_and_optimize/helpers/pb_context.dart'; @@ -46,23 +46,26 @@ class PBVisualGenerationService implements PBGenerationService { queue.add(NodeTuple(originalRoot, null)); while (queue.isNotEmpty) { var currentNode = queue.removeAt(0); - if (currentNode.sketchNode.isVisible) { - PBIntermediateNode result, original; + + if (currentNode.designNode.isVisible) { + PBIntermediateNode result; // Check semantics result = PBDenyListHelper() - .returnDenyListNodeIfExist(currentNode.sketchNode); + .returnDenyListNodeIfExist(currentNode.designNode); if (result is PBDenyListNode) { } else { result = PBPluginListHelper() - .returnAllowListNodeIfExists(currentNode.sketchNode); + .returnAllowListNodeIfExists(currentNode.designNode); + // Generate general intermediate node if still null. // needs to be assigned to [original], because [symbolMaster] needs to be registered to SymbolMaster - original = await currentNode.sketchNode.interpretNode(currentContext); + if (result == null || - original is PBSharedInstanceIntermediateNode || - original is PBSharedMasterNode) { - result = original; + currentNode.designNode is PBSharedInstanceDesignNode || + currentNode.designNode is PBSharedMasterDesignNode) { + result = await currentNode.designNode.interpretNode(currentContext); } + if (currentNode.convertedParent != null) { _addToParent(currentNode.convertedParent, result); } @@ -72,12 +75,11 @@ class PBVisualGenerationService implements PBGenerationService { if (result != null) { // Add next depth to queue. - if (currentNode.sketchNode is AbstractGroupLayer && - (currentNode.sketchNode as AbstractGroupLayer) - .layers - .isNotEmpty) { + if (currentNode.designNode is GroupNode && + (currentNode.designNode as GroupNode).children != null && + (currentNode.designNode as GroupNode).children.isNotEmpty) { for (var child - in (currentNode.sketchNode as AbstractGroupLayer).layers) { + in (currentNode.designNode as GroupNode).children) { queue.add(NodeTuple(child, result)); } } diff --git a/lib/interpret_and_optimize/value_objects/pb_symbol_instance_overridable_value.dart b/lib/interpret_and_optimize/value_objects/pb_symbol_instance_overridable_value.dart index 2d3214d4..33979995 100644 --- a/lib/interpret_and_optimize/value_objects/pb_symbol_instance_overridable_value.dart +++ b/lib/interpret_and_optimize/value_objects/pb_symbol_instance_overridable_value.dart @@ -6,10 +6,11 @@ part 'pb_symbol_instance_overridable_value.g.dart'; class PBSymbolInstanceOverridableValue { @JsonKey(toJson: _typeToJson, fromJson: _typeFromJson) final Type type; - final String do_objectId; + @JsonKey(name: 'do_objectID') + final String UUID; final dynamic value; - PBSymbolInstanceOverridableValue(this.do_objectId, this.value, this.type); + PBSymbolInstanceOverridableValue(this.UUID, this.value, this.type); static String _typeToJson(type) { return {'Type': type.toString()}.toString(); diff --git a/lib/interpret_and_optimize/value_objects/pb_symbol_instance_overridable_value.g.dart b/lib/interpret_and_optimize/value_objects/pb_symbol_instance_overridable_value.g.dart index e179611d..77032597 100644 --- a/lib/interpret_and_optimize/value_objects/pb_symbol_instance_overridable_value.g.dart +++ b/lib/interpret_and_optimize/value_objects/pb_symbol_instance_overridable_value.g.dart @@ -9,7 +9,7 @@ part of 'pb_symbol_instance_overridable_value.dart'; PBSymbolInstanceOverridableValue _$PBSymbolInstanceOverridableValueFromJson( Map json) { return PBSymbolInstanceOverridableValue( - json['do_objectId'] as String, + json['do_objectID'] as String, json['value'], PBSymbolInstanceOverridableValue._typeFromJson(json['type']), ); @@ -19,6 +19,6 @@ Map _$PBSymbolInstanceOverridableValueToJson( PBSymbolInstanceOverridableValue instance) => { 'type': PBSymbolInstanceOverridableValue._typeToJson(instance.type), - 'do_objectId': instance.do_objectId, + 'do_objectID': instance.UUID, 'value': instance.value, }; diff --git a/lib/interpret_and_optimize/value_objects/pb_symbol_master_params.dart b/lib/interpret_and_optimize/value_objects/pb_symbol_master_params.dart index 72b97acc..65602d83 100644 --- a/lib/interpret_and_optimize/value_objects/pb_symbol_master_params.dart +++ b/lib/interpret_and_optimize/value_objects/pb_symbol_master_params.dart @@ -32,7 +32,7 @@ class PBSymbolMasterParameter extends PBVisualIntermediateNode this.bottomRightX, this.bottomRightY, {this.context}) - : super(Point(0, 0), Point(0, 0), context); + : super(Point(0, 0), Point(0, 0), context, propertyName); static String _typeToJson(type) { return type.toString(); diff --git a/lib/main.dart b/lib/main.dart index b0d57f73..debeab81 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'dart:io'; - +import 'package:parabeac_core/APICaller/api_call_service.dart'; +import 'package:parabeac_core/controllers/figma_controller.dart'; import 'package:parabeac_core/controllers/main_info.dart'; import 'package:parabeac_core/controllers/sketch_controller.dart'; import 'package:parabeac_core/input/sketch/services/input_design.dart'; @@ -9,88 +10,123 @@ import 'package:quick_log/quick_log.dart'; import 'package:sentry/sentry.dart'; import 'package:uuid/uuid.dart'; import 'package:http/http.dart' as http; +import 'package:args/args.dart'; import 'controllers/main_info.dart'; -String pathToSketchFile; String resultsDirectory = Platform.environment['SENTRY_DSN'] ?? '/temp'; final SentryClient sentry = SentryClient(dsn: resultsDirectory); +ArgResults argResults; void main(List args) async { await checkConfigFile(); + //Sentry logging initialization MainInfo().sentry = SentryClient(dsn: resultsDirectory); var log = Logger('Main'); - log.info(args.toString()); MainInfo().cwd = Directory.current; - var path = ''; - var projectName = ''; - var designType = 'sketch'; - final _helpText = "Usage Options: \n" + - "-p \t Path to the sketch File \n" + - "-o \t Output Path\n" + - "-n \t Name of the project\n" + - "-c \t Path of the configuration file\n"; - - //Check if no args passed or only -h passed - //If arguments is empty or only has -h - if (args.length == 0 || args[0] == '-h') { - print(_helpText); - return; + ///sets up parser + final parser = ArgParser() + ..addOption('path', + help: 'Path to the design file', valueHelp: 'path', abbr: 'p') + ..addOption('out', help: 'The output path', valueHelp: 'path', abbr: 'o') + ..addOption('project-name', + help: 'The name of the project', abbr: 'n', defaultsTo: 'temp') + ..addOption('config-path', + help: 'Path of the configuration file', + abbr: 'c', + defaultsTo: 'default:lib/configurations/configurations.json') + ..addOption('fig', help: 'The ID of the figma file', abbr: 'f') + ..addOption('figKey', help: 'Your personal API Key', abbr: 'k') + ..addFlag('help', + help: 'Displays this help information.', abbr: 'h', negatable: false); + +//error handler using logger package + void handleError(String msg) { + log.error(msg); + exitCode = 2; + exit(2); } - var configurationPath = 'lib/configurations/configurations.json'; + + argResults = parser.parse(args); + + //Check if no args passed or only -h/--help passed + if (argResults['help'] || argResults.arguments.isEmpty) { + print(''' + ** PARABEAC HELP ** +${parser.usage} + '''); + exit(0); + } + + if (Platform.isMacOS || Platform.isLinux) { + MainInfo().platform = 'UIX'; + } else if (Platform.isWindows) { + MainInfo().platform = 'WIN'; + } else { + MainInfo().platform = 'OTH'; + } + + String path = argResults['path']; + + MainInfo().figmaKey = argResults['figKey']; + MainInfo().figmaProjectID = argResults['fig']; + + var designType = 'sketch'; + + var configurationPath = argResults['config-path']; var configurationType = 'default'; - for (var i = 0; i < args.length; i += 2) { - switch (args[i]) { - case '-p': - path = args[i + 1]; - pathToSketchFile = path; - MainInfo().sketchPath = pathToSketchFile; - // If outputPath is empty, assume we are outputting to sketch path - MainInfo().outputPath ??= getCleanPath(path); - if (pathToSketchFile.endsWith('.sketch')) { - designType = 'sketch'; - } else if (pathToSketchFile.endsWith('.fig')) { - designType = 'figma'; - } - break; - case '-o': - MainInfo().outputPath = args[i + 1]; - break; - case '-n': - projectName = args[i + 1]; - break; - // usage -c "default:lib/configurations/configurations.json - case '-c': - var configSet = args[i + 1].split(':'); - if (configSet.isNotEmpty) { - configurationType = configSet[0]; - } - if (configSet.length >= 2) { - // handle configurations - configurationPath = configSet[1]; - } - break; - } + String projectName = argResults['project-name']; + + // Handle input errors + if (path == null && + (MainInfo().figmaKey == null || MainInfo().figmaProjectID == null)) { + handleError( + 'Missing required argument: path to Sketch file or both Figma Key and Project ID.'); + } else if (path != null && + (MainInfo().figmaKey != null || MainInfo().figmaProjectID != null)) { + handleError( + 'Too many arguments: Please provide either the path to Sketch file or the Figma File ID and API Key'); + } else if (path == null) { + designType = 'figma'; } - if (!MainInfo().outputPath.endsWith('/')) { - MainInfo().outputPath += '/'; + // usage -c "default:lib/configurations/configurations.json + var configSet = configurationPath.split(':'); + if (configSet.isNotEmpty) { + configurationType = configSet[0]; + } + if (configSet.length >= 2) { + // handle configurations + configurationPath = configSet[1]; } - if (projectName.isEmpty) { - projectName = 'temp'; + // Populate `MainInfo()` + MainInfo().outputPath = argResults['out']; + // If outputPath is empty, assume we are outputting to design file path + MainInfo().outputPath ??= await getCleanPath(path ?? Directory.current.path); + if (!MainInfo().outputPath.endsWith('/')) { + MainInfo().outputPath += '/'; } MainInfo().projectName = projectName; - // Input - var id = InputDesignService(path); + // Create pngs directory + await Directory('${MainInfo().outputPath}pngs').create(recursive: true); if (designType == 'sketch') { + var file = await FileSystemEntity.isFile(path); + var exists = await File(path).exists(); + + if (!file || !exists) { + handleError('$path is not a file'); + } + MainInfo().sketchPath = path; + InputDesignService(path); + var process = await Process.start('npm', ['run', 'prod'], workingDirectory: MainInfo().cwd.path + '/SketchAssetConverter'); @@ -101,10 +137,8 @@ void main(List args) async { } } - //Retrieving the Sketch PNGs from the design file - await Directory('${MainInfo().outputPath}pngs').create(recursive: true); - await SketchController().convertSketchFile( - pathToSketchFile, + await SketchController().convertFile( + path, MainInfo().outputPath + projectName, configurationPath, configurationType); @@ -112,8 +146,29 @@ void main(List args) async { } else if (designType == 'xd') { assert(false, 'We don\'t support Adobe XD.'); } else if (designType == 'figma') { - assert(false, 'We don\'t support Figma.'); + if (MainInfo().figmaKey == null || MainInfo().figmaKey.isEmpty) { + assert(false, 'Please provided a Figma API key to proceed.'); + } + if (MainInfo().figmaProjectID == null || + MainInfo().figmaProjectID.isEmpty) { + assert(false, 'Please provided a Figma project ID to proceed.'); + } + var jsonOfFigma = await APICallService.makeAPICall( + 'https://api.figma.com/v1/files/${MainInfo().figmaProjectID}', + MainInfo().figmaKey); + + if (jsonOfFigma != null) { + // Starts Figma to Object + FigmaController().convertFile( + jsonOfFigma, + MainInfo().outputPath + projectName, + configurationPath, + configurationType); + } else { + log.error('File was not retrieved from Figma.'); + } } + exitCode = 0; } /// Checks whether a configuration file is made already, @@ -174,11 +229,17 @@ void addToAmplitude() async { ); } -String getCleanPath(String path) { +Future getCleanPath(String path) async { + if (path == null || path.isEmpty) { + return ''; + } var list = path.split('/'); + if (!await Directory(path).exists()) { + list.removeLast(); + } var result = ''; - for (int i = 0; i < list.length - 1; i++) { - result += list[i] + '/'; + for (var dir in list) { + result += dir + '/'; } return result; } diff --git a/parabeac.dart b/parabeac.dart index 238dfcc1..d47a9871 100644 --- a/parabeac.dart +++ b/parabeac.dart @@ -1,44 +1,86 @@ import 'dart:convert'; import 'dart:io'; +import 'dart:io' as io; +import 'package:args/args.dart'; +ArgResults argResults; + +// ignore: always_declare_return_types main(List args) async { - List arguments = ['lib/main.dart']; - final helpText = "Usage Options: \n" + "-url \n" + "-key \n" + "-Skey"; - var url = ''; - var key = ''; - var sKey = ''; - //If arguments is empty or only has -h - if (args.length == 0 || args[0] == '-h') { - print(helpText); + var arguments = ['lib/main.dart']; + + //sets up parser + //wil set the hide option for help flag to true to + //prevent the help usage from being printed twice in console + final parser = ArgParser() + ..addOption('path', + help: 'Path to the design file', valueHelp: 'path', abbr: 'p') + ..addOption('out', help: 'The output path', valueHelp: 'path', abbr: 'o') + ..addOption('project-name', + help: 'The name of the project', abbr: 'n', defaultsTo: 'temp') + ..addOption('config-path', + help: 'Path of the configuration file', + abbr: 'c', + defaultsTo: 'default:lib/configurations/configurations.json') + ..addFlag('help', + help: 'Displays this help information.', abbr: 'h', negatable: false) + ..addOption('url', + help: 'S3 bucket link to download and install Parabeac Eggs', abbr: 'u') + ..addOption('key', help: 'key for S3 bucket account', abbr: 'e') + ..addOption('fig', help: 'The ID of the figma file', abbr: 'f') + ..addOption('figKey', help: 'Your personal API Key', abbr: 'k') + ..addOption('secret-key', help: 'S3 secret key', abbr: 's'); + + argResults = parser.parse(args); + + //Check if no args passed or only -h/--help passed + //stops the program after printing the help for both the + //main parabeac arguments and the the parabeac egg arguments + if (argResults['help'] || argResults.arguments.isEmpty) { + print(''' +Common commands: + +${parser.usage} + '''); + exit(0); + } + + var url = argResults['url']; + var key = argResults['key']; + var sKey = argResults['secret-key']; + var isSketchInput = satisfiesParams(argResults.arguments, [ + ['-p', '--path'] + ]); + var isFigmaInput = satisfiesParams(argResults.arguments, [ + ['-k', '--figKey'], + ['-f', '--fig'] + ]); + if (isSketchInput || isFigmaInput) { + arguments.addAll(argResults.arguments); + } + String _basePath; + String _os; + + if (io.Platform.isMacOS || io.Platform.isLinux) { + _os = 'UIX'; + } else if (io.Platform.isWindows) { + _os = 'WIN'; } else { - for (var i = 0; i < args.length; i += 2) { - switch (args[i]) { - case '-url': - url = args[i + 1]; - break; - case '-key': - key = args[i + 1]; - break; - case '-Skey': - sKey = args[i + 1]; - break; - default: - arguments.addAll([args[i], args[i + 1]]); - break; - } - } + _os = 'OTH'; } + _basePath = io.Directory.current.path; + /// To install parabeac core var install = Process.start( 'bash', [ '${Directory.current.path}/pb-scripts/install.sh', ], - ).then((process){ + ).then((process) { stdout.addStream(process.stdout); process.exitCode.then((exitCode) { - if(exitCode!=0) { + if (exitCode != 0) { print('exit code: $exitCode'); } }); @@ -75,3 +117,8 @@ main(List args) async { print(event); } } + +/// Checks if `args` satisfies the required arguments, `reqArgs`. +bool satisfiesParams(List args, List reqArgs) { + return reqArgs.every((reqArgList) => reqArgList.any(args.contains)); +} diff --git a/pubspec.yaml b/pubspec.yaml index 3deea9d7..27aa67ca 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,6 +17,7 @@ dependencies: uuid: ^2.1.0 quick_log: ^1.1.3 sentry: ">=3.0.0 <4.0.0" + http2: ^1.0.1 recase: "^3.0.0" # path: ^1.6.0 @@ -24,3 +25,5 @@ dev_dependencies: pedantic: ^1.8.0 test: ^1.6.0 build_config: ^0.4.2 +# dependency_overrides: +# analyzer: '0.39.14' \ No newline at end of file diff --git a/tempJson.json b/tempJson.json new file mode 100644 index 00000000..87ae70e1 --- /dev/null +++ b/tempJson.json @@ -0,0 +1,34552 @@ +{ + "document": { + "id": "0:0", + "name": "Document", + "type": "DOCUMENT", + "children": [ + { + "id": "0:1", + "name": "Symbols", + "type": "CANVAS", + "children": [ + { + "id": "0:502", + "name": "External Symbols", + "visible": false, + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:500", + "name": "iPhone X/Home Indicator/Home Indicator - On Light", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:501", + "name": "Rectangle 24", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 4868.0, + "y": 228.0, + "width": 134.0, + "height": 5.0 + }, + "constraints": { + "vertical": "BOTTOM", + "horizontal": "CENTER" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 100.0 + } + ], + "absoluteBoundingBox": { + "x": 4747.0, + "y": 208.0, + "width": 375.0, + "height": 34.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 0.0, + "y": 0.0, + "width": 100.0, + "height": 100.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:2", + "name": "icons/notification/not empty", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:3", + "name": "Group 17", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:6", + "name": "", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "EXCLUDE", + "children": [ + { + "id": "0:4", + "name": "Path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 234.00570678710938, + "y": -0.095703125, + "width": 25.982574462890625, + "height": 29.94140625 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:5", + "name": "Path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 243.923828125, + "y": 24.8359375, + "width": 6.09375, + "height": 3.046875 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:7", + "name": "Path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 236.248046875, + "y": 1.896484375, + "width": 21.416015625, + "height": 20.947265625 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 234.00570678710938, + "y": -0.095703125, + "width": 25.982574462890625, + "height": 29.94140625 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 5.0 } + } + ], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 234.0, + "y": -1.0, + "width": 26.0, + "height": 31.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [ + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 5.0 } + } + ], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 232.0, + "y": 0.0, + "width": 30.0, + "height": 30.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.7279708981513977, + "g": 0.7279708981513977, + "b": 0.7279708981513977, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.7279708981513977, + "g": 0.7279708981513977, + "b": 0.7279708981513977, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + } + ], + "effects": [] + }, + { + "id": "0:8", + "name": ".*tabBar", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:9", + "name": "menu-footer", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 366.0, + "y": 372.0, + "width": 375.0, + "height": 92.45660400390625 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + }, + { + "blendMode": "NORMAL", + "visible": false, + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { "x": 0.11798575592716715, "y": 0.22202727205494194 }, + { "x": 0.11798575592716715, "y": 0.9860557602006075 }, + { "x": -0.26402848814566565, "y": 0.22202727205494194 } + ], + "gradientStops": [ + { + "color": { + "r": 0.6549019813537598, + "g": 0.2980392277240753, + "b": 0.9490196108818054, + "a": 1.0 + }, + "position": 0.0 + }, + { + "color": { + "r": 0.4588235318660736, + "g": 0.3960784375667572, + "b": 0.9843137264251709, + "a": 1.0 + }, + "position": 1.0 + } + ] + }, + { + "blendMode": "NORMAL", + "visible": false, + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { "x": 0.0, "y": 0.0 }, + { "x": 0.0, "y": 1.0 }, + { "x": -0.5, "y": 0.0 } + ], + "gradientStops": [ + { + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 0.5 }, + "position": 0.0 + }, + { + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.5 }, + "position": 1.0 + } + ] + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.15000000596046448 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 0.0 }, + "radius": 35.0 + } + ] + }, + { + "id": "0:13", + "name": "Object", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:10", + "name": "homeicon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 406.0, + "y": 398.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "21d91c427ebfba99ab3909151fb10464dae795de", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:11", + "name": "homeicon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 406.0, + "y": 398.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "21d91c427ebfba99ab3909151fb10464dae795de", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "isMask": true + }, + { + "id": "0:12", + "name": "homeicon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 406.0, + "y": 398.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5843137502670288, + "g": 0.6235294342041016, + "b": 0.729411780834198, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 366.0, + "y": 372.0, + "width": 100.0, + "height": 100.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:14", + "name": "icons/tab bar/stats.*tab", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:15", + "name": "Oval", + "visible": false, + "type": "ELLIPSE", + "blendMode": "NORMAL", + "opacity": 0.3065243661403656, + "absoluteBoundingBox": { + "x": 614.0, + "y": 401.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.847000002861023, + "g": 0.847000002861023, + "b": 0.847000002861023, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:18", + "name": "Shape", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "EXCLUDE", + "children": [ + { + "id": "0:16", + "name": "Path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 617.0, + "y": 405.0, + "width": 12.526315689086914, + "height": 11.894500732421875 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:17", + "name": "Path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 622.368408203125, + "y": 409.47369384765625, + "width": 12.526315689086914, + "height": 11.894500732421875 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 617.0, + "y": 405.0, + "width": 17.894737243652344, + "height": 16.36818504333496 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5843137502670288, + "g": 0.6235294342041016, + "b": 0.729411780834198, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 614.0, + "y": 401.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:19", + "name": "plus-icon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 528.0, + "y": 382.0, + "width": 50.90909194946289, + "height": 56.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "05cf0e11c179692ec2fcb5eff64e817a9596d400", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:20", + "name": "not published.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 475.0, + "y": 400.0, + "width": 23.33333396911621, + "height": 23.33333396911621 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "1bee5266944df41f0f6cd87832566d650163ddfe", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:21", + "name": "learn.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 684.0, + "y": 405.0, + "width": 24.0, + "height": 21.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "b12d692ccfdf45980c55fc36de927c9ac37f466b", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 366.0, + "y": 372.0, + "width": 375.0, + "height": 93.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:22", + "name": "header.*navbar", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:23", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 366.0, + "y": 565.0, + "width": 375.0, + "height": 95.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:24", + "name": "userScore.*middle", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:25", + "name": "285", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 519.0, + "y": 616.0, + "width": 38.0, + "height": 27.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "285", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 21.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 24.609375, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:26", + "name": "starIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 567.0, + "y": 618.0, + "width": 22.0, + "height": 22.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "561adcc26e02e562330294d1ef7cb73d7d78b1b5", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 519.0, + "y": 616.0, + "width": 70.0, + "height": 25.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:27", + "name": "bellIcon.*leading", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 383.0, + "y": 613.774169921875, + "width": 25.161291122436523, + "height": 29.225807189941406 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "70d7696e0256bf5b87fe826a9142b64539ece51a", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:28", + "name": "profileIcon.*trailing", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 692.0, + "y": 613.0, + "width": 34.0, + "height": 34.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "1970b23eb7b96f9c734db0864f2478d4c11d5893", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 366.0, + "y": 565.0, + "width": 375.0, + "height": 95.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:29", + "name": "9. Icons / # Icon Area", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:30", + "name": "🔷 Icon Color", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 841.0, + "y": 0.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 841.0, + "y": 0.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:31", + "name": "9. Icons / Love", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:33", + "name": "🔷 Icon Color", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 843.0, + "y": 127.0, + "width": 20.0, + "height": 18.350000381469727 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:32", + "name": "🔷 Icon Color", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 843.0, + "y": 127.0, + "width": 20.0, + "height": 18.350000381469727 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "isMask": true, + "isMaskOutline": true + } + ], + "absoluteBoundingBox": { + "x": 841.0, + "y": 124.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:34", + "name": "3. Buttons / Round / 2. Secondary / 32px", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:35", + "name": "Info", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:37", + "name": "⬛ Background", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 100.0, + "y": 132.0, + "width": 32.0, + "height": 32.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.9474354386329651, + "g": 0.9474354386329651, + "b": 0.9474354386329651, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:36", + "name": "⬛ Background", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 100.0, + "y": 132.0, + "width": 32.0, + "height": 32.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.9474354386329651, + "g": 0.9474354386329651, + "b": 0.9474354386329651, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "isMask": true, + "isMaskOutline": true + }, + { + "id": "0:38", + "name": "🧡 Icon", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:38;0:30", + "name": "🔷 Icon Color", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 106.0, + "y": 138.0, + "width": 20.0, + "height": 20.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 106.0, + "y": 138.0, + "width": 20.0, + "height": 20.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "CENTER" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:29" + } + ], + "absoluteBoundingBox": { + "x": 100.0, + "y": 132.0, + "width": 32.0, + "height": 32.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 100.0, + "y": 132.0, + "width": 32.0, + "height": 32.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:39", + "name": "SmallMajorCard", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:40", + "name": "Group Copy 3", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:41", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 965.0, + "y": 0.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.34117648005485535, + "b": 0.7686274647712708, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10453464835882187 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "cornerRadius": 10.0 + }, + { + "id": "0:42", + "name": "Information Systems", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 977.0, + "y": 13.0, + "width": 117.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Information Systems", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 965.0, + "y": 0.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 965.0, + "y": 0.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:43", + "name": "Bars / Status Bar / iPhone / x / Time - Light", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:44", + "name": "Time", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1230.0, + "y": 7.0, + "width": 54.0, + "height": 19.0 + }, + "constraints": { "vertical": "CENTER", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.014475814066827297, + "g": 0.1713331937789917, + "b": 0.36188071966171265, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "09:41", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 15.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": -0.30000001192092896, + "lineHeightPx": 17.578125, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1230.0, + "y": 0.0, + "width": 54.0, + "height": 21.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:45", + "name": "Bars / Status Bar / iPhone / Light", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:46", + "name": "Battery", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:47", + "name": "Border", + "type": "RECTANGLE", + "blendMode": "NORMAL", + "opacity": 0.3499999940395355, + "absoluteBoundingBox": { + "x": 702.3333129882812, + "y": 777.3333129882812, + "width": 22.0, + "height": 11.333333015441895 + }, + "constraints": { "vertical": "TOP", "horizontal": "RIGHT" }, + "fills": [], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "exportSettings": [], + "effects": [], + "cornerRadius": 2.6666667461395264 + }, + { + "id": "0:48", + "name": "Cap", + "type": "VECTOR", + "blendMode": "NORMAL", + "opacity": 0.4000000059604645, + "absoluteBoundingBox": { + "x": 725.3333129882812, + "y": 781.0, + "width": 1.328037977218628, + "height": 4.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "RIGHT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:49", + "name": "Capacity", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 704.3333129882812, + "y": 779.3333129882812, + "width": 18.0, + "height": 7.333333492279053 + }, + "constraints": { "vertical": "TOP", "horizontal": "RIGHT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.014475814066827297, + "g": 0.1713331937789917, + "b": 0.36188071966171265, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 1.3333333730697632 + } + ], + "absoluteBoundingBox": { + "x": 702.0, + "y": 777.0, + "width": 25.0, + "height": 12.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:52", + "name": "Wifi", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "EXCLUDE", + "children": [ + { + "id": "0:50", + "name": "Wifi-path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 682.0, + "y": 777.3306884765625, + "width": 15.33329963684082, + "height": 4.758129596710205 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:51", + "name": "Wifi-path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 684.6738891601562, + "y": 781.1366577148438, + "width": 9.988699913024902, + "height": 3.645390510559082 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:53", + "name": "Wifi-path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 687.3446044921875, + "y": 784.9456787109375, + "width": 4.644748687744141, + "height": 3.3850016593933105 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 682.0, + "y": 777.3306884765625, + "width": 15.33329963684082, + "height": 11.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "RIGHT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.014475814066827297, + "g": 0.1713331937789917, + "b": 0.36188071966171265, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:56", + "name": "Cellular Connection", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "EXCLUDE", + "children": [ + { + "id": "0:54", + "name": "Cellular-Connection-path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 660.0, + "y": 784.3333740234375, + "width": 3.0, + "height": 4.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:55", + "name": "Cellular-Connection-path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 664.6666870117188, + "y": 782.3333740234375, + "width": 3.0, + "height": 6.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:57", + "name": "Cellular-Connection-path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 669.3333129882812, + "y": 780.0, + "width": 3.0, + "height": 8.333333015441895 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:58", + "name": "Cellular-Connection-path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 674.0, + "y": 777.6666870117188, + "width": 3.0, + "height": 10.666666984558105 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 660.0, + "y": 777.6666870117188, + "width": 17.0, + "height": 10.666666984558105 + }, + "constraints": { "vertical": "TOP", "horizontal": "RIGHT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.014475814066827297, + "g": 0.1713331937789917, + "b": 0.36188071966171265, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:59", + "name": "Time Style", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:59;0:44", + "name": "Time", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 387.0, + "y": 774.0, + "width": 54.0, + "height": 19.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.014475814066827297, + "g": 0.1713331937789917, + "b": 0.36188071966171265, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "9:41", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 15.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": -0.30000001192092896, + "lineHeightPx": 17.578125, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 387.0, + "y": 767.0, + "width": 54.0, + "height": 21.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:43" + } + ], + "absoluteBoundingBox": { + "x": 366.0, + "y": 760.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:60", + "name": "9. Icons / Twitter", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:62", + "name": "🔷 Icon Color", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 844.0, + "y": 253.0, + "width": 18.0, + "height": 14.62826919555664 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:61", + "name": "🔷 Icon Color", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 844.0, + "y": 253.0, + "width": 18.0, + "height": 14.62826919555664 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "isMask": true, + "isMaskOutline": true + } + ], + "absoluteBoundingBox": { + "x": 841.0, + "y": 248.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:63", + "name": "1. Bars / 2. Top Bar / Overides / Left / Icons", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:64", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1384.0, + "y": 0.0, + "width": 185.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:65", + "name": "🧡 Icon #3", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:65;0:30", + "name": "🔷 Icon Color", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1467.0, + "y": 10.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1467.0, + "y": 10.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { "vertical": "CENTER", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:29" + }, + { + "id": "0:66", + "name": "🧡 Icon #2", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:66;0:30", + "name": "🔷 Icon Color", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1433.0, + "y": 10.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1433.0, + "y": 10.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { "vertical": "CENTER", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:29" + }, + { + "id": "0:67", + "name": "🧡 Icon #1", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:67;0:30", + "name": "🔷 Icon Color", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1399.0, + "y": 10.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1399.0, + "y": 10.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { "vertical": "CENTER", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:29" + } + ], + "absoluteBoundingBox": { + "x": 1384.0, + "y": 0.0, + "width": 185.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:68", + "name": "9. Icons / Facebook", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:72", + "name": "🔷 Icon Color", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "SUBTRACT", + "children": [ + { + "id": "0:73", + "name": "Rectangle 9", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 844.0, + "y": 375.0, + "width": 18.0, + "height": 18.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7671204209327698, + "g": 0.7919232249259949, + "b": 0.7981239557266235, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 2.0 + }, + { + "id": "0:74", + "name": "Fill 2", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 851.262451171875, + "y": 377.71929931640625, + "width": 7.955156326293945, + "height": 15.284557342529297 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7671204209327698, + "g": 0.7919232249259949, + "b": 0.7981239557266235, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 844.0, + "y": 375.0, + "width": 18.0, + "height": 18.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:71", + "name": "🔷 Icon Color", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "SUBTRACT", + "children": [ + { + "id": "0:69", + "name": "Rectangle 9", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 844.0, + "y": 375.0, + "width": 18.0, + "height": 18.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7671204209327698, + "g": 0.7919232249259949, + "b": 0.7981239557266235, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 2.0 + }, + { + "id": "0:70", + "name": "Fill 2", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 851.262451171875, + "y": 377.71929931640625, + "width": 7.955156326293945, + "height": 15.284557342529297 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7671204209327698, + "g": 0.7919232249259949, + "b": 0.7981239557266235, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 844.0, + "y": 375.0, + "width": 18.0, + "height": 18.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "isMask": true, + "isMaskOutline": true + } + ], + "absoluteBoundingBox": { + "x": 841.0, + "y": 372.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:75", + "name": "2. UI Views / Tables / Cell Underline/ 44 px", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:76", + "name": "2. UI Views / Tables / Cell / 44px", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:77", + "name": "Styles / Gray Underline", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:78", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 366.0, + "y": 904.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.00009999999747378752, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [ + { + "type": "INNER_SHADOW", + "visible": true, + "color": { + "r": 0.9043381810188293, + "g": 0.9169105887413025, + "b": 0.9221673011779785, + "a": 1.0 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": -1.0 }, + "radius": 0.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 366.0, + "y": 904.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:79", + "name": "➡️ Right", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:79;0:152", + "name": "2. UI Views / Overrides / Accessory / Text + Icon", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:79;0:153", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 381.0, + "y": 904.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:79;0:154", + "name": "🧡 Icon", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:79;0:154;0:30", + "name": "🔷 Icon Color", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 702.0, + "y": 914.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 702.0, + "y": 914.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:29" + }, + { + "id": "I0:79;0:155", + "name": "🔤 Value", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 656.0, + "y": 917.0, + "width": 36.0, + "height": 18.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Value", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 14.0, + "textAlignHorizontal": "RIGHT", + "textAlignVertical": "TOP", + "letterSpacing": -0.20000000298023224, + "lineHeightPx": 18.0, + "lineHeightPercent": 109.71427917480469, + "lineHeightPercentFontSize": 128.57142639160156, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [1, 1, 1, 1, 1], + "styleOverrideTable": { "1": {} } + } + ], + "absoluteBoundingBox": { + "x": 381.0, + "y": 904.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 381.0, + "y": 904.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:151" + }, + { + "id": "0:80", + "name": "⬅️ Left", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:80;0:86", + "name": "2. UI Views / Overrides / Label / Normal / Text", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:80;0:87", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 366.0, + "y": 904.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:80;0:88", + "name": "🅰️ Label", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 381.0, + "y": 914.0, + "width": 39.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.025135869160294533, + "g": 0.025135869160294533, + "b": 0.025135869160294533, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Label", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": -0.4000000059604645, + "lineHeightPx": 22.0, + "lineHeightPercent": 117.33332824707031, + "lineHeightPercentFontSize": 137.5, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [1, 1, 1, 1, 1], + "styleOverrideTable": { "1": {} } + } + ], + "absoluteBoundingBox": { + "x": 366.0, + "y": 904.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 366.0, + "y": 904.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT_RIGHT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:85" + } + ], + "absoluteBoundingBox": { + "x": 366.0, + "y": 904.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 366.0, + "y": 904.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:81", + "name": "1. Bars / 2. Top Bar / Overides / Right / Icon + Link", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:82", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1669.0, + "y": 0.0, + "width": 175.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:83", + "name": "🧡Icon", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:83;0:30", + "name": "🔷 Icon Color", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1805.0, + "y": 10.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1805.0, + "y": 10.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { "vertical": "CENTER", "horizontal": "RIGHT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:29" + }, + { + "id": "0:84", + "name": "✅ Link", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1765.0, + "y": 11.0, + "width": 34.0, + "height": 22.0 + }, + "constraints": { "vertical": "CENTER", "horizontal": "RIGHT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.5176470875740051, + "b": 0.9176470637321472, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Link", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "RIGHT", + "textAlignVertical": "TOP", + "letterSpacing": -0.4000000059604645, + "lineHeightPx": 22.0, + "lineHeightPercent": 117.33332824707031, + "lineHeightPercentFontSize": 137.5, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1669.0, + "y": 0.0, + "width": 175.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:85", + "name": "2. UI Views / Tables / Overrides / Left / 44 px / Text 16 pt", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:86", + "name": "2. UI Views / Overrides / Label / Normal / Text", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:87", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1944.0, + "y": 0.0, + "width": 200.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:88", + "name": "🅰️ Label", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1959.0, + "y": 10.0, + "width": 41.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.025135869160294533, + "g": 0.025135869160294533, + "b": 0.025135869160294533, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Label", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": -0.4000000059604645, + "lineHeightPx": 22.0, + "lineHeightPercent": 117.33332824707031, + "lineHeightPercentFontSize": 137.5, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1944.0, + "y": 0.0, + "width": 200.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1944.0, + "y": 0.0, + "width": 202.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:89", + "name": "1. Bars / 5. Home Indicator", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:90", + "name": "Home Indicator", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:91", + "name": "Styles / Gray 19%", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:92", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 366.0, + "y": 1048.0, + "width": 375.0, + "height": 34.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.9474354386329651, + "g": 0.9474354386329651, + "b": 0.9474354386329651, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 366.0, + "y": 1048.0, + "width": 375.0, + "height": 34.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:93", + "name": "Line", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 487.0, + "y": 1068.0, + "width": 134.0, + "height": 5.0 + }, + "constraints": { + "vertical": "BOTTOM", + "horizontal": "CENTER" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0235294122248888, + "g": 0.0235294122248888, + "b": 0.0235294122248888, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 100.0 + } + ], + "absoluteBoundingBox": { + "x": 366.0, + "y": 1048.0, + "width": 375.0, + "height": 34.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 366.0, + "y": 1048.0, + "width": 375.0, + "height": 34.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:94", + "name": ".*switch", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:95", + "name": "⬛ Background", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2246.0, + "y": 0.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { "x": 1.5, "y": 0.5 }, + { "x": 0.5, "y": -0.5 }, + { "x": 2.0, "y": 0.0 } + ], + "gradientStops": [ + { + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + }, + "position": 0.0 + }, + { + "color": { + "r": 0.21176470816135406, + "g": 0.33725491166114807, + "b": 0.7647058963775635, + "a": 1.0 + }, + "position": 1.0 + } + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 31.0 + }, + { + "id": "0:96", + "name": "🔵 Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2268.0, + "y": 2.0, + "width": 28.0, + "height": 28.0 + }, + "constraints": { "vertical": "CENTER", "horizontal": "RIGHT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 1.0 }, + "radius": 4.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 2246.0, + "y": 0.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:97", + "name": "1. Bars / 2. Top Bar / Overides / Left / Arrow + Link", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:98", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1384.0, + "y": 144.0, + "width": 185.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:99", + "name": "✅ Link", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1419.0, + "y": 155.0, + "width": 34.0, + "height": 22.0 + }, + "constraints": { "vertical": "CENTER", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.4901960790157318, + "b": 0.8941176533699036, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Link", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": -0.4000000059604645, + "lineHeightPx": 22.0, + "lineHeightPercent": 117.33332824707031, + "lineHeightPercentFontSize": 137.5, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:100", + "name": "Arrow", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:102", + "name": "🔷 Arrow Color", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1399.0, + "y": 156.0, + "width": 12.350000381469727, + "height": 20.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { "x": 1.5, "y": 0.5 }, + { "x": 0.5, "y": -0.5 }, + { "x": 2.0, "y": 0.0 } + ], + "gradientStops": [ + { + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + }, + "position": 0.0 + }, + { + "color": { + "r": 0.21176470816135406, + "g": 0.33725491166114807, + "b": 0.7647058963775635, + "a": 1.0 + }, + "position": 1.0 + } + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:101", + "name": "🔷 Arrow Color", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1399.0, + "y": 156.0, + "width": 12.350000381469727, + "height": 20.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { "x": 1.5, "y": 0.5 }, + { "x": 0.5, "y": -0.5 }, + { "x": 2.0, "y": 0.0 } + ], + "gradientStops": [ + { + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + }, + "position": 0.0 + }, + { + "color": { + "r": 0.21176470816135406, + "g": 0.33725491166114807, + "b": 0.7647058963775635, + "a": 1.0 + }, + "position": 1.0 + } + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "isMask": true, + "isMaskOutline": true + } + ], + "absoluteBoundingBox": { + "x": 1399.0, + "y": 156.0, + "width": 13.0, + "height": 20.0 + }, + "constraints": { "vertical": "CENTER", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1384.0, + "y": 144.0, + "width": 185.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:103", + "name": "2. UI Views / Headings / 3. Mini / 56px / #1", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:104", + "name": "2. UI Views / Headings / Small / 56px", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:105", + "name": "Styles / Gray Underline", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:106", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 366.0, + "y": 1182.0, + "width": 375.0, + "height": 56.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.00009999999747378752, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [ + { + "type": "INNER_SHADOW", + "visible": true, + "color": { + "r": 0.9043381810188293, + "g": 0.9169105887413025, + "b": 0.9221673011779785, + "a": 1.0 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": -1.0 }, + "radius": 0.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 366.0, + "y": 1182.0, + "width": 375.0, + "height": 56.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:107", + "name": "🅰️ Heading", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 381.0, + "y": 1216.0, + "width": 59.0, + "height": 12.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Heading", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textCase": "UPPER", + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 12.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.20000000298023224, + "lineHeightPx": 12.0, + "lineHeightPercent": 85.33333587646484, + "lineHeightPercentFontSize": 100.0, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 366.0, + "y": 1182.0, + "width": 375.0, + "height": 56.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 366.0, + "y": 1182.0, + "width": 375.0, + "height": 56.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:108", + "name": "8. Misc / Line", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:109", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2398.0, + "y": 0.0, + "width": 20.0, + "height": 1.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.8784313797950745, + "g": 0.8784313797950745, + "b": 0.8784313797950745, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2398.0, + "y": 0.0, + "width": 20.0, + "height": 1.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:110", + "name": "2. UI Views / Tables / Overrides / Right / Text + Arrow", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:111", + "name": "2. UI Views / Overrides / Accessory / Text + Icon", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:112", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2518.0, + "y": 0.0, + "width": 235.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:113", + "name": "🔤 Value", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2683.0, + "y": 13.0, + "width": 38.0, + "height": 18.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Value", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 14.0, + "textAlignHorizontal": "RIGHT", + "textAlignVertical": "TOP", + "letterSpacing": -0.20000000298023224, + "lineHeightPx": 18.0, + "lineHeightPercent": 109.71427917480469, + "lineHeightPercentFontSize": 128.57142639160156, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:114", + "name": "Shape", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2731.0, + "y": 16.0, + "width": 7.409999847412109, + "height": 12.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2518.0, + "y": 0.0, + "width": 235.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2518.0, + "y": 0.0, + "width": 235.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:115", + "name": "1. Bars / 1. Status Bar / iPhone X", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:116", + "name": "Styles / White", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:117", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 366.0, + "y": 1482.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 366.0, + "y": 1482.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:118", + "name": "Battery", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:121", + "name": "Combined Shape", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "SUBTRACT", + "children": [ + { + "id": "0:119", + "name": "Rectangle", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 702.0, + "y": 1500.0, + "width": 22.0, + "height": 10.5 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "opacity": 0.30000001192092896, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 2.5 + }, + { + "id": "0:120", + "name": "Rectangle", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 703.0, + "y": 1501.0, + "width": 20.0, + "height": 8.5 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "opacity": 0.30000001192092896, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 2.0 + } + ], + "absoluteBoundingBox": { + "x": 702.0, + "y": 1500.0, + "width": 22.0, + "height": 10.5 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:124", + "name": "Combined Shape", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "SUBTRACT", + "children": [ + { + "id": "0:122", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "NORMAL", + "opacity": 0.5, + "absoluteBoundingBox": { + "x": 722.5, + "y": 1503.43701171875, + "width": 4.0, + "height": 4.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.24443036317825317, + "g": 0.31581372022628784, + "b": 0.33176833391189575, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5919398069381714, + "g": 0.5920421481132507, + "b": 0.5919263362884521, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:123", + "name": "Rectangle", + "type": "RECTANGLE", + "blendMode": "NORMAL", + "opacity": 0.5, + "absoluteBoundingBox": { + "x": 722.5, + "y": 1503.43701171875, + "width": 2.5, + "height": 4.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.24443036317825317, + "g": 0.31581372022628784, + "b": 0.33176833391189575, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5919398069381714, + "g": 0.5920421481132507, + "b": 0.5919263362884521, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 725.0, + "y": 1503.5, + "width": 1.5, + "height": 3.8739824295043945 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:125", + "name": "Rectangle", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 704.0, + "y": 1502.0, + "width": 18.0, + "height": 6.5 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0235294122248888, + "g": 0.0235294122248888, + "b": 0.0235294122248888, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 1.0 + } + ], + "absoluteBoundingBox": { + "x": 702.0, + "y": 1500.0, + "width": 25.0, + "height": 11.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:128", + "name": "Wifi", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "EXCLUDE", + "children": [ + { + "id": "0:126", + "name": "Wifi-path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 681.6937255859375, + "y": 1499.3306884765625, + "width": 15.27237606048584, + "height": 4.743237495422363 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2689463198184967, + "g": 0.31771358847618103, + "b": 0.3299053907394409, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:127", + "name": "Wifi-path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 684.3569946289062, + "y": 1503.124755859375, + "width": 9.94901180267334, + "height": 3.6339809894561768 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2689463198184967, + "g": 0.31771358847618103, + "b": 0.3299053907394409, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:129", + "name": "Wifi-path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 687.01708984375, + "y": 1506.921875, + "width": 4.626293659210205, + "height": 3.3744072914123535 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2689463198184967, + "g": 0.31771358847618103, + "b": 0.3299053907394409, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 681.6937255859375, + "y": 1499.3306884765625, + "width": 15.27237606048584, + "height": 10.965571403503418 + }, + "constraints": { "vertical": "TOP", "horizontal": "RIGHT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0235294122248888, + "g": 0.0235294122248888, + "b": 0.0235294122248888, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:132", + "name": "Mobile Signal", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "EXCLUDE", + "children": [ + { + "id": "0:130", + "name": "Cellular_Connection-path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 659.6666259765625, + "y": 1506.333251953125, + "width": 3.0, + "height": 4.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2689463198184967, + "g": 0.31771358847618103, + "b": 0.3299053907394409, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:131", + "name": "Cellular_Connection-path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 664.3333129882812, + "y": 1504.333251953125, + "width": 3.0, + "height": 6.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2689463198184967, + "g": 0.31771358847618103, + "b": 0.3299053907394409, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:133", + "name": "Cellular_Connection-path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 668.9999389648438, + "y": 1502.0, + "width": 3.0, + "height": 8.333333015441895 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2689463198184967, + "g": 0.31771358847618103, + "b": 0.3299053907394409, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:134", + "name": "Cellular_Connection-path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 673.6666259765625, + "y": 1499.6666259765625, + "width": 3.0, + "height": 10.666666984558105 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2689463198184967, + "g": 0.31771358847618103, + "b": 0.3299053907394409, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 659.6666259765625, + "y": 1499.6666259765625, + "width": 17.0, + "height": 10.666666984558105 + }, + "constraints": { "vertical": "TOP", "horizontal": "RIGHT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0235294122248888, + "g": 0.0235294122248888, + "b": 0.0235294122248888, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:135", + "name": "Time Style", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:136", + "name": "9:41", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 387.0, + "y": 1496.0, + "width": 54.0, + "height": 19.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT_RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.09019608050584793, + "g": 0.09019608050584793, + "b": 0.09019608050584793, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "9:41", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 15.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": -0.30000001192092896, + "lineHeightPx": 17.578125, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 387.0, + "y": 1496.0, + "width": 54.0, + "height": 18.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 366.0, + "y": 1482.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:137", + "name": "2. UI Views / Tables / Overrides / Left / 44 px / Text + Icon", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:138", + "name": "2. UI Views / Overrides / Label / Normal / Text + Icon", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:139", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1944.0, + "y": 144.0, + "width": 200.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:140", + "name": "🧡 Icon", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:140;0:30", + "name": "🔷 Icon Color", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1959.0, + "y": 154.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1959.0, + "y": 154.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:29" + }, + { + "id": "0:141", + "name": "🅰️ Label", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1993.0, + "y": 154.0, + "width": 41.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.025135869160294533, + "g": 0.025135869160294533, + "b": 0.025135869160294533, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Label", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": -0.4000000059604645, + "lineHeightPx": 22.0, + "lineHeightPercent": 117.33332824707031, + "lineHeightPercentFontSize": 137.5, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1944.0, + "y": 144.0, + "width": 200.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1944.0, + "y": 144.0, + "width": 202.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:142", + "name": "4. Inputs / Switchers / Off", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:143", + "name": "UISwitchOff", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:144", + "name": "⬛ Background", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2246.0, + "y": 132.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 31.0 + }, + { + "id": "0:145", + "name": "🔵 Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2248.0, + "y": 134.0, + "width": 28.0, + "height": 28.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 1.0 }, + "radius": 4.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 2246.0, + "y": 132.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { "vertical": "CENTER", "horizontal": "RIGHT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2246.0, + "y": 132.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:146", + "name": "2. UI Views / Tables / Overrides / Right / Switcher + Text", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:147", + "name": "2. UI Views / Overrides / Accessory / Switcher + Text", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:148", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2518.0, + "y": 144.0, + "width": 235.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:149", + "name": ".*switch", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:149;0:95", + "name": "⬛ Background", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2686.0, + "y": 150.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { "x": 1.5, "y": 0.5 }, + { "x": 0.5, "y": -0.5 }, + { "x": 2.0, "y": 0.0 } + ], + "gradientStops": [ + { + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + }, + "position": 0.0 + }, + { + "color": { + "r": 0.21176470816135406, + "g": 0.33725491166114807, + "b": 0.7647058963775635, + "a": 1.0 + }, + "position": 1.0 + } + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "cornerRadius": 31.0 + }, + { + "id": "I0:149;0:96", + "name": "🔵 Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2708.0, + "y": 152.0, + "width": 28.0, + "height": 28.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 1.0 }, + "radius": 4.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 2686.0, + "y": 150.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:94" + }, + { + "id": "0:150", + "name": "🔤 Value", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2639.0, + "y": 157.0, + "width": 38.0, + "height": 18.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Value", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 14.0, + "textAlignHorizontal": "RIGHT", + "textAlignVertical": "TOP", + "letterSpacing": -0.20000000298023224, + "lineHeightPx": 18.0, + "lineHeightPercent": 109.71427917480469, + "lineHeightPercentFontSize": 128.57142639160156, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 2518.0, + "y": 144.0, + "width": 235.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2518.0, + "y": 144.0, + "width": 235.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:151", + "name": "2. UI Views / Tables / Overrides / Right / Text + Icon", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:152", + "name": "2. UI Views / Overrides / Accessory / Text + Icon", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:153", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2518.0, + "y": 288.0, + "width": 235.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:154", + "name": "🧡 Icon", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:154;0:30", + "name": "🔷 Icon Color", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2714.0, + "y": 298.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2714.0, + "y": 298.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:29" + }, + { + "id": "0:155", + "name": "🔤 Value", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2666.0, + "y": 301.0, + "width": 38.0, + "height": 18.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Value", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 14.0, + "textAlignHorizontal": "RIGHT", + "textAlignVertical": "TOP", + "letterSpacing": -0.20000000298023224, + "lineHeightPx": 18.0, + "lineHeightPercent": 109.71427917480469, + "lineHeightPercentFontSize": 128.57142639160156, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 2518.0, + "y": 288.0, + "width": 235.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2518.0, + "y": 288.0, + "width": 235.0, + "height": 44.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:156", + "name": "icons/tab bar/home", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:157", + "name": "Oval", + "visible": false, + "type": "ELLIPSE", + "blendMode": "NORMAL", + "opacity": 0.3065243661403656, + "absoluteBoundingBox": { + "x": 104.0, + "y": 268.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.847000002861023, + "g": 0.847000002861023, + "b": 0.847000002861023, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:162", + "name": "Shape", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "EXCLUDE", + "children": [ + { + "id": "0:160", + "name": "Subtract", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "SUBTRACT", + "children": [ + { + "id": "0:158", + "name": "Path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 104.0, + "y": 270.0, + "width": 23.33333396911621, + "height": 12.44444465637207 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:159", + "name": "Rectangle", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 116.1908950805664, + "y": 274.412353515625, + "width": 8.836241722106934, + "height": 5.689725875854492 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5525000095367432, + "g": 0.578499972820282, + "b": 0.6499999761581421, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 0.8999999761581421 + } + ], + "absoluteBoundingBox": { + "x": 104.0, + "y": 270.0, + "width": 100.0, + "height": 100.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.8549019694328308, + "g": 0.8549019694328308, + "b": 0.8549019694328308, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:161", + "name": "Path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 124.22222137451172, + "y": 278.83050537109375, + "width": 3.1111111640930176, + "height": 12.169487953186035 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:163", + "name": "Path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 108.66666412353516, + "y": 280.7734375, + "width": 14.0, + "height": 7.115451812744141 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 104.0, + "y": 270.0, + "width": 23.33333396911621, + "height": 21.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5329999923706055, + "g": 0.5661500096321106, + "b": 0.6499999761581421, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + } + ], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 100.0, + "y": 264.0, + "width": 32.0, + "height": 32.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:164", + "name": "person/6", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:165", + "name": "Group 11", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:167", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 0.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:166", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 0.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "isMask": true, + "isMaskOutline": true + }, + { + "id": "0:168", + "name": "MV5BMjAwMzc5OTEzOF5BMl5BanBnXkFtZTgwMDc5ODU3MTE@._V1_UX172_CR0,0,172,256_AL_", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 0.0, + "width": 41.0, + "height": 61.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "d3bd9ca71b3fe97e05ddf694a700390c236d4c38", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2853.0, + "y": 0.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 2.0 }, + "radius": 5.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 2853.0, + "y": 0.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:169", + "name": "person/8", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:170", + "name": "Group 9 Copy", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:172", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 141.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:171", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 141.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "isMask": true, + "isMaskOutline": true + }, + { + "id": "0:173", + "name": "download", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2852.0, + "y": 141.0, + "width": 42.0, + "height": 42.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "0ee38c205bd2ebee137b0ff0ba528cf791c37df6", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2853.0, + "y": 141.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 2.0 }, + "radius": 5.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 2853.0, + "y": 141.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:174", + "name": "person/4", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:175", + "name": "Group 7", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:177", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 282.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:176", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 282.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "isMask": true, + "isMaskOutline": true + }, + { + "id": "0:178", + "name": "MV5BMTc0MzY2NjE0Nl5BMl5BanBnXkFtZTYwMDkxMDY0._V1_UY256_CR4,0,172,256_AL_", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 282.0, + "width": 41.0, + "height": 62.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "da827996130fb49beae52d638023a3c521add634", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2853.0, + "y": 282.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 2.0 }, + "radius": 5.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 2853.0, + "y": 282.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:179", + "name": "person/frame", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:181", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 564.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokeWeight": 2.0, + "strokeAlign": "OUTSIDE", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:180", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 564.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokeWeight": 2.0, + "strokeAlign": "OUTSIDE", + "exportSettings": [], + "effects": [], + "isMask": true, + "isMaskOutline": true + } + ], + "absoluteBoundingBox": { + "x": 2853.0, + "y": 564.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5333333611488342, + "g": 0.5764706134796143, + "b": 0.6509804129600525, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5333333611488342, + "g": 0.5764706134796143, + "b": 0.6509804129600525, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.5333333611488342, + "g": 0.5764706134796143, + "b": 0.6509804129600525, + "a": 1.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:182", + "name": "person/1", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:183", + "name": "Group 4 Copy 3", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:185", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 705.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:184", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 705.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "isMask": true, + "isMaskOutline": true + }, + { + "id": "0:186", + "name": "bearded-men-face-hipster-character-vector-14648253", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2859.0, + "y": 707.0, + "width": 29.0, + "height": 43.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "fa88d58c5f0e4e19ea1f1da0bc095f753c04260c", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2853.0, + "y": 705.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 2.0 }, + "radius": 5.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 2853.0, + "y": 705.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:187", + "name": "person/5", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:188", + "name": "Group 8", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:190", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 846.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:189", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 846.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "isMask": true, + "isMaskOutline": true + }, + { + "id": "0:191", + "name": "mens-slicked-back-grey-hair", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2850.0, + "y": 846.0, + "width": 47.0, + "height": 47.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "466b9d7e969ee5eae4fa60480890a3c382b99131", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2853.0, + "y": 846.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 2.0 }, + "radius": 5.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 2853.0, + "y": 846.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:192", + "name": "person/12", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:193", + "name": "Group 7", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:195", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 987.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:194", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 987.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "isMask": true, + "isMaskOutline": true + }, + { + "id": "0:196", + "name": "images (2)", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2835.0, + "y": 987.0, + "width": 63.0, + "height": 42.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "762e6bf5275df04d86809d5558393e736b689df2", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2853.0, + "y": 987.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 2.0 }, + "radius": 5.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 2853.0, + "y": 987.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:197", + "name": "person/with frame", + "type": "COMPONENT", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:198", + "name": "person/5", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:198;0:188", + "name": "Group 8", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:198;0:190", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 1128.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:198;0:189", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 1128.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "isMask": true, + "isMaskOutline": true + }, + { + "id": "I0:198;0:191", + "name": "mens-slicked-back-grey-hair", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2850.0, + "y": 1128.0, + "width": 47.0, + "height": 47.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "466b9d7e969ee5eae4fa60480890a3c382b99131", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2853.0, + "y": 1128.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 2.0 }, + "radius": 5.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 2853.0, + "y": 1128.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:187" + }, + { + "id": "0:199", + "name": "person/frame", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:199;0:181", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 1128.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokeWeight": 2.0, + "strokeAlign": "OUTSIDE", + "effects": [] + }, + { + "id": "I0:199;0:180", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2853.0, + "y": 1128.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokeWeight": 2.0, + "strokeAlign": "OUTSIDE", + "effects": [], + "isMask": true, + "isMaskOutline": true + } + ], + "absoluteBoundingBox": { + "x": 2853.0, + "y": 1128.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:179" + } + ], + "absoluteBoundingBox": { + "x": 2853.0, + "y": 1128.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "backgroundColor": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 }, + "prototypeStartNodeID": null, + "prototypeDevice": { "type": "NONE", "rotation": "NONE" }, + "exportSettings": [] + }, + { + "id": "0:200", + "name": "Index Screens", + "type": "CANVAS", + "children": [ + { + "id": "0:201", + "name": "Learning Overview", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:202", + "name": "header", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:202;0:23", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 215.0, + "y": -295.0, + "width": 375.0, + "height": 95.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:202;0:24", + "name": "userScore.*middle", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:202;0:25", + "name": "285", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 368.0, + "y": -244.0, + "width": 38.0, + "height": 27.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "285", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 21.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 24.609375, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "I0:202;0:26", + "name": "starIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 416.0, + "y": -242.0, + "width": 22.0, + "height": 22.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "561adcc26e02e562330294d1ef7cb73d7d78b1b5", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 368.0, + "y": -244.0, + "width": 70.0, + "height": 25.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + }, + { + "id": "I0:202;0:27", + "name": "bellIcon.*leading", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 232.0, + "y": -246.22579956054688, + "width": 25.161291122436523, + "height": 29.225807189941406 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "70d7696e0256bf5b87fe826a9142b64539ece51a", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:202;0:28", + "name": "profileIcon.*trailing", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 541.0, + "y": -247.0, + "width": 34.0, + "height": 34.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "1970b23eb7b96f9c734db0864f2478d4c11d5893", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 215.0, + "y": -295.0, + "width": 375.0, + "height": 95.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:22" + }, + { + "id": "0:203", + "name": "Continue Learning", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 230.0, + "y": 82.0, + "width": 152.0, + "height": 22.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Continue Learning", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:204", + "name": "View All", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 519.0, + "y": 86.0, + "width": 58.0, + "height": 18.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.5568627715110779, + "b": 0.9490196108818054, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "View All", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 14.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 16.40625, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:205", + "name": "Categories", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 230.0, + "y": -130.0, + "width": 87.0, + "height": 22.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Categories", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:206", + "name": "1. Bars / 2. Top Bar / 2. Large / Heading + Search", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:207", + "name": "🅰️ Heading", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 230.0, + "y": -182.0, + "width": 120.0, + "height": 40.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.014475814066827297, + "g": 0.1713331937789917, + "b": 0.36188071966171265, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Explore", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 32.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.6240000128746033, + "lineHeightPx": 40.0, + "lineHeightPercent": 106.66667175292969, + "lineHeightPercentFontSize": 125.0, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 230.0, + "y": -182.0, + "width": 126.0, + "height": 40.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:208", + "name": "Group 2", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:209", + "name": "Group", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:210", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 232.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 8.0 + }, + { + "id": "0:211", + "name": "Careers", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 254.0, + "y": 32.0, + "width": 63.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Careers", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:212", + "name": "simplePaperIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 248.0, + "y": -69.0, + "width": 73.0, + "height": 74.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "2ce8b7c0c797b888993f960fa5e1accfb130705a", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 232.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 232.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:213", + "name": "Group 2 Copy", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:214", + "name": "Group", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:215", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 350.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 8.0 + }, + { + "id": "0:216", + "name": "Majors", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 376.0, + "y": 32.0, + "width": 54.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Majors", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:217", + "name": "simplePaperIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 366.0, + "y": -69.0, + "width": 73.0, + "height": 74.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "2ce8b7c0c797b888993f960fa5e1accfb130705a", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 350.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 350.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:218", + "name": "Group 2 Copy 2", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:219", + "name": "Group", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:220", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 468.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 8.0 + }, + { + "id": "0:221", + "name": "Colleges", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 486.0, + "y": 32.0, + "width": 69.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Colleges", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:222", + "name": "simplePaperIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 484.0, + "y": -69.0, + "width": 73.0, + "height": 74.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "2ce8b7c0c797b888993f960fa5e1accfb130705a", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 468.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 468.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:223", + "name": "Lessons", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 231.0, + "y": 358.0, + "width": 66.0, + "height": 22.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Lessons", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:224", + "name": "Lesson Big Card Copy 2", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:225", + "name": "Group 4", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:226", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 232.0, + "y": 615.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.49803921580314636, + "g": 0.21176470816135406, + "b": 0.772549033164978, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 8.0 + }, + { + "id": "0:227", + "name": "Fundamentals of Algo", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 257.0, + "y": 629.0, + "width": 115.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Fundamentals\nof Algorithms", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:228", + "name": "paperIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 266.0, + "y": 689.0, + "width": 97.0, + "height": 97.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "fc1e80e0188ea1eef90949eba199e5d82cc36845", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 232.0, + "y": 615.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 232.0, + "y": 615.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:229", + "name": "Lesson Big Card Copy 3", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:230", + "name": "Group 4", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:231", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 409.0, + "y": 615.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.49803921580314636, + "g": 0.21176470816135406, + "b": 0.772549033164978, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 8.0 + }, + { + "id": "0:232", + "name": "Fundamentals of Algo", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 434.0, + "y": 629.0, + "width": 115.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Fundamentals\nof Algorithms", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:233", + "name": "paperIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 442.0, + "y": 689.0, + "width": 97.0, + "height": 97.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "fc1e80e0188ea1eef90949eba199e5d82cc36845", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 409.0, + "y": 615.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 409.0, + "y": 615.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:234", + "name": "tabbar.*tabbar", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:235", + "name": "menu-footer", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 215.0, + "y": 862.0, + "width": 375.0, + "height": 92.45660400390625 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + }, + { + "blendMode": "NORMAL", + "visible": false, + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { + "x": 0.11798575592716715, + "y": 0.22202727205494194 + }, + { "x": 0.11798575592716715, "y": 0.9860557602006075 }, + { + "x": -0.26402848814566565, + "y": 0.22202727205494194 + } + ], + "gradientStops": [ + { + "color": { + "r": 0.6549019813537598, + "g": 0.2980392277240753, + "b": 0.9490196108818054, + "a": 1.0 + }, + "position": 0.0 + }, + { + "color": { + "r": 0.4588235318660736, + "g": 0.3960784375667572, + "b": 0.9843137264251709, + "a": 1.0 + }, + "position": 1.0 + } + ] + }, + { + "blendMode": "NORMAL", + "visible": false, + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { "x": 0.0, "y": 0.0 }, + { "x": 0.0, "y": 1.0 }, + { "x": -0.5, "y": 0.0 } + ], + "gradientStops": [ + { + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 0.5 }, + "position": 0.0 + }, + { + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.5 }, + "position": 1.0 + } + ] + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.15000000596046448 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 0.0 }, + "radius": 35.0 + } + ] + }, + { + "id": "0:239", + "name": "Object", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:236", + "name": "homeicon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 255.0, + "y": 888.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "21d91c427ebfba99ab3909151fb10464dae795de", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:237", + "name": "homeicon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 255.0, + "y": 888.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "21d91c427ebfba99ab3909151fb10464dae795de", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "isMask": true + }, + { + "id": "0:238", + "name": "homeicon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 255.0, + "y": 888.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5843137502670288, + "g": 0.6235294342041016, + "b": 0.729411780834198, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 215.0, + "y": 862.0, + "width": 100.0, + "height": 100.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:240", + "name": "icons/tab bar/stats.*tab", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:243", + "name": "Shape", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "EXCLUDE", + "children": [ + { + "id": "0:241", + "name": "Path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 466.0, + "y": 895.0, + "width": 12.526315689086914, + "height": 11.894500732421875 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:242", + "name": "Path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 471.368408203125, + "y": 899.4736938476562, + "width": 12.526315689086914, + "height": 11.894500732421875 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 466.0, + "y": 895.0, + "width": 17.894737243652344, + "height": 16.36818504333496 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5843137502670288, + "g": 0.6235294342041016, + "b": 0.729411780834198, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 466.0, + "y": 895.0, + "width": 18.0, + "height": 17.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:244", + "name": "plus-icon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 377.0, + "y": 872.0, + "width": 50.90909194946289, + "height": 56.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "05cf0e11c179692ec2fcb5eff64e817a9596d400", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:245", + "name": "iPhone X/Home Indicator/Home Indicator - On Light", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:245;0:501", + "name": "Rectangle 24", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 336.0, + "y": 941.0, + "width": 134.0, + "height": 5.0 + }, + "constraints": { + "vertical": "BOTTOM", + "horizontal": "CENTER" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "cornerRadius": 100.0 + } + ], + "absoluteBoundingBox": { + "x": 215.0, + "y": 921.0, + "width": 375.0, + "height": 34.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:500" + }, + { + "id": "0:246", + "name": "not published.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 324.0, + "y": 890.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "28eedac0ef9e25350aa7f325c4cc3f71e9ed7b04", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:247", + "name": "learn.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 533.0, + "y": 895.0, + "width": 24.0, + "height": 21.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "b12d692ccfdf45980c55fc36de927c9ac37f466b", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 215.0, + "y": 862.0, + "width": 375.0, + "height": 93.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:248", + "name": "Lesson Big Card", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:249", + "name": "Group 4", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:250", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 232.0, + "y": 130.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.49803921580314636, + "g": 0.21176470816135406, + "b": 0.772549033164978, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 8.0 + }, + { + "id": "0:251", + "name": "Fundamentals of Algo", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 257.0, + "y": 144.0, + "width": 115.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Fundamentals\nof Algorithms", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:252", + "name": "paperIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 266.0, + "y": 204.0, + "width": 97.0, + "height": 97.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "fc1e80e0188ea1eef90949eba199e5d82cc36845", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 232.0, + "y": 130.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 232.0, + "y": 130.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:253", + "name": "Group 5", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:254", + "name": "Lesson Big Card Copy", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:255", + "name": "Group 4", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:256", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 408.0, + "y": 130.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.8500000238418579, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 8.0 + }, + { + "id": "0:257", + "name": "Finance", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 458.0, + "y": 144.0, + "width": 65.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Finance", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:258", + "name": "cashIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 424.0, + "y": 204.0, + "width": 132.0, + "height": 93.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "5afc3234c772299d4b12566e8f0b8229ec78c5d8", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 408.0, + "y": 130.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 408.0, + "y": 130.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 408.0, + "y": 130.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:259", + "name": "Lesson Big Card", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:260", + "name": "Group 4", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:261", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 232.0, + "y": 403.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.49803921580314636, + "g": 0.21176470816135406, + "b": 0.772549033164978, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 8.0 + }, + { + "id": "0:262", + "name": "Fundamentals of Algo", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 257.0, + "y": 417.0, + "width": 115.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Fundamentals\nof Algorithms", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:263", + "name": "paperIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 266.0, + "y": 477.0, + "width": 97.0, + "height": 97.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "fc1e80e0188ea1eef90949eba199e5d82cc36845", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 232.0, + "y": 403.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 232.0, + "y": 403.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:264", + "name": "Group 5", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:265", + "name": "Lesson Big Card Copy", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:266", + "name": "Group 4", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:267", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 408.0, + "y": 403.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.8500000238418579, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 8.0 + }, + { + "id": "0:268", + "name": "Finance", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 458.0, + "y": 417.0, + "width": 65.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Finance", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:269", + "name": "cashIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 424.0, + "y": 477.0, + "width": 132.0, + "height": 93.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "5afc3234c772299d4b12566e8f0b8229ec78c5d8", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 408.0, + "y": 403.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 408.0, + "y": 403.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 408.0, + "y": 403.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 215.0, + "y": -295.0, + "width": 375.0, + "height": 1250.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "", + "format": "JPG", + "constraint": { "type": "SCALE", "value": 3.0 } + } + ], + "effects": [] + }, + { + "id": "0:270", + "name": "Majors Overview", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:271", + "name": "header.*navbar", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:272", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 690.0, + "y": -295.0, + "width": 375.0, + "height": 95.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { "x": 1.5, "y": 0.5 }, + { "x": 0.5, "y": -0.5 }, + { "x": 2.0, "y": 0.0 } + ], + "gradientStops": [ + { + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + }, + "position": 0.0 + }, + { + "color": { + "r": 0.21176470816135406, + "g": 0.33725491166114807, + "b": 0.7647058963775635, + "a": 1.0 + }, + "position": 1.0 + } + ] + }, + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:273", + "name": "userScore.*middle", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:274", + "name": "285", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 844.0, + "y": -244.0, + "width": 38.0, + "height": 27.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "285", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 21.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 24.609375, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:275", + "name": "starIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 892.0, + "y": -242.0, + "width": 22.0, + "height": 22.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "561adcc26e02e562330294d1ef7cb73d7d78b1b5", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 844.0, + "y": -244.0, + "width": 70.0, + "height": 25.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:276", + "name": "bellIcon.*leading", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 707.0, + "y": -247.0, + "width": 25.161291122436523, + "height": 30.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "fc4b89babe0fe59e003d8203615ac3d519f96daa", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:277", + "name": "profileIcon.*trailing", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1016.0, + "y": -247.0, + "width": 34.0, + "height": 34.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "1970b23eb7b96f9c734db0864f2478d4c11d5893", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 690.0, + "y": -295.0, + "width": 375.0, + "height": 95.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:278", + "name": "Recommended Majors", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 707.0, + "y": -6.0, + "width": 179.0, + "height": 22.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Recommended Majors", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:279", + "name": "Favorites", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 707.0, + "y": -129.0, + "width": 74.0, + "height": 22.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Favorites", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:280", + "name": "SmallMajorCard", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:280;0:40", + "name": "Group Copy 3", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:280;0:41", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 707.0, + "y": -96.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.34117648005485535, + "b": 0.7686274647712708, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10453464835882187 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "cornerRadius": 10.0 + }, + { + "id": "I0:280;0:42", + "name": "Information Systems", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 719.0, + "y": -83.0, + "width": 117.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Information Systems", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 707.0, + "y": -96.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 707.0, + "y": -96.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:39" + }, + { + "id": "0:281", + "name": "SmallMajorCard Copy", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:281;0:40", + "name": "Group Copy 3", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:281;0:41", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 885.0, + "y": -96.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.34117648005485535, + "b": 0.7686274647712708, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10453464835882187 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "cornerRadius": 10.0 + }, + { + "id": "I0:281;0:42", + "name": "Information Systems", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 897.0, + "y": -83.0, + "width": 117.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Information Systems", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 885.0, + "y": -96.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 885.0, + "y": -96.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:39" + }, + { + "id": "0:282", + "name": "1. Bars / 2. Top Bar / 2. Large / Heading + Search", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:283", + "name": "🅰️ Heading", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 705.0, + "y": -182.0, + "width": 104.0, + "height": 40.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.014475814066827297, + "g": 0.1713331937789917, + "b": 0.36188071966171265, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Majors", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 32.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.6240000128746033, + "lineHeightPx": 40.0, + "lineHeightPercent": 106.66667175292969, + "lineHeightPercentFontSize": 125.0, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 705.0, + "y": -182.0, + "width": 113.0, + "height": 40.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:284", + "name": "SmallMajorCard", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:284;0:40", + "name": "Group Copy 3", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:284;0:41", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 706.0, + "y": 31.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.34117648005485535, + "b": 0.7686274647712708, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10453464835882187 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "cornerRadius": 10.0 + }, + { + "id": "I0:284;0:42", + "name": "Information Systems", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 718.0, + "y": 44.0, + "width": 117.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Information Systems", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 706.0, + "y": 31.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 706.0, + "y": 31.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:39" + }, + { + "id": "0:285", + "name": "SmallMajorCard Copy 2", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:285;0:40", + "name": "Group Copy 3", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:285;0:41", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 706.0, + "y": 124.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.34117648005485535, + "b": 0.7686274647712708, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10453464835882187 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "cornerRadius": 10.0 + }, + { + "id": "I0:285;0:42", + "name": "Information Systems", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 718.0, + "y": 137.0, + "width": 117.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Information Systems", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 706.0, + "y": 124.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 706.0, + "y": 124.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:39" + }, + { + "id": "0:286", + "name": "SmallMajorCard Copy 3", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:286;0:40", + "name": "Group Copy 3", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:286;0:41", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 884.0, + "y": 124.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.34117648005485535, + "b": 0.7686274647712708, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10453464835882187 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "cornerRadius": 10.0 + }, + { + "id": "I0:286;0:42", + "name": "Information Systems", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 896.0, + "y": 137.0, + "width": 117.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Information Systems", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 884.0, + "y": 124.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 884.0, + "y": 124.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:39" + }, + { + "id": "0:287", + "name": "SmallMajorCard Copy", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:287;0:40", + "name": "Group Copy 3", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:287;0:41", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 884.0, + "y": 31.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.34117648005485535, + "b": 0.7686274647712708, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10453464835882187 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "cornerRadius": 10.0 + }, + { + "id": "I0:287;0:42", + "name": "Information Systems", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 896.0, + "y": 44.0, + "width": 117.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Information Systems", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 884.0, + "y": 31.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 884.0, + "y": 31.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:39" + }, + { + "id": "0:288", + "name": "Most Popular Majors", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 707.0, + "y": 221.0, + "width": 167.0, + "height": 22.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Most Popular Majors", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:289", + "name": "SmallMajorCard", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:289;0:40", + "name": "Group Copy 3", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:289;0:41", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 706.0, + "y": 254.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.34117648005485535, + "b": 0.7686274647712708, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10453464835882187 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "cornerRadius": 10.0 + }, + { + "id": "I0:289;0:42", + "name": "Information Systems", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 718.0, + "y": 267.0, + "width": 117.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Information Systems", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 706.0, + "y": 254.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 706.0, + "y": 254.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:39" + }, + { + "id": "0:290", + "name": "SmallMajorCard Copy 2", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:290;0:40", + "name": "Group Copy 3", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:290;0:41", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 707.0, + "y": 347.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.34117648005485535, + "b": 0.7686274647712708, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10453464835882187 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "cornerRadius": 10.0 + }, + { + "id": "I0:290;0:42", + "name": "Information Systems", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 719.0, + "y": 360.0, + "width": 117.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Information Systems", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 707.0, + "y": 347.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 707.0, + "y": 347.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:39" + }, + { + "id": "0:291", + "name": "SmallMajorCard Copy 3", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:291;0:40", + "name": "Group Copy 3", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:291;0:41", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 885.0, + "y": 347.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.34117648005485535, + "b": 0.7686274647712708, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10453464835882187 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "cornerRadius": 10.0 + }, + { + "id": "I0:291;0:42", + "name": "Information Systems", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 897.0, + "y": 360.0, + "width": 117.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Information Systems", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 885.0, + "y": 347.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 885.0, + "y": 347.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:39" + }, + { + "id": "0:292", + "name": "SmallMajorCard Copy", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:292;0:40", + "name": "Group Copy 3", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:292;0:41", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 884.0, + "y": 254.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.34117648005485535, + "b": 0.7686274647712708, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10453464835882187 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "cornerRadius": 10.0 + }, + { + "id": "I0:292;0:42", + "name": "Information Systems", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 896.0, + "y": 267.0, + "width": 117.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Information Systems", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 884.0, + "y": 254.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 884.0, + "y": 254.0, + "width": 165.0, + "height": 80.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:39" + }, + { + "id": "0:293", + "name": "Advanced Search", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 931.0, + "y": -168.0, + "width": 119.0, + "height": 18.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.5568627715110779, + "b": 0.9490196108818054, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Advanced Search", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 14.0, + "textAlignHorizontal": "RIGHT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 16.40625, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:294", + "name": "TabBar", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:294;0:9", + "name": "menu-footer", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 690.0, + "y": 429.0, + "width": 375.0, + "height": 92.45660400390625 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + }, + { + "blendMode": "NORMAL", + "visible": false, + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { + "x": 0.11798575592716715, + "y": 0.22202727205494194 + }, + { "x": 0.11798575592716715, "y": 0.9860557602006075 }, + { + "x": -0.26402848814566565, + "y": 0.22202727205494194 + } + ], + "gradientStops": [ + { + "color": { + "r": 0.6549019813537598, + "g": 0.2980392277240753, + "b": 0.9490196108818054, + "a": 1.0 + }, + "position": 0.0 + }, + { + "color": { + "r": 0.4588235318660736, + "g": 0.3960784375667572, + "b": 0.9843137264251709, + "a": 1.0 + }, + "position": 1.0 + } + ] + }, + { + "blendMode": "NORMAL", + "visible": false, + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { "x": 0.0, "y": 0.0 }, + { "x": 0.0, "y": 1.0 }, + { "x": -0.5, "y": 0.0 } + ], + "gradientStops": [ + { + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 0.5 }, + "position": 0.0 + }, + { + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.5 }, + "position": 1.0 + } + ] + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.15000000596046448 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 0.0 }, + "radius": 35.0 + } + ] + }, + { + "id": "I0:294;0:13", + "name": "Object", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:294;0:10", + "name": "homeicon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 730.0, + "y": 455.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "21d91c427ebfba99ab3909151fb10464dae795de", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:294;0:11", + "name": "homeicon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 730.0, + "y": 455.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "21d91c427ebfba99ab3909151fb10464dae795de", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "isMask": true + }, + { + "id": "I0:294;0:12", + "name": "homeicon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 730.0, + "y": 455.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5843137502670288, + "g": 0.6235294342041016, + "b": 0.729411780834198, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 730.0, + "y": 455.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:294;0:14", + "name": "icons/tab bar/stats.*tab", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:294;0:15", + "name": "Oval", + "visible": false, + "type": "ELLIPSE", + "blendMode": "NORMAL", + "opacity": 0.3065243661403656, + "absoluteBoundingBox": { + "x": 938.0, + "y": 458.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.847000002861023, + "g": 0.847000002861023, + "b": 0.847000002861023, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:294;0:18", + "name": "Shape", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "EXCLUDE", + "children": [ + { + "id": "I0:294;0:16", + "name": "Path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 941.0, + "y": 462.0, + "width": 12.526315689086914, + "height": 11.894500732421875 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:294;0:17", + "name": "Path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 946.368408203125, + "y": 466.47369384765625, + "width": 12.526315689086914, + "height": 11.894500732421875 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 941.0, + "y": 462.0, + "width": 17.894737243652344, + "height": 16.36818504333496 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5843137502670288, + "g": 0.6235294342041016, + "b": 0.729411780834198, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 938.0, + "y": 458.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:294;0:19", + "name": "plus-icon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 852.0, + "y": 439.0, + "width": 50.90909194946289, + "height": 56.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "05cf0e11c179692ec2fcb5eff64e817a9596d400", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:294;0:20", + "name": "not published.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 799.0, + "y": 457.0, + "width": 23.33333396911621, + "height": 23.33333396911621 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "1bee5266944df41f0f6cd87832566d650163ddfe", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:294;0:21", + "name": "learn.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1008.0, + "y": 462.0, + "width": 24.0, + "height": 21.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "b12d692ccfdf45980c55fc36de927c9ac37f466b", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 690.0, + "y": 429.0, + "width": 375.0, + "height": 93.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:8" + } + ], + "absoluteBoundingBox": { + "x": 690.0, + "y": -295.0, + "width": 375.0, + "height": 812.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + } + ], + "effects": [] + }, + { + "id": "0:295", + "name": "Landing Page", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:296", + "name": "iPhone X Blue@3x", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 3143.0, + "y": -189.0, + "width": 221.0, + "height": 413.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "acb2bef09f1e01f874c772febcb4ececdc2ab52d", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:297", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 3065.0, + "y": 246.0, + "width": 375.0, + "height": 271.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": false, + "color": { + "r": 0.46666666865348816, + "g": 0.3686274588108063, + "b": 0.3843137323856354, + "a": 0.30000001192092896 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 0.0 }, + "radius": 40.0 + }, + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.606053352355957, + "g": 0.5158292651176453, + "b": 0.5302651524543762, + "a": 0.14209692180156708 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 4.0 }, + "radius": 20.0 + } + ] + }, + { + "id": "0:298", + "name": "A new way to learn a", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 3106.0, + "y": 268.0, + "width": 292.0, + "height": 20.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.014475814066827297, + "g": 0.1713331937789917, + "b": 0.36188071966171265, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "A new way to learn about careers", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.2222222238779068, + "lineHeightPx": 18.75, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:299", + "name": "Inspyred provides re", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 3135.0, + "y": 297.0, + "width": 235.0, + "height": 40.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.46666666865348816, + "g": 0.5254902243614197, + "b": 0.6196078658103943, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Inspyred provides resources to help you make the best decisions.", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 13.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.11100000143051147, + "lineHeightPx": 20.0, + "lineHeightPercent": 131.2820587158203, + "lineHeightPercentFontSize": 153.84616088867188, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:300", + "name": "Main-button", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:301", + "name": "Create Account", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:302", + "name": "Rectangle.*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 3109.0, + "y": 369.0, + "width": 288.0, + "height": 42.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 100.0 + }, + { + "id": "0:303", + "name": "Sign Up", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 3220.0, + "y": 381.0, + "width": 66.0, + "height": 40.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Sign Up", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textCase": "UPPER", + "textAutoResize": "HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 18.75, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 3109.0, + "y": 369.0, + "width": 288.0, + "height": 42.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 3109.0, + "y": 369.0, + "width": 288.0, + "height": 42.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.20999999344348907 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 6.0 + } + ] + }, + { + "id": "0:304", + "name": "Create Account", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:305", + "name": "Rectangle.*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 3109.0, + "y": 430.0, + "width": 288.0, + "height": 42.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 1.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 100.0 + }, + { + "id": "0:306", + "name": "Log in", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 3225.5, + "y": 442.0, + "width": 55.0, + "height": 40.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.4921875, + "g": 0.4921875, + "b": 0.4921875, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Log in", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textCase": "UPPER", + "textAutoResize": "HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 18.75, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 3109.0, + "y": 430.0, + "width": 288.0, + "height": 42.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:307", + "name": "header.*navbar", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:308", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 3065.0, + "y": -295.0, + "width": 375.0, + "height": 95.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { "x": 1.5, "y": 0.5 }, + { "x": 0.5, "y": -0.5 }, + { "x": 2.0, "y": 0.0 } + ], + "gradientStops": [ + { + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + }, + "position": 0.0 + }, + { + "color": { + "r": 0.21176470816135406, + "g": 0.33725491166114807, + "b": 0.7647058963775635, + "a": 1.0 + }, + "position": 1.0 + } + ] + }, + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:309", + "name": "userScore.*middle", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:310", + "name": "285", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 3218.0, + "y": -244.0, + "width": 40.0, + "height": 27.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "285", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 21.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 24.609375, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:311", + "name": "starIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 3266.0, + "y": -242.0, + "width": 22.0, + "height": 22.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "561adcc26e02e562330294d1ef7cb73d7d78b1b5", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 3218.0, + "y": -244.0, + "width": 70.0, + "height": 25.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:312", + "name": "bellIcon.*leading", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 3082.0, + "y": -247.0, + "width": 25.0, + "height": 30.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "fc4b89babe0fe59e003d8203615ac3d519f96daa", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:313", + "name": "profileIcon.*trailing", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 3391.0, + "y": -247.0, + "width": 34.0, + "height": 34.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "1970b23eb7b96f9c734db0864f2478d4c11d5893", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 3065.0, + "y": -295.0, + "width": 375.0, + "height": 95.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 3065.0, + "y": -295.0, + "width": 375.0, + "height": 812.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "", + "format": "JPG", + "constraint": { "type": "SCALE", "value": 3.0 } + } + ], + "effects": [] + }, + { + "id": "0:314", + "name": "Settings", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:315", + "name": "Grid", + "visible": false, + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:318", + "name": "Combined Shape", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "UNION", + "children": [ + { + "id": "0:316", + "name": "Rectangle 3", + "type": "RECTANGLE", + "blendMode": "NORMAL", + "opacity": 0.15000000596046448, + "absoluteBoundingBox": { + "x": 1655.0, + "y": -295.0, + "width": 15.0, + "height": 812.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7485406398773193, + "g": 0.7936510443687439, + "b": 0.8056262135505676, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:317", + "name": "Rectangle 3", + "type": "RECTANGLE", + "blendMode": "NORMAL", + "opacity": 0.15000000596046448, + "absoluteBoundingBox": { + "x": 1685.0, + "y": -295.0, + "width": 15.0, + "height": 812.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7485406398773193, + "g": 0.7936510443687439, + "b": 0.8056262135505676, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:319", + "name": "Rectangle 3", + "type": "RECTANGLE", + "blendMode": "NORMAL", + "opacity": 0.15000000596046448, + "absoluteBoundingBox": { + "x": 1715.0, + "y": -295.0, + "width": 15.0, + "height": 812.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7485406398773193, + "g": 0.7936510443687439, + "b": 0.8056262135505676, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:320", + "name": "Rectangle 3", + "type": "RECTANGLE", + "blendMode": "NORMAL", + "opacity": 0.15000000596046448, + "absoluteBoundingBox": { + "x": 1745.0, + "y": -295.0, + "width": 15.0, + "height": 812.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7485406398773193, + "g": 0.7936510443687439, + "b": 0.8056262135505676, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:321", + "name": "Rectangle 3", + "type": "RECTANGLE", + "blendMode": "NORMAL", + "opacity": 0.15000000596046448, + "absoluteBoundingBox": { + "x": 1775.0, + "y": -295.0, + "width": 15.0, + "height": 812.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7485406398773193, + "g": 0.7936510443687439, + "b": 0.8056262135505676, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:322", + "name": "Rectangle 3", + "type": "RECTANGLE", + "blendMode": "NORMAL", + "opacity": 0.15000000596046448, + "absoluteBoundingBox": { + "x": 1805.0, + "y": -295.0, + "width": 15.0, + "height": 812.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7485406398773193, + "g": 0.7936510443687439, + "b": 0.8056262135505676, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:323", + "name": "Rectangle 3", + "type": "RECTANGLE", + "blendMode": "NORMAL", + "opacity": 0.15000000596046448, + "absoluteBoundingBox": { + "x": 1835.0, + "y": -295.0, + "width": 15.0, + "height": 812.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7485406398773193, + "g": 0.7936510443687439, + "b": 0.8056262135505676, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:324", + "name": "Rectangle 3", + "type": "RECTANGLE", + "blendMode": "NORMAL", + "opacity": 0.15000000596046448, + "absoluteBoundingBox": { + "x": 1865.0, + "y": -295.0, + "width": 15.0, + "height": 812.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7485406398773193, + "g": 0.7936510443687439, + "b": 0.8056262135505676, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:325", + "name": "Rectangle 3", + "type": "RECTANGLE", + "blendMode": "NORMAL", + "opacity": 0.15000000596046448, + "absoluteBoundingBox": { + "x": 1895.0, + "y": -295.0, + "width": 15.0, + "height": 812.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7485406398773193, + "g": 0.7936510443687439, + "b": 0.8056262135505676, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:326", + "name": "Rectangle 3", + "type": "RECTANGLE", + "blendMode": "NORMAL", + "opacity": 0.15000000596046448, + "absoluteBoundingBox": { + "x": 1925.0, + "y": -295.0, + "width": 15.0, + "height": 812.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7485406398773193, + "g": 0.7936510443687439, + "b": 0.8056262135505676, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:327", + "name": "Rectangle 3", + "type": "RECTANGLE", + "blendMode": "NORMAL", + "opacity": 0.15000000596046448, + "absoluteBoundingBox": { + "x": 1955.0, + "y": -295.0, + "width": 15.0, + "height": 812.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7485406398773193, + "g": 0.7936510443687439, + "b": 0.8056262135505676, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:328", + "name": "Rectangle 3", + "type": "RECTANGLE", + "blendMode": "NORMAL", + "opacity": 0.15000000596046448, + "absoluteBoundingBox": { + "x": 1985.0, + "y": -295.0, + "width": 15.0, + "height": 812.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7485406398773193, + "g": 0.7936510443687439, + "b": 0.8056262135505676, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": -295.0, + "width": 345.0, + "height": 812.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "opacity": 0.15000000596046448, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5176470875740051, + "g": 0.1882352977991104, + "b": 0.7960784435272217, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": -295.0, + "width": 345.0, + "height": 812.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:329", + "name": "1. Bars / 2. Top Bar / 1. Normal / Links + Heading", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:330", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": -251.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:331", + "name": "➡️ Right", + "visible": false, + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:331;0:82", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": -251.0, + "width": 175.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:331;0:83", + "name": "🧡Icon", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:331;0:83;0:30", + "name": "🔷 Icon Color", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1791.0, + "y": -241.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1791.0, + "y": -241.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:29" + }, + { + "id": "I0:331;0:84", + "name": "✅ Link", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1751.0, + "y": -240.0, + "width": 34.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.5176470875740051, + "b": 0.9176470637321472, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Link", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "RIGHT", + "textAlignVertical": "TOP", + "letterSpacing": -0.4000000059604645, + "lineHeightPx": 22.0, + "lineHeightPercent": 117.33332824707031, + "lineHeightPercentFontSize": 137.5, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": -251.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:81" + }, + { + "id": "0:332", + "name": "⬅️ Left", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:332;0:98", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": -251.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:332;0:99", + "name": "✅ Link", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1675.0, + "y": -240.0, + "width": 37.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.4901960790157318, + "b": 0.8941176533699036, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Back", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": -0.4000000059604645, + "lineHeightPx": 22.0, + "lineHeightPercent": 117.33332824707031, + "lineHeightPercentFontSize": 137.5, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "I0:332;0:100", + "name": "Arrow", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:332;0:102", + "name": "🔷 Arrow Color", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": -239.0, + "width": 12.350000381469727, + "height": 20.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { "x": 1.5, "y": 0.5 }, + { "x": 0.5, "y": -0.5 }, + { "x": 2.0, "y": 0.0 } + ], + "gradientStops": [ + { + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + }, + "position": 0.0 + }, + { + "color": { + "r": 0.21176470816135406, + "g": 0.33725491166114807, + "b": 0.7647058963775635, + "a": 1.0 + }, + "position": 1.0 + } + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:332;0:101", + "name": "🔷 Arrow Color", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": -239.0, + "width": 12.350000381469727, + "height": 20.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { "x": 1.5, "y": 0.5 }, + { "x": 0.5, "y": -0.5 }, + { "x": 2.0, "y": 0.0 } + ], + "gradientStops": [ + { + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + }, + "position": 0.0 + }, + { + "color": { + "r": 0.21176470816135406, + "g": 0.33725491166114807, + "b": 0.7647058963775635, + "a": 1.0 + }, + "position": 1.0 + } + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "isMask": true, + "isMaskOutline": true + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": -239.0, + "width": 13.0, + "height": 20.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -251.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:97" + }, + { + "id": "0:333", + "name": "🅰️ Heading", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1728.0, + "y": -240.0, + "width": 200.0, + "height": 20.0 + }, + "constraints": { + "vertical": "TOP_BOTTOM", + "horizontal": "LEFT_RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.025135869160294533, + "g": 0.025135869160294533, + "b": 0.025135869160294533, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": " Settings", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 20.0, + "lineHeightPercent": 106.66667175292969, + "lineHeightPercentFontSize": 125.0, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -251.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:334", + "name": "8. Misc / Line", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:334;0:109", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": -207.0, + "width": 375.0, + "height": 1.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.8784313797950745, + "g": 0.8784313797950745, + "b": 0.8784313797950745, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -207.0, + "width": 375.0, + "height": 1.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:108" + }, + { + "id": "0:335", + "name": "UI Views / Tables / Cell #1 / 44 px", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:335;0:76", + "name": "2. UI Views / Tables / Cell / 44px", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:335;0:77", + "name": "Styles / Gray Underline", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:335;0:78", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": -106.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.00009999999747378752, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "INNER_SHADOW", + "visible": true, + "color": { + "r": 0.9043381810188293, + "g": 0.9169105887413025, + "b": 0.9221673011779785, + "a": 1.0 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": -1.0 }, + "radius": 0.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -106.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:335;0:79", + "name": "2. UI Views / Tables / Overrides / Right / Switcher + Text", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:335;0:79;0:147", + "name": "2. UI Views / Overrides / Accessory / Switcher + Text", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:335;0:79;0:148", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": -106.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:335;0:79;0:149", + "name": ".*switch", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:335;0:79;0:149;0:95", + "name": "⬛ Background", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1948.0, + "y": -100.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { "x": 1.5, "y": 0.5 }, + { "x": 0.5, "y": -0.5 }, + { "x": 2.0, "y": 0.0 } + ], + "gradientStops": [ + { + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + }, + "position": 0.0 + }, + { + "color": { + "r": 0.21176470816135406, + "g": 0.33725491166114807, + "b": 0.7647058963775635, + "a": 1.0 + }, + "position": 1.0 + } + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "cornerRadius": 31.0 + }, + { + "id": "I0:335;0:79;0:149;0:96", + "name": "🔵 Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1970.0, + "y": -98.0, + "width": 28.0, + "height": 28.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 1.0 }, + "radius": 4.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1948.0, + "y": -100.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:94" + }, + { + "id": "I0:335;0:79;0:150", + "name": "🔤 Value", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1939.0, + "y": -93.0, + "width": 0.0, + "height": 18.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": " ", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 14.0, + "textAlignHorizontal": "RIGHT", + "textAlignVertical": "TOP", + "letterSpacing": -0.20000000298023224, + "lineHeightPx": 18.0, + "lineHeightPercent": 109.71427917480469, + "lineHeightPercentFontSize": 128.57142639160156, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": -106.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": -106.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:146" + }, + { + "id": "I0:335;0:80", + "name": "⬅️ Left", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:335;0:80;0:86", + "name": "2. UI Views / Overrides / Label / Normal / Text", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:335;0:80;0:87", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": -106.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:335;0:80;0:88", + "name": "🅰️ Label", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": -96.0, + "width": 102.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.025135869160294533, + "g": 0.025135869160294533, + "b": 0.025135869160294533, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "All New Posts", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": -0.4000000059604645, + "lineHeightPx": 22.0, + "lineHeightPercent": 117.33332824707031, + "lineHeightPercentFontSize": 137.5, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -106.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -106.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT_RIGHT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:85" + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -106.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -106.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:75" + }, + { + "id": "0:336", + "name": "UI Views / Tables / Cell #1 / 44 px", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:336;0:76", + "name": "2. UI Views / Tables / Cell / 44px", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:336;0:77", + "name": "Styles / Gray Underline", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:336;0:78", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": -62.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.00009999999747378752, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "INNER_SHADOW", + "visible": true, + "color": { + "r": 0.9043381810188293, + "g": 0.9169105887413025, + "b": 0.9221673011779785, + "a": 1.0 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": -1.0 }, + "radius": 0.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -62.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:336;0:79", + "name": "2. UI Views / Tables / Overrides / Right / Switcher + Text", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:336;0:79;0:147", + "name": "2. UI Views / Overrides / Accessory / Switcher + Text", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:336;0:79;0:148", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": -62.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:336;0:79;0:149", + "name": "4. Inputs / Switchers / Off", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:336;0:79;0:149;0:143", + "name": "UISwitchOff", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:336;0:79;0:149;0:144", + "name": "⬛ Background", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1948.0, + "y": -56.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "cornerRadius": 31.0 + }, + { + "id": "I0:336;0:79;0:149;0:145", + "name": "🔵 Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1950.0, + "y": -54.0, + "width": 28.0, + "height": 28.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 1.0 }, + "radius": 4.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1948.0, + "y": -56.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1948.0, + "y": -56.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:142" + }, + { + "id": "I0:336;0:79;0:150", + "name": "🔤 Value", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1939.0, + "y": -49.0, + "width": 0.0, + "height": 18.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": " ", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 14.0, + "textAlignHorizontal": "RIGHT", + "textAlignVertical": "TOP", + "letterSpacing": -0.20000000298023224, + "lineHeightPx": 18.0, + "lineHeightPercent": 109.71427917480469, + "lineHeightPercentFontSize": 128.57142639160156, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": -62.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": -62.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:146" + }, + { + "id": "I0:336;0:80", + "name": "⬅️ Left", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:336;0:80;0:86", + "name": "2. UI Views / Overrides / Label / Normal / Text", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:336;0:80;0:87", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": -62.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:336;0:80;0:88", + "name": "🅰️ Label", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": -52.0, + "width": 79.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.025135869160294533, + "g": 0.025135869160294533, + "b": 0.025135869160294533, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Messaging", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": -0.4000000059604645, + "lineHeightPx": 22.0, + "lineHeightPercent": 117.33332824707031, + "lineHeightPercentFontSize": 137.5, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -62.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -62.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT_RIGHT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:85" + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -62.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -62.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:75" + }, + { + "id": "0:337", + "name": "UI Views / Tables / Cell #1 / 44 px", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:337;0:76", + "name": "2. UI Views / Tables / Cell / 44px", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:337;0:77", + "name": "Styles / Gray Underline", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:337;0:78", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": -18.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.00009999999747378752, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "INNER_SHADOW", + "visible": true, + "color": { + "r": 0.9043381810188293, + "g": 0.9169105887413025, + "b": 0.9221673011779785, + "a": 1.0 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": -1.0 }, + "radius": 0.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -18.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:337;0:79", + "name": "2. UI Views / Tables / Overrides / Right / Switcher + Text", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:337;0:79;0:147", + "name": "2. UI Views / Overrides / Accessory / Switcher + Text", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:337;0:79;0:148", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": -18.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:337;0:79;0:149", + "name": ".*switch", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:337;0:79;0:149;0:95", + "name": "⬛ Background", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1948.0, + "y": -12.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { "x": 1.5, "y": 0.5 }, + { "x": 0.5, "y": -0.5 }, + { "x": 2.0, "y": 0.0 } + ], + "gradientStops": [ + { + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + }, + "position": 0.0 + }, + { + "color": { + "r": 0.21176470816135406, + "g": 0.33725491166114807, + "b": 0.7647058963775635, + "a": 1.0 + }, + "position": 1.0 + } + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "cornerRadius": 31.0 + }, + { + "id": "I0:337;0:79;0:149;0:96", + "name": "🔵 Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1970.0, + "y": -10.0, + "width": 28.0, + "height": 28.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 1.0 }, + "radius": 4.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1948.0, + "y": -12.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:94" + }, + { + "id": "I0:337;0:79;0:150", + "name": "🔤 Value", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1939.0, + "y": -5.0, + "width": 0.0, + "height": 18.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": " ", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 14.0, + "textAlignHorizontal": "RIGHT", + "textAlignVertical": "TOP", + "letterSpacing": -0.20000000298023224, + "lineHeightPx": 18.0, + "lineHeightPercent": 109.71427917480469, + "lineHeightPercentFontSize": 128.57142639160156, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": -18.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": -18.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:146" + }, + { + "id": "I0:337;0:80", + "name": "⬅️ Left", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:337;0:80;0:86", + "name": "2. UI Views / Overrides / Label / Normal / Text", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:337;0:80;0:87", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": -18.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:337;0:80;0:88", + "name": "🅰️ Label", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": -8.0, + "width": 87.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.025135869160294533, + "g": 0.025135869160294533, + "b": 0.025135869160294533, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "New Events", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": -0.4000000059604645, + "lineHeightPx": 22.0, + "lineHeightPercent": 117.33332824707031, + "lineHeightPercentFontSize": 137.5, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -18.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -18.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT_RIGHT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:85" + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -18.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -18.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:75" + }, + { + "id": "0:338", + "name": "UI Views / Tables / Cell #1 / 44 px", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:338;0:76", + "name": "2. UI Views / Tables / Cell / 44px", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:338;0:77", + "name": "Styles / Gray Underline", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:338;0:78", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": -206.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.00009999999747378752, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "INNER_SHADOW", + "visible": true, + "color": { + "r": 0.9043381810188293, + "g": 0.9169105887413025, + "b": 0.9221673011779785, + "a": 1.0 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": -1.0 }, + "radius": 0.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -206.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:338;0:79", + "name": "2. UI Views / Tables / Overrides / Right / Text + Arrow", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:338;0:79;0:111", + "name": "2. UI Views / Overrides / Accessory / Text + Icon", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:338;0:79;0:112", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": -206.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:338;0:79;0:113", + "name": "🔤 Value", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1983.0, + "y": -193.0, + "width": 0.0, + "height": 18.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": " ", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 14.0, + "textAlignHorizontal": "RIGHT", + "textAlignVertical": "TOP", + "letterSpacing": -0.20000000298023224, + "lineHeightPx": 18.0, + "lineHeightPercent": 109.71427917480469, + "lineHeightPercentFontSize": 128.57142639160156, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "I0:338;0:79;0:114", + "name": "Shape", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1993.0, + "y": -190.0, + "width": 7.409999847412109, + "height": 12.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": -206.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": -206.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:110" + }, + { + "id": "I0:338;0:80", + "name": "⬅️ Left", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:338;0:80;0:86", + "name": "2. UI Views / Overrides / Label / Normal / Text", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:338;0:80;0:87", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": -206.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:338;0:80;0:88", + "name": "🅰️ Label", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": -196.0, + "width": 57.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.025135869160294533, + "g": 0.025135869160294533, + "b": 0.025135869160294533, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "General", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": -0.4000000059604645, + "lineHeightPx": 22.0, + "lineHeightPercent": 117.33332824707031, + "lineHeightPercentFontSize": 137.5, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -206.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -206.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT_RIGHT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:85" + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -206.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -206.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:75" + }, + { + "id": "0:339", + "name": "UI Views / Tables / Cell #1 / 44 px", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:339;0:76", + "name": "2. UI Views / Tables / Cell / 44px", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:339;0:77", + "name": "Styles / Gray Underline", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:339;0:78", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": 82.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.00009999999747378752, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "INNER_SHADOW", + "visible": true, + "color": { + "r": 0.9043381810188293, + "g": 0.9169105887413025, + "b": 0.9221673011779785, + "a": 1.0 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": -1.0 }, + "radius": 0.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 82.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:339;0:79", + "name": "2. UI Views / Tables / Overrides / Right / Text + Arrow", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:339;0:79;0:111", + "name": "2. UI Views / Overrides / Accessory / Text + Icon", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:339;0:79;0:112", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": 82.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:339;0:79;0:113", + "name": "🔤 Value", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1983.0, + "y": 95.0, + "width": 0.0, + "height": 18.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": " ", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 14.0, + "textAlignHorizontal": "RIGHT", + "textAlignVertical": "TOP", + "letterSpacing": -0.20000000298023224, + "lineHeightPx": 18.0, + "lineHeightPercent": 109.71427917480469, + "lineHeightPercentFontSize": 128.57142639160156, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "I0:339;0:79;0:114", + "name": "Shape", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1993.0, + "y": 98.0, + "width": 7.409999847412109, + "height": 12.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": 82.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": 82.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:110" + }, + { + "id": "I0:339;0:80", + "name": "⬅️ Left", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:339;0:80;0:86", + "name": "2. UI Views / Overrides / Label / Normal / Text", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:339;0:80;0:87", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": 82.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:339;0:80;0:88", + "name": "🅰️ Label", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": 92.0, + "width": 41.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.025135869160294533, + "g": 0.025135869160294533, + "b": 0.025135869160294533, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Label", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": -0.4000000059604645, + "lineHeightPx": 22.0, + "lineHeightPercent": 117.33332824707031, + "lineHeightPercentFontSize": 137.5, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 82.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 82.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT_RIGHT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:85" + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 82.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 82.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:75" + }, + { + "id": "0:340", + "name": "UI Views / Tables / Cell #1 / 44 px", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:340;0:76", + "name": "2. UI Views / Tables / Cell / 44px", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:340;0:77", + "name": "Styles / Gray Underline", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:340;0:78", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": 126.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.00009999999747378752, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "INNER_SHADOW", + "visible": true, + "color": { + "r": 0.9043381810188293, + "g": 0.9169105887413025, + "b": 0.9221673011779785, + "a": 1.0 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": -1.0 }, + "radius": 0.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 126.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:340;0:79", + "name": "2. UI Views / Tables / Overrides / Right / Text + Arrow", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:340;0:79;0:111", + "name": "2. UI Views / Overrides / Accessory / Text + Icon", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:340;0:79;0:112", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": 126.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:340;0:79;0:113", + "name": "🔤 Value", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1983.0, + "y": 139.0, + "width": 0.0, + "height": 18.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": " ", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 14.0, + "textAlignHorizontal": "RIGHT", + "textAlignVertical": "TOP", + "letterSpacing": -0.20000000298023224, + "lineHeightPx": 18.0, + "lineHeightPercent": 109.71427917480469, + "lineHeightPercentFontSize": 128.57142639160156, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "I0:340;0:79;0:114", + "name": "Shape", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1993.0, + "y": 142.0, + "width": 7.409999847412109, + "height": 12.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": 126.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": 126.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:110" + }, + { + "id": "I0:340;0:80", + "name": "⬅️ Left", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:340;0:80;0:86", + "name": "2. UI Views / Overrides / Label / Normal / Text", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:340;0:80;0:87", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": 126.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:340;0:80;0:88", + "name": "🅰️ Label", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": 136.0, + "width": 120.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.025135869160294533, + "g": 0.025135869160294533, + "b": 0.025135869160294533, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Privacy Settings", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": -0.4000000059604645, + "lineHeightPx": 22.0, + "lineHeightPercent": 117.33332824707031, + "lineHeightPercentFontSize": 137.5, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 126.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 126.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT_RIGHT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:85" + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 126.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 126.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:75" + }, + { + "id": "0:341", + "name": "UI Views / Tables / Cell #1 / 44 px", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:341;0:76", + "name": "2. UI Views / Tables / Cell / 44px", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:341;0:77", + "name": "Styles / Gray Underline", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:341;0:78", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": 170.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.00009999999747378752, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "INNER_SHADOW", + "visible": true, + "color": { + "r": 0.9043381810188293, + "g": 0.9169105887413025, + "b": 0.9221673011779785, + "a": 1.0 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": -1.0 }, + "radius": 0.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 170.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:341;0:79", + "name": "2. UI Views / Tables / Overrides / Right / Text + Arrow", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:341;0:79;0:111", + "name": "2. UI Views / Overrides / Accessory / Text + Icon", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:341;0:79;0:112", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": 170.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:341;0:79;0:113", + "name": "🔤 Value", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1983.0, + "y": 183.0, + "width": 0.0, + "height": 18.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": " ", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 14.0, + "textAlignHorizontal": "RIGHT", + "textAlignVertical": "TOP", + "letterSpacing": -0.20000000298023224, + "lineHeightPx": 18.0, + "lineHeightPercent": 109.71427917480469, + "lineHeightPercentFontSize": 128.57142639160156, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "I0:341;0:79;0:114", + "name": "Shape", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1993.0, + "y": 186.0, + "width": 7.409999847412109, + "height": 12.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": 170.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": 170.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:110" + }, + { + "id": "I0:341;0:80", + "name": "⬅️ Left", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:341;0:80;0:86", + "name": "2. UI Views / Overrides / Label / Normal / Text", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:341;0:80;0:87", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": 170.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:341;0:80;0:88", + "name": "🅰️ Label", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": 180.0, + "width": 60.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.025135869160294533, + "g": 0.025135869160294533, + "b": 0.025135869160294533, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Support", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": -0.4000000059604645, + "lineHeightPx": 22.0, + "lineHeightPercent": 117.33332824707031, + "lineHeightPercentFontSize": 137.5, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 170.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 170.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT_RIGHT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:85" + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 170.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 170.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:75" + }, + { + "id": "0:342", + "name": "UI Views / Headings / Small / 56px #1", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:342;0:104", + "name": "2. UI Views / Headings / Small / 56px", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:342;0:105", + "name": "Styles / Gray Underline", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:342;0:106", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": -162.0, + "width": 375.0, + "height": 56.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.00009999999747378752, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "INNER_SHADOW", + "visible": true, + "color": { + "r": 0.9043381810188293, + "g": 0.9169105887413025, + "b": 0.9221673011779785, + "a": 1.0 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": -1.0 }, + "radius": 0.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -162.0, + "width": 375.0, + "height": 56.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:342;0:107", + "name": "🅰️ Heading", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": -128.0, + "width": 101.0, + "height": 12.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Notifications", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textCase": "UPPER", + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 12.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.20000000298023224, + "lineHeightPx": 12.0, + "lineHeightPercent": 85.33333587646484, + "lineHeightPercentFontSize": 100.0, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -162.0, + "width": 375.0, + "height": 56.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -162.0, + "width": 375.0, + "height": 56.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:103" + }, + { + "id": "0:343", + "name": "UI Views / Headings / Small / 56px #1", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:343;0:104", + "name": "2. UI Views / Headings / Small / 56px", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:343;0:105", + "name": "Styles / Gray Underline", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:343;0:106", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": 26.0, + "width": 375.0, + "height": 56.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.00009999999747378752, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "INNER_SHADOW", + "visible": true, + "color": { + "r": 0.9043381810188293, + "g": 0.9169105887413025, + "b": 0.9221673011779785, + "a": 1.0 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": -1.0 }, + "radius": 0.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 26.0, + "width": 375.0, + "height": 56.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:343;0:107", + "name": "🅰️ Heading", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": 60.0, + "width": 45.0, + "height": 12.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Other", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textCase": "UPPER", + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 12.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.20000000298023224, + "lineHeightPx": 12.0, + "lineHeightPercent": 85.33333587646484, + "lineHeightPercentFontSize": 100.0, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 26.0, + "width": 375.0, + "height": 56.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 26.0, + "width": 375.0, + "height": 56.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:103" + }, + { + "id": "0:344", + "name": "UI Views / Headings / Small / 56px #1", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:344;0:104", + "name": "2. UI Views / Headings / Small / 56px", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:344;0:105", + "name": "Styles / Gray Underline", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:344;0:106", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": 214.0, + "width": 375.0, + "height": 56.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.00009999999747378752, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "INNER_SHADOW", + "visible": true, + "color": { + "r": 0.9043381810188293, + "g": 0.9169105887413025, + "b": 0.9221673011779785, + "a": 1.0 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": -1.0 }, + "radius": 0.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 214.0, + "width": 375.0, + "height": 56.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:344;0:107", + "name": "🅰️ Heading", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": 248.0, + "width": 49.0, + "height": 12.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Social", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textCase": "UPPER", + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 12.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.20000000298023224, + "lineHeightPx": 12.0, + "lineHeightPercent": 85.33333587646484, + "lineHeightPercentFontSize": 100.0, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 214.0, + "width": 375.0, + "height": 56.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 214.0, + "width": 375.0, + "height": 56.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:103" + }, + { + "id": "0:345", + "name": "UI Views / Tables / Cell #1 / 44 px", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:345;0:76", + "name": "2. UI Views / Tables / Cell / 44px", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:345;0:77", + "name": "Styles / Gray Underline", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:345;0:78", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": 270.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.00009999999747378752, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "INNER_SHADOW", + "visible": true, + "color": { + "r": 0.9043381810188293, + "g": 0.9169105887413025, + "b": 0.9221673011779785, + "a": 1.0 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": -1.0 }, + "radius": 0.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 270.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:345;0:79", + "name": "2. UI Views / Tables / Overrides / Right / Switcher + Text", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:345;0:79;0:147", + "name": "2. UI Views / Overrides / Accessory / Switcher + Text", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:345;0:79;0:148", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": 270.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:345;0:79;0:149", + "name": ".*switch", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:345;0:79;0:149;0:95", + "name": "⬛ Background", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1948.0, + "y": 276.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { "x": 1.5, "y": 0.5 }, + { "x": 0.5, "y": -0.5 }, + { "x": 2.0, "y": 0.0 } + ], + "gradientStops": [ + { + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + }, + "position": 0.0 + }, + { + "color": { + "r": 0.21176470816135406, + "g": 0.33725491166114807, + "b": 0.7647058963775635, + "a": 1.0 + }, + "position": 1.0 + } + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "cornerRadius": 31.0 + }, + { + "id": "I0:345;0:79;0:149;0:96", + "name": "🔵 Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1970.0, + "y": 278.0, + "width": 28.0, + "height": 28.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 1.0 }, + "radius": 4.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1948.0, + "y": 276.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:94" + }, + { + "id": "I0:345;0:79;0:150", + "name": "🔤 Value", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1939.0, + "y": 283.0, + "width": 0.0, + "height": 18.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": " ", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 14.0, + "textAlignHorizontal": "RIGHT", + "textAlignVertical": "TOP", + "letterSpacing": -0.20000000298023224, + "lineHeightPx": 18.0, + "lineHeightPercent": 109.71427917480469, + "lineHeightPercentFontSize": 128.57142639160156, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": 270.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": 270.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:146" + }, + { + "id": "I0:345;0:80", + "name": "2. UI Views / Tables / Overrides / Left / 44 px / Text + Icon", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:345;0:80;0:138", + "name": "2. UI Views / Overrides / Label / Normal / Text + Icon", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:345;0:80;0:139", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": 270.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:345;0:80;0:140", + "name": "9. Icons / Facebook", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:345;0:80;0:140;0:72", + "name": "🔷 Icon Color", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "SUBTRACT", + "children": [ + { + "id": "I0:345;0:80;0:140;0:73", + "name": "Rectangle 9", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1658.0, + "y": 283.0, + "width": 18.0, + "height": 18.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7671204209327698, + "g": 0.7919232249259949, + "b": 0.7981239557266235, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "cornerRadius": 2.0 + }, + { + "id": "I0:345;0:80;0:140;0:74", + "name": "Fill 2", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1665.262451171875, + "y": 285.71929931640625, + "width": 7.955156326293945, + "height": 15.284557342529297 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7671204209327698, + "g": 0.7919232249259949, + "b": 0.7981239557266235, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1658.0, + "y": 283.0, + "width": 18.0, + "height": 18.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:345;0:80;0:140;0:71", + "name": "🔷 Icon Color", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "SUBTRACT", + "children": [ + { + "id": "I0:345;0:80;0:140;0:69", + "name": "Rectangle 9", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1658.0, + "y": 283.0, + "width": 18.0, + "height": 18.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7671204209327698, + "g": 0.7919232249259949, + "b": 0.7981239557266235, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "cornerRadius": 2.0 + }, + { + "id": "I0:345;0:80;0:140;0:70", + "name": "Fill 2", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1665.262451171875, + "y": 285.71929931640625, + "width": 7.955156326293945, + "height": 15.284557342529297 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7671204209327698, + "g": 0.7919232249259949, + "b": 0.7981239557266235, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1658.0, + "y": 283.0, + "width": 18.0, + "height": 18.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "isMask": true, + "isMaskOutline": true + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": 280.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:68" + }, + { + "id": "I0:345;0:80;0:141", + "name": "🅰️ Label", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1689.0, + "y": 280.0, + "width": 70.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.025135869160294533, + "g": 0.025135869160294533, + "b": 0.025135869160294533, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Facebook", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": -0.4000000059604645, + "lineHeightPx": 22.0, + "lineHeightPercent": 117.33332824707031, + "lineHeightPercentFontSize": 137.5, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 270.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 270.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT_RIGHT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:137" + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 270.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 270.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:75" + }, + { + "id": "0:346", + "name": "UI Views / Tables / Cell #1 / 44 px", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:346;0:76", + "name": "2. UI Views / Tables / Cell / 44px", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:346;0:77", + "name": "Styles / Gray Underline", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:346;0:78", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": 314.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.00009999999747378752, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "INNER_SHADOW", + "visible": true, + "color": { + "r": 0.9043381810188293, + "g": 0.9169105887413025, + "b": 0.9221673011779785, + "a": 1.0 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": -1.0 }, + "radius": 0.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 314.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:346;0:79", + "name": "2. UI Views / Tables / Overrides / Right / Switcher + Text", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:346;0:79;0:147", + "name": "2. UI Views / Overrides / Accessory / Switcher + Text", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:346;0:79;0:148", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1655.0, + "y": 314.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:346;0:79;0:149", + "name": "4. Inputs / Switchers / Off", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:346;0:79;0:149;0:143", + "name": "UISwitchOff", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:346;0:79;0:149;0:144", + "name": "⬛ Background", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1948.0, + "y": 320.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.6705729365348816, + "g": 0.6705729365348816, + "b": 0.6705729365348816, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "cornerRadius": 31.0 + }, + { + "id": "I0:346;0:79;0:149;0:145", + "name": "🔵 Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1950.0, + "y": 322.0, + "width": 28.0, + "height": 28.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 1.0 }, + "radius": 4.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1948.0, + "y": 320.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1948.0, + "y": 320.0, + "width": 52.0, + "height": 32.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:142" + }, + { + "id": "I0:346;0:79;0:150", + "name": "🔤 Value", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1939.0, + "y": 327.0, + "width": 0.0, + "height": 18.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": " ", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 14.0, + "textAlignHorizontal": "RIGHT", + "textAlignVertical": "TOP", + "letterSpacing": -0.20000000298023224, + "lineHeightPx": 18.0, + "lineHeightPercent": 109.71427917480469, + "lineHeightPercentFontSize": 128.57142639160156, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": 314.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": 314.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "RIGHT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:146" + }, + { + "id": "I0:346;0:80", + "name": "2. UI Views / Tables / Overrides / Left / 44 px / Text + Icon", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:346;0:80;0:138", + "name": "2. UI Views / Overrides / Label / Normal / Text + Icon", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:346;0:80;0:139", + "name": "Background", + "visible": false, + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": 314.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:346;0:80;0:140", + "name": "9. Icons / Twitter", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:346;0:80;0:140;0:62", + "name": "🔷 Icon Color", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1658.0, + "y": 329.0, + "width": 18.0, + "height": 14.62826919555664 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:346;0:80;0:140;0:61", + "name": "🔷 Icon Color", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1658.0, + "y": 329.0, + "width": 18.0, + "height": 14.62826919555664 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.40784314274787903, + "g": 0.40784314274787903, + "b": 0.40784314274787903, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "isMask": true, + "isMaskOutline": true + } + ], + "absoluteBoundingBox": { + "x": 1655.0, + "y": 324.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:60" + }, + { + "id": "I0:346;0:80;0:141", + "name": "🅰️ Label", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1689.0, + "y": 324.0, + "width": 53.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.025135869160294533, + "g": 0.025135869160294533, + "b": 0.025135869160294533, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "Twitter", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 16.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": -0.4000000059604645, + "lineHeightPx": 22.0, + "lineHeightPercent": 117.33332824707031, + "lineHeightPercentFontSize": 137.5, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 314.0, + "width": 356.4356384277344, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 314.0, + "width": 360.0, + "height": 44.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT_RIGHT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:137" + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 314.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 314.0, + "width": 375.0, + "height": 44.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:75" + }, + { + "id": "0:347", + "name": "1. Bars / 5. Home Indicator", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:347;0:90", + "name": "Home Indicator", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:347;0:91", + "name": "Styles / Gray 19%", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:347;0:92", + "name": "⬛ Background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1640.0, + "y": 483.0, + "width": 375.0, + "height": 34.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "styles": { "fill": "0:503" }, + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 483.0, + "width": 375.0, + "height": 34.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:347;0:93", + "name": "Line", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1761.0, + "y": 503.0, + "width": 134.0, + "height": 5.0 + }, + "constraints": { + "vertical": "BOTTOM", + "horizontal": "CENTER" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0235294122248888, + "g": 0.0235294122248888, + "b": 0.0235294122248888, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "cornerRadius": 100.0 + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 483.0, + "width": 375.0, + "height": 34.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": 483.0, + "width": 375.0, + "height": 34.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:89" + } + ], + "absoluteBoundingBox": { + "x": 1640.0, + "y": -295.0, + "width": 375.0, + "height": 812.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.9999018311500549, + "g": 1.0, + "b": 0.9998798966407776, + "a": 1.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:348", + "name": "Home Screen", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:349", + "name": "Top Stack Section", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:350", + "name": "backgroundImage", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2115.0, + "y": -295.0, + "width": 375.0, + "height": 501.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "65337f67361e93ec60270000b045aa826d92a5d8", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:351", + "name": "Group 2", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:352", + "name": "Noam Levine", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2248.0, + "y": -171.0, + "width": 108.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Noam Levine", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:353", + "name": "Student at Hanks Hig", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2178.5, + "y": -149.0, + "width": 248.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Student at Hanks High School", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 2186.0, + "y": -171.0, + "width": 234.0, + "height": 42.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:354", + "name": "person", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2265.0, + "y": -253.0, + "width": 77.0, + "height": 77.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "62b79ea6babc1f4ab6b7b3ffde1833016d810a9d", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:355", + "name": ".*switch", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:356", + "name": "72%", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2243.0, + "y": -27.0, + "width": 118.0, + "height": 77.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "72%", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 60.30155944824219, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 70.6658935546875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:357", + "name": "Completed", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2261.0, + "y": 39.0, + "width": 82.0, + "height": 20.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.800000011920929, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Completed", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 15.912911415100098, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 18.6479434967041, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 2243.0, + "y": -27.0, + "width": 119.0, + "height": 85.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:358", + "name": "ScoreCard", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:359", + "name": "Score Bar@3x", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2115.0, + "y": 161.0, + "width": 375.0, + "height": 121.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "ea2cf7390a161fe48fcd63570a39acf952b1eb54", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:360", + "name": "Score: 285", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2247.5, + "y": 199.0, + "width": 110.0, + "height": 28.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21548150479793549, + "g": 0.19963327050209045, + "b": 0.19963327050209045, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Score: 285", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 22.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 25.78125, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2 + ], + "styleOverrideTable": { + "2": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2078431397676468, + "g": 0.5372549295425415, + "b": 0.9333333373069763, + "a": 1.0 + } + } + ] + }, + "1": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21548150479793549, + "g": 0.19963327050209045, + "b": 0.19963327050209045, + "a": 1.0 + } + } + ] + } + } + } + ], + "absoluteBoundingBox": { + "x": 2115.0, + "y": 161.0, + "width": 375.0, + "height": 121.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:361", + "name": "profileIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2439.0, + "y": -248.0, + "width": 34.0, + "height": 34.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "1970b23eb7b96f9c734db0864f2478d4c11d5893", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:362", + "name": "bellIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2132.0, + "y": -246.0, + "width": 25.161291122436523, + "height": 29.225807189941406 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "70d7696e0256bf5b87fe826a9142b64539ece51a", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2115.0, + "y": -295.0, + "width": 375.0, + "height": 577.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:363", + "name": "Connect Facebook Button", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:364", + "name": "Group 2", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:366", + "name": "Rectangle 4", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2131.0, + "y": 275.0, + "width": 342.0, + "height": 61.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + }, + { + "opacity": 0.5, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.25882354378700256, + "g": 0.40392157435417175, + "b": 0.6980392336845398, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "cornerRadius": 30.5 + }, + { + "id": "0:365", + "name": "Rectangle 4", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2131.0, + "y": 275.0, + "width": 342.0, + "height": 61.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + }, + { + "opacity": 0.5, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.25882354378700256, + "g": 0.40392157435417175, + "b": 0.6980392336845398, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "isMask": true, + "isMaskOutline": true, + "cornerRadius": 30.5 + } + ], + "absoluteBoundingBox": { + "x": 2131.0, + "y": 275.0, + "width": 342.0, + "height": 61.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": false, + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.25 }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 4.0 }, + "radius": 13.0 + } + ] + }, + { + "id": "0:367", + "name": "Continue", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2219.0, + "y": 296.0, + "width": 190.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Connect facebook", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "paragraphSpacing": 2.299999952316284, + "textCase": "UPPER", + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:368", + "name": "Page 1", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:369", + "name": "Oval 5", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2131.0, + "y": 275.0, + "width": 61.0, + "height": 61.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.25882354378700256, + "g": 0.40392157435417175, + "b": 0.6980392336845398, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:370", + "name": "Fill 4", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2155.0, + "y": 289.0, + "width": 25.0, + "height": 47.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2131.0, + "y": 275.0, + "width": 61.0, + "height": 61.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.15000000596046448 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 5.0 }, + "radius": 19.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 2131.0, + "y": 275.0, + "width": 342.0, + "height": 61.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:371", + "name": "Invite Friends Button", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:372", + "name": "Group 2", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:374", + "name": "Rectangle 4", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2130.0, + "y": 360.0, + "width": 342.0, + "height": 61.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + }, + { + "opacity": 0.44999998807907104, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0941176488995552, + "g": 0.7882353067398071, + "b": 0.8901960849761963, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "cornerRadius": 30.5 + }, + { + "id": "0:373", + "name": "Rectangle 4", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2130.0, + "y": 360.0, + "width": 342.0, + "height": 61.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + }, + { + "opacity": 0.44999998807907104, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0941176488995552, + "g": 0.7882353067398071, + "b": 0.8901960849761963, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "isMask": true, + "isMaskOutline": true, + "cornerRadius": 30.5 + } + ], + "absoluteBoundingBox": { + "x": 2130.0, + "y": 360.0, + "width": 342.0, + "height": 61.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": false, + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.25 }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 4.0 }, + "radius": 13.0 + } + ] + }, + { + "id": "0:375", + "name": "Invite Friends", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2218.0, + "y": 381.0, + "width": 146.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Invite Friends", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "paragraphSpacing": 2.299999952316284, + "textCase": "UPPER", + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:376", + "name": "Spotify Copy", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:377", + "name": "Spotify", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2130.0, + "y": 360.0, + "width": 61.0, + "height": 61.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0941176488995552, + "g": 0.7882353067398071, + "b": 0.8901960849761963, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:378", + "name": "Group 2", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:379", + "name": "Fill 4", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2139.0, + "y": 377.0, + "width": 44.0, + "height": 18.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 1.2708333730697632 + }, + { + "id": "0:380", + "name": "Fill 6", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2148.0, + "y": 392.0, + "width": 26.0, + "height": 14.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2139.0, + "y": 377.0, + "width": 44.0, + "height": 29.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2130.0, + "y": 360.0, + "width": 61.0, + "height": 61.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [ + { + "suffix": "", + "format": "SVG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2130.0, + "y": 360.0, + "width": 342.0, + "height": 61.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:381", + "name": "Missions", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2134.0, + "y": 469.0, + "width": 341.0, + "height": 560.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "6be58acca970414844633917346f5739ff7ae9af", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:382", + "name": "TabBar", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:382;0:9", + "name": "menu-footer", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2117.0, + "y": 1135.0, + "width": 375.0, + "height": 92.45660400390625 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + }, + { + "blendMode": "NORMAL", + "visible": false, + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { + "x": 0.11798575592716715, + "y": 0.22202727205494194 + }, + { "x": 0.11798575592716715, "y": 0.9860557602006075 }, + { + "x": -0.26402848814566565, + "y": 0.22202727205494194 + } + ], + "gradientStops": [ + { + "color": { + "r": 0.6549019813537598, + "g": 0.2980392277240753, + "b": 0.9490196108818054, + "a": 1.0 + }, + "position": 0.0 + }, + { + "color": { + "r": 0.4588235318660736, + "g": 0.3960784375667572, + "b": 0.9843137264251709, + "a": 1.0 + }, + "position": 1.0 + } + ] + }, + { + "blendMode": "NORMAL", + "visible": false, + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { "x": 0.0, "y": 0.0 }, + { "x": 0.0, "y": 1.0 }, + { "x": -0.5, "y": 0.0 } + ], + "gradientStops": [ + { + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 0.5 }, + "position": 0.0 + }, + { + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.5 }, + "position": 1.0 + } + ] + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.15000000596046448 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 0.0 }, + "radius": 35.0 + } + ] + }, + { + "id": "I0:382;0:13", + "name": "Object", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:382;0:10", + "name": "homeicon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2157.0, + "y": 1161.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "21d91c427ebfba99ab3909151fb10464dae795de", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:382;0:11", + "name": "homeicon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2157.0, + "y": 1161.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "21d91c427ebfba99ab3909151fb10464dae795de", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "isMask": true + }, + { + "id": "I0:382;0:12", + "name": "homeicon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2157.0, + "y": 1161.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5843137502670288, + "g": 0.6235294342041016, + "b": 0.729411780834198, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2157.0, + "y": 1161.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:382;0:14", + "name": "icons/tab bar/stats.*tab", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:382;0:15", + "name": "Oval", + "visible": false, + "type": "ELLIPSE", + "blendMode": "NORMAL", + "opacity": 0.3065243661403656, + "absoluteBoundingBox": { + "x": 2365.0, + "y": 1164.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.847000002861023, + "g": 0.847000002861023, + "b": 0.847000002861023, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:382;0:18", + "name": "Shape", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "EXCLUDE", + "children": [ + { + "id": "I0:382;0:16", + "name": "Path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2368.0, + "y": 1168.0, + "width": 12.526315689086914, + "height": 11.894500732421875 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:382;0:17", + "name": "Path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2373.368408203125, + "y": 1172.4736328125, + "width": 12.526315689086914, + "height": 11.894500732421875 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2368.0, + "y": 1168.0, + "width": 17.894737243652344, + "height": 16.36818504333496 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5843137502670288, + "g": 0.6235294342041016, + "b": 0.729411780834198, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2365.0, + "y": 1164.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:382;0:19", + "name": "plus-icon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2279.0, + "y": 1145.0, + "width": 50.90909194946289, + "height": 56.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "05cf0e11c179692ec2fcb5eff64e817a9596d400", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:382;0:20", + "name": "not published.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2226.0, + "y": 1163.0, + "width": 23.33333396911621, + "height": 23.33333396911621 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "1bee5266944df41f0f6cd87832566d650163ddfe", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:382;0:21", + "name": "learn.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2435.0, + "y": 1168.0, + "width": 24.0, + "height": 21.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "b12d692ccfdf45980c55fc36de927c9ac37f466b", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2117.0, + "y": 1135.0, + "width": 375.0, + "height": 93.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:8" + } + ], + "absoluteBoundingBox": { + "x": 2115.0, + "y": -295.0, + "width": 375.0, + "height": 1523.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "", + "format": "JPG", + "constraint": { "type": "SCALE", "value": 3.0 } + } + ], + "effects": [] + }, + { + "id": "0:383", + "name": "Community Groups", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:384", + "name": "header", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:384;0:23", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2590.0, + "y": -295.0, + "width": 375.0, + "height": 95.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:384;0:24", + "name": "userScore.*middle", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:384;0:25", + "name": "285", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2743.0, + "y": -244.0, + "width": 38.0, + "height": 27.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "285", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 21.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 24.609375, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "I0:384;0:26", + "name": "starIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2791.0, + "y": -242.0, + "width": 22.0, + "height": 22.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "561adcc26e02e562330294d1ef7cb73d7d78b1b5", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2743.0, + "y": -244.0, + "width": 70.0, + "height": 25.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + }, + { + "id": "I0:384;0:27", + "name": "bellIcon.*leading", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2607.0, + "y": -246.22579956054688, + "width": 25.161291122436523, + "height": 29.225807189941406 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "70d7696e0256bf5b87fe826a9142b64539ece51a", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:384;0:28", + "name": "profileIcon.*trailing", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2916.0, + "y": -247.0, + "width": 34.0, + "height": 34.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "1970b23eb7b96f9c734db0864f2478d4c11d5893", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2590.0, + "y": -295.0, + "width": 375.0, + "height": 95.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:22" + }, + { + "id": "0:385", + "name": "Your Groups", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2607.0, + "y": -184.0, + "width": 101.0, + "height": 22.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Your Groups", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:386", + "name": "More Groups", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2607.0, + "y": 4.0, + "width": 105.0, + "height": 22.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "More Groups", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:387", + "name": "Cell1", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:388", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2607.0, + "y": -147.0, + "width": 245.0, + "height": 124.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": false, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10453464835882187 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "cornerRadius": 10.0 + }, + { + "id": "0:389", + "name": "High School Group", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2621.0, + "y": -134.0, + "width": 155.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "High School Group", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:390", + "name": "People Group 1", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:391", + "name": "person 9", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:391;0:188", + "name": "Group 8", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:391;0:190", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2621.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:391;0:189", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2621.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "isMask": true, + "isMaskOutline": true + }, + { + "id": "I0:391;0:191", + "name": "mens-slicked-back-grey-hair", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2618.0, + "y": -79.0, + "width": 47.0, + "height": 47.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "466b9d7e969ee5eae4fa60480890a3c382b99131", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2621.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 2.0 }, + "radius": 5.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 2621.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:187" + }, + { + "id": "0:392", + "name": "person 9", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:392;0:198", + "name": "person/1", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:392;0:198;0:183", + "name": "Group 4 Copy 3", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:392;0:198;0:185", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2645.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:392;0:198;0:184", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2645.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "isMask": true, + "isMaskOutline": true + }, + { + "id": "I0:392;0:198;0:186", + "name": "bearded-men-face-hipster-character-vector-14648253", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2651.0, + "y": -77.0, + "width": 29.0, + "height": 43.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "fa88d58c5f0e4e19ea1f1da0bc095f753c04260c", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2645.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 2.0 }, + "radius": 5.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 2645.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:182" + }, + { + "id": "I0:392;0:199", + "name": "person/frame", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:392;0:199;0:181", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2645.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokeWeight": 2.0, + "strokeAlign": "OUTSIDE", + "effects": [] + }, + { + "id": "I0:392;0:199;0:180", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2645.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokeWeight": 2.0, + "strokeAlign": "OUTSIDE", + "effects": [], + "isMask": true, + "isMaskOutline": true + } + ], + "absoluteBoundingBox": { + "x": 2645.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:179" + } + ], + "absoluteBoundingBox": { + "x": 2645.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:197" + }, + { + "id": "0:393", + "name": "person 9 copy", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:393;0:198", + "name": "person/12", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:393;0:198;0:193", + "name": "Group 7", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:393;0:198;0:195", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2669.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:393;0:198;0:194", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2669.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "isMask": true, + "isMaskOutline": true + }, + { + "id": "I0:393;0:198;0:196", + "name": "images (2)", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2651.0, + "y": -79.0, + "width": 63.0, + "height": 42.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "762e6bf5275df04d86809d5558393e736b689df2", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2669.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 2.0 }, + "radius": 5.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 2669.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:192" + }, + { + "id": "I0:393;0:199", + "name": "person/frame", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:393;0:199;0:181", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2669.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokeWeight": 2.0, + "strokeAlign": "OUTSIDE", + "effects": [] + }, + { + "id": "I0:393;0:199;0:180", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2669.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokeWeight": 2.0, + "strokeAlign": "OUTSIDE", + "effects": [], + "isMask": true, + "isMaskOutline": true + } + ], + "absoluteBoundingBox": { + "x": 2669.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [], + "componentId": "0:179" + } + ], + "absoluteBoundingBox": { + "x": 2669.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:197" + } + ], + "absoluteBoundingBox": { + "x": 2621.0, + "y": -79.0, + "width": 89.0, + "height": 41.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2607.0, + "y": -147.0, + "width": 245.0, + "height": 124.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:394", + "name": "Cell2", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:395", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2864.0, + "y": -147.0, + "width": 245.0, + "height": 124.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": false, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10453464835882187 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "cornerRadius": 10.0 + }, + { + "id": "0:396", + "name": "Programming", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2890.0, + "y": -134.0, + "width": 112.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Programming", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:397", + "name": "People Group 2", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:398", + "name": "person 9 copy 2", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:399", + "name": "person/5", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:399;0:175", + "name": "Group 7", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:399;0:177", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2890.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:399;0:176", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2890.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "isMask": true, + "isMaskOutline": true + }, + { + "id": "I0:399;0:178", + "name": "MV5BMTc0MzY2NjE0Nl5BMl5BanBnXkFtZTYwMDkxMDY0._V1_UY256_CR4,0,172,256_AL_", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2890.0, + "y": -79.0, + "width": 41.0, + "height": 62.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "da827996130fb49beae52d638023a3c521add634", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2890.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 2.0 }, + "radius": 5.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 2890.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:174" + }, + { + "id": "0:400", + "name": "person/frame", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:400;0:181", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2890.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokeWeight": 2.0, + "strokeAlign": "OUTSIDE", + "effects": [] + }, + { + "id": "I0:400;0:180", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2890.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokeWeight": 2.0, + "strokeAlign": "OUTSIDE", + "effects": [], + "isMask": true, + "isMaskOutline": true + } + ], + "absoluteBoundingBox": { + "x": 2890.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:179" + } + ], + "absoluteBoundingBox": { + "x": 2890.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:401", + "name": "person 9 copy 3", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:402", + "name": "person/5", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:402;0:165", + "name": "Group 11", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:402;0:167", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2914.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:402;0:166", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2914.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "isMask": true, + "isMaskOutline": true + }, + { + "id": "I0:402;0:168", + "name": "MV5BMjAwMzc5OTEzOF5BMl5BanBnXkFtZTgwMDc5ODU3MTE@._V1_UX172_CR0,0,172,256_AL_", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2914.0, + "y": -79.0, + "width": 41.0, + "height": 61.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "d3bd9ca71b3fe97e05ddf694a700390c236d4c38", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2914.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 2.0 }, + "radius": 5.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 2914.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:164" + }, + { + "id": "0:403", + "name": "person/frame", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:403;0:181", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2914.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokeWeight": 2.0, + "strokeAlign": "OUTSIDE", + "effects": [] + }, + { + "id": "I0:403;0:180", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2914.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokeWeight": 2.0, + "strokeAlign": "OUTSIDE", + "effects": [], + "isMask": true, + "isMaskOutline": true + } + ], + "absoluteBoundingBox": { + "x": 2914.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:179" + } + ], + "absoluteBoundingBox": { + "x": 2914.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:404", + "name": "person 9 copy 4", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:405", + "name": "person/5", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:405;0:170", + "name": "Group 9 Copy", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:405;0:172", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2938.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:405;0:171", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2938.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "isMask": true, + "isMaskOutline": true + }, + { + "id": "I0:405;0:173", + "name": "download", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2937.0, + "y": -79.0, + "width": 42.0, + "height": 42.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "0ee38c205bd2ebee137b0ff0ba528cf791c37df6", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2938.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 2.0 }, + "radius": 5.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 2938.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:169" + }, + { + "id": "0:406", + "name": "person/frame", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:406;0:181", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2938.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.06165081635117531, + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokeWeight": 2.0, + "strokeAlign": "OUTSIDE", + "effects": [] + }, + { + "id": "I0:406;0:180", + "name": "Oval", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2938.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokeWeight": 2.0, + "strokeAlign": "OUTSIDE", + "effects": [], + "isMask": true, + "isMaskOutline": true + } + ], + "absoluteBoundingBox": { + "x": 2938.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:179" + } + ], + "absoluteBoundingBox": { + "x": 2938.0, + "y": -79.0, + "width": 41.0, + "height": 41.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2890.0, + "y": -79.0, + "width": 89.0, + "height": 41.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2864.0, + "y": -147.0, + "width": 245.0, + "height": 124.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:407", + "name": ".*scrollView", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:408", + "name": "Algorithms", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2607.0, + "y": 77.0, + "width": 92.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Algorithms", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:409", + "name": "Nursing", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2607.0, + "y": 142.0, + "width": 65.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Nursing", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:410", + "name": "Dog Photos", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2607.0, + "y": 207.0, + "width": 94.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Dog Photos", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:411", + "name": "Sports", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2607.0, + "y": 272.0, + "width": 54.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Sports", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:412", + "name": "Band", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2607.0, + "y": 336.0, + "width": 42.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Band", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:413", + "name": "Party time", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2607.0, + "y": 401.0, + "width": 86.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Party time", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:414", + "name": "Line Copy", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2611.0, + "y": 117.0, + "width": 354.0, + "height": 2.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.847000002861023, + "g": 0.847000002861023, + "b": 0.847000002861023, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7372549176216125, + "g": 0.7568627595901489, + "b": 0.7843137383460999, + "a": 1.0 + } + } + ], + "strokeWeight": 1.0, + "strokeAlign": "CENTER", + "strokeCap": "SQUARE", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:415", + "name": "Line Copy 2", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2611.0, + "y": 182.0, + "width": 354.0, + "height": 2.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.847000002861023, + "g": 0.847000002861023, + "b": 0.847000002861023, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7372549176216125, + "g": 0.7568627595901489, + "b": 0.7843137383460999, + "a": 1.0 + } + } + ], + "strokeWeight": 1.0, + "strokeAlign": "CENTER", + "strokeCap": "SQUARE", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:416", + "name": "Line Copy 3", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2611.0, + "y": 247.0, + "width": 354.0, + "height": 2.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.847000002861023, + "g": 0.847000002861023, + "b": 0.847000002861023, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7372549176216125, + "g": 0.7568627595901489, + "b": 0.7843137383460999, + "a": 1.0 + } + } + ], + "strokeWeight": 1.0, + "strokeAlign": "CENTER", + "strokeCap": "SQUARE", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:417", + "name": "Line Copy 4", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2611.0, + "y": 312.0, + "width": 354.0, + "height": 2.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.847000002861023, + "g": 0.847000002861023, + "b": 0.847000002861023, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7372549176216125, + "g": 0.7568627595901489, + "b": 0.7843137383460999, + "a": 1.0 + } + } + ], + "strokeWeight": 1.0, + "strokeAlign": "CENTER", + "strokeCap": "SQUARE", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:418", + "name": "Line Copy 4", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2611.0, + "y": 376.0, + "width": 354.0, + "height": 2.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.847000002861023, + "g": 0.847000002861023, + "b": 0.847000002861023, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.7372549176216125, + "g": 0.7568627595901489, + "b": 0.7843137383460999, + "a": 1.0 + } + } + ], + "strokeWeight": 1.0, + "strokeAlign": "CENTER", + "strokeCap": "SQUARE", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2607.0, + "y": 77.0, + "width": 358.0, + "height": 344.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:419", + "name": "Line", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2590.0, + "y": 42.0, + "width": 187.5, + "height": 1.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.847000002861023, + "g": 0.847000002861023, + "b": 0.847000002861023, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.5176470875740051, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokeWeight": 3.0, + "strokeAlign": "CENTER", + "strokeCap": "SQUARE", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:420", + "name": "TabBar", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:420;0:9", + "name": "menu-footer", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2590.0, + "y": 424.0, + "width": 375.0, + "height": 92.45660400390625 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + }, + { + "blendMode": "NORMAL", + "visible": false, + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { + "x": 0.11798575592716715, + "y": 0.22202727205494194 + }, + { "x": 0.11798575592716715, "y": 0.9860557602006075 }, + { + "x": -0.26402848814566565, + "y": 0.22202727205494194 + } + ], + "gradientStops": [ + { + "color": { + "r": 0.6549019813537598, + "g": 0.2980392277240753, + "b": 0.9490196108818054, + "a": 1.0 + }, + "position": 0.0 + }, + { + "color": { + "r": 0.4588235318660736, + "g": 0.3960784375667572, + "b": 0.9843137264251709, + "a": 1.0 + }, + "position": 1.0 + } + ] + }, + { + "blendMode": "NORMAL", + "visible": false, + "type": "GRADIENT_LINEAR", + "gradientHandlePositions": [ + { "x": 0.0, "y": 0.0 }, + { "x": 0.0, "y": 1.0 }, + { "x": -0.5, "y": 0.0 } + ], + "gradientStops": [ + { + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 0.5 }, + "position": 0.0 + }, + { + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.5 }, + "position": 1.0 + } + ] + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.15000000596046448 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 0.0 }, + "radius": 35.0 + } + ] + }, + { + "id": "I0:420;0:13", + "name": "Object", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:420;0:10", + "name": "homeicon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2630.0, + "y": 450.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "21d91c427ebfba99ab3909151fb10464dae795de", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:420;0:11", + "name": "homeicon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2630.0, + "y": 450.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "21d91c427ebfba99ab3909151fb10464dae795de", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "isMask": true + }, + { + "id": "I0:420;0:12", + "name": "homeicon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2630.0, + "y": 450.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5843137502670288, + "g": 0.6235294342041016, + "b": 0.729411780834198, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2630.0, + "y": 450.86328125, + "width": 26.0, + "height": 24.2734375 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:420;0:14", + "name": "icons/tab bar/stats.*tab", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:420;0:15", + "name": "Oval", + "visible": false, + "type": "ELLIPSE", + "blendMode": "NORMAL", + "opacity": 0.3065243661403656, + "absoluteBoundingBox": { + "x": 2838.0, + "y": 453.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.847000002861023, + "g": 0.847000002861023, + "b": 0.847000002861023, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:420;0:18", + "name": "Shape", + "type": "BOOLEAN_OPERATION", + "blendMode": "PASS_THROUGH", + "booleanOperation": "EXCLUDE", + "children": [ + { + "id": "I0:420;0:16", + "name": "Path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2841.0, + "y": 457.0, + "width": 12.526315689086914, + "height": 11.894500732421875 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:420;0:17", + "name": "Path", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2846.368408203125, + "y": 461.47369384765625, + "width": 12.526315689086914, + "height": 11.894500732421875 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2841.0, + "y": 457.0, + "width": 17.894737243652344, + "height": 16.36818504333496 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "CENTER" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.5843137502670288, + "g": 0.6235294342041016, + "b": 0.729411780834198, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2838.0, + "y": 453.0, + "width": 24.0, + "height": 24.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "effects": [] + }, + { + "id": "I0:420;0:19", + "name": "plus-icon.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2752.0, + "y": 434.0, + "width": 50.90909194946289, + "height": 56.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "05cf0e11c179692ec2fcb5eff64e817a9596d400", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:420;0:20", + "name": "not published.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2699.0, + "y": 452.0, + "width": 23.33333396911621, + "height": 23.33333396911621 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "1bee5266944df41f0f6cd87832566d650163ddfe", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:420;0:21", + "name": "learn.*tab", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2908.0, + "y": 457.0, + "width": 24.0, + "height": 21.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "b12d692ccfdf45980c55fc36de927c9ac37f466b", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 2590.0, + "y": 424.0, + "width": 375.0, + "height": 93.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:8" + }, + { + "id": "0:421", + "name": "Create New", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 2857.0, + "y": -181.0, + "width": 76.0, + "height": 18.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2078431397676468, + "g": 0.48235294222831726, + "b": 0.886274516582489, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Create New", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 14.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": -0.2240000069141388, + "lineHeightPx": 16.40625, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 2590.0, + "y": -295.0, + "width": 375.0, + "height": 812.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "", + "format": "JPG", + "constraint": { "type": "SCALE", "value": 3.0 } + } + ], + "effects": [] + }, + { + "id": "0:422", + "name": "HomeScreenAlt", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:423", + "name": "Top Stack Section", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:424", + "name": "backgroundImage", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1165.0, + "y": -295.0, + "width": 414.0, + "height": 529.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "65337f67361e93ec60270000b045aa826d92a5d8", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:425", + "name": "Group 2", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:426", + "name": "Noam Levine", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1314.5640869140625, + "y": -163.5238037109375, + "width": 115.76923370361328, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Noam Levine", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:427", + "name": "Student at Hanks Hig", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1244.55126953125, + "y": -140.4761962890625, + "width": 256.8974304199219, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Student at Hanks High School", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1244.0, + "y": -164.0, + "width": 258.0, + "height": 44.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:428", + "name": "person", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1331.0, + "y": -251.0, + "width": 85.0, + "height": 82.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "62b79ea6babc1f4ab6b7b3ffde1833016d810a9d", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:429", + "name": "Completion Graph", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:430", + "name": "72%", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1307.0, + "y": -9.882352828979492, + "width": 131.0, + "height": 77.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "72%", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 60.30155944824219, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 70.6658935546875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:431", + "name": "Completed", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1326.815185546875, + "y": 58.44117736816406, + "width": 91.3697509765625, + "height": 20.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.800000011920929, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Completed", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 15.912911415100098, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 18.6479434967041, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": 1307.0, + "y": -10.0, + "width": 131.0, + "height": 88.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:432", + "name": "ScoreCard", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:433", + "name": "Score Bar@3x", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1165.0, + "y": 187.0, + "width": 414.0, + "height": 128.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "ea2cf7390a161fe48fcd63570a39acf952b1eb54", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:434", + "name": "Score: 285", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1309.072021484375, + "y": 227.95040893554688, + "width": 125.85600280761719, + "height": 28.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21548150479793549, + "g": 0.19963327050209045, + "b": 0.19963327050209045, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Score: 285", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "HEIGHT", + "fontSize": 22.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 25.78125, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2 + ], + "styleOverrideTable": { + "2": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2078431397676468, + "g": 0.5372549295425415, + "b": 0.9333333373069763, + "a": 1.0 + } + } + ] + }, + "1": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21548150479793549, + "g": 0.19963327050209045, + "b": 0.19963327050209045, + "a": 1.0 + } + } + ] + } + } + } + ], + "absoluteBoundingBox": { + "x": 1165.0, + "y": 187.0, + "width": 414.0, + "height": 128.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:435", + "name": "profileIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1522.0, + "y": -245.0, + "width": 38.0, + "height": 36.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "1970b23eb7b96f9c734db0864f2478d4c11d5893", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:436", + "name": "bellIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1184.0, + "y": -242.0, + "width": 28.0, + "height": 30.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "70d7696e0256bf5b87fe826a9142b64539ece51a", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1165.0, + "y": -295.0, + "width": 414.0, + "height": 610.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:437", + "name": "Connect Facebook Button", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:438", + "name": "Group 2", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:440", + "name": "Rectangle 4", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1201.0, + "y": 315.0, + "width": 342.0, + "height": 61.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + }, + { + "opacity": 0.5, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.25882354378700256, + "g": 0.40392157435417175, + "b": 0.6980392336845398, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": false, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "cornerRadius": 30.5 + }, + { + "id": "0:439", + "name": "Rectangle 4", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1201.0, + "y": 315.0, + "width": 342.0, + "height": 61.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + }, + { + "opacity": 0.5, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.25882354378700256, + "g": 0.40392157435417175, + "b": 0.6980392336845398, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": false, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "isMask": true, + "isMaskOutline": true, + "cornerRadius": 30.5 + } + ], + "absoluteBoundingBox": { + "x": 1201.0, + "y": 315.0, + "width": 342.0, + "height": 61.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": false, + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.25 }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 4.0 }, + "radius": 13.0 + } + ] + }, + { + "id": "0:441", + "name": "Continue", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1289.0, + "y": 336.0, + "width": 190.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Connect facebook", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "paragraphSpacing": 2.299999952316284, + "textCase": "UPPER", + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:442", + "name": "Page 1", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:443", + "name": "Oval 5", + "type": "ELLIPSE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1201.0, + "y": 315.0, + "width": 61.0, + "height": 61.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.25882354378700256, + "g": 0.40392157435417175, + "b": 0.6980392336845398, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:444", + "name": "Fill 4", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1225.0, + "y": 329.0, + "width": 25.0, + "height": 47.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1201.0, + "y": 315.0, + "width": 61.0, + "height": 61.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.15000000596046448 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 5.0 }, + "radius": 19.0 + } + ] + } + ], + "absoluteBoundingBox": { + "x": 1201.0, + "y": 315.0, + "width": 342.0, + "height": 61.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:445", + "name": "Invite Friends Button", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:446", + "name": "Group 2", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:448", + "name": "Rectangle 4", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1201.0, + "y": 404.0, + "width": 342.0, + "height": 61.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + }, + { + "opacity": 0.44999998807907104, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0941176488995552, + "g": 0.7882353067398071, + "b": 0.8901960849761963, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "cornerRadius": 30.5 + }, + { + "id": "0:447", + "name": "Rectangle 4", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1201.0, + "y": 404.0, + "width": 342.0, + "height": 61.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + }, + { + "opacity": 0.44999998807907104, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0941176488995552, + "g": 0.7882353067398071, + "b": 0.8901960849761963, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": true, + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.10000000149011612 + }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 3.0 }, + "radius": 10.0 + } + ], + "isMask": true, + "isMaskOutline": true, + "cornerRadius": 30.5 + } + ], + "absoluteBoundingBox": { + "x": 1201.0, + "y": 404.0, + "width": 342.0, + "height": 61.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [ + { + "type": "DROP_SHADOW", + "visible": false, + "color": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.25 }, + "blendMode": "NORMAL", + "offset": { "x": 0.0, "y": 4.0 }, + "radius": 13.0 + } + ] + }, + { + "id": "0:449", + "name": "Invite Friends", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1289.0, + "y": 425.0, + "width": 146.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Invite Friends", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "paragraphSpacing": 2.299999952316284, + "textCase": "UPPER", + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:450", + "name": "Spotify Copy", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:451", + "name": "Spotify", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1201.0, + "y": 404.0, + "width": 61.0, + "height": 61.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0941176488995552, + "g": 0.7882353067398071, + "b": 0.8901960849761963, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + }, + { + "id": "0:452", + "name": "Group 2", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:453", + "name": "Fill 4", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1210.0, + "y": 421.0, + "width": 44.0, + "height": 18.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 1.2708333730697632 + }, + { + "id": "0:454", + "name": "Fill 6", + "type": "VECTOR", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 1219.0, + "y": 436.0, + "width": 26.0, + "height": 14.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1210.0, + "y": 421.0, + "width": 44.0, + "height": 29.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1201.0, + "y": 404.0, + "width": 61.0, + "height": 61.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [ + { + "suffix": "", + "format": "SVG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1201.0, + "y": 404.0, + "width": 342.0, + "height": 61.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": 1165.0, + "y": -295.0, + "width": 414.0, + "height": 896.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + }, + { + "id": "0:455", + "name": "LearningOverviewAlt", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:456", + "name": "header", + "type": "INSTANCE", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:456;0:23", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -299.0, + "y": -295.0, + "width": 414.0, + "height": 95.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:456;0:24", + "name": "userScore.*middle", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "I0:456;0:25", + "name": "285", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -130.08799743652344, + "y": -244.0, + "width": 38.0, + "height": 27.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [], + "characters": "285", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 21.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 24.609375, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "I0:456;0:26", + "name": "starIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -77.09599304199219, + "y": -242.0, + "width": 24.28799819946289, + "height": 22.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "561adcc26e02e562330294d1ef7cb73d7d78b1b5", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -130.08799743652344, + "y": -244.0, + "width": 77.27999877929688, + "height": 25.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "effects": [] + }, + { + "id": "I0:456;0:27", + "name": "bellIcon.*leading", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -280.23199462890625, + "y": -246.22579956054688, + "width": 27.778066635131836, + "height": 29.225807189941406 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "70d7696e0256bf5b87fe826a9142b64539ece51a", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + }, + { + "id": "I0:456;0:28", + "name": "profileIcon.*trailing", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 60.90399169921875, + "y": -247.0, + "width": 37.5360107421875, + "height": 34.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "1970b23eb7b96f9c734db0864f2478d4c11d5893", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -299.0, + "y": -295.0, + "width": 414.0, + "height": 95.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [], + "fills": [], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [], + "componentId": "0:22" + }, + { + "id": "0:457", + "name": "Categories", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -276.0, + "y": -135.0, + "width": 87.0, + "height": 22.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Categories", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:458", + "name": "1. Bars / 2. Top Bar / 2. Large / Heading + Search", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:459", + "name": "🅰️ Heading", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -277.0, + "y": -182.0, + "width": 120.0, + "height": 40.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "LEFT" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.014475814066827297, + "g": 0.1713331937789917, + "b": 0.36188071966171265, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Explore", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 32.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.6240000128746033, + "lineHeightPx": 40.0, + "lineHeightPercent": 106.66667175292969, + "lineHeightPercentFontSize": 125.0, + "lineHeightUnit": "PIXELS" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + } + ], + "absoluteBoundingBox": { + "x": -277.0, + "y": -182.0, + "width": 126.0, + "height": 40.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "layoutGrids": [], + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:460", + "name": "Group 2", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:461", + "name": "Group", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:462", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -277.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 8.0 + }, + { + "id": "0:463", + "name": "Careers", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -255.0, + "y": 32.0, + "width": 63.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Careers", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:464", + "name": "simplePaperIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -261.0, + "y": -69.0, + "width": 73.0, + "height": 74.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "2ce8b7c0c797b888993f960fa5e1accfb130705a", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -277.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -277.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:465", + "name": "Group 2 Copy", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:466", + "name": "Group", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:467", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -144.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 8.0 + }, + { + "id": "0:468", + "name": "Majors", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -118.0, + "y": 32.0, + "width": 54.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Majors", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:469", + "name": "simplePaperIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -128.0, + "y": -69.0, + "width": 73.0, + "height": 74.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "2ce8b7c0c797b888993f960fa5e1accfb130705a", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -144.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -144.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:470", + "name": "Group 2 Copy 2", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:471", + "name": "Group", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:472", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -11.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.2078431397676468, + "g": 0.5960784554481506, + "b": 0.9843137264251709, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 8.0 + }, + { + "id": "0:473", + "name": "Colleges", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 7.0, + "y": 32.0, + "width": 69.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Colleges", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:474", + "name": "simplePaperIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 5.0, + "y": -69.0, + "width": 73.0, + "height": 74.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "2ce8b7c0c797b888993f960fa5e1accfb130705a", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -11.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -11.0, + "y": -97.0, + "width": 105.0, + "height": 155.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [] + }, + { + "id": "0:475", + "name": "Continue Learning", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -276.0, + "y": 76.0, + "width": 152.0, + "height": 22.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Continue Learning", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:476", + "name": "View All", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": 41.0, + "y": 80.0, + "width": 58.0, + "height": 18.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.21176470816135406, + "g": 0.5568627715110779, + "b": 0.9490196108818054, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "View All", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 14.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 16.40625, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:477", + "name": "Lesson Big Card", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:478", + "name": "Group 4", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:479", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -268.0, + "y": 124.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.49803921580314636, + "g": 0.21176470816135406, + "b": 0.772549033164978, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 8.0 + }, + { + "id": "0:480", + "name": "Fundamentals of Algo", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -243.0, + "y": 138.0, + "width": 115.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Fundamentals\nof Algorithms", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:481", + "name": "paperIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -234.0, + "y": 198.0, + "width": 97.0, + "height": 97.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "fc1e80e0188ea1eef90949eba199e5d82cc36845", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -268.0, + "y": 124.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -268.0, + "y": 124.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:482", + "name": "Group 5", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:483", + "name": "Lesson Big Card Copy", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:484", + "name": "Group 4", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:485", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -81.0, + "y": 124.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.8500000238418579, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 8.0 + }, + { + "id": "0:486", + "name": "Finance", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -31.0, + "y": 138.0, + "width": 65.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Finance", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:487", + "name": "cashIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -65.0, + "y": 198.0, + "width": 132.0, + "height": 93.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "5afc3234c772299d4b12566e8f0b8229ec78c5d8", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -81.0, + "y": 124.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -81.0, + "y": 124.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -81.0, + "y": 124.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:488", + "name": "Lessons", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -263.0, + "y": 331.0, + "width": 66.0, + "height": 22.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.044722575694322586, + "g": 0.044722575694322586, + "b": 0.044722575694322586, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [ + { + "suffix": "@3x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 3.0 } + }, + { + "suffix": "@2x", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 2.0 } + }, + { + "suffix": "", + "format": "PNG", + "constraint": { "type": "SCALE", "value": 1.0 } + } + ], + "effects": [], + "characters": "Lessons", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "LEFT", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:489", + "name": "Lesson Big Card", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:490", + "name": "Group 4", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:491", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -268.0, + "y": 369.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.49803921580314636, + "g": 0.21176470816135406, + "b": 0.772549033164978, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 8.0 + }, + { + "id": "0:492", + "name": "Fundamentals of Algo", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -243.0, + "y": 383.0, + "width": 115.0, + "height": 44.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Fundamentals\nof Algorithms", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:493", + "name": "paperIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -234.0, + "y": 443.0, + "width": 97.0, + "height": 97.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "fc1e80e0188ea1eef90949eba199e5d82cc36845", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -268.0, + "y": 369.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -268.0, + "y": 369.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + }, + { + "id": "0:494", + "name": "Group 5", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:495", + "name": "Lesson Big Card Copy", + "type": "GROUP", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:496", + "name": "Group 4", + "type": "FRAME", + "blendMode": "PASS_THROUGH", + "children": [ + { + "id": "0:497", + "name": ".*background", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -81.0, + "y": 369.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "opacity": 0.8500000238418579, + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { + "r": 0.5920000076293945, + "g": 0.5920000076293945, + "b": 0.5920000076293945, + "a": 1.0 + } + } + ], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "cornerRadius": 8.0 + }, + { + "id": "0:498", + "name": "Finance", + "type": "TEXT", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -31.0, + "y": 383.0, + "width": 65.0, + "height": 22.0 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [], + "characters": "Finance", + "style": { + "fontFamily": "Sanchez", + "fontPostScriptName": "Sanchez-Regular", + "fontWeight": 400, + "textAutoResize": "WIDTH_AND_HEIGHT", + "fontSize": 17.0, + "textAlignHorizontal": "CENTER", + "textAlignVertical": "TOP", + "letterSpacing": 0.0, + "lineHeightPx": 19.921875, + "lineHeightPercent": 100.0, + "lineHeightUnit": "INTRINSIC_%" + }, + "characterStyleOverrides": [], + "styleOverrideTable": {} + }, + { + "id": "0:499", + "name": "cashIcon", + "type": "RECTANGLE", + "blendMode": "PASS_THROUGH", + "absoluteBoundingBox": { + "x": -65.0, + "y": 443.0, + "width": 132.0, + "height": 93.0 + }, + "constraints": { + "vertical": "SCALE", + "horizontal": "SCALE" + }, + "fills": [ + { + "blendMode": "NORMAL", + "type": "IMAGE", + "scaleMode": "STRETCH", + "imageRef": "5afc3234c772299d4b12566e8f0b8229ec78c5d8", + "imageTransform": [ + [1.0, 0.0, 0.0], + [0.0, 1.0, 0.0] + ] + } + ], + "strokes": [], + "strokeWeight": 0.0, + "strokeAlign": "CENTER", + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -81.0, + "y": 369.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -81.0, + "y": 369.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -81.0, + "y": 369.0, + "width": 165.0, + "height": 200.0 + }, + "constraints": { "vertical": "TOP", "horizontal": "LEFT" }, + "clipsContent": false, + "background": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "visible": false, + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 0.0, "g": 0.0, "b": 0.0, "a": 0.0 }, + "exportSettings": [], + "effects": [] + } + ], + "absoluteBoundingBox": { + "x": -299.0, + "y": -295.0, + "width": 414.0, + "height": 896.0 + }, + "constraints": { "vertical": "SCALE", "horizontal": "SCALE" }, + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 }, + "layoutGrids": [], + "exportSettings": [], + "effects": [] + } + ], + "backgroundColor": { + "r": 0.9490196108818054, + "g": 0.9490196108818054, + "b": 0.9490196108818054, + "a": 1.0 + }, + "prototypeStartNodeID": null, + "prototypeDevice": { "type": "NONE", "rotation": "NONE" }, + "exportSettings": [] + } + ] + }, + "components": { + "0:500": { + "key": "c7b23d056c2da9debe596d4a92050f4924033948", + "name": "iPhone X/Home Indicator/Home Indicator - On Light", + "description": "" + }, + "0:2": { + "key": "b1c57ff7f6ee0ba1fe4b0e0c54078969622e34a5", + "name": "icons/notification/not empty", + "description": "" + }, + "0:8": { + "key": "1f771cc4a99bb6689bad0b8b4c21a5e411d83ed3", + "name": ".*tabBar", + "description": "" + }, + "0:22": { + "key": "718ca4ac0b9fa491e447bd0e76bdcd15ce6dd79e", + "name": "header.*navbar", + "description": "" + }, + "0:29": { + "key": "65d62f8301428854c6430010331277b2b69678bb", + "name": "9. Icons / # Icon Area", + "description": "" + }, + "0:31": { + "key": "d12f058bfcee676096d44d798d8ec910d0ca9942", + "name": "9. Icons / Love", + "description": "" + }, + "0:34": { + "key": "99e70827ac0d9cfd9a4fb6ca50d54a5aeba11e4c", + "name": "3. Buttons / Round / 2. Secondary / 32px", + "description": "" + }, + "0:39": { + "key": "30553d3e3ae6e58b81bbe8c6b133004623b6ca73", + "name": "SmallMajorCard", + "description": "" + }, + "0:43": { + "key": "7c30ef5f34b1d9bbe127d081b0bd8081889f5a3f", + "name": "Bars / Status Bar / iPhone / x / Time - Light", + "description": "" + }, + "0:45": { + "key": "322b26d72591b7da132e0875c38c6e38e1a647c8", + "name": "Bars / Status Bar / iPhone / Light", + "description": "" + }, + "0:60": { + "key": "a72c095407b83c9d272993856ae37d474d8028b4", + "name": "9. Icons / Twitter", + "description": "" + }, + "0:63": { + "key": "0a07952be0375c7d74f12c2c4a919fd9ab38cc1d", + "name": "1. Bars / 2. Top Bar / Overides / Left / Icons", + "description": "" + }, + "0:68": { + "key": "ee8f44b4f8ce96c5ecc7aab010fe626c5d2eda52", + "name": "9. Icons / Facebook", + "description": "" + }, + "0:151": { + "key": "95e60d952c473177f56d0df79ef8704fad4768e1", + "name": "2. UI Views / Tables / Overrides / Right / Text + Icon", + "description": "" + }, + "0:85": { + "key": "b4bd04725357d7a43b9037f25039d5f0f09aa11f", + "name": "2. UI Views / Tables / Overrides / Left / 44 px / Text 16 pt", + "description": "" + }, + "0:75": { + "key": "84a33755d122040e8c88c6ac547290f63a029a8e", + "name": "2. UI Views / Tables / Cell Underline/ 44 px", + "description": "" + }, + "0:81": { + "key": "8b958173ed0a7bbc35f638c46c83923769523dcb", + "name": "1. Bars / 2. Top Bar / Overides / Right / Icon + Link", + "description": "" + }, + "0:89": { + "key": "8cb39a42922d3abe7ddd12e2e05e9471929b9d76", + "name": "1. Bars / 5. Home Indicator", + "description": "" + }, + "0:94": { + "key": "5a155266ed6030fe22e67f9d68d892465a95ccd5", + "name": ".*switch", + "description": "" + }, + "0:97": { + "key": "3c690a7513af5d43a045fe972a87801ccbedffec", + "name": "1. Bars / 2. Top Bar / Overides / Left / Arrow + Link", + "description": "" + }, + "0:103": { + "key": "05db35b5c76e5def3bb1b704cd1d98c6fc3d2c9a", + "name": "2. UI Views / Headings / 3. Mini / 56px / #1", + "description": "" + }, + "0:108": { + "key": "4f6994c59816b6343d24d5c3375e699b0f95558a", + "name": "8. Misc / Line", + "description": "" + }, + "0:110": { + "key": "4bff6bc08728f0e65728352de76513d12c181986", + "name": "2. UI Views / Tables / Overrides / Right / Text + Arrow", + "description": "" + }, + "0:115": { + "key": "e191078d923bd5e254a40b621da53bde252b5634", + "name": "1. Bars / 1. Status Bar / iPhone X", + "description": "" + }, + "0:137": { + "key": "e8bdddfe41ce5a6828b1ab26bfd490095df5b038", + "name": "2. UI Views / Tables / Overrides / Left / 44 px / Text + Icon", + "description": "" + }, + "0:142": { + "key": "59d85f972a248eaffd1cd7e7f8d93f2b12889b60", + "name": "4. Inputs / Switchers / Off", + "description": "" + }, + "0:146": { + "key": "14830da2c09d4dca4a9278d7ccfd3d2f4dc4125e", + "name": "2. UI Views / Tables / Overrides / Right / Switcher + Text", + "description": "" + }, + "0:156": { + "key": "12ca76639bcba83ddfb97787977c3de2642ea0ed", + "name": "icons/tab bar/home", + "description": "" + }, + "0:164": { + "key": "71193324b4a4a2e36777c74f5368d59e6f0bfc7d", + "name": "person/6", + "description": "" + }, + "0:169": { + "key": "be56b40fad9b506e484994acc7fe5eff2a5c3a70", + "name": "person/8", + "description": "" + }, + "0:174": { + "key": "298b82523867f469bd6e7023940f4dc98e1bfa14", + "name": "person/4", + "description": "" + }, + "0:179": { + "key": "572a5098dcd73b909832b63ee7a2a909b3c46c51", + "name": "person/frame", + "description": "" + }, + "0:182": { + "key": "c571a7fd93abee1e9ac71584870bc7e746b9ffd9", + "name": "person/1", + "description": "" + }, + "0:187": { + "key": "0e85b05e8f907c7652bc736c700ddb764f5a54c6", + "name": "person/5", + "description": "" + }, + "0:192": { + "key": "2f8350b67113e44b4941fe932e95e4afd555510d", + "name": "person/12", + "description": "" + }, + "0:197": { + "key": "b82b4e24c087a0c89a6b24cb60e741c348d2734e", + "name": "person/with frame", + "description": "" + } + }, + "schemaVersion": 0, + "styles": { + "0:503": { + "key": "e314b9348a634683239c4c40a53783c65e92c04d", + "name": "0. Transparent", + "styleType": "FILL", + "description": "" + } + }, + "name": "inspyred_demo", + "lastModified": "2020-08-28T23:29:25.424641Z", + "thumbnailUrl": "https://s3-alpha-sig.figma.com/thumbnails/3333269b-c8ec-4f90-9fdc-6d9754aa0260?Expires=1601251200&Signature=VvaObD75BDt16icuo6Cw-DJnNKhH6t9jx2f75viHsWBESACRBwX3~uedmy0U8dRK1CEsU6HDB9jwL84xPRy0jHVoPiTtdtVFcjdRMZTzRH-BCgC5JDBQwJUl2Mky~qyFD-RZCmMYYs2vLSzvHXVvBM1u7yVupY-TZGIbKy1-8EgPrwW3R9Pmwbz5vgVf-zvgyBz4IlEyhBimmCfHqRDpuSqvxmxIABnrsOAqdhDP4aN33uCmKmc7P8GYIhq~9Fy~PO86CLO4CPxi-0HbT1pPKJU9F9HJtOZgTYzSqFSLxb5s-S-bCaJ~GPpmrh6Mbz0mVOCtNNyQ0E8GtxwTRw~S8A__&Key-Pair-Id=APKAINTVSUGEWH5XD5UA", + "version": "438724521", + "role": "owner" +}