diff --git a/.github/ISSUE_TEMPLATE/icon-request.md b/.github/ISSUE_TEMPLATE/icon-request.md index 0d161208..acb1af49 100644 --- a/.github/ISSUE_TEMPLATE/icon-request.md +++ b/.github/ISSUE_TEMPLATE/icon-request.md @@ -2,7 +2,7 @@ name: Icon request about: Requesting a new icon or changes to an existing icon title: 'Icon request: [NAME]' -labels: 'request: icon' +labels: 'request:icon' assignees: '' --- diff --git a/.github/scripts/build_assets/SeleniumRunner.py b/.github/scripts/build_assets/SeleniumRunner.py index da5091ae..9fbb9207 100644 --- a/.github/scripts/build_assets/SeleniumRunner.py +++ b/.github/scripts/build_assets/SeleniumRunner.py @@ -118,10 +118,13 @@ class SeleniumRunner: print("JSON file uploaded.") - def upload_svgs(self, svgs: List[str]): + def upload_svgs(self, svgs: List[str], screenshot_folder: str=""): """ Upload the SVGs provided in folder_info :param svgs: a list of svg Paths that we'll upload to icomoon. + :param screenshot_folder: the name of the screenshot_folder. If + the value is provided, it means the user want to take a screenshot + of each icon. """ try: print("Uploading SVGs...") @@ -133,17 +136,20 @@ class SeleniumRunner: self.click_hamburger_input() - for svg in svgs: + for i in range(len(svgs)): import_btn = self.driver.find_element_by_css_selector( "li.file input[type=file]" ) - import_btn.send_keys(svg) - print(f"Uploaded {svg}") + import_btn.send_keys(svgs[i]) + print(f"Uploaded {svgs[i]}") self.test_for_possible_alert(self.SHORT_WAIT_IN_SEC, "Dismiss") - self.remove_color_from_icon() + self.click_on_just_added_icon(screenshot_folder, i) # take a screenshot of the icons that were just added - self.driver.save_screenshot("new_icons.png"); + new_icons_path = str(Path(screenshot_folder, "new_icons.png").resolve()) + self.driver.save_screenshot(new_icons_path); + + # select all the svgs so that the newly added svg are part of the collection self.click_hamburger_input() select_all_button = WebDriverWait(self.driver, self.LONG_WAIT_IN_SEC).until( ec.element_to_be_clickable((By.XPATH, "//button[text()='Select All']")) @@ -191,38 +197,26 @@ class SeleniumRunner: ) dismiss_btn.click() except SeleniumTimeoutException: - pass + pass # nothing found => everything is good - def remove_color_from_icon(self): + def click_on_just_added_icon(self, screenshot_folder: str, index: int): """ - Remove the color from the most recent uploaded icon. - :return: None. + Click on the most recently added icon so we can remove the colors + and take a snapshot if needed. """ try: recently_uploaded_icon = WebDriverWait(self.driver, self.LONG_WAIT_IN_SEC).until( ec.element_to_be_clickable((By.XPATH, "//div[@id='set0']//mi-box[1]//div")) ) recently_uploaded_icon.click() - except Exception as e: - self.close() - raise e - try: - color_tab = WebDriverWait(self.driver, self.SHORT_WAIT_IN_SEC).until( - ec.element_to_be_clickable((By.CSS_SELECTOR, "div.overlayWindow i.icon-droplet")) - ) - color_tab.click() + self.remove_color_from_icon() - remove_color_btn = self.driver \ - .find_element_by_css_selector("div.overlayWindow i.icon-droplet-cross") - remove_color_btn.click() - except SeleniumTimeoutException: - pass - except Exception as e: - self.close() - raise e + if screenshot_folder: + screenshot_path = str(Path(screenshot_folder, f"screenshot_{index}.png").resolve()) + self.driver.save_screenshot(screenshot_path) + print("Took screenshot and saved it at " + screenshot_path) - try: close_btn = self.driver \ .find_element_by_css_selector("div.overlayWindow i.icon-close") close_btn.click() @@ -230,6 +224,23 @@ class SeleniumRunner: self.close() raise e + def remove_color_from_icon(self): + """ + Remove the color from the most recent uploaded icon. + This is because some SVG have colors in them and we don't want to + force contributors to remove them in case people want the colored SVGs. + The color removal is also necessary so that the Icomoon-generated + icons fit within one font symbol/ligiature. + """ + color_tab = WebDriverWait(self.driver, self.SHORT_WAIT_IN_SEC).until( + ec.element_to_be_clickable((By.CSS_SELECTOR, "div.overlayWindow i.icon-droplet")) + ) + color_tab.click() + + remove_color_btn = self.driver \ + .find_element_by_css_selector("div.overlayWindow i.icon-droplet-cross") + remove_color_btn.click() + def download_icomoon_fonts(self, zip_path: Path): """ Download the icomoon.zip from icomoon.io. diff --git a/.github/scripts/build_assets/util.py b/.github/scripts/build_assets/arg_getters.py similarity index 81% rename from .github/scripts/build_assets/util.py rename to .github/scripts/build_assets/arg_getters.py index 1c31e777..fe2893a2 100644 --- a/.github/scripts/build_assets/util.py +++ b/.github/scripts/build_assets/arg_getters.py @@ -1,8 +1,8 @@ -from pathlib import Path from argparse import ArgumentParser from build_assets.PathResolverAction import PathResolverAction -def get_commandline_args(): + +def get_selenium_runner_args(peek_mode=False): parser = ArgumentParser(description="Upload svgs to Icomoon to create icon files.") parser.add_argument("--headless", @@ -26,8 +26,11 @@ def get_commandline_args(): action=PathResolverAction) parser.add_argument("download_path", - help="The path where you'd like to download the Icomoon files to", + help="The download destination of the Icomoon files", action=PathResolverAction) + if peek_mode: + parser.add_argument("--pr_title", + help="The title of the PR that we are peeking at") return parser.parse_args() \ No newline at end of file diff --git a/.github/scripts/build_assets/filehandler.py b/.github/scripts/build_assets/filehandler.py index 6fc69920..65a1234c 100644 --- a/.github/scripts/build_assets/filehandler.py +++ b/.github/scripts/build_assets/filehandler.py @@ -145,3 +145,24 @@ def rename_extracted_files(extract_path: str): os.replace(dict_["old"], dict_["new"]) print("Files renamed") + + +def create_screenshot_folder(dir, screenshot_name: str="screenshots/"): + """ + Create a screenshots folder in the dir. + :param dir, the dir where we want to create the folder. + :param screenshot_name, the name of the screenshot folder. + :raise Exception if the dir provided is not a directory. + :return the string name of the screenshot folder. + """ + folder = Path(dir).resolve() + if not folder.is_dir(): + raise Exception(f"This is not a dir: {str(folder)}. \ndir must be a valid directory") + + screenshot_folder = Path(folder, screenshot_name) + try: + os.mkdir(screenshot_folder) + except FileExistsError: + print(f"{screenshot_folder} already exist. Script will do nothing.") + finally: + return str(screenshot_folder) diff --git a/.github/scripts/generate_screenshot_markdown.py b/.github/scripts/generate_screenshot_markdown.py new file mode 100644 index 00000000..e5a51613 --- /dev/null +++ b/.github/scripts/generate_screenshot_markdown.py @@ -0,0 +1,10 @@ +import json +import os + + +if __name__ == "__main__": + img_urls_list = json.loads(os.environ["IMG_URLS"]) + template = "![Detailed Screenshot]({})" + markdown = [template.format(img_url) for img_url in img_urls_list] + print("\n\n".join(markdown)) + diff --git a/.github/scripts/icomoon_build.py b/.github/scripts/icomoon_build.py index 6b3eb352..da8f0236 100644 --- a/.github/scripts/icomoon_build.py +++ b/.github/scripts/icomoon_build.py @@ -4,11 +4,11 @@ from selenium.common.exceptions import TimeoutException # pycharm complains that build_assets is an unresolved ref # don't worry about it, the script still runs from build_assets.SeleniumRunner import SeleniumRunner -from build_assets import filehandler, util +from build_assets import filehandler, arg_getters def main(): - args = util.get_commandline_args() + args = arg_getters.get_selenium_runner_args() new_icons = filehandler.find_new_icons(args.devicon_json_path, args.icomoon_json_path) if len(new_icons) == 0: print("No files need to be uploaded. Ending script...") diff --git a/.github/scripts/icomoon_peek.py b/.github/scripts/icomoon_peek.py index 6fd55f59..c5be4acf 100644 --- a/.github/scripts/icomoon_peek.py +++ b/.github/scripts/icomoon_peek.py @@ -1,33 +1,66 @@ +from typing import List +import re +import sys from selenium.common.exceptions import TimeoutException # pycharm complains that build_assets is an unresolved ref # don't worry about it, the script still runs from build_assets.SeleniumRunner import SeleniumRunner -from build_assets import filehandler, util +from build_assets import filehandler, arg_getters def main(): - args = util.get_commandline_args() + args = arg_getters.get_selenium_runner_args(True) new_icons = filehandler.find_new_icons(args.devicon_json_path, args.icomoon_json_path) + + # get only the icon object that has the name matching the pr title + filtered_icons = find_object_added_in_this_pr(new_icons, args.pr_title) + if len(new_icons) == 0: - print("No files need to be uploaded. Ending script...") - return + sys.exit("No files need to be uploaded. Ending script...") + + if len(filtered_icons) == 0: + message = "No icons found matching the icon name in the PR's title.\n" \ + "Ensure that the PR title matches the convention here: \n" \ + "https://github.com/devicons/devicon/blob/master/CONTRIBUTING.md#overview.\n" \ + "Ending script...\n" + sys.exit(message) # print list of new icons print("List of new icons:", *new_icons, sep = "\n") + print("Icons being uploaded:", *filtered_icons, sep = "\n", end='\n\n') runner = None try: runner = SeleniumRunner(args.download_path, args.geckodriver_path, args.headless) - svgs = filehandler.get_svgs_paths(new_icons, args.icons_folder_path) - runner.upload_svgs(svgs) + svgs = filehandler.get_svgs_paths(filtered_icons, args.icons_folder_path) + screenshot_folder = filehandler.create_screenshot_folder("./") + runner.upload_svgs(svgs, screenshot_folder) print("Task completed.") except TimeoutException as e: + print("Selenium Time Out Error: ", e.stacktrace, sep='\n') + except Exception as e: print(e) - print(e.stacktrace) finally: runner.close() +def find_object_added_in_this_pr(icons: List[dict], pr_title: str): + """ + Find the icon name from the PR title. + :param icons, a list of the font objects found in the devicon.json. + :pr_title, the title of the PR that this workflow was called on. + :return a list containing the dictionary with the "name" + entry's value matching the name in the pr_title. + If none can be found, return an empty list. + """ + try: + pattern = re.compile(r"(?<=^new icon: )\w+ (?=\(.+\))", re.I) + icon_name = pattern.findall(pr_title)[0].lower().strip() # should only have one match + return [icon for icon in icons if icon["name"] == icon_name] + except IndexError: # there are no match in the findall() + return [] + + if __name__ == "__main__": main() diff --git a/.github/workflows/build_icons.yml b/.github/workflows/build_icons.yml index 33a764e6..cf1ef97e 100644 --- a/.github/workflows/build_icons.yml +++ b/.github/workflows/build_icons.yml @@ -19,29 +19,42 @@ jobs: pip install -r ./.github/scripts/requirements.txt npm install - name: Executing build and create fonts via icomoon - run: npm run build + run: > + python ./.github/scripts/icomoon_build.py + ./.github/scripts/build_assets/geckodriver-v0.27.0-win64/geckodriver.exe ./icomoon.json + ./devicon.json ./icons ./ --headless - name: Upload geckodriver.log for debugging purposes uses: actions/upload-artifact@v2 - if: ${{failure()}} + if: failure() with: name: geckodriver-log path: ./geckodriver.log - - name: Upload screenshot of the newly made icons - uses: actions/upload-artifact@v2 - if: ${{success()}} - with: - name: new_icons - path: ./new_icons.png - name: Build devicon.min.css - if: ${{ success() }} + if: success() run: npm run build-css + - name: Upload screenshot of the newly made icons + id: imgur_step + uses: devicons/public-upload-to-imgur@v2 + if: success() + with: + path: ./new_icons.png + client_id: ${{secrets.IMGUR_CLIENT_ID}} - name: Create Pull Request - if: ${{ success() }} + if: success() uses: peter-evans/create-pull-request@v3 + env: + MESSAGE: | + Automated font-building task ran by GitHub Actions bot. This PR built new font files and devicon.css file. + + Here are all the files that were built: + + ![Files Built]({0}) + + More information can be found in the GitHub Action logs for this workflow. with: branch: 'master-build-result' base: 'master' commit-message: 'Built new icons, icomoon.json and devicon.css' title: 'bot:build new icons, icomoon.json and devicon.css' - body: 'Automated font-building task ran by GitHub Actions bot' + body: ${{ format(env.MESSAGE, fromJSON(steps.imgur_step.outputs.imgur_url)[0] ) }} delete-branch: true diff --git a/.github/workflows/peek_icons.yml b/.github/workflows/peek_icons.yml index 5bc2953a..140221fe 100644 --- a/.github/workflows/peek_icons.yml +++ b/.github/workflows/peek_icons.yml @@ -16,35 +16,97 @@ jobs: uses: actions/setup-python@v2 with: python-version: 3.8 - - name: Install dependencies (python, pip) + - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r ./.github/scripts/requirements.txt - name: Run icomoon_peek.py - run: npm run peek + env: + PR_TITLE: ${{ github.event.pull_request.title }} + shell: cmd + run: > + python ./.github/scripts/icomoon_peek.py + ./.github/scripts/build_assets/geckodriver-v0.27.0-win64/geckodriver.exe ./icomoon.json + ./devicon.json ./icons ./ --headless --pr_title "%PR_TITLE%" - name: Upload geckodriver.log for debugging purposes uses: actions/upload-artifact@v2 - if: ${{failure()}} + if: failure() with: name: geckodriver-log path: ./geckodriver.log - name: Upload screenshot of the newly made icons - uses: actions/upload-artifact@v2 - if: ${{success()}} + id: icons_overview_img_step + uses: devicons/public-upload-to-imgur@v2 + if: success() with: - name: new_icons - path: ./new_icons.png - # - name: Comment on the PR about the result - # uses: github-actions-up-and-running/pr-comment@v1.0.1 - # with: - # repo-token: ${{ secrets.GITHUB_TOKEN }} - # message: > - # Hi! I'm Devicons' GitHub Actions Bot! - - # I just peeked at the icons that you wanted to add and upload them to the - # [Actions page](https://github.com/devicons/devicon/actions). The maintainers - # will now take a look at it and decide whether to merge your PR. + path: ./screenshots/new_icons.png + client_id: ${{secrets.IMGUR_CLIENT_ID}} + - name: Upload zoomed in screenshot of the newly made icons + id: icons_detailed_img_step + uses: devicons/public-upload-to-imgur@v2 + if: success() + with: + path: ./screenshots/screenshot_*.png + client_id: ${{secrets.IMGUR_CLIENT_ID}} + - name: Generate the markdowns for the screenshot and put it in the DETAILED_IMGS_MARKDOWN env var + if: success() + env: + IMG_URLS: ${{ steps.icons_detailed_img_step.outputs.imgur_urls }} + run: | + echo 'DETAILED_IMGS_MARKDOWN<> $GITHUB_ENV + python ./.github/scripts/generate_screenshot_markdown.py >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV + shell: bash + - name: Comment on the PR about the result + if: success() + uses: github-actions-up-and-running/pr-comment@v1.0.1 + env: + OVERVIEW_IMG_URL: ${{ fromJSON(steps.icons_overview_img_step.outputs.imgur_urls)[0] }} + MESSAGE: | + Hi! - # Cheers :), + I'm Devicons' Peek Bot and I just peeked at the icons that you wanted to add using [icomoon.io](https://icomoon.io/app/#/select). + Here is the result below: + + ![Peeked Icons (top left)]({0}) + + Here are the zoomed-in screenshots of the added icons: + {1} + + Note: If the images don't show up, it's probably because it has been autodeleted by Imgur after 6 months due to our API choice. + + The maintainers will now take a look at it and decide whether to merge your PR. + + Thank you for contributing to Devicon! I hope everything works out and your icons are accepted into the repo. + + Cheers :), - # Bot + Peek Bot + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + message: ${{format(env.MESSAGE, env.OVERVIEW_IMG_URL, env.DETAILED_IMGS_MARKDOWN)}} + - name: Comment on the PR about the result + if: failure() + uses: github-actions-up-and-running/pr-comment@v1.0.1 + env: + MESSAGE: | + Hi! + + I'm Devicons' Peek Bot and it seems we've ran into a problem. I'm supposed to check your svgs but I couldn't do my task due to an issue. + + Can you please double check and fix the possible issues below: + + - Your svgs are named and added correctly to the /icons folder as seen [here](https://github.com/devicons/devicon/blob/master/CONTRIBUTING.md#orgGuidelines). + - Your icon information has been added to the `devicon.json` as seen [here](https://github.com/devicons/devicon/blob/master/CONTRIBUTING.md#updateDevicon) + - Your PR title follows the format seen [here](https://github.com/devicons/devicon/blob/master/CONTRIBUTING.md#overview) + + Once everything is fixed, the maintainers will try again. If I still fail, the maintainers will investigate what cause this problem. + + Thank you for your help :smile: + + Cheers :), + + Peek Bot + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + message: ${{env.MESSAGE}} diff --git a/devicon.json b/devicon.json index fa2c8175..01c3fa8a 100644 --- a/devicon.json +++ b/devicon.json @@ -275,12 +275,21 @@ "original-wordmark" ], "font": [ - "plain", - "plain-wordmark" + "original", + "original-wordmark" ] }, "color": "#205081", - "aliases": [] + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { "name": "bootstrap", @@ -566,12 +575,21 @@ "original-wordmark" ], "font": [ - "plain", - "plain-wordmark" + "original", + "original-wordmark" ] }, "color": "#205081", - "aliases": [] + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { "name": "couchdb", @@ -911,7 +929,12 @@ ] }, "color": "#dd3f24", - "aliases": [] + "aliases": [ + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { "name": "erlang", @@ -2486,12 +2509,21 @@ "original-wordmark" ], "font": [ - "plain", - "plain-wordmark" + "original", + "original-wordmark" ] }, "color": "#205081", - "aliases": [] + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { "name": "ssh", @@ -2504,12 +2536,21 @@ "original-wordmark" ], "font": [ - "plain", - "plain-wordmark" + "original", + "original-wordmark" ] }, "color": "#231F20", - "aliases": [] + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { "name": "stylus", @@ -2643,11 +2684,16 @@ "original" ], "font": [ - "plain" + "original" ] }, "color": "#1da1f2", - "aliases": [] + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] }, { "name": "typescript", diff --git a/devicon.min.css b/devicon.min.css index 25ccdbcf..cffe03c9 100644 --- a/devicon.min.css +++ b/devicon.min.css @@ -1 +1 @@ -@font-face{font-family:"devicon";src:url("fonts/devicon.eot?flyg0o");src:url("fonts/devicon.eot?flyg0o#iefix") format("embedded-opentype"),url("fonts/devicon.ttf?flyg0o") format("truetype"),url("fonts/devicon.woff?flyg0o") format("woff"),url("fonts/devicon.svg?flyg0o#devicon") format("svg");font-weight:normal;font-style:normal;font-display:block}[class^=devicon-],[class*=" devicon-"]{font-family:"devicon" !important;speak:never;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.devicon-woocommerce-plain-wordmark:before{content:""}.devicon-woocommerce-plain:before{content:""}.devicon-typo3-plain-wordmark:before{content:""}.devicon-typo3-plain:before{content:""}.devicon-premierepro-plain:before{content:""}.devicon-nestjs-plain-wordmark:before{content:""}.devicon-nestjs-plain:before{content:""}.devicon-materialui-plain:before{content:""}.devicon-kotlin-plain-wordmark:before{content:""}.devicon-kotlin-plain:before{content:""}.devicon-jenkins-plain:before{content:""}.devicon-jenkins-line:before{content:""}.devicon-haxe-plain:before{content:""}.devicon-gatsby-plain-wordmark:before{content:""}.devicon-gatsby-plain:before{content:""}.devicon-flutter-plain:before{content:""}.devicon-composer-line-wordmark:before,.devicon-composer-plain-wordmark:before{content:""}.devicon-composer-line:before,.devicon-composer-plain:before{content:""}.devicon-aftereffects-plain:before{content:""}.devicon-yunohost-plain:before{content:""}.devicon-redux-original:before,.devicon-redux-plain:before{content:""}.devicon-clojurescript-plain:before{content:""}.devicon-clojure-line:before,.devicon-clojure-plain:before{content:""}.devicon-mocha-plain:before{content:""}.devicon-haskell-plain:before{content:""}.devicon-haskell-plain-wordmark:before{content:""}.devicon-codepen-original-wordmark:before{content:""}.devicon-codepen-plain:before,.devicon-codepen-original:before{content:""}.devicon-groovy-plain:before{content:""}.devicon-rust-plain:before{content:""}.devicon-scala-plain-wordmark:before{content:""}.devicon-scala-plain:before{content:""}.devicon-grails-plain:before{content:""}.devicon-sketch-line-wordmark:before{content:""}.devicon-sketch-line:before{content:""}.devicon-npm-original-wordmark:before{content:""}.devicon-ionic-original-wordmark:before{content:""}.devicon-ionic-original:before{content:""}.devicon-ember-original-wordmark:before{content:""}.devicon-electron-original-wordmark:before{content:""}.devicon-electron-original:before{content:""}.devicon-vagrant-plain-wordmark:before{content:""}.devicon-vagrant-plain:before{content:""}.devicon-yarn-plain-wordmark:before{content:""}.devicon-yarn-plain:before{content:""}.devicon-handlebars-plain-wordmark:before{content:""}.devicon-handlebars-plain:before{content:""}.devicon-couchdb-plain-wordmark:before{content:""}.devicon-couchdb-plain:before{content:""}.devicon-behance-plain-wordmark:before{content:""}.devicon-behance-plain:before{content:""}.devicon-linkedin-plain-wordmark:before{content:""}.devicon-linkedin-plain:before{content:""}.devicon-ceylon-plain:before{content:""}.devicon-elm-plain-wordmark:before{content:""}.devicon-elm-plain:before{content:""}.devicon-cakephp-plain-wordmark:before{content:""}.devicon-cakephp-plain:before{content:""}.devicon-stylus-original:before{content:""}.devicon-express-original-wordmark:before{content:""}.devicon-express-original:before{content:""}.devicon-devicon-plain-wordmark:before{content:""}.devicon-devicon-plain:before{content:""}.devicon-intellij-plain-wordmark:before{content:""}.devicon-intellij-plain:before{content:""}.devicon-pycharm-plain-wordmark:before{content:""}.devicon-pycharm-plain:before{content:""}.devicon-rubymine-plain-wordmark:before{content:""}.devicon-rubymine-plain:before{content:""}.devicon-webstorm-plain-wordmark:before{content:""}.devicon-webstorm-plain:before{content:""}.devicon-tomcat-line-wordmark:before{content:""}.devicon-tomcat-line:before{content:""}.devicon-vuejs-line-wordmark:before{content:""}.devicon-vuejs-line:before{content:""}.devicon-vuejs-plain-wordmark:before{content:""}.devicon-vuejs-plain:before{content:""}.devicon-swift-plain-wordmark:before{content:""}.devicon-swift-plain:before{content:""}.devicon-webpack-plain-wordmark:before{content:""}.devicon-webpack-plain:before{content:""}.devicon-visualstudio-plain-wordmark:before{content:""}.devicon-visualstudio-plain:before{content:""}.devicon-slack-plain-wordmark:before{content:""}.devicon-slack-plain:before{content:""}.devicon-sequelize-plain-wordmark:before{content:""}.devicon-sequelize-plain:before{content:""}.devicon-typescript-plain:before,.devicon-typescript-original:before{content:""}.devicon-babel-plain:before,.devicon-babel-original:before{content:""}.devicon-facebook-plain:before,.devicon-facebook-original:before{content:""}.devicon-google-plain-wordmark:before,.devicon-google-original-wordmark:before{content:""}.devicon-google-plain:before,.devicon-google-original:before{content:""}.devicon-twitter-original:before{content:""}.devicon-mocha:before{content:""}.devicon-jasmine-plain:before{content:""}.devicon-jasmine-wordmark:before{content:""}.devicon-gatling-plain:before{content:""}.devicon-gatling-plain-wordmark:before{content:""}.devicon-phpstorm-plain:before{content:""}.devicon-phpstorm-plain-wordmark:before{content:""}.devicon-sourcetree-original:before{content:""}.devicon-sourcetree-original-wordmark:before{content:""}.devicon-ssh-original:before{content:""}.devicon-ssh-original-wordmark:before{content:""}.devicon-jeet-plain:before{content:""}.devicon-jeet-plain-wordmark:before{content:""}.devicon-gitlab-plain:before{content:""}.devicon-gitlab-plain-wordmark:before{content:""}.devicon-github-original:before,.devicon-github-plain:before{content:""}.devicon-github-original-wordmark:before{content:""}.devicon-d3js-plain:before{content:""}.devicon-d3js-original:before{content:""}.devicon-confluence-original:before{content:""}.devicon-confluence-original-wordmark:before{content:""}.devicon-bitbucket-original:before{content:""}.devicon-bitbucket-original-wordmark:before{content:""}.devicon-gradle-plain:before{content:""}.devicon-gradle-plain-wordmark:before{content:""}.devicon-cucumber-plain:before{content:""}.devicon-cucumber-plain-wordmark:before{content:""}.devicon-protractor-plain:before{content:""}.devicon-protractor-plain-wordmark:before{content:""}.devicon-safari-line-wordmark:before{content:""}.devicon-safari-line:before{content:""}.devicon-safari-plain-wordmark:before{content:""}.devicon-safari-plain:before{content:""}.devicon-jetbrains-plain:before,.devicon-jetbrains-line:before,.devicon-jetbrains-line-wordmark:before,.devicon-jetbrains-plain-wordmark:before{content:""}.devicon-django-line:before,.devicon-django-line-wordmark:before{content:""}.devicon-django-plain:before,.devicon-django-plain-wordmark:before{content:""}.devicon-gimp-plain:before{content:""}.devicon-redhat-plain-wordmark:before{content:""}.devicon-redhat-plain:before{content:""}.devicon-cplusplus-line:before,.devicon-cplusplus-line-wordmark:before{content:""}.devicon-cplusplus-plain:before,.devicon-cplusplus-plain-wordmark:before{content:""}.devicon-csharp-line:before,.devicon-csharp-line-wordmark:before{content:""}.devicon-csharp-plain:before,.devicon-csharp-plain-wordmark:before{content:""}.devicon-c-line:before,.devicon-c-line-wordmark:before{content:""}.devicon-c-plain:before,.devicon-c-plain-wordmark:before{content:""}.devicon-nodewebkit-line-wordmark:before{content:""}.devicon-nodewebkit-line:before{content:""}.devicon-nodewebkit-plain-wordmark:before{content:""}.devicon-nodewebkit-plain:before{content:""}.devicon-nginx-original:before,.devicon-nginx-original-wordmark:before,.devicon-nginx-plain:before,.devicon-nginx-plain-wordmark:before{content:""}.devicon-erlang-plain-wordmark:before{content:""}.devicon-erlang-plain:before{content:""}.devicon-doctrine-line-wordmark:before{content:""}.devicon-doctrine-line:before{content:""}.devicon-doctrine-plain-wordmark:before{content:""}.devicon-doctrine-plain:before{content:""}.devicon-apache-line-wordmark:before{content:""}.devicon-apache-line:before{content:""}.devicon-apache-plain-wordmark:before{content:""}.devicon-apache-plain:before{content:""}.devicon-go-line:before{content:""}.devicon-redis-plain-wordmark:before{content:""}.devicon-redis-plain:before{content:""}.devicon-meteor-plain-wordmark:before{content:""}.devicon-meteor-plain:before{content:""}.devicon-heroku-line-wordmark:before,.devicon-heroku-original-wordmark:before{content:""}.devicon-heroku-line:before,.devicon-heroku-original:before{content:""}.devicon-heroku-plain-wordmark:before{content:""}.devicon-heroku-plain:before{content:""}.devicon-go-plain:before{content:""}.devicon-docker-plain-wordmark:before{content:""}.devicon-docker-plain:before{content:""}.devicon-symfony-original-wordmark:before,.devicon-symfony-plain-wordmark:before{content:""}.devicon-symfony-original:before,.devicon-symfony-plain:before{content:""}.devicon-react-original-wordmark:before,.devicon-react-plain-wordmark:before{content:""}.devicon-react-original:before,.devicon-react-plain:before{content:""}.devicon-amazonwebservices-original:before,.devicon-amazonwebservices-plain:before{content:""}.devicon-amazonwebservices-plain-wordmark:before{content:""}.devicon-android-plain-wordmark:before{content:""}.devicon-android-plain:before{content:""}.devicon-angularjs-plain-wordmark:before{content:""}.devicon-angularjs-plain:before{content:""}.devicon-appcelerator-original:before,.devicon-appcelerator-plain:before{content:""}.devicon-appcelerator-plain-wordmark:before{content:""}.devicon-apple-original:before,.devicon-apple-plain:before{content:""}.devicon-atom-original-wordmark:before,.devicon-atom-plain-wordmark:before{content:""}.devicon-atom-original:before,.devicon-atom-plain:before{content:""}.devicon-backbonejs-plain-wordmark:before{content:""}.devicon-backbonejs-plain:before{content:""}.devicon-bootstrap-plain-wordmark:before{content:""}.devicon-bootstrap-plain:before{content:""}.devicon-bower-line-wordmark:before{content:""}.devicon-bower-line:before{content:""}.devicon-bower-plain-wordmark:before{content:""}.devicon-bower-plain:before{content:""}.devicon-chrome-plain-wordmark:before{content:""}.devicon-chrome-plain:before{content:""}.devicon-codeigniter-plain-wordmark:before{content:""}.devicon-codeigniter-plain:before{content:""}.devicon-coffeescript-original-wordmark:before,.devicon-coffeescript-plain-wordmark:before{content:""}.devicon-coffeescript-original:before,.devicon-coffeescript-plain:before{content:""}.devicon-css3-plain-wordmark:before{content:""}.devicon-css3-plain:before{content:""}.devicon-debian-plain-wordmark:before{content:""}.devicon-debian-plain:before{content:""}.devicon-dot-net-plain-wordmark:before{content:""}.devicon-dot-net-plain:before{content:""}.devicon-drupal-plain-wordmark:before{content:""}.devicon-drupal-plain:before{content:""}.devicon-firefox-plain-wordmark:before{content:""}.devicon-firefox-plain:before{content:""}.devicon-foundation-plain-wordmark:before{content:""}.devicon-foundation-plain:before{content:""}.devicon-git-plain-wordmark:before{content:""}.devicon-git-plain:before{content:""}.devicon-grunt-line-wordmark:before{content:""}.devicon-grunt-line:before{content:""}.devicon-grunt-plain-wordmark:before{content:""}.devicon-grunt-plain:before{content:""}.devicon-gulp-plain:before{content:""}.devicon-html5-plain-wordmark:before{content:""}.devicon-html5-plain:before{content:""}.devicon-ie10-original:before,.devicon-ie10-plain:before{content:""}.devicon-illustrator-line:before{content:""}.devicon-illustrator-plain:before{content:""}.devicon-inkscape-plain-wordmark:before{content:""}.devicon-inkscape-plain:before{content:""}.devicon-java-plain-wordmark:before{content:""}.devicon-java-plain:before{content:""}.devicon-javascript-plain:before{content:""}.devicon-jquery-plain-wordmark:before{content:""}.devicon-jquery-plain:before{content:""}.devicon-krakenjs-plain-wordmark:before{content:""}.devicon-krakenjs-plain:before{content:""}.devicon-laravel-plain-wordmark:before{content:""}.devicon-laravel-plain:before{content:""}.devicon-less-plain-wordmark:before{content:""}.devicon-linux-plain:before{content:""}.devicon-mongodb-plain-wordmark:before{content:""}.devicon-mongodb-plain:before{content:""}.devicon-moodle-plain-wordmark:before{content:""}.devicon-moodle-plain:before{content:""}.devicon-mysql-plain-wordmark:before{content:""}.devicon-mysql-plain:before{content:""}.devicon-nodejs-plain-wordmark:before{content:""}.devicon-nodejs-plain:before{content:""}.devicon-oracle-original:before,.devicon-oracle-plain:before{content:""}.devicon-photoshop-line:before{content:""}.devicon-photoshop-plain:before{content:""}.devicon-php-plain:before{content:""}.devicon-postgresql-plain-wordmark:before{content:""}.devicon-postgresql-plain:before{content:""}.devicon-python-plain-wordmark:before{content:""}.devicon-python-plain:before{content:""}.devicon-rails-plain-wordmark:before{content:""}.devicon-rails-plain:before{content:""}.devicon-ruby-plain-wordmark:before{content:""}.devicon-ruby-plain:before{content:""}.devicon-sass-original:before,.devicon-sass-plain:before{content:""}.devicon-travis-plain-wordmark:before{content:""}.devicon-travis-plain:before{content:""}.devicon-trello-plain-wordmark:before{content:""}.devicon-trello-plain:before{content:""}.devicon-ubuntu-plain-wordmark:before{content:""}.devicon-ubuntu-plain:before{content:""}.devicon-vim-plain:before{content:""}.devicon-windows8-original-wordmark:before,.devicon-windows8-plain-wordmark:before{content:""}.devicon-windows8-original:before,.devicon-windows8-plain:before{content:""}.devicon-wordpress-plain-wordmark:before{content:""}.devicon-wordpress-plain:before{content:""}.devicon-yii-plain-wordmark:before{content:""}.devicon-yii-plain:before{content:""}.devicon-zend-plain-wordmark:before{content:""}.devicon-zend-plain:before{content:""}.devicon-aftereffects-plain.colored{color:#1f0740}.devicon-amazonwebservices-original.colored,.devicon-amazonwebservices-plain-wordmark.colored,.devicon-amazonwebservices-plain.colored{color:#f7a80d}.devicon-android-plain.colored,.devicon-android-plain-wordmark.colored{color:#a4c439}.devicon-angularjs-plain.colored,.devicon-angularjs-plain-wordmark.colored{color:#c4473a}.devicon-apache-plain.colored,.devicon-apache-plain-wordmark.colored,.devicon-apache-line.colored,.devicon-apache-line-wordmark.colored{color:#303284}.devicon-appcelerator-original.colored,.devicon-appcelerator-plain-wordmark.colored,.devicon-appcelerator-plain.colored{color:#ac162c}.devicon-apple-original.colored,.devicon-apple-plain.colored{color:#000}.devicon-atom-original.colored,.devicon-atom-original-wordmark.colored,.devicon-atom-plain.colored,.devicon-atom-plain-wordmark.colored{color:#67595d}.devicon-babel-plain.colored,.devicon-babel-original.colored{color:#f9dc3e}.devicon-backbonejs-plain.colored,.devicon-backbonejs-plain-wordmark.colored{color:#002a41}.devicon-behance-plain.colored,.devicon-behance-plain-wordmark.colored{color:#0071e0}.devicon-bitbucket-plain.colored,.devicon-bitbucket-plain-wordmark.colored{color:#205081}.devicon-bootstrap-plain.colored,.devicon-bootstrap-plain-wordmark.colored{color:#59407f}.devicon-bower-plain.colored,.devicon-bower-plain-wordmark.colored,.devicon-bower-line.colored,.devicon-bower-line-wordmark.colored{color:#ef5734}.devicon-c-plain.colored,.devicon-c-plain-wordmark.colored,.devicon-c-line.colored,.devicon-c-line-wordmark.colored,.devicon-c-plain-wordmark.colored,.devicon-c-line-wordmark.colored{color:#03599c}.devicon-cakephp-plain.colored,.devicon-cakephp-plain-wordmark.colored{color:#d43d44}.devicon-ceylon-plain.colored{color:#ab710a}.devicon-chrome-plain.colored,.devicon-chrome-plain-wordmark.colored{color:#ce4e4e}.devicon-clojure-line.colored,.devicon-clojure-plain.colored,.devicon-clojure-plain.colored{color:#5881d8}.devicon-clojurescript-plain.colored{color:#96ca4b}.devicon-codeigniter-plain.colored,.devicon-codeigniter-plain-wordmark.colored{color:#ee4323}.devicon-codepen-plain.colored,.devicon-codepen-plain-wordmark.colored,.devicon-codepen-original.colored{color:#231f20}.devicon-coffeescript-original.colored,.devicon-coffeescript-original-wordmark.colored,.devicon-coffeescript-plain.colored,.devicon-coffeescript-plain-wordmark.colored{color:#28334c}.devicon-composer-line.colored,.devicon-composer-line-wordmark.colored,.devicon-composer-plain.colored,.devicon-composer-plain-wordmark.colored{color:#000}.devicon-confluence-plain.colored,.devicon-confluence-plain-wordmark.colored{color:#205081}.devicon-couchdb-plain.colored,.devicon-couchdb-plain-wordmark.colored{color:#e42528}.devicon-cplusplus-plain.colored,.devicon-cplusplus-plain-wordmark.colored,.devicon-cplusplus-line.colored,.devicon-cplusplus-line-wordmark.colored,.devicon-cplusplus-plain-wordmark.colored,.devicon-cplusplus-line-wordmark.colored{color:#9c033a}.devicon-csharp-plain.colored,.devicon-csharp-plain-wordmark.colored,.devicon-csharp-line.colored,.devicon-csharp-line-wordmark.colored,.devicon-csharp-plain-wordmark.colored,.devicon-csharp-line-wordmark.colored{color:#68217a}.devicon-css3-plain.colored,.devicon-css3-plain-wordmark.colored{color:#3d8fc6}.devicon-cucumber-plain.colored,.devicon-cucumber-plain-wordmark.colored{color:#00a818}.devicon-d3js-plain.colored{color:#f7974e}.devicon-debian-plain.colored,.devicon-debian-plain-wordmark.colored{color:#a80030}.devicon-devicon-plain.colored,.devicon-devicon-plain-wordmark.colored{color:#60be86}.devicon-django-plain.colored,.devicon-django-plain-wordmark.colored,.devicon-django-line.colored,.devicon-django-line-wordmark.colored,.devicon-django-plain-wordmark.colored,.devicon-django-line-wordmark.colored{color:#003a2b}.devicon-docker-plain.colored,.devicon-docker-plain-wordmark.colored{color:#019bc6}.devicon-doctrine-plain.colored,.devicon-doctrine-plain-wordmark.colored,.devicon-doctrine-line.colored,.devicon-doctrine-line-wordmark.colored{color:#f56d39}.devicon-dot-net-plain.colored,.devicon-dot-net-plain-wordmark.colored{color:#1384c8}.devicon-drupal-plain.colored,.devicon-drupal-plain-wordmark.colored{color:#0073ba}.devicon-electron-original.colored,.devicon-electron-original-wordmark.colored{color:#47848f}.devicon-elm-plain.colored,.devicon-elm-plain-wordmark.colored{color:#34495e}.devicon-ember-original-wordmark.colored{color:#dd3f24}.devicon-erlang-plain.colored,.devicon-erlang-plain-wordmark.colored{color:#a90533}.devicon-express-original.colored,.devicon-express-original-wordmark.colored{color:#444}.devicon-facebook-plain.colored,.devicon-facebook-original.colored{color:#3d5a98}.devicon-firefox-plain.colored,.devicon-firefox-plain-wordmark.colored{color:#dd732a}.devicon-flutter-plain.colored{color:#3fb6d3}.devicon-foundation-plain.colored,.devicon-foundation-plain-wordmark.colored{color:#008cba}.devicon-gatling-plain.colored,.devicon-gatling-plain-wordmark.colored{color:#e77500}.devicon-gatsby-plain.colored,.devicon-gatsby-plain-wordmark.colored{color:#64328b}.devicon-gimp-plain.colored{color:#716955}.devicon-git-plain.colored,.devicon-git-plain-wordmark.colored{color:#f34f29}.devicon-github-original.colored,.devicon-github-original-wordmark.colored,.devicon-github-plain.colored{color:#181616}.devicon-gitlab-plain.colored,.devicon-gitlab-plain-wordmark.colored{color:#e24329}.devicon-go-plain.colored,.devicon-go-line.colored{color:#000}.devicon-google-plain.colored,.devicon-google-plain-wordmark.colored,.devicon-google-original.colored,.devicon-google-original-wordmark.colored{color:#587dbd}.devicon-gradle-plain.colored,.devicon-gradle-plain-wordmark.colored{color:#02303a}.devicon-grails-plain.colored{color:#feb672}.devicon-groovy-plain.colored{color:#619cbc}.devicon-grunt-plain.colored,.devicon-grunt-plain-wordmark.colored,.devicon-grunt-line.colored,.devicon-grunt-line-wordmark.colored{color:#fcaa1a}.devicon-gulp-plain.colored{color:#eb4a4b}.devicon-haskell-plain.colored,.devicon-haskell-plain-wordmark.colored{color:#5e5185}.devicon-handlebars-plain.colored,.devicon-handlebars-plain-wordmark.colored{color:#000}.devicon-haxe-plain.colored{color:#ea8220}.devicon-heroku-original.colored,.devicon-heroku-original-wordmark.colored,.devicon-heroku-plain.colored,.devicon-heroku-plain-wordmark.colored,.devicon-heroku-line.colored,.devicon-heroku-line-wordmark.colored,.devicon-heroku-original.colored,.devicon-heroku-original-wordmark.colored{color:#6762a6}.devicon-html5-plain.colored,.devicon-html5-plain-wordmark.colored{color:#e54d26}.devicon-ie10-original.colored,.devicon-ie10-plain.colored{color:#1ebbee}.devicon-illustrator-plain.colored,.devicon-illustrator-line.colored{color:#faa625}.devicon-inkscape-plain.colored,.devicon-inkscape-plain-wordmark.colored{color:#000}.devicon-intellij-plain.colored,.devicon-intellij-plain-wordmark.colored{color:#136ba2}.devicon-ionic-original.colored,.devicon-ionic-original-wordmark.colored{color:#4e8ef7}.devicon-jasmine-plain.colored,.devicon-jasmine-plain-wordmark.colored{color:#8a4182}.devicon-java-plain.colored,.devicon-java-plain-wordmark.colored{color:#ea2d2e}.devicon-javascript-plain.colored{color:#f0db4f}.devicon-jeet-plain.colored,.devicon-jeet-plain-wordmark.colored{color:#ff664a}.devicon-jenkins-line.colored,.devicon-jenkins-plain.colored{color:#f0d6b7}.devicon-jetbrains-plain.colored,.devicon-jetbrains-plain-wordmark.colored,.devicon-jetbrains-line.colored,.devicon-jetbrains-line-wordmark.colored,.devicon-jetbrains-line.colored,.devicon-jetbrains-line-wordmark.colored,.devicon-jetbrains-plain-wordmark.colored{color:#f68b1f}.devicon-jquery-plain.colored,.devicon-jquery-plain-wordmark.colored{color:#0769ad}.devicon-kotlin-plain.colored,.devicon-kotlin-plain-wordmark.colored{color:#7c6db2}.devicon-krakenjs-plain.colored,.devicon-krakenjs-plain-wordmark.colored{color:#0081c2}.devicon-laravel-plain.colored,.devicon-laravel-plain-wordmark.colored{color:#fd4f31}.devicon-less-plain-wordmark.colored{color:#2a4d80}.devicon-linkedin-plain.colored,.devicon-linkedin-plain-wordmark.colored{color:#0076b2}.devicon-linux-plain.colored{color:#000}.devicon-materialui-plain.colored{color:#1fa6ca}.devicon-meteor-plain.colored,.devicon-meteor-plain-wordmark.colored{color:#df5052}.devicon-mocha-plain.colored{color:#8d6748}.devicon-mongodb-plain.colored,.devicon-mongodb-plain-wordmark.colored{color:#4faa41}.devicon-moodle-plain.colored,.devicon-moodle-plain-wordmark.colored{color:#f7931e}.devicon-mysql-plain.colored,.devicon-mysql-plain-wordmark.colored{color:#00618a}.devicon-nestjs-plain.colored,.devicon-nestjs-plain-wordmark.colored{color:#df234f}.devicon-nginx-original.colored,.devicon-nginx-original-wordmark.colored,.devicon-nginx-plain.colored,.devicon-nginx-plain-wordmark.colored,.devicon-nginx-original-wordmark.colored,.devicon-nginx-plain.colored,.devicon-nginx-plain-wordmark.colored{color:#090}.devicon-nodejs-plain.colored,.devicon-nodejs-plain-wordmark.colored{color:#83cd29}.devicon-nodewebkit-plain.colored,.devicon-nodewebkit-plain-wordmark.colored,.devicon-nodewebkit-line.colored,.devicon-nodewebkit-line-wordmark.colored{color:#3d3b47}.devicon-npm-original-wordmark.colored{color:#cb3837}.devicon-oracle-original.colored,.devicon-oracle-plain.colored{color:#ea1b22}.devicon-photoshop-plain.colored,.devicon-photoshop-line.colored{color:#80b5e2}.devicon-php-plain.colored{color:#6181b6}.devicon-phpstorm-plain.colored,.devicon-phpstorm-plain-wordmark.colored{color:#5058a6}.devicon-postgresql-plain.colored,.devicon-postgresql-plain-wordmark.colored{color:#336791}.devicon-premierepro-plain.colored{color:#2a0634}.devicon-protractor-plain.colored,.devicon-protractor-plain-wordmark.colored{color:#b7111d}.devicon-pycharm-plain.colored,.devicon-pycharm-plain-wordmark.colored{color:#4d8548}.devicon-python-plain.colored,.devicon-python-plain-wordmark.colored{color:#ffd845}.devicon-rails-plain.colored,.devicon-rails-plain-wordmark.colored{color:#a62c46}.devicon-react-original.colored,.devicon-react-original-wordmark.colored,.devicon-react-plain.colored,.devicon-react-plain-wordmark.colored{color:#61dafb}.devicon-redhat-plain.colored,.devicon-redhat-plain-wordmark.colored{color:#e93442}.devicon-redis-plain.colored,.devicon-redis-plain-wordmark.colored{color:#d82c20}.devicon-redux-original.colored,.devicon-redux-plain.colored{color:#764abc}.devicon-ruby-plain.colored,.devicon-ruby-plain-wordmark.colored{color:#d91404}.devicon-rubymine-plain.colored,.devicon-rubymine-plain-wordmark.colored{color:#c12c4c}.devicon-rust-plain.colored{color:#000}.devicon-safari-plain.colored,.devicon-safari-plain-wordmark.colored,.devicon-safari-line-wordmark.colored,.devicon-safari-line.colored{color:#1b88ca}.devicon-sass-original.colored,.devicon-sass-plain.colored{color:#c69}.devicon-scala-plain.colored,.devicon-scala-plain-wordmark.colored{color:#de3423}.devicon-sequelize-plain.colored,.devicon-sequelize-plain-wordmark.colored,.devicon-sequelize-plain.colored,.devicon-sequelize-plain-wordmark.colored{color:#3b4b72}.devicon-sketch-line.colored,.devicon-sketch-line-wordmark.colored{color:#fdad00}.devicon-slack-plain.colored,.devicon-slack-plain-wordmark.colored{color:#2d333a}.devicon-sourcetree-plain.colored,.devicon-sourcetree-plain-wordmark.colored{color:#205081}.devicon-ssh-plain.colored,.devicon-ssh-plain-wordmark.colored{color:#231f20}.devicon-stylus-original.colored{color:#333}.devicon-swift-plain.colored,.devicon-swift-plain-wordmark.colored{color:#f05138}.devicon-symfony-original.colored,.devicon-symfony-original-wordmark.colored,.devicon-symfony-plain.colored,.devicon-symfony-plain-wordmark.colored{color:#1a171b}.devicon-tomcat-line.colored,.devicon-tomcat-line-wordmark.colored{color:#d1a41a}.devicon-travis-plain.colored,.devicon-travis-plain-wordmark.colored{color:#bb2031}.devicon-trello-plain.colored,.devicon-trello-plain-wordmark.colored{color:#23719f}.devicon-twitter-plain.colored{color:#1da1f2}.devicon-typescript-plain.colored,.devicon-typescript-original.colored{color:#007acc}.devicon-typo3-plain.colored,.devicon-typo3-plain-wordmark.colored{color:#f49700}.devicon-ubuntu-plain.colored,.devicon-ubuntu-plain-wordmark.colored{color:#dd4814}.devicon-vagrant-plain.colored,.devicon-vagrant-plain-wordmark.colored{color:#127eff}.devicon-vim-plain.colored{color:#179a33}.devicon-visualstudio-plain.colored,.devicon-visualstudio-plain-wordmark.colored{color:#68217a}.devicon-vuejs-plain.colored,.devicon-vuejs-plain-wordmark.colored,.devicon-vuejs-line.colored,.devicon-vuejs-line-wordmark.colored{color:#41b883}.devicon-webpack-plain.colored,.devicon-webpack-plain-wordmark.colored{color:#1c78c0}.devicon-webstorm-plain.colored,.devicon-webstorm-plain-wordmark.colored{color:#2788b5}.devicon-windows8-original.colored,.devicon-windows8-original-wordmark.colored,.devicon-windows8-plain.colored,.devicon-windows8-plain-wordmark.colored{color:#00adef}.devicon-woocommerce-plain.colored,.devicon-woocommerce-plain-wordmark.colored{color:#7f54b3}.devicon-wordpress-plain.colored,.devicon-wordpress-plain-wordmark.colored{color:#494949}.devicon-yarn-plain.colored,.devicon-yarn-plain-wordmark.colored{color:#2c8ebb}.devicon-yii-plain.colored,.devicon-yii-plain-wordmark.colored{color:#0073bb}.devicon-yunohost-plain.colored{color:#fff}.devicon-zend-plain.colored,.devicon-zend-plain-wordmark.colored{color:#68b604} \ No newline at end of file +@font-face{font-family:"devicon";src:url("fonts/devicon.eot?flyg0o");src:url("fonts/devicon.eot?flyg0o#iefix") format("embedded-opentype"),url("fonts/devicon.ttf?flyg0o") format("truetype"),url("fonts/devicon.woff?flyg0o") format("woff"),url("fonts/devicon.svg?flyg0o#devicon") format("svg");font-weight:normal;font-style:normal;font-display:block}[class^=devicon-],[class*=" devicon-"]{font-family:"devicon" !important;speak:never;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.devicon-woocommerce-plain-wordmark:before{content:""}.devicon-woocommerce-plain:before{content:""}.devicon-typo3-plain-wordmark:before{content:""}.devicon-typo3-plain:before{content:""}.devicon-premierepro-plain:before{content:""}.devicon-nestjs-plain-wordmark:before{content:""}.devicon-nestjs-plain:before{content:""}.devicon-materialui-plain:before{content:""}.devicon-kotlin-plain-wordmark:before{content:""}.devicon-kotlin-plain:before{content:""}.devicon-jenkins-plain:before{content:""}.devicon-jenkins-line:before{content:""}.devicon-haxe-plain:before{content:""}.devicon-gatsby-plain-wordmark:before{content:""}.devicon-gatsby-plain:before{content:""}.devicon-flutter-plain:before{content:""}.devicon-composer-line-wordmark:before,.devicon-composer-plain-wordmark:before{content:""}.devicon-composer-line:before,.devicon-composer-plain:before{content:""}.devicon-aftereffects-plain:before{content:""}.devicon-yunohost-plain:before{content:""}.devicon-redux-original:before,.devicon-redux-plain:before{content:""}.devicon-clojurescript-plain:before{content:""}.devicon-clojure-line:before,.devicon-clojure-plain:before{content:""}.devicon-mocha-plain:before{content:""}.devicon-haskell-plain:before{content:""}.devicon-haskell-plain-wordmark:before{content:""}.devicon-codepen-original-wordmark:before{content:""}.devicon-codepen-plain:before,.devicon-codepen-original:before{content:""}.devicon-groovy-plain:before{content:""}.devicon-rust-plain:before{content:""}.devicon-scala-plain-wordmark:before{content:""}.devicon-scala-plain:before{content:""}.devicon-grails-plain:before{content:""}.devicon-sketch-line-wordmark:before{content:""}.devicon-sketch-line:before{content:""}.devicon-npm-original-wordmark:before{content:""}.devicon-ionic-original-wordmark:before{content:""}.devicon-ionic-original:before{content:""}.devicon-ember-original-wordmark:before{content:""}.devicon-electron-original-wordmark:before{content:""}.devicon-electron-original:before{content:""}.devicon-vagrant-plain-wordmark:before{content:""}.devicon-vagrant-plain:before{content:""}.devicon-yarn-plain-wordmark:before{content:""}.devicon-yarn-plain:before{content:""}.devicon-handlebars-plain-wordmark:before{content:""}.devicon-handlebars-plain:before{content:""}.devicon-couchdb-plain-wordmark:before{content:""}.devicon-couchdb-plain:before{content:""}.devicon-behance-plain-wordmark:before{content:""}.devicon-behance-plain:before{content:""}.devicon-linkedin-plain-wordmark:before{content:""}.devicon-linkedin-plain:before{content:""}.devicon-ceylon-plain:before{content:""}.devicon-elm-plain-wordmark:before{content:""}.devicon-elm-plain:before{content:""}.devicon-cakephp-plain-wordmark:before{content:""}.devicon-cakephp-plain:before{content:""}.devicon-stylus-original:before{content:""}.devicon-express-original-wordmark:before{content:""}.devicon-express-original:before{content:""}.devicon-devicon-plain-wordmark:before{content:""}.devicon-devicon-plain:before{content:""}.devicon-intellij-plain-wordmark:before{content:""}.devicon-intellij-plain:before{content:""}.devicon-pycharm-plain-wordmark:before{content:""}.devicon-pycharm-plain:before{content:""}.devicon-rubymine-plain-wordmark:before{content:""}.devicon-rubymine-plain:before{content:""}.devicon-webstorm-plain-wordmark:before{content:""}.devicon-webstorm-plain:before{content:""}.devicon-tomcat-line-wordmark:before{content:""}.devicon-tomcat-line:before{content:""}.devicon-vuejs-line-wordmark:before{content:""}.devicon-vuejs-line:before{content:""}.devicon-vuejs-plain-wordmark:before{content:""}.devicon-vuejs-plain:before{content:""}.devicon-swift-plain-wordmark:before{content:""}.devicon-swift-plain:before{content:""}.devicon-webpack-plain-wordmark:before{content:""}.devicon-webpack-plain:before{content:""}.devicon-visualstudio-plain-wordmark:before{content:""}.devicon-visualstudio-plain:before{content:""}.devicon-slack-plain-wordmark:before{content:""}.devicon-slack-plain:before{content:""}.devicon-sequelize-plain-wordmark:before{content:""}.devicon-sequelize-plain:before{content:""}.devicon-typescript-plain:before,.devicon-typescript-original:before{content:""}.devicon-babel-plain:before,.devicon-babel-original:before{content:""}.devicon-facebook-plain:before,.devicon-facebook-original:before{content:""}.devicon-google-plain-wordmark:before,.devicon-google-original-wordmark:before{content:""}.devicon-google-plain:before,.devicon-google-original:before{content:""}.devicon-twitter-original:before{content:""}.devicon-mocha:before{content:""}.devicon-jasmine-plain:before{content:""}.devicon-jasmine-wordmark:before{content:""}.devicon-gatling-plain:before{content:""}.devicon-gatling-plain-wordmark:before{content:""}.devicon-phpstorm-plain:before{content:""}.devicon-phpstorm-plain-wordmark:before{content:""}.devicon-sourcetree-original:before{content:""}.devicon-sourcetree-original-wordmark:before{content:""}.devicon-ssh-original:before{content:""}.devicon-ssh-original-wordmark:before{content:""}.devicon-jeet-plain:before{content:""}.devicon-jeet-plain-wordmark:before{content:""}.devicon-gitlab-plain:before{content:""}.devicon-gitlab-plain-wordmark:before{content:""}.devicon-github-original:before,.devicon-github-plain:before{content:""}.devicon-github-original-wordmark:before{content:""}.devicon-d3js-plain:before{content:""}.devicon-d3js-original:before{content:""}.devicon-confluence-original:before{content:""}.devicon-confluence-original-wordmark:before{content:""}.devicon-bitbucket-original:before{content:""}.devicon-bitbucket-original-wordmark:before{content:""}.devicon-gradle-plain:before{content:""}.devicon-gradle-plain-wordmark:before{content:""}.devicon-cucumber-plain:before{content:""}.devicon-cucumber-plain-wordmark:before{content:""}.devicon-protractor-plain:before{content:""}.devicon-protractor-plain-wordmark:before{content:""}.devicon-safari-line-wordmark:before{content:""}.devicon-safari-line:before{content:""}.devicon-safari-plain-wordmark:before{content:""}.devicon-safari-plain:before{content:""}.devicon-jetbrains-plain:before,.devicon-jetbrains-line:before,.devicon-jetbrains-line-wordmark:before,.devicon-jetbrains-plain-wordmark:before{content:""}.devicon-django-line:before,.devicon-django-line-wordmark:before{content:""}.devicon-django-plain:before,.devicon-django-plain-wordmark:before{content:""}.devicon-gimp-plain:before{content:""}.devicon-redhat-plain-wordmark:before{content:""}.devicon-redhat-plain:before{content:""}.devicon-cplusplus-line:before,.devicon-cplusplus-line-wordmark:before{content:""}.devicon-cplusplus-plain:before,.devicon-cplusplus-plain-wordmark:before{content:""}.devicon-csharp-line:before,.devicon-csharp-line-wordmark:before{content:""}.devicon-csharp-plain:before,.devicon-csharp-plain-wordmark:before{content:""}.devicon-c-line:before,.devicon-c-line-wordmark:before{content:""}.devicon-c-plain:before,.devicon-c-plain-wordmark:before{content:""}.devicon-nodewebkit-line-wordmark:before{content:""}.devicon-nodewebkit-line:before{content:""}.devicon-nodewebkit-plain-wordmark:before{content:""}.devicon-nodewebkit-plain:before{content:""}.devicon-nginx-original:before,.devicon-nginx-original-wordmark:before,.devicon-nginx-plain:before,.devicon-nginx-plain-wordmark:before{content:""}.devicon-erlang-plain-wordmark:before{content:""}.devicon-erlang-plain:before{content:""}.devicon-doctrine-line-wordmark:before{content:""}.devicon-doctrine-line:before{content:""}.devicon-doctrine-plain-wordmark:before{content:""}.devicon-doctrine-plain:before{content:""}.devicon-apache-line-wordmark:before{content:""}.devicon-apache-line:before{content:""}.devicon-apache-plain-wordmark:before{content:""}.devicon-apache-plain:before{content:""}.devicon-go-line:before{content:""}.devicon-redis-plain-wordmark:before{content:""}.devicon-redis-plain:before{content:""}.devicon-meteor-plain-wordmark:before{content:""}.devicon-meteor-plain:before{content:""}.devicon-heroku-line-wordmark:before,.devicon-heroku-original-wordmark:before{content:""}.devicon-heroku-line:before,.devicon-heroku-original:before{content:""}.devicon-heroku-plain-wordmark:before{content:""}.devicon-heroku-plain:before{content:""}.devicon-go-plain:before{content:""}.devicon-docker-plain-wordmark:before{content:""}.devicon-docker-plain:before{content:""}.devicon-symfony-original-wordmark:before,.devicon-symfony-plain-wordmark:before{content:""}.devicon-symfony-original:before,.devicon-symfony-plain:before{content:""}.devicon-react-original-wordmark:before,.devicon-react-plain-wordmark:before{content:""}.devicon-react-original:before,.devicon-react-plain:before{content:""}.devicon-amazonwebservices-original:before,.devicon-amazonwebservices-plain:before{content:""}.devicon-amazonwebservices-plain-wordmark:before{content:""}.devicon-android-plain-wordmark:before{content:""}.devicon-android-plain:before{content:""}.devicon-angularjs-plain-wordmark:before{content:""}.devicon-angularjs-plain:before{content:""}.devicon-appcelerator-original:before,.devicon-appcelerator-plain:before{content:""}.devicon-appcelerator-plain-wordmark:before{content:""}.devicon-apple-original:before,.devicon-apple-plain:before{content:""}.devicon-atom-original-wordmark:before,.devicon-atom-plain-wordmark:before{content:""}.devicon-atom-original:before,.devicon-atom-plain:before{content:""}.devicon-backbonejs-plain-wordmark:before{content:""}.devicon-backbonejs-plain:before{content:""}.devicon-bootstrap-plain-wordmark:before{content:""}.devicon-bootstrap-plain:before{content:""}.devicon-bower-line-wordmark:before{content:""}.devicon-bower-line:before{content:""}.devicon-bower-plain-wordmark:before{content:""}.devicon-bower-plain:before{content:""}.devicon-chrome-plain-wordmark:before{content:""}.devicon-chrome-plain:before{content:""}.devicon-codeigniter-plain-wordmark:before{content:""}.devicon-codeigniter-plain:before{content:""}.devicon-coffeescript-original-wordmark:before,.devicon-coffeescript-plain-wordmark:before{content:""}.devicon-coffeescript-original:before,.devicon-coffeescript-plain:before{content:""}.devicon-css3-plain-wordmark:before{content:""}.devicon-css3-plain:before{content:""}.devicon-debian-plain-wordmark:before{content:""}.devicon-debian-plain:before{content:""}.devicon-dot-net-plain-wordmark:before{content:""}.devicon-dot-net-plain:before{content:""}.devicon-drupal-plain-wordmark:before{content:""}.devicon-drupal-plain:before{content:""}.devicon-firefox-plain-wordmark:before{content:""}.devicon-firefox-plain:before{content:""}.devicon-foundation-plain-wordmark:before{content:""}.devicon-foundation-plain:before{content:""}.devicon-git-plain-wordmark:before{content:""}.devicon-git-plain:before{content:""}.devicon-grunt-line-wordmark:before{content:""}.devicon-grunt-line:before{content:""}.devicon-grunt-plain-wordmark:before{content:""}.devicon-grunt-plain:before{content:""}.devicon-gulp-plain:before{content:""}.devicon-html5-plain-wordmark:before{content:""}.devicon-html5-plain:before{content:""}.devicon-ie10-original:before,.devicon-ie10-plain:before{content:""}.devicon-illustrator-line:before{content:""}.devicon-illustrator-plain:before{content:""}.devicon-inkscape-plain-wordmark:before{content:""}.devicon-inkscape-plain:before{content:""}.devicon-java-plain-wordmark:before{content:""}.devicon-java-plain:before{content:""}.devicon-javascript-plain:before{content:""}.devicon-jquery-plain-wordmark:before{content:""}.devicon-jquery-plain:before{content:""}.devicon-krakenjs-plain-wordmark:before{content:""}.devicon-krakenjs-plain:before{content:""}.devicon-laravel-plain-wordmark:before{content:""}.devicon-laravel-plain:before{content:""}.devicon-less-plain-wordmark:before{content:""}.devicon-linux-plain:before{content:""}.devicon-mongodb-plain-wordmark:before{content:""}.devicon-mongodb-plain:before{content:""}.devicon-moodle-plain-wordmark:before{content:""}.devicon-moodle-plain:before{content:""}.devicon-mysql-plain-wordmark:before{content:""}.devicon-mysql-plain:before{content:""}.devicon-nodejs-plain-wordmark:before{content:""}.devicon-nodejs-plain:before{content:""}.devicon-oracle-original:before,.devicon-oracle-plain:before{content:""}.devicon-photoshop-line:before{content:""}.devicon-photoshop-plain:before{content:""}.devicon-php-plain:before{content:""}.devicon-postgresql-plain-wordmark:before{content:""}.devicon-postgresql-plain:before{content:""}.devicon-python-plain-wordmark:before{content:""}.devicon-python-plain:before{content:""}.devicon-rails-plain-wordmark:before{content:""}.devicon-rails-plain:before{content:""}.devicon-ruby-plain-wordmark:before{content:""}.devicon-ruby-plain:before{content:""}.devicon-sass-original:before,.devicon-sass-plain:before{content:""}.devicon-travis-plain-wordmark:before{content:""}.devicon-travis-plain:before{content:""}.devicon-trello-plain-wordmark:before{content:""}.devicon-trello-plain:before{content:""}.devicon-ubuntu-plain-wordmark:before{content:""}.devicon-ubuntu-plain:before{content:""}.devicon-vim-plain:before{content:""}.devicon-windows8-original-wordmark:before,.devicon-windows8-plain-wordmark:before{content:""}.devicon-windows8-original:before,.devicon-windows8-plain:before{content:""}.devicon-wordpress-plain-wordmark:before{content:""}.devicon-wordpress-plain:before{content:""}.devicon-yii-plain-wordmark:before{content:""}.devicon-yii-plain:before{content:""}.devicon-zend-plain-wordmark:before{content:""}.devicon-zend-plain:before{content:""}.devicon-aftereffects-plain.colored{color:#1f0740}.devicon-amazonwebservices-original.colored,.devicon-amazonwebservices-plain-wordmark.colored,.devicon-amazonwebservices-plain.colored{color:#f7a80d}.devicon-android-plain.colored,.devicon-android-plain-wordmark.colored{color:#a4c439}.devicon-angularjs-plain.colored,.devicon-angularjs-plain-wordmark.colored{color:#c4473a}.devicon-apache-plain.colored,.devicon-apache-plain-wordmark.colored,.devicon-apache-line.colored,.devicon-apache-line-wordmark.colored{color:#303284}.devicon-appcelerator-original.colored,.devicon-appcelerator-plain-wordmark.colored,.devicon-appcelerator-plain.colored{color:#ac162c}.devicon-apple-original.colored,.devicon-apple-plain.colored{color:#000}.devicon-atom-original.colored,.devicon-atom-original-wordmark.colored,.devicon-atom-plain.colored,.devicon-atom-plain-wordmark.colored{color:#67595d}.devicon-babel-plain.colored,.devicon-babel-original.colored{color:#f9dc3e}.devicon-backbonejs-plain.colored,.devicon-backbonejs-plain-wordmark.colored{color:#002a41}.devicon-behance-plain.colored,.devicon-behance-plain-wordmark.colored{color:#0071e0}.devicon-bitbucket-plain.colored,.devicon-bitbucket-plain-wordmark.colored{color:#205081}.devicon-bootstrap-plain.colored,.devicon-bootstrap-plain-wordmark.colored{color:#59407f}.devicon-bower-plain.colored,.devicon-bower-plain-wordmark.colored,.devicon-bower-line.colored,.devicon-bower-line-wordmark.colored{color:#ef5734}.devicon-c-plain.colored,.devicon-c-plain-wordmark.colored,.devicon-c-line.colored,.devicon-c-line-wordmark.colored,.devicon-c-plain-wordmark.colored,.devicon-c-line-wordmark.colored{color:#03599c}.devicon-cakephp-plain.colored,.devicon-cakephp-plain-wordmark.colored{color:#d43d44}.devicon-ceylon-plain.colored{color:#ab710a}.devicon-chrome-plain.colored,.devicon-chrome-plain-wordmark.colored{color:#ce4e4e}.devicon-clojure-line.colored,.devicon-clojure-plain.colored,.devicon-clojure-plain.colored{color:#5881d8}.devicon-clojurescript-plain.colored{color:#96ca4b}.devicon-codeigniter-plain.colored,.devicon-codeigniter-plain-wordmark.colored{color:#ee4323}.devicon-codepen-plain.colored,.devicon-codepen-plain-wordmark.colored,.devicon-codepen-original.colored{color:#231f20}.devicon-coffeescript-original.colored,.devicon-coffeescript-original-wordmark.colored,.devicon-coffeescript-plain.colored,.devicon-coffeescript-plain-wordmark.colored{color:#28334c}.devicon-composer-line.colored,.devicon-composer-line-wordmark.colored,.devicon-composer-plain.colored,.devicon-composer-plain-wordmark.colored{color:#000}.devicon-confluence-plain.colored,.devicon-confluence-plain-wordmark.colored{color:#205081}.devicon-couchdb-plain.colored,.devicon-couchdb-plain-wordmark.colored{color:#e42528}.devicon-cplusplus-plain.colored,.devicon-cplusplus-plain-wordmark.colored,.devicon-cplusplus-line.colored,.devicon-cplusplus-line-wordmark.colored,.devicon-cplusplus-plain-wordmark.colored,.devicon-cplusplus-line-wordmark.colored{color:#9c033a}.devicon-csharp-plain.colored,.devicon-csharp-plain-wordmark.colored,.devicon-csharp-line.colored,.devicon-csharp-line-wordmark.colored,.devicon-csharp-plain-wordmark.colored,.devicon-csharp-line-wordmark.colored{color:#68217a}.devicon-css3-plain.colored,.devicon-css3-plain-wordmark.colored{color:#3d8fc6}.devicon-cucumber-plain.colored,.devicon-cucumber-plain-wordmark.colored{color:#00a818}.devicon-d3js-plain.colored{color:#f7974e}.devicon-debian-plain.colored,.devicon-debian-plain-wordmark.colored{color:#a80030}.devicon-devicon-plain.colored,.devicon-devicon-plain-wordmark.colored{color:#60be86}.devicon-django-plain.colored,.devicon-django-plain-wordmark.colored,.devicon-django-line.colored,.devicon-django-line-wordmark.colored,.devicon-django-plain-wordmark.colored,.devicon-django-line-wordmark.colored{color:#003a2b}.devicon-docker-plain.colored,.devicon-docker-plain-wordmark.colored{color:#019bc6}.devicon-doctrine-plain.colored,.devicon-doctrine-plain-wordmark.colored,.devicon-doctrine-line.colored,.devicon-doctrine-line-wordmark.colored{color:#f56d39}.devicon-dot-net-plain.colored,.devicon-dot-net-plain-wordmark.colored{color:#1384c8}.devicon-drupal-plain.colored,.devicon-drupal-plain-wordmark.colored{color:#0073ba}.devicon-electron-original.colored,.devicon-electron-original-wordmark.colored{color:#47848f}.devicon-elm-plain.colored,.devicon-elm-plain-wordmark.colored{color:#34495e}.devicon-ember-original-wordmark.colored{color:#dd3f24}.devicon-erlang-plain.colored,.devicon-erlang-plain-wordmark.colored{color:#a90533}.devicon-express-original.colored,.devicon-express-original-wordmark.colored{color:#444}.devicon-facebook-plain.colored,.devicon-facebook-original.colored{color:#3d5a98}.devicon-firefox-plain.colored,.devicon-firefox-plain-wordmark.colored{color:#dd732a}.devicon-flutter-plain.colored{color:#3fb6d3}.devicon-foundation-plain.colored,.devicon-foundation-plain-wordmark.colored{color:#008cba}.devicon-gatling-plain.colored,.devicon-gatling-plain-wordmark.colored{color:#e77500}.devicon-gatsby-plain.colored,.devicon-gatsby-plain-wordmark.colored{color:#64328b}.devicon-gimp-plain.colored{color:#716955}.devicon-git-plain.colored,.devicon-git-plain-wordmark.colored{color:#f34f29}.devicon-github-original.colored,.devicon-github-original-wordmark.colored,.devicon-github-plain.colored{color:#181616}.devicon-gitlab-plain.colored,.devicon-gitlab-plain-wordmark.colored{color:#e24329}.devicon-go-plain.colored,.devicon-go-line.colored{color:#000}.devicon-google-plain.colored,.devicon-google-plain-wordmark.colored,.devicon-google-original.colored,.devicon-google-original-wordmark.colored{color:#587dbd}.devicon-gradle-plain.colored,.devicon-gradle-plain-wordmark.colored{color:#02303a}.devicon-grails-plain.colored{color:#feb672}.devicon-groovy-plain.colored{color:#619cbc}.devicon-grunt-plain.colored,.devicon-grunt-plain-wordmark.colored,.devicon-grunt-line.colored,.devicon-grunt-line-wordmark.colored{color:#fcaa1a}.devicon-gulp-plain.colored{color:#eb4a4b}.devicon-haskell-plain.colored,.devicon-haskell-plain-wordmark.colored{color:#5e5185}.devicon-handlebars-plain.colored,.devicon-handlebars-plain-wordmark.colored{color:#000}.devicon-haxe-plain.colored{color:#ea8220}.devicon-heroku-original.colored,.devicon-heroku-original-wordmark.colored,.devicon-heroku-plain.colored,.devicon-heroku-plain-wordmark.colored,.devicon-heroku-line.colored,.devicon-heroku-line-wordmark.colored,.devicon-heroku-original.colored,.devicon-heroku-original-wordmark.colored{color:#6762a6}.devicon-html5-plain.colored,.devicon-html5-plain-wordmark.colored{color:#e54d26}.devicon-ie10-original.colored,.devicon-ie10-plain.colored{color:#1ebbee}.devicon-illustrator-plain.colored,.devicon-illustrator-line.colored{color:#faa625}.devicon-inkscape-plain.colored,.devicon-inkscape-plain-wordmark.colored{color:#000}.devicon-intellij-plain.colored,.devicon-intellij-plain-wordmark.colored{color:#136ba2}.devicon-ionic-original.colored,.devicon-ionic-original-wordmark.colored{color:#4e8ef7}.devicon-jasmine-plain.colored,.devicon-jasmine-plain-wordmark.colored{color:#8a4182}.devicon-java-plain.colored,.devicon-java-plain-wordmark.colored{color:#ea2d2e}.devicon-javascript-plain.colored{color:#f0db4f}.devicon-jeet-plain.colored,.devicon-jeet-plain-wordmark.colored{color:#ff664a}.devicon-jenkins-line.colored,.devicon-jenkins-plain.colored{color:#f0d6b7}.devicon-jetbrains-plain.colored,.devicon-jetbrains-plain-wordmark.colored,.devicon-jetbrains-line.colored,.devicon-jetbrains-line-wordmark.colored,.devicon-jetbrains-line.colored,.devicon-jetbrains-line-wordmark.colored,.devicon-jetbrains-plain-wordmark.colored{color:#f68b1f}.devicon-jquery-plain.colored,.devicon-jquery-plain-wordmark.colored{color:#0769ad}.devicon-kotlin-plain.colored,.devicon-kotlin-plain-wordmark.colored{color:#7c6db2}.devicon-krakenjs-plain.colored,.devicon-krakenjs-plain-wordmark.colored{color:#0081c2}.devicon-laravel-plain.colored,.devicon-laravel-plain-wordmark.colored{color:#fd4f31}.devicon-less-plain-wordmark.colored{color:#2a4d80}.devicon-linkedin-plain.colored,.devicon-linkedin-plain-wordmark.colored{color:#0076b2}.devicon-linux-plain.colored{color:#000}.devicon-materialui-plain.colored{color:#1fa6ca}.devicon-meteor-plain.colored,.devicon-meteor-plain-wordmark.colored{color:#df5052}.devicon-mocha-plain.colored{color:#8d6748}.devicon-mongodb-plain.colored,.devicon-mongodb-plain-wordmark.colored{color:#4faa41}.devicon-moodle-plain.colored,.devicon-moodle-plain-wordmark.colored{color:#f7931e}.devicon-mysql-plain.colored,.devicon-mysql-plain-wordmark.colored{color:#00618a}.devicon-nestjs-plain.colored,.devicon-nestjs-plain-wordmark.colored{color:#df234f}.devicon-nginx-original.colored,.devicon-nginx-original-wordmark.colored,.devicon-nginx-plain.colored,.devicon-nginx-plain-wordmark.colored,.devicon-nginx-original-wordmark.colored,.devicon-nginx-plain.colored,.devicon-nginx-plain-wordmark.colored{color:#090}.devicon-nodejs-plain.colored,.devicon-nodejs-plain-wordmark.colored{color:#83cd29}.devicon-nodewebkit-plain.colored,.devicon-nodewebkit-plain-wordmark.colored,.devicon-nodewebkit-line.colored,.devicon-nodewebkit-line-wordmark.colored{color:#3d3b47}.devicon-npm-original-wordmark.colored{color:#cb3837}.devicon-oracle-original.colored,.devicon-oracle-plain.colored{color:#ea1b22}.devicon-photoshop-plain.colored,.devicon-photoshop-line.colored{color:#80b5e2}.devicon-php-plain.colored{color:#6181b6}.devicon-phpstorm-plain.colored,.devicon-phpstorm-plain-wordmark.colored{color:#5058a6}.devicon-postgresql-plain.colored,.devicon-postgresql-plain-wordmark.colored{color:#336791}.devicon-premierepro-plain.colored{color:#2a0634}.devicon-protractor-plain.colored,.devicon-protractor-plain-wordmark.colored{color:#b7111d}.devicon-pycharm-plain.colored,.devicon-pycharm-plain-wordmark.colored{color:#4d8548}.devicon-python-plain.colored,.devicon-python-plain-wordmark.colored{color:#ffd845}.devicon-rails-plain.colored,.devicon-rails-plain-wordmark.colored{color:#a62c46}.devicon-react-original.colored,.devicon-react-original-wordmark.colored,.devicon-react-plain.colored,.devicon-react-plain-wordmark.colored{color:#61dafb}.devicon-redhat-plain.colored,.devicon-redhat-plain-wordmark.colored{color:#e93442}.devicon-redis-plain.colored,.devicon-redis-plain-wordmark.colored{color:#d82c20}.devicon-redux-original.colored,.devicon-redux-plain.colored{color:#764abc}.devicon-ruby-plain.colored,.devicon-ruby-plain-wordmark.colored{color:#d91404}.devicon-rubymine-plain.colored,.devicon-rubymine-plain-wordmark.colored{color:#c12c4c}.devicon-rust-plain.colored{color:#000}.devicon-safari-plain.colored,.devicon-safari-plain-wordmark.colored,.devicon-safari-line-wordmark.colored,.devicon-safari-line.colored{color:#1b88ca}.devicon-sass-original.colored,.devicon-sass-plain.colored{color:#c69}.devicon-scala-plain.colored,.devicon-scala-plain-wordmark.colored{color:#de3423}.devicon-sequelize-plain.colored,.devicon-sequelize-plain-wordmark.colored,.devicon-sequelize-plain.colored,.devicon-sequelize-plain-wordmark.colored{color:#3b4b72}.devicon-sketch-line.colored,.devicon-sketch-line-wordmark.colored{color:#fdad00}.devicon-slack-plain.colored,.devicon-slack-plain-wordmark.colored{color:#2d333a}.devicon-sourcetree-plain.colored,.devicon-sourcetree-plain-wordmark.colored{color:#205081}.devicon-ssh-plain.colored,.devicon-ssh-plain-wordmark.colored{color:#231f20}.devicon-stylus-original.colored{color:#333}.devicon-swift-plain.colored,.devicon-swift-plain-wordmark.colored{color:#f05138}.devicon-symfony-original.colored,.devicon-symfony-original-wordmark.colored,.devicon-symfony-plain.colored,.devicon-symfony-plain-wordmark.colored{color:#1a171b}.devicon-tomcat-line.colored,.devicon-tomcat-line-wordmark.colored{color:#d1a41a}.devicon-travis-plain.colored,.devicon-travis-plain-wordmark.colored{color:#bb2031}.devicon-trello-plain.colored,.devicon-trello-plain-wordmark.colored{color:#23719f}.devicon-twitter-plain.colored{color:#1da1f2}.devicon-typescript-plain.colored,.devicon-typescript-original.colored{color:#007acc}.devicon-typo3-plain.colored,.devicon-typo3-plain-wordmark.colored{color:#f49700}.devicon-ubuntu-plain.colored,.devicon-ubuntu-plain-wordmark.colored{color:#dd4814}.devicon-vagrant-plain.colored,.devicon-vagrant-plain-wordmark.colored{color:#127eff}.devicon-vim-plain.colored{color:#179a33}.devicon-visualstudio-plain.colored,.devicon-visualstudio-plain-wordmark.colored{color:#68217a}.devicon-vuejs-plain.colored,.devicon-vuejs-plain-wordmark.colored,.devicon-vuejs-line.colored,.devicon-vuejs-line-wordmark.colored{color:#41b883}.devicon-webpack-plain.colored,.devicon-webpack-plain-wordmark.colored{color:#1c78c0}.devicon-webstorm-plain.colored,.devicon-webstorm-plain-wordmark.colored{color:#2788b5}.devicon-windows8-original.colored,.devicon-windows8-original-wordmark.colored,.devicon-windows8-plain.colored,.devicon-windows8-plain-wordmark.colored{color:#00adef}.devicon-woocommerce-plain.colored,.devicon-woocommerce-plain-wordmark.colored{color:#7f54b3}.devicon-wordpress-plain.colored,.devicon-wordpress-plain-wordmark.colored{color:#494949}.devicon-yarn-plain.colored,.devicon-yarn-plain-wordmark.colored{color:#2c8ebb}.devicon-yii-plain.colored,.devicon-yii-plain-wordmark.colored{color:#0073bb}.devicon-yunohost-plain.colored{color:#fff}.devicon-zend-plain.colored,.devicon-zend-plain-wordmark.colored{color:#68b604} diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 00000000..0d1b34d9 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +devicon.dev \ No newline at end of file diff --git a/docs/assets/css/style.css b/docs/assets/css/style.css new file mode 100644 index 00000000..1c1d2ae2 --- /dev/null +++ b/docs/assets/css/style.css @@ -0,0 +1,403 @@ +@charset "UTF-8"; +@import '//cdnjs.cloudflare.com/ajax/libs/normalize/3.0.1/normalize.min.css'; +@import url(https://fonts.googleapis.com/css?family=Lato:300,400,700); +@import url(https://fonts.googleapis.com/css?family=Damion); +html { + box-sizing: border-box; } + +*, *::after, *::before { + box-sizing: inherit; } + + +.icon-brush:before { + content: "\e600"; } + +.icon-type:before { + content: "\e601"; } + +.icon-github:before { + content: "\e602"; } + +.icon-github2:before { + content: "\e603"; } + +.icon-bucket:before { + content: "\e605"; } + +.icon-github3:before { + content: "\e604"; } + +.icon-bucket2:before { + content: "\e606"; } + +/* Cachons la case à cocher */ +[type="checkbox"]:not(:checked), +[type="checkbox"]:checked { + position: absolute; + left: -9999px; } + +/* on prépare le label */ +[type="checkbox"]:not(:checked) + label, +[type="checkbox"]:checked + label { + cursor: pointer; + position: relative; + z-index: 10; + display: inline-block; + padding: 0.71429rem 1.07143rem; + margin-left: 0.35714rem; + font-family: "Lato", Calibri, Arial, sans-serif; + font-weight: 700; + color: #60be86; + background: #4f755e; + box-shadow: 0px 6px 0px #4a5c51; + border-radius: 5px; } + +/* Aspect si "cochée" */ +[type="checkbox"]:checked + label { + top: 6px; + box-shadow: 0px 0px 0px #4a5c51; } + +.button { + position: relative; + z-index: 10; + display: inline-block; + padding: 0.71429rem 1.07143rem; + margin: 0 0.71429rem; + font-family: "Lato", Calibri, Arial, sans-serif; + font-weight: 700; + color: #60be86; + background: #4c6857; + text-decoration: none; + border-radius: 5px; + box-shadow: 0px 6px 0px #4a5c51; } + .button:active { + top: 6px; + box-shadow: 0px 0px 0px #4a5c51; } + +/* General Blueprint Style */ +*, +*:after, +*:before { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + +body, +html { + margin: 0; + padding: 0; + font-size: 100%; } + +.clearfix:before, +.clearfix:after { + display: table; + content: ' '; } + +.clearfix:after { + clear: both; } + +body { + color: #47a3da; + font-family: 'Lato', Calibri, Arial, sans-serif; } + +a { + color: #f0f0f0; + text-decoration: none; } + +a:hover { + color: #000; } + +.cbp-ig-grid { + list-style: none; + padding: 0 0 50px; + margin: 0; } + +.cbp-ig-grid:before, +.cbp-ig-grid:after { + content: " "; + display: table; } + +.cbp-ig-grid:after { + clear: both; } + +.cbp-ig-grid li { + width: 25%; + float: left; + height: 200px; + text-align: center; } + +.cbp-ig-grid li > span { + display: block; + height: 100%; + color: #60be86; + -webkit-transition: background 0.2s; + -moz-transition: background 0.2s; + transition: background 0.2s; + cursor: pointer; } + +.cbp-ig-icon { + padding: 30px 0 0; + display: block; + -webkit-transition: -webkit-transform 0.2s; + transition: -moz-transform 0.2s; + transition: transform 0.2s; } + +.cbp-ig-icon:before { + font-family: 'devicon'; + font-size: 6em; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; } + +.cbp-ig-grid .cbp-ig-title { + margin: 20px 0 10px; + padding: 20px 0 0; + font-size: 1em; + position: relative; + -webkit-transition: -webkit-transform 0.2s; + -moz-transition: -moz-transform 0.2s; + transition: transform 0.2s; } + +.cbp-ig-grid .cbp-ig-title:before { + content: ''; + position: absolute; + background: #60be86; + width: 60px; + height: 2px; + top: 0; + left: 50%; + margin: 0 0 0 -30px; + -webkit-transition: margin-top 0.2s; + -moz-transition: margin-top 0.2s; + transition: margin-top 0.2s; } + +.cbp-ig-grid li > span:hover { + background: #60be86; } + +.cbp-ig-grid li > span:hover .cbp-ig-icon { + -webkit-transform: translateY(10px); + -moz-transform: translateY(10px); + -ms-transform: translateY(10px); + transform: translateY(10px); } + +.cbp-ig-grid li > span:hover .cbp-ig-icon:before, +.cbp-ig-grid li > span:hover .cbp-ig-title { + color: #fff; } + +.cbp-ig-grid li > span:hover .cbp-ig-title { + -webkit-transform: translateY(-30px); + -moz-transform: translateY(-30px); + -ms-transform: translateY(-30px); + transform: translateY(-30px); } + +.cbp-ig-grid li > span:hover .cbp-ig-title:before { + background: #fff; + margin-top: 80px; } + +@media screen and (max-width: 62.75em) { + .cbp-ig-grid li { + width: 50%; } } + +@media screen and (max-width: 41.6em) { + .cbp-ig-grid li { + width: 100%; } } + +@media screen and (max-width: 25em) { + .cbp-ig-grid { + font-size: 80%; } } + +html { + background: whitesmoke; } + +html, +body { + color: #323232; + font-size: 14px; + font-family: "Lato", Calibri, Arial, sans-serif; + line-height: 1.5; } + +::-webkit-input-placeholder { + color: #4f755e; } + +:-moz-placeholder { + color: #4f755e; } + +::-moz-placeholder { + color: #4f755e; } + +:-ms-input-placeholder { + color: #4f755e; } + +html, +body { + min-width: 900px; } + +header { + position: fixed; + top: 0; + bottom: 0; + overflow: auto; + padding: 0 2rem; + width: 480px; + color: whitesmoke; + background: #60be86; } + header > h1, + header > h3 { + font-weight: 400; + font-family: "Damion", sans-serif; + text-align: center; } + header > h1 { + margin: 1rem 0 0; + font-size: 5rem; } + header > h1 > span { + font-size: 2rem; } + header > h2 { + font-weight: 400; + font-size: 1.3rem; } + header .download { + margin: 2rem 0 0; + font-weight: 900; + font-size: 1.3rem; + text-align: center; } + header .download i { + position: relative; + top: 12px; + left: -10px; + font-size: 3rem; } + header .download a { + padding: 1.3rem 1.8rem; + border: 6px solid #60be86; + color: #60be86; + background: whitesmoke; } + header .download a:hover { + border-color: whitesmoke; + color: #60be86; } + header > h3 { + margin: 4rem 0 0; + font-size: 3rem; + text-align: left; } + header > h5 { + margin: 0; + font-weight: 400; + font-style: italic; + font-size: 1.2rem; } + header > ul { + margin: 0; + padding: 0; + list-style: none; } + header > ul h4 { + margin: 0; + border-bottom: 1px solid whitesmoke; + font-size: 1.5rem; } + header > ul li { + margin: .8rem 0 2rem; } + header .icons-list { + margin: 1rem 0; + padding: 0; + list-style: none; } + header .icons-list > div { + display: inline; } + header .icons-list li { + position: relative; + display: inline-block; + width: 6.5rem; + margin: .5rem .3rem; + padding: .4rem; + cursor: pointer; + border: 5px solid #60be86; } + header .icons-list li:hover { + border: 5px solid #65d693; + border-radius: 5px; } + header .icons-list li:hover::before { + content: ' '; + position: absolute; + bottom: -18px; + left: 25px; + display: block; + width: 0px; + height: 0px; + border-left: 15px solid transparent; + border-right: 15px solid transparent; + border-top: 15px solid #65d693; } + header .icons-list li.selected-version { + border: 5px solid #65d693; + border-radius: 5px; } + header .icons-list li.selected-version::before { + position: absolute; + bottom: -19px; + left: 25px; + display: block; + width: 0; + height: 0; + border-top: 15px solid #65d693; + border-right: 15px solid transparent; + border-left: 15px solid transparent; + content: ' '; } + header .icons-list i { + font-size: 5rem; } + header .icons-list img { + max-width: 100%; } + +.borders { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: -1; + border: 8px solid #60be86; } + +.main { + margin: 0 0 0 480px; } + +.search { + text-align: center; } + .search input { + width: 300px; + margin: 4rem; + padding: .5rem 1rem; + border: 0; + border-bottom: 2px solid #60be86; + color: #60be86; + background: none; + font-size: 1.2rem; + text-align: center; } + +::-webkit-input-placeholder { + color: #60be86; } + +:-moz-placeholder { + /* Firefox 18- */ + color: #60be86; } + +::-moz-placeholder { + /* Firefox 19+ */ + color: #60be86; } + +:-ms-input-placeholder { + color: #60be86; } + +.cde { + white-space: nowrap; + padding: 1rem; + border-radius: 4px; + color: #4c6857; + background: #65d693; + font-size: .9rem; + font-family: courier; + overflow: auto; } + +.cde-ind { + padding: 0 0 0 .5rem; } + +.cde-com { + color: #4c6857; + opacity: .5; } + +.footer { + margin-top: 6rem; + text-align: center; } diff --git a/docs/assets/img/logo.png b/docs/assets/img/logo.png new file mode 100644 index 00000000..11c448ae Binary files /dev/null and b/docs/assets/img/logo.png differ diff --git a/docs/assets/js/script.js b/docs/assets/js/script.js new file mode 100644 index 00000000..f2637344 --- /dev/null +++ b/docs/assets/js/script.js @@ -0,0 +1,210 @@ +var devicon = angular.module('devicon', ['ngSanitize', 'ngAnimate']); + +/* +||============================================================== +|| Devicons controller +||============================================================== +*/ + +devicon.controller('IconListCtrl', function($scope, $http, $compile) { + + // Determination of the latest release tagging + // which is used for showing in the header of the page + // as well as for CDN links + var gitHubPath = 'devicons/devicon'; + var url = 'https://api.github.com/repos/' + gitHubPath + '/tags'; + + $scope.latestReleaseTagging = 'master'; + $http.get(url).success(function (data) { + if(data.length > 0) { + $scope.latestReleaseTagging = data[0].name; + } + }).error(function () { + console.log('Unable to determine latest release version, fallback to master.') + }); + + + var baseUrl = 'https://raw.githubusercontent.com/' + gitHubPath + '/master/' + + // Get devicon.json + $http.get(baseUrl + '/devicon.json').success(function(data) { + + /* + | Re-format devicon.json + |----------------------------------------- + */ + + $scope.icons = []; + $scope.selectedIcon = {}; + + // Loop through devicon.json + angular.forEach(data, function(devicon, key) { + + // New icon format + var icon = { + name: devicon.name, + svg: devicon.versions.svg, + font: devicon.versions.font, + main: "" + }; + + // Loop through devicon.json icons + for (var i = 0; i < devicon.versions.font.length; i++) { + + // Store all versions that should become main in order + var mainVersionsArray = [ + "plain", + "line", + "original", + "plain-wordmark", + "line-wordmark", + "original-wordmark", + ]; + + // Loop through mainVersionsArray + for (var j = 0; j < mainVersionsArray.length; j++) { + + // Check if icon version can be "main", if not continue, if yes break the loops + if (devicon.name + devicon.versions.font[i] == devicon.name + mainVersionsArray[j]) { + icon.main = devicon.name + "-" + devicon.versions.font[i]; + i = 99999; // break first loop (and second) + } + } + } + + // Push new icon format to $scope.icons + $scope.icons.push(icon); + }); + + // Select first icon by default in scope + $scope.selectedIcon = $scope.icons[0]; + $scope.selectedFontIcon = $scope.icons[0].font[0]; + $scope.selectedSvgIcon = $scope.selectSvg($scope.icons[0].svg[0], 0); + $scope.selectedFontIndex = 0; + + /*------ End of "Re-format devicon.json" ------*/ + }); + + /* + | Change selected icon + |-------------------------------- + */ + $scope.selectIcon = function(icon) { + $scope.selectedIcon = icon; + $scope.selectedFontIcon = icon.font[0]; + $scope.selectedFontIndex = 0; + $scope.selectedSvgIcon = $scope.selectSvg(icon.svg[0], 0); + + } + /*---- End of "Change selected icon" ----*/ + + + /* + | Change selected icon font version + |-------------------------------- + */ + $scope.selectFont = function(fontVersion, colored, index) { + $scope.selectedFontIcon = fontVersion; + $scope.colored = colored ? true : false; + $scope.selectedFontIndex = index; + } + /*---- End of "Change selected font icon" ----*/ + + /* + | Change selected icon svg version + |-------------------------------- + */ + $scope.selectSvg = function(svgVersion, index) { + + $http.get(baseUrl + '/icons/' + $scope.selectedIcon.name + '/' + $scope.selectedIcon.name + '-' + svgVersion + '.svg').success(function(data){ + + var svg = angular.element(data); + var innerSVG = (svg[0].innerHTML); + + $scope.selectedSvgIcon = innerSVG; + $scope.selectedSvgIndex = index; + }); + } + /*---- End of "Change selected svg icon" ----*/ + +}); + +/*================ End of "Devicons controller" ================*/ + +/* +||================================================================== +|| Convert icon img to svg +||================================================================== +*/ + +devicon.directive('imgToSvg', function ($http, $compile) { + + var baseUrl = window.location.href; + + return { + link : function($scope, $element, $attrs) { + + $attrs.$observe('src', function(val){ + + $http.get(baseUrl + val).success(function(data){ + + var svg = angular.element(data); + svg = svg.removeAttr('xmlns'); + svg = svg.addClass('not-colored'); + svg = svg.attr('svg-color', ''); + var $e = $compile(svg)($scope); + $element.replaceWith($e); + $element = $e; + }); + }); + } + }; +}); + +/*================ End of "Convert icon img to svg" ================*/ + +/* +||================================================================== +|| Add color to svg when hovering +||================================================================== +*/ + +devicon.directive('svgColor', function () { + + return { + link : function($scope, $element, $attrs) { + $element.on('mouseenter', function(){ + $element.removeClass('not-colored'); + }); + $element.on('mouseleave', function(){ + $element.addClass('not-colored'); + }); + } + }; +}); + +/*================ End of "Add color to svg when hovering" ================*/ + +/* +||================================================================== +|| Show all icons on click +||================================================================== +*/ + +devicon.directive('iconDetails', function ($http, $compile) { + + return { + template: '
{{icon.name}}
{{icon.name}}
', + replace: true, + scope: { + icon: "=" + }, + compile: function CompilingFunction($templateElement) { + $element.on('click', function(){ + $templateElement.replaceWith(this.template); + }); + } + }; +}); + +/*================ End of "Add color to svg when hovering" ================*/ diff --git a/docs/browserconfig.xml b/docs/browserconfig.xml new file mode 100644 index 00000000..fe44cae8 --- /dev/null +++ b/docs/browserconfig.xml @@ -0,0 +1,12 @@ + + + + + + + + + #da532c + + + diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..98aed988 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,154 @@ + + + + + + + + + + + + DEVICON | All programming languages and development tools related icons font + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+

Devicon {{ latestReleaseTagging }}

+

Devicon is a set of icons representing programming languages, designing & development tools. You can use it as a font or directly copy/paste the svg code into your project.

+

(Super) Quick Setup

+
First select an icon on the right, then select the version below and copy/paste the code into your project.
+
    +
  • +

    Font versions

    +
      +
      +
    • + +
    • +
    • + +
    • +
      +
    +
    +
    <!-- in your header -->
    + <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/devicons/devicon@{{ latestReleaseTagging }}/devicon.min.css">
    +
    +
    <!-- in your body -->
    + <i class="devicon-{{selectedIcon.name}}-{{selectedFontIcon}} colored"></i>
    +
    +
  • +
  • +

    SVG versions

    +
      +
    • + +
    • +
    +
    + <svg viewBox="0 0 128 128">
    +
    {{selectedSvgIcon}}
    + </svg> +
    +
  • +
+ +

Github Repo

+
If you prefer a local install, you can download all the files on the github repo.
+

+ DOWNLOAD +

+

+ GO TO REPO +

+

+ CONTRIBUTE +

+ + +
+ +
+ + + +
    +
  • + + +

    {{icon.name}}

    +
    +
  • +
+
+
+ + + + + + + + + + diff --git a/docs/logos/android-chrome-144x144.png b/docs/logos/android-chrome-144x144.png new file mode 100644 index 00000000..6e2ffc45 Binary files /dev/null and b/docs/logos/android-chrome-144x144.png differ diff --git a/docs/logos/android-chrome-192x192.png b/docs/logos/android-chrome-192x192.png new file mode 100644 index 00000000..7ff1a564 Binary files /dev/null and b/docs/logos/android-chrome-192x192.png differ diff --git a/docs/logos/android-chrome-36x36.png b/docs/logos/android-chrome-36x36.png new file mode 100644 index 00000000..d130b539 Binary files /dev/null and b/docs/logos/android-chrome-36x36.png differ diff --git a/docs/logos/android-chrome-48x48.png b/docs/logos/android-chrome-48x48.png new file mode 100644 index 00000000..f6530499 Binary files /dev/null and b/docs/logos/android-chrome-48x48.png differ diff --git a/docs/logos/android-chrome-72x72.png b/docs/logos/android-chrome-72x72.png new file mode 100644 index 00000000..10466091 Binary files /dev/null and b/docs/logos/android-chrome-72x72.png differ diff --git a/docs/logos/android-chrome-96x96.png b/docs/logos/android-chrome-96x96.png new file mode 100644 index 00000000..a4d7559f Binary files /dev/null and b/docs/logos/android-chrome-96x96.png differ diff --git a/docs/logos/apple-touch-icon-114x114.png b/docs/logos/apple-touch-icon-114x114.png new file mode 100644 index 00000000..95f7ab1a Binary files /dev/null and b/docs/logos/apple-touch-icon-114x114.png differ diff --git a/docs/logos/apple-touch-icon-120x120.png b/docs/logos/apple-touch-icon-120x120.png new file mode 100644 index 00000000..4c56a264 Binary files /dev/null and b/docs/logos/apple-touch-icon-120x120.png differ diff --git a/docs/logos/apple-touch-icon-144x144.png b/docs/logos/apple-touch-icon-144x144.png new file mode 100644 index 00000000..dc11d0d1 Binary files /dev/null and b/docs/logos/apple-touch-icon-144x144.png differ diff --git a/docs/logos/apple-touch-icon-152x152.png b/docs/logos/apple-touch-icon-152x152.png new file mode 100644 index 00000000..bd084940 Binary files /dev/null and b/docs/logos/apple-touch-icon-152x152.png differ diff --git a/docs/logos/apple-touch-icon-180x180.png b/docs/logos/apple-touch-icon-180x180.png new file mode 100644 index 00000000..af389045 Binary files /dev/null and b/docs/logos/apple-touch-icon-180x180.png differ diff --git a/docs/logos/apple-touch-icon-57x57.png b/docs/logos/apple-touch-icon-57x57.png new file mode 100644 index 00000000..381d190f Binary files /dev/null and b/docs/logos/apple-touch-icon-57x57.png differ diff --git a/docs/logos/apple-touch-icon-60x60.png b/docs/logos/apple-touch-icon-60x60.png new file mode 100644 index 00000000..a0bc25f8 Binary files /dev/null and b/docs/logos/apple-touch-icon-60x60.png differ diff --git a/docs/logos/apple-touch-icon-72x72.png b/docs/logos/apple-touch-icon-72x72.png new file mode 100644 index 00000000..c720d1d4 Binary files /dev/null and b/docs/logos/apple-touch-icon-72x72.png differ diff --git a/docs/logos/apple-touch-icon-76x76.png b/docs/logos/apple-touch-icon-76x76.png new file mode 100644 index 00000000..57f73300 Binary files /dev/null and b/docs/logos/apple-touch-icon-76x76.png differ diff --git a/docs/logos/apple-touch-icon-precomposed.png b/docs/logos/apple-touch-icon-precomposed.png new file mode 100644 index 00000000..91a9d077 Binary files /dev/null and b/docs/logos/apple-touch-icon-precomposed.png differ diff --git a/docs/logos/apple-touch-icon.png b/docs/logos/apple-touch-icon.png new file mode 100644 index 00000000..af389045 Binary files /dev/null and b/docs/logos/apple-touch-icon.png differ diff --git a/docs/logos/favicon-16x16.png b/docs/logos/favicon-16x16.png new file mode 100644 index 00000000..642eb90a Binary files /dev/null and b/docs/logos/favicon-16x16.png differ diff --git a/docs/logos/favicon-32x32.png b/docs/logos/favicon-32x32.png new file mode 100644 index 00000000..1bcfe6f9 Binary files /dev/null and b/docs/logos/favicon-32x32.png differ diff --git a/docs/logos/favicon-96x96.png b/docs/logos/favicon-96x96.png new file mode 100644 index 00000000..a4d7559f Binary files /dev/null and b/docs/logos/favicon-96x96.png differ diff --git a/docs/logos/favicon.ico b/docs/logos/favicon.ico new file mode 100644 index 00000000..9ea1715a Binary files /dev/null and b/docs/logos/favicon.ico differ diff --git a/docs/logos/mstile-144x144.png b/docs/logos/mstile-144x144.png new file mode 100644 index 00000000..0dbf45e2 Binary files /dev/null and b/docs/logos/mstile-144x144.png differ diff --git a/docs/logos/mstile-150x150.png b/docs/logos/mstile-150x150.png new file mode 100644 index 00000000..7015de63 Binary files /dev/null and b/docs/logos/mstile-150x150.png differ diff --git a/docs/logos/mstile-310x150.png b/docs/logos/mstile-310x150.png new file mode 100644 index 00000000..8544b04e Binary files /dev/null and b/docs/logos/mstile-310x150.png differ diff --git a/docs/logos/mstile-310x310.png b/docs/logos/mstile-310x310.png new file mode 100644 index 00000000..f56755c3 Binary files /dev/null and b/docs/logos/mstile-310x310.png differ diff --git a/docs/logos/mstile-70x70.png b/docs/logos/mstile-70x70.png new file mode 100644 index 00000000..f93136ec Binary files /dev/null and b/docs/logos/mstile-70x70.png differ diff --git a/docs/logos/safari-pinned-tab.svg b/docs/logos/safari-pinned-tab.svg new file mode 100644 index 00000000..eeb0d347 --- /dev/null +++ b/docs/logos/safari-pinned-tab.svg @@ -0,0 +1,320 @@ + + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/manifest.json b/docs/manifest.json new file mode 100644 index 00000000..eca47a64 --- /dev/null +++ b/docs/manifest.json @@ -0,0 +1,41 @@ +{ + "name": "Devicon", + "icons": [ + { + "src": "\/logos/android-chrome-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "\/logos/android-chrome-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "\/logos/android-chrome-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "\/logos/android-chrome-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "\/logos/android-chrome-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "\/logos/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ] +} diff --git a/gulpfile.js b/gulpfile.js index 2422acd5..1541ffc1 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -141,7 +141,6 @@ function cleanUp() { let filePath = path.join(__dirname, name); return fsPromise.unlink(filePath); } catch(e) { - console.log("err was catch here"); console.log(e); } }) @@ -150,4 +149,4 @@ function cleanUp() { exports.updateCss = createDeviconMinCSS; -exports.clean = cleanUp; \ No newline at end of file +exports.clean = cleanUp; diff --git a/icons/aftereffects/aftereffects-original.svg b/icons/aftereffects/aftereffects-original.svg index a3836e54..952ac8a9 100644 --- a/icons/aftereffects/aftereffects-original.svg +++ b/icons/aftereffects/aftereffects-original.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/aftereffects/aftereffects-plain.svg b/icons/aftereffects/aftereffects-plain.svg index 66979bf3..c6343a31 100644 --- a/icons/aftereffects/aftereffects-plain.svg +++ b/icons/aftereffects/aftereffects-plain.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/babel/babel-original.svg b/icons/babel/babel-original.svg index af7b38b6..b1301c4e 100644 --- a/icons/babel/babel-original.svg +++ b/icons/babel/babel-original.svg @@ -1 +1 @@ -Artboard 3 \ No newline at end of file + \ No newline at end of file diff --git a/icons/babel/babel-plain.svg b/icons/babel/babel-plain.svg index e6ba7a0a..4f28c1f4 100644 --- a/icons/babel/babel-plain.svg +++ b/icons/babel/babel-plain.svg @@ -1 +1 @@ -Artboard 4 \ No newline at end of file + \ No newline at end of file diff --git a/icons/behance/behance-original-wordmark.svg b/icons/behance/behance-original-wordmark.svg index 3bfa7171..05f3fd6c 100644 --- a/icons/behance/behance-original-wordmark.svg +++ b/icons/behance/behance-original-wordmark.svg @@ -1 +1 @@ -Artboard 13 \ No newline at end of file + \ No newline at end of file diff --git a/icons/behance/behance-original.svg b/icons/behance/behance-original.svg index cc975ddc..acd1af5d 100644 --- a/icons/behance/behance-original.svg +++ b/icons/behance/behance-original.svg @@ -1 +1 @@ -Artboard 12 \ No newline at end of file + \ No newline at end of file diff --git a/icons/behance/behance-plain-wordmark.svg b/icons/behance/behance-plain-wordmark.svg index ca65c8f3..e7f6e3ab 100644 --- a/icons/behance/behance-plain-wordmark.svg +++ b/icons/behance/behance-plain-wordmark.svg @@ -1 +1 @@ -Artboard 15 \ No newline at end of file + \ No newline at end of file diff --git a/icons/behance/behance-plain.svg b/icons/behance/behance-plain.svg index a1ce4b5e..f2136ead 100644 --- a/icons/behance/behance-plain.svg +++ b/icons/behance/behance-plain.svg @@ -1 +1 @@ -Artboard 14 \ No newline at end of file + \ No newline at end of file diff --git a/icons/cakephp/cakephp-original-wordmark.svg b/icons/cakephp/cakephp-original-wordmark.svg index 3f19d90d..0a52b8bc 100644 --- a/icons/cakephp/cakephp-original-wordmark.svg +++ b/icons/cakephp/cakephp-original-wordmark.svg @@ -1 +1 @@ -Artboard 13 \ No newline at end of file + \ No newline at end of file diff --git a/icons/cakephp/cakephp-original.svg b/icons/cakephp/cakephp-original.svg index ead4c6c2..37558eb4 100644 --- a/icons/cakephp/cakephp-original.svg +++ b/icons/cakephp/cakephp-original.svg @@ -1 +1 @@ -Artboard 14 \ No newline at end of file + \ No newline at end of file diff --git a/icons/cakephp/cakephp-plain-wordmark.svg b/icons/cakephp/cakephp-plain-wordmark.svg index 1ab776eb..55166dd1 100644 --- a/icons/cakephp/cakephp-plain-wordmark.svg +++ b/icons/cakephp/cakephp-plain-wordmark.svg @@ -1 +1 @@ -Artboard 15 \ No newline at end of file + \ No newline at end of file diff --git a/icons/cakephp/cakephp-plain.svg b/icons/cakephp/cakephp-plain.svg index a675c8e8..e3717699 100644 --- a/icons/cakephp/cakephp-plain.svg +++ b/icons/cakephp/cakephp-plain.svg @@ -1 +1 @@ -Artboard 12 \ No newline at end of file + \ No newline at end of file diff --git a/icons/ceylon/ceylon-original-wordmark.svg b/icons/ceylon/ceylon-original-wordmark.svg index 778c7f31..cda2521c 100644 --- a/icons/ceylon/ceylon-original-wordmark.svg +++ b/icons/ceylon/ceylon-original-wordmark.svg @@ -1 +1 @@ -Artboard 13 \ No newline at end of file + \ No newline at end of file diff --git a/icons/ceylon/ceylon-original.svg b/icons/ceylon/ceylon-original.svg index 5bb3f4f8..e6ea3cde 100644 --- a/icons/ceylon/ceylon-original.svg +++ b/icons/ceylon/ceylon-original.svg @@ -1 +1 @@ -Artboard 12 \ No newline at end of file + \ No newline at end of file diff --git a/icons/ceylon/ceylon-plain-wordmark.svg b/icons/ceylon/ceylon-plain-wordmark.svg index b13cab4a..1666b4ee 100644 --- a/icons/ceylon/ceylon-plain-wordmark.svg +++ b/icons/ceylon/ceylon-plain-wordmark.svg @@ -1 +1 @@ -Artboard 15 \ No newline at end of file + \ No newline at end of file diff --git a/icons/ceylon/ceylon-plain.svg b/icons/ceylon/ceylon-plain.svg index 5c70fb22..4c12db25 100644 --- a/icons/ceylon/ceylon-plain.svg +++ b/icons/ceylon/ceylon-plain.svg @@ -1 +1 @@ -Artboard 14 \ No newline at end of file + \ No newline at end of file diff --git a/icons/couchdb/couchdb-original-wordmark.svg b/icons/couchdb/couchdb-original-wordmark.svg index c2ca9f2d..8ee76892 100644 --- a/icons/couchdb/couchdb-original-wordmark.svg +++ b/icons/couchdb/couchdb-original-wordmark.svg @@ -1 +1 @@ -Artboard 13 \ No newline at end of file + \ No newline at end of file diff --git a/icons/couchdb/couchdb-original.svg b/icons/couchdb/couchdb-original.svg index 1a9df6b2..ff88946f 100644 --- a/icons/couchdb/couchdb-original.svg +++ b/icons/couchdb/couchdb-original.svg @@ -1 +1 @@ -Artboard 12 \ No newline at end of file + \ No newline at end of file diff --git a/icons/couchdb/couchdb-plain-wordmark.svg b/icons/couchdb/couchdb-plain-wordmark.svg index 95104870..05a8190d 100644 --- a/icons/couchdb/couchdb-plain-wordmark.svg +++ b/icons/couchdb/couchdb-plain-wordmark.svg @@ -1 +1 @@ -Artboard 15 \ No newline at end of file + \ No newline at end of file diff --git a/icons/couchdb/couchdb-plain.svg b/icons/couchdb/couchdb-plain.svg index a71c7067..add01e75 100644 --- a/icons/couchdb/couchdb-plain.svg +++ b/icons/couchdb/couchdb-plain.svg @@ -1 +1 @@ -Artboard 14 \ No newline at end of file + \ No newline at end of file diff --git a/icons/cucumber/cucumber-plain-wordmark.svg b/icons/cucumber/cucumber-plain-wordmark.svg index 7971734e..f6310cd7 100644 --- a/icons/cucumber/cucumber-plain-wordmark.svg +++ b/icons/cucumber/cucumber-plain-wordmark.svg @@ -2,11 +2,7 @@ - -cucumber-plain-wordmark - - -Artboard 13 \ No newline at end of file + \ No newline at end of file diff --git a/icons/devicon/devicon-original.svg b/icons/devicon/devicon-original.svg index 3988e71c..1ca66477 100644 --- a/icons/devicon/devicon-original.svg +++ b/icons/devicon/devicon-original.svg @@ -1 +1 @@ -Artboard 15 \ No newline at end of file + \ No newline at end of file diff --git a/icons/devicon/devicon-plain-wordmark.svg b/icons/devicon/devicon-plain-wordmark.svg index d85245f1..e6fdda32 100644 --- a/icons/devicon/devicon-plain-wordmark.svg +++ b/icons/devicon/devicon-plain-wordmark.svg @@ -1 +1 @@ -Artboard 12 \ No newline at end of file + \ No newline at end of file diff --git a/icons/devicon/devicon-plain.svg b/icons/devicon/devicon-plain.svg index b342e04b..798628c2 100644 --- a/icons/devicon/devicon-plain.svg +++ b/icons/devicon/devicon-plain.svg @@ -1 +1 @@ -Artboard 14 \ No newline at end of file + \ No newline at end of file diff --git a/icons/electron/electron-original-wordmark.svg b/icons/electron/electron-original-wordmark.svg index a8de9172..9d5c90df 100644 --- a/icons/electron/electron-original-wordmark.svg +++ b/icons/electron/electron-original-wordmark.svg @@ -1 +1 @@ -Artboard 7 \ No newline at end of file + \ No newline at end of file diff --git a/icons/electron/electron-original.svg b/icons/electron/electron-original.svg index 845baead..9fdf44ff 100644 --- a/icons/electron/electron-original.svg +++ b/icons/electron/electron-original.svg @@ -1 +1 @@ -Artboard 5 \ No newline at end of file + \ No newline at end of file diff --git a/icons/elm/elm-original-wordmark.svg b/icons/elm/elm-original-wordmark.svg index 06337d5b..7345d227 100644 --- a/icons/elm/elm-original-wordmark.svg +++ b/icons/elm/elm-original-wordmark.svg @@ -1 +1 @@ -Artboard 13 \ No newline at end of file + \ No newline at end of file diff --git a/icons/elm/elm-original.svg b/icons/elm/elm-original.svg index e7183fb3..ceccdeba 100644 --- a/icons/elm/elm-original.svg +++ b/icons/elm/elm-original.svg @@ -1 +1 @@ -Artboard 12 \ No newline at end of file + \ No newline at end of file diff --git a/icons/elm/elm-plain-wordmark.svg b/icons/elm/elm-plain-wordmark.svg index 475a0472..d94da322 100644 --- a/icons/elm/elm-plain-wordmark.svg +++ b/icons/elm/elm-plain-wordmark.svg @@ -1 +1 @@ -Artboard 15 \ No newline at end of file + \ No newline at end of file diff --git a/icons/elm/elm-plain.svg b/icons/elm/elm-plain.svg index cfeaddac..2a061551 100644 --- a/icons/elm/elm-plain.svg +++ b/icons/elm/elm-plain.svg @@ -1 +1 @@ -Artboard 14 \ No newline at end of file + \ No newline at end of file diff --git a/icons/ember/ember-original-wordmark.svg b/icons/ember/ember-original-wordmark.svg index f0d141f6..7178ca36 100644 --- a/icons/ember/ember-original-wordmark.svg +++ b/icons/ember/ember-original-wordmark.svg @@ -1 +1 @@ -Artboard 5® \ No newline at end of file +® \ No newline at end of file diff --git a/icons/facebook/facebook-original.svg b/icons/facebook/facebook-original.svg index c7584f04..10e5117c 100644 --- a/icons/facebook/facebook-original.svg +++ b/icons/facebook/facebook-original.svg @@ -1 +1 @@ -facebook \ No newline at end of file + \ No newline at end of file diff --git a/icons/facebook/facebook-plain.svg b/icons/facebook/facebook-plain.svg index 3e30b5a4..d51fa53c 100644 --- a/icons/facebook/facebook-plain.svg +++ b/icons/facebook/facebook-plain.svg @@ -1 +1 @@ -facebook-plain \ No newline at end of file + \ No newline at end of file diff --git a/icons/flutter/flutter-original.svg b/icons/flutter/flutter-original.svg index 125bde63..c9c48354 100644 --- a/icons/flutter/flutter-original.svg +++ b/icons/flutter/flutter-original.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/flutter/flutter-plain.svg b/icons/flutter/flutter-plain.svg index d5659a85..b453881c 100644 --- a/icons/flutter/flutter-plain.svg +++ b/icons/flutter/flutter-plain.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/gatling/gatling-plain-wordmark.svg b/icons/gatling/gatling-plain-wordmark.svg index af60e63e..970a8d39 100644 --- a/icons/gatling/gatling-plain-wordmark.svg +++ b/icons/gatling/gatling-plain-wordmark.svg @@ -2,10 +2,7 @@ - - - - \ No newline at end of file + \ No newline at end of file diff --git a/icons/gatsby/gatsby-original.svg b/icons/gatsby/gatsby-original.svg index c888c297..b4e7df09 100644 --- a/icons/gatsby/gatsby-original.svg +++ b/icons/gatsby/gatsby-original.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/gatsby/gatsby-plain-wordmark.svg b/icons/gatsby/gatsby-plain-wordmark.svg index eb4fb809..bb75ec1f 100644 --- a/icons/gatsby/gatsby-plain-wordmark.svg +++ b/icons/gatsby/gatsby-plain-wordmark.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/gatsby/gatsby-plain.svg b/icons/gatsby/gatsby-plain.svg index c888c297..b4e7df09 100644 --- a/icons/gatsby/gatsby-plain.svg +++ b/icons/gatsby/gatsby-plain.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/google/google-original-wordmark.svg b/icons/google/google-original-wordmark.svg index 67bb7300..ffcfb8ff 100644 --- a/icons/google/google-original-wordmark.svg +++ b/icons/google/google-original-wordmark.svg @@ -1 +1 @@ -google \ No newline at end of file + \ No newline at end of file diff --git a/icons/google/google-original.svg b/icons/google/google-original.svg index b39734d9..6b4844be 100644 --- a/icons/google/google-original.svg +++ b/icons/google/google-original.svg @@ -1 +1 @@ -google \ No newline at end of file + \ No newline at end of file diff --git a/icons/google/google-plain-wordmark.svg b/icons/google/google-plain-wordmark.svg index 8bd4791c..a2f2f2f4 100644 --- a/icons/google/google-plain-wordmark.svg +++ b/icons/google/google-plain-wordmark.svg @@ -1 +1 @@ -google \ No newline at end of file + \ No newline at end of file diff --git a/icons/google/google-plain.svg b/icons/google/google-plain.svg index 44b6e93b..e87a0e89 100644 --- a/icons/google/google-plain.svg +++ b/icons/google/google-plain.svg @@ -1 +1 @@ -google \ No newline at end of file + \ No newline at end of file diff --git a/icons/gradle/gradle-plain-wordmark.svg b/icons/gradle/gradle-plain-wordmark.svg index 520d3fe5..19b0af74 100644 --- a/icons/gradle/gradle-plain-wordmark.svg +++ b/icons/gradle/gradle-plain-wordmark.svg @@ -2,10 +2,7 @@ - - - - - - - - - - + + + + + \ No newline at end of file diff --git a/icons/haskell/haskell-original.svg b/icons/haskell/haskell-original.svg index 3c306d55..131008f3 100644 --- a/icons/haskell/haskell-original.svg +++ b/icons/haskell/haskell-original.svg @@ -1,11 +1,6 @@ - - - - + + + \ No newline at end of file diff --git a/icons/haskell/haskell-plain-wordmark.svg b/icons/haskell/haskell-plain-wordmark.svg index 3d4aa26f..e08fba3a 100644 --- a/icons/haskell/haskell-plain-wordmark.svg +++ b/icons/haskell/haskell-plain-wordmark.svg @@ -1,7 +1,7 @@ - - + + diff --git a/icons/haxe/haxe-original.svg b/icons/haxe/haxe-original.svg index 73e09daf..465f0e84 100644 --- a/icons/haxe/haxe-original.svg +++ b/icons/haxe/haxe-original.svg @@ -1 +1 @@ - + diff --git a/icons/haxe/haxe-plain.svg b/icons/haxe/haxe-plain.svg index d36b321f..165b0dbd 100644 --- a/icons/haxe/haxe-plain.svg +++ b/icons/haxe/haxe-plain.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/intellij/intellij-original-wordmark.svg b/icons/intellij/intellij-original-wordmark.svg index 8f7bd564..c1875c75 100644 --- a/icons/intellij/intellij-original-wordmark.svg +++ b/icons/intellij/intellij-original-wordmark.svg @@ -1 +1 @@ -Artboard 12 \ No newline at end of file + \ No newline at end of file diff --git a/icons/intellij/intellij-original.svg b/icons/intellij/intellij-original.svg index 37530ce2..28711d34 100644 --- a/icons/intellij/intellij-original.svg +++ b/icons/intellij/intellij-original.svg @@ -1 +1 @@ -Artboard 14 \ No newline at end of file + \ No newline at end of file diff --git a/icons/intellij/intellij-plain-wordmark.svg b/icons/intellij/intellij-plain-wordmark.svg index 0cffc4f3..9cc07811 100644 --- a/icons/intellij/intellij-plain-wordmark.svg +++ b/icons/intellij/intellij-plain-wordmark.svg @@ -1 +1 @@ -Artboard 13 \ No newline at end of file +Artboard 13 \ No newline at end of file diff --git a/icons/intellij/intellij-plain.svg b/icons/intellij/intellij-plain.svg index bfa0d8ff..ae60297c 100644 --- a/icons/intellij/intellij-plain.svg +++ b/icons/intellij/intellij-plain.svg @@ -1 +1 @@ -Artboard 15 \ No newline at end of file + \ No newline at end of file diff --git a/icons/ionic/ionic-original-wordmark.svg b/icons/ionic/ionic-original-wordmark.svg index aa483068..8365af2d 100644 --- a/icons/ionic/ionic-original-wordmark.svg +++ b/icons/ionic/ionic-original-wordmark.svg @@ -1 +1 @@ -Artboard 7 \ No newline at end of file + \ No newline at end of file diff --git a/icons/ionic/ionic-original.svg b/icons/ionic/ionic-original.svg index e4dc8508..5bc1d4c2 100644 --- a/icons/ionic/ionic-original.svg +++ b/icons/ionic/ionic-original.svg @@ -1 +1 @@ -Artboard 5 \ No newline at end of file + \ No newline at end of file diff --git a/icons/jasmine/jasmine-plain-wordmark.svg b/icons/jasmine/jasmine-plain-wordmark.svg index 28c9a689..87f83866 100644 --- a/icons/jasmine/jasmine-plain-wordmark.svg +++ b/icons/jasmine/jasmine-plain-wordmark.svg @@ -1 +1 @@ -jasmine-wordmark \ No newline at end of file + \ No newline at end of file diff --git a/icons/jasmine/jasmine-plain.svg b/icons/jasmine/jasmine-plain.svg index c5ff6587..c76f38ca 100644 --- a/icons/jasmine/jasmine-plain.svg +++ b/icons/jasmine/jasmine-plain.svg @@ -1 +1 @@ -jasmine-plain \ No newline at end of file + \ No newline at end of file diff --git a/icons/kotlin/kotlin-original-wordmark.svg b/icons/kotlin/kotlin-original-wordmark.svg index 42f3fb2a..721c7469 100644 --- a/icons/kotlin/kotlin-original-wordmark.svg +++ b/icons/kotlin/kotlin-original-wordmark.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/kotlin/kotlin-original.svg b/icons/kotlin/kotlin-original.svg index 2c31fd74..95dd60b9 100644 --- a/icons/kotlin/kotlin-original.svg +++ b/icons/kotlin/kotlin-original.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/kotlin/kotlin-plain-wordmark.svg b/icons/kotlin/kotlin-plain-wordmark.svg index af80dce3..73dc217b 100644 --- a/icons/kotlin/kotlin-plain-wordmark.svg +++ b/icons/kotlin/kotlin-plain-wordmark.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/kotlin/kotlin-plain.svg b/icons/kotlin/kotlin-plain.svg index 61e3f53d..5bd82e67 100644 --- a/icons/kotlin/kotlin-plain.svg +++ b/icons/kotlin/kotlin-plain.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/linkedin/linkedin-original-wordmark.svg b/icons/linkedin/linkedin-original-wordmark.svg index 6d2f607a..1f4c0a1b 100644 --- a/icons/linkedin/linkedin-original-wordmark.svg +++ b/icons/linkedin/linkedin-original-wordmark.svg @@ -1 +1 @@ -Artboard 13 \ No newline at end of file + \ No newline at end of file diff --git a/icons/linkedin/linkedin-original.svg b/icons/linkedin/linkedin-original.svg index 5c8853c4..2d99a0ee 100644 --- a/icons/linkedin/linkedin-original.svg +++ b/icons/linkedin/linkedin-original.svg @@ -1 +1 @@ -Artboard 12 \ No newline at end of file + \ No newline at end of file diff --git a/icons/linkedin/linkedin-plain-wordmark.svg b/icons/linkedin/linkedin-plain-wordmark.svg index f964f899..c63b077b 100644 --- a/icons/linkedin/linkedin-plain-wordmark.svg +++ b/icons/linkedin/linkedin-plain-wordmark.svg @@ -1 +1 @@ -Artboard 15 \ No newline at end of file + \ No newline at end of file diff --git a/icons/materialui/materialui-original.svg b/icons/materialui/materialui-original.svg index 14107439..c27eedb1 100644 --- a/icons/materialui/materialui-original.svg +++ b/icons/materialui/materialui-original.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/materialui/materialui-plain.svg b/icons/materialui/materialui-plain.svg index c9332822..ab19859d 100644 --- a/icons/materialui/materialui-plain.svg +++ b/icons/materialui/materialui-plain.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/mocha/mocha-plain.svg b/icons/mocha/mocha-plain.svg index b62101e7..057c46c8 100644 --- a/icons/mocha/mocha-plain.svg +++ b/icons/mocha/mocha-plain.svg @@ -1 +1 @@ -mocha \ No newline at end of file + \ No newline at end of file diff --git a/icons/nestjs/nestjs-plain-wordmark.svg b/icons/nestjs/nestjs-plain-wordmark.svg index de6ecf6d..f8d19de6 100644 --- a/icons/nestjs/nestjs-plain-wordmark.svg +++ b/icons/nestjs/nestjs-plain-wordmark.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/nestjs/nestjs-plain.svg b/icons/nestjs/nestjs-plain.svg index 7b5a0298..c76e5021 100644 --- a/icons/nestjs/nestjs-plain.svg +++ b/icons/nestjs/nestjs-plain.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/npm/npm-original-wordmark.svg b/icons/npm/npm-original-wordmark.svg index 087871e8..7d6cd234 100644 --- a/icons/npm/npm-original-wordmark.svg +++ b/icons/npm/npm-original-wordmark.svg @@ -1 +1 @@ -Artboard 5 \ No newline at end of file + \ No newline at end of file diff --git a/icons/premierepro/premierepro-original.svg b/icons/premierepro/premierepro-original.svg index 58ce1d3e..fbc7c3fd 100644 --- a/icons/premierepro/premierepro-original.svg +++ b/icons/premierepro/premierepro-original.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/premierepro/premierepro-plain.svg b/icons/premierepro/premierepro-plain.svg index 676cb5ba..bbd771a9 100644 --- a/icons/premierepro/premierepro-plain.svg +++ b/icons/premierepro/premierepro-plain.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/protractor/protractor-plain-wordmark.svg b/icons/protractor/protractor-plain-wordmark.svg index 2b63f99e..3ccb485c 100644 --- a/icons/protractor/protractor-plain-wordmark.svg +++ b/icons/protractor/protractor-plain-wordmark.svg @@ -2,10 +2,7 @@ - - - -Artboard 12 \ No newline at end of file + \ No newline at end of file diff --git a/icons/pycharm/pycharm-original.svg b/icons/pycharm/pycharm-original.svg index 61a84bdb..84b86eff 100644 --- a/icons/pycharm/pycharm-original.svg +++ b/icons/pycharm/pycharm-original.svg @@ -1 +1 @@ -Artboard 14 \ No newline at end of file + \ No newline at end of file diff --git a/icons/pycharm/pycharm-plain-wordmark.svg b/icons/pycharm/pycharm-plain-wordmark.svg index f938146c..d48472a0 100644 --- a/icons/pycharm/pycharm-plain-wordmark.svg +++ b/icons/pycharm/pycharm-plain-wordmark.svg @@ -1 +1 @@ -Artboard 13 \ No newline at end of file + \ No newline at end of file diff --git a/icons/pycharm/pycharm-plain.svg b/icons/pycharm/pycharm-plain.svg index dc0977cf..cfa07b11 100644 --- a/icons/pycharm/pycharm-plain.svg +++ b/icons/pycharm/pycharm-plain.svg @@ -1 +1 @@ -Artboard 15 \ No newline at end of file + \ No newline at end of file diff --git a/icons/rubymine/rubymine-original-wordmark.svg b/icons/rubymine/rubymine-original-wordmark.svg index 3814f3b7..77f5a800 100644 --- a/icons/rubymine/rubymine-original-wordmark.svg +++ b/icons/rubymine/rubymine-original-wordmark.svg @@ -1 +1 @@ -Artboard 12 \ No newline at end of file + \ No newline at end of file diff --git a/icons/rubymine/rubymine-original.svg b/icons/rubymine/rubymine-original.svg index 120ea95e..fd57fd52 100644 --- a/icons/rubymine/rubymine-original.svg +++ b/icons/rubymine/rubymine-original.svg @@ -1 +1 @@ -Artboard 14 \ No newline at end of file + \ No newline at end of file diff --git a/icons/rubymine/rubymine-plain-wordmark.svg b/icons/rubymine/rubymine-plain-wordmark.svg index 56904042..9aecf489 100644 --- a/icons/rubymine/rubymine-plain-wordmark.svg +++ b/icons/rubymine/rubymine-plain-wordmark.svg @@ -1 +1 @@ -Artboard 13 \ No newline at end of file + \ No newline at end of file diff --git a/icons/rubymine/rubymine-plain.svg b/icons/rubymine/rubymine-plain.svg index 2fe42b1c..ac3a8c74 100644 --- a/icons/rubymine/rubymine-plain.svg +++ b/icons/rubymine/rubymine-plain.svg @@ -1 +1 @@ -Artboard 15 \ No newline at end of file + \ No newline at end of file diff --git a/icons/sequelize/sequelize-original-wordmark.svg b/icons/sequelize/sequelize-original-wordmark.svg index cf876aec..2bd34447 100644 --- a/icons/sequelize/sequelize-original-wordmark.svg +++ b/icons/sequelize/sequelize-original-wordmark.svg @@ -1 +1 @@ -Artboard 14 \ No newline at end of file + \ No newline at end of file diff --git a/icons/sequelize/sequelize-original.svg b/icons/sequelize/sequelize-original.svg index 6f970b0a..5200fa8b 100644 --- a/icons/sequelize/sequelize-original.svg +++ b/icons/sequelize/sequelize-original.svg @@ -1 +1 @@ -Artboard 12 \ No newline at end of file + \ No newline at end of file diff --git a/icons/sequelize/sequelize-plain-wordmark.svg b/icons/sequelize/sequelize-plain-wordmark.svg index 7995585c..36a6296a 100644 --- a/icons/sequelize/sequelize-plain-wordmark.svg +++ b/icons/sequelize/sequelize-plain-wordmark.svg @@ -1 +1 @@ -Artboard 15 \ No newline at end of file + \ No newline at end of file diff --git a/icons/sequelize/sequelize-plain.svg b/icons/sequelize/sequelize-plain.svg index 7a14c4e4..38872350 100644 --- a/icons/sequelize/sequelize-plain.svg +++ b/icons/sequelize/sequelize-plain.svg @@ -1 +1 @@ -Artboard 13 \ No newline at end of file + \ No newline at end of file diff --git a/icons/sketch/sketch-line-wordmark.svg b/icons/sketch/sketch-line-wordmark.svg index 5af2246f..53f5690e 100644 --- a/icons/sketch/sketch-line-wordmark.svg +++ b/icons/sketch/sketch-line-wordmark.svg @@ -1 +1 @@ -Artboard 15 \ No newline at end of file + \ No newline at end of file diff --git a/icons/sketch/sketch-line.svg b/icons/sketch/sketch-line.svg index 0ca5cf53..f4e94fda 100644 --- a/icons/sketch/sketch-line.svg +++ b/icons/sketch/sketch-line.svg @@ -1 +1 @@ -Artboard 14 \ No newline at end of file + \ No newline at end of file diff --git a/icons/sketch/sketch-original-wordmark.svg b/icons/sketch/sketch-original-wordmark.svg index adb2ec23..2d3cceec 100644 --- a/icons/sketch/sketch-original-wordmark.svg +++ b/icons/sketch/sketch-original-wordmark.svg @@ -1 +1 @@ -Artboard 13 \ No newline at end of file + \ No newline at end of file diff --git a/icons/sketch/sketch-original.svg b/icons/sketch/sketch-original.svg index b23c7001..4be21ee2 100644 --- a/icons/sketch/sketch-original.svg +++ b/icons/sketch/sketch-original.svg @@ -1 +1 @@ -Artboard 12 \ No newline at end of file + \ No newline at end of file diff --git a/icons/slack/slack-original-wordmark.svg b/icons/slack/slack-original-wordmark.svg index 0e6eceee..114ca01d 100644 --- a/icons/slack/slack-original-wordmark.svg +++ b/icons/slack/slack-original-wordmark.svg @@ -1 +1 @@ -Artboard 10 \ No newline at end of file + \ No newline at end of file diff --git a/icons/slack/slack-original.svg b/icons/slack/slack-original.svg index 8be58637..31f76a3f 100644 --- a/icons/slack/slack-original.svg +++ b/icons/slack/slack-original.svg @@ -1 +1 @@ -Artboard 9 \ No newline at end of file + \ No newline at end of file diff --git a/icons/slack/slack-plain-wordmark.svg b/icons/slack/slack-plain-wordmark.svg index edbff71f..1f9abb52 100644 --- a/icons/slack/slack-plain-wordmark.svg +++ b/icons/slack/slack-plain-wordmark.svg @@ -1 +1 @@ -Artboard 11 \ No newline at end of file + \ No newline at end of file diff --git a/icons/slack/slack-plain.svg b/icons/slack/slack-plain.svg index 4a722c3b..f3d7042e 100644 --- a/icons/slack/slack-plain.svg +++ b/icons/slack/slack-plain.svg @@ -1 +1 @@ -Artboard 7 \ No newline at end of file + \ No newline at end of file diff --git a/icons/stylus/stylus-original.svg b/icons/stylus/stylus-original.svg index 65e353d4..0c4b010c 100644 --- a/icons/stylus/stylus-original.svg +++ b/icons/stylus/stylus-original.svg @@ -1 +1 @@ -Artboard 12 \ No newline at end of file + \ No newline at end of file diff --git a/icons/swift/swift-original-wordmark.svg b/icons/swift/swift-original-wordmark.svg index 02ba1b82..59012e32 100644 --- a/icons/swift/swift-original-wordmark.svg +++ b/icons/swift/swift-original-wordmark.svg @@ -1 +1 @@ -Artboard 2 \ No newline at end of file + \ No newline at end of file diff --git a/icons/swift/swift-original.svg b/icons/swift/swift-original.svg index 0a38338e..e6cd8c20 100644 --- a/icons/swift/swift-original.svg +++ b/icons/swift/swift-original.svg @@ -1 +1 @@ -Artboard 1 \ No newline at end of file + \ No newline at end of file diff --git a/icons/swift/swift-plain-wordmark.svg b/icons/swift/swift-plain-wordmark.svg index 6ee61545..ada93e83 100644 --- a/icons/swift/swift-plain-wordmark.svg +++ b/icons/swift/swift-plain-wordmark.svg @@ -1 +1 @@ -Artboard 6 \ No newline at end of file + \ No newline at end of file diff --git a/icons/twitter/twitter-original.svg b/icons/twitter/twitter-original.svg index 8d984bc2..8d95b1aa 100644 --- a/icons/twitter/twitter-original.svg +++ b/icons/twitter/twitter-original.svg @@ -1 +1 @@ -twitter-original \ No newline at end of file + \ No newline at end of file diff --git a/icons/typescript/typescript-original.svg b/icons/typescript/typescript-original.svg index c15dda80..0d7b0113 100644 --- a/icons/typescript/typescript-original.svg +++ b/icons/typescript/typescript-original.svg @@ -1 +1 @@ -Artboard 3 \ No newline at end of file + \ No newline at end of file diff --git a/icons/typescript/typescript-plain.svg b/icons/typescript/typescript-plain.svg index 881aa7b3..ec67184a 100644 --- a/icons/typescript/typescript-plain.svg +++ b/icons/typescript/typescript-plain.svg @@ -1 +1 @@ -Artboard 4 \ No newline at end of file + \ No newline at end of file diff --git a/icons/typo3/typo3-original-wordmark.svg b/icons/typo3/typo3-original-wordmark.svg index f070115c..51e25f57 100644 --- a/icons/typo3/typo3-original-wordmark.svg +++ b/icons/typo3/typo3-original-wordmark.svg @@ -1 +1 @@ - + diff --git a/icons/typo3/typo3-original.svg b/icons/typo3/typo3-original.svg index 33b37854..4316b9af 100644 --- a/icons/typo3/typo3-original.svg +++ b/icons/typo3/typo3-original.svg @@ -1 +1 @@ - + diff --git a/icons/vagrant/vagrant-original-wordmark.svg b/icons/vagrant/vagrant-original-wordmark.svg index 290d04b9..284f52fd 100644 --- a/icons/vagrant/vagrant-original-wordmark.svg +++ b/icons/vagrant/vagrant-original-wordmark.svg @@ -1 +1 @@ -Artboard 13 \ No newline at end of file + \ No newline at end of file diff --git a/icons/vagrant/vagrant-original.svg b/icons/vagrant/vagrant-original.svg index cea53e74..2169e6e6 100644 --- a/icons/vagrant/vagrant-original.svg +++ b/icons/vagrant/vagrant-original.svg @@ -1 +1 @@ -Artboard 12 \ No newline at end of file + \ No newline at end of file diff --git a/icons/visualstudio/visualstudio-plain-wordmark.svg b/icons/visualstudio/visualstudio-plain-wordmark.svg index 2016a99b..53c5ea83 100644 --- a/icons/visualstudio/visualstudio-plain-wordmark.svg +++ b/icons/visualstudio/visualstudio-plain-wordmark.svg @@ -1,27 +1,22 @@ - - - visualstudio - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + diff --git a/icons/visualstudio/visualstudio-plain.svg b/icons/visualstudio/visualstudio-plain.svg index a6323c4d..c443c579 100644 --- a/icons/visualstudio/visualstudio-plain.svg +++ b/icons/visualstudio/visualstudio-plain.svg @@ -1 +1 @@ -visualstudio-plain \ No newline at end of file + \ No newline at end of file diff --git a/icons/webpack/webpack-original-wordmark.svg b/icons/webpack/webpack-original-wordmark.svg index e1324089..af1b0eb0 100644 --- a/icons/webpack/webpack-original-wordmark.svg +++ b/icons/webpack/webpack-original-wordmark.svg @@ -1 +1 @@ -Artboard 14 \ No newline at end of file + \ No newline at end of file diff --git a/icons/webpack/webpack-original.svg b/icons/webpack/webpack-original.svg index 895f65df..0aed9d57 100644 --- a/icons/webpack/webpack-original.svg +++ b/icons/webpack/webpack-original.svg @@ -1 +1 @@ -Artboard 12 \ No newline at end of file + \ No newline at end of file diff --git a/icons/webpack/webpack-plain-wordmark.svg b/icons/webpack/webpack-plain-wordmark.svg index b1fa6df8..3f69ceee 100644 --- a/icons/webpack/webpack-plain-wordmark.svg +++ b/icons/webpack/webpack-plain-wordmark.svg @@ -1 +1 @@ -Artboard 15 \ No newline at end of file + \ No newline at end of file diff --git a/icons/webpack/webpack-plain.svg b/icons/webpack/webpack-plain.svg index 411e7e1d..79ce50ca 100644 --- a/icons/webpack/webpack-plain.svg +++ b/icons/webpack/webpack-plain.svg @@ -1 +1 @@ -Artboard 13 \ No newline at end of file + \ No newline at end of file diff --git a/icons/webstorm/webstorm-original-wordmark.svg b/icons/webstorm/webstorm-original-wordmark.svg index 52c83c58..d7e4fe94 100644 --- a/icons/webstorm/webstorm-original-wordmark.svg +++ b/icons/webstorm/webstorm-original-wordmark.svg @@ -1 +1 @@ -Artboard 12 \ No newline at end of file + \ No newline at end of file diff --git a/icons/webstorm/webstorm-original.svg b/icons/webstorm/webstorm-original.svg index 8da2b763..44ba6983 100644 --- a/icons/webstorm/webstorm-original.svg +++ b/icons/webstorm/webstorm-original.svg @@ -1 +1 @@ -Artboard 14 \ No newline at end of file + \ No newline at end of file diff --git a/icons/webstorm/webstorm-plain-wordmark.svg b/icons/webstorm/webstorm-plain-wordmark.svg index e7e7f253..4999ae7d 100644 --- a/icons/webstorm/webstorm-plain-wordmark.svg +++ b/icons/webstorm/webstorm-plain-wordmark.svg @@ -1 +1 @@ -Artboard 13 \ No newline at end of file + \ No newline at end of file diff --git a/icons/webstorm/webstorm-plain.svg b/icons/webstorm/webstorm-plain.svg index 4b6dfa82..0994a138 100644 --- a/icons/webstorm/webstorm-plain.svg +++ b/icons/webstorm/webstorm-plain.svg @@ -1 +1 @@ -Artboard 15 \ No newline at end of file + \ No newline at end of file diff --git a/icons/woocommerce/woocommerce-original-wordmark.svg b/icons/woocommerce/woocommerce-original-wordmark.svg index 26a60e10..ffd51273 100644 --- a/icons/woocommerce/woocommerce-original-wordmark.svg +++ b/icons/woocommerce/woocommerce-original-wordmark.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/woocommerce/woocommerce-original.svg b/icons/woocommerce/woocommerce-original.svg index 2c10ccca..f730c194 100644 --- a/icons/woocommerce/woocommerce-original.svg +++ b/icons/woocommerce/woocommerce-original.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/woocommerce/woocommerce-plain-wordmark.svg b/icons/woocommerce/woocommerce-plain-wordmark.svg index fb2e1144..5b4d7105 100644 --- a/icons/woocommerce/woocommerce-plain-wordmark.svg +++ b/icons/woocommerce/woocommerce-plain-wordmark.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/woocommerce/woocommerce-plain.svg b/icons/woocommerce/woocommerce-plain.svg index b7ea19e2..4ed03913 100644 --- a/icons/woocommerce/woocommerce-plain.svg +++ b/icons/woocommerce/woocommerce-plain.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/yarn/yarn-original-wordmark.svg b/icons/yarn/yarn-original-wordmark.svg index 14ab501a..b20216cf 100644 --- a/icons/yarn/yarn-original-wordmark.svg +++ b/icons/yarn/yarn-original-wordmark.svg @@ -1 +1 @@ -Artboard 5 \ No newline at end of file + \ No newline at end of file diff --git a/icons/yarn/yarn-original.svg b/icons/yarn/yarn-original.svg index 1aa48bc5..4d70a31e 100644 --- a/icons/yarn/yarn-original.svg +++ b/icons/yarn/yarn-original.svg @@ -1 +1 @@ -Artboard 7 \ No newline at end of file + \ No newline at end of file diff --git a/index.html b/index.html deleted file mode 100644 index f7e9cfe8..00000000 --- a/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - Devicon - - - - - - - - - - - -
- - - - - -
- -
- - -

{{icon.name}}-{{version}} (font icon)

-
- -
- {{icon.name}}-{{version}} -

{{icon.name}}-{{version}} (svg)

-
- -
- - - - - - - - diff --git a/package-lock.json b/package-lock.json index 75efa408..f995f26e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1963,9 +1963,9 @@ "dev": true }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "interpret": { diff --git a/package.json b/package.json index 602e5c48..651a8a7a 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,9 @@ "main": "devicon.min.css", "scripts": { "build-css": "gulp updateCss && gulp clean", - "build": "python ./.github/scripts/icomoon_build.py ./.github/scripts/build_assets/geckodriver-v0.27.0-win64/geckodriver.exe ./icomoon.json ./devicon.json ./icons ./ --headless", - "peek": "python ./.github/scripts/icomoon_peek.py ./.github/scripts/build_assets/geckodriver-v0.27.0-win64/geckodriver.exe ./icomoon.json ./devicon.json ./icons ./ --headless" + "peek-test": "python ./.github/scripts/icomoon_peek.py ./.github/scripts/build_assets/geckodriver-v0.27.0-win64/geckodriver.exe ./icomoon.json ./devicon.json ./icons ./ --pr_title \"%PR_TITLE%\"", + "build-test": "python ./.github/scripts/icomoon_build.py ./.github/scripts/build_assets/geckodriver-v0.27.0-win64/geckodriver.exe ./icomoon.json ./devicon.json ./icons ./" + }, "repository": { "type": "git",