diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..5071a0527 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true + +[**.json] +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +[**.svg] +trim_trailing_whitespace = false diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 6d5ea7c74..d6063f3bd 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,37 +1,37 @@ -name: Bug Report -description: Report a bug/issue that you found in the SVGs, CSS files, etc. -title: '[BUG] ' -labels: [bug] -body: - - type: markdown - attributes: - value: "## Before you continue, please search our open/closed issues to see if a similar issue has been addressed." - - - type: checkboxes - attributes: - label: I have searched through the issues and didn't find my problem. - options: - - label: Confirm - required: true - - - type: textarea - id: description - attributes: - label: Bug description - description: Short description of the bug that you found. Provide images/code if applicable. - validations: - required: true - - - type: textarea - id: howtoreplicate - attributes: - label: Possible fixes or solutions - description: List any possible fixes/suggestions that you have in mind that could solve this issue. - validations: - required: true - - - type: textarea - id: extrainformation - attributes: - label: Additional information - description: Is there anything else we should know about this bug? +name: Bug Report +description: Report a bug/issue that you found in the SVGs, CSS files, or any other bug you encounter. +title: '[BUG]: bug name' +labels: [bug] +body: + - type: markdown + attributes: + value: "## Before you continue, please search our open/closed issues to see if a similar issue has been addressed." + + - type: checkboxes + attributes: + label: I have searched through the issues and didn't find my problem. + options: + - label: Confirm + required: true + + - type: textarea + id: description + attributes: + label: Bug description + description: Short description of the bug. Provide images/code if applicable. + validations: + required: true + + - type: textarea + id: howtoreplicate + attributes: + label: Possible fixes or solutions + description: List any possible fixes/suggestions that you have in mind that could solve this issue. + validations: + required: true + + - type: textarea + id: extrainformation + attributes: + label: Additional information + description: Is there anything else we should know about this bug? diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 6d4112f7a..469d0bedf 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -2,4 +2,4 @@ blank_issues_enabled: false contact_links: - name: Discord community url: https://discord.gg/hScy8KWACQ - about: Found any bug? Need help? Feel free to contact us via Discord. + about: Found a bug? Need help? Feel free to contact us via Discord. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index ce99b04e5..6f99fbb0a 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -1,35 +1,43 @@ -name: Feature Request -description: Requesting a new feature or changes to an existing feature -title: '[FEATURE REQUEST] ' -labels: [enhancement] -body: - - type: markdown - attributes: - value: "## Before you continue, please search our open/closed issues to see if a similar issue has been addressed." - - - type: checkboxes - attributes: - label: I have searched through the issues and didn't find my problem. - options: - - label: Confirm - required: true - - - type: textarea - id: currentproblem - attributes: - label: Problem - description: Tell us about the problem and its negative impacts. - validations: - required: true - - - type: textarea - id: possiblesolution - attributes: - label: Possible Solution - description: If you have an idea, please tell us what might solve the above problem and the benefits it provides. - - - type: textarea - id: extrainformation - attributes: - label: Additional information - description: Is there anything else we should know about this feature request? +name: Feature Request +description: Requesting a new feature or changes to an existing feature +title: '[FEATURE REQUEST]: feature name' +labels: [enhancement] +body: + - type: markdown + attributes: + value: "## Before you continue, please search our open/closed issues to see if a similar issue has been addressed." + + - type: checkboxes + attributes: + label: "I have searched through the issues and didn't find my problem." + options: + - label: Confirm + required: true + + - type: textarea + id: description + attributes: + label: Description + description: Write down a detailed description of the feature. + validations: + required: true + + - type: textarea + id: context + attributes: + label: Context + description: Why is this change important to you? How would you use it? How can it benefit other users? + validations: + required: true + + - type: textarea + id: possiblesolution + attributes: + label: Possible Solution + description: If you have an idea, please tell us what might solve the above problem and the benefits it provides. + + - type: textarea + id: extrainformation + attributes: + label: Additional information + description: Is there anything else we should know about this feature request? diff --git a/.github/ISSUE_TEMPLATE/icon_request.yml b/.github/ISSUE_TEMPLATE/icon_request.yml index 42b9370f1..a418c6f04 100644 --- a/.github/ISSUE_TEMPLATE/icon_request.yml +++ b/.github/ISSUE_TEMPLATE/icon_request.yml @@ -1,37 +1,60 @@ -name: Icon Request -description: Requesting a new icon or changes to an existing icon -title: '[ICON REQUEST]: ' -labels: ["request:icon"] -body: - - type: markdown - attributes: - value: "## Before you continue, please search our open/closed issues to see if a similar issue has been addressed." - - - type: checkboxes - attributes: - label: I have searched through the issues and didn't find my problem. - options: - - label: Confirm - required: true - - - type: input - id: about - attributes: - label: About the icon - description: Short description of why you think this icon belongs in our project. - validations: - required: true - - - type: textarea - id: links - attributes: - label: Links and sources - description: Provide links to the icon's official website/repository/anywhere that shows what the technology is about, and its official logo. If available, also provide some resources where the icon/SVG can be found (Font Awesome, Icomoon, etc.). - validations: - required: true - - - type: textarea - id: extrainformation - attributes: - label: Additional information - description: Is there anything else we should know about this icon? +name: Icon Request +description: Request a new icon, or changes to an existing icon +title: '[ICON REQUEST]: icon name' +labels: ["request:icon"] +body: + - type: markdown + attributes: + value: "## Before you continue, please search our open/closed issues to see if a similar issue has been addressed." + + - type: checkboxes + attributes: + label: I have searched through the issues and didn't find my problem. + options: + - label: Confirm + required: true + + - type: input + id: about + attributes: + label: About the icon + description: Short description of why you think this icon belongs in our project. + validations: + required: true + + - type: textarea + id: links + attributes: + label: Links and sources + description: Provide links to the icon's official website/repository/anywhere that shows what the technology is about, and its official logo. If available, also provide some resources where the icon/SVG can be found (Font Awesome, Icomoon, etc.). + validations: + required: true + + - type: textarea + id: icons + attributes: + label: Icon links and previews + description: | + Provide previews and links to official icons (preferably SVG's). + *If there are no offical icons, or if you feel unofficial ones should be used instead, please add them here.* + + Example: + ```md + #### jule-original + Git + https://github.com/julelang/resources/blob/main/jule.svg + ``` + value: | + #### iconname-version-name + + link_to_icon + validations: + required: true + + - type: textarea + id: extrainformation + attributes: + label: Additional information + description: | + Is there anything else we should know about this icon? + Recommended tags, altnames, and color to be added to [`devicon.json`](https://github.com/devicons/devicon/wiki/Updating-%60devicon.json%60) can also be added here diff --git a/.github/ISSUE_TEMPLATE/other.yml b/.github/ISSUE_TEMPLATE/other.yml index 2033b4e71..fece05def 100644 --- a/.github/ISSUE_TEMPLATE/other.yml +++ b/.github/ISSUE_TEMPLATE/other.yml @@ -1,29 +1,29 @@ -name: Other -description: Use this for any other issues. Do not create blank issues -title: "[OTHER] " -labels: ["awaiting triage"] -body: - - type: markdown - attributes: - value: "## Before you continue, please search our open/closed issues to see if a similar issue has been addressed." - - - type: checkboxes - attributes: - label: I have searched through the issues and didn't find my problem. - options: - - label: Confirm - required: true - - - type: textarea - id: issuedescription - attributes: - label: What would you like to share? - description: Provide a clear and concise explanation of your issue. - validations: - required: true - - - type: textarea - id: extrainfo - attributes: - label: Additional information - description: Is there anything else we should know about this issue? +name: Other +description: Use this for any other issues. Please do NOT create blank issues +title: "[OTHER]: description" +labels: ["awaiting triage"] +body: + - type: markdown + attributes: + value: "## Before you continue, please search our open/closed issues to see if a similar issue has been addressed." + + - type: checkboxes + attributes: + label: I have searched through the issues and didn't find my problem. + options: + - label: Confirm + required: true + + - type: textarea + id: issuedescription + attributes: + label: What would you like to share? + description: Provide a clear and concise explanation of your issue. + validations: + required: true + + - type: textarea + id: extrainfo + attributes: + label: Additional information + description: Is there anything else we should know about this issue? diff --git a/.github/PULL_REQUEST_TEMPLATE/new_feature.md b/.github/PULL_REQUEST_TEMPLATE/new_feature.md index 9df58fd52..f9275df63 100644 --- a/.github/PULL_REQUEST_TEMPLATE/new_feature.md +++ b/.github/PULL_REQUEST_TEMPLATE/new_feature.md @@ -4,10 +4,11 @@ - [ ] PR does not match another non-stale PR currently opened ## Features - + **This PR closes NONE** + ## Notes diff --git a/.github/PULL_REQUEST_TEMPLATE/new_icon.md b/.github/PULL_REQUEST_TEMPLATE/new_icon.md index 4d0fc6465..bcc4f6a72 100644 --- a/.github/PULL_REQUEST_TEMPLATE/new_icon.md +++ b/.github/PULL_REQUEST_TEMPLATE/new_icon.md @@ -2,11 +2,11 @@ - [ ] PR does not match another non-stale PR currently opened -- [ ] PR name matches the format *new icon: Icon name (versions separated by comma)*. More details [here](https://github.com/devicons/devicon/blob/develop/CONTRIBUTING.md#overview) +- [ ] PR name matches the format *new icon: Icon name (versions separated by comma)*. More details [here](https://github.com/devicons/devicon/wiki/Overview-on-Submitting-Icons) - [ ] PR's base is the `develop` branch. -- [ ] Your icons are inside a folder as seen [here](https://github.com/devicons/devicon/blob/develop/CONTRIBUTING.md#organizational-guidelines) -- [ ] SVG matches the standards laid out [here](https://github.com/devicons/devicon/blob/develop/CONTRIBUTING.md#svgStandards) -- [ ] A new object is added in the `devicon.json` file as seen [here](https://github.com/devicons/devicon/blob/develop/CONTRIBUTING.md#-updating-the-deviconjson-) +- [ ] Your icons are inside a folder as seen [here](https://github.com/devicons/devicon/wiki/Organizing-SVGs) +- [ ] SVG matches the standards laid out [here](https://github.com/devicons/devicon/wiki/SVG-Standards) +- [ ] A new object is added in the `devicon.json` file at the correct alphabetic position as seen [here](https://github.com/devicons/devicon/wiki/Updating-%60devicon.json%60) diff --git a/.github/drafts/optimize_svg.yml b/.github/drafts/optimize_svg.yml index ec35ed2d0..0c283531c 100644 --- a/.github/drafts/optimize_svg.yml +++ b/.github/drafts/optimize_svg.yml @@ -6,9 +6,9 @@ jobs: peek: name: Optimize the added/changed svgs if: github.event.label.name == 'bot:optimize' - runs-on: ubuntu-18.04 + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: ref: ${{ github.head_ref }} diff --git a/.github/drafts/stale.yml b/.github/drafts/stale.yml index 859b053da..365ac82e6 100644 --- a/.github/drafts/stale.yml +++ b/.github/drafts/stale.yml @@ -5,18 +5,21 @@ on: jobs: stale: - runs-on: ubuntu-latest + runs-on: ubuntu-latestlatest steps: - uses: actions/stale@main with: repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-pr-message: 'Hello there, - we noticed that this PR has been inactive for a while now. If there are any changes which are suitable for our repository, - we would love to have it. It would be great if you can continue with this PR, but if you cannot, we might fork your changes and merge the changes ourselves. + stale-pr-message: "Hello there, + we have noticed that this PR has been inactive for a while now. If there are any changes which are suitable for our repository, + we would love to have it. It would be great if you can continue with this PR, but if you can't, we might fork your changes and merge them ourselves. - Since GitHub tracks contributions by commits, you will still be credited. + Since GitHub tracks contributions by commits, you'll still be credited. + Let us know what you think about this. :slight_smile: - Let us know what you think 😃' + + Feel free to [join our Discord server](https://discord.gg/hScy8KWACQ) for support, hangouts, and more + Thank you and have a nice day!" stale-pr-label: 'stale' days-before-pr-stale: 30 days-before-pr-close: -1 diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 99a2cb900..13607fd4c 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,5 +1,11 @@ -### Adding a New Icon? -- Add `?quick_pull=1&template=new_icon.md` to the end of your current URL and press `Enter` + diff --git a/.github/scripts/build_assets/api_handler.py b/.github/scripts/build_assets/api_handler.py index 042edb5ee..b11c2dc67 100644 --- a/.github/scripts/build_assets/api_handler.py +++ b/.github/scripts/build_assets/api_handler.py @@ -180,3 +180,19 @@ def get_issues_by_labels(token: str, labels: List[str]): issues.extend(issues_only) return issues + + +def get_pr_by_number(token: str, pr_num: str): + url = base_url + "pulls/" + pr_num + headers = { + "Authorization": f"token {token}" + } + + print(f"Querying the GitHub API for requests") + response = requests.get(url, headers=headers) + if not response: + print(f"Can't query the GitHub API. Status code is {response.status_code}. Message is {response.text}") + sys.exit(1) + + pr = response.json() + return pr diff --git a/.github/scripts/build_assets/arg_getters.py b/.github/scripts/build_assets/arg_getters.py index d086bd331..8f82f0e6d 100644 --- a/.github/scripts/build_assets/arg_getters.py +++ b/.github/scripts/build_assets/arg_getters.py @@ -2,7 +2,7 @@ from build_assets.PathResolverAction import PathResolverAction -def get_selenium_runner_args(peek_mode=False): +def get_selenium_runner_args(has_token=True, peek_mode=False): """ Get the commandline arguments for the icomoon_peek.py and icomoon_build.py. @@ -36,7 +36,7 @@ def get_selenium_runner_args(peek_mode=False): if peek_mode: parser.add_argument("pr_title", help="The title of the PR that we are peeking at") - else: + if has_token != False: parser.add_argument("token", help="The GitHub token to access the GitHub REST API.") @@ -82,7 +82,7 @@ def get_in_develop_labeler_args(): help="The GitHub token to access the GitHub REST API.", type=str) - parser.add_argument("body", - help="The PR's initial comment by the author AKA the `body` attribute of the `pull_request` API object.", + parser.add_argument("pr_num", + help="The PR's number", type=str) return parser.parse_args() diff --git a/.github/scripts/build_assets/geckodriver-v0.30.0-win64/geckodriver.exe b/.github/scripts/build_assets/geckodriver-v0.30.0-win64/geckodriver.exe deleted file mode 100644 index c59764ab2..000000000 Binary files a/.github/scripts/build_assets/geckodriver-v0.30.0-win64/geckodriver.exe and /dev/null differ diff --git a/.github/scripts/build_assets/geckodriver-v0.32.2-linux64/geckodriver b/.github/scripts/build_assets/geckodriver-v0.32.2-linux64/geckodriver new file mode 100755 index 000000000..06296195e Binary files /dev/null and b/.github/scripts/build_assets/geckodriver-v0.32.2-linux64/geckodriver differ diff --git a/.github/scripts/build_assets/geckodriver-v0.30.0-win64/README.md b/.github/scripts/build_assets/geckodriver-v0.32.2-win64/README.md similarity index 100% rename from .github/scripts/build_assets/geckodriver-v0.30.0-win64/README.md rename to .github/scripts/build_assets/geckodriver-v0.32.2-win64/README.md diff --git a/.github/scripts/build_assets/geckodriver-v0.32.2-win64/geckodriver.exe b/.github/scripts/build_assets/geckodriver-v0.32.2-win64/geckodriver.exe new file mode 100644 index 000000000..27567ab15 Binary files /dev/null and b/.github/scripts/build_assets/geckodriver-v0.32.2-win64/geckodriver.exe differ diff --git a/.github/scripts/build_assets/util.py b/.github/scripts/build_assets/util.py index a9f5a1093..e98b2a900 100644 --- a/.github/scripts/build_assets/util.py +++ b/.github/scripts/build_assets/util.py @@ -1,4 +1,5 @@ import os +from pathlib import Path import re from typing import List import platform @@ -71,7 +72,23 @@ def find_object_added_in_pr(icons: List[dict], pr_title: str): raise Exception(message) +def is_svg_in_font_attribute(svg_file_path: Path, devicon_object: dict): + """ + Check if svg is in devicon.json's font attribute. + :param svg_file_path, the path to a single svg icon + :devicon_object, an object for a single icon inside devicon.json + :return true if the svg exists in the devicon_object's font attribute, false if it doesn't + """ + icon_version = Path(svg_file_path).stem.split('-', 1)[1] + font_object = devicon_object["versions"]["font"] + return icon_version in font_object + + valid_svg_filename_pattern = re.compile(r"-(original|plain|line)(-wordmark)?\.svg$") def is_svg_name_valid(filename: str): return valid_svg_filename_pattern.search(filename) is not None + +valid_svg_version_pattern = re.compile(r"^(original|plain|line)(-wordmark)?$") +def is_svg_version_valid(version): + return valid_svg_version_pattern.search(version) is not None diff --git a/.github/scripts/check_icon_pr.py b/.github/scripts/check_icon_pr.py index 90444068c..dc5eec771 100644 --- a/.github/scripts/check_icon_pr.py +++ b/.github/scripts/check_icon_pr.py @@ -18,10 +18,15 @@ def main(): try: all_icons = filehandler.get_json_file_content(args.devicon_json_path) + devicon_err_msg = [] + #First check if devicon.json is sorted + if sorted(all_icons, key=lambda d: d['name']) != all_icons: + devicon_err_msg.append(f"devicon.json is not sorted correctly.\nPlease make sure that your icon is added in the `devicon.json` file at the correct alphabetic position\nas seen here: https://github.com/devicons/devicon/wiki/Updating-%60devicon.json%60") + # get only the icon object that has the name matching the pr title filtered_icon = util.find_object_added_in_pr(all_icons, args.pr_title) print("Checking devicon.json object: " + str(filtered_icon)) - devicon_err_msg = check_devicon_object(filtered_icon) + devicon_err_msg.append(check_devicon_object(filtered_icon)) # check the file names filename_err_msg = "" @@ -37,11 +42,11 @@ def main(): print("No SVGs to check, ending script.") svg_err_msg = "Error checking SVGs: no SVGs to check. Might be caused by above issues." else: - svg_err_msg = check_svgs(svgs) + svg_err_msg = check_svgs(svgs, filtered_icon) err_msg = [] - if devicon_err_msg != "": - err_msg.append(devicon_err_msg) + if devicon_err_msg != []: + err_msg.extend(devicon_err_msg) if filename_err_msg != "": err_msg.append(filename_err_msg) @@ -62,6 +67,24 @@ def check_devicon_object(icon: dict): :return a string containing the error messages if any. """ err_msgs = [] + + try: + if type(icon["name"]) != str: + err_msgs.append("- Property \"name\" value must be type string.") + except KeyError: + err_msgs.append("- Missing property key: \"name\".") + + try: + for altname in icon["altnames"]: + if type(altname) != str: + raise TypeError() + if altname == icon["name"]: + err_msgs.append(f"- \"altnames\" should not contain the same name as \"name\" property. Please remove \"{altname}\" from \"altnames\"") + except TypeError: + err_msgs.append("- \"altnames\" must be an array of strings, not: " + str(icon["altnames"])) + except KeyError: + err_msgs.append("- Missing property key: \"altnames\".") + try: for tag in icon["tags"]: if type(tag) != str: @@ -82,7 +105,7 @@ def check_devicon_object(icon: dict): err_msgs.append("- must contain at least 1 svg version in a list.") for version in icon["versions"]["svg"]: - if not util.is_svg_name_valid(version): + if not util.is_svg_version_valid(version): err_msgs.append(f"- Invalid version name in versions['svg']: '{version}'. Must match regexp: (original|plain|line)(-wordmark)?") except KeyError: err_msgs.append("- missing key: 'svg' in 'versions'.") @@ -92,7 +115,7 @@ def check_devicon_object(icon: dict): err_msgs.append("- must contain at least 1 font version in a list.") for version in icon["versions"]["font"]: - if not util.is_svg_name_valid(version): + if not util.is_svg_version_valid(version): err_msgs.append(f"- Invalid version name in versions['font']: '{version}'. Must match regexp: (original|plain|line)(-wordmark)?") except KeyError: err_msgs.append("- missing key: 'font' in 'versions'.") @@ -105,17 +128,42 @@ def check_devicon_object(icon: dict): try: if type(icon["aliases"]) != list: - err_msgs.append("- 'aliases' must be an array.") + err_msgs.append("- \"aliases\" must be an array of objects.") except KeyError: err_msgs.append("- missing key: 'aliases'.") - + + try: + for alias_objects in icon["aliases"]: + if type(alias_objects) != dict: + raise TypeError() + except TypeError: + err_msgs.append("- \"aliases\" must be an array of objects, not: " + str(icon["aliases"])) + + try: + for alias_objects in icon["aliases"]: + if type(alias_objects["base"]) != str: + err_msgs.append("- must contain at least 1 base in aliases.") + if not util.is_svg_version_valid(alias_objects['base']): + err_msgs.append(f"- Invalid base name in aliases[\"base\"]: \"{alias_objects['base']}\". Must match regexp: (original|plain|line)(-wordmark)?") + except KeyError: + err_msgs.append("- missing key: \"base\" in \"aliases\".") + + try: + for alias_objects in icon["aliases"]: + if type(alias_objects["alias"]) != str: + err_msgs.append("- must contain at least 1 alias in aliases.") + if not util.is_svg_version_valid(alias_objects['alias']): + err_msgs.append(f"- Invalid alias name in aliases['alias']: \"{alias_objects['alias']}\". Must match regexp: (original|plain|line)(-wordmark)?") + except KeyError: + err_msgs.append("- missing key: \"alias\" in \"aliases\".") + if len(err_msgs) > 0: - message = "Error found in 'devicon.json' for '{}' entry: \n{}".format(icon["name"], "\n".join(err_msgs)) + message = "Error found in \"devicon.json\" for \"{}\" entry: \n{}".format(icon["name"], "\n".join(err_msgs)) return message return "" -def check_svgs(svg_file_paths: List[Path]): +def check_svgs(svg_file_paths: List[Path], devicon_object: dict): """ Check the width, height, viewBox and style of each svgs passed in. The viewBox must be '0 0 128 128'. @@ -147,10 +195,11 @@ def check_svgs(svg_file_paths: List[Path]): err_msg.append("- 'viewBox' is not '0 0 128 128' -> Set it or scale the file using https://www.iloveimg.com/resize-image/resize-svg.") # goes through all elems and check for strokes - for child in tree.iter(): - if child.get("stroke") != None: - err_msg.append("- SVG contains `stroke` property. This will get ignored by Icomoon. Please convert them to fills.") - break + if util.is_svg_in_font_attribute(svg_path, devicon_object): + for child in tree.iter(): + if child.get("stroke") != None: + err_msg.append("- SVG contains `stroke` property. This will get ignored by Icomoon. Please convert them to fills.") + break if len(err_msg) > 1: err_msgs.append("\n".join(err_msg)) diff --git a/.github/scripts/icomoon_build_githubless.py b/.github/scripts/icomoon_build_githubless.py new file mode 100644 index 000000000..92fb1aba9 --- /dev/null +++ b/.github/scripts/icomoon_build_githubless.py @@ -0,0 +1,145 @@ +from pathlib import Path +import sys +from selenium.common.exceptions import TimeoutException +import re +import subprocess +import json +from typing import List, Dict +from io import FileIO + +# pycharm complains that build_assets is an unresolved ref +# don't worry about it, the script still runs +from build_assets.selenium_runner.BuildSeleniumRunner import BuildSeleniumRunner +from build_assets import filehandler, arg_getters, util, api_handler + +def main(): + """ + Build the icons using Icomoon. Also optimize the svgs. + """ + runner = None + logfile = open("log.txt", "w") + try: + args = arg_getters.get_selenium_runner_args(has_token=False) + new_icons = get_icons_for_building(args.icomoon_json_path, args.devicon_json_path, logfile) + if len(new_icons) == 0: + sys.exit("No files need to be uploaded. Ending script...") + + print(f"There are {len(new_icons)} icons to be build. Here are they:", *new_icons, sep = "\n", file=logfile) + + print("Begin optimizing files...", file=logfile) + optimize_svgs(new_icons, args.icons_folder_path, logfile=logfile) + + print("Updating the icomoon json...", file=logfile) + update_icomoon_json(new_icons, args.icomoon_json_path, logfile) + + print("Start the building icons process...", file=logfile) + icon_svgs = filehandler.get_svgs_paths( + new_icons, args.icons_folder_path, icon_versions_only=True) + zip_name = "devicon-v1.0.zip" + zip_path = Path(args.download_path, zip_name) + screenshot_folder = filehandler.create_screenshot_folder("./") + + runner = BuildSeleniumRunner(args.download_path, + args.geckodriver_path, args.headless, log_output=logfile) + print("Building icons...", file=logfile) + runner.build_icons(args.icomoon_json_path, zip_path, + icon_svgs, screenshot_folder) + + print("Extracting files...", file=logfile) + filehandler.extract_files(str(zip_path), args.download_path, logfile) + print("Renaming extracted files...", file=logfile) + filehandler.rename_extracted_files(args.download_path, logfile) + + print("Task completed!", file=logfile) + except TimeoutException as e: + util.exit_with_err(Exception("Selenium Time Out Error: \n" + str(e)), logfile) + except Exception as e: + util.exit_with_err(e, logfile) + finally: + print("Exiting", file=logfile) + if runner is not None: + runner.close() + logfile.close() + + +def get_icons_for_building(icomoon_json_path: str, devicon_json_path: str, logfile: FileIO): + """ + Get the icons for building. + :param icomoon_json_path - the path to the `icomoon.json`. + :param devicon_json_path - the path to the `devicon.json`. + :param logfile. + :return a list of dict containing info on the icons. These are + from the `devicon.json`. + """ + + new_icons = [] + + # get any icons that might not have been found by the API + # sometimes happen due to the PR being opened before the latest build release + new_icons_from_devicon_json = filehandler.find_new_icons_in_devicon_json( + devicon_json_path, icomoon_json_path) + + for icon in new_icons_from_devicon_json: + if icon not in new_icons: + new_icons.append(icon) + + return new_icons + + +def optimize_svgs(new_icons: List[str], icons_folder_path: str, logfile: FileIO): + """ + Optimize the newly added svgs. This is done in batches + since the command line has a limit on characters allowed. + :param new_icons - the new icons that need to be optimized. + :param icons_folder_path - the path to the /icons folder. + :param logfile - the file obj to store logging info in. + """ + svgs = filehandler.get_svgs_paths(new_icons, icons_folder_path, icon_versions_only=False) + start = 0 + step = 10 + for i in range(start, len(svgs), step): + batch = svgs[i:i + step] + print(f"Optimizing these files\n{batch}", file=logfile) + subprocess.run(["npm", "run", "optimize-svg", "--", f"--svgFiles={json.dumps(batch)}"], shell=True) + + +def update_icomoon_json(new_icons: List[str], icomoon_json_path: str, logfile: FileIO): + """ + Update the `icomoon.json` if it contains any icons + that needed to be updated. This will remove the icons + from the `icomoon.json` so the build script will reupload + it later. + """ + icomoon_json = filehandler.get_json_file_content(icomoon_json_path) + cur_len = len(icomoon_json["icons"]) + messages = [] + + wrapper_function = lambda icomoon_icon : find_icomoon_icon_not_in_new_icons( + icomoon_icon, new_icons, messages) + icons_to_keep = filter(wrapper_function, icomoon_json["icons"]) + icomoon_json["icons"] = list(icons_to_keep) + + new_len = len(icomoon_json["icons"]) + print(f"Update completed. Removed {cur_len - new_len} icons:", *messages, sep='\n', file=logfile) + filehandler.write_to_file(icomoon_json_path, json.dumps(icomoon_json)) + + +def find_icomoon_icon_not_in_new_icons(icomoon_icon: Dict, new_icons: List, messages: List): + """ + Find all the icomoon icons that are not listed in the new icons. + This also add logging for which icons were removed. + :param icomoon_icon - a dict object from the icomoon.json's `icons` attribute. + :param new_icons - a list of new icons. Each element is an object from the `devicon.json`. + :param messages - an empty list where the function can attach logging on which + icon were removed. + """ + for new_icon in new_icons: + pattern = re.compile(f"^{new_icon['name']}-") + if pattern.search(icomoon_icon["properties"]["name"]): + message = f"-'{icomoon_icon['properties']['name']}' cause it matches '{new_icon['name']}'" + messages.append(message) + return False + return True + +if __name__ == "__main__": + main() diff --git a/.github/scripts/icomoon_peek.py b/.github/scripts/icomoon_peek.py index 80a6a6ca3..7d66d1117 100644 --- a/.github/scripts/icomoon_peek.py +++ b/.github/scripts/icomoon_peek.py @@ -5,7 +5,7 @@ def main(): runner = None try: - args = arg_getters.get_selenium_runner_args(peek_mode=True) + args = arg_getters.get_selenium_runner_args(has_token=False, peek_mode=True) all_icons = filehandler.get_json_file_content(args.devicon_json_path) # get only the icon object that has the name matching the pr title diff --git a/.github/scripts/in_develop_labeler.py b/.github/scripts/in_develop_labeler.py index c065b9667..3d329c994 100644 --- a/.github/scripts/in_develop_labeler.py +++ b/.github/scripts/in_develop_labeler.py @@ -4,8 +4,12 @@ def main(): args = arg_getters.get_in_develop_labeler_args() try: + #get pr body + pr_body = api_handler.get_pr_by_number(args.token, args.pr_num)["body"] + # find the issue closing line - issue_line = [line for line in args.body.split("\n") if line.startswith("**This PR closes")][0] + print(pr_body.split("\n")) + issue_line = [line for line in pr_body.split("\n") if line.startswith("**This PR closes")][0] print("Issue Line is " + issue_line) issue_pattern = re.compile(r"\d+") diff --git a/.github/scripts/svgo.config.js b/.github/scripts/svgo.config.js new file mode 100644 index 000000000..06ae8b74c --- /dev/null +++ b/.github/scripts/svgo.config.js @@ -0,0 +1,31 @@ +module.exports = { + plugins: [ + { + name: 'preset-default' + }, + { + name: 'removeDimensions', + params: { + overrides: { + removeDimensions: true, + } + } + }, + { + name: 'removeScriptElement', + params: { + overrides: { + removeScriptElement: true, + } + } + }, + { + name: "removeAttrs", + params: { + attrs: [ + 'path:fill:none' + ] + } + } + ] +}; diff --git a/.github/workflows/build_icons.yml b/.github/workflows/build_icons.yml index 518540a4e..9db312d1b 100644 --- a/.github/workflows/build_icons.yml +++ b/.github/workflows/build_icons.yml @@ -3,11 +3,10 @@ on: workflow_dispatch jobs: build: name: Get Fonts From Icomoon - runs-on: windows-2019 + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - - uses: actions/setup-python@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 with: python-version: 3.8 @@ -18,13 +17,12 @@ jobs: npm install - name: Executing build and create fonts via icomoon - shell: cmd env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: > python ./.github/scripts/icomoon_build.py - ./.github/scripts/build_assets/geckodriver-v0.30.0-win64/geckodriver.exe ./icomoon.json - ./devicon.json ./icons ./ %GITHUB_TOKEN% --headless + ./.github/scripts/build_assets/geckodriver-v0.32.2-linux64/geckodriver ./icomoon.json + ./devicon.json ./icons ./ "$GITHUB_TOKEN" --headless - name: Upload geckodriver.log for debugging purposes uses: actions/upload-artifact@v2 diff --git a/.github/workflows/check_icon_pr.yml b/.github/workflows/check_icon_pr.yml index 6a57bab49..3054a6f84 100644 --- a/.github/workflows/check_icon_pr.yml +++ b/.github/workflows/check_icon_pr.yml @@ -3,22 +3,36 @@ on: pull_request jobs: check: name: Check the `devicon.json` and the SVGs' quality - runs-on: ubuntu-18.04 + runs-on: ubuntu-latest if: startsWith(github.event.pull_request.title, 'new icon') || startsWith(github.event.pull_request.title, 'update icon') # only checks icon PR steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 + + - name: Check if PR is develop + if: ${{ github.base_ref != 'develop' }} + run: | + echo -e "The PR's base branch is \`${{ github.base_ref }}\`, but should be \`develop\`\nPlease change the PR so that it's based on, and merged into \`develop\`" > ./err_messages.txt + echo "wrong_branch=true" >> $GITHUB_ENV - - uses: actions/setup-python@v2 + - uses: actions/setup-python@v4 + if: ${{ !env.wrong_branch }} with: python-version: 3.8 + - name: Install dependencies + if: ${{ !env.wrong_branch }} + run: | + python -m pip install --upgrade pip + pip install -r ./.github/scripts/requirements.txt + - name: Run the check_svg script + if: ${{ !env.wrong_branch }} env: PR_TITLE: ${{ github.event.pull_request.title }} run: python ./.github/scripts/check_icon_pr.py "$PR_TITLE" ./icons ./devicon.json - name: Upload the err messages - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 if: success() with: name: err_messages @@ -32,7 +46,7 @@ jobs: run: echo $PR_NUM > pr_num.txt - name: Upload the pr num - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 if: success() with: name: pr_num diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 44c8b7861..64ac90a5e 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -1,62 +1,85 @@ -name: "CodeQL" +name: "Code Scanning - Action" on: push: - branches: [master] + branches: [master, develop] pull_request: - # The branches below must be a subset of the branches above - branches: [master] + branches: [master, develop] schedule: - - cron: '0 23 * * 4' + - cron: 30 1 * * 0 # Runs every Sunday 1:30 am UTC jobs: - analyze: - name: Analyze + CodeQL-Javascript: runs-on: ubuntu-latest + permissions: + security-events: write + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: javascript - strategy: - fail-fast: false - matrix: - # Override automatic language detection by changing the below list - # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python'] - language: ['javascript'] - # Learn more... - # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + CodeQL-Python-dot-github: + runs-on: ubuntu-latest + permissions: + security-events: write steps: - - name: Checkout repository - uses: actions/checkout@v2 - with: - # We must fetch at least the immediate parents so that if this is - # a pull request then we can checkout the head. - fetch-depth: 2 - - # If this run was triggered by a pull request event, then checkout - # the head of the pull request instead of the merge commit. - - run: git checkout HEAD^2 - if: ${{ github.event_name == 'pull_request' }} - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - with: - languages: ${{ matrix.language }} - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v1 - - # â„šī¸ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # âœī¸ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + id: setup-python + with: + python-version: '3.10' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + if [ -f ${{ github.workspace }}/.github/scripts/requirements.txt ]; + then pip install -r ${{ github.workspace }}/.github/scripts/requirements.txt; + fi + # Set the `CODEQL-PYTHON` environment variable to the Python executable + # that includes the dependencies + echo "CODEQL_PYTHON=${{ steps.setup-python.outputs.python-path }}" >> $GITHUB_ENV + + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: python + setup-python-dependencies: false + source-root: .github/ + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + + CodeQL-Python-rest: + runs-on: ubuntu-latest + permissions: + security-events: write + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Find Python files outside the .github folder + id: find_files + run: | + python_files=$(find ${{ github.workspace }} -name "*.py" -type f -not -path '*/\.*' | wc -l) + echo "python_files=${python_files}" >> $GITHUB_OUTPUT + echo "$python_files Python files were found outside the .github folder." + + - name: Initialize CodeQL + if: ${{ steps.find_files.outputs.python_files != '0' }} + uses: github/codeql-action/init@v2 + with: + languages: python + + - name: Perform CodeQL Analysis + if: ${{ steps.find_files.outputs.python_files != '0' }} + uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/in_develop_labeler.yml b/.github/workflows/in_develop_labeler.yml index 61b7b4335..99727a816 100644 --- a/.github/workflows/in_develop_labeler.yml +++ b/.github/workflows/in_develop_labeler.yml @@ -1,17 +1,24 @@ name: Label Issue In Develop -on: - pull_request: - types: [closed] +on: + workflow_run: + workflows: ['On Develop PR Merge'] + types: + - completed jobs: - label: + on-failure: + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'failure' }} + steps: + - run: echo "First workflow was a failure" + label_preflight: name: Label Issue In Develop - runs-on: ubuntu-18.04 - if: github.event.pull_request.merged == true + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Setup Python v3.8 - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: 3.8 @@ -19,9 +26,22 @@ jobs: run: | python -m pip install --upgrade pip pip install -r ./.github/scripts/requirements.txt + + - name: Download workflow artifact + uses: dawidd6/action-download-artifact@v2.11.0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + workflow: peek_icons.yml + run_id: ${{ github.event.workflow_run.id }} + + - name: Read the pr_num file + id: pr_num_reader + uses: juliangruber/read-file-action@v1.0.0 + with: + path: ./pr_num/pr_num.txt - name: Run in_develop_labeler.py env: TOKEN: ${{ secrets.GITHUB_TOKEN }} - BODY: ${{ github.event.pull_request.body }} - run: python ./.github/scripts/in_develop_labeler.py $TOKEN "$BODY" + PR_NUM: ${{ steps.pr_num_reader.outputs.content }} + run: python ./.github/scripts/in_develop_labeler.py $TOKEN "$PR_NUM" diff --git a/.github/workflows/in_develop_labeler_preflight.yml b/.github/workflows/in_develop_labeler_preflight.yml new file mode 100644 index 000000000..ef3e98044 --- /dev/null +++ b/.github/workflows/in_develop_labeler_preflight.yml @@ -0,0 +1,24 @@ +name: On Develop PR Merge +on: + pull_request: + types: [closed] + branches: [develop] +jobs: + save_pr_num_in_artifact: + name: Preflight Label Issue In Develop + runs-on: ubuntu-latest + if: github.event.pull_request.merged == true + steps: + - uses: actions/checkout@v3 + + - name: Save the PR number in an artifact + shell: bash + env: + PR_NUM: ${{ github.event.number }} + run: echo $PR_NUM > pr_num.txt + + - name: Upload the PR number + uses: actions/upload-artifact@v2.2.4 + with: + name: pr_num + path: ./pr_num.txt diff --git a/.github/workflows/npm_publish.yml b/.github/workflows/npm_publish.yml index 65995014c..6a1396be5 100644 --- a/.github/workflows/npm_publish.yml +++ b/.github/workflows/npm_publish.yml @@ -7,13 +7,13 @@ jobs: environment: release runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: # "ref" specifies the branch to check out. # "github.event.release.target_commitish" is a global variable and specifies the branch the release targeted ref: ${{ github.event.release.target_commitish }} - name: Use Node.js v16 - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: 16 registry-url: https://registry.npmjs.org/ # Specifies the registry, this field is required! diff --git a/.github/workflows/peek_icons.yml b/.github/workflows/peek_icons.yml index 65d42fc13..66f3cee35 100644 --- a/.github/workflows/peek_icons.yml +++ b/.github/workflows/peek_icons.yml @@ -9,12 +9,12 @@ jobs: # fail due to system, skipped name: Peek Icons if: github.event.label.name == 'bot:peek' - runs-on: windows-2019 + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Setup Python v3.8 - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: 3.8 @@ -38,11 +38,11 @@ jobs: - name: Run icomoon_peek.py env: PR_TITLE: ${{ github.event.pull_request.title }} - shell: cmd + shell: bash run: > python ./.github/scripts/icomoon_peek.py - ./.github/scripts/build_assets/geckodriver-v0.30.0-win64/geckodriver.exe ./icomoon.json - ./devicon.json ./icons ./ --headless "%PR_TITLE%" + ./.github/scripts/build_assets/geckodriver-v0.32.2-linux64/geckodriver ./icomoon.json + ./devicon.json ./icons ./ --headless "$PR_TITLE" - name: Upload the err messages (created by icomoon_peek.py) uses: actions/upload-artifact@v2.2.4 diff --git a/.github/workflows/post_check_icon_pr_comment.yml b/.github/workflows/post_check_icon_pr_comment.yml index 716ca752b..cd0d89c86 100644 --- a/.github/workflows/post_check_icon_pr_comment.yml +++ b/.github/workflows/post_check_icon_pr_comment.yml @@ -7,14 +7,14 @@ on: jobs: post_result_of_svg_check: name: Post the result of the Check SVG Action - runs-on: ubuntu-18.04 + runs-on: ubuntu-latest steps: - name: Check if the trigger run worked. If it failed, fail the current run. if: github.event.workflow_run.conclusion != 'success' uses: cutenode/action-always-fail@v1.0.1 - name: Download workflow artifact - uses: dawidd6/action-download-artifact@v2.11.0 + uses: dawidd6/action-download-artifact@v2.27.0 if: success() with: github_token: ${{ secrets.GITHUB_TOKEN }} @@ -24,19 +24,19 @@ jobs: - name: Read the pr_num file if: success() id: pr_num_reader - uses: juliangruber/read-file-action@v1.0.0 + uses: juliangruber/read-file-action@v1.1.6 with: path: ./pr_num/pr_num.txt - name: Read the err message file if: success() id: err_message_reader - uses: juliangruber/read-file-action@v1.0.0 + uses: juliangruber/read-file-action@v1.1.6 with: path: ./err_messages/err_messages.txt - name: Comment on the PR about the result - SVG Error - uses: jungwinter/comment@v1 # let us comment on a specific PR + uses: jungwinter/comment@v1.1.0 # let us comment on a specific PR if: success() && (steps.err_message_reader.outputs.content != '') env: MESSAGE: | @@ -48,7 +48,7 @@ jobs: {0} ``` - Check our [CONTRIBUTING guide](https://github.com/devicons/devicon/blob/develop/CONTRIBUTING.md#svgStandards) for more details regarding these errors. + Check our [CONTRIBUTING guide](https://github.com/devicons/devicon/wiki/SVG-Standards) for more details regarding these errors. Please address these issues. When you update this PR, I will check your SVGs again. @@ -61,7 +61,7 @@ jobs: body: ${{ format(env.MESSAGE, steps.err_message_reader.outputs.content) }} - name: Comment on the PR about the result - Failure - uses: jungwinter/comment@v1 # let us comment on a specific PR + uses: jungwinter/comment@v1.1.0 # let us comment on a specific PR if: failure() env: MESSAGE: | diff --git a/.github/workflows/post_peek_screenshot.yml b/.github/workflows/post_peek_screenshot.yml index ec010e72f..19d0761e2 100644 --- a/.github/workflows/post_peek_screenshot.yml +++ b/.github/workflows/post_peek_screenshot.yml @@ -7,7 +7,7 @@ on: jobs: post_screenshots_in_comment: name: Post the screenshot - runs-on: ubuntu-18.04 + runs-on: ubuntu-latest if: github.event.action == 'completed' && github.event.workflow_run.conclusion != 'skipped' env: # three possible values: 'skipped', 'success', 'failure' @@ -20,7 +20,7 @@ jobs: run: echo $PEEK_STATUS - name: Download workflow artifact - uses: dawidd6/action-download-artifact@v2.11.0 + uses: dawidd6/action-download-artifact@v2.27.0 with: github_token: ${{ secrets.GITHUB_TOKEN }} workflow: peek_icons.yml @@ -28,14 +28,14 @@ jobs: - name: Read the pr_num file id: pr_num_reader - uses: juliangruber/read-file-action@v1.0.0 + uses: juliangruber/read-file-action@v1.1.6 with: path: ./pr_num/pr_num.txt - name: Read the err message file if: success() id: err_message_reader - uses: juliangruber/read-file-action@v1.0.0 + uses: juliangruber/read-file-action@v1.1.6 with: path: ./err_messages/err_messages.txt @@ -81,7 +81,7 @@ jobs: client_id: ${{secrets.IMGUR_CLIENT_ID}} - name: Comment on the PR about the result - Success - uses: jungwinter/comment@v1 # let us comment on a specific PR + uses: jungwinter/comment@v1.1.0 # let us comment on a specific PR if: env.PEEK_STATUS == 'success' && success() env: MESSAGE: | @@ -109,6 +109,7 @@ jobs: 1. The number of Glyphs matches the number of SVGs that were selected. 2. The icons (second group of pictures) look the same as the SVGs (first group of pictures). 3. The icons are of high quality (legible, matches the official logo, etc.) + 4. A new object is added in the `devicon.json` file at the correct alphabetic position as seen [here](https://github.com/devicons/devicon/wiki/Updating-%60devicon.json%60) In case of font issues, it might be caused by Icomoon not accepting strokes in the SVGs. Check this [doc](https://icomoon.io/#faq/importing) for more details and fix the issues as instructed by Icomoon and update this PR once you are done. @@ -137,7 +138,7 @@ jobs: - name: Comment on the PR about the result - Failure if: env.PEEK_STATUS == 'failure' - uses: jungwinter/comment@v1 # let us comment on a specific PR + uses: jungwinter/comment@v1.1.0 # let us comment on a specific PR env: MESSAGE: | Hi there, @@ -150,9 +151,9 @@ jobs: Make sure that: - - 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) + - Your SVGs are named and added correctly to the /icons folder as seen [here](https://github.com/devicons/devicon/wiki/Organizing-SVGs). + - Your icon information has been added to the `devicon.json` as seen [here](https://github.com/devicons/devicon/wiki/Updating-%60devicon.json%60) + - Your PR title follows the format seen [here](https://github.com/devicons/devicon/wiki/Overview-on-Submitting-Icons) I will retry once everything is fixed. If I still fail or there are other error, the maintainers will investigate. @@ -165,7 +166,7 @@ jobs: body: ${{ format(env.MESSAGE, steps.err_message_reader.outputs.content) }} - name: Comment on the PR about the result - Failure if: failure() - uses: jungwinter/comment@v1 # let us comment on a specific PR + uses: jungwinter/comment@v1.1.0 # let us comment on a specific PR env: MESSAGE: | Hi there, diff --git a/.gitpod.dockerfile b/.gitpod.dockerfile new file mode 100644 index 000000000..7e356ce00 --- /dev/null +++ b/.gitpod.dockerfile @@ -0,0 +1,8 @@ +FROM gitpod/workspace-full-vnc + +RUN sudo apt-get update \ + && sudo apt-get install -y \ + firefox \ + gulp \ + && python -m pip install --upgrade pip \ + && pip install selenium==4.1.0 requests==2.25.1 diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 000000000..128ba42f8 --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,22 @@ +image: + file: .gitpod.dockerfile + +tasks: + - name: Setup & build + init: chmod +x ./.github/scripts/build_assets/geckodriver-v0.32.2-linux64/geckodriver + command: npm install && npm run build-icons + - name: Build CSS & run web server + init: npm run build-css && npm run dev + +github: + prebuilds: + addBadge: true + addComment: false + addCheck: true + master: true + branches: true + pullRequestsFromForks: true + +ports: + - port: 8000 + onOpen: open-preview diff --git a/.vscode/devicon-schema.json b/.vscode/devicon-schema.json new file mode 100644 index 000000000..cdabb5c95 --- /dev/null +++ b/.vscode/devicon-schema.json @@ -0,0 +1,223 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "definitions": { + "IconVersions": { + "type": "string", + "enum": [ + "original", + "plain", + "line", + "original-wordmark", + "plain-wordmark", + "line-wordmark" + ] + }, + "IconVersionsArray": { + "type": "array", + "items": { + "$ref": "#/definitions/IconVersions" + } + } + }, + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "title": "The official name of the technology.", + "description": "Pattern: Only lower-case letters and digits.", + "pattern": "^(dot-net|[0-9a-z]+)$" + }, + "altnames": { + "type": "array", + "title": "List of alternative names for this technology.", + "description": "Used for the searchbar on the Devicon website. https://devicon.dev", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "tags": { + "type": "array", + "title": "List of tags relating to the technology for categorization/search purpose.", + "$ref": "./tags-enum.json/#/definitions/Tags" + }, + "versions": { + "title": "Keeps track of the different versions that you have.", + "type": "object", + "additionalProperties": false, + "properties": { + "svg": { + "title": "List all the SVGs that you have.", + "contains": { + "$ref": "#/definitions/IconVersions" + }, + "minItems": 1, + "uniqueItems": true, + "$ref": "#/definitions/IconVersionsArray" + }, + "font": { + "title": "List only the SVGs that can be converted to fonts. Usually refers to \"plain\" and \"line\" versions but \"original\" can be accepted.", + "description": "DO NOT list aliases here! In this case use \"aliases\" property!", + "contains": { + "$ref": "#/definitions/IconVersions" + }, + "minItems": 1, + "uniqueItems": true, + "$ref": "#/definitions/IconVersionsArray" + } + } + }, + "color": { + "title": "The official/main hexadecimal color of the logo. [Case insensitive]", + "description": "Pattern example: #FFFFFF", + "type": "string", + "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$" + }, + "aliases": { + "title": "Keeps track of the aliases for the font versions ONLY.", + "description": "Can be empty, or contain objects, each with an alias and a base version. More info here: https://github.com/devicons/devicon/wiki/Updating-%60devicon.json%60#aliases-and-aliasobj", + "type": "array", + "items": { + "title": "AliasObj, an object containing an alias and a base version", + "type": "object", + "additionalProperties": false, + "properties": { + "base": { + "title": "The SVG file you are using as source for the alias.", + "$ref": "#/definitions/IconVersions" + }, + "alias": { + "title": "The new name (alias) that you want to generate.", + "$ref": "#/definitions/IconVersions" + } + }, + "required": [ + "base", + "alias" + ], + "allOf": [ + { + "if": { + "properties": { + "base": { + "const": "original" + } + } + }, + "then": { + "not": { + "properties": { + "alias": { + "const": "original" + } + } + } + } + }, + { + "if": { + "properties": { + "base": { + "const": "plain" + } + } + }, + "then": { + "not": { + "properties": { + "alias": { + "const": "plain" + } + } + } + } + }, + { + "if": { + "properties": { + "base": { + "const": "line" + } + } + }, + "then": { + "not": { + "properties": { + "alias": { + "const": "line" + } + } + } + } + }, + { + "if": { + "properties": { + "base": { + "const": "original-wordmark" + } + } + }, + "then": { + "not": { + "properties": { + "alias": { + "const": "original-wordmark" + } + } + } + } + }, + { + "if": { + "properties": { + "base": { + "const": "plain-wordmark" + } + } + }, + "then": { + "not": { + "properties": { + "alias": { + "const": "plain-wordmark" + } + } + } + } + }, + { + "if": { + "properties": { + "base": { + "const": "line-wordmark" + } + } + }, + "then": { + "not": { + "properties": { + "alias": { + "const": "line-wordmark" + } + } + } + } + } + ] + } + } + }, + "required": [ + "name", + "altnames", + "tags", + "versions", + "color", + "aliases" + ] + } +} diff --git a/.vscode/devicon.code-snippets b/.vscode/devicon.code-snippets new file mode 100644 index 000000000..2da130475 --- /dev/null +++ b/.vscode/devicon.code-snippets @@ -0,0 +1,24 @@ +{ + "new entry": { + "scope": "json", + "prefix": "new", + "description": "Inserts the new entry template object. Use it ONLY in \"devicon.json\"!", + "body": [ + "{", + " \"name\": \"\",", + " \"altnames\": [],", + " \"tags\": [],", + " \"versions\": {", + " \"svg\": [", + " \"\"", + " ],", + " \"font\": [", + " \"\"", + " ]", + " },", + " \"color\": \"\",", + " \"aliases\": []", + "}," + ] + } +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 000000000..fda5ad57b --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "editorconfig.editorconfig" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..7eb645653 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,10 @@ +{ + "json.schemas": [ + { + "fileMatch": [ + "devicon.json" + ], + "url": "/.vscode/devicon-schema.json" + } + ] +} diff --git a/.vscode/tags-enum.json b/.vscode/tags-enum.json new file mode 100644 index 000000000..1637bf6ff --- /dev/null +++ b/.vscode/tags-enum.json @@ -0,0 +1,283 @@ +{ + "definitions": { + "Tags": { + "type": "array", + "items": { + "type": "string", + "enum": [ + ".net", + "3d", + "ARM", + "C#", + "CMS", + "DAG", + "GNU", + "IDE", + "algorithms", + "analysis", + "analytics", + "android", + "animation", + "api", + "api_wrapper", + "app", + "apple", + "applets", + "application", + "architecture", + "arm", + "audio", + "auth", + "autodesk", + "automation", + "azure", + "big data", + "binary", + "blockchain", + "blog", + "brand", + "browser", + "build", + "bundler", + "c", + "c++", + "c-sharp", + "c/c++", + "cdn", + "chat", + "cli", + "cloud", + "cloud-computing-platform", + "cmdlets", + "cms", + "code quality", + "code-quality", + "code-review", + "coding-style", + "collaboration", + "command", + "command-line", + "company", + "compiler", + "computer", + "computer-vision", + "container", + "continuous-delivery", + "cplusplus", + "cpp", + "cross-platform", + "csharp", + "css", + "dashboard", + "data", + "data science", + "data-model", + "data-processing", + "data-science", + "data-transfer", + "database", + "db", + "deep-learning", + "deploy", + "deployment", + "design", + "desktop", + "development", + "devops", + "distribuition", + "dns", + "docker", + "documentation", + "dotnet", + "ecommerce", + "editor", + "elastic", + "elixir", + "engine", + "erc20", + "esbuild", + "ethereum", + "file-format", + "format", + "framework", + "frontend", + "ftp", + "functional", + "game", + "game-engine", + "git", + "gitops", + "go", + "google", + "graph", + "graphic", + "graphics", + "groovy", + "hardware", + "heterogeneous-computing", + "hosting", + "html", + "http", + "hypervisor", + "iconset", + "ide", + "infrastructure", + "infrastructure-as-a-service", + "infrastructure-as-code", + "integration", + "ionic", + "ios", + "iphone", + "java", + "javascript", + "javascript-runtime", + "jetbrains", + "js", + "jupyter notebook", + "jvm", + "k3s", + "khronos", + "kotlin", + "kubernetes", + "language", + "laravel", + "latex2e", + "latex3", + "library", + "linter", + "linux", + "localization", + "logs", + "machine-learning", + "manager", + "markup", + "material-design", + "math", + "mel", + "mesh", + "message-broker", + "metrics", + "micro-framework", + "micro-services", + "microcontroller", + "microservices", + "mobile", + "modeling", + "modelling", + "monitoring", + "multimedia", + "network", + "networking", + "node.js", + "nodejs", + "nosql", + "note-taking", + "object-notation", + "object-oriented", + "object-relational mapper", + "observability", + "open-source", + "operating-system", + "orchestrator", + "organization", + "organize", + "orm", + "os", + "package", + "package-manager", + "pages", + "performance", + "php", + "pipeline", + "platform", + "plotting", + "pods", + "polyfill", + "pre-processor", + "procedural", + "production-tool", + "production-tracking", + "programming", + "project-management", + "promise", + "prototype-based", + "provisioning", + "proxy", + "pymel", + "python", + "query", + "rancher", + "reactjs", + "remote-development", + "rest", + "robotics", + "router", + "ruby", + "runtime", + "rust", + "scala", + "script", + "scripting", + "sdk", + "security", + "server", + "serverless", + "shell", + "social", + "software", + "solidity", + "specification", + "sql", + "ssg", + "ssh", + "standard", + "state-management", + "static site generator", + "static-site-generator", + "statistics", + "storage", + "streaming", + "svn", + "task-runner", + "telemetry", + "terminal", + "test-runner", + "testing", + "tex", + "text editor", + "tool", + "tracing", + "transpiler", + "typescript", + "typesetting-system", + "ui", + "universal", + "unix", + "vcs", + "vector", + "version", + "version control", + "version-control", + "vfx", + "video", + "virtual machine", + "visualization", + "vmware", + "vuejs", + "vuejs-library", + "web", + "web-application", + "web-development", + "web3", + "webdrive", + "website", + "websockets", + "wiki", + "windows", + "wrapper", + "zig" + ] + } + } + } +} diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index bee231c1f..a27a5912d 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,132 +1 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, caste, color, religion, or sexual -identity and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the overall - community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or advances of - any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email address, - without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -info@devicon.dev. -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series of -actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or permanent -ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within the -community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.1, available at -[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. - -Community Impact Guidelines were inspired by -[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. - -For answers to common questions about this code of conduct, see the FAQ at -[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at -[https://www.contributor-covenant.org/translations][translations]. - -[homepage]: https://www.contributor-covenant.org -[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html -[Mozilla CoC]: https://github.com/mozilla/diversity -[FAQ]: https://www.contributor-covenant.org/faq -[translations]: https://www.contributor-covenant.org/translations +# The Code of Conduct has been moved to the official [Wiki page](https://github.com/devicons/devicon/wiki/Code-of-Conduct). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9f05a4f3a..4efc27ec7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@

Contributing to Devicon

-

This guide has been converted to a Wiki! This document will eventually be removed, please use the Wiki instead.

+

This guide has been moved to the Wiki and won't be updated any longer.


First of all, thanks for taking the time to contribute! This project can only grow and live by your countless contributions. To keep this project maintainable, we have developed some guidelines for our contributors. @@ -503,4 +503,4 @@ We are running a Discord server. You can go here to talk, discuss, and more with | Visual Studio Code | https://code.visualstudio.com/ | A code editor for editing code | | vscode.dev | https://vscode.dev/ | Visual Studio Code in the browser | | Iloveimg | https://www.iloveimg.com/resize-image/resize-svg | Resizing SVG's | -| svgviewer.dev | https://www.svgviewer.dev/ | View, save, and optimize SVGs | \ No newline at end of file +| svgviewer.dev | https://www.svgviewer.dev/ | View, save, and optimize SVGs | diff --git a/README.md b/README.md index 0e3b7843a..ea3051c04 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,10 @@ GitHub issues by-label - GitHub Repo stars + GitHub repository stars + + + Registered logos


@@ -24,7 +27,7 @@ Devicon Logo
- devicon aims to gather all logos representing development languages and tools. + Devicon aims to gather all logos representing development languages and tools.

Demo @@ -35,7 +38,7 @@

-

TL;DR;

+

TL;DR

```html @@ -47,44 +50,45 @@

Table of Contents

    -
  1. About the project
  2. -
  3. Getting started
  4. -
  5. Requesting icon
  6. +
  7. About the Project
  8. +
  9. Getting Started
  10. +
  11. Requesting Icon
  12. Contributing
  13. -
  14. Discord server
  15. +
  16. Discord Community
  17. develop vs master
  18. -
  19. Stale pull requests
  20. -
  21. Go build yourself
  22. +
  23. Stale Pull Requests
  24. +
  25. Building Devicon
-

About the project

+

About the Project

Devicon aims to gather all logos representing development languages and tools. Each icon comes in several versions: font/SVG, original/plain/line, colored/not colored, wordmark/no wordmark. - Devicon has 150+ icons. And it's growing!
+ Devicon has 150+ icons. And it's growing!

- See the devicon.json or our website for complete and up to date reference of + See the devicon.json or our website for complete and up to date reference of all available icons.

- - All product names, logos, and brands are property of their respective owners. All company, product and service - names used in this website are for identification purposes only. Use of these names, logos, and brands does not - imply endorsement. Usage of these logos should be done according to the company/brand/service's brand policy. - +

- Thank you to our contributors and the IcoMoon app. Devicon would not be possible without you. + Thanks to all our contributors and the IcoMoon app. Devicon would not be possible without you.

+ + All product names, logos, and brands are property of their respective owners. All company, product and service + names used in this website are for identification purposes only. Use of these names, logos, and brands does not + imply endorsement. Usage of these logos should be done according to the company/brand/service's brand policy. + -

Getting started

+

Getting Started

- For a super fast setup go check devicon.dev.
- You can either use the raw SVG icons or our devicon font (which is - also available via CDN). + For a super fast setup, go check devicon.dev.
+ You can either use the raw SVG icons, our Devicon font (which is + also available via CDN), or by building Devicon yourself.

-

Use the devicon font (recommended)

+

Use the devicon font (recommended)

You can install devicon as a dependency to your project either with npm or yarn:

@@ -95,9 +99,9 @@ yarn add devicon ```

- If you don't want to use a package manager you can also download + If you don't want to use a package manager, you can also download and include devicon.min.css next to the font files to your project. - See devicon.dev for details about how to add devicon to your project via + See devicon.dev for details about how to add Devicon to your project via a CDN.

@@ -109,7 +113,7 @@ yarn add devicon ``` -

Start using icons with <i>-tag

+

Start using icons with <i>-tag:

```html @@ -126,17 +130,18 @@ yarn add devicon ```

- An alternate way to use devicon is by copy/paste the raw SVG code + An alternate way to use devicon is by copy/pasting the raw SVG code to your project.

-

Copy/paste SVG code (from the svg folder or the project page)

+

Copy/paste SVG code (from the SVG folder or the project page):

```html ``` -Add css rules in your stylesheet +Add the following CSS rules in your stylesheet: + ```css .devicon-devicon-plain { max-width: 2em; @@ -148,15 +153,15 @@ Add css rules in your stylesheet } ``` -

You can also use the img tag and referencing an svg directly from the repo.

+

You can also use the img tag and reference an SVG directly from the repository:

```html - + ``` -

Requesting icon

+

Requesting an icon

- When you want to request an icon please feel free to create an issue. See our Wiki for more information. + When you want to request an icon please feel free to create an issue. Check out our Wiki for more information.

Contributing

@@ -164,15 +169,14 @@ Add css rules in your stylesheet We are happy with every contribution, whether it's new icons, features, or maintainers. Please have a look at our Wiki to see how you can contribute to this project.

-

Discord server

+

Discord community

-We are running a Discord server. You can go here to talk, discuss, and more with the maintainers and other people, too. Here's the invitation: https://discord.gg/hScy8KWACQ. -Note that the Discord server is unofficial, and Devicons is still being maintained via GitHub. +We have a Discord community for Devicons. You can easily request icons, discuss, and have a good time talking with the community members! Join the official Discord Server here!

develop vs master

-All official releases shall be in master. Any updates in between (icons, features, etc.) will be kept in develop. +All official releases shall be in master. Any updates in between (icons, features, etc.) will be kept in develop.

develop contains:
    @@ -180,7 +184,8 @@ All official releases shall be in master. Any updates in between (i Latest SVGs (non-optimized).
  • - No icons for the latest SVGs. These will be build at every release. + No icons for the latest SVGs. These will be built at every release.
    + Can be built manually. See Building Devicon.
  • Experimental changes. @@ -189,46 +194,122 @@ All official releases shall be in master. Any updates in between (i master contains:
    • - Latest official release, which contains the SVGs and icons. + Latest official release, which contains all the SVGs and icons.
    • - Official tested changes. + Official, tested changes.
    -

    Stale pull requests

    +

    Stale Pull Requests

    After a pull request has been open for over 30 days with no activity or response from the author, it'll be automatically marked as stale. We might fork your changes and merge the changes ourselves. Since GitHub tracks contributions by commits, you will be credited.

    -

    Go build yourself

    +

    Building Devicon

    - Feel free to follow those steps when you want to build the font - by yourself. +Follow these steps to build the website and icons either locally or using Gitpod.io.

    -
    Prerequisites
    -

    Install gulp (and gulp plugins)

    + +

    Table of contents

    +
      +
    1. Using Gitpod to build
    2. +
    3. Local Installation
    4. +
        +
      1. Install dependencies
      2. +
      3. Build the icons
      4. +
      5. Build the CSS stylesheet
      6. +
      7. Setting up the web server
      8. +
      +
    + +

    Using Gitpod.io

    +

    By using Gitpod.io, you can easily build the icons and install the
    required dependencies in one single click. No extra setup is required.

    + +Open in Gitpod + +> **Note** +> In case some of the commands are not properly ran, you can\ +> follow the steps below and run the same commands on Gitpod.io + +

    Local Installation

    + +

    Install dependencies

    + +

    Fork the repository and clone the forked repository.

    + +```bash +git clone https://github.com//devicon.git +``` + +> **Note** +> In case you don't have Git installed, check the official guide to install Git on your operating system. + +

    Install all the necessary NPM dependencies

    ```bash npm install ``` -
    Build the font and export stylesheet
    -Open icomoon.io and import icomoon.json. Choose yes when being asked -if you would like to restore the settings stored in the configuration file. +> **Note** +> In case you don't have NPM installed, check this ultimate guide on installing Node.js and NPM. These tools are required in order to build Devicon properly. -The next step is to click on Generate font and download the resulting archive. Extract the contents and you will find a fonts directory next to a style.css. Replace the contents of the fonts folder, rename style.css as devicon.css and follow the next step to build the final stylesheet. +

    Install Firefox

    +https://www.mozilla.org/en-US/firefox/new/ -
    Build and minify stylesheet
    -

    - Run the following command to build the resulting file devicon.min.css -

    +

    Install Python 3.8

    +https://www.python.org/downloads/ + +> **Note** +> Make sure your Python install includes [pip](https://pypi.org/project/pip/) + +

    Install Selenium

    +```bash +python3 -m pip install --upgrade pip && pip install selenium==4.1.0 requests==2.25.1 +``` + +

    Build the new icons

    + +

    Once all the dependencies are installed, you can proceed to build the newest icons.
    +Usually, this is done on each release, but you can have a sneak peek before a release.

    + +```bash +# Linux/Unix +npm run build-icons + +# Windows +python3 ./.github/scripts/icomoon_build_githubless.py ./.github/scripts/build_assets/geckodriver-v0.32.2-win64/geckodriver.exe ./icomoon.json ./devicon.json ./icons ./ --headless +``` + +The process might take a while, depending on your operating system's speed and the amount of icons. +

    If there are any errors shown, please let us know by creating an issue or contacting us on our Discord community.

    + +

    Build the CSS stylesheet

    + +

    Run the following command to build the new CSS stylesheet.
    +This file is used to show all the new icons previously built.

    ```bash npm run build-css ``` -
    +

    Setting up the web server

    + +

    Run the following command to start the web server with Python.

    + +```bash +npm run dev # Will run on port 8000 +``` + +

    Or this command, which does exactly the same, but the port can be customized.

    + +```bash +python3 -m http.server +``` + +

    You're done now! :tada: Your build of Devicons should be available at https://localhost:8000 (or the desired port).

    + +
    diff --git a/devicon-base.css b/devicon-base.css index 5c7e2f485..136a75aed 100644 --- a/devicon-base.css +++ b/devicon-base.css @@ -1,1527 +1,1527 @@ -@font-face { - font-family: 'devicon'; - src: url('fonts/devicon.eot?biu5f3'); - src: url('fonts/devicon.eot?biu5f3#iefix') format('embedded-opentype'), - url('fonts/devicon.ttf?biu5f3') format('truetype'), - url('fonts/devicon.woff?biu5f3') format('woff'), - url('fonts/devicon.svg?biu5f3#devicon') format('svg'); - font-weight: normal; - font-style: normal; - font-display: block; -} - -[class^="devicon-"], [class*=" devicon-"] { - /* use !important to prevent issues with browser extensions that change fonts */ - font-family: 'devicon' !important; - speak: never; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.devicon-openal-plain:before { - content: "\e90b"; -} -.devicon-kaggle-original-wordmark:before { - content: "\e90c"; -} -.devicon-kaggle-original:before { - content: "\e90d"; -} -.devicon-pytest-plain-wordmark:before { - content: "\e90e"; -} -.devicon-pytest-plain:before { - content: "\e916"; -} -.devicon-fastapi-plain-wordmark:before { - content: "\e917"; -} -.devicon-fastapi-plain:before { - content: "\e936"; -} -.devicon-opencv-plain-wordmark:before { - content: "\e937"; -} -.devicon-opencv-plain:before { - content: "\ea14"; -} -.devicon-k3s-plain-wordmark:before { - content: "\ea15"; -} -.devicon-k3s-original:before { - content: "\ea16"; -} -.devicon-packer-original-wordmark:before { - content: "\ea17"; -} -.devicon-packer-original:before { - content: "\ea1d"; -} -.devicon-anaconda-original-wordmark:before { - content: "\ea1e"; -} -.devicon-anaconda-original:before { - content: "\ea1f"; -} -.devicon-prometheus-original-wordmark:before { - content: "\ea20"; -} -.devicon-prometheus-original:before { - content: "\ea21"; -} -.devicon-rspec-original-wordmark:before { - content: "\ea22"; -} -.devicon-rspec-original:before { - content: "\ea23"; -} -.devicon-argocd-plain-wordmark:before { - content: "\ea24"; -} -.devicon-argocd-plain:before { - content: "\ea25"; -} -.devicon-blender-original-wordmark:before { - content: "\ea26"; -} -.devicon-blender-original:before { - content: "\ea27"; -} -.devicon-jetbrains-plain:before { - content: "\ea28"; -} -.devicon-cmake-plain-wordmark:before { - content: "\ea29"; -} -.devicon-cmake-plain:before { - content: "\ea2a"; -} -.devicon-dropwizard-plain:before { - content: "\ea2b"; -} -.devicon-nuget-original-wordmark:before { - content: "\ea2c"; -} -.devicon-nuget-original:before { - content: "\ea2d"; -} -.devicon-podman-plain-wordmark:before { - content: "\ea2e"; -} -.devicon-podman-plain:before { - content: "\ea2f"; -} -.devicon-networkx-original:before { - content: "\ea30"; -} -.devicon-sqlite-plain-wordmark:before { - content: "\ea31"; -} -.devicon-sqlite-plain:before { - content: "\ea32"; -} -.devicon-discordjs-plain-wordmark:before { - content: "\ea33"; -} -.devicon-discordjs-plain:before { - content: "\ea34"; -} -.devicon-unrealengine-original-wordmark:before { - content: "\ea35"; -} -.devicon-unrealengine-original:before { - content: "\ea36"; -} -.devicon-django-plain-wordmark:before { - content: "\ea37"; -} -.devicon-django-plain:before { - content: "\ea38"; -} -.devicon-devicon-line-wordmark:before { - content: "\ea39"; -} -.devicon-devicon-line:before { - content: "\ea3a"; -} -.devicon-devicon-plain-wordmark:before { - content: "\ea3b"; -} -.devicon-devicon-plain:before { - content: "\ea3c"; -} -.devicon-bootstrap-plain-wordmark:before { - content: "\ea3d"; -} -.devicon-bootstrap-plain:before { - content: "\ea3e"; -} -.devicon-solidity-plain:before { - content: "\ea3f"; -} -.devicon-polygon-plain:before { - content: "\ea40"; -} -.devicon-maya-plain-wordmark:before { - content: "\ea41"; -} -.devicon-maya-plain:before { - content: "\ea42"; -} -.devicon-xcode-plain:before { - content: "\ea43"; -} -.devicon-selenium-original:before { - content: "\ea44"; -} -.devicon-ifttt-original:before { - content: "\ea45"; -} -.devicon-pytorch-plain-wordmark:before { - content: "\ea46"; -} -.devicon-pytorch-original:before { - content: "\ea47"; -} -.devicon-xamarin-original-wordmark:before { - content: "\ea48"; -} -.devicon-xamarin-original:before { - content: "\ea49"; -} -.devicon-hugo-plain-wordmark:before { - content: "\ea4a"; -} -.devicon-hugo-plain:before { - content: "\ea4b"; -} -.devicon-grafana-original-wordmark:before { - content: "\ea4c"; -} -.devicon-grafana-original:before { - content: "\ea4d"; -} -.devicon-ansible-plain-wordmark:before { - content: "\ea4e"; -} -.devicon-ansible-plain:before { - content: "\ea4f"; -} -.devicon-shotgrid-original-wordmark:before { - content: "\ea50"; -} -.devicon-shotgrid-plain:before { - content: "\ea51"; -} -.devicon-androidstudio-plain-wordmark:before { - content: "\ea52"; -} -.devicon-androidstudio-plain:before { - content: "\ea53"; -} -.devicon-eslint-original-wordmark:before { - content: "\ea54"; -} -.devicon-eslint-original:before { - content: "\ea55"; -} -.devicon-latex-original:before { - content: "\ea56"; -} -.devicon-vuetify-plain:before { - content: "\ea57"; -} -.devicon-vuetify-line:before { - content: "\ea58"; -} -.devicon-sdl-plain:before { - content: "\ea59"; -} -.devicon-bitbucket-original-wordmark:before { - content: "\ea5a"; -} -.devicon-bitbucket-original:before { - content: "\ea5b"; -} -.devicon-confluence-original-wordmark:before { - content: "\ea5c"; -} -.devicon-confluence-original:before { - content: "\ea5d"; -} -.devicon-fedora-plain:before { - content: "\ea5e"; -} -.devicon-rect-plain:before { - content: "\ea5f"; -} -.devicon-bamboo-original-wordmark:before { - content: "\ea60"; -} -.devicon-bamboo-original:before { - content: "\ea61"; -} -.devicon-jira-plain-wordmark:before { - content: "\ea62"; -} -.devicon-jira-plain:before { - content: "\ea63"; -} -.devicon-terraform-plain-wordmark:before { - content: "\ea64"; -} -.devicon-terraform-plain:before { - content: "\ea65"; -} -.devicon-webflow-original:before { - content: "\ea66"; -} -.devicon-gentoo-plain:before { - content: "\ea67"; -} -.devicon-gentoo-plain-wordmark:before { - content: "\ea68"; -} -.devicon-opensuse-plain-wordmark:before { - content: "\ea69"; -} -.devicon-opensuse-plain:before { - content: "\ea6a"; -} -.devicon-storybook-plain-wordmark:before { - content: "\e900"; -} -.devicon-storybook-plain:before { - content: "\e901"; -} -.devicon-pandas-original-wordmark:before { - content: "\e902"; -} -.devicon-pandas-original:before { - content: "\e903"; -} -.devicon-centos-plain-wordmark:before { - content: "\e904"; -} -.devicon-centos-plain:before { - content: "\e905"; -} -.devicon-azure-plain-wordmark:before { - content: "\e906"; -} -.devicon-azure-plain:before { - content: "\e907"; -} -.devicon-go-line:before { - content: "\e908"; -} -.devicon-go-plain:before { - content: "\e909"; -} -.devicon-go-original-wordmark:before { - content: "\e90a"; -} -.devicon-msdos-line:before { - content: "\e90f"; -} -.devicon-arduino-plain-wordmark:before { - content: "\e910"; -} -.devicon-arduino-plain:before { - content: "\e911"; -} -.devicon-qt-original:before { - content: "\e912"; -} -.devicon-gcc-plain:before { - content: "\e913"; -} -.devicon-svelte-plain-wordmark:before { - content: "\e914"; -} -.devicon-svelte-plain:before { - content: "\e915"; -} -.devicon-slack-plain-wordmark:before { - content: "\e918"; -} -.devicon-slack-plain:before { - content: "\e919"; -} -.devicon-canva-original:before { - content: "\e91a"; -} -.devicon-jamstack-plain-wordmark:before { - content: "\e91b"; -} -.devicon-jamstack-original:before { - content: "\e91c"; -} -.devicon-denojs-original-wordmark:before { - content: "\e91d"; -} -.devicon-denojs-original:before { - content: "\e91e"; -} -.devicon-apachekafka-original-wordmark:before { - content: "\e91f"; -} -.devicon-apachekafka-original:before { - content: "\e920"; -} -.devicon-filezilla-plain-wordmark:before { - content: "\e921"; -} -.devicon-filezilla-plain:before { - content: "\e922"; -} -.devicon-opengl-plain:before { - content: "\e923"; -} -.devicon-putty-plain:before { - content: "\e924"; -} -.devicon-opera-plain-wordmark:before { - content: "\e925"; -} -.devicon-opera-plain:before { - content: "\e926"; -} -.devicon-subversion-original:before { - content: "\e927"; -} -.devicon-tortoisegit-line:before { - content: "\e928"; -} -.devicon-tortoisegit-plain:before { - content: "\e929"; -} -.devicon-towergit-plain-wordmark:before { - content: "\e92a"; -} -.devicon-towergit-plain:before { - content: "\e92b"; -} -.devicon-unity-original-wordmark:before { - content: "\e92c"; -} -.devicon-unity-original:before { - content: "\e92d"; -} -.devicon-neo4j-plain-wordmark:before { - content: "\e92e"; -} -.devicon-neo4j-plain:before { - content: "\e92f"; -} -.devicon-nuxtjs-plain-wordmark:before { - content: "\e930"; -} -.devicon-nuxtjs-plain:before { - content: "\e931"; -} -.devicon-socketio-original-wordmark:before { - content: "\e932"; -} -.devicon-socketio-original:before { - content: "\e933"; -} -.devicon-processing-plain-wordmark:before { - content: "\e934"; -} -.devicon-processing-plain:before { - content: "\e935"; -} -.devicon-feathersjs-original:before { - content: "\e938"; -} -.devicon-adonisjs-original-wordmark:before { - content: "\e939"; -} -.devicon-adonisjs-original:before { - content: "\e93a"; -} -.devicon-numpy-original-wordmark:before { - content: "\e93b"; -} -.devicon-numpy-original:before { - content: "\e93c"; -} -.devicon-matlab-line:before { - content: "\e93d"; -} -.devicon-matlab-plain:before { - content: "\e93e"; -} -.devicon-clojurescript-plain:before { - content: "\e93f"; -} -.devicon-threejs-original-wordmark:before { - content: "\e940"; -} -.devicon-threejs-original:before { - content: "\e941"; -} -.devicon-markdown-original:before { - content: "\e942"; -} -.devicon-nixos-plain-wordmark:before { - content: "\e992"; -} -.devicon-nixos-plain:before { - content: "\e9b2"; -} -.devicon-perl-plain:before { - content: "\e9b3"; -} -.devicon-tensorflow-line-wordmark:before { - content: "\e9b4"; -} -.devicon-tensorflow-line:before { - content: "\e9b5"; -} -.devicon-tensorflow-original-wordmark:before { - content: "\e9b6"; -} -.devicon-tensorflow-original:before { - content: "\e9b7"; -} -.devicon-zig-plain-wordmark:before { - content: "\e9b8"; -} -.devicon-zig-original:before { - content: "\e9b9"; -} -.devicon-raspberrypi-line-wordmark:before { - content: "\e9ba"; -} -.devicon-raspberrypi-line:before { - content: "\e9bb"; -} -.devicon-embeddedc-plain-wordmark:before { - content: "\e9bc"; -} -.devicon-embeddedc-plain:before { - content: "\e9bd"; -} -.devicon-labview-plain-wordmark:before { - content: "\e9be"; -} -.devicon-labview-plain:before { - content: "\e9bf"; -} -.devicon-modx-plain-wordmark:before { - content: "\e9c0"; -} -.devicon-modx-plain:before { - content: "\e9c1"; -} -.devicon-knockout-plain-wordmark:before { - content: "\e9c2"; -} -.devicon-rstudio-plain:before { - content: "\e9c3"; -} -.devicon-phalcon-plain:before { - content: "\e9c4"; -} -.devicon-minitab-plain:before { - content: "\e9c5"; -} -.devicon-bulma-plain:before { - content: "\e9c6"; -} -.devicon-spss-plain:before { - content: "\e9c7"; -} -.devicon-karma-plain:before { - content: "\e9ca"; -} -.devicon-jest-plain:before { - content: "\e9cb"; -} -.devicon-circleci-plain-wordmark:before { - content: "\e9cc"; -} -.devicon-circleci-plain:before { - content: "\e9cd"; -} -.devicon-codecov-plain:before { - content: "\e9ce"; -} -.devicon-magento-line:before { - content: "\e9cf"; -} -.devicon-magento-original-wordmark:before { - content: "\e9d0"; -} -.devicon-magento-original:before { - content: "\e9d1"; -} -.devicon-shopware-original-wordmark:before { - content: "\e9d2"; -} -.devicon-shopware-original:before { - content: "\e9d3"; -} -.devicon-salesforce-plain:before { - content: "\e9d4"; -} -.devicon-vuestorefront-plain:before { - content: "\e9d5"; -} -.devicon-unix-original:before { - content: "\e9d6"; -} -.devicon-godot-plain-wordmark:before { - content: "\e9d7"; -} -.devicon-godot-plain:before { - content: "\e9d8"; -} -.devicon-vscode-plain-wordmark:before { - content: "\e9d9"; -} -.devicon-vscode-plain:before { - content: "\e9da"; -} -.devicon-julia-plain-wordmark:before { - content: "\e9db"; -} -.devicon-julia-plain:before { - content: "\e9dc"; -} -.devicon-crystal-original-wordmark:before { - content: "\e9dd"; -} -.devicon-crystal-original:before { - content: "\e9de"; -} -.devicon-tailwindcss-plain:before { - content: "\e9df"; -} -.devicon-tailwindcss-original-wordmark:before { - content: "\e9e0"; -} -.devicon-weblate-plain-wordmark:before { - content: "\e999"; -} -.devicon-weblate-plain:before { - content: "\e99a"; -} -.devicon-thealgorithms-plain-wordmark:before { - content: "\e99b"; -} -.devicon-thealgorithms-plain:before { - content: "\e99c"; -} -.devicon-spring-plain-wordmark:before { - content: "\e99d"; -} -.devicon-spring-plain:before { - content: "\e99e"; -} -.devicon-rails-plain-wordmark:before { - content: "\e99f"; -} -.devicon-rails-plain:before { - content: "\e9a0"; -} -.devicon-phoenix-plain-wordmark:before { - content: "\e9a1"; -} -.devicon-phoenix-plain:before { - content: "\e9a2"; -} -.devicon-nextjs-original-wordmark:before { - content: "\e9a3"; -} -.devicon-nextjs-line:before { - content: "\e9a4"; -} -.devicon-nextjs-original:before { - content: "\e9a5"; -} -.devicon-lua-plain-wordmark:before { - content: "\e9a6"; -} -.devicon-lua-plain:before { - content: "\e9a7"; -} -.devicon-graphql-plain-wordmark:before { - content: "\e9a8"; -} -.devicon-graphql-plain:before { - content: "\e9a9"; -} -.devicon-gitter-plain-wordmark:before { - content: "\e9aa"; -} -.devicon-gitter-plain:before { - content: "\e9ab"; -} -.devicon-figma-plain:before { - content: "\e9ac"; -} -.devicon-digitalocean-plain-wordmark:before { - content: "\e9ad"; -} -.devicon-digitalocean-plain:before { - content: "\e9ae"; -} -.devicon-dotnetcore-plain:before { - content: "\e9af"; -} -.devicon-dart-plain-wordmark:before { - content: "\e9b0"; -} -.devicon-dart-plain:before { - content: "\e9b1"; -} -.devicon-r-plain:before { - content: "\e98e"; -} -.devicon-r-original:before { - content: "\e98f"; -} -.devicon-ocaml-plain-wordmark:before { - content: "\e990"; -} -.devicon-ocaml-plain:before { - content: "\e991"; -} -.devicon-jupyter-plain-wordmark:before { - content: "\e993"; -} -.devicon-jupyter-plain:before { - content: "\e994"; -} -.devicon-fsharp-plain:before { - content: "\e995"; -} -.devicon-elixir-plain-wordmark:before { - content: "\e996"; -} -.devicon-elixir-plain:before { - content: "\e997"; -} -.devicon-aarch64-plain:before { - content: "\e998"; -} -.devicon-xd-line:before { - content: "\e97a"; -} -.devicon-xd-plain:before { - content: "\e97b"; -} -.devicon-uwsgi-plain:before { - content: "\e97c"; -} -.devicon-microsoftsqlserver-plain-wordmark:before { - content: "\e97d"; -} -.devicon-microsoftsqlserver-plain:before { - content: "\e97e"; -} -.devicon-sqlalchemy-original-wordmark:before { - content: "\e97f"; -} -.devicon-sqlalchemy-plain:before { - content: "\e980"; -} -.devicon-rocksdb-plain:before { - content: "\e981"; -} -.devicon-objectivec-plain:before { - content: "\e982"; -} -.devicon-kubernetes-plain-wordmark:before { - content: "\e983"; -} -.devicon-kubernetes-plain:before { - content: "\e984"; -} -.devicon-googlecloud-plain-wordmark:before { - content: "\e985"; -} -.devicon-googlecloud-plain:before { - content: "\e986"; -} -.devicon-flask-original-wordmark:before { - content: "\e987"; -} -.devicon-flask-original:before { - content: "\e988"; -} -.devicon-firebase-plain-wordmark:before { - content: "\e989"; -} -.devicon-firebase-plain:before { - content: "\e98a"; -} -.devicon-eleventy-plain:before { - content: "\e98b"; -} -.devicon-appwrite-plain-wordmark:before { - content: "\e98c"; -} -.devicon-appwrite-plain:before { - content: "\e98d"; -} -.devicon-bash-plain:before { - content: "\e979"; -} -.devicon-woocommerce-plain-wordmark:before { - content: "\e966"; -} -.devicon-woocommerce-plain:before { - content: "\e967"; -} -.devicon-typo3-plain-wordmark:before { - content: "\e968"; -} -.devicon-typo3-plain:before { - content: "\e969"; -} -.devicon-premierepro-plain:before { - content: "\e96a"; -} -.devicon-nestjs-plain-wordmark:before { - content: "\e96b"; -} -.devicon-nestjs-plain:before { - content: "\e96c"; -} -.devicon-materialui-plain:before { - content: "\e96d"; -} -.devicon-kotlin-plain-wordmark:before { - content: "\e96e"; -} -.devicon-kotlin-plain:before { - content: "\e96f"; -} -.devicon-jenkins-plain:before { - content: "\e970"; -} -.devicon-jenkins-line:before { - content: "\e971"; -} -.devicon-haxe-plain:before { - content: "\e972"; -} -.devicon-gatsby-plain-wordmark:before { - content: "\e973"; -} -.devicon-gatsby-plain:before { - content: "\e974"; -} -.devicon-flutter-plain:before { - content: "\e975"; -} -.devicon-composer-line-wordmark:before { - content: "\e976"; -} -.devicon-composer-line:before { - content: "\e977"; -} -.devicon-aftereffects-plain:before { - content: "\e978"; -} -.devicon-yunohost-plain:before { - content: "\e963"; -} -.devicon-redux-original:before { - content: "\e964"; -} -.devicon-clojure-line:before { - content: "\e962"; -} -.devicon-mocha-plain:before { - content: "\e961"; -} -.devicon-haskell-plain:before { - content: "\e95f"; -} -.devicon-haskell-plain-wordmark:before { - content: "\e960"; -} -.devicon-codepen-original-wordmark:before { - content: "\e95d"; -} -.devicon-codepen-plain:before { - content: "\e95e"; -} -.devicon-groovy-plain:before { - content: "\e958"; -} -.devicon-rust-plain:before { - content: "\e959"; -} -.devicon-scala-plain-wordmark:before { - content: "\e95a"; -} -.devicon-scala-plain:before { - content: "\e95b"; -} -.devicon-grails-plain:before { - content: "\e95c"; -} -.devicon-sketch-line-wordmark:before { - content: "\e94c"; -} -.devicon-sketch-line:before { - content: "\e94d"; -} -.devicon-npm-original-wordmark:before { - content: "\e952"; -} -.devicon-ionic-original-wordmark:before { - content: "\e953"; -} -.devicon-ionic-original:before { - content: "\e954"; -} -.devicon-ember-original-wordmark:before { - content: "\e955"; -} -.devicon-electron-original-wordmark:before { - content: "\e956"; -} -.devicon-electron-original:before { - content: "\e957"; -} -.devicon-vagrant-plain-wordmark:before { - content: "\e94e"; -} -.devicon-vagrant-plain:before { - content: "\e94f"; -} -.devicon-yarn-plain-wordmark:before { - content: "\e950"; -} -.devicon-yarn-plain:before { - content: "\e951"; -} -.devicon-handlebars-plain-wordmark:before { - content: "\e94a"; -} -.devicon-handlebars-plain:before { - content: "\e94b"; -} -.devicon-couchdb-plain-wordmark:before { - content: "\e948"; -} -.devicon-couchdb-plain:before { - content: "\e949"; -} -.devicon-behance-plain-wordmark:before { - content: "\e943"; -} -.devicon-behance-plain:before { - content: "\e945"; -} -.devicon-linkedin-plain-wordmark:before { - content: "\e946"; -} -.devicon-linkedin-plain:before { - content: "\e947"; -} -.devicon-ceylon-plain:before { - content: "\e944"; -} -.devicon-elm-plain-wordmark:before { - content: "\e965"; -} -.devicon-elm-plain:before { - content: "\e9c8"; -} -.devicon-cakephp-plain-wordmark:before { - content: "\e9c9"; -} -.devicon-cakephp-plain:before { - content: "\e9e1"; -} -.devicon-stylus-original:before { - content: "\e9e2"; -} -.devicon-express-original-wordmark:before { - content: "\e9e3"; -} -.devicon-express-original:before { - content: "\e9e4"; -} -.devicon-intellij-plain-wordmark:before { - content: "\e9e5"; -} -.devicon-intellij-plain:before { - content: "\e9e6"; -} -.devicon-pycharm-plain-wordmark:before { - content: "\e9e7"; -} -.devicon-pycharm-plain:before { - content: "\e9e8"; -} -.devicon-rubymine-plain-wordmark:before { - content: "\e9e9"; -} -.devicon-rubymine-plain:before { - content: "\e9ea"; -} -.devicon-webstorm-plain-wordmark:before { - content: "\e9eb"; -} -.devicon-webstorm-plain:before { - content: "\e9ec"; -} -.devicon-tomcat-line-wordmark:before { - content: "\e9ed"; -} -.devicon-tomcat-line:before { - content: "\e9ee"; -} -.devicon-vuejs-line-wordmark:before { - content: "\e9ef"; -} -.devicon-vuejs-line:before { - content: "\e9f0"; -} -.devicon-vuejs-plain-wordmark:before { - content: "\e9f1"; -} -.devicon-vuejs-plain:before { - content: "\e9f2"; -} -.devicon-swift-plain-wordmark:before { - content: "\e9f3"; -} -.devicon-swift-plain:before { - content: "\e9f4"; -} -.devicon-webpack-plain-wordmark:before { - content: "\e9f5"; -} -.devicon-webpack-plain:before { - content: "\e9f6"; -} -.devicon-visualstudio-plain-wordmark:before { - content: "\e9f7"; -} -.devicon-visualstudio-plain:before { - content: "\e9f8"; -} -.devicon-sequelize-plain-wordmark:before { - content: "\e9f9"; -} -.devicon-sequelize-plain:before { - content: "\e9fa"; -} -.devicon-typescript-plain:before { - content: "\e9fb"; -} -.devicon-babel-plain:before { - content: "\e9fc"; -} -.devicon-facebook-plain:before { - content: "\e9fd"; -} -.devicon-google-plain-wordmark:before { - content: "\e9fe"; -} -.devicon-google-plain:before { - content: "\e9ff"; -} -.devicon-twitter-original:before { - content: "\ea00"; -} -.devicon-mocha:before { - content: "\ea01"; -} -.devicon-jasmine-plain:before { - content: "\ea02"; -} -.devicon-jasmine-wordmark:before { - content: "\ea03"; -} -.devicon-gatling-plain:before { - content: "\ea04"; -} -.devicon-gatling-plain-wordmark:before { - content: "\ea05"; -} -.devicon-phpstorm-plain:before { - content: "\ea06"; -} -.devicon-phpstorm-plain-wordmark:before { - content: "\ea07"; -} -.devicon-sourcetree-original:before { - content: "\ea08"; -} -.devicon-sourcetree-original-wordmark:before { - content: "\ea09"; -} -.devicon-ssh-original:before { - content: "\ea0a"; -} -.devicon-ssh-original-wordmark:before { - content: "\ea0b"; -} -.devicon-jeet-plain:before { - content: "\ea0c"; -} -.devicon-jeet-plain-wordmark:before { - content: "\ea0d"; -} -.devicon-gitlab-plain:before { - content: "\ea0e"; -} -.devicon-gitlab-plain-wordmark:before { - content: "\ea0f"; -} -.devicon-github-original:before { - content: "\ea10"; -} -.devicon-github-original-wordmark:before { - content: "\ea11"; -} -.devicon-d3js-plain:before { - content: "\ea12"; -} -.devicon-d3js-original:before { - content: "\ea13"; -} -.devicon-gradle-plain:before { - content: "\ea18"; -} -.devicon-gradle-plain-wordmark:before { - content: "\e8f1"; -} -.devicon-cucumber-plain:before { - content: "\ea19"; -} -.devicon-cucumber-plain-wordmark:before { - content: "\ea1a"; -} -.devicon-protractor-plain:before { - content: "\ea1b"; -} -.devicon-protractor-plain-wordmark:before { - content: "\ea1c"; -} -.devicon-safari-line-wordmark:before { - content: "\e632"; -} -.devicon-safari-line:before { - content: "\e63a"; -} -.devicon-safari-plain-wordmark:before { - content: "\e63b"; -} -.devicon-safari-plain:before { - content: "\e63c"; -} -.devicon-gimp-plain:before { - content: "\e633"; -} -.devicon-redhat-plain-wordmark:before { - content: "\e62a"; -} -.devicon-redhat-plain:before { - content: "\e62b"; -} -.devicon-cplusplus-line:before { - content: "\e634"; -} -.devicon-cplusplus-plain:before { - content: "\e635"; -} -.devicon-csharp-line:before { - content: "\e636"; -} -.devicon-csharp-plain:before { - content: "\e637"; -} -.devicon-c-line:before { - content: "\e638"; -} -.devicon-c-plain:before { - content: "\e639"; -} -.devicon-nodewebkit-line-wordmark:before { - content: "\e611"; -} -.devicon-nodewebkit-line:before { - content: "\e612"; -} -.devicon-nodewebkit-plain-wordmark:before { - content: "\e613"; -} -.devicon-nodewebkit-plain:before { - content: "\e614"; -} -.devicon-nginx-original:before { - content: "\e615"; -} -.devicon-erlang-plain-wordmark:before { - content: "\e616"; -} -.devicon-erlang-plain:before { - content: "\e617"; -} -.devicon-doctrine-line-wordmark:before { - content: "\e618"; -} -.devicon-doctrine-line:before { - content: "\e619"; -} -.devicon-doctrine-plain-wordmark:before { - content: "\e61a"; -} -.devicon-doctrine-plain:before { - content: "\e625"; -} -.devicon-apache-line-wordmark:before { - content: "\e626"; -} -.devicon-apache-line:before { - content: "\e627"; -} -.devicon-apache-plain-wordmark:before { - content: "\e628"; -} -.devicon-apache-plain:before { - content: "\e629"; -} -.devicon-redis-plain-wordmark:before { - content: "\e606"; -} -.devicon-redis-plain:before { - content: "\e607"; -} -.devicon-meteor-plain-wordmark:before { - content: "\e608"; -} -.devicon-meteor-plain:before { - content: "\e609"; -} -.devicon-heroku-line-wordmark:before { - content: "\e60a"; -} -.devicon-heroku-line:before { - content: "\e60b"; -} -.devicon-heroku-plain-wordmark:before { - content: "\e60c"; -} -.devicon-heroku-plain:before { - content: "\e60f"; -} -.devicon-docker-plain-wordmark:before { - content: "\e61e"; -} -.devicon-docker-plain:before { - content: "\e61f"; -} -.devicon-symfony-original-wordmark:before { - content: "\e602"; -} -.devicon-symfony-original:before { - content: "\e605"; -} -.devicon-react-original-wordmark:before { - content: "\e600"; -} -.devicon-react-original:before { - content: "\e601"; -} -.devicon-amazonwebservices-original:before { - content: "\e603"; -} -.devicon-amazonwebservices-plain-wordmark:before { - content: "\e604"; -} -.devicon-android-plain-wordmark:before { - content: "\e60d"; -} -.devicon-android-plain:before { - content: "\e60e"; -} -.devicon-angularjs-plain-wordmark:before { - content: "\e61c"; -} -.devicon-angularjs-plain:before { - content: "\e61d"; -} -.devicon-appcelerator-original:before { - content: "\e620"; -} -.devicon-appcelerator-plain-wordmark:before { - content: "\e621"; -} -.devicon-apple-original:before { - content: "\e622"; -} -.devicon-atom-original-wordmark:before { - content: "\e623"; -} -.devicon-atom-original:before { - content: "\e624"; -} -.devicon-backbonejs-plain-wordmark:before { - content: "\e62c"; -} -.devicon-backbonejs-plain:before { - content: "\e62d"; -} -.devicon-bower-line-wordmark:before { - content: "\e630"; -} -.devicon-bower-line:before { - content: "\e631"; -} -.devicon-bower-plain-wordmark:before { - content: "\e64e"; -} -.devicon-bower-plain:before { - content: "\e64f"; -} -.devicon-chrome-plain-wordmark:before { - content: "\e665"; -} -.devicon-chrome-plain:before { - content: "\e666"; -} -.devicon-codeigniter-plain-wordmark:before { - content: "\e667"; -} -.devicon-codeigniter-plain:before { - content: "\e668"; -} -.devicon-coffeescript-original-wordmark:before { - content: "\e669"; -} -.devicon-coffeescript-original:before { - content: "\e66a"; -} -.devicon-css3-plain-wordmark:before { - content: "\e678"; -} -.devicon-css3-plain:before { - content: "\e679"; -} -.devicon-debian-plain-wordmark:before { - content: "\e67e"; -} -.devicon-debian-plain:before { - content: "\e67f"; -} -.devicon-dot-net-plain-wordmark:before { - content: "\e6d3"; -} -.devicon-dot-net-plain:before { - content: "\e6d4"; -} -.devicon-drupal-plain-wordmark:before { - content: "\e6e2"; -} -.devicon-drupal-plain:before { - content: "\e6e3"; -} -.devicon-firefox-plain-wordmark:before { - content: "\e75d"; -} -.devicon-firefox-plain:before { - content: "\e75e"; -} -.devicon-foundation-plain-wordmark:before { - content: "\e7a2"; -} -.devicon-foundation-plain:before { - content: "\e7a3"; -} -.devicon-git-plain-wordmark:before { - content: "\e7a7"; -} -.devicon-git-plain:before { - content: "\e7a8"; -} -.devicon-grunt-line-wordmark:before { - content: "\e7a9"; -} -.devicon-grunt-line:before { - content: "\e7aa"; -} -.devicon-grunt-plain-wordmark:before { - content: "\e7ea"; -} -.devicon-grunt-plain:before { - content: "\e7eb"; -} -.devicon-gulp-plain:before { - content: "\e7ec"; -} -.devicon-html5-plain-wordmark:before { - content: "\e7f6"; -} -.devicon-html5-plain:before { - content: "\e7f7"; -} -.devicon-ie10-original:before { - content: "\e7f8"; -} -.devicon-illustrator-line:before { - content: "\e7f9"; -} -.devicon-illustrator-plain:before { - content: "\e7fa"; -} -.devicon-inkscape-plain-wordmark:before { - content: "\e834"; -} -.devicon-inkscape-plain:before { - content: "\e835"; -} -.devicon-java-plain-wordmark:before { - content: "\e841"; -} -.devicon-java-plain:before { - content: "\e842"; -} -.devicon-javascript-plain:before { - content: "\e845"; -} -.devicon-jquery-plain-wordmark:before { - content: "\e849"; -} -.devicon-jquery-plain:before { - content: "\e84a"; -} -.devicon-krakenjs-plain-wordmark:before { - content: "\e84f"; -} -.devicon-krakenjs-plain:before { - content: "\e850"; -} -.devicon-laravel-plain-wordmark:before { - content: "\e851"; -} -.devicon-laravel-plain:before { - content: "\e852"; -} -.devicon-less-plain-wordmark:before { - content: "\e853"; -} -.devicon-linux-plain:before { - content: "\eb1c"; -} -.devicon-mongodb-plain-wordmark:before { - content: "\eb43"; -} -.devicon-mongodb-plain:before { - content: "\eb44"; -} -.devicon-moodle-plain-wordmark:before { - content: "\eb5a"; -} -.devicon-moodle-plain:before { - content: "\eb5b"; -} -.devicon-mysql-plain-wordmark:before { - content: "\eb60"; -} -.devicon-mysql-plain:before { - content: "\eb61"; -} -.devicon-nodejs-plain-wordmark:before { - content: "\eb69"; -} -.devicon-nodejs-plain:before { - content: "\eb6a"; -} -.devicon-oracle-original:before { - content: "\eb6b"; -} -.devicon-photoshop-line:before { - content: "\eb6c"; -} -.devicon-photoshop-plain:before { - content: "\eb6d"; -} -.devicon-php-plain:before { - content: "\eb71"; -} -.devicon-postgresql-plain-wordmark:before { - content: "\eb7c"; -} -.devicon-postgresql-plain:before { - content: "\eb7d"; -} -.devicon-python-plain-wordmark:before { - content: "\eb88"; -} -.devicon-python-plain:before { - content: "\eb89"; -} -.devicon-ruby-plain-wordmark:before { - content: "\ebc9"; -} -.devicon-ruby-plain:before { - content: "\ebca"; -} -.devicon-sass-original:before { - content: "\ebcb"; -} -.devicon-travis-plain-wordmark:before { - content: "\ebcc"; -} -.devicon-travis-plain:before { - content: "\ebcd"; -} -.devicon-trello-plain-wordmark:before { - content: "\ebce"; -} -.devicon-trello-plain:before { - content: "\ebcf"; -} -.devicon-ubuntu-plain-wordmark:before { - content: "\ebd0"; -} -.devicon-ubuntu-plain:before { - content: "\ebd1"; -} -.devicon-vim-plain:before { - content: "\ebf3"; -} -.devicon-windows8-original-wordmark:before { - content: "\ebf4"; -} -.devicon-windows8-original:before { - content: "\ebf5"; -} -.devicon-wordpress-plain-wordmark:before { - content: "\ebfd"; -} -.devicon-wordpress-plain:before { - content: "\ebfe"; -} -.devicon-yii-plain-wordmark:before { - content: "\ec01"; -} -.devicon-yii-plain:before { - content: "\ec02"; -} -.devicon-zend-plain-wordmark:before { - content: "\ec03"; -} -.devicon-zend-plain:before { - content: "\ec04"; -} +@font-face { + font-family: 'devicon'; + src: url('fonts/devicon.eot?biu5f3'); + src: url('fonts/devicon.eot?biu5f3#iefix') format('embedded-opentype'), + url('fonts/devicon.ttf?biu5f3') format('truetype'), + url('fonts/devicon.woff?biu5f3') format('woff'), + url('fonts/devicon.svg?biu5f3#devicon') format('svg'); + font-weight: normal; + font-style: normal; + font-display: block; +} + +[class^="devicon-"], [class*=" devicon-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'devicon' !important; + speak: never; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.devicon-openal-plain:before { + content: "\e90b"; +} +.devicon-kaggle-original-wordmark:before { + content: "\e90c"; +} +.devicon-kaggle-original:before { + content: "\e90d"; +} +.devicon-pytest-plain-wordmark:before { + content: "\e90e"; +} +.devicon-pytest-plain:before { + content: "\e916"; +} +.devicon-fastapi-plain-wordmark:before { + content: "\e917"; +} +.devicon-fastapi-plain:before { + content: "\e936"; +} +.devicon-opencv-plain-wordmark:before { + content: "\e937"; +} +.devicon-opencv-plain:before { + content: "\ea14"; +} +.devicon-k3s-plain-wordmark:before { + content: "\ea15"; +} +.devicon-k3s-original:before { + content: "\ea16"; +} +.devicon-packer-original-wordmark:before { + content: "\ea17"; +} +.devicon-packer-original:before { + content: "\ea1d"; +} +.devicon-anaconda-original-wordmark:before { + content: "\ea1e"; +} +.devicon-anaconda-original:before { + content: "\ea1f"; +} +.devicon-prometheus-original-wordmark:before { + content: "\ea20"; +} +.devicon-prometheus-original:before { + content: "\ea21"; +} +.devicon-rspec-original-wordmark:before { + content: "\ea22"; +} +.devicon-rspec-original:before { + content: "\ea23"; +} +.devicon-argocd-plain-wordmark:before { + content: "\ea24"; +} +.devicon-argocd-plain:before { + content: "\ea25"; +} +.devicon-blender-original-wordmark:before { + content: "\ea26"; +} +.devicon-blender-original:before { + content: "\ea27"; +} +.devicon-jetbrains-plain:before { + content: "\ea28"; +} +.devicon-cmake-plain-wordmark:before { + content: "\ea29"; +} +.devicon-cmake-plain:before { + content: "\ea2a"; +} +.devicon-dropwizard-plain:before { + content: "\ea2b"; +} +.devicon-nuget-original-wordmark:before { + content: "\ea2c"; +} +.devicon-nuget-original:before { + content: "\ea2d"; +} +.devicon-podman-plain-wordmark:before { + content: "\ea2e"; +} +.devicon-podman-plain:before { + content: "\ea2f"; +} +.devicon-networkx-original:before { + content: "\ea30"; +} +.devicon-sqlite-plain-wordmark:before { + content: "\ea31"; +} +.devicon-sqlite-plain:before { + content: "\ea32"; +} +.devicon-discordjs-plain-wordmark:before { + content: "\ea33"; +} +.devicon-discordjs-plain:before { + content: "\ea34"; +} +.devicon-unrealengine-original-wordmark:before { + content: "\ea35"; +} +.devicon-unrealengine-original:before { + content: "\ea36"; +} +.devicon-django-plain-wordmark:before { + content: "\ea37"; +} +.devicon-django-plain:before { + content: "\ea38"; +} +.devicon-devicon-line-wordmark:before { + content: "\ea39"; +} +.devicon-devicon-line:before { + content: "\ea3a"; +} +.devicon-devicon-plain-wordmark:before { + content: "\ea3b"; +} +.devicon-devicon-plain:before { + content: "\ea3c"; +} +.devicon-bootstrap-plain-wordmark:before { + content: "\ea3d"; +} +.devicon-bootstrap-plain:before { + content: "\ea3e"; +} +.devicon-solidity-plain:before { + content: "\ea3f"; +} +.devicon-polygon-plain:before { + content: "\ea40"; +} +.devicon-maya-plain-wordmark:before { + content: "\ea41"; +} +.devicon-maya-plain:before { + content: "\ea42"; +} +.devicon-xcode-plain:before { + content: "\ea43"; +} +.devicon-selenium-original:before { + content: "\ea44"; +} +.devicon-ifttt-original:before { + content: "\ea45"; +} +.devicon-pytorch-plain-wordmark:before { + content: "\ea46"; +} +.devicon-pytorch-original:before { + content: "\ea47"; +} +.devicon-xamarin-original-wordmark:before { + content: "\ea48"; +} +.devicon-xamarin-original:before { + content: "\ea49"; +} +.devicon-hugo-plain-wordmark:before { + content: "\ea4a"; +} +.devicon-hugo-plain:before { + content: "\ea4b"; +} +.devicon-grafana-original-wordmark:before { + content: "\ea4c"; +} +.devicon-grafana-original:before { + content: "\ea4d"; +} +.devicon-ansible-plain-wordmark:before { + content: "\ea4e"; +} +.devicon-ansible-plain:before { + content: "\ea4f"; +} +.devicon-shotgrid-original-wordmark:before { + content: "\ea50"; +} +.devicon-shotgrid-plain:before { + content: "\ea51"; +} +.devicon-androidstudio-plain-wordmark:before { + content: "\ea52"; +} +.devicon-androidstudio-plain:before { + content: "\ea53"; +} +.devicon-eslint-original-wordmark:before { + content: "\ea54"; +} +.devicon-eslint-original:before { + content: "\ea55"; +} +.devicon-latex-original:before { + content: "\ea56"; +} +.devicon-vuetify-plain:before { + content: "\ea57"; +} +.devicon-vuetify-line:before { + content: "\ea58"; +} +.devicon-sdl-plain:before { + content: "\ea59"; +} +.devicon-bitbucket-original-wordmark:before { + content: "\ea5a"; +} +.devicon-bitbucket-original:before { + content: "\ea5b"; +} +.devicon-confluence-original-wordmark:before { + content: "\ea5c"; +} +.devicon-confluence-original:before { + content: "\ea5d"; +} +.devicon-fedora-plain:before { + content: "\ea5e"; +} +.devicon-rect-plain:before { + content: "\ea5f"; +} +.devicon-bamboo-original-wordmark:before { + content: "\ea60"; +} +.devicon-bamboo-original:before { + content: "\ea61"; +} +.devicon-jira-plain-wordmark:before { + content: "\ea62"; +} +.devicon-jira-plain:before { + content: "\ea63"; +} +.devicon-terraform-plain-wordmark:before { + content: "\ea64"; +} +.devicon-terraform-plain:before { + content: "\ea65"; +} +.devicon-webflow-original:before { + content: "\ea66"; +} +.devicon-gentoo-plain:before { + content: "\ea67"; +} +.devicon-gentoo-plain-wordmark:before { + content: "\ea68"; +} +.devicon-opensuse-plain-wordmark:before { + content: "\ea69"; +} +.devicon-opensuse-plain:before { + content: "\ea6a"; +} +.devicon-storybook-plain-wordmark:before { + content: "\e900"; +} +.devicon-storybook-plain:before { + content: "\e901"; +} +.devicon-pandas-original-wordmark:before { + content: "\e902"; +} +.devicon-pandas-original:before { + content: "\e903"; +} +.devicon-centos-plain-wordmark:before { + content: "\e904"; +} +.devicon-centos-plain:before { + content: "\e905"; +} +.devicon-azure-plain-wordmark:before { + content: "\e906"; +} +.devicon-azure-plain:before { + content: "\e907"; +} +.devicon-go-line:before { + content: "\e908"; +} +.devicon-go-plain:before { + content: "\e909"; +} +.devicon-go-original-wordmark:before { + content: "\e90a"; +} +.devicon-msdos-line:before { + content: "\e90f"; +} +.devicon-arduino-plain-wordmark:before { + content: "\e910"; +} +.devicon-arduino-plain:before { + content: "\e911"; +} +.devicon-qt-original:before { + content: "\e912"; +} +.devicon-gcc-plain:before { + content: "\e913"; +} +.devicon-svelte-plain-wordmark:before { + content: "\e914"; +} +.devicon-svelte-plain:before { + content: "\e915"; +} +.devicon-slack-plain-wordmark:before { + content: "\e918"; +} +.devicon-slack-plain:before { + content: "\e919"; +} +.devicon-canva-original:before { + content: "\e91a"; +} +.devicon-jamstack-plain-wordmark:before { + content: "\e91b"; +} +.devicon-jamstack-original:before { + content: "\e91c"; +} +.devicon-denojs-original-wordmark:before { + content: "\e91d"; +} +.devicon-denojs-original:before { + content: "\e91e"; +} +.devicon-apachekafka-original-wordmark:before { + content: "\e91f"; +} +.devicon-apachekafka-original:before { + content: "\e920"; +} +.devicon-filezilla-plain-wordmark:before { + content: "\e921"; +} +.devicon-filezilla-plain:before { + content: "\e922"; +} +.devicon-opengl-plain:before { + content: "\e923"; +} +.devicon-putty-plain:before { + content: "\e924"; +} +.devicon-opera-plain-wordmark:before { + content: "\e925"; +} +.devicon-opera-plain:before { + content: "\e926"; +} +.devicon-subversion-original:before { + content: "\e927"; +} +.devicon-tortoisegit-line:before { + content: "\e928"; +} +.devicon-tortoisegit-plain:before { + content: "\e929"; +} +.devicon-towergit-plain-wordmark:before { + content: "\e92a"; +} +.devicon-towergit-plain:before { + content: "\e92b"; +} +.devicon-unity-original-wordmark:before { + content: "\e92c"; +} +.devicon-unity-original:before { + content: "\e92d"; +} +.devicon-neo4j-plain-wordmark:before { + content: "\e92e"; +} +.devicon-neo4j-plain:before { + content: "\e92f"; +} +.devicon-nuxtjs-plain-wordmark:before { + content: "\e930"; +} +.devicon-nuxtjs-plain:before { + content: "\e931"; +} +.devicon-socketio-original-wordmark:before { + content: "\e932"; +} +.devicon-socketio-original:before { + content: "\e933"; +} +.devicon-processing-plain-wordmark:before { + content: "\e934"; +} +.devicon-processing-plain:before { + content: "\e935"; +} +.devicon-feathersjs-original:before { + content: "\e938"; +} +.devicon-adonisjs-original-wordmark:before { + content: "\e939"; +} +.devicon-adonisjs-original:before { + content: "\e93a"; +} +.devicon-numpy-original-wordmark:before { + content: "\e93b"; +} +.devicon-numpy-original:before { + content: "\e93c"; +} +.devicon-matlab-line:before { + content: "\e93d"; +} +.devicon-matlab-plain:before { + content: "\e93e"; +} +.devicon-clojurescript-plain:before { + content: "\e93f"; +} +.devicon-threejs-original-wordmark:before { + content: "\e940"; +} +.devicon-threejs-original:before { + content: "\e941"; +} +.devicon-markdown-original:before { + content: "\e942"; +} +.devicon-nixos-plain-wordmark:before { + content: "\e992"; +} +.devicon-nixos-plain:before { + content: "\e9b2"; +} +.devicon-perl-plain:before { + content: "\e9b3"; +} +.devicon-tensorflow-line-wordmark:before { + content: "\e9b4"; +} +.devicon-tensorflow-line:before { + content: "\e9b5"; +} +.devicon-tensorflow-original-wordmark:before { + content: "\e9b6"; +} +.devicon-tensorflow-original:before { + content: "\e9b7"; +} +.devicon-zig-plain-wordmark:before { + content: "\e9b8"; +} +.devicon-zig-original:before { + content: "\e9b9"; +} +.devicon-raspberrypi-line-wordmark:before { + content: "\e9ba"; +} +.devicon-raspberrypi-line:before { + content: "\e9bb"; +} +.devicon-embeddedc-plain-wordmark:before { + content: "\e9bc"; +} +.devicon-embeddedc-plain:before { + content: "\e9bd"; +} +.devicon-labview-plain-wordmark:before { + content: "\e9be"; +} +.devicon-labview-plain:before { + content: "\e9bf"; +} +.devicon-modx-plain-wordmark:before { + content: "\e9c0"; +} +.devicon-modx-plain:before { + content: "\e9c1"; +} +.devicon-knockout-plain-wordmark:before { + content: "\e9c2"; +} +.devicon-rstudio-plain:before { + content: "\e9c3"; +} +.devicon-phalcon-plain:before { + content: "\e9c4"; +} +.devicon-minitab-plain:before { + content: "\e9c5"; +} +.devicon-bulma-plain:before { + content: "\e9c6"; +} +.devicon-spss-plain:before { + content: "\e9c7"; +} +.devicon-karma-plain:before { + content: "\e9ca"; +} +.devicon-jest-plain:before { + content: "\e9cb"; +} +.devicon-circleci-plain-wordmark:before { + content: "\e9cc"; +} +.devicon-circleci-plain:before { + content: "\e9cd"; +} +.devicon-codecov-plain:before { + content: "\e9ce"; +} +.devicon-magento-line:before { + content: "\e9cf"; +} +.devicon-magento-original-wordmark:before { + content: "\e9d0"; +} +.devicon-magento-original:before { + content: "\e9d1"; +} +.devicon-shopware-original-wordmark:before { + content: "\e9d2"; +} +.devicon-shopware-original:before { + content: "\e9d3"; +} +.devicon-salesforce-plain:before { + content: "\e9d4"; +} +.devicon-vuestorefront-plain:before { + content: "\e9d5"; +} +.devicon-unix-original:before { + content: "\e9d6"; +} +.devicon-godot-plain-wordmark:before { + content: "\e9d7"; +} +.devicon-godot-plain:before { + content: "\e9d8"; +} +.devicon-vscode-plain-wordmark:before { + content: "\e9d9"; +} +.devicon-vscode-plain:before { + content: "\e9da"; +} +.devicon-julia-plain-wordmark:before { + content: "\e9db"; +} +.devicon-julia-plain:before { + content: "\e9dc"; +} +.devicon-crystal-original-wordmark:before { + content: "\e9dd"; +} +.devicon-crystal-original:before { + content: "\e9de"; +} +.devicon-tailwindcss-plain:before { + content: "\e9df"; +} +.devicon-tailwindcss-original-wordmark:before { + content: "\e9e0"; +} +.devicon-weblate-plain-wordmark:before { + content: "\e999"; +} +.devicon-weblate-plain:before { + content: "\e99a"; +} +.devicon-thealgorithms-plain-wordmark:before { + content: "\e99b"; +} +.devicon-thealgorithms-plain:before { + content: "\e99c"; +} +.devicon-spring-plain-wordmark:before { + content: "\e99d"; +} +.devicon-spring-plain:before { + content: "\e99e"; +} +.devicon-rails-plain-wordmark:before { + content: "\e99f"; +} +.devicon-rails-plain:before { + content: "\e9a0"; +} +.devicon-phoenix-plain-wordmark:before { + content: "\e9a1"; +} +.devicon-phoenix-plain:before { + content: "\e9a2"; +} +.devicon-nextjs-original-wordmark:before { + content: "\e9a3"; +} +.devicon-nextjs-line:before { + content: "\e9a4"; +} +.devicon-nextjs-original:before { + content: "\e9a5"; +} +.devicon-lua-plain-wordmark:before { + content: "\e9a6"; +} +.devicon-lua-plain:before { + content: "\e9a7"; +} +.devicon-graphql-plain-wordmark:before { + content: "\e9a8"; +} +.devicon-graphql-plain:before { + content: "\e9a9"; +} +.devicon-gitter-plain-wordmark:before { + content: "\e9aa"; +} +.devicon-gitter-plain:before { + content: "\e9ab"; +} +.devicon-figma-plain:before { + content: "\e9ac"; +} +.devicon-digitalocean-plain-wordmark:before { + content: "\e9ad"; +} +.devicon-digitalocean-plain:before { + content: "\e9ae"; +} +.devicon-dotnetcore-plain:before { + content: "\e9af"; +} +.devicon-dart-plain-wordmark:before { + content: "\e9b0"; +} +.devicon-dart-plain:before { + content: "\e9b1"; +} +.devicon-r-plain:before { + content: "\e98e"; +} +.devicon-r-original:before { + content: "\e98f"; +} +.devicon-ocaml-plain-wordmark:before { + content: "\e990"; +} +.devicon-ocaml-plain:before { + content: "\e991"; +} +.devicon-jupyter-plain-wordmark:before { + content: "\e993"; +} +.devicon-jupyter-plain:before { + content: "\e994"; +} +.devicon-fsharp-plain:before { + content: "\e995"; +} +.devicon-elixir-plain-wordmark:before { + content: "\e996"; +} +.devicon-elixir-plain:before { + content: "\e997"; +} +.devicon-aarch64-plain:before { + content: "\e998"; +} +.devicon-xd-line:before { + content: "\e97a"; +} +.devicon-xd-plain:before { + content: "\e97b"; +} +.devicon-uwsgi-plain:before { + content: "\e97c"; +} +.devicon-microsoftsqlserver-plain-wordmark:before { + content: "\e97d"; +} +.devicon-microsoftsqlserver-plain:before { + content: "\e97e"; +} +.devicon-sqlalchemy-original-wordmark:before { + content: "\e97f"; +} +.devicon-sqlalchemy-plain:before { + content: "\e980"; +} +.devicon-rocksdb-plain:before { + content: "\e981"; +} +.devicon-objectivec-plain:before { + content: "\e982"; +} +.devicon-kubernetes-plain-wordmark:before { + content: "\e983"; +} +.devicon-kubernetes-plain:before { + content: "\e984"; +} +.devicon-googlecloud-plain-wordmark:before { + content: "\e985"; +} +.devicon-googlecloud-plain:before { + content: "\e986"; +} +.devicon-flask-original-wordmark:before { + content: "\e987"; +} +.devicon-flask-original:before { + content: "\e988"; +} +.devicon-firebase-plain-wordmark:before { + content: "\e989"; +} +.devicon-firebase-plain:before { + content: "\e98a"; +} +.devicon-eleventy-plain:before { + content: "\e98b"; +} +.devicon-appwrite-plain-wordmark:before { + content: "\e98c"; +} +.devicon-appwrite-plain:before { + content: "\e98d"; +} +.devicon-bash-plain:before { + content: "\e979"; +} +.devicon-woocommerce-plain-wordmark:before { + content: "\e966"; +} +.devicon-woocommerce-plain:before { + content: "\e967"; +} +.devicon-typo3-plain-wordmark:before { + content: "\e968"; +} +.devicon-typo3-plain:before { + content: "\e969"; +} +.devicon-premierepro-plain:before { + content: "\e96a"; +} +.devicon-nestjs-plain-wordmark:before { + content: "\e96b"; +} +.devicon-nestjs-plain:before { + content: "\e96c"; +} +.devicon-materialui-plain:before { + content: "\e96d"; +} +.devicon-kotlin-plain-wordmark:before { + content: "\e96e"; +} +.devicon-kotlin-plain:before { + content: "\e96f"; +} +.devicon-jenkins-plain:before { + content: "\e970"; +} +.devicon-jenkins-line:before { + content: "\e971"; +} +.devicon-haxe-plain:before { + content: "\e972"; +} +.devicon-gatsby-plain-wordmark:before { + content: "\e973"; +} +.devicon-gatsby-plain:before { + content: "\e974"; +} +.devicon-flutter-plain:before { + content: "\e975"; +} +.devicon-composer-line-wordmark:before { + content: "\e976"; +} +.devicon-composer-line:before { + content: "\e977"; +} +.devicon-aftereffects-plain:before { + content: "\e978"; +} +.devicon-yunohost-plain:before { + content: "\e963"; +} +.devicon-redux-original:before { + content: "\e964"; +} +.devicon-clojure-line:before { + content: "\e962"; +} +.devicon-mocha-plain:before { + content: "\e961"; +} +.devicon-haskell-plain:before { + content: "\e95f"; +} +.devicon-haskell-plain-wordmark:before { + content: "\e960"; +} +.devicon-codepen-original-wordmark:before { + content: "\e95d"; +} +.devicon-codepen-plain:before { + content: "\e95e"; +} +.devicon-groovy-plain:before { + content: "\e958"; +} +.devicon-rust-plain:before { + content: "\e959"; +} +.devicon-scala-plain-wordmark:before { + content: "\e95a"; +} +.devicon-scala-plain:before { + content: "\e95b"; +} +.devicon-grails-plain:before { + content: "\e95c"; +} +.devicon-sketch-line-wordmark:before { + content: "\e94c"; +} +.devicon-sketch-line:before { + content: "\e94d"; +} +.devicon-npm-original-wordmark:before { + content: "\e952"; +} +.devicon-ionic-original-wordmark:before { + content: "\e953"; +} +.devicon-ionic-original:before { + content: "\e954"; +} +.devicon-ember-original-wordmark:before { + content: "\e955"; +} +.devicon-electron-original-wordmark:before { + content: "\e956"; +} +.devicon-electron-original:before { + content: "\e957"; +} +.devicon-vagrant-plain-wordmark:before { + content: "\e94e"; +} +.devicon-vagrant-plain:before { + content: "\e94f"; +} +.devicon-yarn-plain-wordmark:before { + content: "\e950"; +} +.devicon-yarn-plain:before { + content: "\e951"; +} +.devicon-handlebars-plain-wordmark:before { + content: "\e94a"; +} +.devicon-handlebars-plain:before { + content: "\e94b"; +} +.devicon-couchdb-plain-wordmark:before { + content: "\e948"; +} +.devicon-couchdb-plain:before { + content: "\e949"; +} +.devicon-behance-plain-wordmark:before { + content: "\e943"; +} +.devicon-behance-plain:before { + content: "\e945"; +} +.devicon-linkedin-plain-wordmark:before { + content: "\e946"; +} +.devicon-linkedin-plain:before { + content: "\e947"; +} +.devicon-ceylon-plain:before { + content: "\e944"; +} +.devicon-elm-plain-wordmark:before { + content: "\e965"; +} +.devicon-elm-plain:before { + content: "\e9c8"; +} +.devicon-cakephp-plain-wordmark:before { + content: "\e9c9"; +} +.devicon-cakephp-plain:before { + content: "\e9e1"; +} +.devicon-stylus-original:before { + content: "\e9e2"; +} +.devicon-express-original-wordmark:before { + content: "\e9e3"; +} +.devicon-express-original:before { + content: "\e9e4"; +} +.devicon-intellij-plain-wordmark:before { + content: "\e9e5"; +} +.devicon-intellij-plain:before { + content: "\e9e6"; +} +.devicon-pycharm-plain-wordmark:before { + content: "\e9e7"; +} +.devicon-pycharm-plain:before { + content: "\e9e8"; +} +.devicon-rubymine-plain-wordmark:before { + content: "\e9e9"; +} +.devicon-rubymine-plain:before { + content: "\e9ea"; +} +.devicon-webstorm-plain-wordmark:before { + content: "\e9eb"; +} +.devicon-webstorm-plain:before { + content: "\e9ec"; +} +.devicon-tomcat-line-wordmark:before { + content: "\e9ed"; +} +.devicon-tomcat-line:before { + content: "\e9ee"; +} +.devicon-vuejs-line-wordmark:before { + content: "\e9ef"; +} +.devicon-vuejs-line:before { + content: "\e9f0"; +} +.devicon-vuejs-plain-wordmark:before { + content: "\e9f1"; +} +.devicon-vuejs-plain:before { + content: "\e9f2"; +} +.devicon-swift-plain-wordmark:before { + content: "\e9f3"; +} +.devicon-swift-plain:before { + content: "\e9f4"; +} +.devicon-webpack-plain-wordmark:before { + content: "\e9f5"; +} +.devicon-webpack-plain:before { + content: "\e9f6"; +} +.devicon-visualstudio-plain-wordmark:before { + content: "\e9f7"; +} +.devicon-visualstudio-plain:before { + content: "\e9f8"; +} +.devicon-sequelize-plain-wordmark:before { + content: "\e9f9"; +} +.devicon-sequelize-plain:before { + content: "\e9fa"; +} +.devicon-typescript-plain:before { + content: "\e9fb"; +} +.devicon-babel-plain:before { + content: "\e9fc"; +} +.devicon-facebook-plain:before { + content: "\e9fd"; +} +.devicon-google-plain-wordmark:before { + content: "\e9fe"; +} +.devicon-google-plain:before { + content: "\e9ff"; +} +.devicon-twitter-original:before { + content: "\ea00"; +} +.devicon-mocha:before { + content: "\ea01"; +} +.devicon-jasmine-plain:before { + content: "\ea02"; +} +.devicon-jasmine-wordmark:before { + content: "\ea03"; +} +.devicon-gatling-plain:before { + content: "\ea04"; +} +.devicon-gatling-plain-wordmark:before { + content: "\ea05"; +} +.devicon-phpstorm-plain:before { + content: "\ea06"; +} +.devicon-phpstorm-plain-wordmark:before { + content: "\ea07"; +} +.devicon-sourcetree-original:before { + content: "\ea08"; +} +.devicon-sourcetree-original-wordmark:before { + content: "\ea09"; +} +.devicon-ssh-original:before { + content: "\ea0a"; +} +.devicon-ssh-original-wordmark:before { + content: "\ea0b"; +} +.devicon-jeet-plain:before { + content: "\ea0c"; +} +.devicon-jeet-plain-wordmark:before { + content: "\ea0d"; +} +.devicon-gitlab-plain:before { + content: "\ea0e"; +} +.devicon-gitlab-plain-wordmark:before { + content: "\ea0f"; +} +.devicon-github-original:before { + content: "\ea10"; +} +.devicon-github-original-wordmark:before { + content: "\ea11"; +} +.devicon-d3js-plain:before { + content: "\ea12"; +} +.devicon-d3js-original:before { + content: "\ea13"; +} +.devicon-gradle-plain:before { + content: "\ea18"; +} +.devicon-gradle-plain-wordmark:before { + content: "\e8f1"; +} +.devicon-cucumber-plain:before { + content: "\ea19"; +} +.devicon-cucumber-plain-wordmark:before { + content: "\ea1a"; +} +.devicon-protractor-plain:before { + content: "\ea1b"; +} +.devicon-protractor-plain-wordmark:before { + content: "\ea1c"; +} +.devicon-safari-line-wordmark:before { + content: "\e632"; +} +.devicon-safari-line:before { + content: "\e63a"; +} +.devicon-safari-plain-wordmark:before { + content: "\e63b"; +} +.devicon-safari-plain:before { + content: "\e63c"; +} +.devicon-gimp-plain:before { + content: "\e633"; +} +.devicon-redhat-plain-wordmark:before { + content: "\e62a"; +} +.devicon-redhat-plain:before { + content: "\e62b"; +} +.devicon-cplusplus-line:before { + content: "\e634"; +} +.devicon-cplusplus-plain:before { + content: "\e635"; +} +.devicon-csharp-line:before { + content: "\e636"; +} +.devicon-csharp-plain:before { + content: "\e637"; +} +.devicon-c-line:before { + content: "\e638"; +} +.devicon-c-plain:before { + content: "\e639"; +} +.devicon-nodewebkit-line-wordmark:before { + content: "\e611"; +} +.devicon-nodewebkit-line:before { + content: "\e612"; +} +.devicon-nodewebkit-plain-wordmark:before { + content: "\e613"; +} +.devicon-nodewebkit-plain:before { + content: "\e614"; +} +.devicon-nginx-original:before { + content: "\e615"; +} +.devicon-erlang-plain-wordmark:before { + content: "\e616"; +} +.devicon-erlang-plain:before { + content: "\e617"; +} +.devicon-doctrine-line-wordmark:before { + content: "\e618"; +} +.devicon-doctrine-line:before { + content: "\e619"; +} +.devicon-doctrine-plain-wordmark:before { + content: "\e61a"; +} +.devicon-doctrine-plain:before { + content: "\e625"; +} +.devicon-apache-line-wordmark:before { + content: "\e626"; +} +.devicon-apache-line:before { + content: "\e627"; +} +.devicon-apache-plain-wordmark:before { + content: "\e628"; +} +.devicon-apache-plain:before { + content: "\e629"; +} +.devicon-redis-plain-wordmark:before { + content: "\e606"; +} +.devicon-redis-plain:before { + content: "\e607"; +} +.devicon-meteor-plain-wordmark:before { + content: "\e608"; +} +.devicon-meteor-plain:before { + content: "\e609"; +} +.devicon-heroku-line-wordmark:before { + content: "\e60a"; +} +.devicon-heroku-line:before { + content: "\e60b"; +} +.devicon-heroku-plain-wordmark:before { + content: "\e60c"; +} +.devicon-heroku-plain:before { + content: "\e60f"; +} +.devicon-docker-plain-wordmark:before { + content: "\e61e"; +} +.devicon-docker-plain:before { + content: "\e61f"; +} +.devicon-symfony-original-wordmark:before { + content: "\e602"; +} +.devicon-symfony-original:before { + content: "\e605"; +} +.devicon-react-original-wordmark:before { + content: "\e600"; +} +.devicon-react-original:before { + content: "\e601"; +} +.devicon-amazonwebservices-original:before { + content: "\e603"; +} +.devicon-amazonwebservices-plain-wordmark:before { + content: "\e604"; +} +.devicon-android-plain-wordmark:before { + content: "\e60d"; +} +.devicon-android-plain:before { + content: "\e60e"; +} +.devicon-angularjs-plain-wordmark:before { + content: "\e61c"; +} +.devicon-angularjs-plain:before { + content: "\e61d"; +} +.devicon-appcelerator-original:before { + content: "\e620"; +} +.devicon-appcelerator-plain-wordmark:before { + content: "\e621"; +} +.devicon-apple-original:before { + content: "\e622"; +} +.devicon-atom-original-wordmark:before { + content: "\e623"; +} +.devicon-atom-original:before { + content: "\e624"; +} +.devicon-backbonejs-plain-wordmark:before { + content: "\e62c"; +} +.devicon-backbonejs-plain:before { + content: "\e62d"; +} +.devicon-bower-line-wordmark:before { + content: "\e630"; +} +.devicon-bower-line:before { + content: "\e631"; +} +.devicon-bower-plain-wordmark:before { + content: "\e64e"; +} +.devicon-bower-plain:before { + content: "\e64f"; +} +.devicon-chrome-plain-wordmark:before { + content: "\e665"; +} +.devicon-chrome-plain:before { + content: "\e666"; +} +.devicon-codeigniter-plain-wordmark:before { + content: "\e667"; +} +.devicon-codeigniter-plain:before { + content: "\e668"; +} +.devicon-coffeescript-original-wordmark:before { + content: "\e669"; +} +.devicon-coffeescript-original:before { + content: "\e66a"; +} +.devicon-css3-plain-wordmark:before { + content: "\e678"; +} +.devicon-css3-plain:before { + content: "\e679"; +} +.devicon-debian-plain-wordmark:before { + content: "\e67e"; +} +.devicon-debian-plain:before { + content: "\e67f"; +} +.devicon-dot-net-plain-wordmark:before { + content: "\e6d3"; +} +.devicon-dot-net-plain:before { + content: "\e6d4"; +} +.devicon-drupal-plain-wordmark:before { + content: "\e6e2"; +} +.devicon-drupal-plain:before { + content: "\e6e3"; +} +.devicon-firefox-plain-wordmark:before { + content: "\e75d"; +} +.devicon-firefox-plain:before { + content: "\e75e"; +} +.devicon-foundation-plain-wordmark:before { + content: "\e7a2"; +} +.devicon-foundation-plain:before { + content: "\e7a3"; +} +.devicon-git-plain-wordmark:before { + content: "\e7a7"; +} +.devicon-git-plain:before { + content: "\e7a8"; +} +.devicon-grunt-line-wordmark:before { + content: "\e7a9"; +} +.devicon-grunt-line:before { + content: "\e7aa"; +} +.devicon-grunt-plain-wordmark:before { + content: "\e7ea"; +} +.devicon-grunt-plain:before { + content: "\e7eb"; +} +.devicon-gulp-plain:before { + content: "\e7ec"; +} +.devicon-html5-plain-wordmark:before { + content: "\e7f6"; +} +.devicon-html5-plain:before { + content: "\e7f7"; +} +.devicon-ie10-original:before { + content: "\e7f8"; +} +.devicon-illustrator-line:before { + content: "\e7f9"; +} +.devicon-illustrator-plain:before { + content: "\e7fa"; +} +.devicon-inkscape-plain-wordmark:before { + content: "\e834"; +} +.devicon-inkscape-plain:before { + content: "\e835"; +} +.devicon-java-plain-wordmark:before { + content: "\e841"; +} +.devicon-java-plain:before { + content: "\e842"; +} +.devicon-javascript-plain:before { + content: "\e845"; +} +.devicon-jquery-plain-wordmark:before { + content: "\e849"; +} +.devicon-jquery-plain:before { + content: "\e84a"; +} +.devicon-krakenjs-plain-wordmark:before { + content: "\e84f"; +} +.devicon-krakenjs-plain:before { + content: "\e850"; +} +.devicon-laravel-plain-wordmark:before { + content: "\e851"; +} +.devicon-laravel-plain:before { + content: "\e852"; +} +.devicon-less-plain-wordmark:before { + content: "\e853"; +} +.devicon-linux-plain:before { + content: "\eb1c"; +} +.devicon-mongodb-plain-wordmark:before { + content: "\eb43"; +} +.devicon-mongodb-plain:before { + content: "\eb44"; +} +.devicon-moodle-plain-wordmark:before { + content: "\eb5a"; +} +.devicon-moodle-plain:before { + content: "\eb5b"; +} +.devicon-mysql-plain-wordmark:before { + content: "\eb60"; +} +.devicon-mysql-plain:before { + content: "\eb61"; +} +.devicon-nodejs-plain-wordmark:before { + content: "\eb69"; +} +.devicon-nodejs-plain:before { + content: "\eb6a"; +} +.devicon-oracle-original:before { + content: "\eb6b"; +} +.devicon-photoshop-line:before { + content: "\eb6c"; +} +.devicon-photoshop-plain:before { + content: "\eb6d"; +} +.devicon-php-plain:before { + content: "\eb71"; +} +.devicon-postgresql-plain-wordmark:before { + content: "\eb7c"; +} +.devicon-postgresql-plain:before { + content: "\eb7d"; +} +.devicon-python-plain-wordmark:before { + content: "\eb88"; +} +.devicon-python-plain:before { + content: "\eb89"; +} +.devicon-ruby-plain-wordmark:before { + content: "\ebc9"; +} +.devicon-ruby-plain:before { + content: "\ebca"; +} +.devicon-sass-original:before { + content: "\ebcb"; +} +.devicon-travis-plain-wordmark:before { + content: "\ebcc"; +} +.devicon-travis-plain:before { + content: "\ebcd"; +} +.devicon-trello-plain-wordmark:before { + content: "\ebce"; +} +.devicon-trello-plain:before { + content: "\ebcf"; +} +.devicon-ubuntu-plain-wordmark:before { + content: "\ebd0"; +} +.devicon-ubuntu-plain:before { + content: "\ebd1"; +} +.devicon-vim-plain:before { + content: "\ebf3"; +} +.devicon-windows8-original-wordmark:before { + content: "\ebf4"; +} +.devicon-windows8-original:before { + content: "\ebf5"; +} +.devicon-wordpress-plain-wordmark:before { + content: "\ebfd"; +} +.devicon-wordpress-plain:before { + content: "\ebfe"; +} +.devicon-yii-plain-wordmark:before { + content: "\ec01"; +} +.devicon-yii-plain:before { + content: "\ec02"; +} +.devicon-zend-plain-wordmark:before { + content: "\ec03"; +} +.devicon-zend-plain:before { + content: "\ec04"; +} diff --git a/devicon.json b/devicon.json index 3f7bed210..7ffdcbd17 100644 --- a/devicon.json +++ b/devicon.json @@ -1,6 +1,67 @@ [ + { + "name": "3dsmax", + "altnames": [ + "Autodesk 3ds Max" + ], + "tags": [ + "3d", + "programming", + "vfx", + "graphic", + "graphics", + "game", + "animation" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#37a5cc", + "aliases": [ + { + "base": "original", + "alias": "original-wordmark" + }, + { + "base": "plain", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "aarch64", + "altnames": [ + "arm64" + ], + "tags": [ + "architecture", + "programming", + "language", + "ARM" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#16358C", + "aliases": [] + }, { "name": "adonisjs", + "altnames": [ + "adonis" + ], "tags": [ "nodejs", "framework" @@ -29,6 +90,10 @@ }, { "name": "aftereffects", + "altnames": [ + "adobeaftereffects", + "ae" + ], "tags": [ "video", "editor" @@ -45,8 +110,88 @@ "color": "#1F0740", "aliases": [] }, + { + "name": "akka", + "altnames": [ + "akka-framework" + ], + "tags": [ + "framework", + "java", + "scala", + "open-source" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#15a9ce", + "aliases": [] + }, + { + "name": "algolia", + "altnames": [], + "tags": [ + "algorithms", + "api", + "documentation", + "tool" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#003dff", + "aliases": [] + }, + { + "name": "alpinejs", + "altnames": [ + "Alpine" + ], + "tags": [ + "framework", + "javascript" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#2d3441", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, { "name": "amazonwebservices", + "altnames": [ + "aws" + ], "tags": [ "cloud", "hosting", @@ -54,25 +199,63 @@ ], "versions": { "svg": [ - "original", "original-wordmark", - "plain-wordmark" + "plain-wordmark", + "line-wordmark" + ], + "font": [ + "plain-wordmark", + "line-wordmark" + ] + }, + "color": "#f90", + "aliases": [ + { + "base": "original-wordmark", + "alias": "original" + }, + { + "base": "plain-wordmark", + "alias": "plain" + }, + { + "base": "line-wordmark", + "alias": "line" + } + ] + }, + { + "name": "anaconda", + "altnames": [], + "tags": [ + "python", + "data-science" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" ], "font": [ "original", - "plain-wordmark" + "original-wordmark" ] }, - "color": "#F7A80D", + "color": "#3eb049", "aliases": [ { "base": "original", "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" } ] }, { "name": "android", + "altnames": [], "tags": [ "os", "mobile" @@ -94,9 +277,11 @@ }, { "name": "androidstudio", + "altnames": [], "tags": [ "application", "editor", + "jetbrains", "ide", "android", "mobile" @@ -117,27 +302,30 @@ "aliases": [] }, { - "name": "aarch64", + "name": "angular", + "altnames": [], "tags": [ - "architecture", - "programming", - "language", - "ARM" + "framework", + "javascript" ], "versions": { "svg": [ "original", - "plain" + "original-wordmark", + "plain", + "plain-wordmark" ], "font": [ - "plain" + "plain", + "plain-wordmark" ] }, - "color": "#16358C", + "color": "#FFFFFF", "aliases": [] }, { "name": "angularjs", + "altnames": [], "tags": [ "framework", "javascript" @@ -157,8 +345,28 @@ "color": "#c4473a", "aliases": [] }, + { + "name": "angularmaterial", + "altnames": [], + "tags": [ + "framework", + "javascript" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#ffa726", + "aliases": [] + }, { "name": "ansible", + "altnames": [], "tags": [ "automation", "provisioning", @@ -180,8 +388,34 @@ "color": "#1A1918", "aliases": [] }, + { + "name": "antdesign", + "altnames": [], + "tags": [ + "reactjs", + "design", + "language" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#0073bb", + "aliases": [] + }, { "name": "apache", + "altnames": [ + "The Apache Software Foundation" + ], "tags": [ "php" ], @@ -201,11 +435,38 @@ "line-wordmark" ] }, - "color": "#303284", + "color": "#cb2533", + "aliases": [] + }, + { + "name": "apacheairflow", + "altnames": [ + "Airflow" + ], + "tags": [ + "platform", + "pipeline", + "orchestrator", + "open-source" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#017cee", "aliases": [] }, { "name": "apachekafka", + "altnames": [], "tags": [ "streaming", "open-source" @@ -233,10 +494,12 @@ ] }, { - "name": "appcelerator", + "name": "apachespark", + "altnames": [], "tags": [ - "app", - "mobile" + "data-processing", + "data-science", + "machine-learning" ], "versions": { "svg": [ @@ -249,7 +512,7 @@ "plain-wordmark" ] }, - "color": "#ac162c", + "color": "#e15919", "aliases": [ { "base": "original", @@ -258,111 +521,84 @@ ] }, { - "name": "apple", + "name": "apl", + "altnames": [ + "A Programming Language" + ], "tags": [ - "brand", - "mobile" + "programming", + "language", + "open-source", + "cross-platform" ], "versions": { "svg": [ - "original" + "original", + "plain" ], "font": [ - "original" + "plain" ] }, - "color": "#000000", - "aliases": [ - { - "base": "original", - "alias": "plain" - } - ] + "color": "#24a148", + "aliases": [] }, { - "name": "appwrite", - "tags": [ - "cloud", - "platform", - "server" - ], - "versions": { - "svg": [ - "original", - "original-wordmark", - "plain", - "plain-wordmark" - ], - "font": [ - "plain", - "plain-wordmark" - ] - }, - "color": "#f02e65", - "aliases": [ - { - "base": "plain", - "alias": "original" - }, - { - "base": "plain-wordmark", - "alias": "original-wordmark" - } - ] - }, - { - "name": "arduino", + "name": "appcelerator", + "altnames": [], "tags": [ - "microcontroller", - "hardware" + "app", + "mobile" ], "versions": { "svg": [ "original", "original-wordmark", - "plain", "plain-wordmark" ], "font": [ - "plain", + "original", "plain-wordmark" ] }, - "color": "#00979d", - "aliases": [] + "color": "#ac162c", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] }, { - "name": "atom", + "name": "apple", + "altnames": [], "tags": [ - "editor" + "brand", + "mobile" ], "versions": { "svg": [ - "original", - "original-wordmark" + "original" ], "font": [ - "original", - "original-wordmark" + "original" ] }, - "color": "#67595D", + "color": "#000000", "aliases": [ { "base": "original", "alias": "plain" - }, - { - "base": "original-wordmark", - "alias": "plain-wordmark" } ] }, { - "name": "azure", + "name": "appwrite", + "altnames": [], "tags": [ "cloud", - "devops" + "platform", + "server" ], "versions": { "svg": [ @@ -376,37 +612,25 @@ "plain-wordmark" ] }, - "color": "#0089D6", - "aliases": [] - }, - { - "name": "babel", - "tags": [ - "javascript", - "transpiler" - ], - "versions": { - "svg": [ - "original", - "plain" - ], - "font": [ - "plain" - ] - }, - "color": "#f9dc3e", + "color": "#f02e65", "aliases": [ { "base": "plain", "alias": "original" + }, + { + "base": "plain-wordmark", + "alias": "original-wordmark" } ] }, { - "name": "backbonejs", + "name": "archlinux", + "altnames": [], "tags": [ - "javascript", - "framework" + "linux", + "distribuition", + "desktop" ], "versions": { "svg": [ @@ -420,61 +644,60 @@ "plain-wordmark" ] }, - "color": "#002A41", + "color": "#1791cf", "aliases": [] }, { - "name": "bamboo", + "name": "arduino", + "altnames": [], "tags": [ - "platform", - "integration", - "server" + "microcontroller", + "hardware" ], "versions": { "svg": [ "original", - "original-wordmark" + "original-wordmark", + "plain", + "plain-wordmark" ], "font": [ - "original", - "original-wordmark" + "plain", + "plain-wordmark" ] }, - "color": "#1068e2", - "aliases": [ - { - "base": "original", - "alias": "plain" - }, - { - "base": "original-wordmark", - "alias": "plain-wordmark" - } - ] + "color": "#00979d", + "aliases": [] }, { - "name": "bash", + "name": "argocd", + "altnames": [], "tags": [ - "shell", - "command" + "gitops", + "continuous-delivery" ], "versions": { "svg": [ "original", - "plain" + "original-wordmark", + "plain", + "plain-wordmark" ], "font": [ - "plain" + "plain", + "plain-wordmark" ] }, - "color": "#293138", + "color": "#ef7b4d", "aliases": [] }, { - "name": "behance", + "name": "astro", + "altnames": [], "tags": [ - "social", - "website" + "static site generator", + "framework", + "web-development" ], "versions": { "svg": [ @@ -488,13 +711,14 @@ "plain-wordmark" ] }, - "color": "#0071e0", + "color": "#ff5d01", "aliases": [] }, { - "name": "bitbucket", + "name": "atom", + "altnames": [], "tags": [ - "version-control" + "editor" ], "versions": { "svg": [ @@ -506,189 +730,171 @@ "original-wordmark" ] }, - "color": "#205081", + "color": "#67595D", "aliases": [ - { - "base": "original", - "alias": "plain" - }, - { - "base": "original-wordmark", - "alias": "plain-wordmark" - } + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } ] }, { - "name": "bootstrap", + "name": "awk", + "altnames": [ + "the awk programming language" + ], "tags": [ - "css", - "framework" + "programming", + "language", + "unix" ], "versions": { "svg": [ - "original", "original-wordmark", - "plain", "plain-wordmark" ], "font": [ - "plain", "plain-wordmark" ] }, - "color": "#59407f", - "aliases": [] - }, - { - "name": "bulma", - "tags": ["css", "framework"], - "versions": { - "svg": ["plain"], - "font": ["plain"] - }, - "color": "#00d1b2", - "aliases": [] + "color": "#0a094d", + "aliases": [ + { + "base": "original-wordmark", + "alias": "original" + }, + { + "base": "plain-wordmark", + "alias": "plain" + } + ] }, { - "name": "bower", + "name": "axios", + "altnames": [], "tags": [ - "package", - "manager" + "http", + "promise", + "nodejs" ], "versions": { "svg": [ - "original", - "original-wordmark", "plain", - "plain-wordmark", - "line", - "line-wordmark" + "plain-wordmark" ], "font": [ "plain", - "plain-wordmark", - "line", - "line-wordmark" + "plain-wordmark" ] }, - "color": "#ef5734", + "color": "#5a29e4", "aliases": [] }, { - "name": "c", + "name": "azure", + "altnames": [ + "microsoftazure" + ], "tags": [ - "language" + "cloud", + "devops" ], "versions": { "svg": [ "original", + "original-wordmark", "plain", - "line" + "plain-wordmark" ], "font": [ "plain", - "plain-wordmark", - "line", - "line-wordmark" + "plain-wordmark" ] }, - "color": "#03599c", - "aliases": [ - { - "base": "plain", - "alias": "plain-wordmark" - }, - { - "base": "line", - "alias": "line-wordmark" - } - ] + "color": "#0089D6", + "aliases": [] }, { - "name": "cakephp", + "name": "azuredevops", + "altnames": [ + "azure-devops" + ], "tags": [ - "framework" + "azure", + "devops", + "cloud", + "version control", + "vcs" ], "versions": { "svg": [ - "original", - "original-wordmark", - "plain", - "plain-wordmark" + "original" ], "font": [ - "plain", - "plain-wordmark" + "plain" ] }, - "color": "#D43D44", + "color": "#0078d4", "aliases": [] }, { - "name": "canva", + "name": "azuresqldatabase", + "altnames": [ + "azure-sql-database" + ], "tags": [ - "design" + "azure", + "database", + "tool", + "sql" ], "versions": { "svg": [ "original" ], "font": [ - "original" + "plain" ] }, - "color": "#00C4CC", - "aliases": [ - { - "base": "original", - "alias": "plain" - } - ] + "color": "#005ba1", + "aliases": [] }, { - "name": "centos", + "name": "babel", + "altnames": [ + "babeljs" + ], "tags": [ - "server", - "linux" - ], - "versions": { - "svg": [ - "original", - "original-wordmark", - "plain", - "plain-wordmark" - ], - "font": [ - "plain", - "plain-wordmark" - ] - }, - "color": "#932178", - "aliases": [] - }, - { - "name": "ceylon", - "tags": [ - "language" + "javascript", + "transpiler" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "plain" ], "font": [ "plain" ] }, - "color": "#AB710A", - "aliases": [] + "color": "#f9dc3e", + "aliases": [ + { + "base": "plain", + "alias": "original" + } + ] }, { - "name": "chrome", + "name": "backbonejs", + "altnames": [], "tags": [ - "browser" + "javascript", + "framework" ], "versions": { "svg": [ @@ -702,66 +908,87 @@ "plain-wordmark" ] }, - "color": "#ce4e4e", - "aliases": [] - }, - { - "name": "circleci", - "tags": ["integration", "platform"], - "versions": { - "svg": ["plain", "plain-wordmark"], - "font": ["plain", "plain-wordmark"] - }, - "color": "#343434", + "color": "#002A41", "aliases": [] }, { - "name": "clojure", + "name": "ballerina", + "altnames": [ + "bal" + ], "tags": [ - "language" + "java", + "cloud", + "server", + "networking" ], "versions": { "svg": [ "original", - "line" + "original-wordmark", + "line", + "line-wordmark" ], "font": [ + "original", + "original-wordmark", "line", - "plain" + "line-wordmark" ] }, - "color": "#5881d8", + "color": "#46C0BC", "aliases": [ { - "base": "line", + "base": "original", "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" } ] }, { - "name": "cmake", + "name": "bamboo", + "altnames": [ + "atlassianbamboo" + ], "tags": [ - "build" + "platform", + "integration", + "server" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "original-wordmark" ], "font": [ - "plain", - "plain-wordmark" + "original", + "original-wordmark" ] }, - "color": "#0e8a16", - "aliases": [] + "color": "#1068e2", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { - "name": "clojurescript", + "name": "bash", + "altnames": [ + "bourneagainshell" + ], "tags": [ - "language" + "shell", + "command", + "scripting" ], "versions": { "svg": [ @@ -772,68 +999,56 @@ "plain" ] }, - "color": "#96ca4b", - "aliases": [] - }, - { - "name": "codecov", - "tags": ["platform", "integration"], - "versions": { - "svg": ["plain"], - "font": ["plain"] - }, - "color": "#e0225c", + "color": "#293138", "aliases": [] }, { - "name": "codeigniter", + "name": "beats", + "altnames": [], "tags": [ - "php", - "framework" + "elastic", + "data-transfer" ], "versions": { "svg": [ - "plain", - "plain-wordmark" + "original" ], "font": [ - "plain", - "plain-wordmark" + "plain" ] }, - "color": "#ee4323", + "color": "#07c", "aliases": [] }, { - "name": "codepen", + "name": "behance", + "altnames": [], "tags": [ "social", - "website", - "editor" + "website" ], "versions": { "svg": [ + "original", + "original-wordmark", "plain", - "original-wordmark" + "plain-wordmark" ], "font": [ "plain", "plain-wordmark" ] }, - "color": "#231F20", - "aliases": [ - { - "base": "plain", - "alias": "original" - } - ] + "color": "#0071e0", + "aliases": [] }, { - "name": "coffeescript", + "name": "bitbucket", + "altnames": [ + "atlassianbitbucket" + ], "tags": [ - "javascript", - "language" + "version-control" ], "versions": { "svg": [ @@ -845,7 +1060,7 @@ "original-wordmark" ] }, - "color": "#28334c", + "color": "#205081", "aliases": [ { "base": "original", @@ -858,41 +1073,13 @@ ] }, { - "name": "composer", - "tags": [ - "package", - "manager", - "php" - ], - "versions": { - "svg": [ - "original", - "line", - "line-wordmark" - ], - "font": [ - "line", - "line-wordmark" - ] - }, - "color": "#000000", - "aliases": [ - { - "base": "line", - "alias": "plain" - }, - { - "base": "line-wordmark", - "alias": "plain-wordmark" - } - ] - }, - { - "name": "confluence", + "name": "blender", + "altnames": [], "tags": [ - "collaboration", - "documentation", - "wiki" + "modelling", + "python", + "3d", + "animation" ], "versions": { "svg": [ @@ -904,22 +1091,18 @@ "original-wordmark" ] }, - "color": "#205081", - "aliases": [ - { - "base": "original", - "alias": "plain" - }, - { - "base": "original-wordmark", - "alias": "plain-wordmark" - } - ] + "color": "#DC7B2E", + "aliases": [] }, { - "name": "couchdb", + "name": "bootstrap", + "altnames": [], "tags": [ - "database" + "css", + "framework", + "html", + "javascript", + "library" ], "versions": { "svg": [ @@ -933,19 +1116,24 @@ "plain-wordmark" ] }, - "color": "#e42528", + "color": "#712cf9", "aliases": [] }, { - "name": "cplusplus", + "name": "bower", + "altnames": [], "tags": [ - "language" + "package", + "manager" ], "versions": { "svg": [ "original", + "original-wordmark", "plain", - "line" + "plain-wordmark", + "line", + "line-wordmark" ], "font": [ "plain", @@ -954,28 +1142,26 @@ "line-wordmark" ] }, - "color": "#9c033a", - "aliases": [ - { - "base": "plain", - "alias": "plain-wordmark" - }, - { - "base": "line", - "alias": "line-wordmark" - } - ] + "color": "#ef5734", + "aliases": [] }, { - "name": "csharp", + "name": "browserstack", + "altnames": [], "tags": [ - "language" + "website", + "app", + "testing", + "tool" ], "versions": { "svg": [ "original", + "original-wordmark", "plain", - "line" + "plain-wordmark", + "line", + "line-wordmark" ], "font": [ "plain", @@ -984,102 +1170,98 @@ "line-wordmark" ] }, - "color": "#68217a", - "aliases": [ - { - "base": "plain", - "alias": "plain-wordmark" - }, - { - "base": "line", - "alias": "line-wordmark" - } - ] + "color": "#0070f0", + "aliases": [] }, { - "name": "css3", - "tags": [ - "language", - "programming" + "name": "bulma", + "altnames": [ + "bulmacss" ], - "versions": { - "svg": [ - "original", - "original-wordmark", - "plain", - "plain-wordmark" - ], - "font": [ - "plain", - "plain-wordmark" - ] - }, - "color": "#3d8fc6", - "aliases": [] - }, - { - "name": "cucumber", "tags": [ + "css", "framework" ], "versions": { "svg": [ - "plain", - "plain-wordmark" + "plain" ], "font": [ - "plain", - "plain-wordmark" + "plain" ] }, - "color": "#00a818", + "color": "#00d1b2", "aliases": [] }, { - "name": "crystal", + "name": "bun", + "altnames": [], "tags": [ - "programming", + "javascript", + "zig", "language" ], "versions": { "svg": [ "original", - "original-wordmark" + "plain", + "line" ], "font": [ - "original", - "original-wordmark" + "plain", + "line" ] }, - "color": "#000000", + "color": "#FBF0DF", "aliases": [] }, { - "name": "d3js", - "tags": [], + "name": "c", + "altnames": [], + "tags": [ + "language" + ], "versions": { "svg": [ "original", - "plain" + "plain", + "line" ], "font": [ - "plain" + "plain", + "plain-wordmark", + "line", + "line-wordmark" ] }, - "color": "#f7974e", - "aliases": [] + "color": "#03599c", + "aliases": [ + { + "base": "plain", + "alias": "plain-wordmark" + }, + { + "base": "line", + "alias": "line-wordmark" + } + ] }, { - "name": "dart", + "name": "cairo", + "altnames": [ + "cairographics" + ], "tags": [ - "programming", - "language" + "graphic", + "library", + "c", + "open-source" ], "versions": { "svg": [ "original", - "original-wordmark", "plain", + "original-wordmark", "plain-wordmark" ], "font": [ @@ -1087,14 +1269,14 @@ "plain-wordmark" ] }, - "color": "#00A8E1", + "color": "#f39914", "aliases": [] }, { - "name": "debian", + "name": "cakephp", + "altnames": [], "tags": [ - "os", - "server" + "framework" ], "versions": { "svg": [ @@ -1108,67 +1290,70 @@ "plain-wordmark" ] }, - "color": "#A80030", + "color": "#D43D44", "aliases": [] }, { - "name": "denojs", + "name": "canva", + "altnames": [], "tags": [ - "javascript", - "rust", - "language" + "design" ], "versions": { "svg": [ - "original", - "original-wordmark" + "original" ], "font": [ - "original", - "original-wordmark" + "original" ] }, - "color": "#000000", + "color": "#00C4CC", "aliases": [ { "base": "original", "alias": "plain" - }, - { - "base": "original-wordmark", - "alias": "plain-wordmark" } ] }, { - "name": "devicon", + "name": "capacitor", + "altnames": [ + "capacitorjs" + ], "tags": [ - "iconset" + "javascript", + "js", + "ionic", + "framework", + "universal" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark", - "line", - "line-wordmark" + "original-wordmark" ], "font": [ "plain", - "plain-wordmark", - "line", - "line-wordmark" + "plain-wordmark" ] }, - "color": "#60BE86", + "color": "#53B9FF", "aliases": [] }, { - "name": "django", - "tags": [], + "name": "cassandra", + "altnames": [ + "Apache Cassandra" + ], + "tags": [ + "nosql", + "database", + "open-source" + ], "versions": { "svg": [ + "original", + "original-wordmark", "plain", "plain-wordmark" ], @@ -1177,14 +1362,15 @@ "plain-wordmark" ] }, - "color": "#092e20", + "color": "#1185b0", "aliases": [] }, { - "name": "docker", + "name": "centos", + "altnames": [], "tags": [ - "platform", - "deploy" + "server", + "linux" ], "versions": { "svg": [ @@ -1198,35 +1384,39 @@ "plain-wordmark" ] }, - "color": "#019bc6", + "color": "#932178", "aliases": [] }, { - "name": "doctrine", - "tags": [], + "name": "ceylon", + "altnames": [ + "eclipseceylon", + "ceylonlang" + ], + "tags": [ + "language" + ], "versions": { "svg": [ "original", "original-wordmark", "plain", - "plain-wordmark", - "line", - "line-wordmark" + "plain-wordmark" ], "font": [ - "plain", - "plain-wordmark", - "line", - "line-wordmark" + "plain" ] }, - "color": "#f56d39", + "color": "#AB710A", "aliases": [] }, { - "name": "dot-net", + "name": "chrome", + "altnames": [ + "googlechrome" + ], "tags": [ - "framework" + "browser" ], "versions": { "svg": [ @@ -1240,30 +1430,38 @@ "plain-wordmark" ] }, - "color": "#1384c8", + "color": "#ce4e4e", "aliases": [] }, { - "name": "dotnetcore", + "name": "circleci", + "altnames": [], "tags": [ - "framework" + "integration", + "platform" ], "versions": { "svg": [ - "original", - "plain" + "plain", + "plain-wordmark" ], "font": [ - "plain" + "plain", + "plain-wordmark" ] }, - "color": "#623697", + "color": "#343434", "aliases": [] }, { - "name": "drupal", + "name": "clarity", + "altnames": [ + "clarity-lang" + ], "tags": [ - "cms" + "programming", + "language", + "blockchain" ], "versions": { "svg": [ @@ -1277,16 +1475,19 @@ "plain-wordmark" ] }, - "color": "#0073BA", + "color": "#13171a", "aliases": [] }, { - "name": "digitalocean", + "name": "clion", + "altnames": [], "tags": [ - "cloud", - "hosting", - "database", - "storage" + "jetbrains", + "editor", + "c", + "c++", + "cpp", + "cplusplus" ], "versions": { "svg": [ @@ -1300,73 +1501,61 @@ "plain-wordmark" ] }, - "color": "#0080FF", + "color": "#21d789", "aliases": [] }, { - "name": "discordjs", + "name": "clojure", + "altnames": [], "tags": [ - "wrapper", - "api_wrapper", - "nodejs" + "language", + "jvm" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "line" ], "font": [ - "plain", - "plain-wordmark" + "line", + "plain" ] }, - "color": "#2a2c3e", - "aliases": [] + "color": "#5881d8", + "aliases": [ + { + "base": "line", + "alias": "plain" + } + ] }, { - "name": "electron", + "name": "clojurescript", + "altnames": [], "tags": [ - "framework" + "language" ], "versions": { "svg": [ "original", - "original-wordmark" + "plain" ], "font": [ - "original", - "original-wordmark" + "plain" ] }, - "color": "#47848f", - "aliases": [] - }, - { - "name": "eleventy", - "tags": ["ssg", "static site generator"], - "versions": { - "svg": ["original", "plain"], - "font": ["plain"] - }, - "color": "#1f1f1f", - "aliases": [] - }, - { - "name": "elixir", - "tags": ["language"], - "versions": { - "svg": ["original", "original-wordmark", "plain", "plain-wordmark"], - "font": ["plain", "plain-wordmark"] - }, - "color": "#380A4D", + "color": "#96ca4b", "aliases": [] }, { - "name": "elm", + "name": "cloudflare", + "altnames": [], "tags": [ - "framework" + "web", + "cdn", + "dns", + "proxy", + "security" ], "versions": { "svg": [ @@ -1380,43 +1569,21 @@ "plain-wordmark" ] }, - "color": "#34495E", + "color": "#F38020", "aliases": [] }, { - "name": "ember", + "name": "cloudflareworkers", + "altnames": [ + "Cloudflare Workers" + ], "tags": [ - "framework" + "platform", + "serverless", + "deploy", + "performance", + "javascript" ], - "versions": { - "svg": [ - "original-wordmark" - ], - "font": [ - "original-wordmark" - ] - }, - "color": "#dd3f24", - "aliases": [ - { - "base": "original-wordmark", - "alias": "plain-wordmark" - } - ] - }, - { - "name": "embeddedc", - "tags": ["language", "programming"], - "versions": { - "svg": ["original", "original-wordmark", "plain", "plain-wordmark"], - "font": ["plain", "plain-wordmark"] - }, - "color": "#444444", - "aliases": [] - }, - { - "name": "erlang", - "tags": [], "versions": { "svg": [ "original", @@ -1429,16 +1596,121 @@ "plain-wordmark" ] }, - "color": "#a90533", + "color": "#ea9344", "aliases": [] }, { - "name": "eslint", + "name": "cmake", + "altnames": [], + "tags": [ + "build" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#0e8a16", + "aliases": [] + }, + { + "name": "codeac", + "altnames": [ + "codeacio" + ], + "tags": [ + "platform", + "integration" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "original" + ] + }, + "color": "#005096", + "aliases": [] + }, + { + "name": "codecov", + "altnames": [], + "tags": [ + "platform", + "integration" + ], + "versions": { + "svg": [ + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#e0225c", + "aliases": [] + }, + { + "name": "codeigniter", + "altnames": [], + "tags": [ + "php", + "framework" + ], + "versions": { + "svg": [ + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#ee4323", + "aliases": [] + }, + { + "name": "codepen", + "altnames": [], + "tags": [ + "social", + "website", + "editor" + ], + "versions": { + "svg": [ + "plain", + "original-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#231F20", + "aliases": [ + { + "base": "plain", + "alias": "original" + } + ] + }, + { + "name": "coffeescript", + "altnames": [], "tags": [ - "linter", "javascript", - "code-quality", - "coding-style" + "transpiler", + "language" ], "versions": { "svg": [ @@ -1450,7 +1722,7 @@ "original-wordmark" ] }, - "color": "#4b32c3", + "color": "#28334c", "aliases": [ { "base": "original", @@ -1463,9 +1735,45 @@ ] }, { - "name": "express", + "name": "composer", + "altnames": [], "tags": [ - "framework" + "package", + "manager", + "php" + ], + "versions": { + "svg": [ + "original", + "line", + "line-wordmark" + ], + "font": [ + "line", + "line-wordmark" + ] + }, + "color": "#000000", + "aliases": [ + { + "base": "line", + "alias": "plain" + }, + { + "base": "line-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "confluence", + "altnames": [ + "atlassianconfluence" + ], + "tags": [ + "collaboration", + "documentation", + "wiki" ], "versions": { "svg": [ @@ -1477,107 +1785,4204 @@ "original-wordmark" ] }, - "color": "#444", + "color": "#205081", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "consul", + "altnames": [ + "HashiCorp Consul" + ], + "tags": [ + "networking", + "infrastructure", + "security", + "tool" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain-wordmark" + ], + "font": [ + "original", + "plain-wordmark" + ] + }, + "color": "#e03875", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, + { + "name": "contao", + "altnames": [], + "tags": [ + "cms" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#f47c00", "aliases": [] }, { - "name": "facebook", + "name": "corejs", + "altnames": [ + "core-js", + "core.js" + ], "tags": [ - "auth" + "javascript", + "library", + "polyfill", + "tool" ], "versions": { "svg": [ "original", - "plain" + "original-wordmark" ], "font": [ - "plain" + "original", + "original-wordmark" ] }, - "color": "#3d5a98", + "color": "#000000", "aliases": [ { - "base": "plain", - "alias": "original" + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" } ] }, { - "name": "feathersjs", + "name": "cosmosdb", + "altnames": [ + "azurecosmosdb" + ], + "tags": [ + "database", + "nosql", + "cloud", + "azure" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#59B3D8", + "aliases": [] + }, + { + "name": "couchdb", + "altnames": [ + "apachecouchdb" + ], + "tags": [ + "database" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#e42528", + "aliases": [] + }, + { + "name": "cplusplus", + "altnames": [ + "c++", + "cpp" + ], + "tags": [ + "language" + ], + "versions": { + "svg": [ + "original", + "plain", + "line" + ], + "font": [ + "plain", + "line" + ] + }, + "color": "#004482", + "aliases": [ + { + "base": "plain", + "alias": "plain-wordmark" + }, + { + "base": "line", + "alias": "line-wordmark" + } + ] + }, + { + "name": "crystal", + "altnames": [ + "crystallang" + ], + "tags": [ + "programming", + "language" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#000000", + "aliases": [] + }, + { + "name": "csharp", + "altnames": [ + "c#" + ], + "tags": [ + "language" + ], + "versions": { + "svg": [ + "original", + "plain", + "line" + ], + "font": [ + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ] + }, + "color": "#68217a", + "aliases": [ + { + "base": "plain", + "alias": "plain-wordmark" + }, + { + "base": "line", + "alias": "line-wordmark" + } + ] + }, + { + "name": "css3", + "altnames": [ + "cascadingstylesheets3" + ], + "tags": [ + "language", + "programming" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#3d8fc6", + "aliases": [] + }, + { + "name": "cucumber", + "altnames": [ + "cucumberjs" + ], + "tags": [ + "framework" + ], + "versions": { + "svg": [ + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#00a818", + "aliases": [] + }, + { + "name": "cypressio", + "altnames": [ + "crystallang" + ], + "tags": [ + "testing", + "framework" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#4a4a4d", + "aliases": [] + }, + { + "name": "d3js", + "altnames": [], + "tags": [], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#f7974e", + "aliases": [] + }, + { + "name": "dart", + "altnames": [ + "googledart" + ], + "tags": [ + "programming", + "language" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#00A8E1", + "aliases": [] + }, + { + "name": "datagrip", + "altnames": [], + "tags": [ + "jetbrains", + "ide", + "sql", + "database" + ], + "versions": { + "svg": [ + "original", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#21d789", + "aliases": [] + }, + { + "name": "dataspell", + "altnames": [], + "tags": [ + "jetbrains", + "ide", + "jupyter notebook", + "data science" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#087cfa", + "aliases": [] + }, + { + "name": "dbeaver", + "altnames": [], + "tags": [ + "tool", + "database" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "plain" + ] + }, + "color": "#382a24", + "aliases": [] + }, + { + "name": "debian", + "altnames": [], + "tags": [ + "os", + "server" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#A80030", + "aliases": [] + }, + { + "name": "denojs", + "altnames": [], + "tags": [ + "javascript", + "rust", + "runtime" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#000000", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "devicon", + "altnames": [], + "tags": [ + "iconset" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ], + "font": [ + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ] + }, + "color": "#60BE86", + "aliases": [] + }, + { + "name": "digitalocean", + "altnames": [], + "tags": [ + "cloud", + "hosting", + "database", + "storage" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#0080FF", + "aliases": [] + }, + { + "name": "discordjs", + "altnames": [], + "tags": [ + "wrapper", + "api_wrapper", + "nodejs" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#0c0c14", + "aliases": [] + }, + { + "name": "django", + "altnames": [], + "tags": [], + "versions": { + "svg": [ + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#092e20", + "aliases": [] + }, + { + "name": "djangorest", + "altnames": [ + "Django REST framework" + ], + "tags": [ + "framework", + "rest", + "api", + "python", + "web" + ], + "versions": { + "svg": [ + "original", + "plain", + "line", + "original-wordmark", + "plain-wordmark", + "line-wordmark" + ], + "font": [ + "plain", + "line", + "plain-wordmark", + "line-wordmark" + ] + }, + "color": "#a30000", + "aliases": [] + }, + { + "name": "docker", + "altnames": [], + "tags": [ + "platform", + "deploy" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#019bc6", + "aliases": [] + }, + { + "name": "doctrine", + "altnames": [], + "tags": [], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ], + "font": [ + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ] + }, + "color": "#f56d39", + "aliases": [] + }, + { + "name": "dot-net", + "altnames": [ + "dotnet", + ".net" + ], + "tags": [ + "framework" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#1384c8", + "aliases": [] + }, + { + "name": "dotnetcore", + "altnames": [ + ".netcore" + ], + "tags": [ + "framework" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#623697", + "aliases": [] + }, + { + "name": "dreamweaver", + "altnames": [ + "Adobe Dreamweaver" + ], + "tags": [ + "web-development", + "editor", + "software", + "tool" + ], + "versions": { + "svg": [ + "original", + "plain", + "line" + ], + "font": [ + "plain", + "line" + ] + }, + "color": "#470137", + "aliases": [] + }, + { + "name": "dropwizard", + "altnames": [], + "tags": [ + "java", + "framework" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#24265d", + "aliases": [] + }, + { + "name": "drupal", + "altnames": [], + "tags": [ + "cms" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#0073BA", + "aliases": [] + }, + { + "name": "dynamodb", + "altnames": [], + "tags": [ + "key-value", + "database", + "java" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#527fff", + "aliases": [] + }, + { + "name": "eclipse", + "altnames": [ + "Eclipse IDE" + ], + "tags": [ + "editor", + "IDE" + ], + "versions": { + "svg": [ + "original-wordmark", + "original" + ], + "font": [ + "plain-wordmark", + "plain" + ] + }, + "color": "#2c2255", + "aliases": [] + }, + { + "name": "ecto", + "altnames": [], + "tags": [ + "data", + "elixir", + "integration", + "query" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain-wordmark" + ], + "font": [ + "original", + "plain-wordmark" + ] + }, + "color": "#77bf43", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, + { + "name": "elasticsearch", + "altnames": [], + "tags": [ + "elastic", + "data", + "logs" + ], + "versions": { + "svg": [ + "original-wordmark", + "original" + ], + "font": [ + "plain-wordmark", + "plain" + ] + }, + "color": "#00bfb3", + "aliases": [] + }, + { + "name": "electron", + "altnames": [ + "electronjs" + ], + "tags": [ + "framework" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#47848f", + "aliases": [] + }, + { + "name": "eleventy", + "altnames": [ + "11ty" + ], + "tags": [ + "ssg", + "static site generator" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#1f1f1f", + "aliases": [] + }, + { + "name": "elixir", + "altnames": [ + "elexirlang" + ], + "tags": [ + "language" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#380A4D", + "aliases": [] + }, + { + "name": "elm", + "altnames": [ + "elmlang" + ], + "tags": [ + "framework" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#34495E", + "aliases": [] + }, + { + "name": "emacs", + "altnames": [ + "editingmacros" + ], + "tags": [ + "editor" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "original" + ] + }, + "color": "#421f5f", + "aliases": [] + }, + { + "name": "embeddedc", + "altnames": [], + "tags": [ + "language", + "programming" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#444444", + "aliases": [] + }, + { + "name": "ember", + "altnames": [ + "ember.js", + "emberjs" + ], + "tags": [ + "framework", + "javascript", + "web-development", + "build" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain" + ], + "font": [ + "original-wordmark", + "plain" + ] + }, + "color": "#E04E39", + "aliases": [ + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "envoy", + "altnames": [ + "envoyproxy" + ], + "tags": [ + "proxy", + "cloud" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#e13eaf", + "aliases": [] + }, + { + "name": "erlang", + "altnames": [], + "tags": [], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#a90533", + "aliases": [] + }, + { + "name": "eslint", + "altnames": [], + "tags": [ + "linter", + "javascript", + "code-quality", + "coding-style" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#4b32c3", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "express", + "altnames": [ + "expressjs" + ], + "tags": [ + "framework" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#444", + "aliases": [] + }, + { + "name": "facebook", + "altnames": [], + "tags": [ + "auth" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#3d5a98", + "aliases": [ + { + "base": "plain", + "alias": "original" + } + ] + }, + { + "name": "fastapi", + "altnames": [], + "tags": [ + "python", + "framework" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#009688", + "aliases": [] + }, + { + "name": "fastify", + "altnames": [], + "tags": [ + "framework", + "web", + "node.js", + "javascript", + "performance" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#000000", + "aliases": [] + }, + { + "name": "faunadb", + "altnames": [ + "fauna" + ], + "tags": [ + "database" + ], + "versions": { + "svg": [ + "original-wordmark", + "original" + ], + "font": [ + "original-wordmark", + "original", + "line", + "line-wordmark" + ] + }, + "color": "#3A1AB6", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "feathersjs", + "altnames": [], + "tags": [ + "framework", + "rest" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "original" + ] + }, + "color": "#333333", + "aliases": [] + }, + { + "name": "fedora", + "altnames": [], + "tags": [ + "linux", + "distribuition", + "desktop" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#294172", + "aliases": [] + }, + { + "name": "figma", + "altnames": [], + "tags": [ + "design" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#f24e1e", + "aliases": [] + }, + { + "name": "filezilla", + "altnames": [], + "tags": [ + "ftp" + ], + "versions": { + "svg": [ + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#b30000", + "aliases": [] + }, + { + "name": "firebase", + "altnames": [], + "tags": [ + "auth", + "hosting", + "storage", + "cloud" + ], + "versions": { + "svg": [ + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#f58220", + "aliases": [] + }, + { + "name": "firefox", + "altnames": [ + "mozillafirefox" + ], + "tags": [ + "browser" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#DD732A", + "aliases": [] + }, + { + "name": "flask", + "altnames": [], + "tags": [ + "python", + "framework" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#010101", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "flutter", + "altnames": [], + "tags": [ + "framework", + "sdk" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#3FB6D3", + "aliases": [] + }, + { + "name": "fortran", + "altnames": [], + "tags": [ + "programming", + "language" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "original" + ] + }, + "color": "#734f96", + "aliases": [] + }, + { + "name": "foundation", + "altnames": [], + "tags": [ + "framework", + "css" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#008cba", + "aliases": [] + }, + { + "name": "framermotion", + "altnames": [ + "framer-motion", + "framer" + ], + "tags": [ + "library", + "open-source", + "react", + "animation" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#000", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "framework7", + "altnames": [], + "tags": [ + "framework", + "cross-platform", + "development", + "mobile", + "android", + "ios", + "open-source" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#ee350f", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "fsharp", + "altnames": [ + "f#" + ], + "tags": [ + "language" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#378BBA", + "aliases": [] + }, + { + "name": "gatling", + "altnames": [], + "tags": [ + "framework", + "testing" + ], + "versions": { + "svg": [ + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#E77500", + "aliases": [] + }, + { + "name": "gatsby", + "altnames": [ + "gatsbyjs" + ], + "tags": [ + "reactjs", + "framework" + ], + "versions": { + "svg": [ + "plain", + "original", + "original-wordmark", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#64328B", + "aliases": [] + }, + { + "name": "gazebo", + "altnames": [], + "tags": [ + "robotics", + "3d" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#f58113", + "aliases": [] + }, + { + "name": "gcc", + "altnames": [ + "gnucompilercollection" + ], + "tags": [ + "compiler", + "linux" + ], + "versions": { + "svg": [ + "original", + "plain", + "line" + ], + "font": [ + "plain", + "line" + ] + }, + "color": "#ffcfab", + "aliases": [ + { + "base": "original", + "alias": "original-wordmark" + }, + { + "base": "plain", + "alias": "plain-wordmark" + }, + { + "base": "line", + "alias": "line-wordmark" + } + ] + }, + { + "name": "gentoo", + "altnames": [], + "tags": [ + "linux", + "distribuition", + "desktop" + ], + "versions": { + "svg": [ + "plain", + "plain-wordmark" + ], + "font": [ + "plain-wordmark", + "plain" + ] + }, + "color": "#9991d9", + "aliases": [] + }, + { + "name": "ghost", + "altnames": [], + "tags": [ + "cms" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#000000", + "aliases": [] + }, + { + "name": "gimp", + "altnames": [], + "tags": [ + "graphic" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain" + ] + }, + "color": "#716955", + "aliases": [] + }, + { + "name": "git", + "altnames": [], + "tags": [ + "version-control" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#f34f29", + "aliases": [] + }, + { + "name": "gitbook", + "altnames": [], + "tags": [ + "documentation", + "pages", + "git", + "markup" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "line", + "line-wordmark" + ], + "font": [ + "original", + "original-wordmark", + "line", + "line-wordmark" + ] + }, + "color": "#346ddb", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "github", + "altnames": [], + "tags": [ + "version-control" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#181616", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, + { + "name": "githubactions", + "altnames": [ + "GitHub Actions" + ], + "tags": [ + "devops", + "integration" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#2088FF", + "aliases": [] + }, + { + "name": "githubcodespaces", + "altnames": [ + "GitHub Codespaces" + ], + "tags": [ + "development", + "remote-development", + "editor", + "browser", + "cloud" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#24292e", + "aliases": [] + }, + { + "name": "gitlab", + "altnames": [], + "tags": [ + "version-control" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#E24329", + "aliases": [] + }, + { + "name": "gitpod", + "altnames": [ + "gitpod-io" + ], + "tags": [ + "open-source", + "remote-development", + "cloud", + "IDE" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#FFA132", + "aliases": [] + }, + { + "name": "gitter", + "altnames": [], + "tags": [ + "social", + "chat" + ], + "versions": { + "svg": [ + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#000000", + "aliases": [] + }, + { + "name": "go", + "altnames": [ + "golang" + ], + "tags": [ + "language" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "line" + ], + "font": [ + "original-wordmark", + "plain", + "line" + ] + }, + "color": "#00acd7", + "aliases": [ + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "godot", + "altnames": [], + "tags": [ + "game-engine", + "open-source" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#478cbf", + "aliases": [] + }, + { + "name": "goland", + "altnames": [], + "tags": [ + "jetbrains", + "ide", + "go" + ], + "versions": { + "svg": [ + "original", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#087cfa", + "aliases": [] + }, + { + "name": "google", + "altnames": [], + "tags": [ + "auth" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#587dbd", + "aliases": [ + { + "base": "plain", + "alias": "original" + }, + { + "base": "plain-wordmark", + "alias": "original-wordmark" + } + ] + }, + { + "name": "googlecloud", + "altnames": [], + "tags": [ + "google", + "cloud" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#557ebf", + "aliases": [] + }, + { + "name": "gradle", + "altnames": [ + "apachegradle", + "gradlebuildtool" + ], + "tags": [ + "open-source", + "task-runner" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#02303a", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "grafana", + "altnames": [], + "tags": [ + "monitoring", + "analytics", + "metrics", + "logs", + "visualization", + "web-application" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#E78040", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "grails", + "altnames": [ + "Grails Framework" + ], + "tags": [ + "framework", + "groovy", + "web-development", + "jvm", + "build" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#feb571", + "aliases": [] + }, + { + "name": "graphql", + "altnames": [], + "tags": [ + "language", + "data", + "query" + ], + "versions": { + "svg": [ + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#e434aa", + "aliases": [] + }, + { + "name": "groovy", + "altnames": [ + "groovylang", + "apachegroovy" + ], + "tags": [ + "programming", + "language", + "jvm" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#619cbc", + "aliases": [] + }, + { + "name": "grpc", + "altnames": [ + "grpcio", + "Google Remote Procedure Call" + ], + "tags": [ + "programming", + "c++", + "java", + "python", + "go", + "library" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#00b0ad", + "aliases": [] + }, + { + "name": "grunt", + "altnames": [ + "gruntjs" + ], + "tags": [ + "task-runner", + "nodejs" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ], + "font": [ + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ] + }, + "color": "#fcaa1a", + "aliases": [] + }, + { + "name": "gulp", + "altnames": [ + "gulpjs" + ], + "tags": [ + "task-runner", + "nodejs" + ], + "versions": { + "svg": [ + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#eb4a4b", + "aliases": [] + }, + { + "name": "hadoop", + "altnames": [ + "Apache Hadoop" + ], + "tags": [ + "framework", + "big data", + "open-source", + "software", + "library", + "framework", + "java" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#ffff00", + "aliases": [ + { + "base": "plain", + "alias": "line" + }, + { + "base": "plain-wordmark", + "alias": "line-wordmark" + } + ] + }, + { + "name": "handlebars", + "altnames": [ + "handlebarsjs" + ], + "tags": [ + "framework" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#000000", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "hardhat", + "altnames": [], + "tags": [ + "ethereum", + "development", + "solidity", + "javascript", + "typescript" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#fff100", + "aliases": [] + }, + { + "name": "harvester", + "altnames": [ + "harvesterhci" + ], + "tags": [ + "kubernetes", + "operating-system", + "hypervisor", + "rancher" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original" + ] + }, + "color": "#00A580", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "haskell", + "altnames": [], + "tags": [ + "language", + "functional" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#5E5185", + "aliases": [] + }, + { + "name": "haxe", + "altnames": [], + "tags": [ + "language" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#EA8220", + "aliases": [] + }, + { + "name": "helm", + "altnames": [], + "tags": [ + "package", + "manager", + "kubernetes" + ], + "versions": { + "svg": [ + "original", + "line" + ], + "font": [ + "original", + "line" + ] + }, + "color": "#0F1689", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, + { + "name": "heroku", + "altnames": [], + "tags": [ + "cloud" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ] + }, + "color": "#6762a6", + "aliases": [ + { + "base": "line", + "alias": "original" + }, + { + "base": "line-wordmark", + "alias": "original-wordmark" + } + ] + }, + { + "name": "hibernate", + "altnames": [], + "tags": [ + "database", + "framework", + "java" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#bcae79", + "aliases": [] + }, + { + "name": "homebrew", + "altnames": [], + "tags": [ + "package", + "manager", + "linux", + "apple", + "os" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ], + "font": [ + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ] + }, + "color": "#fbb040", + "aliases": [] + }, + { + "name": "html5", + "altnames": [ + "hypertextmarkdownlanguage5" + ], + "tags": [ + "programming", + "language" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#e54d26", + "aliases": [] + }, + { + "name": "hugo", + "altnames": [ + "gohugo" + ], + "tags": [ + "framework", + "ssg", + "static-site-generator", + "go", + "html", + "css" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#FF4088", + "aliases": [] + }, + { + "name": "ie10", + "altnames": [ + "internetexplorer10" + ], + "tags": [ + "browser" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "original" + ] + }, + "color": "#1EBBEE", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, + { + "name": "ifttt", + "altnames": [ + "ifthisthenthat" + ], + "tags": [ + "automation", + "applets", + "programming" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "original" + ] + }, + "color": "#000", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, + { + "name": "illustrator", + "altnames": [ + "adobeillustrator" + ], + "tags": [ + "editor", + "vector" + ], + "versions": { + "svg": [ + "plain", + "line" + ], + "font": [ + "plain", + "line" + ] + }, + "color": "#faa625", + "aliases": [] + }, + { + "name": "influxdb", + "altnames": [], + "tags": [ + "database", + "monitoring", + "open-source", + "api" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#020a47", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "inkscape", + "altnames": [], + "tags": [ + "editor", + "vector" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#000000", + "aliases": [] + }, + { + "name": "insomnia", + "altnames": [ + "Insomnia Rest Client" + ], + "tags": [ + "open-source", + "Rest API", + "Soap API", + "JSON-XML" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#4000bf", + "aliases": [] + }, + { + "name": "intellij", + "altnames": [ + "intellijidea" + ], + "tags": [ + "jetbrains", + "editor", + "java" + ], + "versions": { + "svg": [ + "original", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#087cfa", + "aliases": [] + }, + { + "name": "ionic", + "altnames": [], + "tags": [ + "framework" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#4e8ef7", + "aliases": [] + }, + { + "name": "jaegertracing", + "altnames": [ + "jaeger" + ], + "tags": [ + "monitoring", + "tracing" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#67cfe3", + "aliases": [] + }, + { + "name": "jamstack", + "altnames": [], + "tags": [ + "javascript", + "markup" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain-wordmark" + ], + "font": [ + "original", + "plain-wordmark" + ] + }, + "color": "#F0047F", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, + { + "name": "jasmine", + "altnames": [ + "jasminejs" + ], + "tags": [ + "testing" + ], + "versions": { + "svg": [ + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#8a4182", + "aliases": [] + }, + { + "name": "java", + "altnames": [], + "tags": [ + "programming", + "language", + "jvm" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#EA2D2E", + "aliases": [] + }, + { + "name": "javascript", + "altnames": [ + "js", + "ecmascript" + ], + "tags": [ + "programming", + "language" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#f0db4f", + "aliases": [] + }, + { + "name": "jeet", + "altnames": [], + "tags": [ + "framework", + "css" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#FF664A", + "aliases": [] + }, + { + "name": "jekyll", + "altnames": [ + "jestjs" + ], + "tags": [ + "ruby", + "blog" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#000000", + "aliases": [] + }, + { + "name": "jenkins", + "altnames": [ + "hudson" + ], + "tags": [ + "platform", + "integration", + "server" + ], + "versions": { + "svg": [ + "line", + "original", + "plain" + ], + "font": [ + "line", + "plain" + ] + }, + "color": "#F0D6B7", + "aliases": [] + }, + { + "name": "jest", + "altnames": [ + "jestjs" + ], + "tags": [ + "testing", + "javascript" + ], + "versions": { + "svg": [ + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#99425b", + "aliases": [] + }, + { + "name": "jetbrains", + "altnames": [ + "intellijsoftware" + ], + "tags": [ + "ide" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#FDCC21", + "aliases": [] + }, + { + "name": "jira", + "altnames": [ + "atlassianjira" + ], + "tags": [ + "platform", + "organize" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#2684ff", + "aliases": [] + }, + { + "name": "jiraalign", + "altnames": [ + "Jira Align" + ], + "tags": [ + "development", + "integration", + "software" + ], + "versions": { + "svg": [ + "original", + "plain", + "original-wordmark", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#2684FF", + "aliases": [] + }, + { + "name": "jquery", + "altnames": [ + "jqueryjs" + ], + "tags": [ + "library", + "javascript" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#0769ad", + "aliases": [] + }, + { + "name": "json", + "altnames": [ + "JavaScript Object Notation" + ], + "tags": [ + "format", + "standard", + "file-format", + "object-notation" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#505050", + "aliases": [] + }, + { + "name": "jule", + "altnames": [ + "julelang" + ], + "tags": [ + "programming", + "language" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#5f7389", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "julia", + "altnames": [ + "julialang" + ], + "tags": [ + "programming", + "language" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#28a745", + "aliases": [] + }, + { + "name": "junit", + "altnames": [], + "tags": [ + "testing", + "framework", + "java" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#dc514a", + "aliases": [] + }, + { + "name": "jupyter", + "altnames": [ + "jupyternotebook" + ], + "tags": [ + "programming", + "language" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#F37726", + "aliases": [] + }, + { + "name": "k3os", + "altnames": [], + "tags": [ + "kubernetes", + "operating-system", + "k3s", + "rancher" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#FD824E", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "k3s", + "altnames": [], + "tags": [ + "kubernetes", + "container", + "platform" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain-wordmark" + ], + "font": [ + "original", + "plain-wordmark" + ] + }, + "color": "#ffc519", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, + { + "name": "kaggle", + "altnames": [], + "tags": [ + "platform", + "auth", + "machine-learning" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#20BEFF", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "karatelabs", + "altnames": [ + "karate" + ], + "tags": [ + "framework", + "testing" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#000000", + "aliases": [] + }, + { + "name": "karma", + "altnames": [ + "karmarunner", + "karmajs" + ], + "tags": [ + "testing", + "test-runner" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#56c5a8", + "aliases": [] + }, + { + "name": "kdeneon", + "altnames": [], + "tags": [ + "linux", + "operating system", + "open-source" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#21769a", + "aliases": [] + }, + { + "name": "keras", + "altnames": [], + "tags": [ + "machine-learning", + "python", + "library" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ], + "font": [ + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ] + }, + "color": "#d00000", + "aliases": [] + }, + { + "name": "kibana", + "altnames": [], + "tags": [ + "elastic", + "dashboard" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#F04E98", + "aliases": [] + }, + { + "name": "knexjs", + "altnames": [], + "tags": [ + "database", + "query", + "sql", + "javascript", + "library" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain-wordmark" + ], + "font": [ + "original", + "plain-wordmark" + ] + }, + "color": "#e16426", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, + { + "name": "knockout", + "altnames": [ + "knockoutjs" + ], + "tags": [ + "framework", + "javascript" + ], + "versions": { + "svg": [ + "plain-wordmark" + ], + "font": [ + "plain-wordmark" + ] + }, + "color": "#e42e16", + "aliases": [] + }, + { + "name": "kotlin", + "altnames": [ + "kotlinlang" + ], + "tags": [ + "language", + "jetbrains", + "jvm" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#c711e1", + "aliases": [] + }, + { + "name": "krakenjs", + "altnames": [ + "kraken" + ], + "tags": [ + "nodejs", + "framework" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#0081C2", + "aliases": [] + }, + { + "name": "ktor", + "altnames": [], + "tags": [ + "jetbrains", + "kotlin", + "framework" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#fc801d", + "aliases": [] + }, + { + "name": "kubernetes", + "altnames": [], + "tags": [ + "container", + "deployment" + ], + "versions": { + "svg": [ + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#486bb3", + "aliases": [] + }, + { + "name": "labview", + "altnames": [], + "tags": [ + "language" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#fed500", + "aliases": [] + }, + { + "name": "laravel", + "altnames": [], + "tags": [ + "php", + "framework" + ], + "versions": { + "svg": [ + "original", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#fd4f31", + "aliases": [] + }, + { + "name": "latex", + "altnames": [], + "tags": [ + "latex3", + "latex2e", + "markup", + "tex", + "typesetting-system" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "original" + ] + }, + "color": "#000000", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, + { + "name": "less", + "altnames": [ + "lesscss" + ], + "tags": [ + "css", + "pre-processor" + ], + "versions": { + "svg": [ + "plain-wordmark" + ], + "font": [ + "plain-wordmark" + ] + }, + "color": "#2a4d80", + "aliases": [] + }, + { + "name": "linkedin", + "altnames": [], + "tags": [ + "social", + "auth" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#0076b2", + "aliases": [] + }, + { + "name": "linux", + "altnames": [], + "tags": [ + "os" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#000000", + "aliases": [] + }, + { + "name": "liquibase", + "altnames": [], + "tags": [ + "tool", + "database" + ], + "versions": { + "svg": [ + "original-wordmark", + "original" + ], + "font": [ + "original-wordmark", + "original" + ] + }, + "color": "#FF3C00", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "livewire", + "altnames": [ + "laravel-livewire" + ], + "tags": [ + "framework", + "laravel", + "php", + "open-source" + ], + "versions": { + "svg": [ + "original-wordmark", + "original" + ], + "font": [ + "plain-wordmark", + "plain" + ] + }, + "color": "#FB70A9", + "aliases": [] + }, + { + "name": "llvm", + "altnames": [ + "Low Level Virtual Machine" + ], + "tags": [ + "compiler", + "framework", + "c++", + "open-source" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "plain" + ] + }, + "color": "#5A90B6", + "aliases": [] + }, + { + "name": "logstash", + "altnames": [], + "tags": [ + "logs", + "elastic" + ], + "versions": { + "svg": [ + "original-wordmark", + "original" + ], + "font": [ + "plain-wordmark", + "plain" + ] + }, + "color": "#fec514", + "aliases": [] + }, + { + "name": "lua", + "altnames": [ + "lualang" + ], + "tags": [ + "programming", + "language", + "object-oriented", + "scripting", + "procedural", + "prototype-based", + "functional" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#000080", + "aliases": [] + }, + { + "name": "lumen", + "altnames": [ + "Laravel Lumen", + "Lumen Laravel", + "Laravel Lumen Framework", + "laravel.lumen" + ], + "tags": [ + "laravel", + "php", + "framework", + "micro-framework" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "original" + ] + }, + "color": "#e54537", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, + { + "name": "magento", + "altnames": [], + "tags": [ + "php", + "framework" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "line" + ], + "font": [ + "original", + "original-wordmark", + "line" + ] + }, + "color": "#f26322", + "aliases": [] + }, + { + "name": "mariadb", + "altnames": [], + "tags": [ + "database", + "sql", + "open-source" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#003545", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "markdown", + "altnames": [ + "md" + ], + "tags": [ + "markup", + "language" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "original" + ] + }, + "color": "#000000", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, + { + "name": "materializecss", + "altnames": [ + "materialize", + "materialize-css", + "materialize css" + ], + "tags": [ + "framework", + "css", + "design", + "material-design" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#EB7077", + "aliases": [] + }, + { + "name": "materialui", + "altnames": [ + "mui" + ], + "tags": [ + "framework", + "design", + "ui" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#1FA6CA", + "aliases": [] + }, + { + "name": "matlab", + "altnames": [], + "tags": [ + "programming", + "language" + ], + "versions": { + "svg": [ + "original", + "plain", + "line" + ], + "font": [ + "plain", + "line" + ] + }, + "color": "#6dd0c7", + "aliases": [] + }, + { + "name": "matplotlib", + "altnames": [], + "tags": [ + "plotting", + "library", + "math", + "visualization", + "python", + "api" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#11557C", + "aliases": [] + }, + { + "name": "maven", + "altnames": [ + "apachemaven", + "mvn" + ], + "tags": [ + "build" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#e97826", + "aliases": [] + }, + { + "name": "maya", + "altnames": [], + "tags": [ + "mel", + "pymel", + "python", + "3d", + "programming", + "vfx", + "graphic", + "graphics", + "game", + "animation" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#149B9A", + "aliases": [] + }, + { + "name": "meteor", + "altnames": [ + "meteorjs" + ], + "tags": [ + "javascript", + "framework" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#df5052", + "aliases": [] + }, + { + "name": "microsoftsqlserver", + "altnames": [ + "msql" + ], + "tags": [ + "database" + ], + "versions": { + "svg": [ + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#909DAA", + "aliases": [] + }, + { + "name": "minitab", + "altnames": [], + "tags": [ + "package", + "statistics" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#8dc63f", + "aliases": [] + }, + { + "name": "mobx", + "altnames": [ + "mobxjs" + ], + "tags": [ + "state-management", + "testing", + "reactjs", + "nodejs" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#e05e11", + "aliases": [] + }, + { + "name": "mocha", + "altnames": [], + "tags": [ + "testing" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#8d6748", + "aliases": [] + }, + { + "name": "modx", + "altnames": [], + "tags": [ + "cms", + "php", + "framework" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#00decc", + "aliases": [] + }, + { + "name": "moleculer", + "altnames": [ + "moleculerjs", + "moleculer.js" + ], + "tags": [ + "nodejs", + "javascript", + "js", + "microservices", + "micro-services", + "framework" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] + }, + "color": "#3cafce", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "mongodb", + "altnames": [], "tags": [ - "framework", - "rest" + "database" ], "versions": { "svg": [ - "original" + "original", + "original-wordmark", + "plain", + "plain-wordmark" ], "font": [ - "original" + "plain", + "plain-wordmark" ] }, - "color": "#333333", - "aliases": [ ] + "color": "#4FAA41", + "aliases": [] }, { - "name": "figma", + "name": "mongoose", + "altnames": [ + "mongoosejs" + ], "tags": [ - "design" + "data-model", + "nodejs" ], "versions": { "svg": [ "original", - "plain" + "original-wordmark" ], "font": [ - "plain" + "original", + "original-wordmark" ] }, - "color": "#f24e1e", + "color": "#860000", "aliases": [] }, { - "name": "filezilla", + "name": "moodle", + "altnames": [], "tags": [ - "ftp" + "platform" ], "versions": { "svg": [ - "plain", "plain-wordmark" + "original", + "original-wordmark", + "plain", + "plain-wordmark" ], "font": [ "plain", "plain-wordmark" ] }, - "color": "#b30000", + "color": "#F7931E", "aliases": [] }, { - "name": "firebase", + "name": "msdos", + "altnames": [ + "microsoftdiskoperatingsystem" + ], "tags": [ - "auth", - "hosting", - "storage", - "cloud" + "os" ], "versions": { "svg": [ + "original", "plain", - "plain-wordmark" + "line" ], "font": [ - "plain", - "plain-wordmark" + "line" ] }, - "color": "#f58220", + "color": "#ff0000", "aliases": [] }, { - "name": "firefox", + "name": "mysql", + "altnames": [ + "mystructuredquerylanguage" + ], "tags": [ - "browser" + "database", + "language" ], "versions": { "svg": [ @@ -1591,65 +5996,65 @@ "plain-wordmark" ] }, - "color": "#DD732A", + "color": "#00618a", "aliases": [] }, { - "name": "flask", + "name": "nano", + "altnames": [ + "gnu-nano", + "GNU nano" + ], "tags": [ - "python", - "framework" + "text editor", + "editor", + "GNU", + "terminal" ], "versions": { "svg": [ "original", - "original-wordmark" + "original-wordmark", + "plain", + "plain-wordmark" ], "font": [ - "original", - "original-wordmark" + "plain", + "plain-wordmark" ] }, - "color": "#010101", - "aliases": [ - { - "base": "original", - "alias": "plain" - }, - { - "base": "original-wordmark", - "alias": "plain-wordmark" - } - ] + "color": "#C8F", + "aliases": [] }, { - "name": "flutter", + "name": "neo4j", + "altnames": [], "tags": [ - "framework", - "sdk" + "database" ], "versions": { "svg": [ "original", - "plain" + "original-wordmark", + "plain", + "plain-wordmark" ], "font": [ - "plain" + "plain", + "plain-wordmark" ] }, - "color": "#3FB6D3", + "color": "#018BFF", "aliases": [] }, { - "name": "foundation", + "name": "nestjs", + "altnames": [], "tags": [ - "framework", - "css" + "framework" ], "versions": { "svg": [ - "original", - "original-wordmark", "plain", "plain-wordmark" ], @@ -1658,71 +6063,102 @@ "plain-wordmark" ] }, - "color": "#008cba", + "color": "#DF234F", "aliases": [] }, { - "name": "fsharp", + "name": "networkx", + "altnames": [], "tags": [ - "language" + "graph", + "library", + "python" ], "versions": { "svg": [ - "original", - "plain" + "original" ], "font": [ - "plain" + "original" ] }, - "color": "#378BBA", + "color": "#2C7FB8", "aliases": [] }, { - "name": "gatling", + "name": "nextjs", + "altnames": [], "tags": [ - "framework", - "testing" + "framework" ], "versions": { "svg": [ - "plain", - "plain-wordmark" + "original", + "line", + "original-wordmark" ], "font": [ + "original", "plain", + "line", + "original-wordmark", "plain-wordmark" ] }, - "color": "#E77500", - "aliases": [] + "color": "#000000", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { - "name": "gatsby", + "name": "nginx", + "altnames": [], "tags": [ - "reactjs", - "framework" + "server" ], "versions": { "svg": [ - "plain", - "original", - "original-wordmark", - "plain-wordmark" + "original" ], "font": [ + "original", + "original-wordmark", "plain", "plain-wordmark" ] }, - "color": "#64328B", - "aliases": [] + "color": "#090", + "aliases": [ + { + "base": "original", + "alias": "original-wordmark" + }, + { + "base": "original", + "alias": "plain" + }, + { + "base": "original", + "alias": "plain-wordmark" + } + ] }, - { - "name": "rect", + { + "name": "ngrx", + "altnames": [], "tags": [ - "programming", - "language" + "state-management", + "angular", + "redux", + "store", + "javascript" ], "versions": { "svg": [ @@ -1733,70 +6169,83 @@ "plain" ] }, - "color": "#262626", + "color": "#412846", "aliases": [] }, { - "name": "gcc", + "name": "nhibernate", + "altnames": [], "tags": [ - "compiler", - "linux" + "library", + "dotnet", + ".net", + "object-relational mapper", + "orm", + "C#", + "c-sharp" ], "versions": { "svg": [ - "original", - "plain" + "original-wordmark", + "original" ], "font": [ - "plain" + "plain-wordmark", + "plain", + "line", + "line-wordmark" ] }, - "color": "#ffcfab", + "color": "#903a36", "aliases": [] }, { - "name": "gentoo", + "name": "nim", + "altnames": [ + "nimlang" + ], "tags": [ - "linux", - "distribuition", - "desktop" - ], + "programming", + "functional", + "object-oriented", + "procedural" + ], "versions": { "svg": [ - "plain", - "plain-wordmark" + "original", + "original-wordmark" ], "font": [ - "plain-wordmark", - "plain" - ] + "original", + "original-wordmark" + ] }, - "color": "#9991d9", - "aliases": [] + "color": "#efc743", + "aliases": [] }, { - "name": "gimp", + "name": "nimble", + "altnames": [], "tags": [ - "graphic" + "package-manager" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "plain" ], "font": [ "plain" ] }, - "color": "#716955", + "color": "#f7e941", "aliases": [] }, { - "name": "git", + "name": "nixos", + "altnames": [], "tags": [ - "version-control" + "os" ], "versions": { "svg": [ @@ -1810,36 +6259,15 @@ "plain-wordmark" ] }, - "color": "#f34f29", + "color": "#5277C3", "aliases": [] }, { - "name": "github", - "tags": [ - "version-control" - ], - "versions": { - "svg": [ - "original", - "original-wordmark" - ], - "font": [ - "original", - "original-wordmark" - ] - }, - "color": "#181616", - "aliases": [ - { - "base": "original", - "alias": "plain" - } - ] - }, - { - "name": "gitlab", + "name": "nodejs", + "altnames": [], "tags": [ - "version-control" + "javascript", + "language" ], "versions": { "svg": [ @@ -1853,131 +6281,135 @@ "plain-wordmark" ] }, - "color": "#E24329", + "color": "#83CD29", "aliases": [] }, { - "name": "gitter", - "tags": [ - "social", - "chat" + "name": "nodemon", + "altnames": [ + "nodemonjs" + ], + "tags": [ + "nodejs", + "tool", + "javascript" ], "versions": { "svg": [ + "original", "plain", - "plain-wordmark" + "line" ], "font": [ "plain", - "plain-wordmark" + "line" ] }, - "color": "#000000", + "color": "#76d04b", "aliases": [] }, { - "name": "go", - "tags": [ - "language" + "name": "nodewebkit", + "altnames": [ + "nwjs" ], + "tags": [], "versions": { "svg": [ "original", "original-wordmark", "plain", - "line" + "plain-wordmark", + "line", + "line-wordmark" ], "font": [ - "original-wordmark", "plain", - "line" + "plain-wordmark", + "line", + "line-wordmark" ] }, - "color": "#00acd7", - "aliases": [ - { - "base": "original-wordmark", - "alias": "plain-wordmark" - } - ] + "color": "#3d3b47", + "aliases": [] }, { - "name": "google", + "name": "nomad", + "altnames": [ + "HashiCorp Nomad" + ], "tags": [ - "auth" + "container", + "virtual machine", + "deployment" ], "versions": { "svg": [ "original", "original-wordmark", - "plain", "plain-wordmark" ], "font": [ - "plain", + "original", "plain-wordmark" ] }, - "color": "#587dbd", + "color": "#00ca8e", "aliases": [ { - "base": "plain", - "alias": "original" - }, - { - "base": "plain-wordmark", - "alias": "original-wordmark" + "base": "original", + "alias": "plain" } ] }, { - "name": "googlecloud", + "name": "norg", + "altnames": [ + "neorg" + ], "tags": [ - "google", - "cloud" + "note-taking", + "organization" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "plain" ], "font": [ - "plain", - "plain-wordmark" + "plain" ] }, - "color": "#557ebf", + "color": "#4878be", "aliases": [] }, { - "name": "gradle", + "name": "npm", + "altnames": [ + "npmjs", + "nodepackagemanager" + ], "tags": [ - "task-runner" + "package", + "manager" ], "versions": { "svg": [ - "plain", - "plain-wordmark" + "original-wordmark" ], "font": [ - "plain", - "plain-wordmark" + "original-wordmark" ] }, - "color": "#02303a", + "color": "#cb3837", "aliases": [] }, { - "name": "grafana", + "name": "nuget", + "altnames": [], "tags": [ - "monitoring", - "analytics", - "metrics", - "logs", - "visualization", - "web-application" + "package", + "manager" ], "versions": { "svg": [ @@ -1989,44 +6421,48 @@ "original-wordmark" ] }, - "color": "#E78040", - "aliases": [ - { - "base": "original", - "alias": "plain" - }, - { - "base": "original-wordmark", - "alias": "plain-wordmark" - } - ] + "color": "#004880", + "aliases": [] }, { - "name": "grails", + "name": "numpy", + "altnames": [], "tags": [ - "framework" + "library", + "python" ], "versions": { "svg": [ "original", - "plain" + "original-wordmark" ], "font": [ - "plain" + "original", + "original-wordmark" ] }, - "color": "#feb672", - "aliases": [] + "color": "#4DABCF", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] }, { - "name": "graphql", + "name": "nuxtjs", + "altnames": [], "tags": [ - "language", - "data", - "query" + "js", + "javascript", + "framework", + "frontend", + "vuejs" ], "versions": { "svg": [ + "original", + "original-wordmark", "plain", "plain-wordmark" ], @@ -2035,14 +6471,15 @@ "plain-wordmark" ] }, - "color": "#e434aa", + "color": "#00c48d", "aliases": [] }, { - "name": "groovy", + "name": "oauth", + "altnames": [], "tags": [ - "programming", - "language" + "authentication", + "security" ], "versions": { "svg": [ @@ -2053,39 +6490,24 @@ "plain" ] }, - "color": "#619cbc", - "aliases": [] - }, - { - "name": "grunt", - "tags": [ - "task-runner", - "nodejs" - ], - "versions": { - "svg": [ - "original", - "original-wordmark", - "plain", - "plain-wordmark", - "line", - "line-wordmark" - ], - "font": [ - "plain", - "plain-wordmark", - "line", - "line-wordmark" - ] - }, - "color": "#fcaa1a", - "aliases": [] + "color": "#000000", + "aliases": [ + { + "base": "original", + "alias": "original-wordmark" + }, + { + "base": "plain", + "alias": "plain-wordmark" + } + ] }, { - "name": "gulp", + "name": "objectivec", + "altnames": [], "tags": [ - "task-runner", - "nodejs" + "programming", + "language" ], "versions": { "svg": [ @@ -2095,14 +6517,15 @@ "plain" ] }, - "color": "#eb4a4b", + "color": "#0b5a9d", "aliases": [] }, { - "name": "godot", + "name": "ocaml", + "altnames": [], "tags": [ - "game-engine", - "open-source" + "programming", + "language" ], "versions": { "svg": [ @@ -2116,34 +6539,43 @@ "plain-wordmark" ] }, - "color": "#478cbf", + "color": "#F18803", "aliases": [] }, { - "name": "haskell", + "name": "ohmyzsh", + "altnames": [ + "omz", + "ohmyz.sh", + "Oh My Zsh" + ], "tags": [ + "shell", + "script", + "scripting", "language", - "functional" + "command" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "plain" ], "font": [ - "plain", - "plain-wordmark" + "plain" ] }, - "color": "#5E5185", + "color": "#000000", "aliases": [] }, { - "name": "handlebars", + "name": "okta", + "altnames": [ + "okta developer" + ], "tags": [ - "framework" + "auth", + "security" ], "versions": { "svg": [ @@ -2155,13 +6587,17 @@ "plain-wordmark" ] }, - "color": "#000000", + "color": "#0f82c2", "aliases": [] }, { - "name": "haxe", + "name": "openal", + "altnames": [], "tags": [ - "language" + "library", + "audio", + "game", + "3d" ], "versions": { "svg": [ @@ -2172,72 +6608,65 @@ "plain" ] }, - "color": "#EA8220", + "color": "#7e000d", "aliases": [] }, { - "name": "heroku", + "name": "openapi", + "altnames": [], "tags": [ - "cloud" + "specification", + "api", + "open-source" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "original-wordmark" ], "font": [ "original", - "original-wordmark", - "plain", - "plain-wordmark", - "line", - "line-wordmark" + "original-wordmark" ] }, - "color": "#6762a6", - "aliases": [ - { - "base": "line", - "alias": "original" - }, - { - "base": "line-wordmark", - "alias": "original-wordmark" - } - ] + "color": "#6ba43a", + "aliases": [] }, { - "name": "html5", + "name": "opencl", + "altnames": [], "tags": [ - "programming", - "language" + "framework", + "language", + "heterogeneous-computing", + "cpp", + "api", + "khronos", + "programming" ], "versions": { "svg": [ - "original", - "original-wordmark", - "plain", - "plain-wordmark" + "original" ], "font": [ - "plain", - "plain-wordmark" + "original" ] }, - "color": "#e54d26", - "aliases": [] + "color": "#010101", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] }, { - "name": "hugo", + "name": "opencv", + "altnames": [], "tags": [ - "framework", - "ssg", - "static-site-generator", - "go", - "html", - "css" + "library", + "c/c++", + "computer-vision" ], "versions": { "svg": [ @@ -2251,46 +6680,51 @@ "plain-wordmark" ] }, - "color": "#FF4088", + "color": "#128dff", "aliases": [] }, { - "name": "ie10", + "name": "opengl", + "altnames": [ + "opengraphicslibrary" + ], "tags": [ - "browser" + "library", + "graphics", + "game", + "3d" ], "versions": { "svg": [ - "original" + "original", + "plain" ], "font": [ - "original" + "plain" ] }, - "color": "#1EBBEE", - "aliases": [ - { - "base": "original", - "alias": "plain" - } - ] + "color": "#5586a4", + "aliases": [] }, { - "name": "ifttt", + "name": "openstack", + "altnames": [], "tags": [ - "automation", - "applets", - "programming" + "infrastructure-as-a-service", + "cloud-computing-platform" ], "versions": { "svg": [ - "original" + "original", + "original-wordmark", + "plain-wordmark" ], "font": [ - "original" + "original", + "plain-wordmark" ] }, - "color": "#000", + "color": "#ed1944", "aliases": [ { "base": "original", @@ -2299,49 +6733,52 @@ ] }, { - "name": "illustrator", + "name": "opensuse", + "altnames": [], "tags": [ - "editor", - "vector" + "linux", + "distribuition", + "desktop" ], "versions": { "svg": [ + "original", + "original-wordmark", "plain", - "line" + "plain-wordmark" ], "font": [ "plain", - "line" + "plain-wordmark" ] }, - "color": "#faa625", + "color": "#73ba25", "aliases": [] }, { - "name": "inkscape", + "name": "opentelemetry", + "altnames": [], "tags": [ - "editor", - "vector" + "telemetry" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "original-wordmark" ], "font": [ "plain", "plain-wordmark" ] }, - "color": "#000000", + "color": "#f5a800", "aliases": [] }, { - "name": "intellij", + "name": "opera", + "altnames": [], "tags": [ - "editor" + "browser" ], "versions": { "svg": [ @@ -2355,93 +6792,129 @@ "plain-wordmark" ] }, - "color": "#136BA2", + "color": "#f7192d", "aliases": [] }, { - "name": "ionic", + "name": "oracle", + "altnames": [ + "oracledatabase" + ], "tags": [ - "framework" + "database" ], "versions": { "svg": [ - "original", - "original-wordmark" + "original" ], "font": [ - "original", - "original-wordmark" + "original" ] }, - "color": "#4e8ef7", - "aliases": [] + "color": "#EA1B22", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] }, { - "name": "jamstack", + "name": "p5js", + "altnames": [ + "p5.js" + ], "tags": [ "javascript", - "markup" + "js", + "library" ], "versions": { "svg": [ - "original", - "original-wordmark", - "plain-wordmark" + "original" ], "font": [ - "original", - "plain-wordmark" + "original" ] }, - "color": "#F0047F", + "color": "#ED225D", "aliases": [ { "base": "original", "alias": "plain" + }, + { + "base": "original", + "alias": "original-wordmark" + }, + { + "base": "original", + "alias": "plain-wordmark" } ] }, { - "name": "jasmine", + "name": "packer", + "altnames": [], "tags": [ - "testing" + "infrastructure", + "infrastructure-as-code", + "continuous-delivery" ], "versions": { "svg": [ - "plain", - "plain-wordmark" + "original", + "original-wordmark" ], "font": [ - "plain", - "plain-wordmark" + "original", + "original-wordmark" ] }, - "color": "#8a4182", - "aliases": [] + "color": "#1d94dd", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { - "name": "java", + "name": "pandas", + "altnames": [], "tags": [ - "programming", - "language" + "library", + "python" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "original-wordmark" ], "font": [ - "plain", - "plain-wordmark" + "original", + "original-wordmark" ] }, - "color": "#EA2D2E", - "aliases": [] + "color": "#130754", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { - "name": "javascript", + "name": "perl", + "altnames": [], "tags": [ "programming", "language" @@ -2455,122 +6928,152 @@ "plain" ] }, - "color": "#f0db4f", + "color": "#212177", "aliases": [] }, { - "name": "jeet", + "name": "pfsense", + "altnames": [ + "pfSense" + ], "tags": [ - "framework", - "css" + "cloud", + "network", + "open-source", + "security", + "software" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "original-wordmark" ], "font": [ - "plain", - "plain-wordmark" + "original", + "original-wordmark" ] }, - "color": "#FF664A", - "aliases": [] - }, - { - "name": "jest", - "tags": ["testing", "javascript"], - "versions": { - "svg": ["plain"], - "font": ["plain"] - }, - "color": "#99425b", - "aliases": [] + "color": "#000000", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { - "name": "jenkins", + "name": "phalcon", + "altnames": [], "tags": [ - "platform", - "integration", - "server" + "php", + "framework" ], "versions": { "svg": [ - "line", "original", "plain" ], "font": [ - "line", "plain" ] }, - "color": "#F0D6B7", + "color": "#76c39b", "aliases": [] }, { - "name": "jetbrains", + "name": "phoenix", + "altnames": [ + "Phoenix Framework" + ], "tags": [ - "ide" + "framework", + "build", + "web", + "web-development", + "development", + "elixir" ], "versions": { "svg": [ "original", - "plain" + "original-wordmark", + "plain-wordmark" ], "font": [ - "plain" + "original", + "plain-wordmark" ] }, - "color": "#FDCC21", - "aliases": [] + "color": "#FD4F00", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] }, { - "name": "jira", + "name": "photonengine", + "altnames": [ + "photon" + ], "tags": [ - "platform", - "organize" + "game", + "game-engine" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "plain" ], - "font": [ - "plain", - "plain-wordmark" + "font": [ + "plain" ] }, - "color": "#2684ff", - "aliases": [] + "color": "#004480", + "aliases": [ + { + "base": "original", + "alias": "original-wordmark" + }, + { + "base": "plain", + "alias": "plain-wordmark" + } + ] }, { - "name": "jquery", + "name": "photoshop", + "altnames": [ + "adobephotoshop" + ], "tags": [ - "library", - "javascript" + "editor", + "graphic" ], "versions": { "svg": [ - "original", - "original-wordmark", "plain", - "plain-wordmark" + "line" ], "font": [ "plain", - "plain-wordmark" + "line" ] }, - "color": "#0769ad", + "color": "#80b5e2", "aliases": [] }, { - "name": "julia", + "name": "php", + "altnames": [ + "PHP Hypertext Preprocessor", + "Personal Home Page" + ], "tags": [ "programming", "language" @@ -2578,28 +7081,28 @@ "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "plain" ], "font": [ - "plain", - "plain-wordmark" + "plain" ] }, - "color": "#28a745", + "color": "#777bb3", "aliases": [] }, { - "name": "jupyter", + "name": "phpstorm", + "altnames": [], "tags": [ - "programming", - "language" + "jetbrains", + "editor", + "php", + "web", + "html" ], "versions": { "svg": [ "original", - "original-wordmark", "plain", "plain-wordmark" ], @@ -2608,52 +7111,35 @@ "plain-wordmark" ] }, - "color": "#F37726", + "color": "#b74af7", "aliases": [] }, { - "name": "kaggle", + "name": "playwright", + "altnames": [], "tags": [ - "platform", - "auth", - "machine-learning" + "testing", + "framework" ], "versions": { - "svg": [ - "original", - "original-wordmark" + "svg": [ + "original", + "plain" ], - "font": [ - "original", - "original-wordmark" + "font": [ + "plain" ] }, - "color": "#20BEFF", - "aliases": [ - { - "base": "original", - "alias": "plain" - }, - { - "base": "original-wordmark", - "alias": "plain-wordmark" - } - ] - }, - { - "name": "karma", - "tags": ["testing", "test-runner"], - "versions": { - "svg": ["original", "plain"], - "font": ["plain"] - }, - "color": "#56c5a8", + "color": "#2EAD33", "aliases": [] }, { - "name": "kotlin", + "name": "plotly", + "altnames": [], "tags": [ - "language" + "frontend", + "machine-learning", + "dashboard" ], "versions": { "svg": [ @@ -2667,31 +7153,40 @@ "plain-wordmark" ] }, - "color": "#7C6DB2", + "color": "#3d4c73", "aliases": [] }, { - "name": "knockout", + "name": "pnpm", + "altnames": [ + "performant npm" + ], "tags": [ - "framework", - "javascript" + "package", + "manager" ], "versions": { "svg": [ + "original", + "original-wordmark", + "plain", "plain-wordmark" ], "font": [ + "plain", "plain-wordmark" ] }, - "color": "#e42e16", + "color": "#f9ad00", "aliases": [] }, { - "name": "krakenjs", + "name": "podman", + "altnames": [], "tags": [ - "nodejs", - "framework" + "container", + "pods", + "docker" ], "versions": { "svg": [ @@ -2705,46 +7200,41 @@ "plain-wordmark" ] }, - "color": "#0081C2", + "color": "#892ca0", "aliases": [] }, { - "name": "kubernetes", + "name": "poetry", + "altnames": [ + "python-poetry" + ], "tags": [ - "container", - "deployment" + "package-manager", + "python" ], "versions": { "svg": [ - "plain", - "plain-wordmark" + "original" ], "font": [ - "plain", - "plain-wordmark" + "plain" ] }, - "color": "#486bb3", + "color": "#0080c5", "aliases": [] }, { - "name": "labview", - "tags": ["language"], - "versions": { - "svg": ["original", "original-wordmark", "plain", "plain-wordmark"], - "font": ["plain", "plain-wordmark"] - }, - "color": "#fed500", - "aliases": [] - }, - { - "name": "laravel", + "name": "polygon", + "altnames": [], "tags": [ - "php", - "framework" + "ethereum", + "erc20", + "blockchain" ], "versions": { "svg": [ + "original", + "original-wordmark", "plain", "plain-wordmark" ], @@ -2753,56 +7243,67 @@ "plain-wordmark" ] }, - "color": "#fd4f31", + "color": "#7950DD", "aliases": [] }, { - "name": "latex", + "name": "portainer", + "altnames": [], "tags": [ - "latex3", - "latex2e", - "markup", - "tex", - "typesetting-system" + "docker", + "kubernetes", + "orchestrator" ], "versions": { "svg": [ - "original" + "original", + "original-wordmark" ], "font": [ - "original" + "original", + "original-wordmark" ] }, - "color": "#000000", + "color": "#3BBCED", "aliases": [ { "base": "original", "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" } ] }, { - "name": "less", + "name": "postcss", + "altnames": [], "tags": [ + "pre-processor", "css", - "pre-processor" + "framework" ], "versions": { "svg": [ + "original", + "original-wordmark", + "plain", "plain-wordmark" ], "font": [ + "plain", "plain-wordmark" ] }, - "color": "#2a4d80", + "color": "#dd3735", "aliases": [] }, { - "name": "linkedin", + "name": "postgresql", + "altnames": [], "tags": [ - "social", - "auth" + "database" ], "versions": { "svg": [ @@ -2816,39 +7317,41 @@ "plain-wordmark" ] }, - "color": "#0076b2", + "color": "#336791", "aliases": [] }, { - "name": "lua", + "name": "postman", + "altnames": [], "tags": [ - "programming", - "language", - "object-oriented", - "scripting", - "procedural", - "prototype-based", - "functional" + "tool", + "testing" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "original-wordmark" ], "font": [ "plain", "plain-wordmark" ] }, - "color": "#000080", + "color": "#f37036", "aliases": [] }, { - "name": "linux", + "name": "powershell", + "altnames": [ + "ps" + ], "tags": [ - "os" + "command-line", + "shell", + "terminal", + "cli", + "windows", + "cmdlets" ], "versions": { "svg": [ @@ -2859,109 +7362,147 @@ "plain" ] }, - "color": "#000000", + "color": "#1E2A3A", "aliases": [] }, { - "name": "materialui", + "name": "premierepro", + "altnames": [ + "adobepremierepro" + ], "tags": [ - "framework", - "design", - "ui" + "editor", + "video" ], "versions": { "svg": [ - "original", - "plain" + "plain", + "original" ], "font": [ "plain" ] }, - "color": "#1FA6CA", + "color": "#2A0634", "aliases": [] }, { - "name": "matlab", + "name": "prisma", + "altnames": [], "tags": [ - "programming", - "language" + "orm", + "nodejs", + "typescript" ], "versions": { - "svg": [ - "original", - "plain", - "line" - ], - "font": [ - "plain", - "line" - ] + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] }, - "color": "#6dd0c7", - "aliases": [] + "color": "#2D3748", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { - "name": "magento", + "name": "processing", + "altnames": [ + "processingpy" + ], "tags": [ - "php", + "java", + "python", + "android", + "application", + "ide", "framework" ], "versions": { "svg": [ "original", "original-wordmark", - "line" + "plain", + "plain-wordmark" ], "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#000000", + "aliases": [] + }, + { + "name": "prolog", + "altnames": [ + "swi-prolog" + ], + "tags": [ + "programming", + "logic", + "language", + "open-source" + ], + "versions": { + "svg": [ "original", "original-wordmark", - "line" + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" ] }, - "color": "#f26322", + "color": "#F46C30", "aliases": [] }, { - "name": "markdown", + "name": "prometheus", + "altnames": [], "tags": [ - "markup", - "language" + "monitoring", + "observability", + "analysis" ], "versions": { "svg": [ - "original" + "original", + "original-wordmark" ], "font": [ - "original" + "original", + "original-wordmark" ] }, - "color": "#000000", - "aliases": [ - { - "base": "original", - "alias": "plain" - } - ] + "color": "#e75225", + "aliases": [] }, { - "name": "maya", + "name": "protractor", + "altnames": [ + "protractorjs", + "protractortest" + ], "tags": [ - "mel", - "pymel", - "python", - "3d", - "programming", - "vfx", - "graphic", - "graphics", - "game", - "animation" + "framework", + "javascript" ], "versions": { "svg": [ - "original", - "original-wordmark", "plain", "plain-wordmark" ], @@ -2970,61 +7511,85 @@ "plain-wordmark" ] }, - "color": "#149B9A", + "color": "#b7111d", "aliases": [] }, { - "name": "meteor", + "name": "puppeteer", + "altnames": [], "tags": [ - "javascript" + "open-source", + "devtools protocol", + "testing", + "extension" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "plain" ], "font": [ - "plain", - "plain-wordmark" + "plain" ] }, - "color": "#df5052", - "aliases": [] + "color": "#00d8a2", + "aliases": [ + { + "base": "original", + "alias": "original-wordmark" + }, + { + "base": "plain", + "alias": "plain-wordmark" + } + ] }, { - "name": "minitab", - "tags": ["package", "statistics"], + "name": "purescript", + "altnames": [], + "tags": [ + "functional", + "programming", + "javascript" + ], "versions": { - "svg": ["original", "plain"], - "font": ["plain"] + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] }, - "color": "#8dc63f", + "color": "#14161a", "aliases": [] }, { - "name": "mocha", + "name": "putty", + "altnames": [], "tags": [ - "testing" + "ssh", + "server" ], "versions": { "svg": [ + "original", "plain" ], "font": [ "plain" ] }, - "color": "#8d6748", + "color": "#0000fc", "aliases": [] }, { - "name": "modx", + "name": "pycharm", + "altnames": [], "tags": [ - "cms", - "php", - "framework" + "jetbrains", + "editor" ], "versions": { "svg": [ @@ -3038,13 +7603,18 @@ "plain-wordmark" ] }, - "color": "#00decc", + "color": "#21D789", "aliases": [] }, { - "name": "mongodb", + "name": "pypi", + "altnames": [ + "Python Package Index" + ], "tags": [ - "database" + "python", + "package", + "programming" ], "versions": { "svg": [ @@ -3058,51 +7628,58 @@ "plain-wordmark" ] }, - "color": "#4FAA41", + "color": "#3775a9", "aliases": [] }, { - "name": "moodle", + "name": "pyscript", + "altnames": [], "tags": [ - "platform" + "browser", + "python", + "html", + "framework" ], "versions": { "svg": [ - "original", "original-wordmark", - "plain", "plain-wordmark" ], "font": [ - "plain", "plain-wordmark" ] }, - "color": "#F7931E", + "color": "#fda703", "aliases": [] }, { - "name": "msdos", + "name": "pytest", + "altnames": [], "tags": [ - "os" + "python", + "framework", + "testing" ], "versions": { "svg": [ "original", + "original-wordmark", "plain", - "line" + "plain-wordmark" ], "font": [ - "line" + "plain", + "plain-wordmark" ] }, - "color": "#ff0000", + "color": "#009fe3", "aliases": [] }, { - "name": "mysql", + "name": "python", + "altnames": [], "tags": [ - "database", + "programming", "language" ], "versions": { @@ -3117,36 +7694,48 @@ "plain-wordmark" ] }, - "color": "#00618a", + "color": "#ffd845", "aliases": [] }, { - "name": "neo4j", + "name": "pytorch", + "altnames": [], "tags": [ - "database" + "programming", + "framework", + "machine-learning", + "python" ], "versions": { "svg": [ "original", "original-wordmark", - "plain", "plain-wordmark" ], "font": [ - "plain", + "original", "plain-wordmark" ] }, - "color": "#018BFF", - "aliases": [] + "color": "#EE4C2C", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] }, { - "name": "nestjs", + "name": "qodana", + "altnames": [], "tags": [ - "framework" + "jetbrains", + "code quality", + "security" ], "versions": { "svg": [ + "original", "plain", "plain-wordmark" ], @@ -3155,15 +7744,14 @@ "plain-wordmark" ] }, - "color": "#DF234F", + "color": "#ff318c", "aliases": [] }, { - "name": "networkx", + "name": "qt", + "altnames": [], "tags": [ - "graph", - "library", - "python" + "framework" ], "versions": { "svg": [ @@ -3173,76 +7761,60 @@ "original" ] }, - "color": "#2C7FB8", - "aliases": [] + "color": "#41cd52", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] }, { - "name": "nextjs", + "name": "quarkus", + "altnames": [], "tags": [ + "java", "framework" ], "versions": { "svg": [ "original", - "line", "original-wordmark" ], "font": [ - "original", "plain", - "line", - "original-wordmark", "plain-wordmark" ] }, - "color": "#000000", - "aliases": [ - { - "base": "original", - "alias": "plain" - }, - { - "base": "original-wordmark", - "alias": "plain-wordmark" - } - ] + "color": "#4695EB", + "aliases": [] }, { - "name": "nginx", + "name": "quasar", + "altnames": [], "tags": [ - "server" + "framework", + "javascript" ], "versions": { "svg": [ + "original-wordmark", "original" ], "font": [ - "original", - "original-wordmark", - "plain", - "plain-wordmark" + "plain-wordmark", + "plain" ] }, - "color": "#090", - "aliases": [ - { - "base": "original", - "alias": "original-wordmark" - }, - { - "base": "original", - "alias": "plain" - }, - { - "base": "original", - "alias": "plain-wordmark" - } - ] + "color": "#00b4ff", + "aliases": [] }, { - "name": "nixos", + "name": "qwik", + "altnames": [], "tags": [ - "os" + "framework", + "open-source" ], "versions": { "svg": [ @@ -3256,18 +7828,67 @@ "plain-wordmark" ] }, - "color": "#5277C3", + "color": "#18B6F6", "aliases": [] }, { - "name": "nodejs", + "name": "r", + "altnames": [ + "rlang" + ], "tags": [ - "javascript", + "programming", "language" ], "versions": { "svg": [ "original", + "plain" + ], + "font": [ + "original", + "plain" + ] + }, + "color": "#2369bc", + "aliases": [] + }, + { + "name": "rabbitmq", + "altnames": [], + "tags": [ + "message-broker", + "open-source" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain-wordmark" + ], + "font": [ + "original", + "plain-wordmark" + ] + }, + "color": "#ff6600", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, + { + "name": "rails", + "altnames": [ + "rubyonrails" + ], + "tags": [ + "framework" + ], + "versions": { + "svg": [ "original-wordmark", "plain", "plain-wordmark" @@ -3277,72 +7898,91 @@ "plain-wordmark" ] }, - "color": "#83CD29", + "color": "#CC0000", "aliases": [] }, { - "name": "nodewebkit", - "tags": [], + "name": "rancher", + "altnames": [], + "tags": [ + "kubernetes", + "orchestrator" + ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark", - "line", - "line-wordmark" + "original-wordmark" ], "font": [ - "plain", - "plain-wordmark", - "line", - "line-wordmark" + "original", + "original-wordmark" ] }, - "color": "#3d3b47", - "aliases": [] + "color": "#2453FF", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { - "name": "npm", + "name": "raspberrypi", + "altnames": [ + "rpi" + ], "tags": [ - "package", - "manager" + "arm", + "computer" ], "versions": { "svg": [ - "original-wordmark" + "original", + "original-wordmark", + "line", + "line-wordmark" ], "font": [ - "original-wordmark" + "line", + "line-wordmark" ] }, - "color": "#cb3837", + "color": "#c51850", "aliases": [] }, { - "name": "nuget", + "name": "reach", + "altnames": [ + "Reach Lang" + ], "tags": [ - "package", - "manager" + "web3", + "blockchain", + "development" ], "versions": { "svg": [ "original", - "original-wordmark" + "plain" ], "font": [ - "original", - "original-wordmark" + "plain" ] }, - "color": "#004880", + "color": "#6AC6E7", "aliases": [] }, { - "name": "numpy", + "name": "react", + "altnames": [ + "reactjs" + ], "tags": [ - "library", - "python" + "framework" ], "versions": { "svg": [ @@ -3354,80 +7994,114 @@ "original-wordmark" ] }, - "color": "#4DABCF", + "color": "#61dafb", "aliases": [ { "base": "original", "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" } ] }, { - "name": "nuxtjs", + "name": "reactbootstrap", + "altnames": [ + "React-Bootstrap", + "react bootstrap" + ], "tags": [ - "js", - "javascript", "framework", + "library", "frontend", - "vuejs" + "reactjs", + "javascript" ], "versions": { "svg": [ - "original", - "original-wordmark", - "plain", - "plain-wordmark" + "original" ], "font": [ - "plain", - "plain-wordmark" + "original" ] }, - "color": "#00c48d", - "aliases": [] + "color": "#41e0fd", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] }, { - "name": "objectivec", + "name": "reactnavigation", + "altnames": [], "tags": [ - "programming", - "language" + "routing", + "navigation", + "react native", + "app", + "open-source" ], "versions": { "svg": [ - "plain" + "original" ], "font": [ - "plain" + "original" ] }, - "color": "#0b5a9d", - "aliases": [] + "color": "#7b61c1", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] }, { - "name": "opera", + "name": "readthedocs", + "altnames": [ + "Read The Docs" + ], "tags": [ - "browser" + "documentation", + "python", + "open-source" ], "versions": { "svg": [ "original", "original-wordmark", - "plain", - "plain-wordmark" + "line" ], "font": [ - "plain", - "plain-wordmark" + "original", + "original-wordmark", + "line" ] }, - "color": "#f7192d", - "aliases": [] + "color": "#32322A", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { - "name": "ocaml", + "name": "realm", + "altnames": [], "tags": [ - "programming", - "language" + "sql", + "database", + "cloud" ], "versions": { "svg": [ @@ -3441,16 +8115,17 @@ "plain-wordmark" ] }, - "color": "#F18803", + "color": "#6e60f9", "aliases": [] }, - { - "name": "openal", + { + "name": "rect", + "altnames": [ + "rectlang" + ], "tags": [ - "library", - "audio", - "game", - "3d" + "programming", + "language" ], "versions": { "svg": [ @@ -3461,36 +8136,39 @@ "plain" ] }, - "color": "#7e000d", + "color": "#262626", "aliases": [] }, - { - "name": "opengl", + { + "name": "redhat", + "altnames": [], "tags": [ - "library", - "graphics", - "game", - "3d" + "server", + "linux" ], "versions": { "svg": [ "original", - "plain" + "original-wordmark", + "plain", + "plain-wordmark" ], "font": [ - "plain" + "plain", + "plain-wordmark" ] }, - "color": "#5586a4", + "color": "#e93442", "aliases": [] }, { - "name": "opensuse", + "name": "redis", + "altnames": [ + "remotedictionaryserver" + ], "tags": [ - "linux", - "distribuition", - "desktop" - ], + "server" + ], "versions": { "svg": [ "original", @@ -3501,15 +8179,18 @@ "font": [ "plain", "plain-wordmark" - ] + ] }, - "color": "#73ba25", - "aliases": [] + "color": "#d82c20", + "aliases": [] }, { - "name": "oracle", + "name": "redux", + "altnames": [ + "reduxjs" + ], "tags": [ - "database" + "framework" ], "versions": { "svg": [ @@ -3519,7 +8200,7 @@ "original" ] }, - "color": "#EA1B22", + "color": "#764abc", "aliases": [ { "base": "original", @@ -3528,38 +8209,15 @@ ] }, { - "name": "pandas", - "tags": [ - "library", - "python" + "name": "renpy", + "altnames": [ + "Ren'Py" ], - "versions": { - "svg": [ - "original", - "original-wordmark" - ], - "font": [ - "original", - "original-wordmark" - ] - }, - "color": "#130754", - "aliases": [ - { - "base": "original", - "alias": "plain" - }, - { - "base": "original-wordmark", - "alias": "plain-wordmark" - } - ] - }, - { - "name": "perl", "tags": [ "programming", - "language" + "game-engine", + "engine", + "python" ], "versions": { "svg": [ @@ -3570,164 +8228,159 @@ "plain" ] }, - "color": "#212177", - "aliases": [] - }, - { - "name": "phalcon", - "tags": ["php", "framework"], - "versions": { - "svg": ["original", "plain"], - "font": ["plain"] - }, - "color": "#76c39b", + "color": "#ff7f7f", "aliases": [] }, { - "name": "photoshop", + "name": "rider", + "altnames": [], "tags": [ + "jetbrains", + "ide", "editor", - "graphic" + "dotnet" ], "versions": { "svg": [ + "original", + "original-wordmark", "plain", - "line" + "plain-wordmark" ], "font": [ "plain", - "line" - ] - }, - "color": "#80b5e2", - "aliases": [] - }, - { - "name": "php", - "tags": [ - "programming", - "language" - ], - "versions": { - "svg": [ - "original", - "plain" - ], - "font": [ - "plain" + "plain-wordmark" ] }, - "color": "#6181b6", + "color": "#dd1265", "aliases": [] }, { - "name": "phpstorm", + "name": "rocksdb", + "altnames": [], "tags": [ - "editor" + "database" ], "versions": { "svg": [ - "original", - "original-wordmark", - "plain", - "plain-wordmark" + "plain" ], "font": [ - "plain", - "plain-wordmark" + "plain" ] }, - "color": "#5058A6", + "color": "#f5be17", "aliases": [] }, { - "name": "podman", + "name": "rollup", + "altnames": [ + "rollupjs", + "rollup.js" + ], "tags": [ - "container", - "pods", - "docker" + "bundler", + "build", + "javascript" ], "versions": { "svg": [ "original", "original-wordmark", "plain", - "plain-wordmark" + "plain-wordmark", + "line", + "line-wordmark" ], "font": [ "plain", - "plain-wordmark" + "plain-wordmark", + "line", + "line-wordmark" ] }, - "color": "#872b9e", + "color": "#ff3333", "aliases": [] }, { - "name": "polygon", + "name": "ros", + "altnames": [ + "robotoperatingsystem" + ], "tags": [ - "ethereum", - "erc20", - "blockchain" + "robotics" ], "versions": { "svg": [ "original", - "plain" + "original-wordmark" ], "font": [ - "plain" + "original", + "original-wordmark" ] }, - "color": "#38285B", + "color": "#21304c", "aliases": [] }, { - "name": "postgresql", + "name": "rspec", + "altnames": [], "tags": [ - "database" + "ruby", + "framework", + "testing" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "original-wordmark" ], "font": [ - "plain", - "plain-wordmark" + "original", + "original-wordmark" ] }, - "color": "#336791", - "aliases": [] + "color": "#6de1fa", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { - "name": "premierepro", + "name": "rstudio", + "altnames": [], "tags": [ "editor", - "video" + "package", + "statistics" ], "versions": { "svg": [ - "plain", - "original" + "original", + "plain" ], "font": [ "plain" ] }, - "color": "#2A0634", + "color": "#75aadb", "aliases": [] }, { - "name": "processing", + "name": "ruby", + "altnames": [ + "rubylang" + ], "tags": [ - "java", - "python", - "android", - "application", - "ide", - "framework" + "programming", + "language" ], "versions": { "svg": [ @@ -3741,17 +8394,20 @@ "plain-wordmark" ] }, - "color": "#000000", + "color": "#d91404", "aliases": [] }, { - "name": "protractor", + "name": "rubymine", + "altnames": [], "tags": [ - "framework", - "javascript" + "jetbrains", + "editor" ], "versions": { "svg": [ + "original", + "original-wordmark", "plain", "plain-wordmark" ], @@ -3760,88 +8416,111 @@ "plain-wordmark" ] }, - "color": "#b7111d", + "color": "#FC801D", "aliases": [] }, - { - "name": "putty", + { + "name": "rust", + "altnames": [ + "rustlang" + ], "tags": [ - "ssh", - "server" + "programming", + "language" ], "versions": { "svg": [ - "original", "plain" ], "font": [ "plain" ] }, - "color": "#0000fc", + "color": "#000000", "aliases": [] }, { - "name": "pycharm", + "name": "safari", + "altnames": [ + "applesafari" + ], "tags": [ - "editor" + "browser" ], "versions": { "svg": [ "original", "original-wordmark", "plain", - "plain-wordmark" + "plain-wordmark", + "line-wordmark", + "line" ], "font": [ "plain", - "plain-wordmark" + "plain-wordmark", + "line-wordmark", + "line" ] }, - "color": "#4D8548", + "color": "#1B88CA", "aliases": [] }, { - "name": "python", + "name": "salesforce", + "altnames": [], "tags": [ - "programming", - "language" + "platform", + "ecommerce" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "plain" ], "font": [ - "plain", - "plain-wordmark" + "plain" ] }, - "color": "#ffd845", + "color": "#00a1e0", "aliases": [] }, { - "name": "pytorch", + "name": "sanity", + "altnames": [], "tags": [ - "programming", - "framework", - "machine-learning", - "python" + "CMS" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain-wordmark" + "plain" ], "font": [ - "original", - "plain-wordmark" + "plain" ] }, - "color": "#EE4C2C", + "color": "#F03E2F", + "aliases": [] + }, + { + "name": "sass", + "altnames": [ + "scss" + ], + "tags": [ + "pre-processor", + "css" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "original" + ] + }, + "color": "#cc6699", "aliases": [ { "base": "original", @@ -3850,19 +8529,14 @@ ] }, { - "name": "raspberrypi", - "tags": ["arm", "computer"], - "versions": { - "svg": ["original", "original-wordmark", "line", "line-wordmark"], - "font": ["line", "line-wordmark"] - }, - "color": "#c51850", - "aliases": [] - }, - { - "name": "phoenix", + "name": "scala", + "altnames": [ + "scalalang" + ], "tags": [ - "framework" + "programming", + "language", + "jvm" ], "versions": { "svg": [ @@ -3876,35 +8550,80 @@ "plain-wordmark" ] }, - "color": "#F15524", + "color": "#de3423", "aliases": [] }, { - "name": "qt", + "name": "scalingo", + "altnames": [], "tags": [ - "framework" + "cloud", + "platform", + "hosting" ], "versions": { "svg": [ - "original" + "original", + "original-wordmark" ], "font": [ - "original" + "original", + "original-wordmark" ] }, - "color": "#41cd52", + "color": "#173aee", + "aliases": [] + }, + { + "name": "scikitlearn", + "altnames": [ + "scikit-learn", + "scikit", + "sklearn" + ], + "tags": [ + "machine-learning", + "python", + "tool", + "library" + ], + "versions": { + "svg": [ + "original", + "plain", + "line" + ], + "font": [ + "plain", + "line" + ] + }, + "color": "#f89939", "aliases": [ { "base": "original", - "alias": "plain" + "alias": "original-wordmark" + }, + { + "base": "plain", + "alias": "plain-wordmark" + }, + { + "base": "line", + "alias": "line-wordmark" } ] }, { - "name": "r", + "name": "sdl", + "altnames": [ + "simpledirectmedialayer" + ], "tags": [ - "programming", - "language" + "library", + "cross-platform", + "multimedia", + "game" ], "versions": { "svg": [ @@ -3912,36 +8631,46 @@ "plain" ], "font": [ - "original", "plain" ] }, - "color": "#2369bc", + "color": "#173354", "aliases": [] }, { - "name": "rails", + "name": "selenium", + "altnames": [], "tags": [ - "framework" + "webdrive", + "automation" ], "versions": { "svg": [ - "original-wordmark", - "plain", - "plain-wordmark" + "original" ], "font": [ - "plain", - "plain-wordmark" + "original" ] }, - "color": "#CC0000", - "aliases": [] + "color": "#CF0A2C", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] }, { - "name": "react", + "name": "sema", + "altnames": [ + "Sema Software" + ], "tags": [ - "framework" + "software", + "development", + "company", + "code-review", + "open-source" ], "versions": { "svg": [ @@ -3953,7 +8682,7 @@ "original-wordmark" ] }, - "color": "#61dafb", + "color": "#000", "aliases": [ { "base": "original", @@ -3966,10 +8695,11 @@ ] }, { - "name": "redhat", + "name": "reactrouter", + "altnames": [], "tags": [ - "server", - "linux" + "framework", + "react" ], "versions": { "svg": [ @@ -3983,13 +8713,17 @@ "plain-wordmark" ] }, - "color": "#e93442", + "color": "#f44250", "aliases": [] }, { - "name": "redis", + "name": "sequelize", + "altnames": [ + "sequelizejs" + ], "tags": [ - "server" + "database", + "language" ], "versions": { "svg": [ @@ -4003,71 +8737,85 @@ "plain-wordmark" ] }, - "color": "#d82c20", + "color": "#3b4b72", "aliases": [] }, { - "name": "redux", + "name": "shopware", + "altnames": [], "tags": [ - "framework" + "cloud", + "platform" ], "versions": { "svg": [ - "original" + "original", + "original-wordmark" ], "font": [ - "original" + "original", + "original-wordmark" ] }, - "color": "#764abc", - "aliases": [ - { - "base": "original", - "alias": "plain" - } - ] + "color": "#179eff", + "aliases": [] }, { - "name": "rocksdb", + "name": "shotgrid", + "altnames": [], "tags": [ - "database" + "web-application", + "autodesk", + "project-management", + "pipeline", + "production-tool", + "production-tracking" ], "versions": { "svg": [ + "original", + "original-wordmark", "plain" ], "font": [ - "plain" + "plain", + "original-wordmark" ] }, - "color": "#f5be17", - "aliases": [] + "color": "#000000", + "aliases": [ + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { - "name": "ruby", + "name": "sketch", + "altnames": [], "tags": [ - "programming", - "language" + "application" ], "versions": { "svg": [ "original", "original-wordmark", - "plain", - "plain-wordmark" + "line", + "line-wordmark" ], "font": [ - "plain", - "plain-wordmark" + "line", + "line-wordmark" ] }, - "color": "#d91404", + "color": "#fdad00", "aliases": [] }, { - "name": "rubymine", + "name": "slack", + "altnames": [], "tags": [ - "editor" + "chat" ], "versions": { "svg": [ @@ -4081,55 +8829,48 @@ "plain-wordmark" ] }, - "color": "#C12C4C", - "aliases": [] - }, - { - "name": "rust", - "tags": [ - "programming", - "language" - ], - "versions": { - "svg": [ - "plain" - ], - "font": [ - "plain" - ] - }, - "color": "#000000", + "color": "#2D333A", "aliases": [] }, { - "name": "safari", + "name": "socketio", + "altnames": [], "tags": [ - "browser" + "library", + "networking", + "websockets" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark", - "line-wordmark", - "line" + "original-wordmark" ], "font": [ - "plain", - "plain-wordmark", - "line-wordmark", - "line" + "original", + "original-wordmark" ] }, - "color": "#1B88CA", - "aliases": [] + "color": "#010101", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { - "name": "salesforce", + "name": "solidity", + "altnames": [ + "soliditylang" + ], "tags": [ - "platform", - "ecommerce" + "programming", + "language", + "blockchain" ], "versions": { "svg": [ @@ -4140,54 +8881,51 @@ "plain" ] }, - "color": "#00a1e0", + "color": "#383838", "aliases": [] }, { - "name": "sdl", + "name": "solidjs", + "altnames": [], "tags": [ - "library", - "cross-platform", - "multimedia", - "game" + "javascript", + "framework", + "frontend" ], "versions": { - "svg": [ - "original", - "plain" - ], - "font": [ - "plain" - ] - }, - "color": "#173354", - "aliases": [] - }, - { - "name": "rstudio", - "tags": ["editor", "package", "statistics"], - "versions": { - "svg": ["original", "plain"], - "font": ["plain"] + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] }, - "color": "#75aadb", + "color": "#2c4f7c", "aliases": [] }, { - "name": "sass", + "name": "sonarqube", + "altnames": [ + "sonar" + ], "tags": [ - "pre-processor", - "css" + "tool", + "security" ], "versions": { "svg": [ - "original" + "original", + "original-wordmark" ], "font": [ "original" ] }, - "color": "#cc6699", + "color": "#4e9bcd", "aliases": [ { "base": "original", @@ -4196,53 +8934,65 @@ ] }, { - "name": "scala", + "name": "sourcetree", + "altnames": [], "tags": [ - "programming", - "language" + "version-control" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "original-wordmark" ], "font": [ - "plain", - "plain-wordmark" + "original", + "original-wordmark" ] }, - "color": "#de3423", - "aliases": [] + "color": "#205081", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { - "name": "selenium", + "name": "splunk", + "altnames": [], "tags": [ - "webdrive", - "automation" + "platform", + "data", + "log", + "monitoring" ], "versions": { "svg": [ - "original" + "original-wordmark" ], "font": [ - "original" + "original-wordmark" ] }, - "color": "#CF0A2C", + "color": "#0C1724", "aliases": [ { - "base": "original", - "alias": "plain" + "base": "original-wordmark", + "alias": "plain-wordmark" } ] }, { - "name": "sequelize", + "name": "spring", + "altnames": [ + "springframework" + ], "tags": [ - "database", - "language" + "framework" ], "versions": { "svg": [ @@ -4256,46 +9006,36 @@ "plain-wordmark" ] }, - "color": "#3b4b72", - "aliases": [ - { - "base": "plain", - "alias": "plain" - }, - { - "base": "plain-wordmark", - "alias": "plain-wordmark" - } - ] + "color": "#5FB832", + "aliases": [] }, { - "name": "shopware", + "name": "spss", + "altnames": [ + "ibmspss" + ], "tags": [ - "cloud", - "platform" + "package", + "statistics" ], "versions": { "svg": [ "original", - "original-wordmark" + "plain" ], "font": [ - "original", - "original-wordmark" + "plain" ] }, - "color": "#179eff", + "color": "#cc1e4c", "aliases": [] }, { - "name": "shotgrid", - "tags": [ - "web-application", - "autodesk", - "project-management", - "pipeline", - "production-tool", - "production-tracking" + "name": "sqlalchemy", + "altnames": [], + "tags": [ + "python", + "orm" ], "versions": { "svg": [ @@ -4308,7 +9048,7 @@ "original-wordmark" ] }, - "color": "#000000", + "color": "#333333", "aliases": [ { "base": "original-wordmark", @@ -4317,29 +9057,30 @@ ] }, { - "name": "sketch", + "name": "sqldeveloper", + "altnames": [], "tags": [ - "application" + "tool", + "database" ], "versions": { "svg": [ - "original", - "original-wordmark", - "line", - "line-wordmark" + "original" ], "font": [ - "line", - "line-wordmark" + "plain" ] }, - "color": "#fdad00", + "color": "#adadad", "aliases": [] }, { - "name": "slack", + "name": "sqlite", + "altnames": [], "tags": [ - "chat" + "sql", + "database", + "db" ], "versions": { "svg": [ @@ -4353,15 +9094,16 @@ "plain-wordmark" ] }, - "color": "#2D333A", + "color": "#0f80cc", "aliases": [] }, { - "name": "socketio", + "name": "ssh", + "altnames": [ + "secureshell" + ], "tags": [ - "library", - "networking", - "websockets" + "security" ], "versions": { "svg": [ @@ -4373,7 +9115,7 @@ "original-wordmark" ] }, - "color": "#010101", + "color": "#231F20", "aliases": [ { "base": "original", @@ -4386,55 +9128,69 @@ ] }, { - "name": "solidity", + "name": "stackoverflow", + "altnames": [ + "Stack Overflow" + ], "tags": [ - "programming", - "language", - "blockchain" + "website", + "development", + "community" ], "versions": { "svg": [ "original", - "plain" + "original-wordmark", + "plain", + "plain-wordmark", + "line", + "line-wordmark" ], "font": [ - "plain" + "plain", + "plain-wordmark", + "line", + "line-wordmark" ] }, - "color": "#383838", + "color": "#F58025", "aliases": [] }, { - "name": "sourcetree", + "name": "stata", + "altnames": [], "tags": [ - "version-control" + "analysis", + "data", + "data-science", + "software", + "statistics" ], "versions": { "svg": [ - "original", "original-wordmark" ], "font": [ - "original", "original-wordmark" ] }, - "color": "#205081", + "color": "#195f92", "aliases": [ - { - "base": "original", - "alias": "plain" - }, - { - "base": "original-wordmark", - "alias": "plain-wordmark" - } + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } ] }, { - "name": "spring", + "name": "storybook", + "altnames": [ + "storybookjs" + ], "tags": [ - "framework" + "framework", + "documentation", + "ui" ], "versions": { "svg": [ @@ -4448,68 +9204,57 @@ "plain-wordmark" ] }, - "color": "#5FB832", - "aliases": [] - }, - { - "name": "spss", - "tags": ["package", "statistics"], - "versions": { - "svg": ["original", "plain"], - "font": ["plain"] - }, - "color": "#cc1e4c", + "color": "#FF4785", "aliases": [] }, { - "name": "sqlalchemy", + "name": "streamlit", + "altnames": [], "tags": [ "python", - "orm" + "machine-learning", + "data-science" ], "versions": { "svg": [ "original", "original-wordmark", - "plain" + "plain", + "plain-wordmark" ], "font": [ "plain", - "original-wordmark" + "plain-wordmark" ] }, - "color": "#333333", - "aliases": [ - { - "base": "original-wordmark", - "alias": "plain-wordmark" - } - ] + "color": "#7d353b", + "aliases": [] }, { - "name": "sqlite", + "name": "stylus", + "altnames": [ + "styluslang" + ], "tags": [ - "sql", - "database", - "db" + "css", + "pre-processor" ], "versions": { "svg": [ - "original", - "original-wordmark", - "plain", - "plain-wordmark" + "original" ], - "font": [ - "plain", - "plain-wordmark" - ] + "font": [ + "original" + ] }, - "color": "#0f80cc", + "color": "#333333", "aliases": [] }, { "name": "subversion", + "altnames": [ + "apachesubversion" + ], "tags": [ "svn", "version" @@ -4532,12 +9277,18 @@ ] }, { - "name": "microsoftsqlserver", + "name": "supabase", + "altnames": [], "tags": [ - "database" + "authentication", + "cloud-computing-platform", + "database", + "storage" ], "versions": { "svg": [ + "original", + "original-wordmark", "plain", "plain-wordmark" ], @@ -4546,58 +9297,43 @@ "plain-wordmark" ] }, - "color": "#909DAA", + "color": "#3ecf8e", "aliases": [] }, { - "name": "ssh", - "tags": [ - "security" + "name": "svelte", + "altnames": [ + "sveltejs" ], - "versions": { - "svg": [ - "original", - "original-wordmark" - ], - "font": [ - "original", - "original-wordmark" - ] - }, - "color": "#231F20", - "aliases": [ - { - "base": "original", - "alias": "plain" - }, - { - "base": "original-wordmark", - "alias": "plain-wordmark" - } - ] - }, - { - "name": "stylus", "tags": [ - "css", - "pre-processor" + "javascript", + "framework", + "compiler" ], "versions": { "svg": [ - "original" + "original", + "original-wordmark", + "plain", + "plain-wordmark" ], "font": [ - "original" + "plain", + "plain-wordmark" ] }, - "color": "#333333", + "color": "#ff3e00", "aliases": [] }, { - "name": "svelte", + "name": "swagger", + "altnames": [ + "Swagger" + ], "tags": [ - "javascript", - "framework" + "development", + "software", + "tool" ], "versions": { "svg": [ @@ -4611,11 +9347,12 @@ "plain-wordmark" ] }, - "color": "#ff3e00", + "color": "#85ea2d", "aliases": [] }, { "name": "swift", + "altnames": [], "tags": [ "language" ], @@ -4636,8 +9373,10 @@ }, { "name": "symfony", + "altnames": [], "tags": [ - "framework" + "framework", + "php" ], "versions": { "svg": [ @@ -4662,76 +9401,142 @@ ] }, { - "name": "storybook", + "name": "tailwindcss", + "altnames": [], + "tags": [ + "css", + "framework" + ], + "versions": { + "svg": [ + "original-wordmark", + "original", + "plain-wordmark" + ], + "font": [ + "original", + "plain-wordmark" + ] + }, + "color": "#38bdf8", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, + { + "name": "tauri", + "altnames": [], "tags": [ + "nodejs", + "rust", + "desktop", "framework", - "documentation", - "ui" + "programming" ], "versions": { - "svg": [ - "original", - "original-wordmark", - "plain", - "plain-wordmark" - ], - "font": [ - "plain", - "plain-wordmark" - ] + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] }, - "color": "#FF4785", + "color": "#FFC131", "aliases": [] }, { - "name": "tailwindcss", + "name": "tensorflow", + "altnames": [], "tags": [ - "css", - "framework" + "library", + "machine-learning", + "deep-learning" ], "versions": { "svg": [ + "original", "original-wordmark", - "plain" + "line", + "line-wordmark" + ], + "font": [ + "original", + "original-wordmark", + "line", + "line-wordmark" + ] + }, + "color": "#ff6f00", + "aliases": [] + }, + { + "name": "terraform", + "altnames": [], + "tags": [ + "deployment", + "architecture", + "automation" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" ], "font": [ - "original-wordmark", - "plain" + "plain", + "plain-wordmark" ] }, - "color": "#2298BD", + "color": "#5c4ee5", "aliases": [] }, { - "name": "tensorflow", + "name": "tex", + "altnames": [], "tags": [ - "library", - "machine-learning", - "deep-learning" + "typesetting-system", + "markup", + "tex" ], "versions": { "svg": [ - "original", - "original-wordmark", - "line", - "line-wordmark" + "original" ], "font": [ - "original", - "original-wordmark", - "line", - "line-wordmark" + "original" ] }, - "color": "#ff6f00", - "aliases": [] + "color": "#000000", + "aliases": [ + { + "base": "original", + "alias": "original-wordmark" + }, + { + "base": "original", + "alias": "plain" + }, + { + "base": "original", + "alias": "plain-wordmark" + } + ] }, { - "name": "terraform", + "name": "thealgorithms", + "altnames": [], "tags": [ - "deployment", - "architecture", - "automation" + "organization", + "algorithms" ], "versions": { "svg": [ @@ -4745,11 +9550,12 @@ "plain-wordmark" ] }, - "color": "#5c4ee5", + "color": "#00BCB4", "aliases": [] }, { "name": "threejs", + "altnames": [], "tags": [ "javascript", "framework" @@ -4767,8 +9573,35 @@ "color": "#000000", "aliases": [] }, + { + "name": "titaniumsdk", + "altnames": [], + "tags": [ + "app", + "mobile", + "javascript", + "cross-platform", + "sdk" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "original" + ] + }, + "color": "#bd222b", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, { "name": "tomcat", + "altnames": [], "tags": [ "server" ], @@ -4787,27 +9620,31 @@ "color": "#D1A41A", "aliases": [] }, - { + { "name": "tortoisegit", + "altnames": [], "tags": [ "git" ], "versions": { "svg": [ "original", - "plain", - "line" + "plain", + "line" ], "font": [ "plain", "line" ] }, - "color": "#4a8fb5", + "color": "#4b8eb4", "aliases": [] }, { "name": "towergit", + "altnames": [ + "towergitclient" + ], "tags": [ "git" ], @@ -4826,8 +9663,65 @@ "color": "#d18900", "aliases": [] }, + { + "name": "traefikmesh", + "altnames": [], + "tags": [ + "mesh", + "kubernetes" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "plain-wordmark", + "line", + "line-wordmark" + ] + }, + "color": "#9D0FB0", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, + { + "name": "traefikproxy", + "altnames": [], + "tags": [ + "proxy", + "router" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "plain-wordmark", + "line", + "line-wordmark" + ] + }, + "color": "#24a1c1", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, { "name": "travis", + "altnames": [ + "travisci" + ], "tags": [ "platform", "integration" @@ -4846,15 +9740,16 @@ "aliases": [] }, { - "name": "thealgorithms", + "name": "trello", + "altnames": [ + "atlassiantrello" + ], "tags": [ - "organization", - "algorithms" + "platform", + "organize" ], "versions": { "svg": [ - "original", - "original-wordmark", "plain", "plain-wordmark" ], @@ -4863,17 +9758,24 @@ "plain-wordmark" ] }, - "color": "#00BCB4", + "color": "#23719f", "aliases": [] }, { - "name": "trello", + "name": "trpc", + "altnames": [ + "Typescript Remote Procedure Call" + ], "tags": [ - "platform", - "organize" + "typescript", + "javascript", + "typesafe", + "api" ], "versions": { "svg": [ + "original", + "original-wordmark", "plain", "plain-wordmark" ], @@ -4882,11 +9784,12 @@ "plain-wordmark" ] }, - "color": "#23719f", + "color": "#398ccb", "aliases": [] }, { "name": "twitter", + "altnames": [], "tags": [ "auth" ], @@ -4898,19 +9801,24 @@ "original" ] }, - "color": "#1da1f2", + "color": "#1d9bf0", "aliases": [ - { - "base": "original", - "alias": "plain" - } + { + "base": "original", + "alias": "plain" + } ] }, { "name": "typescript", + "altnames": [ + "ts" + ], "tags": [ "programming", - "transpiler" + "transpiler", + "javascript", + "language" ], "versions": { "svg": [ @@ -4931,6 +9839,7 @@ }, { "name": "typo3", + "altnames": [], "tags": [ "cms", "php" @@ -4952,28 +9861,60 @@ }, { "name": "ubuntu", + "altnames": [], "tags": [ - "os" + "os", + "open-source", + "linux" ], "versions": { "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ "plain", "plain-wordmark" + ] + }, + "color": "#e95420", + "aliases": [] + }, + { + "name": "unifiedmodelinglanguage", + "altnames": [ + "uml", + "unified modeling language" + ], + "tags": [ + "modeling", + "design", + "language" + ], + "versions": { + "svg": [ + "original", + "original-wordmark" ], "font": [ "plain", "plain-wordmark" ] }, - "color": "#dd4814", + "color": "#452e7f", "aliases": [] }, { "name": "unity", + "altnames": [], "tags": [ + "C#", + "c-sharp", "csharp", "engine", - "game" + "game-engine" ], "versions": { "svg": [ @@ -4981,15 +9922,18 @@ "original-wordmark" ], "font": [ - "original", - "original-wordmark" + "plain", + "plain-wordmark", + "line", + "line-wordmark" ] }, - "color": "#000000", + "color": "#4d4d4d", "aliases": [] }, { "name": "unix", + "altnames": [], "tags": [ "os" ], @@ -5006,10 +9950,11 @@ }, { "name": "unrealengine", + "altnames": [], "tags": [ "c++", "engine", - "game" + "game-engine" ], "versions": { "svg": [ @@ -5035,6 +9980,9 @@ }, { "name": "uwsgi", + "altnames": [ + "uwebservergatewayinterface" + ], "tags": [ "hosting" ], @@ -5051,29 +9999,16 @@ "aliases": [] }, { - "name": "vagrant", - "tags": [ - "platform" + "name": "v8", + "altnames": [ + "v8 engine" ], - "versions": { - "svg": [ - "original", - "original-wordmark", - "plain", - "plain-wordmark" - ], - "font": [ - "plain", - "plain-wordmark" - ] - }, - "color": "#127eff", - "aliases": [] - }, - { - "name": "vim", "tags": [ - "editor" + "javascript-runtime", + "framework", + "javascript", + "web", + "cpp" ], "versions": { "svg": [ @@ -5084,16 +10019,28 @@ "plain" ] }, - "color": "#179a33", - "aliases": [] + "color": "#00C4CC", + "aliases": [ + { + "base": "original", + "alias": "original-wordmark" + }, + { + "base": "plain", + "alias": "plain-wordmark" + } + ] }, { - "name": "visualstudio", + "name": "vagrant", + "altnames": [], "tags": [ - "editor" + "platform" ], "versions": { "svg": [ + "original", + "original-wordmark", "plain", "plain-wordmark" ], @@ -5102,138 +10049,144 @@ "plain-wordmark" ] }, - "color": "#68217A", + "color": "#127eff", "aliases": [] }, { - "name": "vuejs", + "name": "vala", + "altnames": [], "tags": [ - "framework" + "programming", + "language" ], "versions": { "svg": [ "original", "original-wordmark", "plain", - "plain-wordmark", - "line", - "line-wordmark" + "plain-wordmark" ], "font": [ "plain", - "plain-wordmark", - "line", - "line-wordmark" - ] - }, - "color": "#41B883", - "aliases": [] - }, - { - "name": "vuestorefront", - "tags": [ - "framework" - ], - "versions": { - "svg": [ - "original", - "plain" - ], - "font": [ - "plain" + "plain-wordmark" ] }, - "color": "#5ecf7b", + "color": "#a56de2", "aliases": [] }, { - "name": "vscode", + "name": "vault", + "altnames": [ + "HashiCorp Vault" + ], "tags": [ - "editor", - "ide" + "tool", + "security", + "infrastructure" ], "versions": { "svg": [ "original", "original-wordmark", - "plain", "plain-wordmark" ], "font": [ - "plain", + "original", "plain-wordmark" ] }, - "color": "#3C99D4", - "aliases": [] + "color": "#ffd814", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] }, { - "name": "webflow", + "name": "vercel", + "altnames": [], "tags": [ - "cms", - "ecommerce" + "hosting", + "platform", + "deployment", + "git" ], "versions": { "svg": [ - "original" + "original", + "original-wordmark" ], "font": [ - "original" + "original", + "original-wordmark" ] }, - "color": "#4353ff", - "aliases": [] + "color": "#000", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { - "name": "weblate", + "name": "vertx", + "altnames": [ + "eclipsevertx" + ], "tags": [ - "localization" + "sdk", + "java", + "framework" ], "versions": { "svg": [ "original", - "plain", - "original-wordmark", - "plain-wordmark" + "original-wordmark" ], "font": [ - "plain", - "plain-wordmark" + "original", + "original-wordmark" ] }, - "color": "#2eccaa", + "color": "#623c94", "aliases": [] }, { - "name": "webpack", + "name": "vim", + "altnames": [ + "viimproved" + ], "tags": [ - "package", - "manager" + "editor" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "plain" ], "font": [ - "plain", - "plain-wordmark" + "plain" ] }, - "color": "#1C78C0", + "color": "#179a33", "aliases": [] }, { - "name": "webstorm", + "name": "visualstudio", + "altnames": [ + "vs" + ], "tags": [ "editor" ], "versions": { "svg": [ - "original", - "original-wordmark", "plain", "plain-wordmark" ], @@ -5242,13 +10195,16 @@ "plain-wordmark" ] }, - "color": "#2788B5", + "color": "#68217A", "aliases": [] }, { - "name": "windows8", + "name": "vite", + "altnames": [], "tags": [ - "os" + "web3", + "blockchain", + "DAG" ], "versions": { "svg": [ @@ -5260,7 +10216,7 @@ "original-wordmark" ] }, - "color": "#00adef", + "color": "#006BFF", "aliases": [ { "base": "original", @@ -5273,33 +10229,41 @@ ] }, { - "name": "woocommerce", + "name": "vitejs", + "altnames": [ + "vite.js", + "Vite" + ], "tags": [ - "ecommerce" + "javascript", + "build", + "compiler", + "esbuild" ], "versions": { "svg": [ "original", - "plain", - "original-wordmark", - "plain-wordmark" + "plain" ], "font": [ - "plain", - "plain-wordmark" + "plain" ] }, - "color": "#7f54b3", + "color": "#ffdd35", "aliases": [] }, { - "name": "wordpress", + "name": "vitess", + "altnames": [], "tags": [ - "cms" + "sharding", + "database", + "mysql" ], "versions": { "svg": [ "original", + "original-wordmark", "plain", "plain-wordmark" ], @@ -5308,142 +10272,163 @@ "plain-wordmark" ] }, - "color": "#494949", + "color": "#f16827", "aliases": [] }, { - "name": "xamarin", + "name": "visualbasic", "tags": [ - "application", - "programming", - "editor", - "ide", - "ios", - "mobile", - "apple", - "android", - "windows" + "language" ], "versions": { "svg": [ - "original", - "original-wordmark" + "plain" ], "font": [ - "original", - "original-wordmark" + "plain" ] }, - "color": "#3498DB", - "aliases": [ - { - "base":"original", - "alias":"plain" - }, - { - "base":"original-wordmark", - "alias":"plain-wordmark" - } - ] + "color": "#880b8a", + "aliases": [] }, { - "name": "xcode", + "name": "vscode", + "altnames": [ + "visualstudiocode" + ], "tags": [ - "application", "editor", - "ide", - "ios", - "iphone", - "mobile", - "apple" - ], + "ide" + ], "versions": { "svg": [ "original", - "plain" + "original-wordmark", + "plain", + "plain-wordmark" ], "font": [ - "plain" + "plain", + "plain-wordmark" ] }, - "color": "#069CEC", + "color": "#3C99D4", "aliases": [] }, { - "name": "xd", - "tags": ["design", "editor", "ui"], + "name": "vsphere", + "altnames": [ + "vmwarevsphere" + ], + "tags": [ + "hypervisor", + "operating-system", + "vmware" + ], "versions": { - "svg": ["plain", "line"], - "font": ["plain", "line"] + "svg": [ + "original", + "original-wordmark" + ], + "font": [ + "original", + "original-wordmark" + ] }, - "color": "#DD80BC", - "aliases": [] + "color": "#0091DA", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { - "name": "yarn", + "name": "vuejs", + "altnames": [], "tags": [ - "package", - "manager" + "framework" ], "versions": { "svg": [ "original", - "original-wordmark" + "original-wordmark", + "plain", + "plain-wordmark", + "line", + "line-wordmark" ], "font": [ "plain", - "plain-wordmark" + "plain-wordmark", + "line", + "line-wordmark" ] }, - "color": "#2c8ebb", + "color": "#41B883", "aliases": [] }, { - "name": "yii", + "name": "vuestorefront", + "altnames": [], "tags": [ - "php", "framework" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain", - "plain-wordmark" + "plain" ], "font": [ - "plain", - "plain-wordmark" + "plain" ] }, - "color": "#0073bb", + "color": "#5ecf7b", "aliases": [] }, { - "name": "yunohost", + "name": "vuetify", + "altnames": [], "tags": [ - "os" + "css", + "framework", + "vuejs-library", + "material-design" ], "versions": { "svg": [ "original", - "plain" + "plain", + "line" ], "font": [ + "line", "plain" ] }, - "color": "#ffffff", + "color": "#1697F6", "aliases": [] }, { - "name": "zend", + "name": "vyper", + "altnames": [ + "vyperlang" + ], "tags": [ - "php", - "framework" + "programming", + "language", + "python", + "blockchain", + "ethereum" ], "versions": { "svg": [ + "original", + "original-wordmark", "plain", "plain-wordmark" ], @@ -5452,12 +10437,19 @@ "plain-wordmark" ] }, - "color": "#68b604", + "color": "#000000", "aliases": [] }, { - "name": "zig", + "name": "wasm", + "altnames": [ + "WebAssembly" + ], "tags": [ + "binary", + "programming", + "virtual machine", + "web", "language" ], "versions": { @@ -5471,26 +10463,43 @@ "plain-wordmark" ] }, - "color": "#f7a41d", + "color": "#654ff0", "aliases": [ { - "base":"original", - "alias":"plain" + "base": "original", + "alias": "plain" } ] }, { - "name": "pytest", + "name": "webflow", + "altnames": [], "tags": [ - "python", - "framework", - "testing" + "cms", + "ecommerce" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "original" + ] + }, + "color": "#4353ff", + "aliases": [] + }, + { + "name": "weblate", + "altnames": [], + "tags": [ + "localization" ], "versions": { "svg": [ "original", - "original-wordmark", "plain", + "original-wordmark", "plain-wordmark" ], "font": [ @@ -5498,15 +10507,17 @@ "plain-wordmark" ] }, - "color": "#009fe3", + "color": "#2eccaa", "aliases": [] }, { - "name": "opencv", + "name": "webpack", + "altnames": [ + "webpackjs" + ], "tags": [ - "library", - "c/c++", - "computer-vision" + "package", + "manager" ], "versions": { "svg": [ @@ -5520,14 +10531,15 @@ "plain-wordmark" ] }, - "color": "#128dff", + "color": "#1C78C0", "aliases": [] }, { - "name": "fastapi", + "name": "webstorm", + "altnames": [], "tags": [ - "python", - "framework" + "jetbrains", + "editor" ], "versions": { "svg": [ @@ -5541,41 +10553,42 @@ "plain-wordmark" ] }, - "color": "#009688", + "color": "#07c3f2", "aliases": [] }, { - "name": "k3s", + "name": "windows11", + "altnames": [], "tags": [ - "kubernetes", - "container", - "platform" + "os" ], "versions": { "svg": [ "original", - "original-wordmark", - "plain-wordmark" + "original-wordmark" ], "font": [ "original", - "plain-wordmark" + "original-wordmark" ] }, - "color": "#ffc519", + "color": "#0078d4", "aliases": [ { "base": "original", "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" } ] }, { - "name": "packer", + "name": "windows8", + "altnames": [], "tags": [ - "infrastructure", - "infrastructure-as-code", - "continuous-delivery" + "os" ], "versions": { "svg": [ @@ -5587,7 +10600,7 @@ "original-wordmark" ] }, - "color": "#1d94dd", + "color": "#00adef", "aliases": [ { "base": "original", @@ -5600,39 +10613,59 @@ ] }, { - "name": "anaconda", + "name": "woocommerce", + "altnames": [], "tags": [ - "python", - "data-science" + "ecommerce" ], "versions": { "svg": [ "original", - "original-wordmark" + "plain", + "original-wordmark", + "plain-wordmark" ], "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#7f54b3", + "aliases": [] + }, + { + "name": "wordpress", + "altnames": [], + "tags": [ + "cms" + ], + "versions": { + "svg": [ "original", - "original-wordmark" + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" ] }, - "color": "#3eb049", - "aliases": [ - { - "base": "original", - "alias": "plain" - }, - { - "base": "original-wordmark", - "alias": "plain-wordmark" - } - ] + "color": "#494949", + "aliases": [] }, { - "name": "rspec", + "name": "xamarin", + "altnames": [], "tags": [ - "ruby", - "framework", - "testing" + "application", + "programming", + "editor", + "ide", + "ios", + "mobile", + "apple", + "android", + "windows" ], "versions": { "svg": [ @@ -5644,7 +10677,7 @@ "original-wordmark" ] }, - "color": "#6de1fa", + "color": "#3498DB", "aliases": [ { "base": "original", @@ -5657,53 +10690,108 @@ ] }, { - "name": "argocd", + "name": "xcode", + "altnames": [], "tags": [ - "gitops", - "continuous-delivery" + "application", + "editor", + "ide", + "ios", + "iphone", + "mobile", + "apple" ], "versions": { "svg": [ "original", - "original-wordmark", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#069CEC", + "aliases": [] + }, + { + "name": "xd", + "altnames": [ + "adobexd" + ], + "tags": [ + "design", + "editor", + "ui" + ], + "versions": { + "svg": [ "plain", - "plain-wordmark" + "line" ], "font": [ "plain", - "plain-wordmark" + "line" ] }, - "color": "#ef7b4d", + "color": "#DD80BC", "aliases": [] }, { - "name": "prometheus", + "name": "xml", + "altnames": [ + "extensiblemarkuplanguage" + ], "tags": [ - "monitoring", - "observability", - "analysis" + "markup", + "language" ], "versions": { "svg": [ - "original", - "original-wordmark" + "original" ], "font": [ - "original", - "original-wordmark" + "original" ] }, - "color": "#e75225", + "color": "#005fad", "aliases": [] }, { - "name": "blender", + "name": "yaml", + "altnames": [ + "YAML Ain't Markup Language" + ], "tags": [ - "modelling", - "python", - "3d", - "animation" + "data", + "language" + ], + "versions": { + "svg": [ + "original", + "plain" + ], + "font": [ + "plain" + ] + }, + "color": "#cb171e", + "aliases": [ + { + "base": "original", + "alias": "original-wordmark" + }, + { + "base": "plain", + "alias": "plain-wordmark" + } + ] + }, + { + "name": "yarn", + "altnames": [], + "tags": [ + "package", + "manager" ], "versions": { "svg": [ @@ -5715,15 +10803,48 @@ "original-wordmark" ] }, - "color": "#DC7B2E", - "aliases": [] + "color": "#2c8ebb", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original-wordmark", + "alias": "plain-wordmark" + } + ] }, { - "name": "dropwizard", + "name": "yii", + "altnames": [ + "yesitis" + ], "tags": [ - "java", + "php", "framework" ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark" + ], + "font": [ + "plain", + "plain-wordmark" + ] + }, + "color": "#40b3d8", + "aliases": [] + }, + { + "name": "yunohost", + "altnames": [], + "tags": [ + "os" + ], "versions": { "svg": [ "original", @@ -5733,49 +10854,54 @@ "plain" ] }, - "color": "#24265d", + "color": "#ffffff", "aliases": [] -}, -{ - "name": "vuetify", + }, + { + "name": "zend", + "altnames": [], "tags": [ - "css", - "framework", - "vuejs-library", - "material-design" - ], + "php", + "framework" + ], "versions": { "svg": [ - "original", "plain", - "line" + "plain-wordmark" ], "font": [ - "line", - "plain" - ] + "plain", + "plain-wordmark" + ] }, - "color": "#1697F6", - "aliases": [] + "color": "#68b604", + "aliases": [] }, { - "name": "fedora", + "name": "zig", + "altnames": [ + "ziglang" + ], "tags": [ - "linux", - "distribuition", - "desktop" - ], + "language" + ], "versions": { "svg": [ "original", - "plain" + "original-wordmark", + "plain-wordmark" ], "font": [ - "plain" - ] + "original", + "plain-wordmark" + ] }, - "color": "#294172", - "aliases": [] + "color": "#f7a41d", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] } - ] diff --git a/docs/assets/css/style.css b/docs/assets/css/style.css index 37f6cb7b2..2ae904529 100644 --- a/docs/assets/css/style.css +++ b/docs/assets/css/style.css @@ -4,9 +4,9 @@ @import url(https://fonts.googleapis.com/css?family=Damion); :root { /* color */ - --primaryColor: #60be86; + --primaryColor: #3D9561; --primaryColorDark: #2D804E; - --primaryColorLight: #65d693; + --primaryColorLight: #4AB475; --grey: #4c6857; /* sizing */ @@ -415,11 +415,29 @@ input[type='color']:hover { .main { margin: 0 0 0 480px; } -.search { +.result { + max-width: 75px; +} + +.computed-data { + color: var(--primaryColor); + font-weight: bold; + list-style: none; + padding: 0; + width: 80%; + margin: 25px auto; + display: flex; +} + +.computed-data li { + width: 33.33%; text-align: center; } + +.search { + text-align: center; + margin: 4rem 0 1rem 0; } + .search input { - width: 300px; - margin: 4rem; padding: .5rem 1rem; border: 0; border-bottom: 2px solid var(--primaryColor); diff --git a/docs/assets/js/script.js b/docs/assets/js/script.js index 153ca460c..ded17c898 100644 --- a/docs/assets/js/script.js +++ b/docs/assets/js/script.js @@ -14,7 +14,7 @@ devicon.controller('IconListCtrl', function($scope, $http, $compile) { var gitHubPath = 'devicons/devicon'; var url = 'https://api.github.com/repos/' + gitHubPath + '/tags'; - $scope.latestReleaseTagging = 'master'; + $scope.latestReleaseTagging = 'latest'; $http.get(url).success(function (data) { if(data.length > 0) { $scope.latestReleaseTagging = data[0].name; @@ -24,7 +24,20 @@ devicon.controller('IconListCtrl', function($scope, $http, $compile) { }); var versionStr = '@' + $scope.latestReleaseTagging; - var baseUrl = `https://cdn.jsdelivr.net/gh/${gitHubPath}${versionStr}/` + var baseUrl + + // Make sure one of the files exist, otherwise, use fallback link. + var path = '/devicon.json'; + var xhr = new XMLHttpRequest(); + xhr.open('HEAD', path, false); + xhr.send(); + if (xhr.status == "404") { + baseUrl = `https://cdn.jsdelivr.net/gh/${gitHubPath}${versionStr}/` + } else { + baseUrl = `/`; + } + + $scope.baseUrl = baseUrl // Get devicon.json $http.get(baseUrl + 'devicon.json').success(function(data) { @@ -38,9 +51,12 @@ devicon.controller('IconListCtrl', function($scope, $http, $compile) { $scope.icons = []; $scope.selectedIcon = {}; + // Miscellaneous stuff + $scope.totalFonts = 0; // Total fonts and SVGs combined + // background color related stuff // default is the default site background color - $scope.DEFAULT_BACKGROUND = "#60be86"; + $scope.DEFAULT_BACKGROUND = "#3D9561"; $scope.fontBackground = $scope.DEFAULT_BACKGROUND; $scope.svgBackground = $scope.DEFAULT_BACKGROUND; @@ -55,11 +71,14 @@ devicon.controller('IconListCtrl', function($scope, $http, $compile) { // New icon format var icon = { name: devicon.name, + altnames: devicon.altnames, svg: devicon.versions.svg, font: devicon.versions.font, main: "" }; + $scope.totalFonts += devicon.versions.font.length + devicon.versions.svg.length; + // Loop through devicon.json icons for (var i = 0; i < devicon.versions.font.length; i++) { @@ -95,6 +114,9 @@ devicon.controller('IconListCtrl', function($scope, $http, $compile) { $scope.selectedFontIndex = 0; $scope.selectedSvgIndex = 0; + // Computes miscellaneous data + $scope.avgFonts = $scope.totalFonts / $scope.icons.length // Avg number of fonts and SVGs combined + /*------ End of "Re-format devicon.json" ------*/ }); diff --git a/docs/index.html b/docs/index.html index 6b3b645ed..80f1fbf8c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3,7 +3,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,7 @@ - - - - +