Compare commits

..

1 Commits

22 changed files with 1746 additions and 2944 deletions

10
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,10 @@
<!--
If you'd like to request an icon, please provide the following information:
- icon name
- at least one use case
- screenshots of similar icons
Please create one issue for each icon request.
-->

View File

@ -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
...
```

View File

@ -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:

View File

@ -37,36 +37,24 @@ When creating a new issue make sure to include the following:
- A screenshot of any visual bug.
Here is what a great bug report would look like:
```
## Prerequisites
Check not rendering properly
Version: Release v3.1.0
Running from: Import using webpack
Operating system: Mac OSX
Bits: 64 bits
## Step to reproduce
Downloaded from: Import using webpack
OS: Mac OSX
How 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:
Actual result:
- 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
...
```

View File

@ -13,7 +13,7 @@ Feather is a collection of simply beautiful open source icons. Each icon is desi
https://feathericons.com
```shell
```sh
npm install feather-icons
```
@ -30,7 +30,6 @@ npm install feather-icons
* [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)
@ -51,7 +50,7 @@ Or copy and paste the following code snippet into a blank `html` file.
<!DOCTYPE html>
<html lang="en">
<title></title>
<script src="https://unpkg.com/feather-icons"></script>
<script src="https://unpkg.com/feather-icons/dist/feather.min.js"></script>
<body>
<!-- example icon -->
@ -78,7 +77,7 @@ The following are additional ways you can use Feather.
Install with [npm](https://docs.npmjs.com/getting-started/what-is-npm).
```shell
```
npm install feather-icons --save
```
@ -86,27 +85,25 @@ Or just copy [`feather.js`](https://unpkg.com/feather-icons/dist/feather.js) or
#### 2. Include
Include `feather.js` or `feather.min.js` with a `<script>` tag:
Include `feather.js` or `feather.min.js` with a `<script>` tag. These files are located in the `dist` directory of the npm package.
```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:
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>
<script src="https://unpkg.com/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:
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>
@ -116,7 +113,7 @@ See the complete list of icons at [feathericons.com](https://feathericons.com).
#### 4. Replace
Call the `feather.replace()` method:
Call the `feather.replace()` method.
```html
<script>
@ -129,15 +126,15 @@ All elements that have a `data-feather` attribute will be replaced with SVG mark
### Node
#### 1. Install
Install with [npm](https://docs.npmjs.com/getting-started/what-is-npm):
Install with [npm](https://docs.npmjs.com/getting-started/what-is-npm).
```shell
```
npm install feather-icons --save
```
#### 2. Require
```js
```javascript
const feather = require('feather-icons')
```
@ -160,8 +157,7 @@ feather.icons.x
// 'stroke-width': 2,
// 'stroke-linecap': 'round',
// 'stroke-linejoin': 'round',
// },
// toSvg: [Function],
// }
// }
feather.icons.x.toSvg()
@ -181,7 +177,7 @@ See the [API Reference](#api-reference) for more information about the available
Install with [npm](https://docs.npmjs.com/getting-started/what-is-npm).
```shell
```
npm install feather-icons --save
```
@ -189,7 +185,7 @@ Or just copy [`feather-sprite.svg`](https://unpkg.com/feather-icons/dist/feather
#### 2. Use
Include an icon on your page with the following markup:
In your HTML, you can include an icon like so:
```html
<svg
@ -207,7 +203,7 @@ Include an icon on your page with the following markup:
> **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:
However, this markup can be simplified using a simple CSS class to avoid repetition of SVG attributes between icons.
```css
.feather {
@ -226,8 +222,6 @@ However, this markup can be simplified using a simple CSS class to avoid repetit
<use xlink: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
@ -254,8 +248,7 @@ feather.icons.x
// 'stroke-width': 2,
// 'stroke-linecap': 'round',
// 'stroke-linejoin': 'round',
// },
// toSvg: [Function],
// }
// }
feather.icons.x.toString()
@ -278,17 +271,9 @@ Returns an SVG string.
| --------- | ------ | ----------- |
| `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
```javascript
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>'
@ -376,7 +361,7 @@ Returns an SVG string.
#### Usage
```js
```javascript
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>'
@ -410,7 +395,6 @@ Caught a mistake or want to contribute to the documentation? [Edit this page on
- [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-icon](https://github.com/mage3k/vue-feather-icon) - Feather icons as Vue components
- [php-feather](https://github.com/Pixelrobin/php-feather) - Feather icons as a PHP Library
## License

View File

@ -1,25 +1,25 @@
#!/bin/bash
# Process SVG files
npx babel-node bin/process-svgs.js
./node_modules/.bin/babel-node bin/process-svgs.js
# Create dist directory
npx rimraf dist
./node_modules/.bin/rimraf dist
mkdir dist
# Build icons.json
npx babel-node bin/build-icons-json.js
./node_modules/.bin/babel-node bin/build-icons-json.js
# Build SVG sprite
npx babel-node bin/build-sprite.js
./node_modules/.bin/babel-node bin/build-sprite.js
# Create dist/icons directory
npx rimraf dist/icons
./node_modules/.bin/rimraf dist/icons
mkdir dist/icons
# Build SVG icons
npx babel-node bin/build-svgs.js
./node_modules/.bin/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
./node_modules/.bin/webpack --output-filename feather.js --mode development
./node_modules/.bin/webpack --output-filename feather.min.js --mode production

View File

@ -8,66 +8,29 @@ if (
process.env.TRAVIS_PULL_REQUEST === 'false' &&
process.env.TRAVIS_BRANCH === 'master'
) {
console.log('Syncing Algolia records...');
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] || [],
}));
const records = 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);
});
}
index.clearIndex((err, content) => {
if (err) throw err;
console.log(content);
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);
index.addObjects(records, (err, content) => {
if (err) throw err;
console.log(content);
});
});
}

View File

@ -3,13 +3,20 @@
<head>
<meta charset="UTF-8">
<title>Feather</title>
<!--
To build feather.min.js run
$ npm run build
in the root directory, or use the already built package available on unpkg.com.
-->
<script src="../dist/feather.min.js"></script>
<!-- <script src="https://unpkg.com/feather-icons/dist/feather.min.js"></script> -->
</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>

View File

@ -1,17 +0,0 @@
<svg
viewBox="0 0 24 24"
width="24"
height="24"
xmlns="http://www.w3.org/2000/svg"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M18 8h1a4 4 0 0 1 0 8h-1" />
<path d="M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z" />
<line x1="6" y1="1" x2="6" y2="4" />
<line x1="10" y1="1" x2="10" y2="4" />
<line x1="14" y1="1" x2="14" y2="4" />
</svg>

Before

Width:  |  Height:  |  Size: 427 B

View File

@ -11,5 +11,5 @@
>
<path d="M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5z" />
<line x1="16" y1="8" x2="2" y2="22" />
<line x1="17.5" y1="15" x2="9" y2="15" />
<line x1="17" y1="15" x2="9" y2="15" />
</svg>

Before

Width:  |  Height:  |  Size: 356 B

After

Width:  |  Height:  |  Size: 354 B

View File

@ -1,16 +0,0 @@
<svg
viewBox="0 0 24 24"
width="24"
height="24"
xmlns="http://www.w3.org/2000/svg"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="12" cy="12" r="10" />
<path d="M16 16s-1.5-2-4-2-4 2-4 2" />
<line x1="9" y1="9" x2="9.01" y2="9" />
<line x1="15" y1="9" x2="15.01" y2="9" />
</svg>

Before

Width:  |  Height:  |  Size: 371 B

View File

@ -1,13 +0,0 @@
<svg
width="24"
height="24"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4" />
</svg>

Before

Width:  |  Height:  |  Size: 343 B

View File

@ -1,16 +0,0 @@
<svg
viewBox="0 0 24 24"
width="24"
height="24"
xmlns="http://www.w3.org/2000/svg"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="12" cy="12" r="10" />
<line x1="8" y1="15" x2="16" y2="15" />
<line x1="9" y1="9" x2="9.01" y2="9" />
<line x1="15" y1="9" x2="15.01" y2="9" />
</svg>

Before

Width:  |  Height:  |  Size: 372 B

View File

@ -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="M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z" />
<path d="M13 13l6 6" />
</svg>

Before

Width:  |  Height:  |  Size: 290 B

View File

@ -1,15 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M9 18V5l12-2v13" />
<circle cx="6" cy="18" r="3" />
<circle cx="18" cy="16" r="3" />
<path d="M9 17H5a2 2 0 0 0-2 2 2 2 0 0 0 2 2h2a2 2 0 0 0 2-2zm12-2h-4a2 2 0 0 0-2 2 2 2 0 0 0 2 2h2a2 2 0 0 0 2-2z" />
<polyline points="9 17 9 5 21 3 21 15" />
</svg>

Before

Width:  |  Height:  |  Size: 308 B

After

Width:  |  Height:  |  Size: 373 B

View File

@ -9,12 +9,9 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M14.5 10c-.83 0-1.5-.67-1.5-1.5v-5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5z" />
<path d="M20.5 10H19V8.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z" />
<path d="M9.5 14c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5S8 21.33 8 20.5v-5c0-.83.67-1.5 1.5-1.5z" />
<path d="M3.5 14H5v1.5c0 .83-.67 1.5-1.5 1.5S2 16.33 2 15.5 2.67 14 3.5 14z" />
<path d="M14 14.5c0-.83.67-1.5 1.5-1.5h5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5h-5c-.83 0-1.5-.67-1.5-1.5z" />
<path d="M15.5 19H14v1.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z" />
<path d="M10 9.5C10 8.67 9.33 8 8.5 8h-5C2.67 8 2 8.67 2 9.5S2.67 11 3.5 11h5c.83 0 1.5-.67 1.5-1.5z" />
<path d="M8.5 5H10V3.5C10 2.67 9.33 2 8.5 2S7 2.67 7 3.5 7.67 5 8.5 5z" />
<path d="M22.08 9C19.81 1.41 16.54-.35 9 1.92S-.35 7.46 1.92 15 7.46 24.35 15 22.08 24.35 16.54 22.08 9z" />
<line x1="12.57" y1="5.99" x2="16.15" y2="16.39" />
<line x1="7.85" y1="7.61" x2="11.43" y2="18.01" />
<line x1="16.39" y1="7.85" x2="5.99" y2="11.43" />
<line x1="18.01" y1="12.57" x2="7.61" y2="16.15" />
</svg>

Before

Width:  |  Height:  |  Size: 974 B

After

Width:  |  Height:  |  Size: 533 B

View File

@ -1,16 +0,0 @@
<svg
viewBox="0 0 24 24"
width="24"
height="24"
xmlns="http://www.w3.org/2000/svg"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="12" cy="12" r="10" />
<path d="M8 14s1.5 2 4 2 4-2 4-2" />
<line x1="9" y1="9" x2="9.01" y2="9" />
<line x1="15" y1="9" x2="15.01" y2="9" />
</svg>

Before

Width:  |  Height:  |  Size: 369 B

View File

@ -1,15 +0,0 @@
<svg
viewBox="0 0 24 24"
width="24"
height="24"
xmlns="http://www.w3.org/2000/svg"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect x="3" y="3" width="18" height="18" rx="2" ry="2" />
<rect x="7" y="7" width="3" height="9" />
<rect x="14" y="7" width="3" height="5" />
</svg>

Before

Width:  |  Height:  |  Size: 357 B

4296
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,6 @@
"version": "0.0.0-development",
"description": "Simply beautiful open source icons",
"main": "dist/feather.js",
"unpkg": "dist/feather.min.js",
"files": [
"dist"
],
@ -42,17 +41,18 @@
"cheerio": "^1.0.0-rc.2",
"commitizen": "^2.9.6",
"cz-conventional-changelog": "^2.1.0",
"eslint": "^4.19.1",
"eslint": "^4.15.0",
"eslint-config-airbnb-base": "^12.1.0",
"eslint-config-prettier": "^2.9.0",
"eslint-plugin-import": "^2.5.0",
"eslint-plugin-prettier": "^2.5.0",
"html-minifier": "^3.5.8",
"husky": "^0.14.3",
"jest": "^22.4.4",
"jest": "^21.2.1",
"lint-staged": "^6.0.0",
"npm-run-all": "^4.1.2",
"prettier": "^1.8.2",
"rimraf": "^2.6.2",
"semantic-release": "^12.2.2",
"svgo": "^0.7.2",
"webpack": "^4.8.3",

View File

@ -22,7 +22,6 @@
"cloud-snow": ["weather", "blizzard"],
"cloud": ["weather"],
"codepen": ["logo"],
"coffee": ["drink", "cup", "mug", "tea", "cafe", "hot", "beverage"],
"command": ["keyboard", "cmd"],
"compass": ["navigation", "safari", "travel"],
"copy": ["clone", "duplicate"],
@ -54,7 +53,6 @@
"folder-minus": ["directory"],
"folder-plus": ["directory"],
"folder": ["directory"],
"frown": ["emoji", "face", "bad", "sad", "emotion"],
"gift": ["present", "box", "birthday", "party"],
"git-branch": ["code", "version control"],
"git-commit": ["code", "version control"],
@ -72,7 +70,6 @@
"image": ["picture"],
"inbox": ["email"],
"instagram": ["logo", "camera"],
"key": ["password", "login", "authentication"],
"life-bouy": ["help", "life ring", "support"],
"linkedin": ["logo"],
"lock": ["security", "password"],
@ -83,7 +80,6 @@
"map": ["location", "navigation", "travel"],
"maximize": ["fullscreen"],
"maximize-2": ["fullscreen", "arrows"],
"meh": ["emoji", "face", "neutral", "emotion"],
"menu": ["bars", "navigation", "hamburger"],
"message-circle": ["comment", "chat"],
"message-square": ["comment", "chat"],
@ -95,7 +91,6 @@
"moon": ["dark", "night"],
"more-horizontal": ["ellipsis"],
"more-vertical": ["ellipsis"],
"mouse-pointer": ["arrow", "cursor"],
"move": ["arrows"],
"navigation": ["location", "travel"],
"navigation-2": ["location", "travel"],
@ -115,7 +110,6 @@
"rewind": ["music"],
"rss": ["feed", "subscribe"],
"save": ["floppy disk"],
"search": ["find", "magnifier", "magnifying glass"],
"send": ["message", "mail", "paper airplane"],
"settings": ["cog", "edit", "gear", "preferences"],
"shield": ["security"],
@ -127,7 +121,6 @@
"skip-forward": ["music"],
"slash": ["ban", "no"],
"sliders": ["settings", "controls"],
"smile": ["emoji", "face", "happy", "good", "emotion"],
"speaker": ["music"],
"star": ["bookmark", "favorite", "like"],
"sun": ["brightness", "weather", "light"],

View File

@ -6,9 +6,6 @@ module.exports = {
path: path.resolve(__dirname, 'dist'),
libraryTarget: 'umd',
library: 'feather',
// Prevents webpack from referencing `window` in the UMD build
// Source: https://git.io/vppgU
globalObject: "typeof self !== 'undefined' ? self : this",
},
devtool: 'source-map',
module: {