diff --git a/.github/ISSUE_TEMPLATE/icon-request.md b/.github/ISSUE_TEMPLATE/icon-request.md index 0d161208e..acb1af491 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 da5091aea..b95d4a7c9 100644 --- a/.github/scripts/build_assets/SeleniumRunner.py +++ b/.github/scripts/build_assets/SeleniumRunner.py @@ -89,20 +89,11 @@ def upload_icomoon(self, icomoon_json_path: str): :raises TimeoutException: happens when elements are not found. """ print("Uploading icomoon.json file...") - try: - self.click_hamburger_input() - - # find the file input and enter the file path - import_btn = self.driver.find_element(By.XPATH, "(//li[@class='file'])[1]//input") - import_btn.send_keys(icomoon_json_path) - except SeleniumTimeoutException as e: - print(e.stacktrace) - print("Selenium timed out. Couldn't find import button.") - self.close() - raise e - except Exception as e: - self.close() - raise e + self.click_hamburger_input() + + # find the file input and enter the file path + import_btn = self.driver.find_element(By.XPATH, "(//li[@class='file'])[1]//input") + import_btn.send_keys(icomoon_json_path) try: confirm_btn = WebDriverWait(self.driver, SeleniumRunner.MED_WAIT_IN_SEC).until( @@ -110,49 +101,42 @@ def upload_icomoon(self, icomoon_json_path: str): ) confirm_btn.click() except SeleniumTimeoutException as e: - print(e.stacktrace) - print("Cannot find the confirm button when uploading the icomoon.json", - "Ensure that the icomoon.json is in the correct format for Icomoon.io", - sep='\n') - self.close() + raise Exception("Cannot find the confirm button when uploading the icomoon.json" \ + "Ensure that the icomoon.json is in the correct format for Icomoon.io") 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...") + print("Uploading SVGs...") - edit_mode_btn = self.driver.find_element_by_css_selector( - "div.btnBar button i.icon-edit" - ) - edit_mode_btn.click() - - self.click_hamburger_input() - - for svg in svgs: - import_btn = self.driver.find_element_by_css_selector( - "li.file input[type=file]" - ) - import_btn.send_keys(svg) - print(f"Uploaded {svg}") - self.test_for_possible_alert(self.SHORT_WAIT_IN_SEC, "Dismiss") - self.remove_color_from_icon() - - # take a screenshot of the icons that were just added - self.driver.save_screenshot("new_icons.png"); - 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']")) + edit_mode_btn = self.driver.find_element_by_css_selector( + "div.btnBar button i.icon-edit" + ) + edit_mode_btn.click() + + self.click_hamburger_input() + + for i in range(len(svgs)): + import_btn = self.driver.find_element_by_css_selector( + "li.file input[type=file]" ) - select_all_button.click() - print("Finished uploading the svgs...") - except Exception as e: - self.close() - raise e + import_btn.send_keys(svgs[i]) + print(f"Uploaded {svgs[i]}") + self.test_for_possible_alert(self.SHORT_WAIT_IN_SEC, "Dismiss") + self.click_on_just_added_icon(screenshot_folder, i) + + # take a screenshot of the icons that were just added + new_icons_path = str(Path(screenshot_folder, "new_icons.png").resolve()) + self.driver.save_screenshot(new_icons_path); + + print("Finished uploading the svgs...") def click_hamburger_input(self): """ @@ -161,20 +145,16 @@ def click_hamburger_input(self): input two times before the menu appears. :return: None. """ - try: - hamburger_input = self.driver.find_element_by_xpath( - "(//i[@class='icon-menu'])[2]" - ) + hamburger_input = self.driver.find_element_by_xpath( + "(//i[@class='icon-menu'])[2]" + ) - menu_appear_callback = ec.element_to_be_clickable( - (By.CSS_SELECTOR, "h1 ul.menuList2") - ) + menu_appear_callback = ec.element_to_be_clickable( + (By.CSS_SELECTOR, "h1 ul.menuList2") + ) - while not menu_appear_callback(self.driver): - hamburger_input.click() - except Exception as e: - self.close() - raise e + while not menu_appear_callback(self.driver): + hamburger_input.click() def test_for_possible_alert(self, wait_period: float, btn_text: str): """ @@ -191,22 +171,37 @@ def test_for_possible_alert(self, wait_period: float, btn_text: str): ) dismiss_btn.click() except SeleniumTimeoutException: - pass + pass # nothing found => everything is good + + def click_on_just_added_icon(self, screenshot_folder: str, index: int): + """ + Click on the most recently added icon so we can remove the colors + and take a snapshot if needed. + """ + 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() + + self.remove_color_from_icon() + + 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) + + close_btn = self.driver \ + .find_element_by_css_selector("div.overlayWindow i.icon-close") + close_btn.click() def remove_color_from_icon(self): """ Remove the color from the most recent uploaded icon. - :return: None. + 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. """ - 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")) @@ -217,42 +212,35 @@ def remove_color_from_icon(self): .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 - - try: - close_btn = self.driver \ - .find_element_by_css_selector("div.overlayWindow i.icon-close") - close_btn.click() - except Exception as e: - self.close() - raise e + pass # do nothing cause sometimes, the color tab doesn't appear in the site def download_icomoon_fonts(self, zip_path: Path): """ Download the icomoon.zip from icomoon.io. :param zip_path: the path to the zip file after it's downloaded. """ - try: - print("Downloading Font files...") - self.driver.find_element_by_css_selector( - "a[href='#/select/font']" - ).click() - - self.test_for_possible_alert(self.MED_WAIT_IN_SEC, "Continue") - download_btn = WebDriverWait(self.driver, SeleniumRunner.LONG_WAIT_IN_SEC).until( - ec.presence_of_element_located((By.CSS_SELECTOR, "button.btn4 span")) - ) - download_btn.click() - if self.wait_for_zip(zip_path): - print("Font files downloaded.") - else: - raise TimeoutError(f"Couldn't find {zip_path} after download button was clicked.") - except Exception as e: - self.close() - raise e + # 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']")) + ) + select_all_button.click() + + print("Downloading Font files...") + font_tab = self.driver.find_element_by_css_selector( + "a[href='#/select/font']" + ) + font_tab.click() + + self.test_for_possible_alert(self.MED_WAIT_IN_SEC, "Continue") + download_btn = WebDriverWait(self.driver, SeleniumRunner.LONG_WAIT_IN_SEC).until( + ec.presence_of_element_located((By.CSS_SELECTOR, "button.btn4 span")) + ) + download_btn.click() + if self.wait_for_zip(zip_path): + print("Font files downloaded.") + else: + raise TimeoutError(f"Couldn't find {zip_path} after download button was clicked.") def wait_for_zip(self, zip_path: Path) -> bool: """ 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 1c31e7771..fe2893a23 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 6fc69920b..65a1234cd 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 000000000..e5a516132 --- /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 6b3eb352b..303a7ffc6 100644 --- a/.github/scripts/icomoon_build.py +++ b/.github/scripts/icomoon_build.py @@ -1,18 +1,18 @@ from pathlib import Path +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() 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...") - return + sys.exit("No files need to be uploaded. Ending script...") # print list of new icons print("List of new icons:", *new_icons, sep = "\n") @@ -32,10 +32,11 @@ def main(): filehandler.rename_extracted_files(args.download_path) print("Task completed.") except TimeoutException as e: - print(e) - print(e.stacktrace) + sys.exit("Selenium Time Out Error: \n" + str(e)) + except Exception as e: + sys.exit(e) finally: - runner.close() + runner.close() if __name__ == "__main__": diff --git a/.github/scripts/icomoon_peek.py b/.github/scripts/icomoon_peek.py index 6fd55f59c..cccfce5d7 100644 --- a/.github/scripts/icomoon_peek.py +++ b/.github/scripts/icomoon_peek.py @@ -1,32 +1,65 @@ +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(e) - print(e.stacktrace) + sys.exit("Selenium Time Out Error: \n" + str(e)) + except Exception as e: + sys.exit(e) finally: - runner.close() + 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__": diff --git a/.github/workflows/build_icons.yml b/.github/workflows/build_icons.yml index 33a764e67..1cef6ed18 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: Build devicon.min.css + if: success() + run: npm run build-css - name: Upload screenshot of the newly made icons - uses: actions/upload-artifact@v2 - if: ${{success()}} + id: imgur_step + uses: devicons/public-upload-to-imgur@v2.1 + if: success() with: - name: new_icons path: ./new_icons.png - - name: Build devicon.min.css - if: ${{ success() }} - run: npm run build-css + 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 5bc2953a4..90ed6fbac 100644 --- a/.github/workflows/peek_icons.yml +++ b/.github/workflows/peek_icons.yml @@ -9,42 +9,101 @@ jobs: runs-on: windows-2019 steps: - uses: actions/checkout@v2 - with: - ref: ${{ github.head_ref }} - repository: ${{ github.event.pull_request.head.repo.full_name}} - name: Setup Python v3.8 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.1 + if: success() + with: + 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.1 + 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. - - # Cheers :), + 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! + + 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/CONTRIBUTING.md b/CONTRIBUTING.md index 3739a6653..a1aca5df9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,6 +5,7 @@ First of all, thanks for taking the time to contribute! This project can only gr

Table of Content


-

Overview on Submitting Icon

+

Terms

+

Here are some terms that we will use in this repo:

+
    +
  1. "Icon" refers to the set of svgs/icons of a technology/tool. Ex: We might refer to the React svgs and React icons as the React Icon
  2. +
  3. "SVG/.svg" refers to the svg versions of the Icons.
  4. +
  5. "icons" (lowercase) refers to the font icon versions of the Icons.
  6. +
+ +
+

Overview on Submitting Icons

Here is an overview of what you have to do to submit your icons to the repo.

    -
  1. Create the svgs for each logo versions that you have
  2. -
  3. Put the svgs for each logo into its own folders in /icons
  4. -
  5. Update the devicon.json to include the new icon
  6. -
  7. Create a separated pull request (PR) for each icon (no matter how many versions).
  8. -
  9. Include the name of the icon in the pull request title. Follow this format: new icon: {{logoName}} ({{versions}})
  10. -
  11. Optional: Add images of the new icon(s) to the description of the pull request. This would help speed up the review process
  12. +
  13. Create the svgs for each svg versions that you have
  14. +
  15. Put the svgs of each Icon into its own folders in /icons
  16. +
  17. Update the devicon.json to include the new Icon
  18. +
  19. Create a separated pull request (PR) for each Icon.
  20. +
  21. Include the name of the Icon in the pull request title in this format: new icon: Icon name (versions)
  22. +
  23. Optional: Add images of the new svg(s) to the description of the pull request. This would help speed up the review process
  24. Optional: Reference the issues regarding the new icon.
  25. -
  26. Wait for a repo maintainer to review your changes. They will run a script to check your icons.
  27. +
  28. Wait for a maintainer to review your changes. They will run a script to check your icons.
  29. If there are no issue, they will accept your PR into the repo. Else, they will let you know and give you a chance to fix it.

Versions and Naming Conventions

-

Each icon can come in different versions. So far, we have:

+

Each icon/svg can come in different versions. So far, we have:

-

-It is not mandatory to have 6 versions for each icon. An icon can only have one or two versions available. Just keep in mind that the minimum is 1 and the maximum 6 (for now). You must also have at least one version that can be make into an icon. -

-

-The plain and line versions (with or without wordmark) are designed to be available in the final icon font. -

-

-The original version are only available in svg format, so they do not need to be as simple and can contain numerous colors. -

-

-Some icons are really simple (like the Apple one), so the original version can be used as the plain version and as the icon font. In this case, you'll only need to make only one of the version (either "original" or "plain"). You can then add an alias in the devicon.json so they can be found with either the "original" or "plain" naming convention. Note that this only applies to font icon versions only, not the SVG versions. SVG versions don't need aliases. -

+

Notes

+


SVG Standards

Before you submit your logos/svgs, please ensure that they meet the following standard:


Organizational Guidelines


Updating the devicon.json

- Before you open a PR into Devicon, you'd have to update the devicon.json. This is essential for our build script to work and to document your work. + Before you open a PR into Devicon, you must update the devicon.json. This is essential for our build script to work and to document your work.

- Here is the object that each of your logo must have: + Here is the object that each of your Icon must have:

@@ -103,7 +119,7 @@ Some icons are really simple (like the Apple one), so the original version can b
   Here is what VersionString means:
 

    -
  1. It's the version part of an `svg` file's name
  2. +
  3. It's the version part of an svg file's name
  4. If you have "html5-original", the version string would be "original"
  5. If you have "react-line-wordmark", the version string would be "line-wordmark"
  6. See naming conventions section for more details
  7. @@ -127,19 +143,19 @@ Some icons are really simple (like the Apple one), so the original version can b As an example, let's assume you have created the svgs for Redhat and Amazon Web Services logos.

    For the Redhat svg, you have the "original", "original-wordmark", "plain", and "plain-wordmark" versions.

    -

    For the Amazon Web Services svgs, you have the following versions: "original", "original-wordmark", "plain-wordmark". The "original" version is simple enough to be a "plain" version as well. Note that we are not using the acronym AWS.

    +

    For the Amazon Web Services svgs, you have the "original", "original-wordmark", "plain-wordmark" versions. The "original" version is simple enough to be a "plain" version as well. Note that we are not using the acronym AWS.

    1. Put the svgs for each logo that you have into its own folders in /icons
      • This means you would create two folders: one for amazonwebservices and one for redhat
      • -
      • Note: don't do this in the same commits. We want to have each logo in its own PR so don't create these two folders in the same commit
      • +
      • Note: don't do this in the same commits; we want to have each Icon in its own PR.
    2. - Update the devicon.json to include the icon (or variations) + Update the devicon.json
        -
      • For the redhat, you would do this +
      • For redhat, you would do this
                   
                     {
        @@ -193,17 +209,16 @@ As an example, let's assume you have created the svgs for Redhat and Amazon Web
                         {
                             "base": "original", // here is the base version that we will upload to Icomoon
                             "alias": "plain" // this is its alias. Our script will create a reference so users can search using "original" or "plain" for this icon
        -                    // note that you don't provide aliases for the svg version. If "original" is not a font version (i.e can't be made into a font), there's no need to provide it with a plain alias
        +                    // note that you don't provide aliases for the svg version. If "original" can't be made into a font, there's no need to provide it with a plain alias
                         }
                       ]
                     }
                   
                 
      • -
      • Note: again, don't do this in the same commits. We want to have each logo in its own PR so don't create two folders in the same commit
    3. -
    4. Create a separate pull request (PR) for each icon (no matter how many variations). +
    5. Create a separate pull request (PR) for each Icon.
      • This means you would have to create two PRs
      • For Amazon Web Services, the branch name would be icons/amazonwebservices.
      • @@ -211,7 +226,7 @@ As an example, let's assume you have created the svgs for Redhat and Amazon Web
    6. - Include the name of the icon in the pull request. Follow this format: "new icon: {{logoName}} ({{versions}})" + Include the name of the icon in the pull request. Follow this format: "new icon: Icon name (versions}})"
      • For Amazon Web Services, your PR title should be "new icon: amazonwebservices (original, original-wordmark, plain-wordmark)"
      • For Redhat, your PR title should be "new icon: redhat (original, original-wordmark, plain, plain-wordmark)"
      • @@ -222,12 +237,12 @@ As an example, let's assume you have created the svgs for Redhat and Amazon Web

        Requesting an Icon

        -

        When you want to request a new icon please feel free to create a issue following some simple guidelines:

        +

        To request an icon, you can create an issue in the repo. Please follow these simple guidelines:

        • Search for other issues already requesting the icon
        • If an issue doesn't exist, create an issue naming it "Icon request: name-of-the-icon".
        • -
        • Please create separated issues for each icon
        • -
        • optional: Include links where the icon can be found
        • +
        • Please create a separate issues for each icon
        • +
        • Optional: include links where the icon can be found

        @@ -241,5 +256,6 @@ As an example, let's assume you have created the svgs for Redhat and Amazon Web

        There are also other tasks that we are automating, such as:

        • Ensure code quality is up to standard
        • -
        • Upload svgs to icomoon.io and take a screenshot for check. +
        • Upload svgs to icomoon.io and take a screenshot to check that it looks good. +
        • Comment on the PR so maintainers don't have to manually upload icon result.
        \ No newline at end of file diff --git a/devicon.json b/devicon.json index a20801b99..01c3fa8af 100644 --- a/devicon.json +++ b/devicon.json @@ -227,6 +227,24 @@ "color": "#002A41", "aliases": [] }, + { + "name": "bash", + "tags": [ + "shell", + "command" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#293138", + "aliases": [] + }, { "name": "behance", "tags": [ @@ -257,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", @@ -548,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", @@ -893,7 +929,12 @@ ] }, "color": "#dd3f24", - "aliases": [] + "aliases": [ + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { "name": "erlang", @@ -2468,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", @@ -2486,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", @@ -2625,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 25ccdbcf2..cffe03c94 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 000000000..0d1b34d93 --- /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 000000000..1c1d2ae22 --- /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 000000000..11c448ae7 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 000000000..f26373446 --- /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 000000000..fe44cae80 --- /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 000000000..98aed9885 --- /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 000000000..6e2ffc45d 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 000000000..7ff1a5648 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 000000000..d130b539e 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 000000000..f65304991 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 000000000..104660918 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 000000000..a4d7559f1 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 000000000..95f7ab1a0 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 000000000..4c56a264f 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 000000000..dc11d0d12 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 000000000..bd084940d 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 000000000..af389045d 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 000000000..381d190f6 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 000000000..a0bc25f84 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 000000000..c720d1d43 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 000000000..57f733000 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 000000000..91a9d077c 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 000000000..af389045d 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 000000000..642eb90ae 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 000000000..1bcfe6f9a 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 000000000..a4d7559f1 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 000000000..9ea1715a3 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 000000000..0dbf45e2f 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 000000000..7015de63d 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 000000000..8544b04ef 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 000000000..f56755c3c 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 000000000..f93136ece 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 000000000..eeb0d3478 --- /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 000000000..eca47a649 --- /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 2422acd5f..1541ffc10 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 a3836e549..952ac8a97 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 66979bf3b..c6343a310 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 af7b38b68..b1301c4e8 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 e6ba7a0a5..4f28c1f49 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/bash/bash-original.svg b/icons/bash/bash-original.svg new file mode 100644 index 000000000..64b7cbfac --- /dev/null +++ b/icons/bash/bash-original.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/icons/bash/bash-plain.svg b/icons/bash/bash-plain.svg new file mode 100644 index 000000000..71c66f349 --- /dev/null +++ b/icons/bash/bash-plain.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/icons/bash/bash.eps b/icons/bash/bash.eps new file mode 100644 index 000000000..5596f4a61 Binary files /dev/null and b/icons/bash/bash.eps differ diff --git a/icons/behance/behance-original-wordmark.svg b/icons/behance/behance-original-wordmark.svg index 3bfa7171c..05f3fd6c4 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 cc975ddcb..acd1af5da 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 ca65c8f34..e7f6e3ab8 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 a1ce4b5ed..f2136ead2 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 3f19d90d5..0a52b8bc6 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 ead4c6c2c..37558eb46 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 1ab776ebf..55166dd15 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 a675c8e82..e37176997 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 778c7f315..cda2521cc 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 5bb3f4f87..e6ea3cde1 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 b13cab4a1..1666b4ee0 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 5c70fb222..4c12db253 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 c2ca9f2d5..8ee76892b 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 1a9df6b20..ff88946f7 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 95104870f..05a8190d1 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 a71c70671..add01e759 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 7971734e1..f6310cd79 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 3988e71c5..1ca664776 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 d85245f1a..e6fdda323 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 b342e04b3..798628c28 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 a8de91726..9d5c90df6 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 845baeade..9fdf44ff4 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 06337d5b4..7345d227c 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 e7183fb33..ceccdeba1 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 475a04723..d94da3224 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 cfeaddacc..2a0615517 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 f0d141f6c..7178ca369 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 c7584f04e..10e5117c8 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 3e30b5a4e..d51fa53cf 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 125bde63f..c9c483547 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 d5659a85d..b453881cc 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 af60e63e5..970a8d396 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 c888c2976..b4e7df095 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 eb4fb8093..bb75ec1f9 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 c888c2976..b4e7df095 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 67bb73007..ffcfb8ff3 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 b39734d99..6b4844be0 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 8bd4791cb..a2f2f2f4b 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 44b6e93b4..e87a0e89b 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 520d3fe54..19b0af741 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 3c306d554..131008f3e 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 3d4aa26f2..e08fba3ab 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 73e09daf3..465f0e843 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 d36b321f7..165b0dbd2 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 8f7bd564d..c1875c75e 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 37530ce27..28711d34a 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 0cffc4f37..9cc078111 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 bfa0d8ffc..ae60297cc 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 aa4830680..8365af2d4 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 e4dc8508f..5bc1d4c25 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 28c9a6897..87f838661 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 c5ff6587b..c76f38ca5 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 42f3fb2a5..721c74694 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 2c31fd748..95dd60b9d 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 af80dce30..73dc217b0 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 61e3f53d0..5bd82e677 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 6d2f607a9..1f4c0a1b8 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 5c8853c40..2d99a0ee8 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 f964f8999..c63b077b6 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 14107439a..c27eedb1d 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 c9332822f..ab19859d8 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 b62101e75..057c46c85 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 de6ecf6d0..f8d19de68 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 7b5a0298a..c76e50217 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 087871e8d..7d6cd234b 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 58ce1d3ed..fbc7c3fd2 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 676cb5bac..bbd771a9d 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 2b63f99e3..3ccb485cf 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 61a84bdb7..84b86eff2 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 f938146c4..d48472a0f 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 dc0977cf8..cfa07b119 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 3814f3b71..77f5a8009 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 120ea95e1..fd57fd529 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 569040423..9aecf4899 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 2fe42b1ca..ac3a8c748 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 cf876aece..2bd34447c 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 6f970b0a0..5200fa8bc 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 7995585c4..36a6296ab 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 7a14c4e40..38872350c 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 5af2246f9..53f5690ee 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 0ca5cf536..f4e94fda1 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 adb2ec232..2d3cceec7 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 b23c7001e..4be21ee21 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 0e6eceeed..114ca01df 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 8be586373..31f76a3f0 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 edbff71fa..1f9abb52c 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 4a722c3b9..f3d7042e0 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 65e353d4f..0c4b010c4 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 02ba1b821..59012e320 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 0a38338e2..e6cd8c20c 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 6ee61545f..ada93e832 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 8d984bc20..8d95b1aab 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 c15dda807..0d7b01130 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 881aa7b36..ec67184a7 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 f070115c8..51e25f575 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 33b37854a..4316b9af7 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 290d04b92..284f52fd3 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 cea53e74a..2169e6e63 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 2016a99b8..53c5ea833 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 a6323c4d1..c443c5796 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 e13240894..af1b0eb01 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 895f65df3..0aed9d57a 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 b1fa6df8c..3f69ceeee 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 411e7e1dd..79ce50cae 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 52c83c583..d7e4fe94b 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 8da2b7634..44ba69832 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 e7e7f2536..4999ae7da 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 4b6dfa827..0994a1381 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 26a60e108..ffd51273c 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 2c10ccca4..f730c1941 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 fb2e1144c..5b4d71054 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 b7ea19e25..4ed039134 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 14ab501a9..b20216cf0 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 1aa48bc53..4d70a31e4 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 f7e9cfe84..000000000 --- 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 75efa408f..f995f26eb 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 602e5c48e..651a8a7a8 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",