UNPKG

@crossed/ui

Version:

A universal & performant styling library for React Native, Next.js & React

53 lines (52 loc) 1.83 kB
import { jsx } from "react/jsx-runtime"; import { forwardRef, useContext, useEffect } from "react"; import { Text } from "../../typography/Text"; import { buttonContext } from "./context"; import { composeStyles } from "@crossed/styled"; import { buttonErrorStyles, buttonPrimaryStyles, buttonSecondaryStyles, buttonSuccessStyles, buttonTertiaryStyles, textStyles } from "./styles"; const ButtonText = forwardRef((props, ref) => { const { variant, state, disabled, setTextId, textId, size } = useContext(buttonContext); const { hover, active } = state || {}; useEffect(() => { if (props.id && textId !== props.id) { setTextId(props.id); } }, [props.id, textId, setTextId]); return /* @__PURE__ */ jsx( Text, { weight: size === "sm" ? "xs" : "lg", ...props, id: textId, style: composeStyles( textStyles.default, variant === "primary" && buttonPrimaryStyles.text, variant === "primary" && hover && buttonPrimaryStyles.textHover, variant === "primary" && active && buttonPrimaryStyles.textActive, variant === "secondary" && buttonSecondaryStyles.text, variant === "secondary" && hover && buttonSecondaryStyles.textHover, variant === "secondary" && active && buttonSecondaryStyles.text, variant === "tertiary" && buttonTertiaryStyles.text, variant === "tertiary" && hover && buttonTertiaryStyles.textHover, variant === "tertiary" && active && buttonTertiaryStyles.textActive, variant === "error" && buttonErrorStyles.text, variant === "success" && buttonSuccessStyles.text, disabled && textStyles.disabled, props.style ), ref } ); }); ButtonText.displayName = "Button.Text"; export { ButtonText }; //# sourceMappingURL=Text.js.map