Files
lucide/packages/lucide-react-native/src/createReactComponent.js
Wojciech Maj ecf61d304a Add lucide-react-native package (#687)
* Add `lucide-react-native` package

Closes #394

* minor fixes build config

* Add `lucide-react-native` package

Closes #394

* make it work

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2022-06-12 22:31:05 +02:00

42 lines
1.1 KiB
JavaScript

import { forwardRef, createElement } from 'react';
import PropTypes from 'prop-types';
import * as NativeSvg from 'react-native-svg';
import defaultAttributes from './defaultAttributes';
const createReactComponent = (iconName, iconNode) => {
const Component = forwardRef(
({ color = 'currentColor', size = 24, strokeWidth = 2, children, ...rest }, ref) =>
createElement(
NativeSvg.Svg,
{
ref,
...defaultAttributes,
width: size,
height: size,
stroke: color,
strokeWidth,
...rest,
},
[
...iconNode.map(([tag, attrs]) => {
const uppercasedTag = tag.charAt(0).toUpperCase() + tag.slice(1);
return createElement(NativeSvg[uppercasedTag], attrs);
}),
...(children || []),
],
),
);
Component.propTypes = {
color: PropTypes.string,
size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
strokeWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
};
Component.displayName = `${iconName}`;
return Component;
};
export default createReactComponent;