@carbon/react
Version:
React components for the Carbon Design System
72 lines (70 loc) • 2.63 kB
JavaScript
/**
* Copyright IBM Corp. 2016, 2026
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
const require_usePrefix = require("../../internal/usePrefix.js");
const require_LayerContext = require("./LayerContext.js");
const require_LayerLevel = require("./LayerLevel.js");
const require_clamp = require("../../internal/clamp.js");
let classnames = require("classnames");
classnames = require_runtime.__toESM(classnames);
let react = require("react");
react = require_runtime.__toESM(react);
let prop_types = require("prop-types");
prop_types = require_runtime.__toESM(prop_types);
let react_jsx_runtime = require("react/jsx-runtime");
//#region src/components/Layer/index.tsx
/**
* Copyright IBM Corp. 2016, 2025
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* A custom hook that will return information about the current layer. A common
* field to pull from this is the `level` for the layer that the component that
* calls this hook is currently in
*/
function useLayer() {
return { level: react.default.useContext(require_LayerContext.LayerContext) };
}
const Layer = react.default.forwardRef((props, ref) => {
const { as, className: customClassName, children, level: overrideLevel, withBackground = false, ...rest } = props;
const contextLevel = react.default.useContext(require_LayerContext.LayerContext);
const level = overrideLevel ?? contextLevel;
const prefix = require_usePrefix.usePrefix();
const className = (0, classnames.default)(`${prefix}--layer-${require_LayerLevel.levels[level]}`, { [`${prefix}--layer__with-background`]: withBackground }, customClassName);
const value = require_clamp.clamp(level + 1, require_LayerLevel.MIN_LEVEL, require_LayerLevel.MAX_LEVEL);
const BaseComponent = as || "div";
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_LayerContext.LayerContext.Provider, {
value,
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BaseComponent, {
ref,
...rest,
className,
children
})
});
});
Layer.displayName = "Layer";
Layer.propTypes = {
as: prop_types.default.oneOfType([
prop_types.default.func,
prop_types.default.string,
prop_types.default.elementType
]),
children: prop_types.default.node,
className: prop_types.default.string,
level: prop_types.default.oneOf([
0,
1,
2
]),
withBackground: prop_types.default.bool
};
//#endregion
exports.Layer = Layer;
exports.useLayer = useLayer;