saagie-ui
Version:
Saagie UI from Saagie Design System
67 lines (57 loc) • 1.39 kB
JavaScript
import React, { forwardRef } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
const propTypes = {
/**
* The Paper content.
*/
children: PropTypes.node,
/**
* The className property allows you to add more classes to the component.
*/
className: PropTypes.string,
/**
* The component default class.
*/
defaultClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
/**
* The Paper elevation. Accept string or number.
*/
elevation: PropTypes.oneOf([
100, 200, 300, 400, 500, 600,
'100', '200', '300', '400', '500', '600',
]),
/**
* The component used for the root node.
* Either a string to use a DOM element or a component.
*/
tag: PropTypes.elementType,
};
const defaultProps = {
children: '',
className: '',
defaultClassName: 'sui-a-paper',
elevation: 100,
tag: 'div',
};
export const Paper = forwardRef(({
children,
className,
defaultClassName,
elevation,
tag: Tag,
...props
}, ref) => {
const classes = classnames(
defaultClassName,
elevation ? `as--elevation-${elevation}` : '',
className,
);
return (
<Tag className={classes} ref={ref} data-testid={`paper-elevation-${elevation}`} {...props}>
{children}
</Tag>
);
});
Paper.propTypes = propTypes;
Paper.defaultProps = defaultProps;