@carbon/react
Version:
React components for the Carbon Design System
134 lines (123 loc) • 4.67 kB
JavaScript
/**
* Copyright IBM Corp. 2016, 2023
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
var cx = require('classnames');
var PropTypes = require('prop-types');
var React = require('react');
var usePrefix = require('../../internal/usePrefix.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
const sizes = ['xs', 'sm', 'md', 'lg', 'xl', '2xl'];
const densities = ['condensed', 'normal'];
/**
* Density of components within this layout
*/
/**
* Size of components within this layout
*/
const Layout = /*#__PURE__*/React__default["default"].forwardRef(function Layout({
as: BaseComponent = 'div',
children,
className,
density,
size,
...rest
}, forwardRef) {
const prefix = usePrefix.usePrefix();
const classes = cx__default["default"](className, `${prefix}--layout`, {
[`${prefix}--layout--size-${size}`]: size && sizes.includes(size),
[`${prefix}--layout--density-${density}`]: density && densities.includes(density)
});
return /*#__PURE__*/React__default["default"].createElement(BaseComponent, _rollupPluginBabelHelpers["extends"]({}, rest, {
ref: forwardRef,
className: classes
}), children);
});
Layout.propTypes = {
/**
* Specify a custom component or element to be rendered as the top-level
* element in the component
*/
as: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].string, PropTypes__default["default"].elementType]),
/**
* Provide child elements to be rendered inside of `Layout`
*/
children: PropTypes__default["default"].node,
/**
* Provide a custom class name to be used on the outermost element rendered by
* the component
*/
className: PropTypes__default["default"].string,
/**
* Specify the desired density of components within this layout
*/
density: PropTypes__default["default"].oneOf(densities),
/**
* Specify the desired size of components within this layout
*/
size: PropTypes__default["default"].oneOf(sizes)
};
const LayoutConstraint = /*#__PURE__*/React__default["default"].forwardRef(function Layout({
as: BaseComponent = 'div',
children,
className,
density,
size,
...rest
}, forwardRef) {
const prefix = usePrefix.usePrefix();
const classes = cx__default["default"](className, Object.entries({
size,
density
}).map(([group, constraints]) => ({
[`${prefix}--layout-constraint--${group}__default-${constraints?.default}`]: constraints?.default,
[`${prefix}--layout-constraint--${group}__min-${constraints?.min}`]: constraints?.min,
[`${prefix}--layout-constraint--${group}__max-${constraints?.max}`]: constraints?.max
})));
return /*#__PURE__*/React__default["default"].createElement(BaseComponent, _rollupPluginBabelHelpers["extends"]({}, rest, {
ref: forwardRef,
className: classes
}), children);
});
LayoutConstraint.propTypes = {
/**
* Specify a custom component or element to be rendered as the top-level
* element in the component
*/
as: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].string, PropTypes__default["default"].elementType]),
/**
* Provide child elements to be rendered inside of `LayoutConstraint`
*/
children: PropTypes__default["default"].node,
/**
* Provide a custom class name to be used on the outermost element rendered by
* the component
*/
className: PropTypes__default["default"].string,
/**
* Specify the desired layout density constraints of this element's children
*/
density: PropTypes__default["default"].shape({
min: PropTypes__default["default"].oneOf(densities),
default: PropTypes__default["default"].oneOf(densities),
max: PropTypes__default["default"].oneOf(densities)
}),
/**
* Specify the desired layout size constraints of this element's children
*/
size: PropTypes__default["default"].shape({
min: PropTypes__default["default"].oneOf(sizes),
default: PropTypes__default["default"].oneOf(sizes),
max: PropTypes__default["default"].oneOf(sizes)
})
};
exports.Layout = Layout;
exports.LayoutConstraint = LayoutConstraint;