From 93edfae53fbf7b8ba480ac7e9a292e17bb5b247a Mon Sep 17 00:00:00 2001 From: Alf Eaton <eaton.alf@gmail.com> Date: Thu, 31 Aug 2017 10:24:41 +0100 Subject: [PATCH] Add Icon, using react-feather closes #23 --- package.json | 2 ++ src/atoms/Icon.js | 17 +++++++++++++++++ src/atoms/Icon.md | 17 +++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 src/atoms/Icon.js create mode 100644 src/atoms/Icon.md diff --git a/package.json b/package.json index c19319137..ce70ed9d4 100644 --- a/package.json +++ b/package.json @@ -10,9 +10,11 @@ "jsnext:main": "src", "dependencies": { "classnames": "^2.2.5", + "humps": "^2.0.1", "prop-types": "^15.5.10", "react": "^15.6.1", "react-dom": "^15.6.1", + "react-feather": "^1.0.7", "react-redux": "^5.0.6", "react-router": "^3.0.5", "react-tag-autocomplete": "^5.4.1", diff --git a/src/atoms/Icon.js b/src/atoms/Icon.js new file mode 100644 index 000000000..6c3a37d89 --- /dev/null +++ b/src/atoms/Icon.js @@ -0,0 +1,17 @@ +import React from 'react' +import { pascalize } from 'humps' +import * as icons from 'react-feather' + +const Icon = ({ children, color = 'black', size = 24 }) => { + // convert `arrow_left` to `ArrowLeft` + const name = pascalize(children) + + // select the icon + const icon = icons[name] + + return ( + <span>{icon({ color, size })}</span> + ) +} + +export default Icon diff --git a/src/atoms/Icon.md b/src/atoms/Icon.md new file mode 100644 index 000000000..bbee05936 --- /dev/null +++ b/src/atoms/Icon.md @@ -0,0 +1,17 @@ +An icon, from the [Feather](https://feathericons.com/) icon set. + +```js +<Icon>arrow_right</Icon> +``` + +The color can be changed. + +```js +<Icon color="red">arrow_right</Icon> +``` + +The size can be changed. + +```js +<Icon size={48}>arrow_right</Icon> +``` -- GitLab