@crossed/ui
Version:
A universal & performant styling library for React Native, Next.js & React
53 lines (52 loc) • 1.8 kB
JavaScript
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 } = 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: "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