Merge branch 'develop' into ssms
2
.github/ISSUE_TEMPLATE/config.yml
vendored
|
@ -1,4 +1,4 @@
|
|||
contact_links:
|
||||
- name: Website
|
||||
about: Issues and improvements for the website
|
||||
url: https://github.com/simple-icons/simple-icons-website/issues/new?assignees=&labels=&template=website.md
|
||||
url: https://github.com/simple-icons/simple-icons-website/issues/new?template=website.md
|
||||
|
|
19
.github/ISSUE_TEMPLATE/documentation.yml
vendored
|
@ -5,18 +5,17 @@ labels: [docs]
|
|||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >-
|
||||
value: |
|
||||
Before opening a new issue, make sure it isn't covered by an existing issue.
|
||||
Please search for [issues with the `docs` label][docs-issues] (including
|
||||
closed issues) before you continue.
|
||||
|
||||
|
||||
[docs-issues]: https://github.com/simple-icons/simple-icons/issues?q=is%3Aissue+label%3Adocs
|
||||
[docs-issues]: https://github.com/simple-icons/simple-icons/labels/docs
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Kind of Issue
|
||||
description: >-
|
||||
description: |
|
||||
If your issue type is not here, select "other" and explain in the
|
||||
"Description" field below.
|
||||
options: [Improvement, Mistake, Other]
|
||||
|
@ -33,15 +32,3 @@ body:
|
|||
placeholder: "Example: The documentation doesn't cover my use case of the NPM package..."
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Contributing
|
||||
description: >-
|
||||
This is an open source project and we welcome contributions. Do you want to
|
||||
work on this issue?
|
||||
options:
|
||||
- 'Yes'
|
||||
- 'No'
|
||||
validations:
|
||||
required: true
|
||||
|
|
10
.github/ISSUE_TEMPLATE/icon_removal.yml
vendored
|
@ -1,18 +1,18 @@
|
|||
name: Icon removal
|
||||
description: Report an icon for removal
|
||||
labels: [removal request]
|
||||
labels: [breaking change]
|
||||
title: 'Removal: <brand-name>'
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >-
|
||||
value: |
|
||||
Before opening a new issue, make sure it isn't covered by an existing issue.
|
||||
Please search for [issues with the `removal request` or `breaking change` label][removal-issues]
|
||||
Please search for [issues with the `breaking change` label][breaking-issues]
|
||||
(including closed issues) before you continue. If you find one for the brand
|
||||
you're reporting then leave a comment on it or add a reaction.
|
||||
|
||||
|
||||
[removal-issues]: https://github.com/simple-icons/simple-icons/issues?q=is%3Aissue+label%3A%22removal+request%22%2C%22breaking+change%22
|
||||
[breaking-issues]: https://github.com/simple-icons/simple-icons/labels/breaking%20change
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
|
|
35
.github/ISSUE_TEMPLATE/icon_request.yml
vendored
|
@ -1,21 +1,24 @@
|
|||
name: Icon request
|
||||
description: Request a new icon for Simple Icons
|
||||
labels: [new icon]
|
||||
title: 'Request: <brand-name>'
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >-
|
||||
value: |
|
||||
We won't add non-brand icons or anything related to illegal services. If in
|
||||
doubt, open an issue and we'll have a look. For more details see the
|
||||
[Contributing Guidelines].
|
||||
|
||||
|
||||
Before opening a new issue, make sure it isn't covered by an existing issue.
|
||||
Please search for [issues with the `new icon` label][new-icon-issues]
|
||||
(including closed issues) before you continue. If you find one for the brand
|
||||
you're requesting then leave a comment on it or add a reaction.
|
||||
|
||||
> [!TIP]
|
||||
> Similarweb is now trying to force users to log in in order to view statistics. You can bypass this by going directly to:
|
||||
> `https://similarweb.com/website/google.com`, replacing `google.com` with the TLD you would like to get the stats on!
|
||||
|
||||
[contributing guidelines]: https://github.com/simple-icons/simple-icons/blob/develop/CONTRIBUTING.md
|
||||
|
||||
|
@ -31,7 +34,7 @@ body:
|
|||
- type: input
|
||||
attributes:
|
||||
label: Website
|
||||
description: >-
|
||||
description: |
|
||||
For non-web brands you can add a relevant link. You can put "None" if you don't
|
||||
think there's a website.
|
||||
placeholder: 'Example: https://simpleicons.org'
|
||||
|
@ -41,15 +44,13 @@ body:
|
|||
- type: textarea
|
||||
attributes:
|
||||
label: Popularity Metric
|
||||
description: >-
|
||||
Provide either a [Similarweb rank], which must range from 0-500,000 to qualify
|
||||
or the number of GitHub stars, which must be above 5,000 to qualify. If
|
||||
Similarweb does not have a rank for your brand or these numbers do not meet
|
||||
our requirements, you can still open the issue. In this case, please provide
|
||||
any information regarding the brand's popularity you think is relevant.
|
||||
|
||||
description: |
|
||||
Provide either a [Similarweb rank], which must be in the top 500,000 to qualify,
|
||||
or failing that another metric from [our contributing guidelines] that we can
|
||||
use to assess the popularity of the requested brand.
|
||||
|
||||
[Similarweb rank]: https://www.similarweb.com
|
||||
[our contributing guidelines]: https://github.com/simple-icons/simple-icons/blob/develop/CONTRIBUTING.md#assessing-popularity
|
||||
placeholder: 'Example: The Similarweb rank is 261,758. See https://www.similarweb.com/website/simpleicons.org'
|
||||
validations:
|
||||
required: true
|
||||
|
@ -57,7 +58,7 @@ body:
|
|||
- type: textarea
|
||||
attributes:
|
||||
label: Official Resources for Icon and Color
|
||||
description: >-
|
||||
description: |
|
||||
Media kits, brand guidelines, SVG files, etc. You can set
|
||||
this to "None" if you are unable to find any resources.
|
||||
placeholder: |
|
||||
|
@ -76,15 +77,3 @@ body:
|
|||
- Is the icon released under a license?
|
||||
- If you think the brand might not be accepted, why do you think it should be considered?
|
||||
placeholder: 'Example: There are two variants of this icon...'
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Contributing
|
||||
description: >-
|
||||
This is an open source project and we welcome contributions. Do you want to
|
||||
add this icon?
|
||||
options:
|
||||
- 'Yes'
|
||||
- 'No'
|
||||
validations:
|
||||
required: true
|
||||
|
|
24
.github/ISSUE_TEMPLATE/icon_update.yml
vendored
|
@ -1,18 +1,18 @@
|
|||
name: Icon update
|
||||
description: Help us improve by reporting outdated icons
|
||||
labels: [icon outdated]
|
||||
labels: [update icon/data]
|
||||
title: 'Update: <brand-name>'
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >-
|
||||
value: |
|
||||
Before opening a new issue, make sure it isn't covered by an existing issue.
|
||||
Please search for [issues with the `icon outdated` label][icon-outdated-issues]
|
||||
Please search for [issues with the `update icon/data` label][update-icon-data-issues]
|
||||
(including closed issues) before you continue. If you find one for the brand
|
||||
you're reporting then leave a comment on it or add a reaction.
|
||||
|
||||
|
||||
[icon-outdated-issues]: https://github.com/simple-icons/simple-icons/issues?q=is%3Aissue+label%3A%22icon+outdated%22
|
||||
[update-icon-data-issues]: https://github.com/simple-icons/simple-icons/labels/update%20icon/data
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
|
@ -24,7 +24,7 @@ body:
|
|||
- type: textarea
|
||||
attributes:
|
||||
label: Official Resources for Icon and Color
|
||||
description: >-
|
||||
description: |
|
||||
Media kits, brand guidelines, SVG files, etc. You can set
|
||||
this to "None" if you are unable to find any resources.
|
||||
placeholder: |
|
||||
|
@ -42,15 +42,3 @@ body:
|
|||
- Are there multiple options for the logo and/or color?
|
||||
- Is the icon released under a license?
|
||||
placeholder: 'Example: There are two variants of this icon...'
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Contributing
|
||||
description: >-
|
||||
This is an open source project and we welcome contributions. Do you want to
|
||||
update this icon?
|
||||
options:
|
||||
- 'Yes'
|
||||
- 'No'
|
||||
validations:
|
||||
required: true
|
||||
|
|
11
.github/ISSUE_TEMPLATE/package.yml
vendored
|
@ -1,22 +1,21 @@
|
|||
name: Packages
|
||||
description: Report problems and suggest ideas for the packages
|
||||
description: Report problems and suggest ideas for the NPM and Packagist packages
|
||||
labels: [package]
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >-
|
||||
value: |
|
||||
Before opening a new issue, make sure it isn't covered by an existing issue.
|
||||
Please search for [issues with the `package` label][package-issues] (including
|
||||
closed issues) before you continue.
|
||||
|
||||
|
||||
[package-issues]: https://github.com/simple-icons/simple-icons/issues?q=is%3Aissue+label%3Apackage
|
||||
[package-issues]: https://github.com/simple-icons/simple-icons/labels/package
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Kind of Issue
|
||||
description: >-
|
||||
description: |
|
||||
If your issue type is not here, select "other" and explain in the
|
||||
"Description" field below.
|
||||
options: [Bug, Feature, Performance, Other]
|
||||
|
@ -41,7 +40,7 @@ body:
|
|||
- type: textarea
|
||||
attributes:
|
||||
label: Other Software
|
||||
description: >-
|
||||
description: |
|
||||
The software that you are using the package with (Node.js & NPM, PHP & Packagist,
|
||||
Browser(s), other) and their versions. You can put "None" if you are unsure.
|
||||
placeholder: |
|
||||
|
|
19
.github/PULL_REQUEST_TEMPLATE.md
vendored
|
@ -3,22 +3,25 @@ Before opening your pull request, have a quick look at our contribution guidelin
|
|||
https://github.com/simple-icons/simple-icons/blob/develop/CONTRIBUTING.md
|
||||
|
||||
Consider adding a preview image of your submission using:
|
||||
https://petershaggynoble.github.io/SI-Sandbox/preview/
|
||||
https://wasm.simpleicons.org/preview
|
||||
-->
|
||||
|
||||
**Issue:** closes #
|
||||
|
||||
**Similarweb rank:**
|
||||
<!-- The Similarweb rank can be retrieved at https://www.similarweb.com
|
||||
Please see our contributing guidelines for more details on how we
|
||||
assess a brand's popularity. -->
|
||||
**Popularity metric:**
|
||||
|
||||
<!--
|
||||
Regardless of whether or not the linked issue (if there is one) has a metric, please include the metric here for PR reviewers to validate. See our contributing guidelines at https://github.com/simple-icons/simple-icons/blob/develop/CONTRIBUTING.md#assessing-popularity for more details on how we assess a brand's popularity.
|
||||
-->
|
||||
|
||||
### Checklist
|
||||
- [ ] I updated the JSON data in `_data/simple-icons.json`
|
||||
- [ ] I optimized the icon with SVGO or SVGOMG
|
||||
- [ ] The SVG `viewbox` is `0 0 24 24`
|
||||
|
||||
- [ ] I updated the JSON data in `_data/simple-icons.json`
|
||||
- [ ] I optimized the icon with SVGO or SVGOMG
|
||||
- [ ] The SVG `viewbox` is `0 0 24 24`
|
||||
|
||||
### Description
|
||||
|
||||
<!--
|
||||
Anything relevant, for example:
|
||||
- Why did you pick the hex value?
|
||||
|
|
25
.github/actions/get-labels/action.yml
vendored
Normal file
|
@ -0,0 +1,25 @@
|
|||
name: Get issue/pull request labels
|
||||
description: Get the current labels of an issue or pull request through the GitHub API
|
||||
|
||||
inputs:
|
||||
issue_number:
|
||||
description: Issue or pull request number to get labels from
|
||||
required: true
|
||||
github-token:
|
||||
description: GitHub token used to authenticate with the GitHub API
|
||||
required: true
|
||||
outputs:
|
||||
labels:
|
||||
description: Labels of the issue or pull request
|
||||
value: ${{ steps.get-labels.outputs.labels }}
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- id: get-labels
|
||||
shell: sh
|
||||
env:
|
||||
GH_TOKEN: ${{ inputs.github-token }}
|
||||
run: |
|
||||
labels="$(gh api 'repos/simple-icons/simple-icons/issues/${{ inputs.issue_number }}' --jq '.labels.[].name' | tr '\n' ',')"
|
||||
echo "labels=$labels" >> $GITHUB_OUTPUT
|
16
.github/actions/get-version/action.yml
vendored
Normal file
|
@ -0,0 +1,16 @@
|
|||
name: Get version
|
||||
description: Get the current version of the project
|
||||
|
||||
outputs:
|
||||
version:
|
||||
description: The version of the project
|
||||
value: ${{ steps.get-version.outputs.version }}
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- id: get-version
|
||||
shell: sh
|
||||
run: |
|
||||
version="$(grep version -m 1 -i package.json | sed 's/[ \",:version]//g')"
|
||||
echo "version=$version" >> $GITHUB_OUTPUT
|
9
.github/labeler.yml
vendored
|
@ -1,6 +1,13 @@
|
|||
new icon:
|
||||
- any: [icons/*.svg]
|
||||
status: added
|
||||
icon outdated:
|
||||
update icon/data:
|
||||
- any: [icons/*.svg]
|
||||
status: modified
|
||||
docs:
|
||||
- any: ['*.md']
|
||||
status: modified
|
||||
meta:
|
||||
- any: ['.github/*', 'scripts/*', 'tests/*', '*']
|
||||
- all: ['!*.md', '!icons/*.svg', '!_data/*', '!package.json']
|
||||
status: modified
|
||||
|
|
7
.github/markdown-link-check.json
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"ignorePatterns": [
|
||||
{
|
||||
"pattern": "^https://www.similarweb.com"
|
||||
}
|
||||
]
|
||||
}
|
5
.github/renovate.json5
vendored
|
@ -12,12 +12,9 @@
|
|||
// Use our labelling system
|
||||
labels: ['dependencies'],
|
||||
|
||||
// Schedule the PRs to interleave with our release schedule
|
||||
schedule: 'on the 2nd and 4th day instance on sunday after 11pm',
|
||||
|
||||
// We generally always want the major version
|
||||
separateMajorMinor: false,
|
||||
|
||||
// We manually update digest dependencies (eg. hashes in Github actions)
|
||||
digest: { enabled: false },
|
||||
digest: {enabled: false},
|
||||
}
|
||||
|
|
83
.github/workflows/add-labels-priority.yml
vendored
|
@ -8,28 +8,40 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
if: github.event.action == 'opened'
|
||||
steps:
|
||||
- uses: ericcornelissen/labeler@label-based-on-status
|
||||
- uses: actions/create-github-app-token@v1
|
||||
id: app-token
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
app-id: ${{ vars.BOT_APP_ID }}
|
||||
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
|
||||
- uses: simple-icons/labeler@v1
|
||||
with:
|
||||
repo-token: ${{ steps.app-token.outputs.token }}
|
||||
|
||||
assign-to-project:
|
||||
runs-on: ubuntu-latest
|
||||
name: Assign to Project
|
||||
if: github.event.action == 'opened'
|
||||
needs: triage
|
||||
env:
|
||||
MY_GITHUB_TOKEN: ${{ secrets.AUTO_ASSIGN_WORKFLOW_TOKEN }}
|
||||
steps:
|
||||
- uses: actions/create-github-app-token@v1
|
||||
id: app-token
|
||||
with:
|
||||
app-id: ${{ vars.BOT_APP_ID }}
|
||||
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- id: get-labels
|
||||
name: Get labels
|
||||
run: |
|
||||
labels="$(curl --retry 5 -s https://api.github.com/repos/simple-icons/simple-icons/pulls/${{ github.event.pull_request.number }} | jq '.labels[].name' | tr '\n' ',' | sed -e 's/"//g' -e 's/,$//')"
|
||||
echo "labels=$labels" >> $GITHUB_OUTPUT
|
||||
uses: ./.github/actions/get-labels
|
||||
with:
|
||||
issue_number: ${{ github.event.pull_request.number }}
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- id: get-si-members
|
||||
name: Get simple-icons members
|
||||
run: |
|
||||
members="$(curl -H 'Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' --retry 5 -s https://api.github.com/orgs/simple-icons/members | jq .[].login | tr '\n' ',' | sed -e 's/"//g' -e 's/,$//')"
|
||||
members="$(curl -H 'Authorization: Bearer ${{ steps.app-token.outputs.token }}' --retry 5 -s https://api.github.com/orgs/simple-icons/members | jq .[].login | tr '\n' ',' | sed -e 's/"//g' -e 's/,$//')"
|
||||
echo "members=$members" >> $GITHUB_OUTPUT
|
||||
|
||||
- id: get-linked-issues
|
||||
|
@ -50,9 +62,11 @@ jobs:
|
|||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- id: priority-1
|
||||
name: Assign `icon outdated` pull requests to "Priority 1"
|
||||
name: Assign `update icon/data` pull requests to "Priority 1"
|
||||
uses: srggrs/assign-one-project-github-action@1.3.1
|
||||
if: contains(steps.get-labels.outputs.labels, 'icon outdated')
|
||||
env:
|
||||
MY_GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
|
||||
if: contains(steps.get-labels.outputs.labels, 'update icon/data')
|
||||
with:
|
||||
project: https://github.com/orgs/simple-icons/projects/2
|
||||
column_name: Priority 1
|
||||
|
@ -60,6 +74,8 @@ jobs:
|
|||
- id: priority-2
|
||||
name: Assign `new icon` pull requests to "Priority 2"
|
||||
uses: srggrs/assign-one-project-github-action@1.3.1
|
||||
env:
|
||||
MY_GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
|
||||
# the PR has the `new icon` label along with a linked issue and
|
||||
# the opener is not a member of simple-icons organization
|
||||
if: |
|
||||
|
@ -70,11 +86,45 @@ jobs:
|
|||
project: https://github.com/orgs/simple-icons/projects/2
|
||||
column_name: Priority 2
|
||||
|
||||
- id: priority-3
|
||||
name: Assign `new icon` pull requests by maintainers to "Priority 3"
|
||||
uses: srggrs/assign-one-project-github-action@1.3.1
|
||||
env:
|
||||
MY_GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
|
||||
# the PR has the `new icon` label along with a linked issue and
|
||||
# the opener is a member of the simple-icons organisation
|
||||
if: |
|
||||
contains(steps.get-labels.outputs.labels, 'new icon') &&
|
||||
join(steps.get-linked-issues.outputs.issues) != '' &&
|
||||
contains(steps.get-si-members.outputs.members, github.event.pull_request.user.login) == true
|
||||
with:
|
||||
project: https://github.com/orgs/simple-icons/projects/2
|
||||
column_name: Priority 3
|
||||
|
||||
- id: priority-4
|
||||
name: Assign `new icon` pull requests by maintainers without an issue to "Priority 4"
|
||||
uses: srggrs/assign-one-project-github-action@1.3.1
|
||||
env:
|
||||
MY_GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
|
||||
# the PR has the `new icon` label but with no linked issue and
|
||||
# the opener is a member of the simple-icons organisation
|
||||
if: |
|
||||
contains(steps.get-labels.outputs.labels, 'new icon') &&
|
||||
join(steps.get-linked-issues.outputs.issues) == '' &&
|
||||
contains(steps.get-si-members.outputs.members, github.event.pull_request.user.login) == true
|
||||
with:
|
||||
project: https://github.com/orgs/simple-icons/projects/2
|
||||
column_name: Priority 4
|
||||
|
||||
- name: Assign pull requests to "Unprioritised"
|
||||
uses: srggrs/assign-one-project-github-action@1.3.1
|
||||
env:
|
||||
MY_GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
|
||||
if: |
|
||||
steps.priority-1.conclusion == 'skipped' &&
|
||||
steps.priority-2.conclusion == 'skipped'
|
||||
steps.priority-2.conclusion == 'skipped' &&
|
||||
steps.priority-3.conclusion == 'skipped' &&
|
||||
steps.priority-4.conclusion == 'skipped'
|
||||
with:
|
||||
project: https://github.com/orgs/simple-icons/projects/2
|
||||
column_name: Unprioritised
|
||||
|
@ -85,11 +135,16 @@ jobs:
|
|||
if: |
|
||||
github.event.action != 'opened' &&
|
||||
github.event.pull_request.merged == false
|
||||
env:
|
||||
MY_GITHUB_TOKEN: ${{ secrets.AUTO_ASSIGN_WORKFLOW_TOKEN }}
|
||||
steps:
|
||||
- uses: actions/create-github-app-token@v1
|
||||
id: app-token
|
||||
with:
|
||||
app-id: ${{ vars.BOT_APP_ID }}
|
||||
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
|
||||
- name: Assign closed pull requests to "Completed or Abandoned"
|
||||
uses: srggrs/assign-one-project-github-action@1.3.1
|
||||
env:
|
||||
MY_GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
|
||||
with:
|
||||
project: https://github.com/orgs/simple-icons/projects/2
|
||||
column_name: Completed or Abandoned
|
||||
|
|
28
.github/workflows/autoclose-issues.yml
vendored
|
@ -8,21 +8,30 @@ jobs:
|
|||
run:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- id: match-title
|
||||
name: Match title
|
||||
- uses: actions/create-github-app-token@v1
|
||||
id: app-token
|
||||
with:
|
||||
app-id: ${{ vars.BOT_APP_ID }}
|
||||
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- id: match-java
|
||||
name: Match Java
|
||||
env:
|
||||
ISSUE_TITLE: ${{ github.event.issue.title }}
|
||||
# if the title contains the word Java (case insensitive)
|
||||
# we make sure that this word is the end of the string or is followed by a space character (ex. we do not want to match javascript)
|
||||
# we make sure that this word is the beginning of the string or is preceded by a space character (ex. we do not want to match foojava)
|
||||
run: |
|
||||
if [[ "${{ github.event.issue.title }}" =~ (^|[[:space:]])([jJ][aA][vV][aA])([[:space:]]|$) ]]; then
|
||||
if [[ "$ISSUE_TITLE" =~ (^|[[:space:]])([jJ][aA][vV][aA])([[:space:]]|$) ]]; then
|
||||
echo "match=true" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- id: get-labels
|
||||
name: Get labels
|
||||
run: |
|
||||
labels="$(curl --retry 5 -s https://api.github.com/repos/simple-icons/simple-icons/issues/${{ github.event.issue.number }} | jq '.labels[].name' | tr '\n' ',' | sed -e 's/"//g' -e 's/,$//')"
|
||||
echo "labels=$labels" >> $GITHUB_OUTPUT
|
||||
uses: ./.github/actions/get-labels
|
||||
with:
|
||||
issue_number: ${{ github.event.issue.number }}
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
# if the issue is labeled as a 'new icon' and it matches Java, we
|
||||
# - add a comment referring to the removal request
|
||||
|
@ -30,10 +39,11 @@ jobs:
|
|||
# - we close the issue
|
||||
- name: Close the issue
|
||||
if: |
|
||||
steps.match-title.outputs.match == 'true' &&
|
||||
steps.match-java.outputs.match == 'true' &&
|
||||
contains(steps.get-labels.outputs.labels, 'new icon')
|
||||
uses: actions/github-script@v6
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
github-token: ${{ steps.app-token.outputs.token }}
|
||||
script: |
|
||||
github.rest.issues.createComment({
|
||||
issue_number: context.issue.number,
|
||||
|
|
46
.github/workflows/create-release.yml
vendored
|
@ -23,10 +23,15 @@ jobs:
|
|||
did-create-pr: ${{ steps.release.outputs.did-create-pr }}
|
||||
new-version: ${{ steps.release.outputs.new-version }}
|
||||
steps:
|
||||
- uses: LitoMore/simple-icons-release-action@9969e1266c9e470fe015dbd825a2897423e9270e
|
||||
- uses: actions/create-github-app-token@v1
|
||||
id: app-token
|
||||
with:
|
||||
app-id: ${{ vars.BOT_APP_ID }}
|
||||
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
|
||||
- uses: simple-icons/release-action@v1
|
||||
id: release
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
repo-token: ${{ steps.app-token.outputs.token }}
|
||||
version-bump:
|
||||
runs-on: ubuntu-latest
|
||||
needs: release-pr
|
||||
|
@ -34,25 +39,42 @@ jobs:
|
|||
github.event_name != 'push' &&
|
||||
needs.release-pr.outputs.did-create-pr == 'true'
|
||||
steps:
|
||||
- uses: actions/create-github-app-token@v1
|
||||
id: app-token
|
||||
with:
|
||||
app-id: ${{ vars.BOT_APP_ID }}
|
||||
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
# Ensure the commit can be pushed regardless of branch protections (must belong to an admin of this repo)
|
||||
token: ${{ secrets.RELEASE_TOKEN }}
|
||||
token: ${{ steps.app-token.outputs.token }}
|
||||
# Ensure we are checked out on the develop branch
|
||||
ref: develop
|
||||
- name: Use Node.js 20.x
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: npm
|
||||
cache-dependency-path: '**/package.json'
|
||||
- name: Bump version
|
||||
run: node ./scripts/release/bump-version.js "${{ needs.release-pr.outputs.new-version }}"
|
||||
run: |
|
||||
npm version --no-commit-hooks --no-git-tag-version \
|
||||
"${{ needs.release-pr.outputs.new-version }}"
|
||||
- name: Install dependencies
|
||||
run: npm i --ignore-scripts --no-audit --no-fund
|
||||
- name: Update major version in CDN URLs
|
||||
run: node ./scripts/release/update-cdn-urls.js
|
||||
run: node scripts/release/update-cdn-urls.js
|
||||
- name: Update SVGs count milestone
|
||||
run: node ./scripts/release/update-svgs-count.js
|
||||
run: node scripts/release/update-svgs-count.js
|
||||
- name: Update slugs table
|
||||
run: node ./scripts/release/update-slugs-table.js
|
||||
run: node scripts/release/update-slugs-table.js
|
||||
- name: Update SDK Typescript definitions
|
||||
run: node scripts/release/update-sdk-ts-defs.js
|
||||
- name: Commit version bump
|
||||
uses: stefanzweifel/git-auto-commit-action@v4.16.0
|
||||
uses: stefanzweifel/git-auto-commit-action@v5
|
||||
with:
|
||||
commit_message: version bump
|
||||
commit_user_name: 'github-actions[bot]'
|
||||
commit_user_email: 'github-actions[bot]@users.noreply.github.com'
|
||||
commit_author: 'github-actions[bot] <github-actions[bot]@users.noreply.github.com>'
|
||||
commit_user_name: 'simple-icons[bot]'
|
||||
commit_user_email: 'simple-icons[bot]@users.noreply.github.com'
|
||||
commit_author: 'simple-icons[bot] <simple-icons[bot]@users.noreply.github.com>'
|
||||
|
|
7
.github/workflows/merge-release.yml
vendored
|
@ -8,6 +8,11 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
if: contains(github.event.pull_request.labels.*.name, 'release')
|
||||
steps:
|
||||
- uses: actions/create-github-app-token@v1
|
||||
id: app-token
|
||||
with:
|
||||
app-id: ${{ vars.BOT_APP_ID }}
|
||||
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
|
||||
- uses: simple-icons/release-action@v1
|
||||
with:
|
||||
repo-token: ${{ secrets.RELEASE_TOKEN }}
|
||||
repo-token: ${{ steps.app-token.outputs.token }}
|
||||
|
|
10
.github/workflows/potential-duplicates.yml
vendored
|
@ -7,10 +7,15 @@ jobs:
|
|||
run:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/create-github-app-token@v1
|
||||
id: app-token
|
||||
with:
|
||||
app-id: ${{ vars.BOT_APP_ID }}
|
||||
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
|
||||
- uses: wow-actions/potential-duplicates@v1
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
label: potential duplicate
|
||||
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
|
||||
label: duplicate
|
||||
exclude: |
|
||||
adding
|
||||
add
|
||||
|
@ -24,6 +29,7 @@ jobs:
|
|||
miss
|
||||
needing
|
||||
need
|
||||
new
|
||||
please
|
||||
requesting
|
||||
request
|
||||
|
|
106
.github/workflows/publish.yml
vendored
|
@ -10,20 +10,15 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Use Node.js 16.x
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Use Node.js 20.x
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 16.x
|
||||
- name: Cache dependencies
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.npm
|
||||
key: ${{ runner.os }}-node-${{ hashFiles('**/package.json') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-node-
|
||||
node-version: 20
|
||||
cache: npm
|
||||
cache-dependency-path: '**/package.json'
|
||||
- name: Install dependencies
|
||||
run: npm i
|
||||
run: npm i --ignore-scripts --no-audit --no-fund
|
||||
- name: Run linters
|
||||
run: npm run lint
|
||||
- name: Build NodeJS package
|
||||
|
@ -36,30 +31,25 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Use Node.js 16.x
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Use Node.js 20.x
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 16.x
|
||||
- name: Cache dependencies
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.npm
|
||||
key: ${{ runner.os }}-node-${{ hashFiles('**/package.json') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-node-
|
||||
- name: Remove dark theme images from README
|
||||
uses: mondeja/strip-gh-theme-links@v4
|
||||
with:
|
||||
files: README.md
|
||||
keep: light
|
||||
strict: true
|
||||
node-version: 20
|
||||
cache: npm
|
||||
cache-dependency-path: '**/package.json'
|
||||
- id: get-version
|
||||
uses: ./.github/actions/get-version
|
||||
- name: Install dependencies
|
||||
run: npm i
|
||||
run: npm i --ignore-scripts --no-audit --no-fund
|
||||
- name: Reformat to regular markdown
|
||||
run: node scripts/release/reformat-markdown.js "${{ steps.get-version.outputs.version }}"
|
||||
- name: Update SDK Typescript definitions
|
||||
run: node scripts/release/update-sdk-ts-defs.js
|
||||
- name: Build NodeJS package
|
||||
run: npm run build
|
||||
- name: Deploy to NPM
|
||||
uses: JS-DevTools/npm-publish@v2
|
||||
uses: JS-DevTools/npm-publish@v3
|
||||
with:
|
||||
token: ${{ secrets.NPM_TOKEN }}
|
||||
github:
|
||||
|
@ -67,31 +57,29 @@ jobs:
|
|||
needs: sanity-check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/create-github-app-token@v1
|
||||
id: app-token
|
||||
with:
|
||||
app-id: ${{ vars.BOT_APP_ID }}
|
||||
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Get commit message (for release title and body)
|
||||
id: commit
|
||||
uses: kceb/git-message-action@v2
|
||||
- name: Get release version
|
||||
id: get-version
|
||||
run: |
|
||||
export PACKAGE_VERSION=$(cat package.json | grep 'version' | sed 's/[ \",:]//g' | sed 's/version//')
|
||||
echo "::set-output name=version::$PACKAGE_VERSION"
|
||||
- name: Remove dark theme images from README
|
||||
uses: mondeja/strip-gh-theme-links@v4
|
||||
with:
|
||||
files: README.md
|
||||
keep: light
|
||||
strict: true
|
||||
uses: kceb/git-message-action@v3
|
||||
- id: get-version
|
||||
uses: ./.github/actions/get-version
|
||||
- name: Reformat to regular markdown
|
||||
run: node scripts/release/reformat-markdown.js "${{ steps.get-version.outputs.version }}"
|
||||
- name: Configure GIT credentials
|
||||
run: |
|
||||
git config user.name "${GITHUB_ACTOR}"
|
||||
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
|
||||
git config user.name "simple-icons[bot]"
|
||||
git config user.email "simple-icons[bot]@users.noreply.github.com"
|
||||
# Commit that will only be included in the tag
|
||||
- name: Commit dark theme images strip
|
||||
- name: Commit CDN theme image links removal
|
||||
run: |
|
||||
git add README.md
|
||||
git commit -m 'Strip README dark theme image links'
|
||||
git commit -m 'Replace README CDN theme image links'
|
||||
- name: Create and push git tag
|
||||
run: |
|
||||
set -e
|
||||
|
@ -99,22 +87,28 @@ jobs:
|
|||
git tag -a "${tag}" -m "${{ steps.commit.outputs.git-message }}"
|
||||
git push origin "${tag}"
|
||||
- name: Create release
|
||||
uses: actions/create-release@v1
|
||||
uses: softprops/action-gh-release@v2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
|
||||
with:
|
||||
tag_name: ${{ steps.get-version.outputs.version }}
|
||||
release_name: ${{ steps.commit.outputs.title }}
|
||||
name: ${{ steps.commit.outputs.title }}
|
||||
body: ${{ steps.commit.outputs.body }}
|
||||
font:
|
||||
name: Trigger simple-icons-font release
|
||||
needs: npm
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/create-github-app-token@v1
|
||||
id: app-token
|
||||
with:
|
||||
app-id: ${{ vars.BOT_APP_ID }}
|
||||
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
|
||||
repositories: 'simple-icons-font'
|
||||
- name: Trigger simple-icons-font release
|
||||
run: |
|
||||
curl -X POST \
|
||||
-H "Authorization: Bearer ${{ secrets.REMOTE_DISPATCH_TOKEN }}" \
|
||||
-H "Authorization: Bearer ${{ steps.app-token.outputs.token }}" \
|
||||
-d '{"ref":"develop"}' \
|
||||
https://api.github.com/repos/simple-icons/simple-icons-font/actions/workflows/auto-release.yml/dispatches
|
||||
website:
|
||||
|
@ -122,9 +116,15 @@ jobs:
|
|||
needs: npm
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/create-github-app-token@v1
|
||||
id: app-token
|
||||
with:
|
||||
app-id: ${{ vars.BOT_APP_ID }}
|
||||
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
|
||||
repositories: 'simple-icons-website'
|
||||
- name: Trigger simple-icons-website update
|
||||
run: |
|
||||
curl -X POST \
|
||||
-H "Authorization: Bearer ${{ secrets.REMOTE_DISPATCH_TOKEN }}" \
|
||||
-H "Authorization: Bearer ${{ steps.app-token.outputs.token }}" \
|
||||
-d '{"ref":"master"}' \
|
||||
https://api.github.com/repos/simple-icons/simple-icons-website/actions/workflows/auto-release.yml/dispatches
|
||||
|
|
34
.github/workflows/remove-labels.yml
vendored
|
@ -13,39 +13,55 @@ jobs:
|
|||
if: github.event.pull_request.merged
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: mondeja/remove-labels-gh-action@v1
|
||||
- uses: actions/create-github-app-token@v1
|
||||
id: app-token
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
app-id: ${{ vars.BOT_APP_ID }}
|
||||
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
|
||||
- uses: mondeja/remove-labels-gh-action@v2
|
||||
with:
|
||||
token: ${{ steps.app-token.outputs.token }}
|
||||
labels: |
|
||||
assessing
|
||||
awaiting reply
|
||||
changes requested
|
||||
duplicate
|
||||
in discussion
|
||||
invalid
|
||||
out of scope
|
||||
pending
|
||||
permission required
|
||||
won't add
|
||||
remove-closed-pr-labels:
|
||||
name: Remove closed pull request labels
|
||||
if: github.event_name == 'pull_request_target' && (! github.event.pull_request.merged)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: mondeja/remove-labels-gh-action@v1
|
||||
- uses: actions/create-github-app-token@v1
|
||||
id: app-token
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
app-id: ${{ vars.BOT_APP_ID }}
|
||||
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
|
||||
- uses: mondeja/remove-labels-gh-action@v2
|
||||
with:
|
||||
token: ${{ steps.app-token.outputs.token }}
|
||||
labels: |
|
||||
in discussion
|
||||
pending
|
||||
assessing
|
||||
remove-closed-issue-labels:
|
||||
name: Remove closed issue labels
|
||||
if: github.event.issue.state == 'closed'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: mondeja/remove-labels-gh-action@v1
|
||||
- uses: actions/create-github-app-token@v1
|
||||
id: app-token
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
app-id: ${{ vars.BOT_APP_ID }}
|
||||
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
|
||||
- uses: mondeja/remove-labels-gh-action@v2
|
||||
with:
|
||||
token: ${{ steps.app-token.outputs.token }}
|
||||
labels: |
|
||||
in discussion
|
||||
pending
|
||||
tracking
|
||||
help wanted
|
||||
assessing
|
||||
|
|
23
.github/workflows/renovate.yml
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
name: Renovate
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 1 5,11 *'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
renovate:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 15
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v4
|
||||
- name: Renovate
|
||||
uses: renovatebot/github-action@v40.1.4
|
||||
with:
|
||||
configurationFile: .github/renovate.json5
|
||||
token: ${{ secrets.RENOVATE_TOKEN }}
|
||||
env:
|
||||
LOG_LEVEL: debug
|
81
.github/workflows/verify.yml
vendored
|
@ -7,20 +7,15 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Use Node.js 16.x
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Use Node.js 20.x
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 16.x
|
||||
- name: Cache dependencies
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.npm
|
||||
key: ${{ runner.os }}-node-${{ hashFiles('**/package.json') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-node-
|
||||
node-version: 20
|
||||
cache: npm
|
||||
cache-dependency-path: '**/package.json'
|
||||
- name: Install dependencies
|
||||
run: npm i
|
||||
run: npm i --ignore-scripts --no-audit --no-fund
|
||||
- name: Build NodeJS package
|
||||
run: npm run build
|
||||
lint:
|
||||
|
@ -28,22 +23,41 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Use Node.js 16.x
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Use Node.js 20.x
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 16.x
|
||||
- name: Cache dependencies
|
||||
uses: actions/cache@v3
|
||||
node-version: 20
|
||||
cache: npm
|
||||
cache-dependency-path: '**/package.json'
|
||||
- name: Detect changed files
|
||||
uses: dorny/paths-filter@v3
|
||||
id: changes
|
||||
with:
|
||||
path: ~/.npm
|
||||
key: ${{ runner.os }}-node-${{ hashFiles('**/package.json') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-node-
|
||||
list-files: shell
|
||||
filters: |
|
||||
docs:
|
||||
- '*.md'
|
||||
- '.github/**.md'
|
||||
icons:
|
||||
- 'icons/*.svg'
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Install dependencies
|
||||
run: npm i
|
||||
run: npm i --ignore-scripts --no-audit --no-fund
|
||||
- name: Run linter
|
||||
run: npm run lint
|
||||
run: |
|
||||
sed -i 's/icons\/\*\.svg/$npm_config_icons/' package.json
|
||||
npm run lint --icons='${{ steps.changes.outputs.icons_files }}'
|
||||
env:
|
||||
# Authorise GitHub API requests for editorconfig-checker
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Check documentation links
|
||||
if: steps.changes.outputs.docs == true
|
||||
run: |
|
||||
npx markdown-link-check --retry \
|
||||
--config .github/markdown-link-check.json \
|
||||
${{ steps.changes.outputs.docs_files }}
|
||||
continue-on-error: ${{ github.ref == 'refs/heads/develop' }}
|
||||
- name: Verify file permissions
|
||||
run: |
|
||||
CHECK_DIRS="icons/ _data/"
|
||||
|
@ -67,19 +81,14 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Use Node.js 16.x
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Use Node.js 20.x
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 16.x
|
||||
- name: Cache dependencies
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.npm
|
||||
key: ${{ runner.os }}-node-${{ hashFiles('**/package.json') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-node-
|
||||
node-version: 20
|
||||
cache: npm
|
||||
cache-dependency-path: '**/package.json'
|
||||
- name: Install dependencies
|
||||
run: npm i
|
||||
run: npm i --ignore-scripts --no-audit --no-fund
|
||||
- name: Run tests
|
||||
run: npm run test
|
||||
|
|
|
@ -1,7 +1,2 @@
|
|||
#!/bin/sh
|
||||
. "$(dirname $0)/_/husky.sh"
|
||||
|
||||
git stash -q --keep-index
|
||||
npm run format
|
||||
git add .
|
||||
git stash pop -q
|
||||
git add -u
|
||||
|
|
|
@ -32,12 +32,12 @@
|
|||
"aka": {
|
||||
"description": "The brand is also known as (e.g. full length name or abbreviation)",
|
||||
"type": "array",
|
||||
"items": { "type": "string" }
|
||||
"items": {"type": "string"}
|
||||
},
|
||||
"dup": {
|
||||
"description": "Different brands that use the exact same icon",
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/definitions/duplicate" }
|
||||
"items": {"$ref": "#/definitions/duplicate"}
|
||||
},
|
||||
"loc": {
|
||||
"description": "Localized names of the brand",
|
||||
|
@ -46,7 +46,7 @@
|
|||
"old": {
|
||||
"description": "Old names, for backwards compatibility",
|
||||
"type": "array",
|
||||
"items": { "type": "string" }
|
||||
"items": {"type": "string"}
|
||||
}
|
||||
},
|
||||
"minProperties": 1,
|
||||
|
@ -590,10 +590,6 @@
|
|||
"ZPL-2.0",
|
||||
"ZPL-2.1"
|
||||
]
|
||||
},
|
||||
"url": {
|
||||
"description": "The URL to the license text by the brand",
|
||||
"$ref": "#/definitions/url"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
|
@ -642,6 +638,10 @@
|
|||
"guidelines": {
|
||||
"description": "The brand guidelines, if different from the original",
|
||||
"$ref": "#/definitions/url"
|
||||
},
|
||||
"loc": {
|
||||
"description": "Localized names of the brand",
|
||||
"$ref": "#/definitions/locale"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
|
@ -684,7 +684,7 @@
|
|||
"pattern": "^https://github\\.com/(?!(features/actions)|(sponsors)|(logos)$)"
|
||||
},
|
||||
"then": {
|
||||
"pattern": "^https://github\\.com/[^/]+/[^/]+/(blob/[a-f\\d]{40}/[^\\s]+)|(tree/[a-f\\d]{40}(/[^\\s]+)?)|(((issues)|(pull))/\\d+#issuecomment-\\d+)$"
|
||||
"pattern": "^https://github\\.com/[^/]+/[^/]+/(blob/[a-f\\d]{40}/[^\\s]+)|(tree/[a-f\\d]{40}(/[^\\s]+)?)|(((issues)|(pull)|(discussions))/\\d+#((issuecomment)|(discussioncomment))-\\d+)$"
|
||||
},
|
||||
"else": {
|
||||
"$ref": "#/definitions/url"
|
||||
|
@ -702,7 +702,7 @@
|
|||
"icons": {
|
||||
"description": "A list of brands",
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/definitions/brand" }
|
||||
"items": {"$ref": "#/definitions/brand"}
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
|
|
4
.npmrc
|
@ -1 +1,5 @@
|
|||
package-lock=false
|
||||
save-exact=true
|
||||
|
||||
# Icons to lint with SVGLint on CI (see `lint` step on verify.yml workflow)
|
||||
icons=icons/*.svg
|
||||
|
|
|
@ -2,15 +2,7 @@
|
|||
# See the following thread for the discussion:
|
||||
# https://github.com/simple-icons/simple-icons-font/pull/73
|
||||
*.md
|
||||
!.github/PULL_REQUEST_TEMPLATE.md
|
||||
|
||||
# We use our own formatting for the data files.
|
||||
_data/simple-icons.json
|
||||
|
||||
# JavaScript templates are invalid JavaScript so cannot be formatted.
|
||||
scripts/build/templates/*.js
|
||||
|
||||
# Generated JavaScript files don't need to be formatted
|
||||
index.js
|
||||
index.mjs
|
||||
index.d.ts
|
||||
sdk.js
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"trailingComma": "all",
|
||||
"singleQuote": true
|
||||
"singleQuote": true,
|
||||
"bracketSpacing": false
|
||||
}
|
||||
|
|
|
@ -4,8 +4,5 @@
|
|||
},
|
||||
"icon-size": {
|
||||
"M22.915 8.321c-.642-.997-1.542-1.879-2.672-2.624-2.185-1.436-5.056-2.227-8.084-2.227-1.012 0-2.009.088-2.976.262a9.84 9.84 0 0 0-2.046-1.509C4.378.848 1.947 1.361.719 1.802a.59.59 0 0 0-.229.964c.866.894 2.299 2.66 1.946 4.267C1.067 8.431.324 10.117.324 11.872c0 1.789.742 3.475 2.112 4.873.352 1.607-1.081 3.374-1.947 4.268a.589.589 0 0 0 .229.963c1.228.442 3.659.955 6.418-.421a9.892 9.892 0 0 0 2.046-1.509c.968.174 1.964.262 2.976.262 3.029 0 5.9-.79 8.084-2.226 1.131-.744 2.031-1.626 2.672-2.624.715-1.11 1.077-2.306 1.077-3.552.001-1.279-.361-2.473-1.076-3.585zm-10.881 9.916c-1.309 0-2.558-.169-3.696-.474l-.832.8A7.609 7.609 0 0 1 5.972 19.7a6.033 6.033 0 0 1-2.17.613c.041-.073.078-.147.117-.221.833-1.531 1.059-2.907.674-4.128-1.363-1.071-2.181-2.442-2.181-3.935 0-3.427 4.308-6.206 9.621-6.206 5.313 0 9.622 2.779 9.622 6.206.001 3.429-4.307 6.208-9.621 6.208zM8.85 12.01c0 .777-.635 1.407-1.418 1.407-.783 0-1.418-.63-1.418-1.407s.635-1.407 1.418-1.407c.783 0 1.418.63 1.418 1.407zm4.563 0c0 .777-.635 1.407-1.418 1.407-.783 0-1.418-.63-1.418-1.407s.635-1.407 1.418-1.407c.783 0 1.418.63 1.418 1.407zm4.565 0c0 .777-.635 1.407-1.418 1.407-.783 0-1.418-.63-1.418-1.407s.635-1.407 1.418-1.407c.783 0 1.418.63 1.418 1.407z": "Rocket.Chat"
|
||||
},
|
||||
"ineffective-segments": {
|
||||
"M12 1.25l6.75 6.637V2L12 1.25zm0 0l-6.05 7h12.1l-6.05-7zm0 0L5.25 2v5.887L12 1.25zM5.25 2L0 9l4.416-.68L5.25 2zM0 9l11.959 13.703.008-.014L4.443 9H0zm18.75-7l.834 6.32L24 9l-5.25-7zM24 9h-4.506l-7.523 13.69.029.06L24 9zM12 22.75l-.031-.057-.008.012.039.045zM5.436 9l6.533 13.686L18.564 9H5.436Z": "Sketch"
|
||||
}
|
||||
}
|
||||
|
|
929
.svglintrc.mjs
|
@ -1,929 +0,0 @@
|
|||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import {
|
||||
getDirnameFromImportMeta,
|
||||
htmlFriendlyToTitle,
|
||||
collator,
|
||||
} from './sdk.mjs';
|
||||
import svgpath from 'svgpath';
|
||||
import svgPathBbox from 'svg-path-bbox';
|
||||
import parsePath from 'svg-path-segments';
|
||||
|
||||
const __dirname = getDirnameFromImportMeta(import.meta.url);
|
||||
const dataFile = path.join(__dirname, '_data', 'simple-icons.json');
|
||||
const htmlNamedEntitiesFile = path.join(
|
||||
__dirname,
|
||||
'node_modules',
|
||||
'named-html-entities-json',
|
||||
'index.json',
|
||||
);
|
||||
const svglintIgnoredFile = path.join(__dirname, '.svglint-ignored.json');
|
||||
|
||||
const data = JSON.parse(fs.readFileSync(dataFile, 'utf8'));
|
||||
const htmlNamedEntities = JSON.parse(
|
||||
fs.readFileSync(htmlNamedEntitiesFile, 'utf8'),
|
||||
);
|
||||
const svglintIgnores = JSON.parse(fs.readFileSync(svglintIgnoredFile, 'utf8'));
|
||||
|
||||
const svgRegexp =
|
||||
/^<svg( [^\s]*=".*"){3}><title>.*<\/title><path d=".*"\/><\/svg>$/;
|
||||
const negativeZerosRegexp = /-0(?=[^\.]|[\s\d\w]|$)/g;
|
||||
|
||||
const iconSize = 24;
|
||||
const iconFloatPrecision = 3;
|
||||
const iconMaxFloatPrecision = 5;
|
||||
const iconTolerance = 0.001;
|
||||
|
||||
// set env SI_UPDATE_IGNORE to recreate the ignore file
|
||||
const updateIgnoreFile = process.env.SI_UPDATE_IGNORE === 'true';
|
||||
const ignoreFile = './.svglint-ignored.json';
|
||||
const iconIgnored = !updateIgnoreFile ? svglintIgnores : {};
|
||||
|
||||
const sortObjectByKey = (obj) => {
|
||||
return Object.keys(obj)
|
||||
.sort()
|
||||
.reduce((r, k) => Object.assign(r, { [k]: obj[k] }), {});
|
||||
};
|
||||
|
||||
const sortObjectByValue = (obj) => {
|
||||
return Object.keys(obj)
|
||||
.sort((a, b) => collator.compare(obj[a], obj[b]))
|
||||
.reduce((r, k) => Object.assign(r, { [k]: obj[k] }), {});
|
||||
};
|
||||
|
||||
const removeLeadingZeros = (number) => {
|
||||
// convert 0.03 to '.03'
|
||||
return number.toString().replace(/^(-?)(0)(\.?.+)/, '$1$3');
|
||||
};
|
||||
|
||||
/**
|
||||
* Given three points, returns if the middle one (x2, y2) is collinear
|
||||
* to the line formed by the two limit points.
|
||||
**/
|
||||
const collinear = (x1, y1, x2, y2, x3, y3) => {
|
||||
return x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2) === 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the number of digits after the decimal point.
|
||||
* @param num The number of interest.
|
||||
*/
|
||||
const countDecimals = (num) => {
|
||||
if (num && num % 1) {
|
||||
let [base, op, trail] = num.toExponential().split(/e([+-])/);
|
||||
let elen = parseInt(trail, 10);
|
||||
let idx = base.indexOf('.');
|
||||
return idx == -1
|
||||
? elen
|
||||
: base.length - idx - 1 + (op === '+' ? -elen : elen);
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the index at which the first path value of an SVG starts.
|
||||
* @param svgFileContent The raw SVG as text.
|
||||
*/
|
||||
const getPathDIndex = (svgFileContent) => {
|
||||
const pathDStart = '<path d="';
|
||||
return svgFileContent.indexOf(pathDStart) + pathDStart.length;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the index at which the text of the first `<title></title>` tag starts.
|
||||
* @param svgFileContent The raw SVG as text.
|
||||
**/
|
||||
const getTitleTextIndex = (svgFileContent) => {
|
||||
const titleStart = '<title>';
|
||||
return svgFileContent.indexOf(titleStart) + titleStart.length;
|
||||
};
|
||||
|
||||
/**
|
||||
* Convert a hexadecimal number passed as string to decimal number as integer.
|
||||
* @param hex The hexadecimal number representation to convert.
|
||||
**/
|
||||
const hexadecimalToDecimal = (hex) => {
|
||||
let result = 0,
|
||||
digitValue;
|
||||
hex = hex.toLowerCase();
|
||||
for (var i = 0; i < hex.length; i++) {
|
||||
digitValue = '0123456789abcdefgh'.indexOf(hex[i]);
|
||||
result = result * 16 + digitValue;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
if (updateIgnoreFile) {
|
||||
process.on('exit', () => {
|
||||
// ensure object output order is consistent due to async svglint processing
|
||||
const sorted = sortObjectByKey(iconIgnored);
|
||||
for (const linterName in sorted) {
|
||||
sorted[linterName] = sortObjectByValue(sorted[linterName]);
|
||||
}
|
||||
|
||||
fs.writeFileSync(ignoreFile, JSON.stringify(sorted, null, 2) + '\n', {
|
||||
flag: 'w',
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
const isIgnored = (linterName, path) => {
|
||||
return (
|
||||
iconIgnored[linterName] && iconIgnored[linterName].hasOwnProperty(path)
|
||||
);
|
||||
};
|
||||
|
||||
const ignoreIcon = (linterName, path, $) => {
|
||||
if (!iconIgnored[linterName]) {
|
||||
iconIgnored[linterName] = {};
|
||||
}
|
||||
|
||||
const title = $.find('title').text();
|
||||
const iconName = htmlFriendlyToTitle(title);
|
||||
|
||||
iconIgnored[linterName][path] = iconName;
|
||||
};
|
||||
|
||||
export default {
|
||||
rules: {
|
||||
elm: {
|
||||
svg: 1,
|
||||
'svg > title': 1,
|
||||
'svg > path': 1,
|
||||
'*': false,
|
||||
},
|
||||
attr: [
|
||||
{
|
||||
// ensure that the SVG elm has the appropriate attrs alphabetically ordered
|
||||
role: 'img',
|
||||
viewBox: `0 0 ${iconSize} ${iconSize}`,
|
||||
xmlns: 'http://www.w3.org/2000/svg',
|
||||
'rule::selector': 'svg',
|
||||
'rule::whitelist': true,
|
||||
'rule::order': true,
|
||||
},
|
||||
{
|
||||
// ensure that the title elm has the appropriate attr
|
||||
'rule::selector': 'svg > title',
|
||||
'rule::whitelist': true,
|
||||
},
|
||||
{
|
||||
// ensure that the path element only has the 'd' attr (no style, opacity, etc.)
|
||||
d: /^[,a-zA-Z0-9\. -]+$/,
|
||||
'rule::selector': 'svg > path',
|
||||
'rule::whitelist': true,
|
||||
},
|
||||
],
|
||||
custom: [
|
||||
(reporter, $, ast) => {
|
||||
reporter.name = 'icon-title';
|
||||
|
||||
const iconTitleText = $.find('title').text(),
|
||||
xmlNamedEntitiesCodepoints = [38, 60, 62],
|
||||
xmlNamedEntities = ['amp', 'lt', 'gt'];
|
||||
let _validCodepointsRepr = true;
|
||||
|
||||
// avoid character codepoints as hexadecimal representation
|
||||
const hexadecimalCodepoints = Array.from(
|
||||
iconTitleText.matchAll(/&#x([A-Fa-f0-9]+);/g),
|
||||
);
|
||||
if (hexadecimalCodepoints.length > 0) {
|
||||
_validCodepointsRepr = false;
|
||||
|
||||
hexadecimalCodepoints.forEach((match) => {
|
||||
const charHexReprIndex =
|
||||
getTitleTextIndex(ast.source) + match.index + 1;
|
||||
const charDec = hexadecimalToDecimal(match[1]);
|
||||
|
||||
let charRepr;
|
||||
if (xmlNamedEntitiesCodepoints.includes(charDec)) {
|
||||
charRepr = `&${
|
||||
xmlNamedEntities[xmlNamedEntitiesCodepoints.indexOf(charDec)]
|
||||
};`;
|
||||
} else if (charDec < 128) {
|
||||
charRepr = String.fromCodePoint(charDec);
|
||||
} else {
|
||||
charRepr = `&#${charDec};`;
|
||||
}
|
||||
|
||||
reporter.error(
|
||||
`Hexadecimal representation of encoded character "${match[0]}" found at index ${charHexReprIndex}:` +
|
||||
` replace it with "${charRepr}".`,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
// avoid character codepoints as named entities
|
||||
const namedEntitiesCodepoints = Array.from(
|
||||
iconTitleText.matchAll(/&([A-Za-z0-9]+);/g),
|
||||
);
|
||||
if (namedEntitiesCodepoints.length > 0) {
|
||||
namedEntitiesCodepoints.forEach((match) => {
|
||||
const namedEntiyReprIndex =
|
||||
getTitleTextIndex(ast.source) + match.index + 1;
|
||||
|
||||
if (!xmlNamedEntities.includes(match[1].toLowerCase())) {
|
||||
_validCodepointsRepr = false;
|
||||
const namedEntityJsRepr = htmlNamedEntities[match[1]];
|
||||
let replacement;
|
||||
|
||||
if (
|
||||
namedEntityJsRepr === undefined ||
|
||||
namedEntityJsRepr.length != 1
|
||||
) {
|
||||
replacement = 'its decimal or literal representation';
|
||||
} else {
|
||||
const namedEntityDec = namedEntityJsRepr.codePointAt(0);
|
||||
if (namedEntityDec < 128) {
|
||||
replacement = `"${namedEntityJsRepr}"`;
|
||||
} else {
|
||||
replacement = `"&#${namedEntityDec};"`;
|
||||
}
|
||||
}
|
||||
|
||||
reporter.error(
|
||||
`Named entity representation of encoded character "${match[0]}" found at index ${namedEntiyReprIndex}.` +
|
||||
` Replace it with ${replacement}.`,
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (_validCodepointsRepr) {
|
||||
// compare encoded title with original title and report error if not equal
|
||||
const encodingMatches = Array.from(
|
||||
iconTitleText.matchAll(/&(#([0-9]+)|(amp|quot|lt|gt));/g),
|
||||
),
|
||||
encodedBuf = [];
|
||||
|
||||
const _indexesToIgnore = [];
|
||||
for (let m = 0; m < encodingMatches.length; m++) {
|
||||
let index = encodingMatches[m].index;
|
||||
for (let r = index; r < index + encodingMatches[m][0].length; r++) {
|
||||
_indexesToIgnore.push(r);
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = iconTitleText.length - 1; i >= 0; i--) {
|
||||
if (_indexesToIgnore.includes(i)) {
|
||||
encodedBuf.unshift(iconTitleText[i]);
|
||||
} else {
|
||||
// encode all non ascii characters plus "'&<> (XML named entities)
|
||||
let charDecimalCode = iconTitleText.charCodeAt(i);
|
||||
|
||||
if (charDecimalCode > 127) {
|
||||
encodedBuf.unshift(`&#${charDecimalCode};`);
|
||||
} else if (xmlNamedEntitiesCodepoints.includes(charDecimalCode)) {
|
||||
encodedBuf.unshift(
|
||||
`&${
|
||||
xmlNamedEntities[
|
||||
xmlNamedEntitiesCodepoints.indexOf(charDecimalCode)
|
||||
]
|
||||
};`,
|
||||
);
|
||||
} else {
|
||||
encodedBuf.unshift(iconTitleText[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
const encodedIconTitleText = encodedBuf.join('');
|
||||
if (encodedIconTitleText !== iconTitleText) {
|
||||
_validCodepointsRepr = false;
|
||||
|
||||
reporter.error(
|
||||
`Unencoded unicode characters found in title "${iconTitleText}":` +
|
||||
` rewrite it as "${encodedIconTitleText}".`,
|
||||
);
|
||||
}
|
||||
|
||||
// check if there are some other encoded characters in decimal notation
|
||||
// which shouldn't be encoded
|
||||
encodingMatches
|
||||
.filter((m) => !isNaN(m[2]))
|
||||
.forEach((match) => {
|
||||
const decimalNumber = parseInt(match[2]);
|
||||
if (decimalNumber < 128) {
|
||||
_validCodepointsRepr = false;
|
||||
|
||||
const decimalCodepointCharIndex =
|
||||
getTitleTextIndex(ast.source) + match.index + 1;
|
||||
if (xmlNamedEntitiesCodepoints.includes(decimalNumber)) {
|
||||
replacement = `"&${
|
||||
xmlNamedEntities[
|
||||
xmlNamedEntitiesCodepoints.indexOf(decimalNumber)
|
||||
]
|
||||
};"`;
|
||||
} else {
|
||||
replacement = String.fromCharCode(decimalNumber);
|
||||
replacement = replacement == '"' ? `'"'` : `"${replacement}"`;
|
||||
}
|
||||
|
||||
reporter.error(
|
||||
`Unnecessary encoded character "${match[0]}" found at index ${decimalCodepointCharIndex}:` +
|
||||
` replace it with ${replacement}.`,
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
if (_validCodepointsRepr) {
|
||||
const iconName = htmlFriendlyToTitle(iconTitleText);
|
||||
const iconExists = data.icons.some(
|
||||
(icon) => icon.title === iconName,
|
||||
);
|
||||
if (!iconExists) {
|
||||
reporter.error(
|
||||
`No icon with title "${iconName}" found in simple-icons.json`,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
(reporter, $, ast) => {
|
||||
reporter.name = 'icon-size';
|
||||
|
||||
const iconPath = $.find('path').attr('d');
|
||||
if (!updateIgnoreFile && isIgnored(reporter.name, iconPath)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const [minX, minY, maxX, maxY] = svgPathBbox(iconPath);
|
||||
const width = +(maxX - minX).toFixed(iconFloatPrecision);
|
||||
const height = +(maxY - minY).toFixed(iconFloatPrecision);
|
||||
|
||||
if (width === 0 && height === 0) {
|
||||
reporter.error(
|
||||
'Path bounds were reported as 0 x 0; check if the path is valid',
|
||||
);
|
||||
if (updateIgnoreFile) {
|
||||
ignoreIcon(reporter.name, iconPath, $);
|
||||
}
|
||||
} else if (width !== iconSize && height !== iconSize) {
|
||||
reporter.error(
|
||||
`Size of <path> must be exactly ${iconSize} in one dimension; the size is currently ${width} x ${height}`,
|
||||
);
|
||||
if (updateIgnoreFile) {
|
||||
ignoreIcon(reporter.name, iconPath, $);
|
||||
}
|
||||
}
|
||||
},
|
||||
(reporter, $, ast) => {
|
||||
reporter.name = 'icon-precision';
|
||||
|
||||
const iconPath = $.find('path').attr('d');
|
||||
if (!updateIgnoreFile && isIgnored(reporter.name, iconPath)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const segments = parsePath(iconPath),
|
||||
svgFileContent = $.html();
|
||||
|
||||
segments.forEach((segment) => {
|
||||
const precisionMax = Math.max(
|
||||
...segment.params.slice(1).map(countDecimals),
|
||||
);
|
||||
if (precisionMax > iconMaxFloatPrecision) {
|
||||
let errorMsg = `found ${precisionMax} decimals in segment "${iconPath.substring(
|
||||
segment.start,
|
||||
segment.end,
|
||||
)}"`;
|
||||
if (segment.chained) {
|
||||
let readableChain = iconPath.substring(
|
||||
segment.chainStart,
|
||||
segment.chainEnd,
|
||||
);
|
||||
if (readableChain.length > 20) {
|
||||
readableChain = `${readableChain.substring(0, 20)}...`;
|
||||
}
|
||||
errorMsg += ` of chain "${readableChain}"`;
|
||||
}
|
||||
errorMsg += ` at index ${
|
||||
segment.start + getPathDIndex(svgFileContent)
|
||||
}`;
|
||||
reporter.error(
|
||||
`Maximum precision should not be greater than ${iconMaxFloatPrecision}; ${errorMsg}`,
|
||||
);
|
||||
if (updateIgnoreFile) {
|
||||
ignoreIcon(reporter.name, iconPath, $);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
(reporter, $, ast) => {
|
||||
reporter.name = 'ineffective-segments';
|
||||
|
||||
const iconPath = $.find('path').attr('d');
|
||||
if (!updateIgnoreFile && isIgnored(reporter.name, iconPath)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const segments = parsePath(iconPath);
|
||||
const absSegments = svgpath(iconPath).abs().unshort().segments;
|
||||
|
||||
const lowerMovementCommands = ['m', 'l'];
|
||||
const lowerDirectionCommands = ['h', 'v'];
|
||||
const lowerCurveCommand = 'c';
|
||||
const lowerShorthandCurveCommand = 's';
|
||||
const lowerCurveCommands = [
|
||||
lowerCurveCommand,
|
||||
lowerShorthandCurveCommand,
|
||||
];
|
||||
const upperMovementCommands = ['M', 'L'];
|
||||
const upperHorDirectionCommand = 'H';
|
||||
const upperVerDirectionCommand = 'V';
|
||||
const upperDirectionCommands = [
|
||||
upperHorDirectionCommand,
|
||||
upperVerDirectionCommand,
|
||||
];
|
||||
const upperCurveCommand = 'C';
|
||||
const upperShorthandCurveCommand = 'S';
|
||||
const upperCurveCommands = [
|
||||
upperCurveCommand,
|
||||
upperShorthandCurveCommand,
|
||||
];
|
||||
const curveCommands = [...lowerCurveCommands, ...upperCurveCommands];
|
||||
const commands = [
|
||||
...lowerMovementCommands,
|
||||
...lowerDirectionCommands,
|
||||
...upperMovementCommands,
|
||||
...upperDirectionCommands,
|
||||
...curveCommands,
|
||||
];
|
||||
const isInvalidSegment = (
|
||||
[command, x1Coord, y1Coord, ...rest],
|
||||
index,
|
||||
) => {
|
||||
if (commands.includes(command)) {
|
||||
// Relative directions (h or v) having a length of 0
|
||||
if (lowerDirectionCommands.includes(command) && x1Coord === 0) {
|
||||
return true;
|
||||
}
|
||||
// Relative movement (m or l) having a distance of 0
|
||||
if (
|
||||
index > 0 &&
|
||||
lowerMovementCommands.includes(command) &&
|
||||
x1Coord === 0 &&
|
||||
y1Coord === 0
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
if (
|
||||
lowerCurveCommands.includes(command) &&
|
||||
x1Coord === 0 &&
|
||||
y1Coord === 0
|
||||
) {
|
||||
const [x2Coord, y2Coord] = rest;
|
||||
if (
|
||||
// Relative shorthand curve (s) having a control point of 0
|
||||
command === lowerShorthandCurveCommand ||
|
||||
// Relative bézier curve (c) having control points of 0
|
||||
(command === lowerCurveCommand &&
|
||||
x2Coord === 0 &&
|
||||
y2Coord === 0)
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (index > 0) {
|
||||
let [yPrevCoord, xPrevCoord] = [
|
||||
...absSegments[index - 1],
|
||||
].reverse();
|
||||
// If the previous command was a direction one, we need to iterate back until we find the missing coordinates
|
||||
if (upperDirectionCommands.includes(xPrevCoord)) {
|
||||
xPrevCoord = undefined;
|
||||
yPrevCoord = undefined;
|
||||
let idx = index;
|
||||
while (
|
||||
--idx > 0 &&
|
||||
(xPrevCoord === undefined || yPrevCoord === undefined)
|
||||
) {
|
||||
let [yPrevCoordDeep, xPrevCoordDeep] = [
|
||||
...absSegments[idx],
|
||||
].reverse();
|
||||
// If the previous command was a horizontal movement, we need to consider the single coordinate as x
|
||||
if (upperHorDirectionCommand === xPrevCoordDeep) {
|
||||
xPrevCoordDeep = yPrevCoordDeep;
|
||||
yPrevCoordDeep = undefined;
|
||||
}
|
||||
// If the previous command was a vertical movement, we need to consider the single coordinate as y
|
||||
if (upperVerDirectionCommand === xPrevCoordDeep) {
|
||||
xPrevCoordDeep = undefined;
|
||||
}
|
||||
if (
|
||||
xPrevCoord === undefined &&
|
||||
xPrevCoordDeep !== undefined
|
||||
) {
|
||||
xPrevCoord = xPrevCoordDeep;
|
||||
}
|
||||
if (
|
||||
yPrevCoord === undefined &&
|
||||
yPrevCoordDeep !== undefined
|
||||
) {
|
||||
yPrevCoord = yPrevCoordDeep;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (upperCurveCommands.includes(command)) {
|
||||
const [x2Coord, y2Coord, xCoord, yCoord] = rest;
|
||||
// Absolute shorthand curve (S) having the same coordinate as the previous segment and a control point equal to the ending point
|
||||
if (
|
||||
upperShorthandCurveCommand === command &&
|
||||
x1Coord === xPrevCoord &&
|
||||
y1Coord === yPrevCoord &&
|
||||
x1Coord === x2Coord &&
|
||||
y1Coord === y2Coord
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
// Absolute bézier curve (C) having the same coordinate as the previous segment and last control point equal to the ending point
|
||||
if (
|
||||
upperCurveCommand === command &&
|
||||
x1Coord === xPrevCoord &&
|
||||
y1Coord === yPrevCoord &&
|
||||
x2Coord === xCoord &&
|
||||
y2Coord === yCoord
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
// Absolute horizontal direction (H) having the same x coordinate as the previous segment
|
||||
(upperHorDirectionCommand === command &&
|
||||
x1Coord === xPrevCoord) ||
|
||||
// Absolute vertical direction (V) having the same y coordinate as the previous segment
|
||||
(upperVerDirectionCommand === command &&
|
||||
x1Coord === yPrevCoord) ||
|
||||
// Absolute movement (M or L) having the same coordinate as the previous segment
|
||||
(upperMovementCommands.includes(command) &&
|
||||
x1Coord === xPrevCoord &&
|
||||
y1Coord === yPrevCoord)
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const svgFileContent = $.html();
|
||||
|
||||
segments.forEach((segment, index) => {
|
||||
if (isInvalidSegment(segment.params, index)) {
|
||||
const [command, x1, y1, ...rest] = segment.params;
|
||||
|
||||
let errorMsg = `Innefective segment "${iconPath.substring(
|
||||
segment.start,
|
||||
segment.end,
|
||||
)}" found`,
|
||||
resolutionTip = 'should be removed';
|
||||
|
||||
if (curveCommands.includes(command)) {
|
||||
const [x2, y2, x, y] = rest;
|
||||
|
||||
if (
|
||||
command === lowerShorthandCurveCommand &&
|
||||
(x2 !== 0 || y2 !== 0)
|
||||
) {
|
||||
resolutionTip = `should be "l${removeLeadingZeros(
|
||||
x2,
|
||||
)} ${removeLeadingZeros(y2)}" or removed`;
|
||||
}
|
||||
if (command === upperShorthandCurveCommand) {
|
||||
resolutionTip = `should be "L${removeLeadingZeros(
|
||||
x2,
|
||||
)} ${removeLeadingZeros(y2)}" or removed`;
|
||||
}
|
||||
if (command === lowerCurveCommand && (x !== 0 || y !== 0)) {
|
||||
resolutionTip = `should be "l${removeLeadingZeros(
|
||||
x,
|
||||
)} ${removeLeadingZeros(y)}" or removed`;
|
||||
}
|
||||
if (command === upperCurveCommand) {
|
||||
resolutionTip = `should be "L${removeLeadingZeros(
|
||||
x,
|
||||
)} ${removeLeadingZeros(y)}" or removed`;
|
||||
}
|
||||
}
|
||||
|
||||
if (segment.chained) {
|
||||
let readableChain = iconPath.substring(
|
||||
segment.chainStart,
|
||||
segment.chainEnd,
|
||||
);
|
||||
if (readableChain.length > 20) {
|
||||
readableChain = `${readableChain.substring(0, 20)}...`;
|
||||
}
|
||||
errorMsg += ` in chain "${readableChain}"`;
|
||||
}
|
||||
errorMsg += ` at index ${
|
||||
segment.start + getPathDIndex(svgFileContent)
|
||||
}`;
|
||||
|
||||
reporter.error(`${errorMsg} (${resolutionTip})`);
|
||||
|
||||
if (updateIgnoreFile) {
|
||||
ignoreIcon(reporter.name, iconPath, $);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
(reporter, $, ast) => {
|
||||
reporter.name = 'collinear-segments';
|
||||
|
||||
const iconPath = $.find('path').attr('d');
|
||||
if (!updateIgnoreFile && isIgnored(reporter.name, iconPath)) {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts collinear coordinates from SVG path straight lines
|
||||
* (does not extracts collinear coordinates from curves).
|
||||
**/
|
||||
const getCollinearSegments = (iconPath) => {
|
||||
const segments = parsePath(iconPath),
|
||||
collinearSegments = [],
|
||||
straightLineCommands = 'HhVvLlMm',
|
||||
zCommands = 'Zz';
|
||||
|
||||
let currLine = [],
|
||||
currAbsCoord = [undefined, undefined],
|
||||
startPoint,
|
||||
_inStraightLine = false,
|
||||
_nextInStraightLine = false,
|
||||
_resetStartPoint = false;
|
||||
|
||||
for (let s = 0; s < segments.length; s++) {
|
||||
let seg = segments[s].params,
|
||||
cmd = seg[0],
|
||||
nextCmd = s + 1 < segments.length ? segments[s + 1][0] : null;
|
||||
|
||||
if (cmd === 'L') {
|
||||
currAbsCoord[0] = seg[1];
|
||||
currAbsCoord[1] = seg[2];
|
||||
} else if (cmd === 'l') {
|
||||
currAbsCoord[0] =
|
||||
(!currAbsCoord[0] ? 0 : currAbsCoord[0]) + seg[1];
|
||||
currAbsCoord[1] =
|
||||
(!currAbsCoord[1] ? 0 : currAbsCoord[1]) + seg[2];
|
||||
} else if (cmd === 'm') {
|
||||
currAbsCoord[0] =
|
||||
(!currAbsCoord[0] ? 0 : currAbsCoord[0]) + seg[1];
|
||||
currAbsCoord[1] =
|
||||
(!currAbsCoord[1] ? 0 : currAbsCoord[1]) + seg[2];
|
||||
startPoint = undefined;
|
||||
} else if (cmd === 'M') {
|
||||
currAbsCoord[0] = seg[1];
|
||||
currAbsCoord[1] = seg[2];
|
||||
startPoint = undefined;
|
||||
} else if (cmd === 'H') {
|
||||
currAbsCoord[0] = seg[1];
|
||||
} else if (cmd === 'h') {
|
||||
currAbsCoord[0] =
|
||||
(!currAbsCoord[0] ? 0 : currAbsCoord[0]) + seg[1];
|
||||
} else if (cmd === 'V') {
|
||||
currAbsCoord[1] = seg[1];
|
||||
} else if (cmd === 'v') {
|
||||
currAbsCoord[1] =
|
||||
(!currAbsCoord[1] ? 0 : currAbsCoord[1]) + seg[1];
|
||||
} else if (cmd === 'C') {
|
||||
currAbsCoord[0] = seg[5];
|
||||
currAbsCoord[1] = seg[6];
|
||||
} else if (cmd === 'a') {
|
||||
currAbsCoord[0] =
|
||||
(!currAbsCoord[0] ? 0 : currAbsCoord[0]) + seg[6];
|
||||
currAbsCoord[1] =
|
||||
(!currAbsCoord[1] ? 0 : currAbsCoord[1]) + seg[7];
|
||||
} else if (cmd === 'A') {
|
||||
currAbsCoord[0] = seg[6];
|
||||
currAbsCoord[1] = seg[7];
|
||||
} else if (cmd === 's') {
|
||||
currAbsCoord[0] =
|
||||
(!currAbsCoord[0] ? 0 : currAbsCoord[0]) + seg[1];
|
||||
currAbsCoord[1] =
|
||||
(!currAbsCoord[1] ? 0 : currAbsCoord[1]) + seg[2];
|
||||
} else if (cmd === 'S') {
|
||||
currAbsCoord[0] = seg[1];
|
||||
currAbsCoord[1] = seg[2];
|
||||
} else if (cmd === 't') {
|
||||
currAbsCoord[0] =
|
||||
(!currAbsCoord[0] ? 0 : currAbsCoord[0]) + seg[1];
|
||||
currAbsCoord[1] =
|
||||
(!currAbsCoord[1] ? 0 : currAbsCoord[1]) + seg[2];
|
||||
} else if (cmd === 'T') {
|
||||
currAbsCoord[0] = seg[1];
|
||||
currAbsCoord[1] = seg[2];
|
||||
} else if (cmd === 'c') {
|
||||
currAbsCoord[0] =
|
||||
(!currAbsCoord[0] ? 0 : currAbsCoord[0]) + seg[5];
|
||||
currAbsCoord[1] =
|
||||
(!currAbsCoord[1] ? 0 : currAbsCoord[1]) + seg[6];
|
||||
} else if (cmd === 'Q') {
|
||||
currAbsCoord[0] = seg[3];
|
||||
currAbsCoord[1] = seg[4];
|
||||
} else if (cmd === 'q') {
|
||||
currAbsCoord[0] =
|
||||
(!currAbsCoord[0] ? 0 : currAbsCoord[0]) + seg[3];
|
||||
currAbsCoord[1] =
|
||||
(!currAbsCoord[1] ? 0 : currAbsCoord[1]) + seg[4];
|
||||
} else if (zCommands.includes(cmd)) {
|
||||
// Overlapping in Z should be handled in another rule
|
||||
currAbsCoord = [startPoint[0], startPoint[1]];
|
||||
_resetStartPoint = true;
|
||||
} else {
|
||||
throw new Error(`"${cmd}" command not handled`);
|
||||
}
|
||||
|
||||
if (startPoint === undefined) {
|
||||
startPoint = [currAbsCoord[0], currAbsCoord[1]];
|
||||
} else if (_resetStartPoint) {
|
||||
startPoint = undefined;
|
||||
_resetStartPoint = false;
|
||||
}
|
||||
|
||||
_nextInStraightLine = straightLineCommands.includes(nextCmd);
|
||||
let _exitingStraightLine = _inStraightLine && !_nextInStraightLine;
|
||||
_inStraightLine = straightLineCommands.includes(cmd);
|
||||
|
||||
if (_inStraightLine) {
|
||||
currLine.push([currAbsCoord[0], currAbsCoord[1]]);
|
||||
} else {
|
||||
if (_exitingStraightLine) {
|
||||
if (straightLineCommands.includes(cmd)) {
|
||||
currLine.push([currAbsCoord[0], currAbsCoord[1]]);
|
||||
}
|
||||
// Get collinear coordinates
|
||||
for (let p = 1; p < currLine.length - 1; p++) {
|
||||
let _collinearCoord = collinear(
|
||||
currLine[p - 1][0],
|
||||
currLine[p - 1][1],
|
||||
currLine[p][0],
|
||||
currLine[p][1],
|
||||
currLine[p + 1][0],
|
||||
currLine[p + 1][1],
|
||||
);
|
||||
if (_collinearCoord) {
|
||||
collinearSegments.push(
|
||||
segments[s - currLine.length + p + 1],
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
currLine = [];
|
||||
}
|
||||
}
|
||||
|
||||
return collinearSegments;
|
||||
};
|
||||
|
||||
const collinearSegments = getCollinearSegments(iconPath),
|
||||
pathDIndex = getPathDIndex($.html());
|
||||
collinearSegments.forEach((segment) => {
|
||||
let errorMsg = `Collinear segment "${iconPath.substring(
|
||||
segment.start,
|
||||
segment.end,
|
||||
)}" found`;
|
||||
if (segment.chained) {
|
||||
let readableChain = iconPath.substring(
|
||||
segment.chainStart,
|
||||
segment.chainEnd,
|
||||
);
|
||||
if (readableChain.length > 20) {
|
||||
readableChain = `${readableChain.substring(0, 20)}...`;
|
||||
}
|
||||
errorMsg += ` in chain "${readableChain}"`;
|
||||
}
|
||||
errorMsg += ` at index ${
|
||||
segment.start + pathDIndex
|
||||
} (should be removed)`;
|
||||
reporter.error(errorMsg);
|
||||
});
|
||||
|
||||
if (collinearSegments.length) {
|
||||
if (updateIgnoreFile) {
|
||||
ignoreIcon(reporter.name, iconPath, $);
|
||||
}
|
||||
}
|
||||
},
|
||||
(reporter, $, ast) => {
|
||||
reporter.name = 'extraneous';
|
||||
|
||||
if (!svgRegexp.test(ast.source)) {
|
||||
if (ast.source.includes('\n') || ast.source.includes('\r')) {
|
||||
reporter.error(
|
||||
'Unexpected newline character(s) detected in SVG markup',
|
||||
);
|
||||
} else {
|
||||
reporter.error(
|
||||
'Unexpected character(s), most likely extraneous whitespace, detected in SVG markup',
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
(reporter, $, ast) => {
|
||||
reporter.name = 'negative-zeros';
|
||||
|
||||
const iconPath = $.find('path').attr('d');
|
||||
if (!updateIgnoreFile && isIgnored(reporter.name, iconPath)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Find negative zeros inside path
|
||||
const negativeZeroMatches = Array.from(
|
||||
iconPath.matchAll(negativeZerosRegexp),
|
||||
);
|
||||
if (negativeZeroMatches.length) {
|
||||
// Calculate the index for each match in the file
|
||||
const svgFileContent = $.html();
|
||||
const pathDIndex = getPathDIndex(svgFileContent);
|
||||
|
||||
negativeZeroMatches.forEach((match) => {
|
||||
const negativeZeroFileIndex = match.index + pathDIndex;
|
||||
const previousChar = svgFileContent[negativeZeroFileIndex - 1];
|
||||
const replacement = '0123456789'.includes(previousChar)
|
||||
? ' 0'
|
||||
: '0';
|
||||
reporter.error(
|
||||
`Found "-0" at index ${negativeZeroFileIndex} (should be "${replacement}")`,
|
||||
);
|
||||
});
|
||||
}
|
||||
},
|
||||
(reporter, $, ast) => {
|
||||
reporter.name = 'icon-centered';
|
||||
|
||||
const iconPath = $.find('path').attr('d');
|
||||
if (!updateIgnoreFile && isIgnored(reporter.name, iconPath)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const [minX, minY, maxX, maxY] = svgPathBbox(iconPath);
|
||||
const targetCenter = iconSize / 2;
|
||||
const centerX = +((minX + maxX) / 2).toFixed(iconFloatPrecision);
|
||||
const devianceX = centerX - targetCenter;
|
||||
const centerY = +((minY + maxY) / 2).toFixed(iconFloatPrecision);
|
||||
const devianceY = centerY - targetCenter;
|
||||
|
||||
if (
|
||||
Math.abs(devianceX) > iconTolerance ||
|
||||
Math.abs(devianceY) > iconTolerance
|
||||
) {
|
||||
reporter.error(
|
||||
`<path> must be centered at (${targetCenter}, ${targetCenter}); the center is currently (${centerX}, ${centerY})`,
|
||||
);
|
||||
if (updateIgnoreFile) {
|
||||
ignoreIcon(reporter.name, iconPath, $);
|
||||
}
|
||||
}
|
||||
},
|
||||
(reporter, $, ast) => {
|
||||
reporter.name = 'path-format';
|
||||
|
||||
const iconPath = $.find('path').attr('d');
|
||||
|
||||
const validPathFormatRegex = /^[Mm][MmZzLlHhVvCcSsQqTtAaEe0-9-,.\s]+$/;
|
||||
if (!validPathFormatRegex.test(iconPath)) {
|
||||
let errorMsg = 'Invalid path format',
|
||||
reason;
|
||||
|
||||
if (!/^[Mm]/.test(iconPath)) {
|
||||
// doesn't start with moveto
|
||||
reason = `should start with \"moveto\" command (\"M\" or \"m\"), but starts with \"${iconPath[0]}\"`;
|
||||
reporter.error(`${errorMsg}: ${reason}`);
|
||||
}
|
||||
|
||||
const validPathCharacters = 'MmZzLlHhVvCcSsQqTtAaEe0123456789-,. ',
|
||||
invalidCharactersMsgs = [],
|
||||
pathDIndex = getPathDIndex($.html());
|
||||
|
||||
for (let [i, char] of Object.entries(iconPath)) {
|
||||
if (validPathCharacters.indexOf(char) === -1) {
|
||||
invalidCharactersMsgs.push(
|
||||
`"${char}" at index ${pathDIndex + parseInt(i)}`,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// contains invalid characters
|
||||
if (invalidCharactersMsgs.length > 0) {
|
||||
reason = `unexpected character${
|
||||
invalidCharactersMsgs.length > 1 ? 's' : ''
|
||||
} found`;
|
||||
reason += ` (${invalidCharactersMsgs.join(', ')})`;
|
||||
reporter.error(`${errorMsg}: ${reason}`);
|
||||
}
|
||||
}
|
||||
},
|
||||
(reporter, $, ast) => {
|
||||
reporter.name = 'svg-format';
|
||||
|
||||
// Don't allow explicit '</path>' closing tag
|
||||
if (ast.source.includes('</path>')) {
|
||||
const reason =
|
||||
`found a closing "path" tag at index ${ast.source.indexOf(
|
||||
'</path>',
|
||||
)}.` +
|
||||
" The path should be self-closing, use '/>' instead of '></path>'.";
|
||||
reporter.error(`Invalid SVG content format: ${reason}`);
|
||||
}
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
53
.xo-config.json
Normal file
|
@ -0,0 +1,53 @@
|
|||
{
|
||||
"prettier": true,
|
||||
"space": 2,
|
||||
"plugins": ["import"],
|
||||
"rules": {
|
||||
"n/no-unsupported-features": "off",
|
||||
"n/no-unsupported-features/node-builtins": "off",
|
||||
"n/file-extension-in-import": "off",
|
||||
"sort-imports": [
|
||||
"error",
|
||||
{
|
||||
"ignoreCase": false,
|
||||
"ignoreDeclarationSort": true,
|
||||
"ignoreMemberSort": false,
|
||||
"memberSyntaxSortOrder": ["none", "all", "multiple", "single"],
|
||||
"allowSeparatedGroups": false
|
||||
}
|
||||
],
|
||||
"import/no-named-as-default": "off",
|
||||
"import/extensions": "off",
|
||||
"import/order": [
|
||||
"error",
|
||||
{
|
||||
"groups": ["builtin", "external", "parent", "sibling", "index"],
|
||||
"alphabetize": {
|
||||
"order": "asc",
|
||||
"caseInsensitive": true
|
||||
},
|
||||
"warnOnUnassignedImports": true,
|
||||
"newlines-between": "never"
|
||||
}
|
||||
]
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"files": ["sdk.mjs", "sdk.d.ts"],
|
||||
"nodeVersion": ">=14",
|
||||
"rules": {
|
||||
"eslint-comments/disable-enable-pair": "off",
|
||||
"unicorn/no-abusive-eslint-disable": "off"
|
||||
}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"scripts/**/*",
|
||||
"tests/**/*",
|
||||
"svglint.config.mjs",
|
||||
"svgo.config.mjs"
|
||||
],
|
||||
"nodeVersion": ">=18"
|
||||
}
|
||||
]
|
||||
}
|
128
CODE_OF_CONDUCT.md
Normal file
|
@ -0,0 +1,128 @@
|
|||
# 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, 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
|
||||
community@simpleicons.org.
|
||||
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.0, available at
|
||||
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
||||
|
||||
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.
|
|
@ -1,6 +1,12 @@
|
|||
# Contributing to Simple Icons
|
||||
|
||||
> **Note** We ask that all users read our [legal disclaimer](./DISCLAIMER.md) before 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)
|
||||
|
||||
> [!IMPORTANT]\
|
||||
> We ask that all users read our [legal disclaimer](./DISCLAIMER.md) before contributing to Simple Icons.
|
||||
|
||||
Simple Icons welcomes contributions and corrections. Before contributing, please make sure you have read the guidelines below. If you decide to contribute anything, please follow the steps below. If you're new to _git_ and/or _GitHub_, we suggest you go through [the GitHub Guides](https://guides.github.com/introduction/flow/).
|
||||
|
||||
|
@ -33,6 +39,9 @@ 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)
|
||||
* [Testing Package Locally](#testing-package-locally)
|
||||
* [Using Docker](#using-docker)
|
||||
|
@ -42,11 +51,7 @@ Simple Icons welcomes contributions and corrections. Before contributing, please
|
|||
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:
|
||||
- For websites, the [Similarweb global rank](https://www.similarweb.com) should be less than 500k.
|
||||
- Note that for brands that have already been added the threshold for continued inclusion rises to 750k.
|
||||
- For GitHub projects, the amount of "stars" should be above 5k.
|
||||
- For anything else, popularity will be judged on a case-by-case basis.
|
||||
* 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.)
|
||||
- Governmental agencies, programs, departments
|
||||
|
@ -59,14 +64,65 @@ We welcome icon requests. Before you submit a new issue please make sure the ico
|
|||
- 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
|
||||
|
||||
Some companies and organizations are excessively protective with their brands, so please don't consider them:
|
||||
|
||||
- BP
|
||||
- Disney
|
||||
- International Olympic Committee
|
||||
- Mattel
|
||||
- Microchip Technology Inc.
|
||||
- Oracle
|
||||
- Do you know more? Please, [report them](https://github.com/simple-icons/simple-icons/issues/new?labels=docs&template=documentation.yml).
|
||||
|
||||
If you are in doubt, feel free to submit it and we'll have a look.
|
||||
|
||||
### Assessing Popularity
|
||||
|
||||
> [!TIP]\
|
||||
> Similarweb is now trying to force users to log in in order to view statistics. You can bypass this by going directly to:
|
||||
> `https://similarweb.com/website/google.com`, replacing `google.com` with the TLD you would like to get the stats on!
|
||||
|
||||
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.
|
||||
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.
|
||||
1. The website's Similarweb global rank in any one category is either:
|
||||
- In the top 50, or,
|
||||
- In the top 5k, _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,
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
> [!NOTE]\
|
||||
> All metrics & cut-offs above are subject to ongoing review and potential change. These current metrics were devised in order to no longer rely on GitHub stars as an indication of a project's popularity. But, for projects that only exist on GitHub, we do still need some way of assessing their popularity so, until we can come up with a better way to do so, we have kept stars for the time being but will not be putting as much weight on them as in the past. If you know of a better way of assessing the popularity of a GitHub project then please create an issue for discussion.
|
||||
|
||||
### Opening an Issue
|
||||
|
||||
When submitting a request for a new or updated icon include helpful information such as:
|
||||
|
||||
* **Issue Title:** The brand name. For example:
|
||||
|
@ -79,7 +135,8 @@ If you have an affiliation to the brand you are requesting that allows you to sp
|
|||
|
||||
## Adding or Updating an Icon
|
||||
|
||||
**Note**: If you decide to add an icon without requesting it first, the requirements above still apply.
|
||||
> [!NOTE]\
|
||||
> If you decide to add an icon without requesting it first, the requirements above still apply.
|
||||
|
||||
### 1. Identify Official Logos and Colors
|
||||
|
||||
|
@ -88,7 +145,7 @@ Most of the icons and brand colors on SimpleIcons have been derived from officia
|
|||
Official high quality brand logos and brand colors can usually be found in the following locations:
|
||||
|
||||
1. About pages, Press pages, Media Kits, and Brand Guidelines.
|
||||
1. Website headers (you can use [svg-grabber](https://chrome.google.com/webstore/detail/svg-grabber-get-all-the-s/ndakggdliegnegeclmfgodmgemdokdmg) for Chrome)
|
||||
1. Website headers
|
||||
1. Favicons
|
||||
1. Wikimedia (which should provide a source)
|
||||
1. GitHub repositories
|
||||
|
@ -265,7 +322,7 @@ Here is the object of a fictional brand as an example:
|
|||
|
||||
You can use `npm run add-icon-data` to add metadata via a CLI prompt.
|
||||
|
||||
Make sure the icon is added in alphabetical order. If you're in doubt, you can always run `npm run our-lint` - this will tell you if any of the JSON data is in the wrong order.
|
||||
Make sure the icon is added in alphabetical order. If you're in doubt, you can always run `npm run ourlint` - this will tell you if any of the JSON data is in the wrong order.
|
||||
|
||||
#### Optional Data
|
||||
|
||||
|
|
|
@ -11,10 +11,10 @@ Simple Icons asks that its users read this disclaimer fully before including an
|
|||
|
||||
## Licenses, Copyrights & Trademarks
|
||||
|
||||
> **Note**
|
||||
> [!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.
|
||||
|
||||
> **Note**
|
||||
> [!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.
|
||||
|
||||
Simple Icons provides data on the license under which icons are available. We ask users to carefully consider this when using an icon. As licenses are subject to change we also ask our users to regularly check if the license of the icons they use have been changed.
|
||||
|
@ -29,7 +29,7 @@ Simple Icons cannot be held responsible for any legal activity raised by a brand
|
|||
|
||||
## Brand Guidelines
|
||||
|
||||
> **Note**
|
||||
> [!NOTE]\
|
||||
> The addition of guidelines to Simple Icons is an ongoing project. In the meantime, users of Simple Icons are instead encouraged to check the `source` URL as, in some cases, the icon will have been sourced from official guidelines. The lack of a `guidelines` entry for a particular brand does not imply that the brand has no guidelines.
|
||||
|
||||
Simple Icons provides a link to a brand's _branding guidelines_ (or similar) if the brand provides one. We ask our users read these guidelines and ensure their usage of the brand's icon is in accordance with them. As guidelines are subject to change we also ask our users to regularly check if the brand guidelines of the icons they use have been updated.
|
||||
|
@ -47,8 +47,8 @@ Should a brand wish for their icon or data to be updated, please [submit an issu
|
|||
Should a brand wish for their icon to be removed from the package, contact `removals at simpleicons dot org` explaining your affiliation with the company, and reasons for removal. Alternatively, it is also possible to [submit an issue][removal-issues] on [the Simple Icons GitHub repository] with the same information. We generally remove icons that no longer [meet our criteria] twice a year in our major releases - but can occasionally make exceptions for immediate removal of brands.
|
||||
|
||||
[meet our criteria]: https://github.com/simple-icons/simple-icons/blob/develop/CONTRIBUTING.md#requesting-an-icon
|
||||
[icon-outdated-issues]: https://github.com/simple-icons/simple-icons/issues/new?assignees=&labels=icon+outdated&template=icon_update.yml&title=Update%3A+
|
||||
[removal-issues]: https://github.com/simple-icons/simple-icons/issues/new?assignees=&labels=removal+request&template=icon_removal.yml&title=Remove%3A+
|
||||
[icon-outdated-issues]: https://github.com/simple-icons/simple-icons/issues/new?assignees=&labels=update+icon%2Fdata&template=icon_update.yml&title=Update%3A+
|
||||
[removal-issues]: https://github.com/simple-icons/simple-icons/issues/new?assignees=&labels=breaking+change&template=icon_removal.yml&title=Remove%3A+
|
||||
[the simple icons contributing guidelines]: https://github.com/simple-icons/simple-icons/blob/develop/CONTRIBUTING.md#icon-guidelines
|
||||
[the simple icons github repository]: https://github.com/simple-icons/simple-icons
|
||||
[the simple icons website]: https://simpleicons.org/
|
||||
|
|
|
@ -5,8 +5,8 @@ RUN apk add --no-cache \
|
|||
|
||||
WORKDIR /simple-icons
|
||||
COPY package.json /simple-icons/
|
||||
RUN npm install --ignore-scripts
|
||||
RUN npm install --ignore-scripts --no-audit --no-fund
|
||||
|
||||
COPY . .
|
||||
|
||||
ENTRYPOINT ["npm", "run", "svgo", "--", "/image.svg"]
|
||||
ENTRYPOINT ["npx", "svgo", "/image.svg"]
|
||||
|
|
98
README.md
|
@ -1,23 +1,24 @@
|
|||
<p align="center">
|
||||
<picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/simpleicons-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/simpleicons.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/simpleicons.svg" alt="Simple Icons" width=70></picture>
|
||||
<img src="https://cdn.simpleicons.org/simpleicons/000/fff" alt="Simple Icons" width=70>
|
||||
<h3 align="center">Simple Icons</h3>
|
||||
<p align="center">
|
||||
Over 2500 Free SVG icons for popular brands. See them all on one page at <a href="https://simpleicons.org">SimpleIcons.org</a>. Contributions, corrections & requests can be made on GitHub.</p>
|
||||
Over 3100 Free SVG icons for popular brands. See them all on one page at <a href="https://simpleicons.org">SimpleIcons.org</a>. Contributions, corrections & requests can be made on GitHub.</p>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/simple-icons/simple-icons/actions?query=workflow%3AVerify+branch%3Adevelop"><img src="https://img.shields.io/github/actions/workflow/status/simple-icons/simple-icons/verify.yml?branch=develop&logo=github&label=tests" alt="Build status"/></a>
|
||||
<a href="https://www.npmjs.com/package/simple-icons"><img src="https://img.shields.io/npm/v/simple-icons.svg?logo=npm" alt="NPM version"/></a>
|
||||
<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>
|
||||
</p>
|
||||
<p align="center">
|
||||
<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://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>
|
||||
|
||||
## Usage
|
||||
|
||||
> **Note** We ask that all users read our [legal disclaimer](./DISCLAIMER.md) before using icons from Simple Icons.
|
||||
> [!IMPORTANT]\
|
||||
> We ask that all users read our [legal disclaimer](https://github.com/simple-icons/simple-icons/blob/develop/DISCLAIMER.md) before using icons from Simple Icons.
|
||||
|
||||
### General Usage
|
||||
|
||||
|
@ -28,15 +29,15 @@ Icons can be downloaded as SVGs directly from [our website](https://simpleicons.
|
|||
Icons can be served from a CDN such as [jsDelivr](https://www.jsdelivr.com/package/npm/simple-icons) or [Unpkg](https://unpkg.com/browse/simple-icons/). Simply use the `simple-icons` npm package and specify a version in the URL like the following:
|
||||
|
||||
```html
|
||||
<img height="32" width="32" src="https://cdn.jsdelivr.net/npm/simple-icons@v9/icons/[ICON SLUG].svg" />
|
||||
<img height="32" width="32" src="https://unpkg.com/simple-icons@v9/icons/[ICON SLUG].svg" />
|
||||
<img height="32" width="32" src="https://cdn.jsdelivr.net/npm/simple-icons@v11/icons/[ICON SLUG].svg" />
|
||||
<img height="32" width="32" src="https://unpkg.com/simple-icons@v11/icons/[ICON SLUG].svg" />
|
||||
```
|
||||
|
||||
Where `[ICON SLUG]` is replaced by the [slug] of the icon you want to use, for example:
|
||||
|
||||
```html
|
||||
<img height="32" width="32" src="https://cdn.jsdelivr.net/npm/simple-icons@v9/icons/simpleicons.svg" />
|
||||
<img height="32" width="32" src="https://unpkg.com/simple-icons@v9/icons/simpleicons.svg" />
|
||||
<img height="32" width="32" src="https://cdn.jsdelivr.net/npm/simple-icons@v11/icons/simpleicons.svg" />
|
||||
<img height="32" width="32" src="https://unpkg.com/simple-icons@v11/icons/simpleicons.svg" />
|
||||
```
|
||||
|
||||
These examples use the latest major version. This means you won't receive any updates following the next major release. You can use `@latest` instead to receive updates indefinitely. However, this will result in a `404` error if the icon is removed.
|
||||
|
@ -63,9 +64,10 @@ Where `[COLOR]` is optional, and can be replaced by the [hex colors](https://dev
|
|||
<img height="32" width="32" src="https://cdn.simpleicons.org/simpleicons/00ccff99" />
|
||||
<img height="32" width="32" src="https://cdn.simpleicons.org/simpleicons/orange/pink" />
|
||||
<img height="32" width="32" src="https://cdn.simpleicons.org/simpleicons/_/eee" />
|
||||
<img height="32" width="32" src="https://cdn.simpleicons.org/simpleicons/eee/_" />
|
||||
```
|
||||
|
||||
### Node Usage <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/nodedotjs-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/nodedotjs.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/nodedotjs.svg" alt="Node" align=left width=24></picture>
|
||||
### Node Usage <img src="https://cdn.simpleicons.org/nodedotjs/000/fff" alt="Node" align=left width=24>
|
||||
|
||||
The icons are also available through our npm package. To install, simply run:
|
||||
|
||||
|
@ -116,7 +118,7 @@ If you need to iterate over all icons, use:
|
|||
import * as icons from 'simple-icons';
|
||||
```
|
||||
|
||||
#### TypeScript Usage <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/typescript-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/typescript.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/typescript.svg" alt="Typescript" align=left width=19 height=19></picture>
|
||||
#### TypeScript Usage <img src="https://cdn.simpleicons.org/typescript/000/fff" alt="Typescript" align=left width=19 height=19>
|
||||
|
||||
Type definitions are bundled with the package.
|
||||
|
||||
|
@ -124,7 +126,7 @@ Type definitions are bundled with the package.
|
|||
import type { SimpleIcon } from 'simple-icons';
|
||||
```
|
||||
|
||||
### PHP Usage <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/php-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/php.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/php.svg" alt="Php" align=left width=24 height=24></picture>
|
||||
### PHP Usage <img src="https://cdn.simpleicons.org/php/000/fff" alt="Php" align=left width=24 height=24>
|
||||
|
||||
The icons are also available through our Packagist package. To install, simply run:
|
||||
|
||||
|
@ -148,37 +150,55 @@ echo file_get_contents('path/to/package/icons/simpleicons.svg');
|
|||
|
||||
## Third-Party Extensions
|
||||
|
||||
| Extension | Author |
|
||||
| :-- | :-- |
|
||||
| [Angular Module](https://github.com/avmaisak/ngx-simple-icons) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/angular-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/angular.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/angular.svg" alt="Angular" align=left width=24 height=24></picture> | [@avmaisak](https://github.com/avmaisak) |
|
||||
| [Blazor Nuget](https://github.com/TimeWarpEngineering/timewarp-simple-icons) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/blazor-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/blazor.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/blazor.svg" alt="Blazor" align=left width=24 height=24></picture> | [@TimeWarpEngineering](https://github.com/TimeWarpEngineering) |
|
||||
| [Blender add-on](https://github.com/mondeja/simple-icons-blender) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/blender-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/blender.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/blender.svg" alt="Blender" align=left width=24 height=24></picture> | [@mondeja](https://github.com/mondeja) |
|
||||
| [Drawio library](https://github.com/mondeja/simple-icons-drawio) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/diagramsdotnet-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/diagramsdotnet.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/diagramsdotnet.svg" alt="Drawio" align=left width=24 height=24></picture> | [@mondeja](https://github.com/mondeja) |
|
||||
| [Drupal module](https://www.drupal.org/project/simple_icons) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/drupal-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/drupal.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/drupal.svg" alt="Drupal" align=left width=24 height=24></picture> | [Phil Wolstenholme](https://www.drupal.org/u/phil-wolstenholme) |
|
||||
| [Figma plugin](https://www.figma.com/community/plugin/1149614463603005908/Simple-Icons) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/figma-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/figma.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/figma.svg" alt="Figma" align=left width=24 height=24></picture> | [@LitoMore](https://github.com/LitoMore) |
|
||||
| [Flutter package](https://pub.dev/packages/simple_icons) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/flutter-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/flutter.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/flutter.svg" alt="Flutter" align=left width=24 height=24></picture> | [@jlnrrg](https://jlnrrg.github.io/) |
|
||||
| [Framer component](https://github.com/LitoMore/simple-icons-framer) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/framer-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/framer.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/framer.svg" alt="Framer" align=left width=24 height=24></picture> | [@LitoMore](https://github.com/LitoMore) |
|
||||
| [Hexo plugin](https://github.com/nidbCN/hexo-simpleIcons) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/hexo-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/hexo.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/hexo.svg" alt="Hexo" align=left width=24 height=24></picture> | [@nidbCN](https://github.com/nidbCN/) |
|
||||
| [Home Assistant plugin](https://github.com/vigonotion/hass-simpleicons) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/homeassistant-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/homeassistant.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/homeassistant.svg" alt="Home Assistant" align=left width=24 height=24></picture> | [@vigonotion](https://github.com/vigonotion/) |
|
||||
| [Hugo module](https://github.com/foo-dogsquared/hugo-mod-simple-icons) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/hugo-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/hugo.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/hugo.svg" alt="Hugo" align=left width=24 height=24></picture> | [@foo-dogsquared](https://github.com/foo-dogsquared) |
|
||||
| [Java library](https://github.com/silentsoft/simpleicons4j) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/openjdk-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/openjdk.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/openjdk.svg" alt="OpenJDK" align=left width=24 height=24></picture> | [@silentsoft](https://github.com/silentsoft) |
|
||||
| [Jetpack Compose library](https://github.com/DevSrSouza/compose-icons) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/jetpackcompose-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/jetpackcompose.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/jetpackcompose.svg" alt="Jetpack Compose" align=left width=24 height=24></picture> | [@devsrsouza](https://github.com/devsrsouza/) |
|
||||
| [Kirby plugin](https://github.com/runxel/kirby3-simpleicons) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/kirby-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/kirby.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/kirby.svg" alt="Kirby" align=left width=24 height=24></picture> | [@runxel](https://github.com/runxel) |
|
||||
| [LaTeX package](https://github.com/ineshbose/simple-icons-latex) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/latex-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/latex.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/latex.svg" alt="LaTeX" align=left width=24 height=24></picture> | [@ineshbose](https://github.com/ineshbose) |
|
||||
| [Laravel Package](https://github.com/ublabs/blade-simple-icons) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/laravel-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/laravel.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/laravel.svg" alt="Laravel" align=left width=24 height=24></picture> | [@adrian-ub](https://github.com/adrian-ub) |
|
||||
| [Python package](https://github.com/sachinraja/simple-icons-py) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/python-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/python.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/python.svg" alt="Python" align=left width=24 height=24></picture> | [@sachinraja](https://github.com/sachinraja) |
|
||||
| [React package](https://github.com/icons-pack/react-simple-icons) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/react-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/react.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/react.svg" alt="React" align=left width=24 height=24></picture> | [@wootsbot](https://github.com/wootsbot) |
|
||||
| [Solid package](https://github.com/x64Bits/solid-icons) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/solid-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/solid.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/solid.svg" alt="Solid" align=left width=24 height=24></picture> | [@x64Bits](https://github.com/x64Bits) |
|
||||
| [Stream Deck icon pack](https://github.com/mackenly/simple-icons-stream-deck) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/elgato-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/elgato.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/elgato.svg" alt="Stream Deck" align=left width=24 height=24></picture> | [@mackenly](https://github.com/mackenly) |
|
||||
| [Svelte package](https://github.com/icons-pack/svelte-simple-icons) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/svelte-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/svelte.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/svelte.svg" alt="Svelte" align=left width=24 height=24></picture> | [@wootsbot](https://github.com/wootsbot) |
|
||||
| [Vue 3 package](https://github.com/wyatt-herkamp/vue3-simple-icons) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/vuedotjs-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/vuedotjs.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/vuedotjs.svg" alt="Vue" align=left width=24 height=24></picture> | [@wyatt-herkamp](https://github.com/wyatt-herkamp) |
|
||||
| [Vue package](https://github.com/mainvest/vue-simple-icons) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/vuedotjs-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/vuedotjs.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/vuedotjs.svg" alt="Vue" align=left width=24 height=24></picture> | [@noahlitvin](https://github.com/noahlitvin) |
|
||||
| [WordPress plugin](https://wordpress.org/plugins/simple-icons/) <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/assets/readme/wordpress-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/wordpress.svg"><img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/wordpress.svg" alt="Wordpress" align=left width=24 height=24></picture> | [@tjtaylo](https://github.com/tjtaylo) |
|
||||
| Extension | Author | License | Simple Icons Version |
|
||||
| :-- | :-- | :-: | :-: |
|
||||
| [Angular module](https://github.com/avmaisak/ngx-simple-icons) <img src="https://cdn.simpleicons.org/angular/000/fff" alt="Angular" align=left width=24 height=24> | [@avmaisak](https://github.com/avmaisak) | ![](https://img.shields.io/github/license/avmaisak/ngx-simple-icons) | [![v6.18.0](https://img.shields.io/static/v1?label=version&message=v6.18.0&logo=simpleicons&color=red)](https://github.com/simple-icons/simple-icons/tree/6.18.0) |
|
||||
| [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) |
|
||||
| [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) | ![](https://img.shields.io/github/license/mondeja/simple-icons-blender) | ![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmondeja%2Fsimple-icons-blender%2Fdevelop%2Fpackage.json&query=%24..%5B'simple-icons'%5D&logo=simpleicons&label=version) |
|
||||
| [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) | ![](https://img.shields.io/github/license/mondeja/simple-icons-drawio) | ![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmondeja%2Fsimple-icons-drawio%2Fdevelop%2Fpackage.json&query=%24..%5B'simple-icons'%5D&logo=simpleicons&label=version) |
|
||||
| [Drupal module](https://www.drupal.org/project/simple_icons) <img src="https://cdn.simpleicons.org/drupal/000/fff" alt="Drupal" align=left width=24 height=24> | [Phil Wolstenholme](https://www.drupal.org/u/phil-wolstenholme) | ![](https://img.shields.io/badge/license-GPL_v2-blue.svg) | ![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fgit.drupalcode.org%2Fproject%2Fsimple_icons%2F-%2Fraw%2F8.x-1.x%2Fpackage-lock.json%3Fref_type%3Dheads&query=%24..%5B'simple-icons'%5D.version&logo=simpleicons&label=version) |
|
||||
| [Figma plugin](https://www.figma.com/community/plugin/1149614463603005908/Simple-Icons) <img src="https://cdn.simpleicons.org/figma/000/fff" alt="Figma" align=left width=24 height=24> | [@LitoMore](https://github.com/LitoMore) | ![](https://img.shields.io/github/license/litomore/simple-icons-figma) | ![](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) |
|
||||
| [Flutter package](https://pub.dev/packages/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/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjlnrrg%2Fsimple_icons%2Fmaster%2Fvendor%2Fpackage-lock.json&query=%24..%5B'node_modules%2Fsimple-icons-font'%5D.version&logo=simpleicons&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) |
|
||||
| [Hexo plugin](https://github.com/nidbCN/hexo-simpleIcons) <img src="https://cdn.simpleicons.org/hexo/000/fff" alt="Hexo" align=left width=24 height=24> | [@nidbCN](https://github.com/nidbCN/) | ![](https://img.shields.io/github/license/nidbCN/hexo-simpleIcons) | ![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2FnidbCN%2Fhexo-simpleIcons%2Fmaster%2Fpackage.json&query=%24..%5B'simple-icons'%5D&logo=simpleicons&label=version) |
|
||||
| [Home Assistant plugin](https://github.com/vigonotion/hass-simpleicons) <img src="https://cdn.simpleicons.org/homeassistant/000/fff" alt="Home Assistant" align=left width=24 height=24> | [@vigonotion](https://github.com/vigonotion/) | ![](https://img.shields.io/github/license/vigonotion/hass-simpleicons) | [![v7.14.0](https://img.shields.io/static/v1?label=version&message=v7.14.0&logo=simpleicons&color=red)](https://github.com/simple-icons/simple-icons/tree/7.14.0) |
|
||||
| [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) |
|
||||
| [Java library](https://github.com/silentsoft/simpleicons4j) <img src="https://cdn.simpleicons.org/openjdk/000/fff" alt="OpenJDK" align=left width=24 height=24> | [@silentsoft](https://github.com/silentsoft) | ![](https://img.shields.io/github/license/silentsoft/simpleicons4j) | ![](https://img.shields.io/badge/dynamic/xml?url=https%3A%2F%2Fraw.githubusercontent.com%2Fsilentsoft%2Fsimpleicons4j%2Fmain%2Fpom.xml&query=%2A%5Blocal-name%28.%29%3D%27project%27%5D%2F%2F%2A%5Blocal-name%28.%29%3D%27dependencies%27%5D%2F%2F%2A%5Blocal-name%28.%29%3D%27dependency%27%20and%20%2A%5Blocal-name%28.%29%3D%27artifactId%27%20and%20text%28%29%3D%27simple-icons%27%5D%5D%2F%2F%2A%5Blocal-name%28.%29%3D%27version%27%5D%2F%2Ftext%28%29&logo=simpleicons&label=version) |
|
||||
| [Jetpack Compose library](https://github.com/DevSrSouza/compose-icons) <img src="https://cdn.simpleicons.org/jetpackcompose/000/fff" alt="Jetpack Compose" align=left width=24 height=24> | [@DevSrSouza](https://github.com/devsrsouza/) | ![](https://img.shields.io/github/license/DevSrSouza/compose-icons) | [![v4.14.0](https://img.shields.io/static/v1?label=version&message=v4.14.0&logo=simpleicons&color=red)](https://github.com/simple-icons/simple-icons/tree/4.14.0) |
|
||||
| [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) |
|
||||
| [Leptos crate](https://github.com/Carlosted/leptos-icons) <img src="https://cdn.simpleicons.org/leptos/000/fff" alt="Leptos" align=left width=24 height=24> | [@Carlosted](https://github.com/Carlosted) | ![](https://img.shields.io/github/license/Carlosted/leptos-icons) | [![v9.14.0](https://img.shields.io/static/v1?label=version&message=v9.14.0&logo=simpleicons&color=yellow)](https://github.com/simple-icons/simple-icons/tree/9.14.0) |
|
||||
| [Python package](https://github.com/sachinraja/simple-icons-py) <img src="https://cdn.simpleicons.org/python/000/fff" alt="Python" align=left width=24 height=24> | [@sachinraja](https://github.com/sachinraja) | ![](https://img.shields.io/github/license/sachinraja/simple-icons-py) | [![v7.21.0](https://img.shields.io/static/v1?label=version&message=v7.21.0&logo=simpleicons&color=red)](https://github.com/simple-icons/simple-icons/tree/7.21.0) |
|
||||
| [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) | ![](https://img.shields.io/github/license/raycast/extensions) | ![](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) |
|
||||
| [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) |
|
||||
| [Solid package](https://github.com/x64Bits/solid-icons) <img src="https://cdn.simpleicons.org/solid/000/fff" alt="Solid" align=left width=24 height=24> | [@x64Bits](https://github.com/x64Bits) | ![](https://img.shields.io/github/license/x64Bits/solid-icons) | [![v9.0.0](https://img.shields.io/static/v1?label=version&message=v9.0.0&logo=simpleicons&color=yellow)](https://github.com/simple-icons/simple-icons/tree/9.0.0) |
|
||||
| [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) |
|
||||
| [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) |
|
||||
| [Vue package](https://github.com/mainvest/vue-simple-icons) <img src="https://cdn.simpleicons.org/vuedotjs/000/fff" alt="Vue" align=left width=24 height=24> | [@noahlitvin](https://github.com/noahlitvin) | ![](https://img.shields.io/github/license/mainvest/vue-simple-icons) | ![](https://img.shields.io/badge/dynamic/yaml?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmainvest%2Fvue-simple-icons%2Fmaster%2Fpackage.json&query=%24.version&logo=simpleicons&label=version) |
|
||||
| [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) | ![](https://img.shields.io/github/license/diegoliv/wf-simpleicons-search) | ![](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fdiegoliv%2Fwf-simpleicons-search%2Fmain%2Fpackage.json&query=%24..%5B'simple-icons'%5D&logo=simpleicons&label=version) |
|
||||
| [WordPress plugin](https://wordpress.org/plugins/simple-icons/) <img src="https://cdn.simpleicons.org/wordpress/000/fff" alt="WordPress" align=left width=24 height=24> | [@tjtaylo](https://github.com/tjtaylo) | ![](https://img.shields.io/badge/license-GPL_v2-blue.svg) | [![v4.25.0](https://img.shields.io/static/v1?label=version&message=v4.25.0&logo=simpleicons&color=red)](https://github.com/simple-icons/simple-icons/tree/4.25.0) |
|
||||
|
||||
> [!IMPORTANT]\
|
||||
> From our next scheduled major release (v12, releasing on May 26, 2024), we will begin removing third-party extensions from the above list that are not up to date with at least our previous major release.\
|
||||
> For example, when v12 is released, we will remove any extensions that don't support `v11.0.0` or higher.\
|
||||
> Please create a PR to update the version number of your extension in this README following each update of your extension.
|
||||
|
||||
## Contribute
|
||||
|
||||
[![Good first issues open](https://img.shields.io/github/issues/simple-icons/simple-icons/good%20first%20issue?label=good%20first%20issues&logo=git&logoColor=white)](https://github.com/simple-icons/simple-icons/labels/good%20first%20issue)
|
||||
[![](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)
|
||||
|
||||
Information describing how to contribute can be found in the file [CONTRIBUTING.md](https://github.com/simple-icons/simple-icons/blob/develop/CONTRIBUTING.md)
|
||||
|
||||
[slug]: https://github.com/simple-icons/simple-icons/blob/master/slugs.md
|
||||
|
||||
## 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" />
|
||||
</a>
|
||||
|
|
|
@ -18,9 +18,4 @@ _Major_ releases are scheduled on a half-year basis, mainly to remove old SVGs.
|
|||
|
||||
## Deprecation
|
||||
|
||||
For approximately 3 months after a _major_ release, the _major_ release preceding it will be supported. After 3 months, the previous _major_ release is deprecated and will no longer be supported.
|
||||
|
||||
Support of a _major_ version entails the following:
|
||||
|
||||
- SVGs and metadata of brands will be updated on request. This excludes brands that were removed in the new _major_ release.
|
||||
- Bugs in the npm library will be updated if reported.
|
||||
After a _major_ release, the only other supported version is the last version of the previous _major_ release. This previous version will only receive bug fixes to either the npm library, or our internal APIs.
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Angular</title><path d="M9.931 12.645h4.138l-2.07-4.908m0-7.737L.68 3.982l1.726 14.771L12 24l9.596-5.242L23.32 3.984 11.999.001zm7.064 18.31h-2.638l-1.422-3.503H8.996l-1.422 3.504h-2.64L12 2.65z"/></svg>
|
Before Width: | Height: | Size: 294 B |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Blazor</title><path d="M23.8337 8.1013a13.9123 13.9123 0 0 1-13.6424 11.72 10.1053 10.1053 0 0 1-1.994-.121 6.111 6.111 0 0 1-5.0824-5.7607 5.9344 5.9344 0 0 1 11.867-.0838c.025.9835-.4011 1.8464-1.277 1.8713-.9356 0-1.3742-.6677-1.3742-1.5674v-2.5001a1.5313 1.5313 0 0 0-1.5196-1.5328H8.7152a3.6481 3.6481 0 1 0 2.6948 6.0794l.0733-.1093.0734.1213a2.5807 2.5807 0 0 0 2.2007 1.0479 2.9088 2.9088 0 0 0 2.6947-3.0406 7.912 7.912 0 0 0-.217-1.9324 7.4043 7.4043 0 0 0-14.6395 1.6033 7.4971 7.4971 0 0 0 7.307 7.4043s.549.05 1.1677.0357a15.8029 15.8029 0 0 0 8.4747-2.5283c.036-.025.0719.025.048.0614a12.4392 12.4392 0 0 1-9.6901 3.9625A8.7442 8.7442 0 0 1 .003 13.8603a9.049 9.049 0 0 1 3.6349-7.2471 8.8634 8.8634 0 0 1 5.229-1.7262h2.813a7.9145 7.9145 0 0 0 5.8386-2.5777.1093.1093 0 0 1 .0594-.034.1115.1115 0 0 1 .1195.0522.113.113 0 0 1 .0155.0672 7.9345 7.9345 0 0 1-1.2274 3.5493.1075.1075 0 0 0-.0132.0609.1098.1098 0 0 0 .0724.0945.109.109 0 0 0 .0619.0033 8.5054 8.5054 0 0 0 5.9134-4.876.1554.1554 0 0 1 .0546-.0527.1497.1497 0 0 1 .147 0 .1535.1535 0 0 1 .0546.0527 10.779 10.779 0 0 1 1.0575 6.8746zm-14.9383 3.527a2.188 2.188 0 1 0 2.1877 2.1878v-2.0425a.1577.1577 0 0 0-.1497-.1497Z"/></svg>
|
Before Width: | Height: | Size: 1.3 KiB |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Blender</title><path d="M12.51 13.214c.046-.8.438-1.506 1.03-2.006a3.424 3.424 0 0 1 2.212-.79c.85 0 1.631.3 2.211.79.592.5.983 1.206 1.028 2.005.045.823-.285 1.586-.865 2.153a3.389 3.389 0 0 1-2.374.938 3.393 3.393 0 0 1-2.376-.938c-.58-.567-.91-1.33-.865-2.152M7.35 14.831c.006.314.106.922.256 1.398a7.372 7.372 0 0 0 1.593 2.757 8.227 8.227 0 0 0 2.787 2.001 8.947 8.947 0 0 0 3.66.76 8.964 8.964 0 0 0 3.657-.772 8.285 8.285 0 0 0 2.785-2.01 7.428 7.428 0 0 0 1.592-2.762 6.964 6.964 0 0 0 .25-3.074 7.123 7.123 0 0 0-1.016-2.779 7.764 7.764 0 0 0-1.852-2.043h.002L13.566 2.55l-.02-.015c-.492-.378-1.319-.376-1.86.002-.547.382-.609 1.015-.123 1.415l-.001.001 3.126 2.543-9.53.01h-.013c-.788.001-1.545.518-1.695 1.172-.154.665.38 1.217 1.2 1.22V8.9l4.83-.01-8.62 6.617-.034.025c-.813.622-1.075 1.658-.563 2.313.52.667 1.625.668 2.447.004L7.414 14s-.069.52-.063.831zm12.09 1.741c-.97.988-2.326 1.548-3.795 1.55-1.47.004-2.827-.552-3.797-1.538a4.51 4.51 0 0 1-1.036-1.622 4.282 4.282 0 0 1 .282-3.519 4.702 4.702 0 0 1 1.153-1.371c.942-.768 2.141-1.183 3.396-1.185 1.256-.002 2.455.41 3.398 1.175.48.391.87.854 1.152 1.367a4.28 4.28 0 0 1 .522 1.706 4.236 4.236 0 0 1-.239 1.811 4.54 4.54 0 0 1-1.035 1.626"/></svg>
|
Before Width: | Height: | Size: 1.3 KiB |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>diagrams.net</title><path d="M19.69 13.419h-2.527l-2.667-4.555a1.292 1.292 0 001.035-1.28V4.16c0-.725-.576-1.312-1.302-1.312H9.771c-.726 0-1.312.576-1.312 1.301v3.435c0 .619.426 1.152 1.034 1.28l-2.666 4.555H4.309c-.725 0-1.312.576-1.312 1.301v3.435c0 .725.576 1.312 1.302 1.312h4.458c.726 0 1.312-.576 1.312-1.302v-3.434c0-.726-.576-1.312-1.301-1.312h-.437l2.645-4.523h2.059l2.656 4.523h-.438c-.725 0-1.312.576-1.312 1.301v3.435c0 .725.576 1.312 1.302 1.312H19.7c.726 0 1.312-.576 1.312-1.302v-3.434c0-.726-.576-1.312-1.301-1.312zM24 22.976c0 .565-.459 1.024-1.013 1.024H1.024A1.022 1.022 0 010 22.987V1.024C0 .459.459 0 1.013 0h21.963C23.541 0 24 .459 24 1.013z"/></svg>
|
Before Width: | Height: | Size: 763 B |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Drupal</title><path d="M15.78 5.113C14.09 3.425 12.48 1.815 11.998 0c-.48 1.815-2.09 3.425-3.778 5.113-2.534 2.53-5.405 5.4-5.405 9.702a9.184 9.185 0 1018.368 0c0-4.303-2.871-7.171-5.405-9.702M6.72 16.954c-.563-.019-2.64-3.6 1.215-7.416l2.55 2.788a.218.218 0 01-.016.325c-.61.625-3.204 3.227-3.527 4.126-.066.186-.164.18-.222.177M12 21.677a3.158 3.158 0 01-3.158-3.159 3.291 3.291 0 01.787-2.087c.57-.696 2.37-2.655 2.37-2.655s1.774 1.988 2.367 2.649a3.09 3.09 0 01.792 2.093A3.158 3.158 0 0112 21.677m6.046-5.123c-.068.15-.223.398-.431.405-.371.014-.411-.177-.686-.583-.604-.892-5.864-6.39-6.848-7.455-.866-.935-.122-1.595.223-1.94C10.736 6.547 12 5.285 12 5.285s3.766 3.574 5.336 6.016c1.57 2.443 1.029 4.556.71 5.253"/></svg>
|
Before Width: | Height: | Size: 819 B |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Elgato</title><path d="m13.8818 8.3964.0261.0196 9.9494 5.7172c-.4884 2.729-1.9196 5.2223-4.0384 7.0253A11.9262 11.9262 0 0 1 12.097 24c-3.1925 0-6.1939-1.2477-8.4527-3.5144C1.3868 18.2188.1427 15.2044.1427 12c0-3.2042 1.244-6.2187 3.5015-8.4854C5.9019 1.248 8.9032 0 12.097 0c2.4394 0 4.7847.7333 6.783 2.1187 1.9526 1.354 3.4466 3.2357 4.3227 5.4422.1112.2829.2149.5736.3051.8657l-2.1255 1.2359a9.4924 9.4924 0 0 0-.2619-.8694c-1.354-3.8303-4.9813-6.4048-9.0237-6.4048C6.8171 2.3883 2.522 6.7005 2.522 12c0 5.2995 4.295 9.6115 9.5748 9.6115 2.052 0 4.0084-.6442 5.6596-1.8647 1.6172-1.1955 2.8036-2.8337 3.4309-4.7364l.0065-.0419L9.5906 8.3048v7.2256l4.0004-2.3138 2.06 1.1811-5.9962 3.4688-2.12-1.2126V7.1943l2.1174-1.2245 4.2309 2.4279-.0013-.0013"/></svg>
|
Before Width: | Height: | Size: 851 B |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Figma</title><path d="M15.852 8.981h-4.588V0h4.588c2.476 0 4.49 2.014 4.49 4.49s-2.014 4.491-4.49 4.491zM12.735 7.51h3.117c1.665 0 3.019-1.355 3.019-3.019s-1.355-3.019-3.019-3.019h-3.117V7.51zm0 1.471H8.148c-2.476 0-4.49-2.014-4.49-4.49S5.672 0 8.148 0h4.588v8.981zm-4.587-7.51c-1.665 0-3.019 1.355-3.019 3.019s1.354 3.02 3.019 3.02h3.117V1.471H8.148zm4.587 15.019H8.148c-2.476 0-4.49-2.014-4.49-4.49s2.014-4.49 4.49-4.49h4.588v8.98zM8.148 8.981c-1.665 0-3.019 1.355-3.019 3.019s1.355 3.019 3.019 3.019h3.117V8.981H8.148zM8.172 24c-2.489 0-4.515-2.014-4.515-4.49s2.014-4.49 4.49-4.49h4.588v4.441c0 2.503-2.047 4.539-4.563 4.539zm-.024-7.51a3.023 3.023 0 0 0-3.019 3.019c0 1.665 1.365 3.019 3.044 3.019 1.705 0 3.093-1.376 3.093-3.068v-2.97H8.148zm7.704 0h-.098c-2.476 0-4.49-2.014-4.49-4.49s2.014-4.49 4.49-4.49h.098c2.476 0 4.49 2.014 4.49 4.49s-2.014 4.49-4.49 4.49zm-.097-7.509c-1.665 0-3.019 1.355-3.019 3.019s1.355 3.019 3.019 3.019h.098c1.665 0 3.019-1.355 3.019-3.019s-1.355-3.019-3.019-3.019h-.098z"/></svg>
|
Before Width: | Height: | Size: 1.1 KiB |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Flutter</title><path d="M14.314 0L2.3 12 6 15.7 21.684.013h-7.357zm.014 11.072L7.857 17.53l6.47 6.47H21.7l-6.46-6.468 6.46-6.46h-7.37z"/></svg>
|
Before Width: | Height: | Size: 234 B |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Framer</title><path d="M4 0h16v8h-8zM4 8h8l8 8H4zM4 16h8v8z"/></svg>
|
Before Width: | Height: | Size: 159 B |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hexo</title><path d="M12.02 0L1.596 6.02l-.02 12L11.978 24l10.426-6.02.02-12zm4.828 17.14l-.96.558-.969-.574V12.99H9.081v4.15l-.96.558-.969-.574V6.854l.964-.552.965.563v4.145h5.838V6.86l.965-.552.964.563z"/></svg>
|
Before Width: | Height: | Size: 304 B |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Home Assistant</title><path d="M11.9922 1.3945a.7041.7041 0 00-.498.211L.1621 13.0977A.5634.5634 0 000 13.494a.567.567 0 00.5664.5664H2.67v8.0743c0 .2603.2104.4707.4707.4707h7.9473v-3.6836L8.037 15.8672a2.42 2.42 0 01-.9473.1933c-1.3379 0-2.4218-1.0868-2.4218-2.4257 0-1.339 1.084-2.4239 2.4218-2.4239 1.338 0 2.422 1.085 2.422 2.4239 0 .3359-.068.6563-.1915.9472l1.7676 1.7676v-5.375C10.2 10.615 9.5723 9.744 9.5723 8.7266c0-1.339 1.0859-2.4258 2.4238-2.4258 1.338 0 2.4219 1.0868 2.4219 2.4258 0 1.0174-.6259 1.8884-1.5137 2.248v5.375l1.7656-1.7676a2.4205 2.4205 0 01-.1914-.9472c0-1.339 1.086-2.4239 2.4238-2.4239 1.338 0 2.422 1.085 2.422 2.4239 0 1.3389-1.084 2.4257-2.422 2.4257a2.42 2.42 0 01-.9472-.1933l-3.0508 3.0547v3.6836h7.9473a.4702.4702 0 00.4707-.4707v-8.0743h2.1113a.5686.5686 0 00.3965-.162c.2233-.2185.2262-.5775.0078-.8008l-2.5156-2.5723V6.4707c0-.2603-.2104-.4727-.4707-.4727h-1.9649c-.2603 0-.4707.2124-.4707.4727v1.1035L12.5 1.6035a.7056.7056 0 00-.5078-.209zm.0039 6.3614c-.5352 0-.9688.4351-.9688.9707 0 .5355.4336.9687.9688.9687a.9683.9683 0 00.9687-.9687c0-.5356-.4335-.9707-.9687-.9707zM7.0898 12.666a.9683.9683 0 00-.9687.9688c0 .5355.4336.9707.9687.9707.5352 0 .9688-.4352.9688-.9707a.9683.9683 0 00-.9688-.9688zm9.8125 0c-.5351 0-.9707.4332-.9707.9688 0 .5355.4356.9707.9707.9707.5352 0 .9688-.4352.9688-.9707a.9683.9683 0 00-.9688-.9688Z"/></svg>
|
Before Width: | Height: | Size: 1.4 KiB |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hugo</title><path d="M11.754 0a3.998 3.998 0 00-2.049.596L3.33 4.532a4.252 4.252 0 00-2.017 3.615v8.03c0 1.473.79 2.838 2.067 3.574l6.486 3.733a3.88 3.88 0 003.835.018l7.043-3.966a3.817 3.817 0 001.943-3.323V7.752a3.57 3.57 0 00-1.774-3.084L13.817.541a3.998 3.998 0 00-2.063-.54zm.022 1.674c.413-.006.828.1 1.2.315l7.095 4.127c.584.34.941.96.94 1.635v8.462c0 .774-.414 1.484-1.089 1.864l-7.042 3.966a2.199 2.199 0 01-2.179-.01l-6.485-3.734a2.447 2.447 0 01-1.228-2.123v-8.03c0-.893.461-1.72 1.221-2.19l6.376-3.935a2.323 2.323 0 011.19-.347zm-4.7 3.844V18.37h2.69v-5.62h4.46v5.62h2.696V5.518h-2.696v4.681h-4.46V5.518Z"/></svg>
|
Before Width: | Height: | Size: 716 B |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jetpack Compose</title><path d="M12.135.003a2.577 2.577 0 0 0-1.42.344L2.55 5.06a2.577 2.577 0 0 0-.953.967l3.957 2.17a1.765 1.765 0 0 1 .603-.588l4.951-2.86a1.761 1.761 0 0 1 1.76 0l4.951 2.86a1.753 1.753 0 0 1 .526.46l3.921-2.265a2.577 2.577 0 0 0-.816-.744L13.291.347a2.577 2.577 0 0 0-1.152-.34Zm-.145 4.912a1.36 1.36 0 0 0-.68.182L6.36 7.953a1.345 1.345 0 0 0-.454.435l1.92 1.055a1.05 1.05 0 0 1 .31-.275l3.34-1.928a1.054 1.054 0 0 1 1.051 0l3.336 1.928a1.066 1.066 0 0 1 .238.199l.018-.01-.002-.002 1.877-1.08a1.353 1.353 0 0 0-.373-.322l-4.95-2.86a1.357 1.357 0 0 0-.68-.178Zm10.432 1.149-3.92 2.26a1.757 1.757 0 0 1 .2.812v5.715c0 .627-.332 1.21-.88 1.528l-4.95 2.86a1.761 1.761 0 0 1-.64.214v4.524a2.577 2.577 0 0 0 1.059-.313l8.162-4.713a2.577 2.577 0 0 0 1.289-2.23V7.297a2.577 2.577 0 0 0-.318-1.228Zm-20.937.238a2.577 2.577 0 0 0-.227.99v9.43c0 .918.491 1.767 1.293 2.229l8.162 4.713a2.57 2.57 0 0 0 1.225.336v-4.531a1.761 1.761 0 0 1-.833-.235L6.156 16.38a1.765 1.765 0 0 1-.877-1.528V9.136a1.776 1.776 0 0 1 .131-.676Zm16.67 2.223-1.89 1.092a1.058 1.058 0 0 1 .124.46v3.856c0 .378-.2.72-.526.907l-3.336 1.93a1.04 1.04 0 0 1-.295.107v2.17c.152-.027.304-.078.44-.157l4.949-2.859a1.36 1.36 0 0 0 .68-1.18V9.136a1.36 1.36 0 0 0-.147-.607Zm-12.387.13a1.36 1.36 0 0 0-.088.481v5.715a1.36 1.36 0 0 0 .68 1.18l4.95 2.86c.194.112.412.166.627.177v-2.174a1.054 1.054 0 0 1-.46-.123L8.14 14.843a1.054 1.054 0 0 1-.532-.908v-3.853a.99.99 0 0 1 .077-.38l-.034-.013z"/></svg>
|
Before Width: | Height: | Size: 1.5 KiB |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kirby</title><path d="M16.571 12l-2.857 1.48v.234h2.857V16H7.43v-2.286h2.857v-.25L7.429 12V9.143L12 11.598l4.571-2.455M12 0l10.286 5.999V18L12 24 1.714 18.001V6zM2.857 6.682v10.636L12 22.651l9.143-5.333V6.682L12 1.349Z"/></svg>
|
Before Width: | Height: | Size: 318 B |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Laravel</title><path d="M23.642 5.43a.364.364 0 01.014.1v5.149c0 .135-.073.26-.189.326l-4.323 2.49v4.934a.378.378 0 01-.188.326L9.93 23.949a.316.316 0 01-.066.027c-.008.002-.016.008-.024.01a.348.348 0 01-.192 0c-.011-.002-.02-.008-.03-.012-.02-.008-.042-.014-.062-.025L.533 18.755a.376.376 0 01-.189-.326V2.974c0-.033.005-.066.014-.098.003-.012.01-.02.014-.032a.369.369 0 01.023-.058c.004-.013.015-.022.023-.033l.033-.045c.012-.01.025-.018.037-.027.014-.012.027-.024.041-.034H.53L5.043.05a.375.375 0 01.375 0L9.93 2.647h.002c.015.01.027.021.04.033l.038.027c.013.014.02.03.033.045.008.011.02.021.025.033.01.02.017.038.024.058.003.011.01.021.013.032.01.031.014.064.014.098v9.652l3.76-2.164V5.527c0-.033.004-.066.013-.098.003-.01.01-.02.013-.032a.487.487 0 01.024-.059c.007-.012.018-.02.025-.033.012-.015.021-.03.033-.043.012-.012.025-.02.037-.028.014-.01.026-.023.041-.032h.001l4.513-2.598a.375.375 0 01.375 0l4.513 2.598c.016.01.027.021.042.031.012.01.025.018.036.028.013.014.022.03.034.044.008.012.019.021.024.033.011.02.018.04.024.06.006.01.012.021.015.032zm-.74 5.032V6.179l-1.578.908-2.182 1.256v4.283zm-4.51 7.75v-4.287l-2.147 1.225-6.126 3.498v4.325zM1.093 3.624v14.588l8.273 4.761v-4.325l-4.322-2.445-.002-.003H5.04c-.014-.01-.025-.021-.04-.031-.011-.01-.024-.018-.035-.027l-.001-.002c-.013-.012-.021-.025-.031-.04-.01-.011-.021-.022-.028-.036h-.002c-.008-.014-.013-.031-.02-.047-.006-.016-.014-.027-.018-.043a.49.49 0 01-.008-.057c-.002-.014-.006-.027-.006-.041V5.789l-2.18-1.257zM5.23.81L1.47 2.974l3.76 2.164 3.758-2.164zm1.956 13.505l2.182-1.256V3.624l-1.58.91-2.182 1.255v9.435zm11.581-10.95l-3.76 2.163 3.76 2.163 3.759-2.164zm-.376 4.978L16.21 7.087 14.63 6.18v4.283l2.182 1.256 1.58.908zm-8.65 9.654l5.514-3.148 2.756-1.572-3.757-2.163-4.323 2.489-3.941 2.27z"/></svg>
|
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 5.5 KiB |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Node.js</title><path d="M11.998,24c-0.321,0-0.641-0.084-0.922-0.247l-2.936-1.737c-0.438-0.245-0.224-0.332-0.08-0.383 c0.585-0.203,0.703-0.25,1.328-0.604c0.065-0.037,0.151-0.023,0.218,0.017l2.256,1.339c0.082,0.045,0.197,0.045,0.272,0l8.795-5.076 c0.082-0.047,0.134-0.141,0.134-0.238V6.921c0-0.099-0.053-0.192-0.137-0.242l-8.791-5.072c-0.081-0.047-0.189-0.047-0.271,0 L3.075,6.68C2.99,6.729,2.936,6.825,2.936,6.921v10.15c0,0.097,0.054,0.189,0.139,0.235l2.409,1.392 c1.307,0.654,2.108-0.116,2.108-0.89V7.787c0-0.142,0.114-0.253,0.256-0.253h1.115c0.139,0,0.255,0.112,0.255,0.253v10.021 c0,1.745-0.95,2.745-2.604,2.745c-0.508,0-0.909,0-2.026-0.551L2.28,18.675c-0.57-0.329-0.922-0.945-0.922-1.604V6.921 c0-0.659,0.353-1.275,0.922-1.603l8.795-5.082c0.557-0.315,1.296-0.315,1.848,0l8.794,5.082c0.57,0.329,0.924,0.944,0.924,1.603 v10.15c0,0.659-0.354,1.273-0.924,1.604l-8.794,5.078C12.643,23.916,12.324,24,11.998,24z M19.099,13.993 c0-1.9-1.284-2.406-3.987-2.763c-2.731-0.361-3.009-0.548-3.009-1.187c0-0.528,0.235-1.233,2.258-1.233 c1.807,0,2.473,0.389,2.747,1.607c0.024,0.115,0.129,0.199,0.247,0.199h1.141c0.071,0,0.138-0.031,0.186-0.081 c0.048-0.054,0.074-0.123,0.067-0.196c-0.177-2.098-1.571-3.076-4.388-3.076c-2.508,0-4.004,1.058-4.004,2.833 c0,1.925,1.488,2.457,3.895,2.695c2.88,0.282,3.103,0.703,3.103,1.269c0,0.983-0.789,1.402-2.642,1.402 c-2.327,0-2.839-0.584-3.011-1.742c-0.02-0.124-0.126-0.215-0.253-0.215h-1.137c-0.141,0-0.254,0.112-0.254,0.253 c0,1.482,0.806,3.248,4.655,3.248C17.501,17.007,19.099,15.91,19.099,13.993z"/></svg>
|
Before Width: | Height: | Size: 1.6 KiB |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenJDK</title><path d="M11.915 0 11.7.215C9.515 2.4 7.47 6.39 6.046 10.483c-1.064 1.024-3.633 2.81-3.711 3.551-.093.87 1.746 2.611 1.55 3.235-.198.625-1.304 1.408-1.014 1.939.1.188.823.011 1.277-.491a13.389 13.389 0 0 0-.017 2.14c.076.906.27 1.668.643 2.232.372.563.956.911 1.667.911.397 0 .727-.114 1.024-.264.298-.149.571-.33.91-.5.68-.34 1.634-.666 3.53-.604 1.903.062 2.872.39 3.559.704.687.314 1.15.664 1.925.664.767 0 1.395-.336 1.807-.9.412-.563.631-1.33.72-2.24.06-.623.055-1.32 0-2.066.454.45 1.117.604 1.213.424.29-.53-.816-1.314-1.013-1.937-.198-.624 1.642-2.366 1.549-3.236-.08-.748-2.707-2.568-3.748-3.586C16.428 6.374 14.308 2.394 12.13.215zm.175 6.038a2.95 2.95 0 0 1 2.943 2.942 2.95 2.95 0 0 1-2.943 2.943A2.95 2.95 0 0 1 9.148 8.98a2.95 2.95 0 0 1 2.942-2.942zM8.685 7.983a3.515 3.515 0 0 0-.145.997c0 1.951 1.6 3.55 3.55 3.55 1.95 0 3.55-1.598 3.55-3.55 0-.329-.046-.648-.132-.951.334.095.64.208.915.336a42.699 42.699 0 0 1 2.042 5.829c.678 2.545 1.01 4.92.846 6.607-.082.844-.29 1.51-.606 1.94-.315.431-.713.651-1.315.651-.593 0-.932-.27-1.673-.61-.741-.338-1.825-.694-3.792-.758-1.974-.064-3.073.293-3.821.669-.375.188-.659.373-.911.5s-.466.2-.752.2c-.53 0-.876-.209-1.16-.64-.285-.43-.474-1.101-.545-1.948-.141-1.693.176-4.069.823-6.614a43.155 43.155 0 0 1 1.934-5.783c.348-.167.749-.31 1.192-.425zm-3.382 4.362a.216.216 0 0 1 .13.031c-.166.56-.323 1.116-.463 1.665a33.849 33.849 0 0 0-.547 2.555 3.9 3.9 0 0 0-.2-.39c-.58-1.012-.914-1.642-1.16-2.08.315-.24 1.679-1.755 2.24-1.781zm13.394.01c.562.027 1.926 1.543 2.24 1.783-.246.438-.58 1.068-1.16 2.08a4.428 4.428 0 0 0-.163.309 32.354 32.354 0 0 0-.562-2.49 40.579 40.579 0 0 0-.482-1.652.216.216 0 0 1 .127-.03z"/></svg>
|
Before Width: | Height: | Size: 1.7 KiB |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PHP</title><path d="M7.01 10.207h-.944l-.515 2.648h.838c.556 0 .97-.105 1.242-.314.272-.21.455-.559.55-1.049.092-.47.05-.802-.124-.995-.175-.193-.523-.29-1.047-.29zM12 5.688C5.373 5.688 0 8.514 0 12s5.373 6.313 12 6.313S24 15.486 24 12c0-3.486-5.373-6.312-12-6.312zm-3.26 7.451c-.261.25-.575.438-.917.551-.336.108-.765.164-1.285.164H5.357l-.327 1.681H3.652l1.23-6.326h2.65c.797 0 1.378.209 1.744.628.366.418.476 1.002.33 1.752a2.836 2.836 0 0 1-.305.847c-.143.255-.33.49-.561.703zm4.024.715l.543-2.799c.063-.318.039-.536-.068-.651-.107-.116-.336-.174-.687-.174H11.46l-.704 3.625H9.388l1.23-6.327h1.367l-.327 1.682h1.218c.767 0 1.295.134 1.586.401s.378.7.263 1.299l-.572 2.944h-1.389zm7.597-2.265a2.782 2.782 0 0 1-.305.847c-.143.255-.33.49-.561.703a2.44 2.44 0 0 1-.917.551c-.336.108-.765.164-1.286.164h-1.18l-.327 1.682h-1.378l1.23-6.326h2.649c.797 0 1.378.209 1.744.628.366.417.477 1.001.331 1.751zM17.766 10.207h-.943l-.516 2.648h.838c.557 0 .971-.105 1.242-.314.272-.21.455-.559.551-1.049.092-.47.049-.802-.125-.995s-.524-.29-1.047-.29z"/></svg>
|
Before Width: | Height: | Size: 1.1 KiB |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Python</title><path d="M14.25.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05zm-6.3 1.98l-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09zm13.09 3.95l.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01zm-6.47 14.25l-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08z"/></svg>
|
Before Width: | Height: | Size: 1.5 KiB |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>React</title><path d="M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z"/></svg>
|
Before Width: | Height: | Size: 2.9 KiB |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Simple Icons</title><path d="M12 0C8.688 0 6 2.688 6 6s2.688 6 6 6c1.066 0 2.1171.2862 3.0371.8262 2.858 1.678 3.8167 5.3539 2.1387 8.2129h1.6797a7.4925 7.4925 0 0 0 .6425-3.0293c.003-4.144-3.356-7.5048-7.498-7.5098-2.484 0-4.5-2.016-4.5-4.5S9.516 1.5 12 1.5s4.5 2.016 4.5 4.5H18c0-3.312-2.688-6-6-6zm0 3c-1.597.04-2.8799 1.3259-2.9219 2.9219C9.0351 7.5799 10.343 8.957 12 9c1.597-.04 2.8799-1.3259 2.9219-2.9219C14.9649 4.4201 13.656 3.043 12 3zm0 1.5c.828 0 1.5.672 1.5 1.5v.002c0 .828-.672 1.5-1.5 1.5-.83 0-1.5-.673-1.5-1.502 0-.83.67-1.5 1.5-1.5zM7.5 15v1.5H9v6H4.5V24h15v-1.5H15v-6h1.5V15h-9zm3 1.5h3v6h-3v-6zm-6 1.4707V18a7.418 7.418 0 0 0 .6445 3.039h1.6836C6.3001 20.147 6 19.11 6 18v-.0293H4.5Z"/></svg>
|
Before Width: | Height: | Size: 804 B |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Solid</title><path d="M11.558.788A9.082 9.082 0 0 0 9.776.99l-.453.15c-.906.303-1.656.755-2.1 1.348l-.301.452-2.035 3.528c.426-.387.974-.698 1.643-.894h.001l.613-.154h.001a8.82 8.82 0 0 1 1.777-.206c2.916-.053 6.033 1.148 8.423 2.36 2.317 1.175 3.888 2.32 3.987 2.39L24 5.518c-.082-.06-1.66-1.21-3.991-2.386-2.393-1.206-5.521-2.396-8.45-2.343zM8.924 5.366a8.634 8.634 0 0 0-1.745.203l-.606.151c-1.278.376-2.095 1.16-2.43 2.108-.334.948-.188 2.065.487 3.116.33.43.747.813 1.216 1.147L12.328 10h.001a6.943 6.943 0 0 1 6.013 1.013l2.844-.963c-.17-.124-1.663-1.2-3.91-2.34-2.379-1.206-5.479-2.396-8.352-2.344zm5.435 4.497a6.791 6.791 0 0 0-1.984.283L2.94 13.189 0 18.334l9.276-2.992a6.945 6.945 0 0 1 7.408 2.314v.001c.695.903.89 1.906.66 2.808l2.572-4.63c.595-1.041.45-2.225-.302-3.429a6.792 6.792 0 0 0-5.255-2.543zm-3.031 5.341a6.787 6.787 0 0 0-2.006.283L.008 18.492c.175.131 2.02 1.498 4.687 2.768 2.797 1.332 6.37 2.467 9.468 1.712l.454-.152h.002c1.278-.376 2.134-1.162 2.487-2.09.353-.93.207-2.004-.541-2.978a6.791 6.791 0 0 0-5.237-2.548z"/></svg>
|
Before Width: | Height: | Size: 1.1 KiB |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Svelte</title><path d="M10.354 21.125a4.44 4.44 0 0 1-4.765-1.767 4.109 4.109 0 0 1-.703-3.107 3.898 3.898 0 0 1 .134-.522l.105-.321.287.21a7.21 7.21 0 0 0 2.186 1.092l.208.063-.02.208a1.253 1.253 0 0 0 .226.83 1.337 1.337 0 0 0 1.435.533 1.231 1.231 0 0 0 .343-.15l5.59-3.562a1.164 1.164 0 0 0 .524-.778 1.242 1.242 0 0 0-.211-.937 1.338 1.338 0 0 0-1.435-.533 1.23 1.23 0 0 0-.343.15l-2.133 1.36a4.078 4.078 0 0 1-1.135.499 4.44 4.44 0 0 1-4.765-1.766 4.108 4.108 0 0 1-.702-3.108 3.855 3.855 0 0 1 1.742-2.582l5.589-3.563a4.072 4.072 0 0 1 1.135-.499 4.44 4.44 0 0 1 4.765 1.767 4.109 4.109 0 0 1 .703 3.107 3.943 3.943 0 0 1-.134.522l-.105.321-.286-.21a7.204 7.204 0 0 0-2.187-1.093l-.208-.063.02-.207a1.255 1.255 0 0 0-.226-.831 1.337 1.337 0 0 0-1.435-.532 1.231 1.231 0 0 0-.343.15L8.62 9.368a1.162 1.162 0 0 0-.524.778 1.24 1.24 0 0 0 .211.937 1.338 1.338 0 0 0 1.435.533 1.235 1.235 0 0 0 .344-.151l2.132-1.36a4.067 4.067 0 0 1 1.135-.498 4.44 4.44 0 0 1 4.765 1.766 4.108 4.108 0 0 1 .702 3.108 3.857 3.857 0 0 1-1.742 2.583l-5.589 3.562a4.072 4.072 0 0 1-1.135.499m10.358-17.95C18.484-.015 14.082-.96 10.9 1.068L5.31 4.63a6.412 6.412 0 0 0-2.896 4.295 6.753 6.753 0 0 0 .666 4.336 6.43 6.43 0 0 0-.96 2.396 6.833 6.833 0 0 0 1.168 5.167c2.229 3.19 6.63 4.135 9.812 2.108l5.59-3.562a6.41 6.41 0 0 0 2.896-4.295 6.756 6.756 0 0 0-.665-4.336 6.429 6.429 0 0 0 .958-2.396 6.831 6.831 0 0 0-1.167-5.168Z"/></svg>
|
Before Width: | Height: | Size: 1.5 KiB |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TypeScript</title><path d="M1.125 0C.502 0 0 .502 0 1.125v21.75C0 23.498.502 24 1.125 24h21.75c.623 0 1.125-.502 1.125-1.125V1.125C24 .502 23.498 0 22.875 0zm17.363 9.75c.612 0 1.154.037 1.627.111a6.38 6.38 0 0 1 1.306.34v2.458a3.95 3.95 0 0 0-.643-.361 5.093 5.093 0 0 0-.717-.26 5.453 5.453 0 0 0-1.426-.2c-.3 0-.573.028-.819.086a2.1 2.1 0 0 0-.623.242c-.17.104-.3.229-.393.374a.888.888 0 0 0-.14.49c0 .196.053.373.156.529.104.156.252.304.443.444s.423.276.696.41c.273.135.582.274.926.416.47.197.892.407 1.266.628.374.222.695.473.963.753.268.279.472.598.614.957.142.359.214.776.214 1.253 0 .657-.125 1.21-.373 1.656a3.033 3.033 0 0 1-1.012 1.085 4.38 4.38 0 0 1-1.487.596c-.566.12-1.163.18-1.79.18a9.916 9.916 0 0 1-1.84-.164 5.544 5.544 0 0 1-1.512-.493v-2.63a5.033 5.033 0 0 0 3.237 1.2c.333 0 .624-.03.872-.09.249-.06.456-.144.623-.25.166-.108.29-.234.373-.38a1.023 1.023 0 0 0-.074-1.089 2.12 2.12 0 0 0-.537-.5 5.597 5.597 0 0 0-.807-.444 27.72 27.72 0 0 0-1.007-.436c-.918-.383-1.602-.852-2.053-1.405-.45-.553-.676-1.222-.676-2.005 0-.614.123-1.141.369-1.582.246-.441.58-.804 1.004-1.089a4.494 4.494 0 0 1 1.47-.629 7.536 7.536 0 0 1 1.77-.201zm-15.113.188h9.563v2.166H9.506v9.646H6.789v-9.646H3.375z"/></svg>
|
Before Width: | Height: | Size: 1.3 KiB |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vue.js</title><path d="M24,1.61H14.06L12,5.16,9.94,1.61H0L12,22.39ZM12,14.08,5.16,2.23H9.59L12,6.41l2.41-4.18h4.43Z"/></svg>
|
Before Width: | Height: | Size: 215 B |
|
@ -1 +0,0 @@
|
|||
<svg fill="white" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WordPress</title><path d="M21.469 6.825c.84 1.537 1.318 3.3 1.318 5.175 0 3.979-2.156 7.456-5.363 9.325l3.295-9.527c.615-1.54.82-2.771.82-3.864 0-.405-.026-.78-.07-1.11m-7.981.105c.647-.03 1.232-.105 1.232-.105.582-.075.514-.93-.067-.899 0 0-1.755.135-2.88.135-1.064 0-2.85-.15-2.85-.15-.585-.03-.661.855-.075.885 0 0 .54.061 1.125.09l1.68 4.605-2.37 7.08L5.354 6.9c.649-.03 1.234-.1 1.234-.1.585-.075.516-.93-.065-.896 0 0-1.746.138-2.874.138-.2 0-.438-.008-.69-.015C4.911 3.15 8.235 1.215 12 1.215c2.809 0 5.365 1.072 7.286 2.833-.046-.003-.091-.009-.141-.009-1.06 0-1.812.923-1.812 1.914 0 .89.513 1.643 1.06 2.531.411.72.89 1.643.89 2.977 0 .915-.354 1.994-.821 3.479l-1.075 3.585-3.9-11.61.001.014zM12 22.784c-1.059 0-2.081-.153-3.048-.437l3.237-9.406 3.315 9.087c.024.053.05.101.078.149-1.12.393-2.325.609-3.582.609M1.211 12c0-1.564.336-3.05.935-4.39L7.29 21.709C3.694 19.96 1.212 16.271 1.211 12M12 0C5.385 0 0 5.385 0 12s5.385 12 12 12 12-5.385 12-12S18.615 0 12 0"/></svg>
|
Before Width: | Height: | Size: 1 KiB |
|
@ -1 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>1001Tracklists</title><path d="M9.422 10.723h-1.35v3.807h2.458v-4.048h2.94v4.337h-1.35v1.35h-1.349v2.458h2.458v-2.7h2.699v-5.204h-1.35v-1.35H9.422zm1.35 11.952h2.457v-2.458H10.77v2.458zm-2.676-20H6.747v1.35h-1.35v1.348H4.049v1.35h-1.35v6.699H1.35v1.35H0v2.457h1.35v1.35h1.349v1.349h2.458v-7.856h-1.35v-4.24h1.35v-1.35h1.349v-1.35h1.35V3.784h8.289v1.35h1.349v1.349h1.35v1.35h1.349v4.24h-1.35v7.856h2.458v-1.35h1.35v-1.35H24v-2.457h-1.35v-1.35h-1.349V6.724h-1.35v-1.35h-1.349V4.024h-1.349v-1.35h-1.35V1.326H8.097v1.35Z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>1001Tracklists</title><path d="M8.0957 1.334v1.3457H6.7461v1.3457H5.3984V5.371H4.0488v1.3457H2.6992v6.6816H1.3496v1.3477H0v2.4512h1.3496v1.3457h1.3496v1.3457h2.457v-7.836H3.8067V7.8223h1.3497V6.4766h1.3496V5.1309h1.3496V3.7852h8.289v1.3457h1.3496v1.3457h1.3496v1.3457h1.3497v4.2304h-1.3497v7.836h2.457V18.543h1.3497v-1.3457H24V14.746h-1.3496v-1.3477h-1.3496V6.7168h-1.3496V5.3711h-1.3496V4.0254h-1.3477V2.6797h-1.3496V1.334Zm1.3711 8v1.3515H8.1113v3.8165h2.4688v-4.0567h2.9512v4.3477h-1.3555v1.3515h-1.3535v2.4649h2.4668v-2.7051H16v-5.2188h-1.3555V9.334Zm1.3555 10.8691v2.463h2.4668v-2.463z"/></svg>
|
Before Width: | Height: | Size: 603 B After Width: | Height: | Size: 677 B |
|
@ -1 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>1Password</title><path d="M12 0C5.373 0 0 5.373 0 12c0 6.628 5.373 12 12 12s12-5.372 12-12c0-6.627-5.373-12-12-12zm-1.162 4.861h2.324c.39 0 .587 0 .736.077a.698.698 0 0 1 .305.304c.076.15.076.344.076.735v6.353c0 .098 0 .145-.013.19a.35.35 0 0 1-.053.113c-.028.038-.066.068-.14.129l-.81.658c-.09.073-.137.111-.154.156a.174.174 0 0 0 0 .121c.017.045.064.08.155.155l.808.658a.764.764 0 0 1 .14.13.349.349 0 0 1 .054.112.753.753 0 0 1 .013.191v3.08c0 .391 0 .586-.076.735a.698.698 0 0 1-.305.306c-.149.076-.345.075-.736.075h-2.324c-.39 0-.588.001-.736-.075a.698.698 0 0 1-.305-.306c-.076-.149-.076-.344-.076-.735V11.67c0-.098 0-.145.013-.19a.347.347 0 0 1 .053-.113c.028-.037.066-.067.14-.129l.81-.658c.09-.074.137-.11.154-.154a.174.174 0 0 0 0-.123c-.017-.045-.064-.08-.155-.155l-.808-.658a.757.757 0 0 1-.14-.13.348.348 0 0 1-.054-.112.722.722 0 0 1-.013-.191v-3.08c0-.391 0-.586.076-.735a.698.698 0 0 1 .305-.304c.149-.076.345-.077.736-.077z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>1Password</title><path d="M12 .007C5.373.007 0 5.376 0 11.999c0 6.624 5.373 11.994 12 11.994S24 18.623 24 12C24 5.376 18.627.007 12 .007Zm-.895 4.857h1.788c.484 0 .729.002.914.096a.86.86 0 0 1 .377.377c.094.185.095.428.095.912v6.016c0 .12 0 .182-.015.238a.427.427 0 0 1-.067.137.923.923 0 0 1-.174.162l-.695.564c-.113.092-.17.138-.191.194a.216.216 0 0 0 0 .15c.02.055.078.101.191.193l.695.565c.094.076.14.115.174.162.03.042.053.087.067.137a.936.936 0 0 1 .015.238v2.746c0 .484-.001.727-.095.912a.86.86 0 0 1-.377.377c-.185.094-.43.096-.914.096h-1.788c-.484 0-.726-.002-.912-.096a.86.86 0 0 1-.377-.377c-.094-.185-.095-.428-.095-.912v-6.016c0-.12 0-.182.015-.238a.437.437 0 0 1 .067-.139c.034-.047.08-.083.174-.16l.695-.564c.113-.092.17-.138.191-.194a.216.216 0 0 0 0-.15c-.02-.055-.078-.101-.191-.193l-.695-.565a.92.92 0 0 1-.174-.162.437.437 0 0 1-.067-.139.92.92 0 0 1-.015-.236V6.25c0-.484.001-.727.095-.912a.86.86 0 0 1 .377-.377c.186-.094.428-.096.912-.096z"/></svg>
|
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1 KiB |
1
icons/2k.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>2K</title><path d="M0 .002v23.997h24V.002H0Zm10.962 5.592c2.36 0 4.443.416 3.799 2.423-.434 1.365-2.017 1.918-3.114 2.109l-2.757.489c-.655.114-1.039.277-1.3.549h6.012l-.818 2.529 3.446-2.529h3.755l-4.091 2.772 2.07 4.402h-3.766l-1.082-2.754-1.197.826-.619 1.928H8.471l1.718-5.374h-6.25C4.874 10.2 6.891 9.36 8.731 8.989l2.264-.457c.387-.07.64-.259.736-.557.136-.416-.32-.581-.994-.581-.784 0-1.604.074-1.984 1.005H5.646c1.009-2.474 3.483-2.805 5.316-2.805Z"/></svg>
|
After Width: | Height: | Size: 543 B |
1
icons/365datascience.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>365 Data Science</title><path d="M1.4995 13.6448v-.8577h.8188c.5752 0 1.183-.152 1.1905-.6681 0-.3178-.2587-.7385-1.1666-.7385-.5024 0-1.183.1746-1.183.6832h-1.07c0-1.1993 1.2156-1.6326 2.2605-1.6326 1.07 0 2.2204.5086 2.2291 1.6916a1.1716 1.1716 0 0 1-.7861 1.0876c.5425.1746.9243.6995.9243 1.168 0 1.3588-1.3049 1.7581-2.3987 1.7581-1.0938 0-2.3108-.4345-2.3183-1.6979h1.0775c0 .5727.7862.7711 1.2483.7711.5426 0 1.2647-.2223 1.2647-.8188 0-.3328-.1871-.746-1.2081-.746zm5.0083-1.4304v.8339c.2512-.3768.8666-.5878 1.3124-.5878 1.1428 0 2.3422.4685 2.3422 1.8512 0 1.232-1.207 1.8436-2.3497 1.8436-1.1429 0-2.3673-.6116-2.3673-1.8587V12.222c0-1.2395 1.168-1.8184 2.3346-1.8184 1.232 0 2.3259.476 2.3259 1.6439H9.0422c0-.4923-.628-.7385-1.2396-.7385-.6405-.0075-1.2885.3341-1.2885.9369zm2.5934 2.0973c0-.6116-.5677-.9369-1.281-.9369-.7133 0-1.3212.3177-1.3124.9369.0088.6191.6079.908 1.3049.908.6718 0 1.2885-.2964 1.2885-.908zm5.9967-2.8119h-3.063v.977h1.1013c1.2082 0 2.2857.4848 2.2781 1.7872 0 1.2633-1.0787 1.8674-2.2216 1.8674-1.247 0-2.317-.437-2.3258-1.7406h1.0637c0 .6129.7133.771 1.2483.771.535 0 1.1742-.2385 1.1742-.8978.0088-.628-.6279-.81-1.2156-.81h-2.1488v-2.94h4.1092zm7.9169-3.6897a.9494.9494 0 0 0-.4559 1.7808l-1.9252 4.7183a.9444.9444 0 0 0-.7988.0829l-2.047-2.3422a.9432.9432 0 0 0-.089-1.27.9431.9431 0 0 0-1.4105 1.2412.943.943 0 0 0 1.2483.2498l2.0458 2.3422a.9518.9518 0 0 0-.2072.5927.9491.9491 0 0 0 .2654.6936.9493.9493 0 0 0 1.5701-.3198.9491.9491 0 0 0 .062-.3738.9432.9432 0 0 0-.3427-.7296l1.949-4.7723a.8264.8264 0 0 0 .137.0101.9493.9493 0 0 0 .9083-.5775.9493.9493 0 0 0-.2148-1.0547.9495.9495 0 0 0-.6936-.2654Z"/></svg>
|
After Width: | Height: | Size: 1.7 KiB |
|
@ -1 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>42</title><path d="M24 12.42l-4.428 4.415H24zm-4.428-4.417l-4.414 4.418v4.414h4.414V12.42L24 8.003V3.575h-4.428zm-4.414 0l4.414-4.428h-4.414zM0 15.996h8.842v4.43h4.412V12.42H4.428l8.826-8.846H8.842L0 12.421z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>42</title><path d="M19.581 16.851H24v-4.439ZM24 3.574h-4.419v4.42l-4.419 4.418v4.44h4.419v-4.44L24 7.993Zm-4.419 0h-4.419v4.42zm-6.324 8.838H4.419l8.838-8.838H8.838L0 12.412v3.595h8.838v4.419h4.419z"/></svg>
|
Before Width: | Height: | Size: 294 B After Width: | Height: | Size: 285 B |
|
@ -1 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>500px</title><path d="M7.433 9.01A2.994 2.994 0 0 0 4.443 12a2.993 2.993 0 0 0 2.99 2.99 2.994 2.994 0 0 0 2.99-2.99 2.993 2.993 0 0 0-2.99-2.99m0 5.343A2.357 2.357 0 0 1 5.079 12a2.357 2.357 0 0 1 2.354-2.353A2.356 2.356 0 0 1 9.786 12a2.356 2.356 0 0 1-2.353 2.353m6.471-5.343a2.994 2.994 0 0 0-2.99 2.99 2.993 2.993 0 0 0 2.99 2.99 2.994 2.994 0 0 0 2.99-2.99 2.994 2.994 0 0 0-2.99-2.99m0 5.343A2.355 2.355 0 0 1 11.552 12a2.355 2.355 0 0 1 2.352-2.353A2.356 2.356 0 0 1 16.257 12a2.356 2.356 0 0 1-2.353 2.353m-11.61-3.55a2.1 2.1 0 0 0-1.597.423V9.641h2.687c.093 0 .16-.017.16-.292 0-.269-.108-.28-.18-.28H.39c-.174 0-.265.14-.265.294v2.602c0 .136.087.183.247.214.141.028.223.012.285-.057l.006-.01c.283-.408.9-.804 1.486-.732.699.086 1.262.644 1.34 1.327a1.512 1.512 0 0 1-1.5 1.685c-.636 0-1.19-.408-1.422-1.001-.035-.088-.092-.152-.343-.062-.229.083-.243.18-.212.268a2.11 2.11 0 0 0 1.976 1.386 2.102 2.102 0 0 0 .305-4.18M18.938 9.04c-.805.062-1.434.77-1.434 1.61v2.66c0 .155.117.187.293.187s.293-.031.293-.186v-2.668c0-.524.382-.974.868-1.024a.972.972 0 0 1 .758.247.984.984 0 0 1 .322.73c0 .08-.039.34-.217.58-.135.182-.39.399-.844.399h-.009c-.115 0-.215.005-.234.28-.013.186-.012.269.148.29.286.04.576-.016.865-.166.492-.256.822-.741.861-1.267a1.562 1.562 0 0 0-.452-1.222 1.56 1.56 0 0 0-1.218-.45m3.919 1.56l1.085-1.086c.04-.039.132-.132-.055-.324-.08-.083-.153-.125-.217-.125h-.001a.163.163 0 0 0-.121.058L22.46 10.21l-1.086-1.093c-.088-.088-.19-.067-.322.065-.135.136-.157.24-.069.328l1.086 1.092-1.064 1.064-.007.007c-.026.025-.065.063-.065.125-.001.063.042.139.126.223.07.071.138.107.2.107.069 0 .114-.045.139-.07l1.068-1.067 1.09 1.092a.162.162 0 0 0 .115.045h.002c.069 0 .142-.04.217-.118.122-.129.143-.236.06-.319z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>500px</title><path d="M7.451 8.9995A3.0005 3.0005 0 1 0 10.4514 12a3.0275 3.0275 0 0 0-3.0006-3.0005Zm0 5.371A2.3554 2.3554 0 1 1 9.7912 12a2.3704 2.3704 0 0 1-2.3404 2.3704Zm6.448-5.371A3.0005 3.0005 0 1 0 16.8997 12a3.0005 3.0005 0 0 0-3.0005-3.0005Zm0 5.371A2.3554 2.3554 0 1 1 16.2396 12a2.3314 2.3314 0 0 1-2.3404 2.3704zM2.29 10.7997a2.0224 2.0224 0 0 0-1.5903.42V9.6297h2.7005c.09 0 .15-.03.15-.3 0-.2701-.12-.2701-.18-.2701H.3997a.27.27 0 0 0-.27.27V11.97c0 .15.09.18.24.21a.228.228 0 0 0 .27-.06A1.7073 1.7073 0 0 1 2.14 11.4 1.5603 1.5603 0 0 1 3.4902 12.72 1.5183 1.5183 0 0 1 2.17 14.4004h-.18a1.5303 1.5303 0 0 1-1.4103-.9901c-.03-.09-.09-.15-.33-.06-.2401.09-.2701.15-.2401.24a2.1274 2.1274 0 0 0 2.7005 1.2602A2.1274 2.1274 0 0 0 3.9703 12.15 2.1004 2.1004 0 0 0 2.29 10.7998zm16.65-1.7703a1.6263 1.6263 0 0 0-1.4403 1.6203v2.6704c0 .15.12.18.3.18s.3001-.03.3001-.18v-2.6704a1.0082 1.0082 0 0 1 .8702-1.0202.9872.9872 0 0 1 .7501.24.9572.9572 0 0 1 .33.7202 1.2002 1.2002 0 0 1-.21.57A.9452.9452 0 0 1 19 11.55c-.12 0-.21 0-.24.27 0 .1801 0 .2701.15.3001a1.4763 1.4763 0 0 0 .8701-.18 1.6113 1.6113 0 0 0 .8702-1.2602 1.5543 1.5543 0 0 0-1.4463-1.6803.8311.8311 0 0 1-.264.03zm3.9307 1.5602 1.0802-1.0801c.03-.03.12-.12-.06-.3301a.3.3 0 0 0-.2101-.12.156.156 0 0 0-.12.06l-1.0802 1.0802-1.0802-1.1102c-.09-.09-.18-.06-.33.06-.15.12-.15.24-.06.33l1.0801 1.0802-1.0862 1.1102a.228.228 0 0 0-.06.12.252.252 0 0 0 .12.2101.483.483 0 0 0 .21.12.318.318 0 0 0 .1501-.06l1.0802-1.0802 1.0802 1.0802a.156.156 0 0 0 .12.06.3.3 0 0 0 .21-.12c.09-.12.12-.24.03-.3z"/></svg>
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.6 KiB |
1
icons/7zip.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>7Zip</title><path d="M0 18.858h24V8.181H10.717V5.142H0ZM2.021 7.271h6.657v1.994c-1.74 2.09-2.84 4.502-2.948 7.404H3.477c.09-2.501.353-4.954 2.283-6.994l.033-.033H2.021Zm8.45 1.253h13.215v10.143H10.47Zm6.01 1.213v6.871h1.482v-6.87Zm2.755.043v6.912h1.616v-2.42h1.029c.43-.001.754-.29.969-.716.427-.848.429-2.257-.024-3.092-.227-.419-.571-.697-1.033-.684zm-7.924.002v1.596h2.217l-2.304 3.736v1.54h4.287V15.1h-2.698l2.786-3.909v-1.41Zm9.452 1.512h.595c.164-.006.287.081.371.217.17.273.172.736.004.99a.364.364 0 0 1-.373.176l-.55.047z"/></svg>
|
After Width: | Height: | Size: 616 B |
1
icons/99designs.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>99designs</title><path d="M21.6504 13.7786c0 1.163-.943 2.1059-2.1059 2.1059-1.163 0-2.1059-.943-2.1059-2.1059 0-1.163.943-2.1059 2.1059-2.1059 1.163 0 2.1059.943 2.1059 2.106zm-7.557-3.5718c0 1.0842-.8775 2.0229-2.0228 2.0229-1.117 0-2.0231-.9059-2.0231-2.0229s.906-2.0231 2.0231-2.0231c1.117 0 2.0229.906 2.0229 2.0231zm-7.6605 0c0 1.0822-.8759 2.0229-2.0231 2.0229-1.117 0-2.0228-.9059-2.0228-2.0229s.9058-2.0231 2.0228-2.0231 2.0231.906 2.0231 2.0231zm11.008 7.663c.9166.3985 2.2434.466 3.1223.0578.392-.182.7534-.4776 1.0847-.8858v.8776H24V6.0624h-2.4847v4.2717c-.707-.6853-1.4491-.9773-2.451-.9773-1.0589 0-1.9244.3524-2.5844.9162.0003-.0221.0006-.044.0006-.0662 0-2.435-1.9751-4.4098-4.4099-4.4098-1.6397 0-3.0704.8951-3.8305 2.2236C7.4803 6.692 6.0493 5.797 4.4098 5.797 1.9748 5.797 0 7.7718 0 10.2068c0 2.3312 1.81 4.2403 4.101 4.399L2.188 17.9193H5.057c1.061-1.8422 2.1222-3.6844 3.1831-5.5266.712 1.244 2.0124 2.1083 3.5216 2.213l-1.913 3.3136h2.8688l2.2372-3.8842c.0665 1.5842.868 3.1305 2.4863 3.8345"/></svg>
|
After Width: | Height: | Size: 1.1 KiB |
1
icons/9gag.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>9GAG</title><path d="m17.279 21.008 5.193-2.995V5.992l-5.193-2.996C14.423 1.348 12.048 0 12 0c-.048 0-2.423 1.348-5.279 2.996L1.528 5.992v2.354l5.193 2.996c2.856 1.648 5.232 2.996 5.28 2.996.048 0 1.469-.797 3.157-1.772a229.633 229.633 0 0 1 3.097-1.772c.016 0 .027 1.096.027 2.437l-.002 2.436-3.076 1.772c-1.692.975-3.115 1.783-3.163 1.795-.048.013-1.471-.776-3.162-1.752-1.69-.976-3.113-1.775-3.161-1.775-.155 0-4.036 2.274-4.011 2.35.031.093 10.136 5.937 10.276 5.943.057.002 2.44-1.344 5.296-2.992ZM9.847 8.391c-1.118-.65-2.033-1.2-2.033-1.222 0-.071 4.06-2.376 4.186-2.376.125 0 4.186 2.305 4.186 2.376 0 .063-4.047 2.375-4.184 2.39-.068.007-1.037-.519-2.155-1.168Z"/></svg>
|
After Width: | Height: | Size: 757 B |
|
@ -1 +0,0 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ableton Live</title><path d="M0 6.4v11.2h1.6V6.4zm3.2 0v11.2h1.6V6.4zm3.2 0v11.2H8V6.4zm3.2 0v11.2h1.6V6.4zm3.2 0V8H24V6.4zm0 3.2v1.6H24V9.6zm0 3.2v1.6H24v-1.6zm0 3.2v1.6H24V16z"/></svg>
|
Before Width: | Height: | Size: 264 B |
|
@ -1 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>About.me</title><path d="M19.536 9.146c-1.373 0-2.133 1.014-2.294 2.116h4.608c-.125-1.05-.867-2.115-2.314-2.115m-2.26 3.617c.235 1.156 1.193 1.97 2.532 1.97.725 0 1.77-.27 2.384-.914l1.175 1.35c-1.064 1.11-2.653 1.426-3.74 1.426-2.64 0-4.697-1.906-4.697-4.606 0-2.535 1.894-4.62 4.57-4.62 2.585 0 4.5 1.98 4.5 4.604v.766h-6.723v.023zm-6.487 3.83v-5.69c0-.976-.435-1.536-1.338-1.536-.814 0-1.355.585-1.717 1.007v6.24h-2.35v-5.7c0-.976-.415-1.532-1.318-1.532-.813 0-1.375.586-1.717 1.006v6.24H0V7.505h2.35v1.15c.4-.463 1.302-1.26 2.71-1.26 1.247 0 2.096.526 2.477 1.59.524-.761 1.5-1.59 2.91-1.59 1.7 0 2.69 1.01 2.69 2.963v6.24h-2.353l.005-.007z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>About.me</title><path d="M11.427 16.615v-6.042c0-.997-.444-1.669-1.541-1.669-.906 0-1.754.614-2.159 1.228v6.483H5.704v-6.042c0-.997-.423-1.669-1.523-1.669-.905 0-1.734.633-2.158 1.228v6.483H0V7.351h2.023v1.247C2.428 8.04 3.642 7.12 5.068 7.12c1.386 0 2.235.69 2.543 1.688.52-.825 1.754-1.688 3.16-1.688 1.697 0 2.68.92 2.68 2.8v6.694h-2.024zM24 12.163c0-2.925-1.788-5.042-4.604-5.042-2.777 0-4.759 2.174-4.759 4.869 0 2.945 2.079 4.888 4.913 4.89 1.476 0 2.855-.482 3.807-1.368l-.932-1.328c-.68.673-1.747 1.04-2.68 1.04-1.768 0-2.815-1.174-2.971-2.56H24v-.5zm-7.245-.943c.077-1.116.893-2.444 2.622-2.444 1.845 0 2.602 1.347 2.66 2.444h-5.282z"/></svg>
|
Before Width: | Height: | Size: 731 B After Width: | Height: | Size: 729 B |
1
icons/abusedotch.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>abuse.ch</title><path d="M22.8924 10.3775c.0193 0 .1179-.1827.3828-.2534.1078-.0287.3585-.0506.5405.0957.14.1127.1843.2965.1843.4838v1.127h-.2747V10.748c0-.362-.1831-.4094-.3296-.4094-.2709 0-.444.2105-.5033.296v1.1961h-.2746v-2.566h.2746zm-.9543.0514c-.189-.072-.391-.1213-.6007-.0514-.1745.0582-.2643.1976-.3101.3154-.032.084-.0479.1885-.0479.3137 0 .1758.0436.332.1436.4519.1925.2208.5373.2171.8417.0921v.2286c-.066.0388-.1671.0616-.186.0656-.088.0215-.5326.111-.8418-.179-.3632-.3404-.2155-.937-.2109-.9551.038-.1422.1081-.2924.2357-.4058.348-.3025.805-.2036.9764-.1046zm-5.9987 2.7958h1.7657v.5501h-2.423v-3.5904h2.3264v.5501h-1.669v.9285h1.4329v.55h-1.433zm-2.2842-.4803c0-.3335-.317-.4122-.8104-.5125a4.1973 4.1973 0 0 1-.3998-.1074c-.3907-.132-.5171-.3607-.5662-.4588-.1187-.2373-.1168-.6487.0134-.9231.2446-.5224.7924-.6253 1.186-.6253.444 0 .8488.1051 1.0761.2013v.5635c-.186-.0733-.365-.1261-.5367-.1583-.2899-.058-1.1565-.181-1.1565.4213 0 .0776.0048.2482.2146.373.2305.1308.4677.1222.9366.2683.1395.0412.263.0993.3703.1744.1073.0752.1923.1736.2549.2952.0626.1199.0939.2737.0939.4616 0 .3168-.1006.6336-.4132.8533-.3229.2255-.7791.271-1.0949.271-.3327 0-.7674-.0646-1.0465-.22v-.5555c.3126.1358.6309.22 1.0385.22.3188 0 .8399-.0718.8399-.542zm-5.2521.8855c-.5869-.3576-.5957-1.0336-.5957-1.331v-2.1145h.6574V12.24c0 .242.0154.7371.3891.9419.2631.1406.66.1406.923 0 .374-.2048.3892-.7003.3892-.9419v-2.0555h.6574v2.1146c0 .1502-.0089.2862-.0268.4078-.036.2726-.1623.6781-.577.9231-.4836.2828-1.3341.2865-1.8166 0zm-1.6215-2.4902c0 .1557-.0348.2988-.1046.4294-.0698.1288-.1852.2361-.3462.322v.0107c.1734.059.4509.1987.5582.5072.077.2086.0707.5612-.1422.8506-.0698.093-.1628.179-.2791.2576-.3154.2135-.7248.2434-.9768.255-.4364.0058-.873.0027-1.3095.0027v-3.5904h1.2478c.2853 0 .6671.0247.9607.2361.2757.193.3917.4718.3917.7191zM4.839 12.2131v1.0116h.4293a4.68 4.68 0 0 0 .2952-.008c.2888-.0252.5883-.114.6681-.3622.018-.0576.1233-.455-.3193-.5957-.1148-.0357-.2588-.0457-.4508-.0457zm.593-.5501c.1444 0 .4811-.0001.6091-.2227.0837-.143.0917-.3476-.008-.4991-.1227-.191-.418-.2067-.6548-.2067H4.839v.9285zm-4.0061-1.4794L0 13.7736h.7012c.2284-.5948.457-1.1895.6855-1.7843.0984-.252.2107-.5654.336-.9409h.0117c.3084.92.6724 1.8201 1.0215 2.7252h.6953l-1.4258-3.59zm17.604 5.3065h.2932V8.51h-.2932z"/></svg>
|
After Width: | Height: | Size: 2.3 KiB |
|
@ -1 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Accenture</title><path d="M23.297 14.74L.434 24v-5.263L16.8 12.11l6.497 2.631zm.27-5.371L.433 0v5.263l23.132 9.368V9.37z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Accenture</title><path d="m.66 16.95 13.242-4.926L.66 6.852V0l22.68 9.132v5.682L.66 24Z"/></svg>
|
Before Width: | Height: | Size: 207 B After Width: | Height: | Size: 174 B |
|
@ -1 +0,0 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Acclaim</title><path d="M12.468.186a.7.7 0 0 0-.95 0L1.924 9.193a1.705 1.705 0 0 0-.475 1.095v3.59c0 .358.214.452.475.207l9.601-9.01a.705.705 0 0 1 .95 0l9.603 9.01c.262.245.475.151.475-.207v-3.59a1.71 1.71 0 0 0-.475-1.095zm0 9.783a.705.705 0 0 0-.95 0l-9.595 9.002a1.705 1.705 0 0 0-.475 1.094v3.59c0 .358.214.453.475.208l9.601-9.007a.701.701 0 0 1 .95 0l9.603 9.008c.262.244.475.15.475-.208v-3.59a1.71 1.71 0 0 0-.475-1.094Z"/></svg>
|
Before Width: | Height: | Size: 514 B |
1
icons/activitypub.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ActivityPub</title><path d="M10.91 4.442L0 10.74v2.52L8.727 8.22v10.077l2.182 1.26zM6.545 12l-4.364 2.52 4.364 2.518zm6.545-2.52L17.455 12l-4.364 2.52zm0-5.038L24 10.74v2.52l-10.91 6.298v-2.52L21.819 12 13.091 6.96z"/></svg>
|
After Width: | Height: | Size: 302 B |
1
icons/actix.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Actix</title><path d="M4.583 3.895c-.27.22-.788.078-1.164-.334-.156.156-.269.298-.411.454.411.334.596.866.376 1.114-.22.27-.752.22-1.163-.113-.114.156-.22.333-.334.489.454.298.674.752.518 1.057s-.674.334-1.163.078c-.079.192-.192.376-.27.518.489.22.752.596.631.944-.113.298-.596.411-1.085.269-.078.192-.114.376-.156.568.489.156.816.489.752.787-.078.334-.518.518-1.008.454-.028.192-.028.412-.078.596.49.078.866.334.866.674 0 .341-.412.568-.894.596v.596c.49 0 .894.22.944.518.028.298-.298.631-.788.709.028.192.078.412.114.596.489-.078.893.078.972.376.078.298-.192.674-.632.816.078.192.114.376.192.568.454-.156.894-.029 1.007.22.114.298-.078.674-.518.943.078.192.192.334.298.518.412-.22.866-.192 1.008.078.191.27 0 .674-.334.972.114.156.22.333.376.489.376-.269.816-.297 1.007-.078.22.22.114.674-.191 1.008.156.156.298.298.454.411.333-.333.752-.454 1.007-.269.249.191.22.631-.028 1.057.156.113.333.22.489.333.298-.376.674-.567.944-.411s.333.596.114 1.057c.191.113.376.191.517.269.22-.411.596-.674.894-.567.298.113.412.567.298 1.007.192.078.376.114.568.192.156-.454.489-.752.787-.71.298.078.49.49.454.972.192.029.412.078.596.078.078-.489.334-.865.674-.816.334 0 .568.412.596.944h.596c0-.49.22-.894.518-.944.333-.028.631.334.752.816.191-.028.411-.078.596-.113-.114-.49.078-.944.376-1.057.333-.078.709.22.865.752.192-.078.376-.114.568-.192-.192-.489-.114-.972.191-1.114.298-.142.752.156.972.632.192-.078.376-.192.518-.27-.269-.454-.269-.972 0-1.163.298-.192.788.028 1.086.489.156-.113.333-.22.489-.376-.376-.411-.454-.943-.191-1.163.269-.22.787-.078 1.163.333.156-.156.298-.298.412-.411-.455-.376-.596-.866-.412-1.114.22-.27.752-.22 1.192.156l.028.028c.114-.156.27-.333.376-.489-.489-.298-.752-.752-.596-1.086.192-.298.71-.333 1.192-.028l.029.028c.113-.191.191-.376.269-.567h-.028c-.518-.192-.866-.632-.752-.972.113-.348.674-.454 1.192-.22.028 0 .028.028.078.028.078-.191.156-.411.191-.596h-.078c-.567-.113-.972-.489-.894-.815.078-.334.596-.518 1.164-.412.028 0 .078 0 .113.029.029-.22.078-.412.114-.632h-.114c-.567-.028-1.007-.333-1.007-.674 0-.34.489-.631 1.057-.596H24v-.631h-.114c-.567.078-1.057-.192-1.085-.518-.028-.333.376-.674.972-.752h.156c-.028-.22-.078-.411-.113-.631-.029 0-.078.028-.157.028-.567.156-1.085 0-1.163-.333-.113-.334.27-.752.816-.894.028 0 .113-.029.156-.029-.078-.22-.156-.411-.22-.596-.028.029-.078.029-.156.078-.518.22-1.057.156-1.192-.156-.156-.333.156-.787.674-1.007.078-.028.114-.028.192-.078-.114-.192-.192-.376-.298-.568-.029.029-.078.078-.156.114-.49.298-1.008.333-1.242.028-.191-.298.028-.787.518-1.114.028-.028.113-.078.156-.078-.113-.191-.27-.333-.411-.517-.029.028-.078.078-.114.113-.411.376-.972.49-1.192.22s-.078-.787.334-1.163c.028-.029.113-.079.156-.114-.156-.156-.298-.298-.49-.454-.028.028-.078.078-.113.156-.376.454-.866.631-1.164.412-.269-.22-.22-.752.156-1.192.029-.029.078-.114.114-.156-.192-.114-.334-.27-.518-.376-.028.028-.028.113-.078.156-.298.489-.752.752-1.086.596-.298-.192-.333-.71-.028-1.192.028-.029.078-.114.114-.156-.192-.114-.376-.192-.596-.298 0 .028-.029.113-.029.156-.191.518-.631.865-.972.752-.347-.114-.454-.674-.22-1.192.029-.028.029-.114.078-.156-.191-.078-.411-.114-.631-.192 0 .029 0 .078-.028.156-.114.568-.49.972-.816.894-.334-.078-.518-.596-.412-1.163 0-.029.029-.114.029-.156-.22-.029-.412-.078-.632-.078v.113c-.028.568-.333 1.008-.674 1.008-.333 0-.631-.49-.595-1.057V.078h-.632v.114c.078.567-.191 1.057-.518 1.085-.333.028-.674-.376-.752-.972V.192c-.191.028-.411.078-.596.113 0 .028 0 .028.029.078.156.568 0 1.086-.334 1.164-.333.113-.752-.27-.894-.816V.653c-.191.078-.376.156-.596.22 0 0 0 .028.029.028.22.518.156 1.057-.156 1.192-.334.156-.788-.156-1.008-.674V1.39c-.191.114-.376.192-.518.298.298.49.334 1.008.029 1.242-.298.191-.788-.028-1.114-.518-.156.114-.333.27-.489.376.333.369.439.887.177 1.107m-.518 6.491c-.454-.156-.709-.631-.568-1.085.157-.454.632-.71 1.086-.568.454.156.709.631.567 1.086-.113.446-.631.709-1.085.567m.78 8.194c-2.17-2.391-3.114-5.725-1.837-6.889 1.241-1.113 4.044.49 6.257 2.881 2.171 2.39 3.554 5.313 2.277 6.477-1.269 1.135-4.526-.107-6.697-2.469m9.138 2.171c-.49.113-.944-.192-1.057-.674-.114-.49.191-.944.674-1.057.489-.114.943.191 1.057.674.085.511-.213.95-.674 1.057m6.073-12.798c1.603.518 2.17 3.93 1.191 7.002s-3.412 5.555-5.015 5.065c-1.604-.518-1.604-3.788-.632-6.86.965-3.036 2.852-5.746 4.456-5.207m-1.384-2.029c.334.376.298.894-.078 1.241-.376.348-.894.298-1.241-.078-.348-.376-.298-.894.078-1.241.376-.298.943-.256 1.241.078m-4.909 4.498c.894.971.816 2.468-.156 3.362s-2.469.816-3.363-.156-.816-2.469.156-3.363c.958-.901 2.469-.822 3.363.157M9.946 2.554c3.143-.674 6.513.191 6.889 1.837s-2.469 3.257-5.612 3.966c-3.143.674-6.399.412-6.746-1.241-.384-1.682 2.319-3.881 5.469-4.562"/></svg>
|
After Width: | Height: | Size: 4.7 KiB |
|
@ -1 +0,0 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AddThis</title><path d="M18 13.496h-4.501v4.484h-3v-4.484H6v-2.99h4.5V6.021h3.001v4.485H18v2.99zM21 .041H3C1.348.043.008 1.379 0 3.031v17.94c.008 1.65 1.348 2.986 3 2.988h18c1.651-.002 2.991-1.338 3-2.988V3.031c-.009-1.652-1.348-2.987-3-2.99z"/></svg>
|
Before Width: | Height: | Size: 329 B |
1
icons/adventofcode.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Advent Of Code</title><path d="m14.05 13.236 6.498 9.606L18.91 24l-6.905-9.47L5.1 24l-1.637-1.158 6.498-9.606L.553 9.22l.615-1.69 9.596 3.463L11.087 0h1.826l.323 10.993 9.596-3.462.615 1.69-9.387 4.015z"/></svg>
|
After Width: | Height: | Size: 289 B |
|
@ -1 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aerospike</title><path d="M0 0v24h24V0zm19.295 5.386v1.64l-3.576 1.586v7.363l3.576 1.602v1.565L5.672 12.98l-1.607-.688 1.607-.743zm-4.948 3.825L7.45 12.283l6.897 3.092Z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aerospike</title><path d="M14.347 15.375 7.45 12.283l6.897-3.072v6.164zM24 0v24H0V0h24zm-4.705 5.386L5.672 11.548l-1.607.743 1.607.688 13.623 6.163v-1.565l-3.576-1.602V8.612l3.576-1.586v-1.64z"/></svg>
|
Before Width: | Height: | Size: 255 B After Width: | Height: | Size: 279 B |
|
@ -1 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Affinity Designer</title><path d="M10.44 0L0 18.083v5.197a.72.72 0 00.713.72h10.023L5.7 15.277 14.52 0zm5.16 0l-4.86 8.418 3.718 6.439H24V.718A.72.72 0 0023.28 0zm-5.4 9.353l-2.064 3.575a1.289 1.289 0 000 1.288c.23.4.656.64 1.117.64h4.125zm-3.122 6.44L11.816 24h11.471a.72.72 0 00.713-.718v-7.49Z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Affinity Designer</title><path d="M24 2.344v19.312A2.345 2.345 0 0 1 21.656 24H2.344A2.345 2.345 0 0 1 0 21.656V2.344A2.345 2.345 0 0 1 2.344 0h19.312A2.345 2.345 0 0 1 24 2.344ZM1.758 21.305c0 .517.42.937.938.937h8.226l-4.299-7.445 7.528-13.039h-3.482L1.758 17.192v4.113Zm11.418-6.866-2.712-4.698-1.761 3.051a1.098 1.098 0 0 0 .952 1.647h3.521Zm9.066 6.873v-6.075H7.799l4.044 7.005h9.462a.937.937 0 0 0 .937-.93Zm-.937-19.554h-6.232l-4.148 7.185 3.173 5.496h8.144V2.688a.937.937 0 0 0-.937-.93Z"/></svg>
|
Before Width: | Height: | Size: 383 B After Width: | Height: | Size: 582 B |
|
@ -1 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Affinity Photo</title><path d="M10.44 0l-.48.831 5.88 10.185L22.2 0zm12.84 0l-8.577 14.856H24V.711A.72.72 0 0023.28 0zM9.42 1.767L5.76 8.106h7.32zm1.563 7.257h-.018c-.36.005-.7.216-.879.523l-1.083 1.88-.008.014a1.052 1.052 0 000 1.02 16710.388 16710.388 0 001.093 1.894c.184.31.53.5.885.501.002 0 1.38.002 2.067-.001.36-.005.699-.205.878-.512.364-.631.731-1.261 1.093-1.894.176-.314.17-.703-.007-1.011l-.01-.015-1.078-1.87-.006-.009a1.053 1.053 0 00-.879-.52h-.012zM5.22 9.04L0 18.082v.39l.003 4.871a.72.72 0 00.662.655L9.3 9.04zm2.94 3.845L1.736 24h12.84zm2.757 2.906L15.657 24h7.623a.72.72 0 00.72-.72v-7.488Z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Affinity Photo</title><path d="M24 2.344v19.312A2.345 2.345 0 0 1 21.656 24H2.344A2.345 2.345 0 0 1 0 21.656V2.344A2.345 2.345 0 0 1 2.344 0h19.312A2.345 2.345 0 0 1 24 2.344Zm-13.328-.586-.41.709 5.021 8.693 5.43-9.402H10.672Zm2.213 7.702H11.12a.901.901 0 0 0-.75.446l-.925 1.605-.007.011a.901.901 0 0 0 0 .872l.924 1.599.01.017a.893.893 0 0 0 .755.428c.002 0 1.178.001 1.765-.002a.888.888 0 0 0 .75-.436c.311-.539.624-1.077.933-1.617a.879.879 0 0 0-.006-.863l-.008-.013-.921-1.595-.005-.008a.897.897 0 0 0-.75-.444ZM2.36 22.18 9.699 9.475H6.215l-4.457 7.717.002 4.182a.94.94 0 0 0 .6.806Zm11.844.062-5.479-9.486-5.485 9.486h10.964ZM12.926 8.676l-3.125-5.41-3.125 5.41h6.25Zm9.316 6.56H11.08l4.046 7.006h6.197a.938.938 0 0 0 .919-.937v-6.069Zm-.635-13.428-7.295 12.63h7.93V2.695a.938.938 0 0 0-.635-.887Z"/></svg>
|
Before Width: | Height: | Size: 698 B After Width: | Height: | Size: 892 B |
|
@ -1 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Affinity Publisher</title><path d="M10.44 0L9.36 1.87 22.136 24h1.144a.72.72 0 00.72-.72v-3.119L12.36 0zm3 0L24 18.29V.72a.72.72 0 00-.72-.72zM8.82 2.806l-1.98 3.43L16.976 24h4.08zM6.24 7.274L4.76 9.837a1.941 1.941 0 000 1.942C6.531 14.842 11.816 24 11.816 24h4.08zm-2.58 4.47L0 18.082v5.197c0 .397.323.72.72.72h10.016Z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Affinity Publisher</title><path d="M24 2.344v19.312A2.345 2.345 0 0 1 21.656 24H2.344A2.345 2.345 0 0 1 0 21.656V2.344A2.345 2.345 0 0 1 2.344 0h19.312A2.345 2.345 0 0 1 24 2.344Zm-1.758 16.607-9.93-17.193h-1.639L9.75 3.354l10.91 18.888h.645c.517 0 .937-.42.937-.937v-2.354Zm-6.911 3.291L7.086 7.967l-1.263 2.187a1.657 1.657 0 0 0 0 1.657c1.512 2.615 6.025 10.431 6.025 10.431h3.483Zm5.974-20.484h-8.071l9.008 15.596V2.695a.938.938 0 0 0-.937-.937Zm-10.38 20.484L4.883 11.781l-3.125 5.411v4.113c0 .517.42.937.938.937h8.229Zm8.812 0L9.289 4.153 7.598 7.08l8.656 15.162h3.483Z"/></svg>
|
Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 661 B |
1
icons/afterpay.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Afterpay</title><path d="M12 0C5.373 0 0 5.373 0 12c0 6.628 5.373 12 12 12 6.628 0 12-5.372 12-12 0-6.627-5.372-12-12-12Zm1.236 4.924a2.21 2.21 0 0 1 1.15.299l4.457 2.557c1.495.857 1.495 3.013 0 3.87l-4.457 2.558c-1.488.854-3.342-.22-3.342-1.935v-.34a.441.441 0 0 0-.66-.383L6.287 13.9a.441.441 0 0 0 0 .765l4.096 2.35a.44.44 0 0 0 .661-.382v-.685c0-.333.36-.542.649-.376l1.041.597a.441.441 0 0 1 .222.383v.29c0 1.715-1.854 2.789-3.342 1.935L5.157 16.22c-1.495-.857-1.495-3.013 0-3.87l4.457-2.558c1.488-.854 3.342.22 3.342 1.935v.34c0 .34.366.551.66.383l4.097-2.35a.441.441 0 0 0 0-.765l-4.096-2.351a.441.441 0 0 0-.661.382v.685c0 .333-.36.541-.649.375l-1.041-.597a.442.442 0 0 1-.222-.383v-.29c0-1.285 1.043-2.21 2.192-2.233z"/></svg>
|
After Width: | Height: | Size: 813 B |
|
@ -1 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Airbus</title><path d="M11.062 11.294c0 .74-.389 1.162-.993 1.305-.007 0 .967 1.53.967 1.53h-1.18L8.43 11.853h1.006c.435 0 .597-.24.597-.532 0-.285-.156-.532-.59-.532H8.266v3.342H7.228V9.867h2.206c1.096 0 1.628.616 1.628 1.427M5.49 14.13h1.038V9.867H5.49zM2.174 9.867L0 14.13h1.168l.352-.714h1.75l-.435-.895h-.873l.646-1.312h.013l1.453 2.92h1.194L3.095 9.868zm12.679 2.05c.409.144.688.52.688 1.02 0 .72-.577 1.194-1.46 1.194h-2.525V9.867h2.428c.863 0 1.376.461 1.376 1.148-.001.428-.176.72-.507.902m-2.258-.396h1.382a.368.368 0 00.376-.376.367.367 0 00-.37-.376h-1.388zm1.414 1.714a.435.435 0 00.448-.441c0-.247-.195-.428-.448-.428h-1.414v.869h1.414m4.808-.986c0 .647-.298 1.006-.89 1.006-.583 0-.881-.36-.881-1.006V9.867h-1.064v2.304c0 1.317.694 2.05 1.946 2.05s1.953-.733 1.953-2.05V9.867h-1.064zm3.834-.689c-.985-.24-1.2-.263-1.2-.545 0-.218.246-.324.662-.324.55 0 1.139.138 1.473.344l.331-.869c-.428-.227-1.058-.389-1.791-.389-1.097 0-1.713.545-1.713 1.278 0 .79.46 1.11 1.518 1.338.824.182.999.295.999.526 0 .25-.227.363-.675.363a3.565 3.565 0 01-1.706-.415l-.318.908c.513.273 1.278.448 2.05.448 1.077 0 1.719-.5 1.719-1.337.001-.673-.433-1.105-1.35-1.326"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Airbus</title><path d="M11.0673 11.296c0-.8153-.5311-1.4329-1.6304-1.4329h-2.211v4.2614h1.0375v-3.335H9.437c.4323 0 .5928.247.5928.5311 0 .2965-.1605.5312-.5928.5312H8.4363l1.4329 2.2727h1.1858s-.9758-1.5316-.9635-1.5316c.5929-.1359.9758-.5558.9758-1.297M5.4966 9.8631h1.0376v4.2614H5.4966Zm-3.3227 0L0 14.137h1.1734l.3459-.7164h1.754l-.4324-.9017h-.877l.6424-1.3093h.0123l1.4575 2.9274h1.1982L3.1003 9.863Zm12.6854 2.0504c.3335-.1852.5065-.4693.5065-.9017 0-.6917-.5188-1.1487-1.3711-1.1487h-2.4333v4.2614h2.5198c.877 0 1.4575-.4693 1.4575-1.1981.0123-.494-.2718-.8646-.6794-1.0129m-2.2604-1.1487h1.3835c.21 0 .3705.1606.3705.3706s-.1606.3705-.3705.3705h-1.3835zm1.4205 2.4704H12.599v-.8646h1.4205c.247 0 .4447.1852.4447.4323 0 .247-.1977.4323-.4447.4323m4.8049-.9882c0 .6423-.2964 1.0005-.8893 1.0005-.5806 0-.877-.3582-.877-1.0005V9.8631h-1.0623v2.3098c0 1.3217.6917 2.0504 1.9516 2.0504 1.26 0 1.9516-.7287 1.9516-2.0504V9.8631h-1.0623v2.384zm3.8414-.6793c-.9881-.2347-1.1981-.2594-1.1981-.5435 0-.2223.247-.3211.667-.3211.5558 0 1.1364.1358 1.4699.3458l.3335-.8646c-.4447-.247-1.0623-.4076-1.8034-.4076-1.0993 0-1.717.5434-1.717 1.2846 0 .7905.4571 1.1116 1.5194 1.334.8276.1852 1.0005.2964 1.0005.531 0 .2471-.2224.3583-.6794.3583-.6546 0-1.2352-.1606-1.7045-.42l-.3212.914c.5188.2718 1.2846.4447 2.0504.4447 1.0746 0 1.717-.494 1.717-1.334.0123-.6793-.42-1.1116-1.334-1.3216"/></svg>
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.4 KiB |
|
@ -1 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Air India</title><path d="m21.21 3.881-2.747 2.13a86.263 86.263 0 0 0 2.07-1.419c-.354.275-2.498 2.084-3.249 2.795a11.045 11.045 0 0 1-2.712 1.822l-.08-.105.047-.05-2.135 1.655.041-.02.08.104a11.033 11.033 0 0 1-2.477 2.127c-.887.534-3.203 2.119-3.562 2.385a97.276 97.276 0 0 0 2.684-2.283c-.815.536-1.545.942-2.162 1.099-1.663.421-3.824.66-7.008.595a23.53 23.53 0 0 0 2.339.383 12.534 12.534 0 0 1 6.068 2.36c1.043.76 1.683 1.415 2.424 1.854a6.09 6.09 0 0 0 2.911.806c.915.004 1.828-.107 2.715-.33a12.108 12.108 0 0 1-2.742-.196c-.8-.17-2.495-.768-2.688-1.742-.105-.535.625-.998 1.439-1.32v-.001c.07-.812.132-1.647.148-2.118.059-1.09.28-2.167.655-3.193v-.001l.132.02c.07 1.09-.022 2.185-.275 3.248a48.873 48.873 0 0 0-.433 1.957 7.901 7.901 0 0 1 1.407-.369 41.504 41.504 0 0 0-.31-1.582 10.975 10.975 0 0 1-.186-3.254l.131-.016c.348 1.036.54 2.118.568 3.21.003.37.029.97.062 1.606l-.121.017c.495-.068.992-.12 1.49-.159-.3-.642-.597-1.263-.788-1.626a10.98 10.98 0 0 1-1.015-3.1l.123-.047c.602.913 1.065 1.91 1.373 2.96.112.408.329 1.096.556 1.793a24.864 24.864 0 0 1 3.301 0c-.986-.384-1.259-.852-1.259-1.255 0-.27.128-.529.262-.76-.011.021-.023.04-.035.06a42.52 42.52 0 0 0-1.35-.926 11.028 11.028 0 0 1-2.42-2.192l.084-.103a11.04 11.04 0 0 1 2.66 1.894c.262.26.696.667 1.163 1.093.03-.048.061-.098.087-.143l1.403-2.454a50.451 50.451 0 0 0-1.91-.166 11.063 11.063 0 0 1-3.19-.713l.021-.13v-.001a11.071 11.071 0 0 1 3.253.335c.43.119 1.189.297 1.946.466l.915-1.6c-.994.149-2.235.347-2.843.473a11.067 11.067 0 0 1-3.267.124l-.013-.131a11.077 11.077 0 0 1 3.23-.506c.639.007 1.947-.04 2.964-.086L24 3.88Zm.586 2.959c-.419.16-3 1.267-3.926 1.729-.99.47-2.043.792-3.127.953l-.047-.123h.002a11.059 11.059 0 0 1 2.992-1.313c1.004-.253 3.683-1.096 4.106-1.246zm-7.074 3.566c1.071.23 2.102.619 3.059 1.152.318.185.84.464 1.398.756l-.136.238a40.823 40.823 0 0 0-1.473-.524 11.052 11.052 0 0 1-2.902-1.501Zm-2.051.529.104.08a11.004 11.004 0 0 1-1.85 2.688c-.72.743-2.552 2.865-2.831 3.215.27-.356 1.879-2.652 2.423-3.531a11.016 11.016 0 0 1 2.154-2.452zm1.667.01a11.01 11.01 0 0 1 2.086 2.508c.304.523.96 1.54 1.504 2.368h-.17a63.419 63.419 0 0 0-1.751-2.062 11.002 11.002 0 0 1-1.776-2.736Zm-1.387.17h.001l.121.052a10.981 10.981 0 0 1-1.098 3.07c-.506.902-1.732 3.42-1.913 3.83.17-.414 1.136-3.043 1.437-4.031a11.01 11.01 0 0 1 1.452-2.92zm-4.88 5.83h.001l-.005.007.004-.007z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Air India</title><path d="M8.483.001C6.247.043 4.102 1.018 2.092 2.898c.141-.065-.545.44-1.637 1.676.013.006-.009.017-.013.025 0 0 .014.037.14-.064.75-.61 3.198-2.893 9.86.101a276.52 276.52 0 0 0 6.42 2.78s1.027 3.236 2.207 6.637c2.398 6.89-.087 9.135-.76 9.82-.102.114-.064.127-.064.127a16.746 16.746 0 0 0 2.385-2.08c1.624-1.637 2.588-3.428 2.855-5.344.254-1.878-.203-3.5-.584-4.566-.266-.75-.481-1.346-.672-1.88-.862-2.423-1.028-2.867-1.625-5.29l-.203-.8c-.023-.003.009-.016.014-.025l-.787-.254c-2.386-.774-2.804-.964-5.165-2.017-.52-.229-1.103-.496-1.826-.813-.85-.368-2.146-.875-3.707-.926a8.027 8.027 0 0 0-.447-.004Z"/></svg>
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 710 B |
1
icons/airtel.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Airtel</title><path d="M7.137 23.862c.79 0 1.708-.19 2.751-.554 1.55-.538 2.784-1.281 3.986-2.009l.316-.205a29.733 29.733 0 0 0 3.764-2.72 16.574 16.574 0 0 0 5.457-7.529c.395-1.138.949-3.384.268-5.487a7.117 7.117 0 0 0-2.862-3.749c-.158-.126-1.898-1.47-5.203-1.47-3.005 0-6.31 1.107-9.806 3.32l-.11.08-.317.205a20.133 20.133 0 0 0-2.309 1.693C1.585 6.813-.091 9.106.004 11.067c.031.79.427 1.534 1.075 2.008a3.472 3.472 0 0 0 2.214.68c1.803 0 3.765-.948 5.109-1.74l.253-.157.696-.443.237-.158c1.898-1.234 3.875-2.515 6.105-3.258a5.255 5.255 0 0 1 1.55-.285 3.163 3.163 0 0 1 .664.08 2.112 2.112 0 0 1 1.47 1.106c.523 1.012.396 2.61-.316 4.08a17.871 17.871 0 0 1-4.887 5.836 19.488 19.488 0 0 1-3.194 2.215l-.095.031a9.634 9.634 0 0 1-1.471.696l-.08.032-.41.158c-2.23.57-.87-1.329-.87-1.329.474-.537.98-1.028 1.518-1.502.316-.269.633-.554.933-.854l.064-.063c.395-.38.933-.902.901-1.645-.047-.98-1.075-1.582-2.056-1.613h-.063c-.95 0-1.819.522-2.404.98a7.27 7.27 0 0 0-1.598 1.74c-.6.901-1.85 3.226-.632 5.077.49.743 1.313 1.123 2.42 1.123z"/></svg>
|
After Width: | Height: | Size: 1.1 KiB |
1
icons/airtransat.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Air Transat</title><path d="M17.611 0c-2.931.916-5.68 3.434-8.474 6.137C5.564 6.32 1.672 7.74 1.26 7.969c4.122 2.152 5.129 3.115 5.129 3.115s-1.374 3.938-1.649 6.457c.916-2.244 2.702-5.312 3.801-6.777-1.511-1.237-4.35-2.565-4.35-2.565s2.244-.962 6.733-1.191c0 0 1.878-3.619 6.687-7.008zm-2.244 3.344c-.412.87-1.146 2.793-1.283 4.213 3.16.229 5.312.963 5.312.963s-3.205 1.19-4.992 2.609c.32.779 1.055 3.07 1.467 4.855-.687-.64-2.748-2.336-4.26-3.252C9.596 13.511 4.1 18.962 1.031 24c1.328-1.374 5.267-5.817 10.58-9.023 1.1.64 6.137 3.939 6.137 3.939s-1.1-5.862-1.512-7.236c1.558-1.054 4.214-2.52 6.733-3.3-3.527-1.419-7.832-1.784-7.832-1.784s-.09-1.1.23-3.252z"/></svg>
|
After Width: | Height: | Size: 746 B |
1
icons/akaunting.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Akaunting</title><path d="M15.146 18.673a7.352 7.352 0 0 1-3.148.704 7.344 7.344 0 0 1-4.538-1.561l-3.013 3.511A11.956 11.956 0 0 0 11.998 24c1.913 0 3.721-.448 5.326-1.244l-2.178-4.083Zm4.229 2.792V24h4.623V12c0-6.627-5.372-12-12-12C5.473 0 .165 5.208.002 11.693h4.626a7.377 7.377 0 1 1 11.034 6.711l2.177 4.081a12 12 0 0 0 1.536-1.02ZM7.016 17.44a7.352 7.352 0 0 1-2.389-5.165H.002a11.97 11.97 0 0 0 4.002 8.675l3.012-3.51Z"/></svg>
|
After Width: | Height: | Size: 512 B |
1
icons/akiflow.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Akiflow</title><path d="M9.425 5.2 5.457 18h5.795l.948-2.99.947 2.99h5.795L14.974 5.2Zm.836.8h4.124l3.472 11.2h-4.124l-1.152-3.632Zm-.543.957 2.063 6.728-1.113 3.515H6.543ZM12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0Zm0 .8C18.186.8 23.2 5.813 23.2 12c0 6.186-5.014 11.2-11.2 11.2C5.814 23.2.8 18.186.8 12 .8 5.814 5.814.8 12 .8Z"/></svg>
|
After Width: | Height: | Size: 441 B |
1
icons/alamy.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Alamy</title><path d="M12 24c6.627 0 12-5.373 12-12S18.627 0 12 0 0 5.373 0 12s5.373 12 12 12Zm.058-18.533c2.515 0 3.482 1.404 3.482 3.959v7.04c0 .78 0 1.21.193 1.872H13.47c-.406-.331-.503-1.072-.503-1.423-.464 1.111-1.102 1.618-2.224 1.618-1.354 0-2.476-1.014-2.476-3.257 0-2.626 1.618-3.566 2.956-4.343.937-.545 1.736-1.009 1.744-1.917 0-.858-.29-1.15-.909-1.15-.696 0-.987.468-.987 1.56v.429H8.5v-.37c0-2.614 1.006-4.018 3.559-4.018Zm-.213 10.667c.6 0 .948-.526 1.122-.8v-3.393c-.209.345-.544.621-.887.904-.608.5-1.24 1.023-1.24 1.983 0 .838.367 1.306 1.005 1.306Z"/></svg>
|
After Width: | Height: | Size: 654 B |
1
icons/alby.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Alby</title><path d="M12.08 9.322c-3.77 0-6.96 2.33-8.05 5.57-.36 1.04.25 2.13 1.27 2.55 2.15.87 4.46 1.32 6.78 1.32s4.62-.45 6.78-1.32c1.02-.42 1.63-1.51 1.27-2.55-1.09-3.24-4.29-5.57-8.05-5.57zm-2.92 6.61c-1.09 0-1.97-.7-1.97-1.57s.89-1.57 1.97-1.57 1.97.7 1.97 1.57-.88 1.57-1.97 1.57zm5.63 0c-1.08 0-1.96-.7-1.96-1.57s.87-1.57 1.96-1.57 1.97.7 1.97 1.57-.88 1.57-1.97 1.57zm4.79-8.14.91-.91c.75.42 1.67.4 2.4-.06 1.11-.69 1.44-2.14.75-3.25a2.355 2.355 0 0 0-3.25-.75 2.358 2.358 0 0 0-.76 3.25l-.92.92c-1.87-1.53-4.15-2.44-6.63-2.44s-4.81.93-6.7 2.5l-1-1c.45-.74.46-1.66.03-2.41a2.357 2.357 0 0 0-3.22-.87 2.36 2.36 0 0 0-.88 3.22 2.37 2.37 0 0 0 3.23.88l.98.98c-1.93 1.94-3.3 4.61-3.83 7.6-.28 1.66.57 3.29 2.09 3.99 2.92 1.39 6.11 2.11 9.34 2.1 3.2 0 6.36-.7 9.25-2.06a3.695 3.695 0 0 0 2.16-3.37c0-.2-.01-.41-.05-.62-.54-3.04-1.93-5.75-3.9-7.7zm1.29 10.63a20.394 20.394 0 0 1-8.75 1.95c-3.06.01-6.08-.67-8.83-1.99a2.504 2.504 0 0 1-1.44-2.7c1.03-5.76 5.28-9.94 10.23-9.94s9.22 4.2 10.24 9.97c.19 1.12-.4 2.22-1.45 2.71z"/></svg>
|
After Width: | Height: | Size: 1.1 KiB |
1
icons/alienware.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Alienware</title><path d="M20.382 9.4054c-.0649-.6486-.1297-1.3622-.2595-2.0108-.1297-.6487-.2594-1.2973-.5189-1.946-.1297-.3243-.2595-.6486-.3892-.908-.1297-.3244-.3243-.5838-.454-.9082-.1946-.2594-.3892-.5838-.5838-.8432-.1946-.2595-.454-.519-.7135-.7135-.454-.3892-.973-.7784-1.5568-1.1027-.5838-.3244-1.2324-.5838-1.881-.7135C13.3765.0649 12.7278 0 12.0143 0c-.7135 0-1.3621.0649-2.0108.2595C9.355.3892 8.7712.6486 8.1874.973c-.6487.3243-1.1676.7135-1.6865 1.1675-.2595.1946-.454.454-.7135.7136l-.5838.7783c-.1297.3244-.3243.5838-.454.9081l-.3892.973c-.1946.6487-.3892 1.2973-.519 1.946-.1297.6486-.1946 1.2973-.2594 2.0108-.0649.7135 0 1.2973 0 1.946 0 .6486.0648 1.2972.1946 2.0107l.1946.973c.0648.3243.1946.6486.3243.973.454 1.2324 1.1676 2.4 1.881 3.5027.3893.5838.7785 1.1027 1.1676 1.6216.3892.519.7784 1.1027 1.2325 1.5568.1946.2594.454.454.7135.7135.2594.1946.519.3892.8432.5837.2595.1946.5838.3244.9081.4541.1298.0649.3244.1297.4541.1297.1946 0 .3243.0649.519.0649.1945 0 .3242 0 .5188-.0649.1946 0 .3244-.0648.454-.1297.3244-.1297.6487-.2595.9082-.454.2595-.1946.5838-.3892.8432-.5838.2595-.1946.519-.454.7136-.7135.454-.519.8432-1.0379 1.2324-1.5568.3892-.519.7784-1.1027 1.1676-1.6216.7135-1.1027 1.427-2.2703 1.881-3.5027.1298-.3244.2595-.6487.3244-.973.0648-.3243.1946-.6486.1946-.973.1297-.6486.1945-1.2973.1945-2.0108 0-.6486 0-1.3621-.0648-2.0108zM4.8144 12.0649s3.6973.8432 6.0973 5.8378c-.0649 0-6.4216-.1297-6.0973-5.8378zm8.3676 5.8378c2.3351-4.9946 6.0973-5.8378 6.0973-5.8378.3243 5.708-6.0973 5.8378-6.0973 5.8378z"/></svg>
|
After Width: | Height: | Size: 1.6 KiB |
|
@ -1 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Alipay</title><path d="M16.076,13.732c0.862-1.494,1.55-3.196,2.003-5.045h-4.731V6.988h5.795V6.04h-5.795V3.207h-2.365 c-0.415,0-0.415,0.408-0.415,0.408V6.04H4.707v0.948h5.861v1.699H5.729v0.948h9.386c-0.343,1.18-0.805,2.288-1.352,3.294 c-3.045-1.002-6.295-1.814-8.337-1.314c-1.305,0.321-2.146,0.893-2.641,1.493c-2.267,2.751-0.641,6.929,4.147,6.929 c2.831,0,5.559-1.574,7.673-4.168C17.758,17.381,24,19.976,24,19.976v0.157c0,2.117-1.719,3.833-3.843,3.833H3.845 C1.72,23.966,0,22.249,0,20.132V3.868C0,1.75,1.72,0.034,3.845,0.034h16.312C22.281,0.034,24,1.75,24,3.868v12.409 c0,0-0.784-0.062-4.24-1.216C18.8,14.74,17.511,14.25,16.076,13.732z M5.834,13.034c-0.6,0.059-1.725,0.324-2.341,0.866 c-1.845,1.604-0.741,4.537,2.993,4.537c2.17,0,4.339-1.384,6.042-3.599C10.104,13.659,8.052,12.816,5.834,13.034z"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Alipay</title><path d="M19.695 15.07c3.426 1.158 4.203 1.22 4.203 1.22V3.846c0-2.124-1.705-3.845-3.81-3.845H3.914C1.808.001.102 1.722.102 3.846v16.31c0 2.123 1.706 3.845 3.813 3.845h16.173c2.105 0 3.81-1.722 3.81-3.845v-.157s-6.19-2.602-9.315-4.119c-2.096 2.602-4.8 4.181-7.607 4.181-4.75 0-6.361-4.19-4.112-6.949.49-.602 1.324-1.175 2.617-1.497 2.025-.502 5.247.313 8.266 1.317a16.796 16.796 0 0 0 1.341-3.302H5.781v-.952h4.799V6.975H4.77v-.953h5.81V3.591s0-.409.411-.409h2.347v2.84h5.744v.951h-5.744v1.704h4.69a19.453 19.453 0 0 1-1.986 5.06c1.424.52 2.702 1.011 3.654 1.333m-13.81-2.032c-.596.06-1.71.325-2.321.869-1.83 1.608-.735 4.55 2.968 4.55 2.151 0 4.301-1.388 5.99-3.61-2.403-1.182-4.438-2.028-6.637-1.809"/></svg>
|
Before Width: | Height: | Size: 880 B After Width: | Height: | Size: 802 B |
|
@ -1 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AllTrails</title><path d="M23.694 18.72c-3.845-4.058-12.083-5.754-17.345-3.216l5.504-7.623 2.63 4.163c.148.246.47.32.71.164l1.993-1.333c1.684 1.806 3.358 3.618 4.796 5.158a.19.19 0 00.322-.139.185.185 0 00-.023-.088h.001c-1.41-2.458-2.826-4.913-4.25-7.364-.254-.434-.552-.503-.986-.219l-1.34.921-3.382-5.226a.587.587 0 00-.494-.275.574.574 0 00-.487.265A5684.859 5684.859 0 01.08 18.973v.002c-.2.28-.001.67.343.671.175-.002.331-.124.488-.2 3.142-1.626 10.197-3.996 15.073-.26 2.141 1.817 9.61 1.408 7.71-.465"/></svg>
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AllTrails</title><path d="M19.441 8.451c-.653-1.247-1.158-1.841-1.813-1.841-.731 0-1.053.387-1.494 1.079-.357.464-.7 1.1-1.273 1.036-.604-.063-.954-1.491-1.41-2.686-.625-1.63-.985-3.322-2.024-3.322-.593 0-1.111.54-1.915 1.747l-8.301 12.73c-.954 1.593-1.753 2.704-.742 3.748 1.187 1.142 3.975-.857 5.883-2.063 1.908-1.205 3.859-2.38 6.615-2.316 3.71.085 5.512 3.808 7.76 4.516 1.526.487 2.926-.074 3.223-1.65.174-.866-.129-1.707-.547-2.604zm-.254 7.467c-.753.56-1.803-.339-2.481-.72-.72-.401-1.94-1.364-4.124-1.332-1.78.021-2.745.687-3.805 1.407-2.3 1.565-4.379 3.384-4.972 2.443-.382-.603.646-1.809 3.063-5.574 1.718-2.676 2.927-4.813 3.785-4.813.948 0 1 .93 1.145 1.883.272 1.518 1.014 2.308 1.978 2.433 1.08.146 2.014-.76 2.756-.751.693.014 1.15 1.018 1.722 2.065.725 1.301 1.482 2.546.933 2.959z"/></svg>
|
Before Width: | Height: | Size: 595 B After Width: | Height: | Size: 885 B |
1
icons/almalinux.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AlmaLinux</title><path d="M23.994 15.133c.079 1.061-.668 1.927-1.69 2.005a1.8 1.8 0 0 1-1.928-1.651c-.078-1.062.63-1.849 1.691-1.967 1.023-.078 1.849.59 1.927 1.613zm-12.623 4.955c-.944 0-1.73.786-1.73 1.809 0 1.14.747 1.848 1.887 1.848.904-.04 1.691-.865 1.691-1.809 0-.983-.904-1.848-1.848-1.848zm1.061-9.675c-.039-.865-.078-1.73.08-2.556.156-.944.314-1.887.904-2.674.707-.983 1.809-.944 2.399.118.314.511.432 1.062.471 1.652 0 .354.158.432.472.393.944-.157 1.888-.157 2.792.197.118.039.236.118.394 0 .314-.276.393-1.652.196-2.006-.354-.63-.904-.55-1.455-.55-.629.039-1.18-.158-1.612-.67-.393-.471-.511-1.06-.59-1.65-.04-.276-.079-.512-.315-.709-.55-.55-1.809-.432-2.477.118-2.556 2.045-2.989 5.467-1.534 8.18.04.118.118.236.275.157zm7.984 3.658c.354-.511.865-.747 1.415-.983a.973.973 0 0 0 .59-.472c.354-.669-.078-1.81-.747-2.36-2.595-2.006-5.938-1.612-8.18.433-.118.078-.157.196-.078.314.786-.236 1.612-.472 2.477-.51.905-.08 1.848-.158 2.753.235 1.14.472 1.337 1.534.472 2.36-.393.393-.905.668-1.455.825-.315.08-.354.236-.236.551.354.865.59 1.77.472 2.753-.04.157-.079.275.078.393.354.236 1.691 0 1.967-.275.511-.472.314-1.023.196-1.534-.157-.63-.078-1.219.276-1.73zm-7.197-2.045c-.118-.079-.197-.118-.315 0 .472.708.905 1.455 1.259 2.241.314.866.668 1.73.55 2.714-.118 1.18-1.1 1.69-2.123 1.101-.511-.275-.905-.669-1.22-1.14-.196-.276-.393-.276-.629-.08-.747.63-1.533 1.102-2.516 1.26-.158 0-.315 0-.394.157-.118.393.472 1.612.826 1.809.59.354 1.062 0 1.534-.276.55-.314 1.101-.432 1.73-.236.59.197.983.63 1.337 1.102.158.196.315.353.63.432.747.197 1.77-.59 2.084-1.376 1.18-3.028-.157-6.135-2.753-7.708zm-2.556 2.438c.472-.669.826-1.416.983-2.202-.157-.04-.197.04-.315.078-.904.944-1.848 1.849-3.067 2.478-.472.236-.983.433-1.534.433-.865 0-1.376-.551-1.298-1.416a2.92 2.92 0 0 1 .787-1.849c.236-.275.236-.432-.04-.668-.786-.55-1.494-1.22-1.848-2.124-.078-.275-.275-.275-.51-.157a4.293 4.293 0 0 0-.434.236c-1.022.63-1.14 1.416-.275 2.28.63.63.944 1.338.708 2.203-.118.433-.354.747-.63 1.101a.95.95 0 0 0-.235.787c.079.747.826 1.494 1.73 1.573 2.517.236 4.562-.63 5.978-2.753zm-4.68-5.152c1.376 1.18 3.067 1.455 4.837 1.377.157 0 .315 0 .354-.118.04-.197-.157-.197-.275-.236-.826-.354-1.691-.63-2.438-1.14S6.848 8.25 6.534 7.266c-.236-.747.078-1.415.825-1.651.669-.236 1.337-.236 1.967 0 .393.157.55.078.629-.354.118-.747.354-1.455.826-2.085.55-.786.55-.865-.354-1.376-.04 0-.04-.04-.079-.04-.865-.471-1.534-.196-1.848.709-.472 1.376-1.377 1.887-2.832 1.612-.196-.04-.393-.079-.472-.079-.747.118-1.18.55-1.297 1.14-.158 1.81.786 3.107 2.084 4.17zm-2.32 3.658c-.079-.944-1.023-1.652-2.045-1.534-.905.079-1.691 1.022-1.613 1.966.08.983 1.023 1.77 1.967 1.652 1.14-.079 1.73-1.18 1.69-2.084zm15.18-8.298c.943-.079 1.73-.983 1.651-1.927-.078-.983-1.022-1.77-2.005-1.691-1.023.079-1.73.983-1.652 1.966s.983 1.73 2.006 1.652zm-12.27-.826c1.062-.157 1.77-1.023 1.652-2.045C8.107.897 7.163.149 6.18.267c-1.062.118-1.691.944-1.573 2.085.118.865 1.061 1.612 1.966 1.494z"/></svg>
|
After Width: | Height: | Size: 3 KiB |
1
icons/alx.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ALX</title><path d="m13.732 5.879-2.903 1.299V18.12h2.903V5.879Zm3.219 1.436c-.361.36-1.59 1.587-1.977 1.978.839.851 1.684 1.696 2.527 2.543l-2.529 2.529 1.978 1.978c.844-.842 1.686-1.686 2.529-2.529l2.543 2.529c.66-.659 1.319-1.319 1.978-1.98-.848-.841-1.695-1.684-2.543-2.527L24 9.293l-1.978-1.978-2.543 2.543-2.528-2.543ZM6.157 9.271v.382C3.256 8.379.002 10.503 0 13.671c.001 3.169 3.256 5.293 6.157 4.018v.431H9.06V9.271H6.157ZM4.39 11.902c.978 0 1.718.741 1.767 1.674v.19a1.77 1.77 0 0 1-1.767 1.675c-.946 0-1.77-.792-1.77-1.77s.792-1.77 1.77-1.77v.001Z"/></svg>
|
After Width: | Height: | Size: 645 B |
1
icons/amazoncognito.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Amazon Cognito</title><path d="M2.127 10.203h5.531v-.85h-5.53zm19.034 6.181.602.601-3.16 3.155a.426.426 0 0 1-.601 0l-1.59-1.587.602-.6 1.289 1.286zm1.958 2.341a4.05 4.05 0 0 1-2.288 3.181c-.688.326-1.45.45-2.211.357a4 4 0 0 1-2.017-.842 4.04 4.04 0 0 1-1.507-3.675 4.06 4.06 0 0 1 2.167-3.12 4 4 0 0 1 2.332-.417 4.04 4.04 0 0 1 3.111 2.18c.369.722.511 1.53.413 2.336m.346-2.721a4.888 4.888 0 0 0-9.214 1.64 4.89 4.89 0 0 0 1.823 4.442 4.88 4.88 0 0 0 5.122.587 4.95 4.95 0 0 0 1.629-1.247 4.9 4.9 0 0 0 1.139-2.599 4.9 4.9 0 0 0-.5-2.823M6.382 12.752h1.701v-.85H6.382zm-4.255 0h3.404v-.85H2.127zM1.76 1.706h19.03c.5 0 .908.496.908 1.105v3.143h-1.276V3.83a.425.425 0 0 0-.426-.425H10.21a.425.425 0 0 0-.425.425v2.124H.85V2.811c0-.6.417-1.105.91-1.105zM15.11 5.83c.988 0 1.792.794 1.792 1.77a1.76 1.76 0 0 1-.927 1.547 1.82 1.82 0 0 1-1.733 0 1.76 1.76 0 0 1-.923-1.546c0-.977.803-1.771 1.792-1.771zM.85 15.046V6.804h8.935v7.222c0 .235.19.425.425.425h4.448v-.85h-3.553A3.865 3.865 0 0 1 13.9 9.963c.752.352 1.65.355 2.414 0a3.9 3.9 0 0 1 2.24 1.716l.728-.44a4.76 4.76 0 0 0-2.206-1.9 2.6 2.6 0 0 0 .676-1.737c0-1.445-1.186-2.62-2.643-2.62s-2.642 1.175-2.642 2.62c0 .65.247 1.261.67 1.733a4.7 4.7 0 0 0-2.501 2.481V4.255h8.934v6.797h.851V6.804h1.276v6.372h.852V2.811c0-1.077-.79-1.954-1.76-1.954H1.759C.79.857 0 1.734 0 2.81v12.235c0 1.078.79 1.955 1.76 1.955h11.43v-.85H1.759c-.492 0-.908-.506-.908-1.105z"/></svg>
|
After Width: | Height: | Size: 1.5 KiB |