diff --git a/.github/ISSUE_TEMPLATE/icon_removal.yml b/.github/ISSUE_TEMPLATE/icon_removal.yml index 74b4c93f7..c11f0ab88 100644 --- a/.github/ISSUE_TEMPLATE/icon_removal.yml +++ b/.github/ISSUE_TEMPLATE/icon_removal.yml @@ -28,7 +28,8 @@ body: - If the brand no longer exists, include a link supporting that claim. - If the brand should be removed for another reason, explain why. placeholder: >- - Example: [this blogpost](https://example.com) announced the brand has been - discontinued... + Example: [this blogpost](https://example.com) announced the brand has been discontinued... + + validations: required: true diff --git a/.github/actions/get-labels/action.yml b/.github/actions/get-labels/action.yml index eafc8ce4b..1b4ff826d 100644 --- a/.github/actions/get-labels/action.yml +++ b/.github/actions/get-labels/action.yml @@ -1,5 +1,5 @@ name: Get issue/pull request labels -description: Get the current labels of an issue or pull request through the GitHub API +description: Get the current labels of an issue or pull request inputs: issue_number: diff --git a/.github/workflows/remove-labels.yml b/.github/workflows/remove-labels.yml index f2a0d3c9f..a5186e715 100644 --- a/.github/workflows/remove-labels.yml +++ b/.github/workflows/remove-labels.yml @@ -39,7 +39,9 @@ jobs: remove-closed-pr-labels: name: Remove closed pull request labels - if: github.event_name == 'pull_request_target' && (! github.event.pull_request.merged) + if: | + github.event_name == 'pull_request_target' && + (!github.event.pull_request.merged) runs-on: ubuntu-latest steps: - uses: actions/create-github-app-token@v1 diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 000000000..1dd86229b --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,6 @@ +{ + "default": true, + "MD013": false, + "MD033": false, + "MD041": false +} diff --git a/.prettierignore b/.prettierignore index c055463ee..1ea5de86d 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,8 +1,8 @@ # We prefer our own custom formatting for MarkDown files. # See the following thread for the discussion: # https://github.com/simple-icons/simple-icons-font/pull/73 -*.md -!.github/PULL_REQUEST_TEMPLATE.md +LICENSE.md +slugs.md # We use our own formatting for the data files. _data/simple-icons.json diff --git a/.prettierrc.json b/.prettierrc.json index a0f24c991..9f7f449f6 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -1,4 +1,6 @@ { "singleQuote": true, - "bracketSpacing": false + "bracketSpacing": false, + "proseWrap": "never", + "embeddedLanguageFormatting": "off" } diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 2dd69854b..17c878c16 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -2,127 +2,78 @@ ## 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, religion, or sexual identity -and orientation. +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, 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. +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: +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 +- 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 +- 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 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. +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. +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 -community@simpleicons.org. -All complaints will be reviewed and investigated promptly and fairly. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at . 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. +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: +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. +**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. +**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. +**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. +**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. +**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. +**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. +**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. +**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.0, available at -https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, available at . -Community Impact Guidelines were inspired by [Mozilla's code of conduct -enforcement ladder](https://github.com/mozilla/diversity). +Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity). [homepage]: https://www.contributor-covenant.org -For answers to common questions about this code of conduct, see the FAQ at -https://www.contributor-covenant.org/faq. Translations are available at -https://www.contributor-covenant.org/translations. +For answers to common questions about this code of conduct, see the FAQ at . Translations are available at . diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8aaefaad9..8802dcdcf 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,9 +1,6 @@ # Contributing to Simple Icons -[![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Fsearch%2Fissues%3Fq%3Drepo%3Asimple-icons%2Fsimple-icons%2520label%3A%2522good%2520first%2520issue%2522%2520is%3Aopen%2520-linked%3Apr&query=%24.total_count&suffix=%20open&logo=github&label=good%20first%20issues&color=228f6c&labelColor=228f6c&logoColor=white&style=flat-square)](https://github.com/simple-icons/simple-icons/issues?q=is%3Aopen+label%3A%22good+first+issue%22+-linked%3Apr) -[![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Fsearch%2Fissues%3Fq%3Drepo%3Asimple-icons%2Fsimple-icons%2520label%3A%2522update%2520icon%2Fdata%2522%2C%2522new%2520icon%2522%2520is%3Aopen%2520-linked%3Apr&query=%24.total_count&suffix=%20open&logo=svg&logoColor=333&label=icon%20issues&labelColor=FFB13B&color=FFB13B&style=flat-square)](https://github.com/simple-icons/simple-icons/issues?q=is%3Aissue+is%3Aopen+label%3A%22new+icon%22%2C%22update+icon%2Fdata%22) -[![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Fsearch%2Fissues%3Fq%3Drepo%3Asimple-icons%2Fsimple-icons%2520is%3Aissue%2520is%3Aopen%2520label%3Ameta%2Cpackage%2520-linked%3Apr&query=%24.total_count&suffix=%20open&logo=typescript&logoColor=white&label=code%20issues&labelColor=3178C6&color=3178C6&style=flat-square)](https://github.com/simple-icons/simple-icons/issues?q=is%3Aissue+is%3Aopen+label%3Adocs%2Cmeta%2Cpackage+-linked%3Apr) -[![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Fsearch%2Fissues%3Fq%3Drepo%3Asimple-icons%2Fsimple-icons%2520label%3Adocs%2520is%3Aopen%2520-linked%3Apr&query=%24.total_count&suffix=%20open&logo=markdown&label=docs%20issues&labelColor=343a40&color=343a40&logoColor=FFF&style=flat-square)](https://github.com/simple-icons/simple-icons/issues?q=is%3Aopen+is%3Aissue+label%3Adocs+-linked%3Apr) +[![Good first issues](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Fsearch%2Fissues%3Fq%3Drepo%3Asimple-icons%2Fsimple-icons%2520label%3A%2522good%2520first%2520issue%2522%2520is%3Aopen%2520-linked%3Apr&query=%24.total_count&suffix=%20open&logo=github&label=good%20first%20issues&color=228f6c&labelColor=228f6c&logoColor=white&style=flat-square)](https://github.com/simple-icons/simple-icons/issues?q=is%3Aopen+label%3A%22good+first+issue%22+-linked%3Apr) [![Icon issues](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Fsearch%2Fissues%3Fq%3Drepo%3Asimple-icons%2Fsimple-icons%2520label%3A%2522update%2520icon%2Fdata%2522%2C%2522new%2520icon%2522%2520is%3Aopen%2520-linked%3Apr&query=%24.total_count&suffix=%20open&logo=svg&logoColor=333&label=icon%20issues&labelColor=FFB13B&color=FFB13B&style=flat-square)](https://github.com/simple-icons/simple-icons/issues?q=is%3Aissue+is%3Aopen+label%3A%22new+icon%22%2C%22update+icon%2Fdata%22) [![Code issues](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Fsearch%2Fissues%3Fq%3Drepo%3Asimple-icons%2Fsimple-icons%2520is%3Aissue%2520is%3Aopen%2520label%3Ameta%2Cpackage%2520-linked%3Apr&query=%24.total_count&suffix=%20open&logo=typescript&logoColor=white&label=code%20issues&labelColor=3178C6&color=3178C6&style=flat-square)](https://github.com/simple-icons/simple-icons/issues?q=is%3Aissue+is%3Aopen+label%3Adocs%2Cmeta%2Cpackage+-linked%3Apr) [![Documentation issues](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Fsearch%2Fissues%3Fq%3Drepo%3Asimple-icons%2Fsimple-icons%2520label%3Adocs%2520is%3Aopen%2520-linked%3Apr&query=%24.total_count&suffix=%20open&logo=markdown&label=docs%20issues&labelColor=343a40&color=343a40&logoColor=FFF&style=flat-square)](https://github.com/simple-icons/simple-icons/issues?q=is%3Aopen+is%3Aissue+label%3Adocs+-linked%3Apr) > [!IMPORTANT]\ > We ask that all users read our [legal disclaimer](./DISCLAIMER.md) before contributing to Simple Icons. @@ -38,33 +35,33 @@ Simple Icons welcomes contributions and corrections. Before contributing, please ## Table of contents -* [Requesting an Icon](#requesting-an-icon) - * [Forbidden Brands](#forbidden-brands) - * [Assessing Popularity](#assessing-popularity) - * [Opening an Issue](#opening-an-issue) -* [Adding or Updating an Icon](#adding-or-updating-an-icon) - * [Requesting Permission](#requesting-permission) -* [Testing Package Locally](#testing-package-locally) -* [Using Docker](#using-docker) +- [Requesting an Icon](#requesting-an-icon) + - [Forbidden Brands](#forbidden-brands) + - [Assessing Popularity](#assessing-popularity) + - [Opening an Issue](#opening-an-issue) +- [Adding or Updating an Icon](#adding-or-updating-an-icon) + - [Requesting Permission](#requesting-permission) +- [Testing Package Locally](#testing-package-locally) +- [Using Docker](#using-docker) ## Requesting an Icon We welcome icon requests. Before you submit a new issue please make sure the icon: -* Has not already been requested. If you find an existing issue or pull request for the brand you're looking for then please add a reaction or comment to show your support. -* Is of a _popular_ brand - see "[Assessing Popularity](#assessing-popularity)" below. -* Doesn't fall into one of the following categories: - - Illegal services (e.g. piracy, malware, threatening material, spam, etc.) - - Military-related brands and organizations - - Governmental agencies, programs, departments - - Allowed: International organizations and NGOs with supranational interests - - Allowed: Space agencies - - Symbols, including flags and banners - - Sport clubs - - Allowed: Sports organizations - - Yearly releases - - Universities or other educational institutions - - Any brands representing individuals rather than an organization, company, or product. This includes musicians, bands, and social media personalities. +- Has not already been requested. If you find an existing issue or pull request for the brand you're looking for then please add a reaction or comment to show your support. +- Is of a _popular_ brand - see "[Assessing Popularity](#assessing-popularity)" below. +- Doesn't fall into one of the following categories: + - Illegal services (e.g. piracy, malware, threatening material, spam, etc.) + - Military-related brands and organizations + - Governmental agencies, programs, departments + - Allowed: International organizations and NGOs with supranational interests + - Allowed: Space agencies + - Symbols, including flags and banners + - Sport clubs + - Allowed: Sports organizations + - Yearly releases + - Universities or other educational institutions + - Any brands representing individuals rather than an organization, company, or product. This includes musicians, bands, and social media personalities. ### Forbidden Brands @@ -89,31 +86,31 @@ If you are in doubt, feel free to submit it and we'll have a look. To be considered popular enough to be within our scope, a brand must be in existence for at least one year (from date of first stable release, where applicable) and meet one of the following metrics of popularity, in order of preference: 1. Its website's Similarweb global rank is in the top 500k. - - As Similarweb updates its data only once every month, there will be a monitoring window for websites ranked between 450k & 550k until the next update, _unless_ the brand is within scope on any other metric below. - - For existing icons in our library, the threshold is dropped from 500k to 750k. - - A rank lower than 2m, without any other metric being provided, will result in the brand being declared outside our scope. + - As Similarweb updates its data only once every month, there will be a monitoring window for websites ranked between 450k & 550k until the next update, _unless_ the brand is within scope on any other metric below. + - For existing icons in our library, the threshold is dropped from 500k to 750k. + - A rank lower than 2m, without any other metric being provided, will result in the brand being declared outside our scope. 1. The website's Similarweb rank in any one country is either: - - In the top 100, or, - - In the top 10k, _with_ a global rank of 1m or better. + - In the top 100, or, + - In the top 10k, _with_ a global rank of 1m or better. 1. In cases where a brand does not have its own website the Similarweb rank of its parent company will be accepted _if_ the brand is that company's primary product. 1. Its packages meet one of the following minimum requirements: - - [npm](https://www.npmjs.com): 100k weekly downloads, - - [jsDelivr](https://www.jsdelivr.com): 1m daily or 35m monthly requests, - - [crates.io](https://crates.io): 100k weekly downloads, - - [PyPi Stats](https://pypistats.org): 100k weekly downloads, or, + - [npm](https://www.npmjs.com): 100k weekly downloads, + - [jsDelivr](https://www.jsdelivr.com): 1m daily or 35m monthly requests, + - [crates.io](https://crates.io): 100k weekly downloads, + - [PyPi Stats](https://pypistats.org): 100k weekly downloads, or, 1. If the brand is a Fediverse project, it needs to have a minimum of 10,000 Monthly Active Users as listed on [FediDB](https://fedidb.org/software). - - In addition, for **servers** that have a unique recognizable logo, the User Count as listed on [FediDB](https://fedidb.org/network) should be 100,000 or higher. + - In addition, for **servers** that have a unique recognizable logo, the User Count as listed on [FediDB](https://fedidb.org/network) should be 100,000 or higher. 1. The brand's popularity can be illustrated by other publicly available & verifiable statistic (e.g., downloads, usage). - - Stats should preferably also include data on one of our existing brands so a direct comparison can be made. + - Stats should preferably also include data on one of our existing brands so a direct comparison can be made. 1. The brand's popularity can be illustrated through a worldwide Google Trends comparison, or similar. - - Must be with a similar brand that is already in our library and still within our scope, or that would qualify under any metric. - - Must be unambiguous (i.e., it's not a suitable metric for brands with generic words for names). - - Trending equal to or higher than the compared brand will be considered in scope. - - Trending lower than the compared brand but with an upward trajectory will require the consensus of the person providing the comparison and at least 2 project maintainers. + - Must be with a similar brand that is already in our library and still within our scope, or that would qualify under any metric. + - Must be unambiguous (i.e., it's not a suitable metric for brands with generic words for names). + - Trending equal to or higher than the compared brand will be considered in scope. + - Trending lower than the compared brand but with an upward trajectory will require the consensus of the person providing the comparison and at least 2 project maintainers. 1. Where applicable, the primary repository for the brand's GitHub project meets the following requirements (see note below): - - A minimum of 5k GitHub stars will be required for consideration, providing, - - The repository is still active, and, - - Its [star history](https://star-history.com) is on a consistently upward trajectory. + - A minimum of 5k GitHub stars will be required for consideration, providing, + - The repository is still active, and, + - Its [star history](https://star-history.com) is on a consistently upward trajectory. If all else fails, though, feel free to make a good case for the popularity of the brand you're requesting on any other grounds, provided it can be backed up with verifiable data. Example: a car manufacturer's own website falls outside our scope but a major dealership dealing exclusively or primarily in that brand falls within our scope - in that case we'd accept the manufacturer as being popular. If you can provide a _particularly_ good metric that can be applied to other brands then it will be added to this list. @@ -124,11 +121,12 @@ If all else fails, though, feel free to make a good case for the popularity of t When submitting a request for a new or updated icon include helpful information such as: -* **Issue Title:** The brand name. For example: - * New Icons: `Request: GitHub Icon` - * Icon Updates: `Update: GitHub Color` or `Update: GitHub Icon` +- **Issue Title:** The brand name. For example: -* **Issue Body:** Links to official sources for the brand's icon and colors (e.g. media kits, brand guidelines, SVG files, etc.) + - New Icons: `Request: GitHub Icon` + - Icon Updates: `Update: GitHub Color` or `Update: GitHub Icon` + +- **Issue Body:** Links to official sources for the brand's icon and colors (e.g. media kits, brand guidelines, SVG files, etc.) If you have an affiliation to the brand you are requesting that allows you to speak on their behalf then please disclose that in your issue as it can help speed up our research process. @@ -149,8 +147,7 @@ Official high quality brand logos and brand colors can usually be found in the f 1. Wikimedia (which should provide a source) 1. GitHub repositories -It may be the case that no official source exists, but an unofficial icon has gained widespread acceptance and popularity. In such cases the unofficial icon can be included, but the details will be judged on a case-by-case basis. The JavaScript icon is an example of this. -Notice that an unofficial source will never supersede an official one, even if it is more popular. An unofficial icon will only be accepted if no official option exists. +It may be the case that no official source exists, but an unofficial icon has gained widespread acceptance and popularity. In such cases the unofficial icon can be included, but the details will be judged on a case-by-case basis. The JavaScript icon is an example of this. Notice that an unofficial source will never supersede an official one, even if it is more popular. An unofficial icon will only be accepted if no official option exists. #### Icon Guidelines @@ -158,23 +155,27 @@ Working with an SVG version of the logo is best. In the absence of an SVG versio If the icon includes a (registered) trademark icon we follow the guidelines below to decide whether to include the symbol or not: -* If brand guidelines explicitly require including the symbol, it must be included. -* If the brand itself includes the symbol with all uses of the logo, even at small sizes, it must be included. -* If the symbol is incorporated into the design of the logo (e.g. [Chupa Chups](https://github.com/simple-icons/simple-icons/blob/develop/icons/chupachups.svg)), it must be included. -* If there is ambiguity about the conditions under which the symbol is required, it must be included if it is a _registered trademark symbol_ (®) but not if is a _trademark symbol_ (™). -* If brand guidelines say it _may_ be removed, usually when the icon is displayed at small sizes, it must not be included. -* If there is no explicit requirement that a symbol must be included, it must not be included. +- If brand guidelines explicitly require including the symbol, it must be included. +- If the brand itself includes the symbol with all uses of the logo, even at small sizes, it must be included. +- If the symbol is incorporated into the design of the logo (e.g. [Chupa Chups]), it must be included. +- If there is ambiguity about the conditions under which the symbol is required, it must be included if it is a _registered trademark symbol_ (®) but not if is a _trademark symbol_ (™). +- If brand guidelines say it _may_ be removed, usually when the icon is displayed at small sizes, it must not be included. +- If there is no explicit requirement that a symbol must be included, it must not be included. + +[Chupa Chups]: https://github.com/simple-icons/simple-icons/blob/develop/icons/chupachups.svg #### Color Guidelines -For color, the brand's primary color should be used. The official color of a brand is usually found in their brand guidelines, media kits, or some of the other locations mentioned above. If no official color can be identified, use the brand's primary web color or the most prominent color in the logo itself (please indicate why you choose the particular color in your pull request). If an icon's primary color is made up of a gradient, use [Eric Meyer's Color Blender tool](https://meyerweb.com/eric/tools/color-blend/#::1:hex) to pick the color of the calculated midpoint. Simple Icons stores brand colors in the standard 6 character hexadecimal format. +For color, the brand's primary color should be used. The official color of a brand is usually found in their brand guidelines, media kits, or some of the other locations mentioned above. If no official color can be identified, use the brand's primary web color or the most prominent color in the logo itself (please indicate why you choose the particular color in your pull request). If an icon's primary color is made up of a gradient, use [Eric Meyer's Color Blender tool] to pick the color of the calculated midpoint. Simple Icons stores brand colors in the standard 6 character hexadecimal format. + +[Eric Meyer's Color Blender tool]: https://meyerweb.com/eric/tools/color-blend/#::1:hex ### 2. Extract the Icon from the Logo There are many different tools for editing SVG files, some options include: | Name | Description | Platform | Price | -| :---- | :---- | :----: | :----: | +| :-- | :-- | :-: | :-: | | [Inkscape](https://inkscape.org/) | Vector Graphics Editor | Windows, Mac, Linux | Free | | [Boxy SVG](https://boxy-svg.com/) | Vector Graphics Editor | Windows, Mac, Linux | $ / Free (Linux, Web) | | [Affinity Designer](https://affinity.serif.com/designer/) | Vector Graphics Editor | Windows, Mac | $ | @@ -193,40 +194,44 @@ Using your preferred tool you should: Some icons can't be easily converted to a monochromatic version due to colour changes, shadows, or other effects. For such cases, the addition of gaps is the recommended approach, with a preferred width of 0.5px. In some situations, a different gap may be required, but that will be determined on a per-case basis. -If you have any problems or questions while creating the SVG, check out [the GitHub Discussions](https://github.com/simple-icons/simple-icons/discussions/categories/help-with-svgs). You may find an answer to your question there or you can ask your question if you did not find an answer. +If you have any problems or questions while creating the SVG, check out [the GitHub Discussions]. You may find an answer to your question there or you can ask your question if you did not find an answer. + +[the GitHub Discussions]: https://github.com/simple-icons/simple-icons/discussions/categories/help-with-svgs ### 3. Optimize the Icon -All icons in Simple Icons have been optimized with the [SVGO tool](https://github.com/svg/svgo). This can be done in one of three ways: +All icons in Simple Icons have been optimized with the [SVGO tool]. This can be done in one of three ways: -* The [SVGO Command Line Tool](https://github.com/svg/svgo) - * Run the following command `npx svgo icons/file-to-optimize.svg` - * Check if there is a loss of quality in the output, if so increase the precision. -* The [SVGOMG Online Tool](https://jakearchibald.github.io/svgomg/) - * Click "Open SVG" and select an SVG file. - * Set the precision to about 3, depending on if there is a loss of quality. - * Leave the remaining settings untouched (or reset them with the button at the bottom of the settings). - * Click the download button. -* The [SVGO Command Line Tool](https://github.com/svg/svgo) in Docker - * If none of the options above work for you, it is possible to build a Docker image for compressing the images. - * Build: `docker build . -t simple-icons` - * Run: `docker run --rm -v ${PWD}/icons/file-to-optimize.svg:/image.svg simple-icons` +- The [SVGO Command Line Tool](https://github.com/svg/svgo) + - Run the following command `npx svgo icons/file-to-optimize.svg` + - Check if there is a loss of quality in the output, if so increase the precision. +- The [SVGOMG Online Tool](https://jakearchibald.github.io/svgomg/) + - Click "Open SVG" and select an SVG file. + - Set the precision to about 3, depending on if there is a loss of quality. + - Leave the remaining settings untouched (or reset them with the button at the bottom of the settings). + - Click the download button. +- The [SVGO Command Line Tool](https://github.com/svg/svgo) in Docker + - If none of the options above work for you, it is possible to build a Docker image for compressing the images. + - Build: `docker build . -t simple-icons` + - Run: `docker run --rm -v ${PWD}/icons/file-to-optimize.svg:/image.svg simple-icons` After optimizing the icon, double-check it against your original version to ensure no visual imperfections have crept in. Also, make sure that the dimensions of the path have not been changed so that the icon no longer fits exactly within the canvas. We currently check the dimensions up to a precision of 3 decimal points. +[SVGO tool]: https://github.com/svg/svgo + ### 4. Annotate the Icon Each icon in Simple Icons has been annotated with a number of attributes and elements to increase accessibility. These include: -* An svg element with the following attributes, ordered respectively: - * An img role attribute. - * `role="img"` - * A 24x24 viewbox. - * `viewBox="0 0 24 24"` - * The svg namespace. - * `xmlns="http://www.w3.org/2000/svg"` -* A title element containing the brand name. - * `Adobe Photoshop` +- An svg element with the following attributes, ordered respectively: + - An img role attribute. + - `role="img"` + - A 24x24 viewbox. + - `viewBox="0 0 24 24"` + - The svg namespace. + - `xmlns="http://www.w3.org/2000/svg"` +- A title element containing the brand name. + - `Adobe Photoshop` Here is _part of_ the svg for the Adobe Photoshop icon as an example: @@ -238,18 +243,18 @@ Here is _part of_ the svg for the Adobe Photoshop icon as an example: The final icon should: -* Be properly annotated [as discussed above](#4-annotate-the-icon). -* Be monochromatic. - * Remove all fill colors so that icon defaults to black. -* Be scaled to fit the viewbox, while preserving the icon's original proportions. - * This means the icon should be touching at least two sides of the viewbox. -* Be vertically and horizontally centered. -* Be minified to a single line with no formatting. -* Contain only a single `path` element. -* Not contain extraneous elements. - * This includes: `circle`, `ellipse`, `rect`, `polygon`, `line`, `g`, etc. -* Not contain extraneous attributes. - * This includes: `width`, `height`, `fill`, `stroke`, `clip`, `font`, etc. +- Be properly annotated [as discussed above](#4-annotate-the-icon). +- Be monochromatic. + - Remove all fill colors so that icon defaults to black. +- Be scaled to fit the viewbox, while preserving the icon's original proportions. + - This means the icon should be touching at least two sides of the viewbox. +- Be vertically and horizontally centered. +- Be minified to a single line with no formatting. +- Contain only a single `path` element. +- Not contain extraneous elements. + - This includes: `circle`, `ellipse`, `rect`, `polygon`, `line`, `g`, etc. +- Not contain extraneous attributes. + - This includes: `width`, `height`, `fill`, `stroke`, `clip`, `font`, etc. Here is the svg for the Adobe Photoshop icon as an example: @@ -263,49 +268,49 @@ The filename of the SVG should correspond to the `` used in the markup fi 1. Use **lowercase letters** without **whitespace**, for example: - ```yml - title: Adobe Photoshop - filename: adobephotoshop.svg - ``` + ```yml + title: Adobe Photoshop + filename: adobephotoshop.svg + ``` 1. Only use **latin** letters, for example: - ```yml - title: Citroën - filename: citroen.svg - ``` + ```yml + title: Citroën + filename: citroen.svg + ``` 1. Replace the following symbols with their alias: - | Symbol | Alias | - | :----: | ----- | - | + | plus | - | . | dot | - | & | and | + | Symbol | Alias | + | :----: | ----- | + | + | plus | + | . | dot | + | & | and | - for example: + for example: - ```yml - title: .Net - filename: dotnet.svg - ``` + ```yml + title: .Net + filename: dotnet.svg + ``` 1. On rare occasions the resulting name will clash with the name of an existing SVG file in our collection. To resolve such conflicts append `_[MODIFIER]` to the name, where `[MODIFIER]` is a short descriptor of the brand or the service they provide and follows the same rules of construction as above. - for example: + for example: - ```yml - title: Hive - filename: hive_blockchain.svg - ``` + ```yml + title: Hive + filename: hive_blockchain.svg + ``` ### 7. Update the JSON Data for SimpleIcons.org Icon metadata should be added to the `_data/simple-icons.json` file. Each icon in the array has three required values: -* The `title` of the new SVG. -* A `hex` color value that matches the brand's primary color. All uppercase and without the `#` symbol. -* The `source` URL of the logo being used. There are [more details below](#source-guidelines). +- The `title` of the new SVG. +- A `hex` color value that matches the brand's primary color. All uppercase and without the `#` symbol. +- The `source` URL of the logo being used. There are [more details below](#source-guidelines). There are also [optional values](#optional-data) that may be provided for each icon, which are listed below. @@ -327,9 +332,9 @@ Make sure the icon is added in alphabetical order. If you're in doubt, you can a Additionally, each icon in the `_data/simple-icons.json` file may be given any of the following optional values: -* The `slug` must be used to specify the icon's file name in cases where a modifier has been added to it in order to resolve a clash with an existing icon's name. -* The `guidelines` may be used to specify the URL of the brand's guidelines/press kit/etc. This is useful if the SVG file was sourced from a different place, still if the SVG file was sourced from the guidelines, the URL should be duplicated here. -* The `license` may be used to specify the license under which the icon is available. This is an object with a `type` and `url`. The `type` should be an [SPDX License ID](https://spdx.org/licenses/) or `"custom"`, the `url` is optional unless the `type` is `"custom"`. +- The `slug` must be used to specify the icon's file name in cases where a modifier has been added to it in order to resolve a clash with an existing icon's name. +- The `guidelines` may be used to specify the URL of the brand's guidelines/press kit/etc. This is useful if the SVG file was sourced from a different place, still if the SVG file was sourced from the guidelines, the URL should be duplicated here. +- The `license` may be used to specify the license under which the icon is available. This is an object with a `type` and `url`. The `type` should be a [SPDX License ID](https://spdx.org/licenses/) or `"custom"`, the `url` is optional unless the `type` is `"custom"`. Here is the object of the fictional brand from before, but with all optional values, as an example: @@ -424,11 +429,13 @@ We collect localized names to make it possible to find the brand by it's local n } ``` -Where the `locale` is an [IETF language tag](https://en.wikipedia.org/wiki/IETF_language_tag) and `title` is a **different** title from the original title. +Where the `locale` is an [IETF language tag] and `title` is a **different** title from the original title. + +[IETF language tag]: https://en.wikipedia.org/wiki/IETF_language_tag ### 8. Create a Pull Request -Once you've completed the previous steps, create a pull request to merge your edits into the *develop* branch. You can run `npm run lint` to check if there are any issues you still need to address. +Once you've completed the previous steps, create a pull request to merge your edits into the _develop_ branch. You can run `npm run lint` to check if there are any issues you still need to address. If you have an affiliation to the brand you contributing that allows you to speak on their behalf then please disclose that in your pull request as it can help speed up our research and review processes. @@ -456,10 +463,10 @@ Kind regards, ## Testing Package Locally -* Make sure you have [Node.js](https://nodejs.org/en/download/) installed. At least version `^12.20.0 || ^14.13.1 || >=16.0.0` is required. -* Install the dependencies using `$ npm install`. -* Build and test the package using `$ npm test`. -* Run the project linting process using `$ npm run lint`. +- Make sure you have [Node.js](https://nodejs.org/en/download/) installed. At least version `^12.20.0 || ^14.13.1 || >=16.0.0` is required. +- Install the dependencies using `$ npm install`. +- Build and test the package using `$ npm test`. +- Run the project linting process using `$ npm run lint`. ## Using Docker @@ -480,13 +487,13 @@ docker run -it --rm --entrypoint "/bin/ash" simple-icons A SDK is included in the `simple-icons/sdk` entrypoint of the npm package to make it easier the development of third party extensions with JavaScript and TypeScript. ```typescript -import { getIconsData, type IconData } from 'simple-icons/sdk'; +import {getIconsData, type IconData} from 'simple-icons/sdk'; const iconsData: Promise<IconData[]> = getIconsData(); ``` ```javascript -import { getIconsData } from 'simple-icons/sdk'; +import {getIconsData} from 'simple-icons/sdk'; /* @typedef {import("./simple-icons/sdk").IconData} IconData */ diff --git a/DISCLAIMER.md b/DISCLAIMER.md index f1429e9eb..82a850f4b 100644 --- a/DISCLAIMER.md +++ b/DISCLAIMER.md @@ -14,6 +14,8 @@ Simple Icons asks that its users read this disclaimer fully before including an > [!IMPORTANT]\ > The addition of licenses to Simple Icons is an ongoing project. Hence, the absence of licence data for a particular icon does not imply that the icon is not released under a license. +<!-- makdownlint-disable-next-line no-blanks-blockquote --> + > [!NOTE]\ > Simple Icons is released under CC0 - though that doesn't mean to imply that all icons within the project are also CC0. Please see individual licenses where available. diff --git a/LICENSE.md b/LICENSE.md index f0f4b0328..71416e3ff 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -27,4 +27,4 @@ For these and/or other purposes and motivations, and without any expectation of 3. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person’s Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. 4. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. -For more information, please see https://creativecommons.org/publicdomain/zero/1.0/. +For more information, please see <https://creativecommons.org/publicdomain/zero/1.0/>. diff --git a/README.md b/README.md index 79ea86fcf..91535dd6f 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Over 3200 Free SVG icons for popular brands. See them all on one page at <a href <a href="https://packagist.org/packages/simple-icons/simple-icons"><img src="https://img.shields.io/packagist/v/simple-icons/simple-icons?logo=packagist&logoColor=white" alt="Build status"/></a> <br/> <a href="https://simpleicons.org"><img src="https://img.shields.io/badge/dynamic/json?color=informational&label=icons&prefix=%20&logo=simpleicons&query=%24.icons.length&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsimple-icons%2Fsimple-icons%2Fdevelop%2F_data%2Fsimple-icons.json" alt="Number of icons currently in the library"/></a> -<a href="https://discord.gg/vUXFa7t5xJ"><img src="https://img.shields.io/discord/1142044630909726760?logo=discord&logoColor=white&label=discord" alt="Number of users active in our Discord server" /></a> +<a href="https://discord.gg/vUXFa7t5xJ"><img src="https://img.shields.io/discord/1142044630909726760?logo=discord&logoColor=white&label=discord" alt="Number of users active in our Discord server"/></a> <a href="https://opencollective.com/simple-icons"><img src="https://img.shields.io/opencollective/all/simple-icons?logo=opencollective" alt="Backers and sponsors on Open Collective"/></a> </p> @@ -22,7 +22,7 @@ Over 3200 Free SVG icons for popular brands. See them all on one page at <a href ### General Usage -Icons can be downloaded as SVGs directly from [our website](https://simpleicons.org/) - simply click the download button of the icon you want, and the download will start automatically. +Icons can be downloaded as SVGs directly from <https://simpleicons.org/> - simply click the download button of the icon you want, and the download will start automatically. ### CDN Usage @@ -84,15 +84,16 @@ npm install simple-icons ``` All icons are imported from a single file, where `[ICON SLUG]` is replaced by a capitalized [slug]. We highly recommend using a bundler that can tree shake such as [webpack](https://webpack.js.org/) to remove the unused icon code: + ```javascript // Import a specific icon by its slug as: // import { si[ICON SLUG] } from 'simple-icons' // For example: // use import/esm to allow tree shaking -import { siSimpleicons } from 'simple-icons'; +import {siSimpleicons} from 'simple-icons'; // or with require/cjs -const { siSimpleicons } = require('simple-icons'); +const {siSimpleicons} = require('simple-icons'); ``` It will return an icon object: @@ -131,7 +132,7 @@ import * as icons from 'simple-icons'; Type definitions are bundled with the package. ```typescript -import type { SimpleIcon } from 'simple-icons'; +import type {SimpleIcon} from 'simple-icons'; ``` ### PHP Usage <img src="https://cdn.simpleicons.org/php/000/fff" alt="Php" align=left width=24 height=24> @@ -161,14 +162,14 @@ echo file_get_contents('path/to/package/icons/simpleicons.svg'); The below are known extensions to third-party tools. | Extension | Author | -| :- | :- | +| :-- | :-- | | [Blender add-on](https://github.com/mondeja/simple-icons-blender) <img src="https://cdn.simpleicons.org/blender/000/fff" alt="Blender" align=left width=24 height=24> | [@mondeja](https://github.com/mondeja) | | [Boxy SVG library](https://boxy-svg.com/ideas/298/simple-icons-library-provider) <img src="https://cdn.simpleicons.org/boxysvg/000/fff" alt="Boxy SVG" align=left width=24 height=24> | [@Jarek](https://boxy-svg.com/profiles/0000000000/jarek) | | [Drawio library](https://github.com/mondeja/simple-icons-drawio) <img src="https://cdn.simpleicons.org/diagramsdotnet/000/fff" alt="Drawio" align=left width=24 height=24> | [@mondeja](https://github.com/mondeja) | | [Figma plugin](https://www.figma.com/community/plugin/1149614463603005908) <img src="https://cdn.simpleicons.org/figma/000/fff" alt="Figma" align=left width=24 height=24> | [@LitoMore](https://github.com/LitoMore) | | [Miro app](https://miro.com/marketplace/brand-icons/) <img src="https://cdn.simpleicons.org/miro/000/fff" alt="Miro" align=left width=24 height=24> | [@LitoMore](https://github.com/LitoMore) | | [Raycast extension](https://www.raycast.com/litomore/simple-icons) <img src="https://cdn.simpleicons.org/raycast/000/fff" alt="Raycast" align=left width=24 height=24> | [@LitoMore](https://github.com/LitoMore) | -| [Stream Deck icon pack](https://github.com/mackenly/simple-icons-stream-deck) <img src="https://cdn.simpleicons.org/elgato/000/fff" alt="Stream Deck" align=left width=24 height=24> | [@mackenly](https://github.com/mackenly) | ![](https://img.shields.io/github/license/mackenly/simple-icons-stream-deck) | ![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmackenly%2Fsimple-icons-stream-deck%2Fmain%2Ftemplate%2Fmanifest.json&query=Version&logo=simpleicons&label=version) | +| [Stream Deck icon pack](https://github.com/mackenly/simple-icons-stream-deck) <img src="https://cdn.simpleicons.org/elgato/000/fff" alt="Stream Deck" align=left width=24 height=24> | [@mackenly](https://github.com/mackenly) | | [Webflow app](https://webflow.com/apps/detail/simple-icons) <img src="https://cdn.simpleicons.org/webflow/000/fff" alt="Webflow" align=left width=24 height=24> | [@diegoliv](https://github.com/diegoliv) | Maintain an extension? [Submit a PR][open-pr] to include it in the list above. @@ -179,28 +180,25 @@ The below are known third-party libraries for use in your own projects. We only | Library | Author | License | Simple Icons Version | | :-- | :-- | :-: | :-: | -| [Astro package](https://github.com/dzeiocom/simple-icons-astro) <img src="https://cdn.simpleicons.org/astro/000/fff" alt="Astro" align=left width=24 height=24> | [@Aviortheking](https://github.com/aviortheking) | ![](https://img.shields.io/github/license/dzeiocom/simple-icons-astro) | ![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fdzeiocom%2Fsimple-icons-astro%2Fmaster%2Fpackage.json&query=%24.version&logo=simpleicons&label=version) | -| [Blazor Nuget package](https://github.com/TimeWarpEngineering/timewarp-simple-icons) <img src="https://cdn.simpleicons.org/blazor/000/fff" alt="Blazor" align=left width=24 height=24> | [@TimeWarpEngineering](https://github.com/TimeWarpEngineering) | ![](https://img.shields.io/github/license/TimeWarpEngineering/timewarp-simple-icons) | ![](https://img.shields.io/badge/dynamic/xml?url=https%3A%2F%2Fraw.githubusercontent.com%2FTimeWarpEngineering%2Ftimewarp-simple-icons%2Fmain%2Fsource%2Ftimewarp-simple-icons%2Ftimewarp-simple-icons.csproj&query=%2FProject%2FPropertyGroup%2FVersion&logo=simpleicons&label=version) | -| [Flutter package](https://github.com/jlnrrg/simple_icons) <img src="https://cdn.simpleicons.org/flutter/000/fff" alt="Flutter" align=left width=24 height=24> | [@jlnrrg](https://github.com/jlnrrg) | ![](https://img.shields.io/github/license/jlnrrg/simple_icons) | ![](https://img.shields.io/badge/dynamic/yaml?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjlnrrg%2Fsimple_icons%2Fmaster%2Fpubspec.yaml&query=%24.version&logo=simpleicons&logoColor=white&label=version) -| [Framer component](https://github.com/LitoMore/simple-icons-framer) <img src="https://cdn.simpleicons.org/framer/000/fff" alt="Framer" align=left width=24 height=24> | [@LitoMore](https://github.com/LitoMore) | ![](https://img.shields.io/github/license/LitoMore/simple-icons-framer) | ![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fsimple-icons%2Fsimple-icons%2Fmaster%2Fpackage.json&query=%24.version&logo=simpleicons&label=version) | -| [Hugo module](https://github.com/foo-dogsquared/hugo-mod-simple-icons) <img src="https://cdn.simpleicons.org/hugo/000/fff" alt="Hugo" align=left width=24 height=24> | [@foo-dogsquared](https://github.com/foo-dogsquared) | ![](https://img.shields.io/github/license/foo-dogsquared/hugo-mod-simple-icons) | ![](https://img.shields.io/github/v/tag/foo-dogsquared/hugo-mod-simple-icons?logo=simpleicons&label=version) | -| [Kirby plugin](https://github.com/runxel/kirby3-simpleicons) <img src="https://cdn.simpleicons.org/kirby/000/fff" alt="Kirby" align=left width=24 height=24> | [@runxel](https://github.com/runxel) | ![](https://img.shields.io/github/license/runxel/kirby3-simpleicons) | ![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Frunxel%2Fkirby3-simpleicons%2Fmaster%2Fcomposer.json&query=%24..%5B'simple-icons%2Fsimple-icons'%5D&logo=simpleicons&label=version) | -| [LaTeX package](https://github.com/ineshbose/simple-icons-latex) <img src="https://cdn.simpleicons.org/latex/000/fff" alt="LaTeX" align=left width=24 height=24> | [@ineshbose](https://github.com/ineshbose) | ![](https://img.shields.io/github/license/ineshbose/simple-icons-latex) | ![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fineshbose%2Fsimple-icons-latex%2Fdevelop%2Fpackage.json&query=%24..%5B'simple-icons-font'%5D&logo=simpleicons&label=version) | -| [Laravel package](https://github.com/ublabs/blade-simple-icons) <img src="https://cdn.simpleicons.org/laravel/000/fff" alt="Laravel" align=left width=24 height=24> | [@adrian-ub](https://github.com/adrian-ub) | ![](https://img.shields.io/github/license/ublabs/blade-simple-icons) | ![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fsimple-icons%2Fsimple-icons%2Fmaster%2Fpackage.json&query=%24.version&logo=simpleicons&label=version) | -| [Python wheel](https://github.com/carstencodes/simplepycons) <img src="https://cdn.simpleicons.org/python/000/fff" alt="Python" align=left width=24 height=24> | [@carstencodes](https://github.com/carstencodes) | ![](https://img.shields.io/github/license/carstencodes/simplepycons) | ![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fcarstencodes%2Fsimplepycons%2Fmaster%2Fsimple-icons.json&query=%24.simple-icons.version&logo=simpleicons&label=version) | -| [React package](https://github.com/icons-pack/react-simple-icons) <img src="https://cdn.simpleicons.org/react/000/fff" alt="React" align=left width=24 height=24> | [@wootsbot](https://github.com/wootsbot) | ![](https://img.shields.io/github/license/icons-pack/react-simple-icons) | ![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Ficons-pack%2Freact-simple-icons%2Fmain%2Fpackage.json&query=%24..%5B'simple-icons'%5D&logo=simpleicons&label=version) | -| [Ruby gem](https://rubygems.org/gems/simple-icons-rails) <img src="https://cdn.simpleicons.org/rubygems/000/fff" alt="Ruby" align=left width=24 height=24> | [@thepew](https://github.com/the-pew-inc) | ![](https://img.shields.io/github/license/the-pew-inc/simple-icons-rails) | ![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fsimple-icons%2Fsimple-icons%2Fmaster%2Fpackage.json&query=%24.version&logo=simpleicons&label=version) | -| [Svelte package](https://github.com/icons-pack/svelte-simple-icons) <img src="https://cdn.simpleicons.org/svelte/000/fff" alt="Svelte" align=left width=24 height=24> | [@wootsbot](https://github.com/wootsbot) | ![](https://img.shields.io/github/license/icons-pack/svelte-simple-icons) | ![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Ficons-pack%2Fsvelte-simple-icons%2Fmain%2Fpackage.json&query=%24..%5B'simple-icons'%5D&logo=simpleicons&label=version) | -| [Vue 3 package](https://github.com/wyatt-herkamp/vue3-simple-icons) <img src="https://cdn.simpleicons.org/vuedotjs/000/fff" alt="Vue" align=left width=24 height=24> | [@wyatt-herkamp](https://github.com/wyatt-herkamp) | ![](https://img.shields.io/github/license/wyatt-herkamp/vue3-simple-icons) | ![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fwyatt-herkamp%2Fvue3-simple-icons%2Fmain%2Fsimple-icons.json&query=simpleIconsVersion&logo=simpleicons&label=version) | +| [Astro package](https://github.com/dzeiocom/simple-icons-astro) <img src="https://cdn.simpleicons.org/astro/000/fff" alt="Astro" align=left width=24 height=24> | [@Aviortheking](https://github.com/aviortheking) | ![License](https://img.shields.io/github/license/dzeiocom/simple-icons-astro) | ![Simple Icons version](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fdzeiocom%2Fsimple-icons-astro%2Fmaster%2Fpackage.json&query=%24.version&logo=simpleicons&label=version) | +| [Blazor Nuget package](https://github.com/TimeWarpEngineering/timewarp-simple-icons) <img src="https://cdn.simpleicons.org/blazor/000/fff" alt="Blazor" align=left width=24 height=24> | [@TimeWarpEngineering](https://github.com/TimeWarpEngineering) | ![License](https://img.shields.io/github/license/TimeWarpEngineering/timewarp-simple-icons) | ![Simple Icons version](https://img.shields.io/badge/dynamic/xml?url=https%3A%2F%2Fraw.githubusercontent.com%2FTimeWarpEngineering%2Ftimewarp-simple-icons%2Fmain%2Fsource%2Ftimewarp-simple-icons%2Ftimewarp-simple-icons.csproj&query=%2FProject%2FPropertyGroup%2FVersion&logo=simpleicons&label=version) | +| [Flutter package](https://github.com/jlnrrg/simple_icons) <img src="https://cdn.simpleicons.org/flutter/000/fff" alt="Flutter" align=left width=24 height=24> | [@jlnrrg](https://github.com/jlnrrg) | ![License](https://img.shields.io/github/license/jlnrrg/simple_icons) | ![Simple Icons version](https://img.shields.io/badge/dynamic/yaml?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjlnrrg%2Fsimple_icons%2Fmaster%2Fpubspec.yaml&query=%24.version&logo=simpleicons&logoColor=white&label=version) | +| [Framer component](https://github.com/LitoMore/simple-icons-framer) <img src="https://cdn.simpleicons.org/framer/000/fff" alt="Framer" align=left width=24 height=24> | [@LitoMore](https://github.com/LitoMore) | ![License](https://img.shields.io/github/license/LitoMore/simple-icons-framer) | ![Simple Icons version](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fsimple-icons%2Fsimple-icons%2Fmaster%2Fpackage.json&query=%24.version&logo=simpleicons&label=version) | +| [Hugo module](https://github.com/foo-dogsquared/hugo-mod-simple-icons) <img src="https://cdn.simpleicons.org/hugo/000/fff" alt="Hugo" align=left width=24 height=24> | [@foo-dogsquared](https://github.com/foo-dogsquared) | ![License](https://img.shields.io/github/license/foo-dogsquared/hugo-mod-simple-icons) | ![Simple Icons version](https://img.shields.io/github/v/tag/foo-dogsquared/hugo-mod-simple-icons?logo=simpleicons&label=version) | +| [Kirby plugin](https://github.com/runxel/kirby3-simpleicons) <img src="https://cdn.simpleicons.org/kirby/000/fff" alt="Kirby" align=left width=24 height=24> | [@runxel](https://github.com/runxel) | ![License](https://img.shields.io/github/license/runxel/kirby3-simpleicons) | ![Simple Icons version](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Frunxel%2Fkirby3-simpleicons%2Fmaster%2Fcomposer.json&query=%24..%5B'simple-icons%2Fsimple-icons'%5D&logo=simpleicons&label=version) | +| [LaTeX package](https://github.com/ineshbose/simple-icons-latex) <img src="https://cdn.simpleicons.org/latex/000/fff" alt="LaTeX" align=left width=24 height=24> | [@ineshbose](https://github.com/ineshbose) | ![License](https://img.shields.io/github/license/ineshbose/simple-icons-latex) | ![Simple Icons version](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fineshbose%2Fsimple-icons-latex%2Fdevelop%2Fpackage.json&query=%24..%5B'simple-icons-font'%5D&logo=simpleicons&label=version) | +| [Laravel package](https://github.com/ublabs/blade-simple-icons) <img src="https://cdn.simpleicons.org/laravel/000/fff" alt="Laravel" align=left width=24 height=24> | [@adrian-ub](https://github.com/adrian-ub) | ![License](https://img.shields.io/github/license/ublabs/blade-simple-icons) | ![Simple Icons version](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fsimple-icons%2Fsimple-icons%2Fmaster%2Fpackage.json&query=%24.version&logo=simpleicons&label=version) | +| [Python wheel](https://github.com/carstencodes/simplepycons) <img src="https://cdn.simpleicons.org/python/000/fff" alt="Python" align=left width=24 height=24> | [@carstencodes](https://github.com/carstencodes) | ![License](https://img.shields.io/github/license/carstencodes/simplepycons) | ![Simple Icons version](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fcarstencodes%2Fsimplepycons%2Fmaster%2Fsimple-icons.json&query=%24.simple-icons.version&logo=simpleicons&label=version) | +| [React package](https://github.com/icons-pack/react-simple-icons) <img src="https://cdn.simpleicons.org/react/000/fff" alt="React" align=left width=24 height=24> | [@wootsbot](https://github.com/wootsbot) | ![License](https://img.shields.io/github/license/icons-pack/react-simple-icons) | ![Simple Icons version](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Ficons-pack%2Freact-simple-icons%2Fmain%2Fpackage.json&query=%24..%5B'simple-icons'%5D&logo=simpleicons&label=version) | +| [Ruby gem](https://rubygems.org/gems/simple-icons-rails) <img src="https://cdn.simpleicons.org/rubygems/000/fff" alt="Ruby" align=left width=24 height=24> | [@thepew](https://github.com/the-pew-inc) | ![License](https://img.shields.io/github/license/the-pew-inc/simple-icons-rails) | ![Simple Icons version](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fsimple-icons%2Fsimple-icons%2Fmaster%2Fpackage.json&query=%24.version&logo=simpleicons&label=version) | +| [Svelte package](https://github.com/icons-pack/svelte-simple-icons) <img src="https://cdn.simpleicons.org/svelte/000/fff" alt="Svelte" align=left width=24 height=24> | [@wootsbot](https://github.com/wootsbot) | ![License](https://img.shields.io/github/license/icons-pack/svelte-simple-icons) | ![Simple Icons version](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Ficons-pack%2Fsvelte-simple-icons%2Fmain%2Fpackage.json&query=%24..%5B'simple-icons'%5D&logo=simpleicons&label=version) | +| [Vue 3 package](https://github.com/wyatt-herkamp/vue3-simple-icons) <img src="https://cdn.simpleicons.org/vuedotjs/000/fff" alt="Vue" align=left width=24 height=24> | [@wyatt-herkamp](https://github.com/wyatt-herkamp) | ![License](https://img.shields.io/github/license/wyatt-herkamp/vue3-simple-icons) | ![Simple Icons version](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fwyatt-herkamp%2Fvue3-simple-icons%2Fmain%2Fsimple-icons.json&query=simpleIconsVersion&logo=simpleicons&label=version) | Maintain a library? [Submit a PR][open-pr] to include it in the list above. ## Contribute -[![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Fsearch%2Fissues%3Fq%3Drepo%3Asimple-icons%2Fsimple-icons%2520label%3A%2522good%2520first%2520issue%2522%2520is%3Aopen%2520-linked%3Apr&query=%24.total_count&suffix=%20open&logo=github&label=good%20first%20issues&color=228f6c&labelColor=228f6c&logoColor=white&style=flat-square)](https://github.com/simple-icons/simple-icons/issues?q=is%3Aopen+label%3A%22good+first+issue%22+-linked%3Apr) -[![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Fsearch%2Fissues%3Fq%3Drepo%3Asimple-icons%2Fsimple-icons%2520label%3A%2522update%2520icon%2Fdata%2522%2C%2522new%2520icon%2522%2520is%3Aopen%2520-linked%3Apr&query=%24.total_count&suffix=%20open&logo=svg&logoColor=333&label=icon%20issues&labelColor=FFB13B&color=FFB13B&style=flat-square)](https://github.com/simple-icons/simple-icons/issues?q=is%3Aissue+is%3Aopen+label%3A%22new+icon%22%2C%22update+icon%2Fdata%22) -[![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Fsearch%2Fissues%3Fq%3Drepo%3Asimple-icons%2Fsimple-icons%2520is%3Aissue%2520is%3Aopen%2520label%3Ameta%2Cpackage%2520-linked%3Apr&query=%24.total_count&suffix=%20open&logo=typescript&logoColor=white&label=code%20issues&labelColor=3178C6&color=3178C6&style=flat-square)](https://github.com/simple-icons/simple-icons/issues?q=is%3Aissue+is%3Aopen+label%3Adocs%2Cmeta%2Cpackage+-linked%3Apr) -[![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Fsearch%2Fissues%3Fq%3Drepo%3Asimple-icons%2Fsimple-icons%2520label%3Adocs%2520is%3Aopen%2520-linked%3Apr&query=%24.total_count&suffix=%20open&logo=markdown&label=docs%20issues&labelColor=343a40&color=343a40&logoColor=FFF&style=flat-square)](https://github.com/simple-icons/simple-icons/issues?q=is%3Aopen+is%3Aissue+label%3Adocs+-linked%3Apr) +[![Good first issues](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Fsearch%2Fissues%3Fq%3Drepo%3Asimple-icons%2Fsimple-icons%2520label%3A%2522good%2520first%2520issue%2522%2520is%3Aopen%2520-linked%3Apr&query=%24.total_count&suffix=%20open&logo=github&label=good%20first%20issues&color=228f6c&labelColor=228f6c&logoColor=white&style=flat-square)](https://github.com/simple-icons/simple-icons/issues?q=is%3Aopen+label%3A%22good+first+issue%22+-linked%3Apr) [![Icon issues](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Fsearch%2Fissues%3Fq%3Drepo%3Asimple-icons%2Fsimple-icons%2520label%3A%2522update%2520icon%2Fdata%2522%2C%2522new%2520icon%2522%2520is%3Aopen%2520-linked%3Apr&query=%24.total_count&suffix=%20open&logo=svg&logoColor=333&label=icon%20issues&labelColor=FFB13B&color=FFB13B&style=flat-square)](https://github.com/simple-icons/simple-icons/issues?q=is%3Aissue+is%3Aopen+label%3A%22new+icon%22%2C%22update+icon%2Fdata%22) [![Code issues](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Fsearch%2Fissues%3Fq%3Drepo%3Asimple-icons%2Fsimple-icons%2520is%3Aissue%2520is%3Aopen%2520label%3Ameta%2Cpackage%2520-linked%3Apr&query=%24.total_count&suffix=%20open&logo=typescript&logoColor=white&label=code%20issues&labelColor=3178C6&color=3178C6&style=flat-square)](https://github.com/simple-icons/simple-icons/issues?q=is%3Aissue+is%3Aopen+label%3Adocs%2Cmeta%2Cpackage+-linked%3Apr) [![Documentation issues](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Fsearch%2Fissues%3Fq%3Drepo%3Asimple-icons%2Fsimple-icons%2520label%3Adocs%2520is%3Aopen%2520-linked%3Apr&query=%24.total_count&suffix=%20open&logo=markdown&label=docs%20issues&labelColor=343a40&color=343a40&logoColor=FFF&style=flat-square)](https://github.com/simple-icons/simple-icons/issues?q=is%3Aopen+is%3Aissue+label%3Adocs+-linked%3Apr) Information describing how to contribute can be found in the file [CONTRIBUTING.md](https://github.com/simple-icons/simple-icons/blob/develop/CONTRIBUTING.md) @@ -210,5 +208,8 @@ Information describing how to contribute can be found in the file [CONTRIBUTING. ## Contributors <a href="https://github.com/simple-icons/simple-icons/graphs/contributors"> - <img src="https://opencollective.com/simple-icons/contributors.svg?width=890&button=false" /> + <img + src="https://opencollective.com/simple-icons/contributors.svg?width=890&button=false" + alt="Contributors" + /> </a> diff --git a/VERSIONING.md b/VERSIONING.md index 4fe19b43c..b420dab33 100644 --- a/VERSIONING.md +++ b/VERSIONING.md @@ -5,7 +5,7 @@ We use [Semantic Versioning](https://semver.org/) to version Simple Icons. In sh For Simple Icons, given a change to the version number you can expect the following kinds of changes: | Version number increase | Kinds of changes | -| :---- | :---- | +| :-- | :-- | | _Major_ | Removed icons; Slug changed icons; Breaking API changes | | _Minor_ | New icons; Title changed icons; API changes | | _Patch_ | Updated SVGs; Updated metadata | diff --git a/lychee.toml b/lychee.toml index a2a6beea6..1fb7d4541 100644 --- a/lychee.toml +++ b/lychee.toml @@ -1 +1,5 @@ -exclude = ['^https://www\.similarweb\.com', '^https://www\.figma\.com/community/plugin'] +exclude = [ + '^https://www\.similarweb\.com', + '^https://www\.figma\.com/community/plugin', + '^https://www\.adobe\.com/products/illustrator\.html' +] diff --git a/package.json b/package.json index ca825ac1f..0fef4e793 100644 --- a/package.json +++ b/package.json @@ -98,6 +98,7 @@ "husky": "9.1.6", "inquirer-autocomplete-standalone": "0.8.1", "jsonschema": "1.4.1", + "markdownlint-cli2": "0.15.0", "mocha": "10.8.2", "named-html-entities-json": "1.0.0", "spdx-license-ids": "3.0.20", @@ -114,14 +115,15 @@ "clean": "node scripts/build/clean.js", "format": "npm run prettier -- --write && npm run xo:fix", "xo:fix": "xo --fix", - "prettier": "prettier --cache --ignore-unknown \"**/*.!(js|jsx|mjs|cjs|ts|tsx|mts|cts|svg)\"", - "lint": "npm run ourlint && npm run prettierlint && npm run jslint && npm run jsonlint && npm run svglint && npm run wslint", + "prettier": "prettier --ignore-unknown \"**/*.!(js|jsx|mjs|cjs|ts|tsx|mts|cts|svg)\"", + "lint": "npm run ourlint && npm run prettierlint && npm run jslint && npm run jsonlint && npm run svglint && npm run wslint && npm run markdownlint", "ourlint": "node scripts/lint/ourlint.js", - "prettierlint": "npm run prettier -- --check", + "prettierlint": "npm run prettier -- --check --cache", "jslint": "xo", "jsonlint": "node scripts/lint/jsonlint.js", "svglint": "svglint --ci --config svglint.config.mjs icons/*.svg", "wslint": "editorconfig-checker", + "markdownlint": "markdownlint-cli2 \"**/*.md\" \"#node_modules\"", "prepare": "husky", "prepublishOnly": "npm run build", "postpublish": "npm run clean",