UNPKG

braid-design-system

Version:
34 lines (33 loc) 973 B
import assert from "assert"; import clsx from "clsx"; import { useContext } from "react"; import { atoms } from "../../css/atoms/atoms.mjs"; import { HeadingContext } from "../Heading/HeadingContext.mjs"; import { TextContext } from "../Text/TextContext.mjs"; import { size, inlineCrop, inline, alignY } from "../../hooks/useIcon/icon.css.mjs"; const iconInlineSize = ({ alignY: alignY$1 = "uppercase", verticalCorrection = "none" } = {}) => clsx( atoms({ display: "inlineBlock", position: "relative" }), size, inlineCrop, inline, alignY[alignY$1][verticalCorrection] ); const IconRenderer = ({ children }) => { const textContext = useContext(TextContext); const headingContext = useContext(HeadingContext); assert( Boolean(textContext || headingContext), `IconRenderer must be inside either a \`Text\` or \`Heading\` component.` ); return children({ className: iconInlineSize() }); }; export { IconRenderer, iconInlineSize };