Compare commits
20 Commits
Author | SHA1 | Date | |
---|---|---|---|
f642639f0c | |||
5d6740d0d3 | |||
f934d04fe7 | |||
1a1dca5c1c | |||
a3bde2c786 | |||
16aa8b69cb | |||
9821a5a9d8 | |||
76d31ecb03 | |||
2191ca23e5 | |||
4ee503f2ab | |||
5b4c707a68 | |||
6fbc040760 | |||
88020fbef2 | |||
031dcbeeb0 | |||
fe119d4f41 | |||
8d48d1a7ad | |||
5cb0fb44ec | |||
2b56201ed7 | |||
c8534ffb93 | |||
789790863e |
13
.babelrc
@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"presets": [
|
|
||||||
[
|
|
||||||
"env",
|
|
||||||
{
|
|
||||||
"targets": {
|
|
||||||
"browsers": ["last 2 versions"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"stage-2"
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
dist
|
|
||||||
coverage
|
|
@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": ["airbnb-base", "prettier"],
|
|
||||||
"plugins": ["import", "prettier"],
|
|
||||||
"rules": {
|
|
||||||
"no-console": ["error", { "allow": ["warn", "error"] }],
|
|
||||||
"no-param-reassign": "off",
|
|
||||||
"no-shadow": "off",
|
|
||||||
"no-use-before-define": "off",
|
|
||||||
"prettier/prettier": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
"singleQuote": true,
|
|
||||||
"trailingComma": "all"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
67
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -1,67 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug report
|
|
||||||
about: Create a report to help us improve
|
|
||||||
---
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Before reporting an issue, please search to see if someone has filed a similar issue before. If there is already an open issue, please add a 👍 and/or leave a comment with additional information.
|
|
||||||
-->
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
* Version:
|
|
||||||
* Are you running from source/master:
|
|
||||||
* Are you using a released build:
|
|
||||||
* Operating system:
|
|
||||||
* Bits:
|
|
||||||
|
|
||||||
## Step to reproduce
|
|
||||||
|
|
||||||
*(Type here)*
|
|
||||||
|
|
||||||
### Actual behavior
|
|
||||||
|
|
||||||
## Any message or error
|
|
||||||
|
|
||||||
*(Type here)*
|
|
||||||
|
|
||||||
## Resources
|
|
||||||
|
|
||||||
* Links
|
|
||||||
* Screenshots
|
|
||||||
|
|
||||||
|
|
||||||
Here is what a great bug report would look like:
|
|
||||||
|
|
||||||
```
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
Version: Release v3.1.0
|
|
||||||
Running from: Import using webpack
|
|
||||||
Operating system: Mac OSX
|
|
||||||
Bits: 64 bits
|
|
||||||
|
|
||||||
## Step to reproduce
|
|
||||||
|
|
||||||
- Import `check` icon
|
|
||||||
- Add to a React component/view
|
|
||||||
- Run the react app
|
|
||||||
- Notice that the `check` isn't rendering correctly which seems a encoding problem
|
|
||||||
|
|
||||||
### Actual behavior:
|
|
||||||
|
|
||||||
- Import `check` icon
|
|
||||||
- Add to a React component/view
|
|
||||||
- Run the react app
|
|
||||||
- Check is displayed with correct encoding (e.g UTF-8)
|
|
||||||
|
|
||||||
## Any message or error
|
|
||||||
|
|
||||||
No console output
|
|
||||||
...
|
|
||||||
|
|
||||||
## Resources
|
|
||||||
|
|
||||||
No resources
|
|
||||||
...
|
|
||||||
```
|
|
14
.github/ISSUE_TEMPLATE/icon_request.md
vendored
@ -1,14 +0,0 @@
|
|||||||
---
|
|
||||||
name: Icon request
|
|
||||||
about: Suggest an new icon for this project
|
|
||||||
---
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Before creating an icon request, please search to see if someone has requested the icon already. If there is an open request, please add a 👍.
|
|
||||||
-->
|
|
||||||
|
|
||||||
## Icon Request
|
|
||||||
|
|
||||||
* Icon name:
|
|
||||||
* Use case:
|
|
||||||
* Screenshots of similar icons:
|
|
22
.github/workflows/ci.yml
vendored
@ -1,22 +0,0 @@
|
|||||||
name: CI
|
|
||||||
|
|
||||||
on: push
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Use Node.js 16.x
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: 16.x
|
|
||||||
cache: 'npm'
|
|
||||||
- run: npm ci
|
|
||||||
- run: npm run all
|
|
||||||
- name: Release
|
|
||||||
if: github.ref_name == 'master'
|
|
||||||
run: npx semantic-release
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
|
|
||||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
5
.gitignore
vendored
@ -1,6 +1,7 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
node_modules
|
node_modules
|
||||||
dist
|
_site
|
||||||
|
*.zip
|
||||||
|
manifest.json
|
||||||
sandbox
|
sandbox
|
||||||
stash
|
stash
|
||||||
coverage
|
|
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"*.js": "eslint"
|
|
||||||
}
|
|
19
.travis.yml
@ -1,19 +0,0 @@
|
|||||||
language: node_js
|
|
||||||
cache:
|
|
||||||
directories:
|
|
||||||
- node_modules
|
|
||||||
notifications:
|
|
||||||
email: false
|
|
||||||
node_js: 8
|
|
||||||
before_script:
|
|
||||||
- npm prune
|
|
||||||
script:
|
|
||||||
- npm run all
|
|
||||||
after_success:
|
|
||||||
- npx codecov
|
|
||||||
- npx babel-node ./bin/sync-algolia.js
|
|
||||||
deploy:
|
|
||||||
provider: script
|
|
||||||
skip_cleanup: true
|
|
||||||
script:
|
|
||||||
- npx semantic-release
|
|
@ -1,74 +0,0 @@
|
|||||||
# Contributor Covenant Code of Conduct
|
|
||||||
|
|
||||||
## Our Pledge
|
|
||||||
|
|
||||||
In the interest of fostering an open and welcoming environment, we as
|
|
||||||
contributors and maintainers pledge to making participation in our project and
|
|
||||||
our community a harassment-free experience for everyone, regardless of age, body
|
|
||||||
size, disability, ethnicity, gender identity and expression, level of experience,
|
|
||||||
nationality, personal appearance, race, religion, or sexual identity and
|
|
||||||
orientation.
|
|
||||||
|
|
||||||
## Our Standards
|
|
||||||
|
|
||||||
Examples of behavior that contributes to creating a positive environment
|
|
||||||
include:
|
|
||||||
|
|
||||||
* Using welcoming and inclusive language
|
|
||||||
* Being respectful of differing viewpoints and experiences
|
|
||||||
* Gracefully accepting constructive criticism
|
|
||||||
* Focusing on what is best for the community
|
|
||||||
* Showing empathy towards other community members
|
|
||||||
|
|
||||||
Examples of unacceptable behavior by participants include:
|
|
||||||
|
|
||||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
|
||||||
advances
|
|
||||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
|
||||||
* Public or private harassment
|
|
||||||
* Publishing others' private information, such as a physical or electronic
|
|
||||||
address, without explicit permission
|
|
||||||
* Other conduct which could reasonably be considered inappropriate in a
|
|
||||||
professional setting
|
|
||||||
|
|
||||||
## Our Responsibilities
|
|
||||||
|
|
||||||
Project maintainers are responsible for clarifying the standards of acceptable
|
|
||||||
behavior and are expected to take appropriate and fair corrective action in
|
|
||||||
response to any instances of unacceptable behavior.
|
|
||||||
|
|
||||||
Project maintainers 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, or to ban temporarily or
|
|
||||||
permanently any contributor for other behaviors that they deem inappropriate,
|
|
||||||
threatening, offensive, or harmful.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
This Code of Conduct applies both within project spaces and in public spaces
|
|
||||||
when an individual is representing the project or its community. Examples of
|
|
||||||
representing a project or community include using an official project e-mail
|
|
||||||
address, posting via an official social media account, or acting as an appointed
|
|
||||||
representative at an online or offline event. Representation of a project may be
|
|
||||||
further defined and clarified by project maintainers.
|
|
||||||
|
|
||||||
## Enforcement
|
|
||||||
|
|
||||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
||||||
reported by contacting the project team at cole@colebemis.com. All
|
|
||||||
complaints will be reviewed and investigated and will result in a response that
|
|
||||||
is deemed necessary and appropriate to the circumstances. The project team is
|
|
||||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
|
||||||
Further details of specific enforcement policies may be posted separately.
|
|
||||||
|
|
||||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
|
||||||
faith may face temporary or permanent repercussions as determined by other
|
|
||||||
members of the project's leadership.
|
|
||||||
|
|
||||||
## Attribution
|
|
||||||
|
|
||||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
|
||||||
available at [http://contributor-covenant.org/version/1/4][version]
|
|
||||||
|
|
||||||
[homepage]: http://contributor-covenant.org
|
|
||||||
[version]: http://contributor-covenant.org/version/1/4/
|
|
@ -1,72 +0,0 @@
|
|||||||
# Contribution Guidelines
|
|
||||||
|
|
||||||
:+1::tada: First off, thanks for taking the time to contribute! :tada::+1:
|
|
||||||
|
|
||||||
The following is a set of guidelines for contributing to Feather. Feel free to propose changes to this document in a pull request.
|
|
||||||
|
|
||||||
## Pull Requests
|
|
||||||
|
|
||||||
> **Note:** At the moment we are not accepting pull requests containing _**icons**_. The best way to contribute an icon is to create an issue with a screenshot and link to an SVG of your icon.
|
|
||||||
|
|
||||||
Pull requests for new features, bug fixes, etc. are often appreciated.
|
|
||||||
|
|
||||||
**Working on your first Pull Request?** You can learn how from this *free* series
|
|
||||||
[How to Contribute to an Open Source Project on GitHub](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github)
|
|
||||||
|
|
||||||
Guidelines for pull requests:
|
|
||||||
- __Make your commit messages as descriptive as possible.__ Include as much information as you can. Explain anything that the file diffs themselves won’t make apparent.
|
|
||||||
- __Document your pull request__. Explain your fix, link to the relevant issue, add screenshots when adding new icons.
|
|
||||||
- __Make sure the target of your pull request is the relevant branch__. Most of bugfix or new feature should go to the `master` branch.
|
|
||||||
- __Include only related work__. If your pull request has unrelated commit, it won't be accepted.
|
|
||||||
|
|
||||||
## Icon Requests
|
|
||||||
|
|
||||||
Before creating an icon request, please search to see if someone has requested the icon already. If there is an open request, please add a :+1:.
|
|
||||||
|
|
||||||
If the icon has not already been requested, [create an issue](https://github.com/colebemis/feather/issues/new?title=Icon%20Request:) with a title of `Icon request: <icon name>` and add as much information as possible.
|
|
||||||
|
|
||||||
## Bug Reports
|
|
||||||
|
|
||||||
Before reporting an issue, please search to see if someone has filed a similar issue before. If there is already an open issue, please add a :+1: and/or leave a comment with additional information.
|
|
||||||
|
|
||||||
When creating a new issue make sure to include the following:
|
|
||||||
- Version of `Feather` in use. Are you running from source/master? Are you using a released build? Which release?
|
|
||||||
- Your environment. What is your operating system? 32 or 64 bits?
|
|
||||||
- Step to reproduce. Even if the step is only one line change, __include it!__ Include the actual result and what you expected.
|
|
||||||
- Any message or error you get in the console, if you do.
|
|
||||||
- A screenshot of any visual bug.
|
|
||||||
|
|
||||||
Here is what a great bug report would look like:
|
|
||||||
|
|
||||||
```
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
Version: Release v3.1.0
|
|
||||||
Running from: Import using webpack
|
|
||||||
Operating system: Mac OSX
|
|
||||||
Bits: 64 bits
|
|
||||||
|
|
||||||
## Step to reproduce
|
|
||||||
|
|
||||||
- Import `check` icon
|
|
||||||
- Add to a React component/view
|
|
||||||
- Run the react app
|
|
||||||
- Notice that the `check` isn't rendering correctly which seems a encoding problem
|
|
||||||
|
|
||||||
### Actual behavior:
|
|
||||||
|
|
||||||
- Import `check` icon
|
|
||||||
- Add to a React component/view
|
|
||||||
- Run the react app
|
|
||||||
- Check is displayed with correct encoding (e.g UTF-8)
|
|
||||||
|
|
||||||
## Any message or error
|
|
||||||
|
|
||||||
No console output
|
|
||||||
...
|
|
||||||
|
|
||||||
## Resources
|
|
||||||
|
|
||||||
No resources
|
|
||||||
...
|
|
||||||
```
|
|
4
Gemfile
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
source "https://rubygems.org"
|
||||||
|
|
||||||
|
gem "jekyll"
|
47
Gemfile.lock
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
addressable (2.5.1)
|
||||||
|
public_suffix (~> 2.0, >= 2.0.2)
|
||||||
|
colorator (1.1.0)
|
||||||
|
ffi (1.9.18)
|
||||||
|
forwardable-extended (2.6.0)
|
||||||
|
jekyll (3.4.3)
|
||||||
|
addressable (~> 2.4)
|
||||||
|
colorator (~> 1.0)
|
||||||
|
jekyll-sass-converter (~> 1.0)
|
||||||
|
jekyll-watch (~> 1.1)
|
||||||
|
kramdown (~> 1.3)
|
||||||
|
liquid (~> 3.0)
|
||||||
|
mercenary (~> 0.3.3)
|
||||||
|
pathutil (~> 0.9)
|
||||||
|
rouge (~> 1.7)
|
||||||
|
safe_yaml (~> 1.0)
|
||||||
|
jekyll-sass-converter (1.5.0)
|
||||||
|
sass (~> 3.4)
|
||||||
|
jekyll-watch (1.5.0)
|
||||||
|
listen (~> 3.0, < 3.1)
|
||||||
|
kramdown (1.13.2)
|
||||||
|
liquid (3.0.6)
|
||||||
|
listen (3.0.8)
|
||||||
|
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||||
|
rb-inotify (~> 0.9, >= 0.9.7)
|
||||||
|
mercenary (0.3.6)
|
||||||
|
pathutil (0.14.0)
|
||||||
|
forwardable-extended (~> 2.6)
|
||||||
|
public_suffix (2.0.5)
|
||||||
|
rb-fsevent (0.9.8)
|
||||||
|
rb-inotify (0.9.8)
|
||||||
|
ffi (>= 0.5.0)
|
||||||
|
rouge (1.11.1)
|
||||||
|
safe_yaml (1.0.4)
|
||||||
|
sass (3.4.23)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
ruby
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
jekyll
|
||||||
|
|
||||||
|
BUNDLED WITH
|
||||||
|
1.14.5
|
406
README.md
@ -1,410 +1,14 @@
|
|||||||
# Feather
|
# Feather
|
||||||
|
|
||||||
[](https://travis-ci.org/feathericons/feather)
|
> **Note:** You are currently viewing the `site` branch. This is where all the code for [feathericons.com](https://feathericons.com) lives.
|
||||||
[](https://codecov.io/gh/feathericons/feather)
|
|
||||||
[](https://www.npmjs.com/package/feather-icons)
|
|
||||||
[](https://www.npmjs.com/package/feather-icons)
|
|
||||||
[](https://cdnjs.com/libraries/feather-icons)
|
|
||||||
[](https://www.paypal.me/colebemis/5)
|
|
||||||
|
|
||||||
## What is Feather?
|
## What is Feather?
|
||||||
|
|
||||||
Feather is a collection of simply beautiful open source icons. Each icon is designed on a 24x24 grid with an emphasis on simplicity, consistency, and flexibility.
|
Feather is collection of **simply beautiful open source icons**. Each icon is designed on a 24x24 grid with an emphasis on simplicity, consistency and legibility.
|
||||||
|
|
||||||
https://feathericons.com
|
[feathericons.com](https://feathericons.com)
|
||||||
|
|
||||||
```shell
|
|
||||||
npm install feather-icons
|
|
||||||
```
|
|
||||||
|
|
||||||
## Table of Contents
|
See the [`master` branch](https://github.com/colebemis/feather) for more information.
|
||||||
|
|
||||||
* [Quick Start](#quick-start)
|
[👋](mailto:cole@colebemis.com)
|
||||||
* [Usage](#usage)
|
|
||||||
* [Client-side JavaScript](#client-side-javascript)
|
|
||||||
* [Node](#node)
|
|
||||||
* [SVG Sprite](#svg-sprite)
|
|
||||||
* [Figma](#figma)
|
|
||||||
* [API Reference](#api-reference)
|
|
||||||
* [`feather.icons`](#feathericons)
|
|
||||||
* [`feather.icons[name].toSvg()`](#feathericonsnametosvgattrs)
|
|
||||||
* [`feather.replace()`](#featherreplaceattrs)
|
|
||||||
* [(DEPRECATED) `feather.toSvg()`](#deprecated-feathertosvgname-attrs)
|
|
||||||
* [Contributing](#contributing)
|
|
||||||
* [Related Projects](#related-projects)
|
|
||||||
* [License](#license)
|
|
||||||
|
|
||||||
## Quick Start
|
|
||||||
|
|
||||||
Start with this [CodePen Template](https://codepen.io/pen?template=WOJZdM) to begin prototyping with Feather in the browser.
|
|
||||||
|
|
||||||
Or copy and paste the following code snippet into a blank `html` file.
|
|
||||||
|
|
||||||
```html
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<title></title>
|
|
||||||
<script src="https://unpkg.com/feather-icons"></script>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<!-- example icon -->
|
|
||||||
<i data-feather="circle"></i>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
feather.replace()
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
At its core, Feather is a collection of [SVG](https://svgontheweb.com/#svg) files. This means that you can use Feather icons in all the same ways you can use SVGs (e.g. `img`, `background-image`, `inline`, `object`, `embed`, `iframe`). Here's a helpful article detailing the many ways SVGs can be used on the web: [SVG on the Web – Implementation Options](https://svgontheweb.com/#implementation)
|
|
||||||
|
|
||||||
The following are additional ways you can use Feather.
|
|
||||||
|
|
||||||
### Client-side JavaScript
|
|
||||||
|
|
||||||
#### 1. Install
|
|
||||||
|
|
||||||
> **Note:** If you intend to use Feather with a CDN, you can skip this installation step.
|
|
||||||
|
|
||||||
Install with [npm](https://docs.npmjs.com/getting-started/what-is-npm).
|
|
||||||
|
|
||||||
```shell
|
|
||||||
npm install feather-icons --save
|
|
||||||
```
|
|
||||||
|
|
||||||
Or just copy [`feather.js`](https://unpkg.com/feather-icons/dist/feather.js) or [`feather.min.js`](https://unpkg.com/feather-icons/dist/feather.min.js) into your project directory. You don't need both `feather.js` and `feather.min.js`.
|
|
||||||
|
|
||||||
#### 2. Include
|
|
||||||
|
|
||||||
Include `feather.js` or `feather.min.js` with a `<script>` tag:
|
|
||||||
|
|
||||||
```html
|
|
||||||
<script src="path/to/dist/feather.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
> **Note:** `feather.js` and `feather.min.js` are located in the `dist` directory of the npm package.
|
|
||||||
|
|
||||||
Or load the script from a CDN provider:
|
|
||||||
|
|
||||||
```html
|
|
||||||
<!-- choose one -->
|
|
||||||
<script src="https://unpkg.com/feather-icons"></script>
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
After including the script, `feather` will be available as a global variable.
|
|
||||||
|
|
||||||
#### 3. Use
|
|
||||||
|
|
||||||
To use an icon on your page, add a `data-feather` attribute with the icon name to an element:
|
|
||||||
|
|
||||||
```html
|
|
||||||
<i data-feather="circle"></i>
|
|
||||||
```
|
|
||||||
|
|
||||||
See the complete list of icons at [feathericons.com](https://feathericons.com).
|
|
||||||
|
|
||||||
#### 4. Replace
|
|
||||||
|
|
||||||
Call the `feather.replace()` method:
|
|
||||||
|
|
||||||
```html
|
|
||||||
<script>
|
|
||||||
feather.replace()
|
|
||||||
</script>
|
|
||||||
```
|
|
||||||
|
|
||||||
All elements that have a `data-feather` attribute will be replaced with SVG markup corresponding to their `data-feather` attribute value. See the [API Reference](#api-reference) for more information about `feather.replace()`.
|
|
||||||
|
|
||||||
### Node
|
|
||||||
#### 1. Install
|
|
||||||
|
|
||||||
Install with [npm](https://docs.npmjs.com/getting-started/what-is-npm):
|
|
||||||
|
|
||||||
```shell
|
|
||||||
npm install feather-icons --save
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 2. Require
|
|
||||||
|
|
||||||
```js
|
|
||||||
const feather = require('feather-icons')
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3. Use
|
|
||||||
|
|
||||||
```js
|
|
||||||
feather.icons.x
|
|
||||||
// {
|
|
||||||
// name: 'x',
|
|
||||||
// contents: '<line ... /><line ... />`,
|
|
||||||
// tags: ['cancel', 'close', 'delete', 'remove'],
|
|
||||||
// attrs: {
|
|
||||||
// class: 'feather feather-x',
|
|
||||||
// xmlns: 'http://www.w3.org/2000/svg',
|
|
||||||
// width: 24,
|
|
||||||
// height: 24,
|
|
||||||
// viewBox: '0 0 24 24',
|
|
||||||
// fill: 'none',
|
|
||||||
// stroke: 'currentColor',
|
|
||||||
// 'stroke-width': 2,
|
|
||||||
// 'stroke-linecap': 'round',
|
|
||||||
// 'stroke-linejoin': 'round',
|
|
||||||
// },
|
|
||||||
// toSvg: [Function],
|
|
||||||
// }
|
|
||||||
|
|
||||||
feather.icons.x.toSvg()
|
|
||||||
// <svg class="feather feather-x" ...><line ... /><line ... /></svg>
|
|
||||||
|
|
||||||
feather.icons.x.toSvg({ class: 'foo bar', 'stroke-width': 1, color: 'red' })
|
|
||||||
// <svg class="feather feather-x foo bar" stroke-width="1" color="red" ...><line ... /><line ... /></svg>
|
|
||||||
```
|
|
||||||
|
|
||||||
See the [API Reference](#api-reference) for more information about the available properties and methods of the `feather` object.
|
|
||||||
|
|
||||||
### SVG Sprite
|
|
||||||
|
|
||||||
#### 1. Install
|
|
||||||
|
|
||||||
> **Note:** If you intend to use Feather with a CDN, you can skip this installation step.
|
|
||||||
|
|
||||||
Install with [npm](https://docs.npmjs.com/getting-started/what-is-npm).
|
|
||||||
|
|
||||||
```shell
|
|
||||||
npm install feather-icons --save
|
|
||||||
```
|
|
||||||
|
|
||||||
Or just copy [`feather-sprite.svg`](https://unpkg.com/feather-icons/dist/feather-sprite.svg) into your project directory.
|
|
||||||
|
|
||||||
#### 2. Use
|
|
||||||
|
|
||||||
Include an icon on your page with the following markup:
|
|
||||||
|
|
||||||
```html
|
|
||||||
<svg
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<use href="path/to/feather-sprite.svg#circle"/>
|
|
||||||
</svg>
|
|
||||||
```
|
|
||||||
|
|
||||||
> **Note:** `circle` in the above example can be replaced with any valid icon name. See the complete list of icon names at [feathericons.com](https://feathericons.com).
|
|
||||||
|
|
||||||
However, this markup can be simplified using a simple CSS class to avoid repetition of SVG attributes between icons:
|
|
||||||
|
|
||||||
```css
|
|
||||||
.feather {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
stroke: currentColor;
|
|
||||||
stroke-width: 2;
|
|
||||||
stroke-linecap: round;
|
|
||||||
stroke-linejoin: round;
|
|
||||||
fill: none;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
```html
|
|
||||||
<svg class="feather">
|
|
||||||
<use href="path/to/dist/feather-sprite.svg#circle"/>
|
|
||||||
</svg>
|
|
||||||
```
|
|
||||||
### Figma
|
|
||||||
Feather is available as a [Figma component library](https://www.figma.com/file/dyJRSFTIajik4cdkcXN8yA3K/Feather-Component-Library). To use the components, log in to your Figma account and **duplicate** the file to your drafts.
|
|
||||||
|
|
||||||
## API Reference
|
|
||||||
|
|
||||||
### `feather.icons`
|
|
||||||
|
|
||||||
An object with data about every icon.
|
|
||||||
|
|
||||||
#### Usage
|
|
||||||
|
|
||||||
```js
|
|
||||||
feather.icons.x
|
|
||||||
// {
|
|
||||||
// name: 'x',
|
|
||||||
// contents: '<line ... /><line ... />',
|
|
||||||
// tags: ['cancel', 'close', 'delete', 'remove'],
|
|
||||||
// attrs: {
|
|
||||||
// class: 'feather feather-x',
|
|
||||||
// xmlns: 'http://www.w3.org/2000/svg',
|
|
||||||
// width: 24,
|
|
||||||
// height: 24,
|
|
||||||
// viewBox: '0 0 24 24',
|
|
||||||
// fill: 'none',
|
|
||||||
// stroke: 'currentColor',
|
|
||||||
// 'stroke-width': 2,
|
|
||||||
// 'stroke-linecap': 'round',
|
|
||||||
// 'stroke-linejoin': 'round',
|
|
||||||
// },
|
|
||||||
// toSvg: [Function],
|
|
||||||
// }
|
|
||||||
|
|
||||||
feather.icons.x.toString()
|
|
||||||
// '<line ... /><line ... />'
|
|
||||||
```
|
|
||||||
|
|
||||||
> **Note:** `x` in the above example can be replaced with any valid icon name. See the complete list of icon names at [feathericons.com](https://feathericons.com). Icons with multi-word names (e.g. `arrow-right`) **cannot** be accessed using dot notation (e.g. `feather.icons.x`). Instead, use bracket notation (e.g. `feather.icons['arrow-right']`).
|
|
||||||
|
|
||||||
[View Source](https://github.com/colebemis/feather/blob/master/src/icons.js)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### `feather.icons[name].toSvg([attrs])`
|
|
||||||
|
|
||||||
Returns an SVG string.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
|
|
||||||
| Name | Type | Description |
|
|
||||||
| --------- | ------ | ----------- |
|
|
||||||
| `attrs` (optional) | Object | Key-value pairs in the `attrs` object will be mapped to HTML attributes on the `<svg>` tag (e.g. `{ foo: 'bar' }` maps to `foo="bar"`). All default attributes on the `<svg>` tag can be overridden with the `attrs` object. |
|
|
||||||
|
|
||||||
> **Hint:** You might find these SVG attributes helpful for manipulating icons:
|
|
||||||
> * [`color`](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/color)
|
|
||||||
> * [`width`](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/width)
|
|
||||||
> * [`height`](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/height)
|
|
||||||
> * [`stroke-width`](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-width)
|
|
||||||
> * [`stroke-linecap`](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linecap)
|
|
||||||
> * [`stroke-linejoin`](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linejoin)
|
|
||||||
|
|
||||||
#### Usage
|
|
||||||
|
|
||||||
```js
|
|
||||||
feather.icons.circle.toSvg()
|
|
||||||
// '<svg class="feather feather-circle" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>'
|
|
||||||
|
|
||||||
feather.icons.circle.toSvg({ 'stroke-width': 1 })
|
|
||||||
// '<svg class="feather feather-circle" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>'
|
|
||||||
|
|
||||||
feather.icons.circle.toSvg({ class: 'foo bar' })
|
|
||||||
// '<svg class="feather feather-circle foo bar" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>'
|
|
||||||
```
|
|
||||||
|
|
||||||
[View Source](https://github.com/colebemis/feather/blob/master/src/icon.js)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### `feather.replace([attrs])`
|
|
||||||
|
|
||||||
Replaces all elements that have a `data-feather` attribute with SVG markup corresponding to the element's `data-feather` attribute value.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
|
|
||||||
| Name | Type | Description |
|
|
||||||
| ---------- | ------ | ----------- |
|
|
||||||
| `attrs` (optional) | Object | Key-value pairs in the `attrs` object will be mapped to HTML attributes on the `<svg>` tag (e.g. `{ foo: 'bar' }` maps to `foo="bar"`). All default attributes on the `<svg>` tag can be overridden with the `attrs` object. |
|
|
||||||
|
|
||||||
#### Usage
|
|
||||||
|
|
||||||
> **Note:** `feather.replace()` only works in a browser environment.
|
|
||||||
|
|
||||||
Simple usage:
|
|
||||||
```html
|
|
||||||
<i data-feather="circle"></i>
|
|
||||||
<!--
|
|
||||||
<i> will be replaced with:
|
|
||||||
<svg class="feather feather-circle" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<script>
|
|
||||||
feather.replace()
|
|
||||||
</script>
|
|
||||||
```
|
|
||||||
|
|
||||||
You can pass `feather.replace()` an `attrs` object:
|
|
||||||
```html
|
|
||||||
<i data-feather="circle"></i>
|
|
||||||
<!--
|
|
||||||
<i> will be replaced with:
|
|
||||||
<svg class="feather feather-circle foo bar" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<script>
|
|
||||||
feather.replace({ class: 'foo bar', 'stroke-width': 1 })
|
|
||||||
</script>
|
|
||||||
```
|
|
||||||
|
|
||||||
All attributes on the placeholder element (i.e. `<i>`) will be copied to the `<svg>` tag:
|
|
||||||
|
|
||||||
```html
|
|
||||||
<i data-feather="circle" id="my-circle" class="foo bar" stroke-width="1"></i>
|
|
||||||
<!--
|
|
||||||
<i> will be replaced with:
|
|
||||||
<svg id="my-circle" class="feather feather-circle foo bar" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<script>
|
|
||||||
feather.replace()
|
|
||||||
</script>
|
|
||||||
```
|
|
||||||
|
|
||||||
[View Source](https://github.com/colebemis/feather/blob/master/src/replace.js)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### (DEPRECATED) `feather.toSvg(name, [attrs])`
|
|
||||||
|
|
||||||
> **Note:** `feather.toSvg()` is deprecated. Please use `feather.icons[name].toSvg()` instead.
|
|
||||||
|
|
||||||
Returns an SVG string.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
|
|
||||||
| Name | Type | Description |
|
|
||||||
| --------- | ------ | ----------- |
|
|
||||||
| `name` | string | Icon name |
|
|
||||||
| `attrs` (optional) | Object | Key-value pairs in the `attrs` object will be mapped to HTML attributes on the `<svg>` tag (e.g. `{ foo: 'bar' }` maps to `foo="bar"`). All default attributes on the `<svg>` tag can be overridden with the `attrs` object. |
|
|
||||||
|
|
||||||
#### Usage
|
|
||||||
|
|
||||||
```js
|
|
||||||
feather.toSvg('circle')
|
|
||||||
// '<svg class="feather feather-circle" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>'
|
|
||||||
|
|
||||||
feather.toSvg('circle', { 'stroke-width': 1 })
|
|
||||||
// '<svg class="feather feather-circle" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>'
|
|
||||||
|
|
||||||
feather.toSvg('circle', { class: 'foo bar' })
|
|
||||||
// '<svg class="feather feather-circle foo bar" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>'
|
|
||||||
```
|
|
||||||
|
|
||||||
[View Source](https://github.com/colebemis/feather/blob/master/src/to-svg.js)
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
For more info on how to contribute please see the [contribution guidelines](https://github.com/colebemis/feather/blob/master/CONTRIBUTING.md).
|
|
||||||
|
|
||||||
Caught a mistake or want to contribute to the documentation? [Edit this page on Github](https://github.com/colebemis/feather/blob/master/README.md)
|
|
||||||
|
|
||||||
## Related Projects
|
|
||||||
|
|
||||||
- [feathericons.dev](http://feathericons.dev) - Feather viewer featuring [30+ brand icons](https://feathericons.dev/?iconset=brands) and [40+ payment services icons](https://feathericons.dev/?iconset=payments)
|
|
||||||
- [angular-feather](https://github.com/michaelbazos/angular-feather) - Feather icons for Angular applications
|
|
||||||
- [elm-feather](https://github.com/1602/elm-feather) - Feather icons for Elm applications
|
|
||||||
- [react-feather](https://github.com/carmelopullara/react-feather) - Feather icons as React components
|
|
||||||
- [sketch-feather](https://github.com/odmln/sketch-feather) - Feather icons as a Sketch library
|
|
||||||
- [vue-feather-icons](https://github.com/egoist/vue-feather-icons) - Feather icons as Vue components
|
|
||||||
- [php-feather](https://github.com/Pixelrobin/php-feather) - Feather icons as a PHP Library
|
|
||||||
- [wp-php-feather](https://github.com/reatlat/wp-php-feather) - Feather icons as a WordPress template tag
|
|
||||||
- [django-feather](https://pypi.org/project/django-feather/) - Feather icons as Django Template Tag
|
|
||||||
- [svelte-feather-icons](https://github.com/dylanblokhuis/svelte-feather-icons) - Feather icons as Svelte components
|
|
||||||
- [gulp-feather](https://github.com/oToToT/gulp-feather) - Feather icons renderng using gulp
|
|
||||||
- [astro-feather](https://github.com/gabrlyg/astro-feather) - Feather icons as Astro components
|
|
||||||
- [qwik-feather-icons](https://github.com/yeyon/qwik-feather-icons) - Feather icons for Qwik, the Resumable Framework
|
|
||||||
- [figma-feather](https://github.com/kevintoepfer/figma-feather) – Feather icons as a Figma component
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
Feather is licensed under the [MIT License](https://github.com/colebemis/feather/blob/master/LICENSE).
|
|
9
_config.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
exclude:
|
||||||
|
- bin
|
||||||
|
- sandbox
|
||||||
|
- stash
|
||||||
|
- LICENSE
|
||||||
|
- README.md
|
||||||
|
- package.json
|
||||||
|
- Gemfile
|
||||||
|
- Gemfile.lock
|
3
_data/tags.yml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
bell: notification
|
||||||
|
bell-off: notification-off
|
||||||
|
check: tick
|
13
_includes/footer.html
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<footer class="flex flex-column items-center pv6-l pv5">
|
||||||
|
<ul class="flex flex-column flex-row-l justify-center w-80 mw8 mv0 pl0 list">
|
||||||
|
{% for link in include.links %}
|
||||||
|
<li class="mh3-l pv3 pv0-l f5 bb b--black-10 bn-l">
|
||||||
|
<a class="lh-copy color-inherit no-underline dim" href="{{ link.url }}" target="_blank">{{ link.title }}</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p class="mt5 mb2 lh-copy black-90 dim">
|
||||||
|
<a class="no-underline color-inherit" href="http://colebemis.com" target="_blank">Made with <3 by Cole Bemis</a>
|
||||||
|
</p>
|
||||||
|
</footer>
|
12
_includes/header.html
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<header class="pv3 pv4-ns bb b--black-10">
|
||||||
|
<div class="w-80 mw8 center flex justify-between items-center">
|
||||||
|
<h1 class="mv0 normal f3 lh-copy black-90">Feather</h1>
|
||||||
|
|
||||||
|
<ul class="list mv0 pl0 flex">
|
||||||
|
<li class="dn dib-ns"><a class="no-underline color-inherit dim" href="https://twitter.com/intent/tweet?text=Feather%20-%20Simply%20beautiful%20open%20source%20icons%20by%20%40colebemis%20https://feathericons.com" target="_blank">Tweet</a></li>
|
||||||
|
<li class="dn dib-ns ml4"><a class="no-underline color-inherit dim" href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=G6CPFZ6PQRZW8&lc=US&item_name=Feather¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted" target="_blank">Donate</a></li>
|
||||||
|
<li class="ml4"><a class="no-underline color-inherit dim" href="https://github.com/colebemis/feather#quick-start" target="_blank">Usage</a></li>
|
||||||
|
<li class="ml4"><a class="no-underline color-inherit dim" href="https://github.com/colebemis/feather" target="_blank">GitHub</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</header>
|
11
_includes/hero.html
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<div class="flex flex-column items-center w-80 mw8 pv5 pv6-ns center">
|
||||||
|
<h2 class="mt0 mb4 f2 fw3 tc lh-title black-90">Simply beautiful open source icons</h2>
|
||||||
|
<a
|
||||||
|
class="button white bg-accent dim br1"
|
||||||
|
href="feather.zip"
|
||||||
|
download
|
||||||
|
onclick="ga('send', 'event', 'download', 'click', 'all');">
|
||||||
|
Download
|
||||||
|
</a>
|
||||||
|
<code class="mt4 lh-copy">npm install feather-icons</code>
|
||||||
|
</div>
|
12
_includes/icon.html
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{% assign tags = site.data.tags[include.icon.basename] | split: ", " | join " " %}
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
href="{{ include.icon.path }}"
|
||||||
|
class="icon flex flex-row items-center dib pa3 pa4-ns br1 no-underline dark-gray bg-near-white bg-animate hover-bg-light-gray"
|
||||||
|
download
|
||||||
|
onclick="ga('send', 'event', 'download', 'click', '{{ include.icon.basename }}');">
|
||||||
|
<span class="svg flex-none lh-none">{% include_relative {{ include.icon.path }} %}</span>
|
||||||
|
<span class="icon-name ml3 lh-copy f6 f5-ns tc black-60 ellipse">{{ include.icon.basename }}</span>
|
||||||
|
<span class="icon-tags dn">{{tags}}</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
14
_includes/icons.html
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<div class="w-80 mw8 center" id="js-icons">
|
||||||
|
<input
|
||||||
|
type="search"
|
||||||
|
class="search fuzzy-search input-reset w-100 mb3 pv3 ph3 ph4-ns rubik f5 lh-copy bg-white br1 ba b--black-20"
|
||||||
|
placeholder="Search"
|
||||||
|
/>
|
||||||
|
<ul class="icon-grid mv0 pl0 list">
|
||||||
|
{% for file in site.static_files %}
|
||||||
|
{% if file.path contains 'dist/icons/' %}
|
||||||
|
{% include icon.html icon=file %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
BIN
assets/favicon.png
Normal file
After Width: | Height: | Size: 484 B |
BIN
assets/feather-preview.png
Normal file
After Width: | Height: | Size: 36 KiB |
@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"rules": {
|
|
||||||
"import/no-extraneous-dependencies": "off",
|
|
||||||
"no-console": "off"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`builds object correctly 1`] = `
|
|
||||||
Object {
|
|
||||||
"icon1": "<line x1=\\"23\\" y1=\\"1\\" x2=\\"1\\" y2=\\"23\\"></line><line x1=\\"1\\" y1=\\"1\\" x2=\\"23\\" y2=\\"23\\"></line>",
|
|
||||||
"icon2": "<circle cx=\\"12\\" cy=\\"12\\" r=\\"11\\"></circle>",
|
|
||||||
}
|
|
||||||
`;
|
|
@ -1,3 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`builds sprite correctly 1`] = `"<svg xmlns=\\"http://www.w3.org/2000/svg\\"><defs><symbol id=\\"icon1\\" viewBox=\\"0 0 24 24\\"><line x1=\\"23\\" y1=\\"1\\" x2=\\"1\\" y2=\\"23\\"></line><line x1=\\"1\\" y1=\\"1\\" x2=\\"23\\" y2=\\"23\\"></line></symbol><symbol id=\\"icon2\\" viewBox=\\"0 0 24 24\\"><circle cx=\\"12\\" cy=\\"12\\" r=\\"11\\"></circle></symbol></defs></svg>"`;
|
|
@ -1,26 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`processes SVG correctly 1`] = `
|
|
||||||
"<svg
|
|
||||||
xmlns=\\"http://www.w3.org/2000/svg\\"
|
|
||||||
width=\\"24\\"
|
|
||||||
height=\\"24\\"
|
|
||||||
viewBox=\\"0 0 24 24\\"
|
|
||||||
fill=\\"none\\"
|
|
||||||
stroke=\\"currentColor\\"
|
|
||||||
stroke-width=\\"2\\"
|
|
||||||
stroke-linecap=\\"round\\"
|
|
||||||
stroke-linejoin=\\"round\\"
|
|
||||||
>
|
|
||||||
<line x1=\\"23\\" y1=\\"1\\" x2=\\"1\\" y2=\\"23\\" />
|
|
||||||
<line x1=\\"1\\" y1=\\"1\\" x2=\\"23\\" y2=\\"23\\" />
|
|
||||||
</svg>
|
|
||||||
"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`rejects when passed unparsable SVG string 1`] = `
|
|
||||||
[Error: Error in parsing SVG: Unclosed root tag
|
|
||||||
Line: 0
|
|
||||||
Column: 10
|
|
||||||
Char: ]
|
|
||||||
`;
|
|
@ -1,17 +0,0 @@
|
|||||||
/* eslint-env jest */
|
|
||||||
import buildIconsObject from '../build-icons-object';
|
|
||||||
|
|
||||||
const SVG_FILES = {
|
|
||||||
'icon1.svg':
|
|
||||||
'<svg\n xmlns="http://www.w3.org/2000/svg"\n width="24"\n height="24"\n viewBox="0 0 24 24"\n>\n <line x1="23" y1="1" x2="1" y2="23" />\n <line x1="1" y1="1" x2="23" y2="23" />\n</svg>',
|
|
||||||
'icon2.svg':
|
|
||||||
'<svg\n xmlns="http://www.w3.org/2000/svg"\n width="24"\n height="24"\n viewBox="0 0 24 24"\n>\n <circle cx="12" cy="12" r="11" />\n</svg>',
|
|
||||||
};
|
|
||||||
|
|
||||||
function getSvg(svgFile) {
|
|
||||||
return SVG_FILES[svgFile];
|
|
||||||
}
|
|
||||||
|
|
||||||
test('builds object correctly', () => {
|
|
||||||
expect(buildIconsObject(Object.keys(SVG_FILES), getSvg)).toMatchSnapshot();
|
|
||||||
});
|
|
@ -1,12 +0,0 @@
|
|||||||
/* eslint-env jest */
|
|
||||||
import buildSpriteString from '../build-sprite-string';
|
|
||||||
|
|
||||||
const icons = {
|
|
||||||
icon1:
|
|
||||||
'<line x1="23" y1="1" x2="1" y2="23"></line><line x1="1" y1="1" x2="23" y2="23"></line>',
|
|
||||||
icon2: '<circle cx="12" cy="12" r="11"></circle>',
|
|
||||||
};
|
|
||||||
|
|
||||||
test('builds sprite correctly', () => {
|
|
||||||
expect(buildSpriteString(icons)).toMatchSnapshot();
|
|
||||||
});
|
|
@ -1,15 +0,0 @@
|
|||||||
/* eslint-env jest */
|
|
||||||
import processSvg from '../process-svg';
|
|
||||||
|
|
||||||
test('processes SVG correctly', () => {
|
|
||||||
const SVG =
|
|
||||||
'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><title>Title</title><line x1="23" y1="1" x2="1" y2="23" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line x1="1" y1="1" x2="23" y2="23" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>';
|
|
||||||
|
|
||||||
expect(processSvg(SVG)).resolves.toMatchSnapshot();
|
|
||||||
});
|
|
||||||
|
|
||||||
test('rejects when passed unparsable SVG string', () => {
|
|
||||||
const UNPARSABLE_SVG = '<svg></svg';
|
|
||||||
|
|
||||||
expect(processSvg(UNPARSABLE_SVG)).rejects.toMatchSnapshot();
|
|
||||||
});
|
|
@ -1,19 +0,0 @@
|
|||||||
import fs from 'fs';
|
|
||||||
import path from 'path';
|
|
||||||
|
|
||||||
import buildIconsObject from './build-icons-object';
|
|
||||||
|
|
||||||
const IN_DIR = path.resolve(__dirname, '../icons');
|
|
||||||
const OUT_FILE = path.resolve(__dirname, '../dist/icons.json');
|
|
||||||
|
|
||||||
console.log(`Building ${OUT_FILE}...`);
|
|
||||||
|
|
||||||
const svgFiles = fs
|
|
||||||
.readdirSync(IN_DIR)
|
|
||||||
.filter(file => path.extname(file) === '.svg');
|
|
||||||
|
|
||||||
const getSvg = svgFile => fs.readFileSync(path.join(IN_DIR, svgFile));
|
|
||||||
|
|
||||||
const icons = buildIconsObject(svgFiles, getSvg);
|
|
||||||
|
|
||||||
fs.writeFileSync(OUT_FILE, JSON.stringify(icons));
|
|
@ -1,35 +0,0 @@
|
|||||||
import path from 'path';
|
|
||||||
import cheerio from 'cheerio';
|
|
||||||
import { minify } from 'html-minifier';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Build an object in the format: `{ <name>: <contents> }`.
|
|
||||||
* @param {string[]} svgFiles - A list of filenames.
|
|
||||||
* @param {Function} getSvg - A function that returns the contents of an SVG file given a filename.
|
|
||||||
* @returns {Object}
|
|
||||||
*/
|
|
||||||
function buildIconsObject(svgFiles, getSvg) {
|
|
||||||
return svgFiles
|
|
||||||
.map(svgFile => {
|
|
||||||
const name = path.basename(svgFile, '.svg');
|
|
||||||
const svg = getSvg(svgFile);
|
|
||||||
const contents = getSvgContents(svg);
|
|
||||||
return { name, contents };
|
|
||||||
})
|
|
||||||
.reduce((icons, icon) => {
|
|
||||||
icons[icon.name] = icon.contents;
|
|
||||||
return icons;
|
|
||||||
}, {});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get contents between opening and closing `<svg>` tags.
|
|
||||||
* @param {string} svg
|
|
||||||
* @returns {string}
|
|
||||||
*/
|
|
||||||
function getSvgContents(svg) {
|
|
||||||
const $ = cheerio.load(svg);
|
|
||||||
return minify($('svg').html(), { collapseWhitespace: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
export default buildIconsObject;
|
|
@ -1,28 +0,0 @@
|
|||||||
import DEFAULT_ATTRS from '../src/default-attrs.json';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Build an SVG sprite string containing SVG symbols.
|
|
||||||
* @param {Object} icons
|
|
||||||
* @returns {string}
|
|
||||||
*/
|
|
||||||
function buildSpriteString(icons) {
|
|
||||||
const symbols = Object.keys(icons)
|
|
||||||
.map(icon => toSvgSymbol(icon, icons[icon]))
|
|
||||||
.join('');
|
|
||||||
|
|
||||||
return `<svg xmlns="${DEFAULT_ATTRS.xmlns}"><defs>${symbols}</defs></svg>`;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create an SVG symbol string.
|
|
||||||
* @param {string} name - Icon name
|
|
||||||
* @param {string} contents - SVG contents
|
|
||||||
* @returns {string}
|
|
||||||
*/
|
|
||||||
function toSvgSymbol(name, contents) {
|
|
||||||
return `<symbol id="${name}" viewBox="${DEFAULT_ATTRS.viewBox}">${
|
|
||||||
contents
|
|
||||||
}</symbol>`;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default buildSpriteString;
|
|
@ -1,10 +0,0 @@
|
|||||||
import fs from 'fs';
|
|
||||||
import path from 'path';
|
|
||||||
import icons from '../dist/icons.json';
|
|
||||||
import buildSpriteString from './build-sprite-string';
|
|
||||||
|
|
||||||
const OUT_FILE = path.resolve(__dirname, '../dist/feather-sprite.svg');
|
|
||||||
|
|
||||||
console.log(`Building ${OUT_FILE}...`);
|
|
||||||
|
|
||||||
fs.writeFileSync(OUT_FILE, buildSpriteString(icons));
|
|
@ -1,13 +0,0 @@
|
|||||||
import fs from 'fs';
|
|
||||||
import path from 'path';
|
|
||||||
import icons from '../src/icons';
|
|
||||||
|
|
||||||
const OUT_DIR = path.resolve(__dirname, '../dist/icons');
|
|
||||||
|
|
||||||
console.log(`Building SVGs in ${OUT_DIR}...`);
|
|
||||||
|
|
||||||
Object.keys(icons).forEach(name => {
|
|
||||||
const svg = icons[name].toSvg();
|
|
||||||
|
|
||||||
fs.writeFileSync(path.join(OUT_DIR, `${name}.svg`), svg);
|
|
||||||
});
|
|
4
bin/build-zip.sh
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# compress 'icons' directory into feather.zip
|
||||||
|
zip -r -j feather.zip ./node_modules/feather-icons/dist/icons/
|
25
bin/build.sh
@ -1,25 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Process SVG files
|
|
||||||
npx babel-node bin/process-svgs.js
|
|
||||||
|
|
||||||
# Create dist directory
|
|
||||||
npx rimraf dist
|
|
||||||
mkdir dist
|
|
||||||
|
|
||||||
# Build icons.json
|
|
||||||
npx babel-node bin/build-icons-json.js
|
|
||||||
|
|
||||||
# Build SVG sprite
|
|
||||||
npx babel-node bin/build-sprite.js
|
|
||||||
|
|
||||||
# Create dist/icons directory
|
|
||||||
npx rimraf dist/icons
|
|
||||||
mkdir dist/icons
|
|
||||||
|
|
||||||
# Build SVG icons
|
|
||||||
npx babel-node bin/build-svgs.js
|
|
||||||
|
|
||||||
# Build JavaScript library
|
|
||||||
npx webpack --output-filename feather.js --mode development
|
|
||||||
npx webpack --output-filename feather.min.js --mode production
|
|
@ -1,58 +0,0 @@
|
|||||||
import Svgo from 'svgo';
|
|
||||||
import cheerio from 'cheerio';
|
|
||||||
import { format } from 'prettier';
|
|
||||||
|
|
||||||
import DEFAULT_ATTRS from '../src/default-attrs.json';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Process SVG string.
|
|
||||||
* @param {string} svg - An SVG string.
|
|
||||||
* @returns {Promise<string>}
|
|
||||||
*/
|
|
||||||
function processSvg(svg) {
|
|
||||||
return (
|
|
||||||
optimize(svg)
|
|
||||||
.then(setAttrs)
|
|
||||||
.then(format)
|
|
||||||
// remove semicolon inserted by prettier
|
|
||||||
// because prettier thinks it's formatting JSX not HTML
|
|
||||||
.then(svg => svg.replace(/;/g, ''))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Optimize SVG with `svgo`.
|
|
||||||
* @param {string} svg - An SVG string.
|
|
||||||
* @returns {Promise<string>}
|
|
||||||
*/
|
|
||||||
function optimize(svg) {
|
|
||||||
const svgo = new Svgo({
|
|
||||||
plugins: [
|
|
||||||
{ convertShapeToPath: false },
|
|
||||||
{ mergePaths: false },
|
|
||||||
{ removeAttrs: { attrs: '(fill|stroke.*)' } },
|
|
||||||
{ removeTitle: true },
|
|
||||||
],
|
|
||||||
});
|
|
||||||
|
|
||||||
return new Promise(resolve => {
|
|
||||||
svgo.optimize(svg, ({ data }) => resolve(data));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set default attibutes on SVG.
|
|
||||||
* @param {string} svg - An SVG string.
|
|
||||||
* @returns {string}
|
|
||||||
*/
|
|
||||||
function setAttrs(svg) {
|
|
||||||
const $ = cheerio.load(svg);
|
|
||||||
|
|
||||||
Object.keys(DEFAULT_ATTRS).forEach(key =>
|
|
||||||
$('svg').attr(key, DEFAULT_ATTRS[key]),
|
|
||||||
);
|
|
||||||
|
|
||||||
return $('body').html();
|
|
||||||
}
|
|
||||||
|
|
||||||
export default processSvg;
|
|
@ -1,18 +0,0 @@
|
|||||||
import fs from 'fs';
|
|
||||||
import path from 'path';
|
|
||||||
|
|
||||||
import processSvg from './process-svg';
|
|
||||||
|
|
||||||
const IN_DIR = path.resolve(__dirname, '../icons');
|
|
||||||
|
|
||||||
console.log(`Processing SVGs in ${IN_DIR}...`);
|
|
||||||
|
|
||||||
fs
|
|
||||||
.readdirSync(IN_DIR)
|
|
||||||
.filter(file => path.extname(file) === '.svg')
|
|
||||||
.forEach(svgFile => {
|
|
||||||
const svg = fs.readFileSync(path.join(IN_DIR, svgFile));
|
|
||||||
processSvg(svg).then(svg =>
|
|
||||||
fs.writeFileSync(path.join(IN_DIR, svgFile), svg),
|
|
||||||
);
|
|
||||||
});
|
|
@ -1,73 +0,0 @@
|
|||||||
import algolia from 'algoliasearch';
|
|
||||||
import icons from '../dist/icons.json';
|
|
||||||
import tags from '../src/tags.json';
|
|
||||||
|
|
||||||
const ALGOLIA_APP_ID = '5EEOG744D0';
|
|
||||||
|
|
||||||
if (
|
|
||||||
process.env.TRAVIS_PULL_REQUEST === 'false' &&
|
|
||||||
process.env.TRAVIS_BRANCH === 'master'
|
|
||||||
) {
|
|
||||||
syncAlgolia();
|
|
||||||
} else {
|
|
||||||
console.log('Skipped Algolia sync.');
|
|
||||||
}
|
|
||||||
|
|
||||||
function syncAlgolia() {
|
|
||||||
// ALGOLIA_ADMIN_KEY must be added as an environment variable in Travis CI
|
|
||||||
const client = algolia(ALGOLIA_APP_ID, process.env.ALGOLIA_ADMIN_KEY);
|
|
||||||
|
|
||||||
console.log('Initializing target and temporary indexes...');
|
|
||||||
const index = client.initIndex('icons');
|
|
||||||
const indexTmp = client.initIndex('icons_tmp');
|
|
||||||
|
|
||||||
console.log(
|
|
||||||
"Copying target index's settings, synonyms and rules into temporary index...",
|
|
||||||
);
|
|
||||||
scopedCopyIndex(client, index.indexName, indexTmp.indexName)
|
|
||||||
.then(() => {
|
|
||||||
const objects = Object.keys(icons).map(name => ({
|
|
||||||
name,
|
|
||||||
tags: tags[name] || [],
|
|
||||||
}));
|
|
||||||
|
|
||||||
console.log('Adding objects to the temporary index...');
|
|
||||||
return addObjects(indexTmp, objects);
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
console.log('Moving temporary index to target index...');
|
|
||||||
return moveIndex(client, indexTmp.indexName, index.indexName);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function scopedCopyIndex(
|
|
||||||
client,
|
|
||||||
indexNameSrc,
|
|
||||||
indexNameDest,
|
|
||||||
scope = ['settings', 'synonyms', 'rules'],
|
|
||||||
) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
client.copyIndex(indexNameSrc, indexNameDest, scope, (error, contents) => {
|
|
||||||
if (error) reject(error);
|
|
||||||
resolve(contents);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function addObjects(index, objects) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
index.addObjects(objects, (error, contents) => {
|
|
||||||
if (error) reject(error);
|
|
||||||
resolve(contents);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function moveIndex(client, indexNameSrc, indexNameDest) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
client.moveIndex(indexNameSrc, indexNameDest, (error, contents) => {
|
|
||||||
if (error) reject(error);
|
|
||||||
resolve(contents);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
extends: ['@commitlint/config-conventional'],
|
|
||||||
rules: {
|
|
||||||
'scope-case': [0],
|
|
||||||
'subject-case': [2, 'always', 'sentence-case'],
|
|
||||||
'header-max-length': [0],
|
|
||||||
},
|
|
||||||
};
|
|
@ -1,17 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Feather</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<i data-feather="eye"></i>
|
|
||||||
<i data-feather="heart"></i>
|
|
||||||
<i data-feather="feather"></i>
|
|
||||||
|
|
||||||
<script src="https://unpkg.com/feather-icons"></script>
|
|
||||||
<script>
|
|
||||||
feather.replace()
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,13 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<polyline points="22 12 18 12 15 21 9 3 6 12 2 12" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 264 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<path d="M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1" />
|
|
||||||
<polygon points="12 15 17 21 7 21 12 15" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 344 B |
@ -1,15 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<circle cx="12" cy="12" r="10" />
|
|
||||||
<line x1="12" y1="8" x2="12" y2="12" />
|
|
||||||
<line x1="12" y1="16" x2="12.01" y2="16" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 332 B |
@ -1,15 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2" />
|
|
||||||
<line x1="12" y1="8" x2="12" y2="12" />
|
|
||||||
<line x1="12" y1="16" x2="12.01" y2="16" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 390 B |
@ -1,15 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z" />
|
|
||||||
<line x1="12" y1="9" x2="12" y2="13" />
|
|
||||||
<line x1="12" y1="17" x2="12.01" y2="17" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 400 B |
@ -1,16 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<line x1="18" y1="10" x2="6" y2="10" />
|
|
||||||
<line x1="21" y1="6" x2="3" y2="6" />
|
|
||||||
<line x1="21" y1="14" x2="3" y2="14" />
|
|
||||||
<line x1="18" y1="18" x2="6" y2="18" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 374 B |
@ -1,16 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<line x1="21" y1="10" x2="3" y2="10" />
|
|
||||||
<line x1="21" y1="6" x2="3" y2="6" />
|
|
||||||
<line x1="21" y1="14" x2="3" y2="14" />
|
|
||||||
<line x1="21" y1="18" x2="3" y2="18" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 374 B |
@ -1,16 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<line x1="17" y1="10" x2="3" y2="10" />
|
|
||||||
<line x1="21" y1="6" x2="3" y2="6" />
|
|
||||||
<line x1="21" y1="14" x2="3" y2="14" />
|
|
||||||
<line x1="17" y1="18" x2="3" y2="18" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 374 B |
@ -1,16 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<line x1="21" y1="10" x2="7" y2="10" />
|
|
||||||
<line x1="21" y1="6" x2="3" y2="6" />
|
|
||||||
<line x1="21" y1="14" x2="3" y2="14" />
|
|
||||||
<line x1="21" y1="18" x2="7" y2="18" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 374 B |
@ -1,15 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<circle cx="12" cy="5" r="3" />
|
|
||||||
<line x1="12" y1="22" x2="12" y2="8" />
|
|
||||||
<path d="M5 12H2a10 10 0 0 0 20 0h-3" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 327 B |
@ -1,19 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<circle cx="12" cy="12" r="10" />
|
|
||||||
<line x1="14.31" y1="8" x2="20.05" y2="17.94" />
|
|
||||||
<line x1="9.69" y1="8" x2="21.17" y2="8" />
|
|
||||||
<line x1="7.38" y1="12" x2="13.12" y2="2.06" />
|
|
||||||
<line x1="9.69" y1="16" x2="3.95" y2="6.06" />
|
|
||||||
<line x1="14.31" y1="16" x2="2.83" y2="16" />
|
|
||||||
<line x1="16.62" y1="12" x2="10.88" y2="21.94" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 540 B |
@ -1,15 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<polyline points="21 8 21 21 3 21 3 8" />
|
|
||||||
<rect x="1" y="3" width="22" height="5" />
|
|
||||||
<line x1="10" y1="12" x2="14" y2="12" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 340 B |
@ -1,15 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<circle cx="12" cy="12" r="10" />
|
|
||||||
<polyline points="8 12 12 16 16 12" />
|
|
||||||
<line x1="12" y1="8" x2="12" y2="16" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 327 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<line x1="17" y1="7" x2="7" y2="17" />
|
|
||||||
<polyline points="17 17 7 17 7 7" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 288 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<line x1="7" y1="7" x2="17" y2="17" />
|
|
||||||
<polyline points="17 7 17 17 7 17" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 289 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<line x1="12" y1="5" x2="12" y2="19" />
|
|
||||||
<polyline points="19 12 12 19 5 12" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 291 B |
@ -1,15 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<circle cx="12" cy="12" r="10" />
|
|
||||||
<polyline points="12 8 8 12 12 16" />
|
|
||||||
<line x1="16" y1="12" x2="8" y2="12" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 326 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<line x1="19" y1="12" x2="5" y2="12" />
|
|
||||||
<polyline points="12 19 5 12 12 5" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 290 B |
@ -1,15 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<circle cx="12" cy="12" r="10" />
|
|
||||||
<polyline points="12 16 16 12 12 8" />
|
|
||||||
<line x1="8" y1="12" x2="16" y2="12" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 327 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<line x1="5" y1="12" x2="19" y2="12" />
|
|
||||||
<polyline points="12 5 19 12 12 19" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 291 B |
@ -1,15 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<circle cx="12" cy="12" r="10" />
|
|
||||||
<polyline points="16 12 12 8 8 12" />
|
|
||||||
<line x1="12" y1="16" x2="12" y2="8" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 326 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<line x1="17" y1="17" x2="7" y2="7" />
|
|
||||||
<polyline points="7 17 7 7 17 7" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 287 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<line x1="7" y1="17" x2="17" y2="7" />
|
|
||||||
<polyline points="7 7 17 7 17 17" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 288 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<line x1="12" y1="19" x2="12" y2="5" />
|
|
||||||
<polyline points="5 12 12 5 19 12" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 290 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<circle cx="12" cy="12" r="4" />
|
|
||||||
<path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 305 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<circle cx="12" cy="8" r="7" />
|
|
||||||
<polyline points="8.21 13.89 7 23 12 20 17 23 15.79 13.88" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 306 B |
@ -1,15 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<line x1="18" y1="20" x2="18" y2="10" />
|
|
||||||
<line x1="12" y1="20" x2="12" y2="4" />
|
|
||||||
<line x1="6" y1="20" x2="6" y2="14" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 334 B |
@ -1,15 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<line x1="12" y1="20" x2="12" y2="10" />
|
|
||||||
<line x1="18" y1="20" x2="18" y2="4" />
|
|
||||||
<line x1="6" y1="20" x2="6" y2="16" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 334 B |
@ -1,15 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<path d="M5 18H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.19M15 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.19" />
|
|
||||||
<line x1="23" y1="13" x2="23" y2="11" />
|
|
||||||
<polyline points="11 6 7 12 13 12 9 18" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 397 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<rect x="1" y="6" width="18" height="12" rx="2" ry="2" />
|
|
||||||
<line x1="23" y1="13" x2="23" y2="11" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 311 B |
@ -1,17 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<path d="M13.73 21a2 2 0 0 1-3.46 0" />
|
|
||||||
<path d="M18.63 13A17.89 17.89 0 0 1 18 8" />
|
|
||||||
<path d="M6.26 6.26A5.86 5.86 0 0 0 6 8c0 7-3 9-3 9h14" />
|
|
||||||
<path d="M18 8a6 6 0 0 0-9.33-5" />
|
|
||||||
<line x1="1" y1="1" x2="23" y2="23" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 438 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9" />
|
|
||||||
<path d="M13.73 21a2 2 0 0 1-3.46 0" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 309 B |
@ -1,13 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<polyline points="6.5 6.5 17.5 17.5 12 23 12 1 17.5 6.5 6.5 17.5" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 279 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<path d="M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z" />
|
|
||||||
<path d="M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 315 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z" />
|
|
||||||
<path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 322 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20" />
|
|
||||||
<path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 333 B |
@ -1,13 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 273 B |
@ -1,15 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z" />
|
|
||||||
<polyline points="3.27 6.96 12 12.01 20.73 6.96" />
|
|
||||||
<line x1="12" y1="22.08" x2="12" y2="12" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 445 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<rect x="2" y="7" width="20" height="14" rx="2" ry="2" />
|
|
||||||
<path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 326 B |
@ -1,16 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<rect x="3" y="4" width="18" height="18" rx="2" ry="2" />
|
|
||||||
<line x1="16" y1="2" x2="16" y2="6" />
|
|
||||||
<line x1="8" y1="2" x2="8" y2="6" />
|
|
||||||
<line x1="3" y1="10" x2="21" y2="10" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 390 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<line x1="1" y1="1" x2="23" y2="23" />
|
|
||||||
<path d="M21 21H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3m3-3h6l2 3h4a2 2 0 0 1 2 2v9.34m-7.72-2.06a4 4 0 1 1-5.56-5.56" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 367 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z" />
|
|
||||||
<circle cx="12" cy="13" r="4" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 340 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<path d="M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6" />
|
|
||||||
<line x1="2" y1="20" x2="2.01" y2="20" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 375 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14" />
|
|
||||||
<polyline points="22 4 12 14.01 9 11.01" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 304 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<polyline points="9 11 12 14 22 4" />
|
|
||||||
<path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 321 B |
@ -1,13 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<polyline points="20 6 9 17 4 12" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 247 B |
@ -1,13 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<polyline points="6 9 12 15 18 9" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 247 B |
@ -1,13 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<polyline points="15 18 9 12 15 6" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 248 B |
@ -1,13 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<polyline points="9 18 15 12 9 6" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 247 B |
@ -1,13 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<polyline points="18 15 12 9 6 15" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 248 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<polyline points="7 13 12 18 17 13" />
|
|
||||||
<polyline points="7 6 12 11 17 6" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 288 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<polyline points="11 17 6 12 11 7" />
|
|
||||||
<polyline points="18 17 13 12 18 7" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 289 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<polyline points="13 17 18 12 13 7" />
|
|
||||||
<polyline points="6 17 11 12 6 7" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 288 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<polyline points="17 11 12 6 7 11" />
|
|
||||||
<polyline points="17 18 12 13 7 18" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 289 B |
@ -1,17 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<circle cx="12" cy="12" r="10" />
|
|
||||||
<circle cx="12" cy="12" r="4" />
|
|
||||||
<line x1="21.17" y1="8" x2="12" y2="8" />
|
|
||||||
<line x1="3.95" y1="6.06" x2="8.54" y2="14" />
|
|
||||||
<line x1="10.88" y1="21.94" x2="15.46" y2="14" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 424 B |
@ -1,13 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<circle cx="12" cy="12" r="10" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 244 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2" />
|
|
||||||
<rect x="8" y="2" width="8" height="4" rx="1" ry="1" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 354 B |
@ -1,14 +0,0 @@
|
|||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
>
|
|
||||||
<circle cx="12" cy="12" r="10" />
|
|
||||||
<polyline points="12 6 12 12 16 14" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 285 B |