braid-design-system
Version:
Themeable design system for the SEEK Group
45 lines (44 loc) • 1.03 kB
JavaScript
import { jsx } from "react/jsx-runtime";
import { useMemo, createContext, useContext } from "react";
const DefaultTextPropsContext = createContext({
tone: void 0,
weight: void 0,
size: void 0,
maxLines: void 0
});
const DefaultTextPropsProvider = ({
size,
weight,
tone,
maxLines,
children
}) => {
const defaultTextProps = useMemo(
() => ({
size,
weight,
tone,
maxLines
}),
[size, weight, tone, maxLines]
);
return /* @__PURE__ */ jsx(DefaultTextPropsContext.Provider, { value: defaultTextProps, children });
};
const useDefaultTextProps = ({
size: sizeProp,
weight: weightProp,
tone: toneProp,
maxLines: maxLinesProp
}) => {
const { size, weight, tone, maxLines } = useContext(DefaultTextPropsContext);
return {
size: sizeProp ?? size ?? "standard",
weight: weightProp ?? weight ?? "regular",
tone: toneProp ?? tone ?? "neutral",
maxLines: maxLinesProp ?? maxLines ?? void 0
};
};
export {
DefaultTextPropsProvider,
useDefaultTextProps
};