braid-design-system
Version:
Themeable design system for the SEEK Group
36 lines (35 loc) • 1.6 kB
JavaScript
;
const assert = require("assert");
const clsx = require("clsx");
const react = require("react");
const lib_css_atoms_atoms_cjs = require("../../css/atoms/atoms.cjs");
const lib_components_Heading_HeadingContext_cjs = require("../Heading/HeadingContext.cjs");
const lib_components_Text_TextContext_cjs = require("../Text/TextContext.cjs");
const lib_hooks_useIcon_icon_css_cjs = require("../../hooks/useIcon/icon.css.cjs");
const _interopDefaultCompat = (e) => e && typeof e === "object" && "default" in e ? e : { default: e };
const assert__default = /* @__PURE__ */ _interopDefaultCompat(assert);
const clsx__default = /* @__PURE__ */ _interopDefaultCompat(clsx);
const iconInlineSize = ({
alignY = "uppercase",
verticalCorrection = "none"
} = {}) => clsx__default.default(
lib_css_atoms_atoms_cjs.atoms({
display: "inlineBlock",
position: "relative"
}),
lib_hooks_useIcon_icon_css_cjs.size,
lib_hooks_useIcon_icon_css_cjs.inlineCrop,
lib_hooks_useIcon_icon_css_cjs.inline,
lib_hooks_useIcon_icon_css_cjs.alignY[alignY][verticalCorrection]
);
const IconRenderer = ({ children }) => {
const textContext = react.useContext(lib_components_Text_TextContext_cjs.TextContext);
const headingContext = react.useContext(lib_components_Heading_HeadingContext_cjs.HeadingContext);
assert__default.default(
Boolean(textContext || headingContext),
`IconRenderer must be inside either a \`Text\` or \`Heading\` component.`
);
return children({ className: iconInlineSize() });
};
exports.IconRenderer = IconRenderer;
exports.iconInlineSize = iconInlineSize;