From 9bb6a8bcbe21fb9db1a3a705b783774cb11664db Mon Sep 17 00:00:00 2001 From: Daniel Almaguer Date: Tue, 2 Apr 2019 08:20:44 -0500 Subject: [PATCH] feat(component): icon components --- .../src/components/Icons/CheckIcon.tsx | 31 +++++++++++++++++++ .../src/components/Icons/DropdownIcon.tsx | 30 ++++++++++++++++++ .../src/components/Icons/ErrorIcon.tsx | 29 +++++++++++++++++ .../big-design/src/components/Icons/Icon.tsx | 23 ++++++++++++++ .../src/components/Icons/LoadingIcon.tsx | 25 +++++++++++++++ .../src/components/Icons/PlusIcon.tsx | 28 +++++++++++++++++ .../big-design/src/components/Icons/index.ts | 7 +++++ .../src/components/Icons/svg/check-icon.svg | 3 ++ .../components/Icons/svg/dropdown-icon.svg | 3 ++ .../src/components/Icons/svg/error-icon.svg | 5 +++ .../src/components/Icons/svg/loading-icon.svg | 3 ++ .../src/components/Icons/svg/plus-icon.svg | 3 ++ packages/big-design/src/components/index.ts | 1 + 13 files changed, 191 insertions(+) create mode 100644 packages/big-design/src/components/Icons/CheckIcon.tsx create mode 100644 packages/big-design/src/components/Icons/DropdownIcon.tsx create mode 100644 packages/big-design/src/components/Icons/ErrorIcon.tsx create mode 100644 packages/big-design/src/components/Icons/Icon.tsx create mode 100644 packages/big-design/src/components/Icons/LoadingIcon.tsx create mode 100644 packages/big-design/src/components/Icons/PlusIcon.tsx create mode 100644 packages/big-design/src/components/Icons/index.ts create mode 100644 packages/big-design/src/components/Icons/svg/check-icon.svg create mode 100644 packages/big-design/src/components/Icons/svg/dropdown-icon.svg create mode 100644 packages/big-design/src/components/Icons/svg/error-icon.svg create mode 100644 packages/big-design/src/components/Icons/svg/loading-icon.svg create mode 100644 packages/big-design/src/components/Icons/svg/plus-icon.svg diff --git a/packages/big-design/src/components/Icons/CheckIcon.tsx b/packages/big-design/src/components/Icons/CheckIcon.tsx new file mode 100644 index 000000000..e53480ba0 --- /dev/null +++ b/packages/big-design/src/components/Icons/CheckIcon.tsx @@ -0,0 +1,31 @@ +// ********************************** +// Auto-generated file, do NOT modify +// ********************************** +import React from 'react'; + +import { Icon } from './Icon'; + +export default class SvgCheckIcon extends Icon { + render() { + const { title, theme, ...rest } = this.props; + const size = this.getSize(); + const style = { + width: size, + height: size, + }; + const props = { ...rest, style }; + + return ( + + {title} + + + ); + } +} diff --git a/packages/big-design/src/components/Icons/DropdownIcon.tsx b/packages/big-design/src/components/Icons/DropdownIcon.tsx new file mode 100644 index 000000000..835da45d3 --- /dev/null +++ b/packages/big-design/src/components/Icons/DropdownIcon.tsx @@ -0,0 +1,30 @@ +// ********************************** +// Auto-generated file, do NOT modify +// ********************************** +import React from 'react'; + +import { Icon } from './Icon'; + +export default class SvgDropdownIcon extends Icon { + render() { + const { title, theme, ...rest } = this.props; + const size = this.getSize(); + const style = { + width: size, + height: size, + }; + const props = { ...rest, style }; + + return ( + + {title} + + + ); + } +} diff --git a/packages/big-design/src/components/Icons/ErrorIcon.tsx b/packages/big-design/src/components/Icons/ErrorIcon.tsx new file mode 100644 index 000000000..cc7692420 --- /dev/null +++ b/packages/big-design/src/components/Icons/ErrorIcon.tsx @@ -0,0 +1,29 @@ +// ********************************** +// Auto-generated file, do NOT modify +// ********************************** +import React from 'react'; + +import { Icon } from './Icon'; + +export default class SvgErrorIcon extends Icon { + render() { + const { title, theme, ...rest } = this.props; + const size = this.getSize(); + const style = { + width: size, + height: size, + }; + const props = { ...rest, style }; + + return ( + + {title} + + + + ); + } +} diff --git a/packages/big-design/src/components/Icons/Icon.tsx b/packages/big-design/src/components/Icons/Icon.tsx new file mode 100644 index 000000000..16360ea31 --- /dev/null +++ b/packages/big-design/src/components/Icons/Icon.tsx @@ -0,0 +1,23 @@ +import React from 'react'; + +import { defaultTheme, ThemeInterface } from '../../theme'; +import { Spacing } from '../../theme/system/spacing'; + +export interface IconProps extends React.SVGProps { + size: keyof Spacing; + theme?: ThemeInterface; + title?: string; +} + +export class Icon extends React.PureComponent { + static defaultProps: Partial = { + size: 'large', + }; + + protected getSize() { + const theme = this.props.theme || defaultTheme; + const { spacing } = theme; + + return spacing[this.props.size]; + } +} diff --git a/packages/big-design/src/components/Icons/LoadingIcon.tsx b/packages/big-design/src/components/Icons/LoadingIcon.tsx new file mode 100644 index 000000000..278eceda9 --- /dev/null +++ b/packages/big-design/src/components/Icons/LoadingIcon.tsx @@ -0,0 +1,25 @@ +// ********************************** +// Auto-generated file, do NOT modify +// ********************************** +import React from 'react'; + +import { Icon } from './Icon'; + +export default class SvgLoadingIcon extends Icon { + render() { + const { title, theme, ...rest } = this.props; + const size = this.getSize(); + const style = { + width: size, + height: size, + }; + const props = { ...rest, style }; + + return ( + + {title} + + + ); + } +} diff --git a/packages/big-design/src/components/Icons/PlusIcon.tsx b/packages/big-design/src/components/Icons/PlusIcon.tsx new file mode 100644 index 000000000..03d8f54f9 --- /dev/null +++ b/packages/big-design/src/components/Icons/PlusIcon.tsx @@ -0,0 +1,28 @@ +// ********************************** +// Auto-generated file, do NOT modify +// ********************************** +import React from 'react'; + +import { Icon } from './Icon'; + +export default class SvgPlusIcon extends Icon { + render() { + const { title, theme, ...rest } = this.props; + const size = this.getSize(); + const style = { + width: size, + height: size, + }; + const props = { ...rest, style }; + + return ( + + {title} + + + ); + } +} diff --git a/packages/big-design/src/components/Icons/index.ts b/packages/big-design/src/components/Icons/index.ts new file mode 100644 index 000000000..4cf8099af --- /dev/null +++ b/packages/big-design/src/components/Icons/index.ts @@ -0,0 +1,7 @@ +export * from './Icon'; + +export { default as CheckIcon } from './CheckIcon'; +export { default as DropdownIcon } from './DropdownIcon'; +export { default as ErrorIcon } from './ErrorIcon'; +export { default as LoadingIcon } from './LoadingIcon'; +export { default as PlusIcon } from './PlusIcon'; diff --git a/packages/big-design/src/components/Icons/svg/check-icon.svg b/packages/big-design/src/components/Icons/svg/check-icon.svg new file mode 100644 index 000000000..1dcf3583a --- /dev/null +++ b/packages/big-design/src/components/Icons/svg/check-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/big-design/src/components/Icons/svg/dropdown-icon.svg b/packages/big-design/src/components/Icons/svg/dropdown-icon.svg new file mode 100644 index 000000000..ab2f26071 --- /dev/null +++ b/packages/big-design/src/components/Icons/svg/dropdown-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/big-design/src/components/Icons/svg/error-icon.svg b/packages/big-design/src/components/Icons/svg/error-icon.svg new file mode 100644 index 000000000..ef5ea2570 --- /dev/null +++ b/packages/big-design/src/components/Icons/svg/error-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/big-design/src/components/Icons/svg/loading-icon.svg b/packages/big-design/src/components/Icons/svg/loading-icon.svg new file mode 100644 index 000000000..d40c6d851 --- /dev/null +++ b/packages/big-design/src/components/Icons/svg/loading-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/big-design/src/components/Icons/svg/plus-icon.svg b/packages/big-design/src/components/Icons/svg/plus-icon.svg new file mode 100644 index 000000000..e5d1abec3 --- /dev/null +++ b/packages/big-design/src/components/Icons/svg/plus-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/big-design/src/components/index.ts b/packages/big-design/src/components/index.ts index 468f97e1b..77fd6e7f8 100644 --- a/packages/big-design/src/components/index.ts +++ b/packages/big-design/src/components/index.ts @@ -2,4 +2,5 @@ export * from './Box'; export * from './Flex'; export * from './GlobalStyle'; export * from './Grid'; +export * from './Icons'; export * from './Typography';