UNPKG

@teamsparta/stack-button

Version:
79 lines (75 loc) 2.39 kB
"use client"; import { addonCss, buttonBaseCss, buttonIconSizeCss, buttonTextCss, textButtonColorVariants } from "./chunk-4TYBVGIV.mjs"; import { __objRest, __spreadProps, __spreadValues } from "./chunk-FUJQIYOF.mjs"; // src/TextButton/TextButton.tsx import { mapResponsive, useBreakpointContext } from "@teamsparta/stack-core"; import { vars } from "@teamsparta/stack-tokens"; import { cloneElement, forwardRef, isValidElement } from "react"; import { jsx, jsxs } from "@emotion/react/jsx-runtime"; var TextButton = forwardRef( function _TextButton(_a, ref) { var _b = _a, { variant = "default", size: sizeFromProps = "md", style: styleFromProps, leftAddon, rightAddon, children } = _b, restProps = __objRest(_b, [ "variant", "size", "style", "leftAddon", "rightAddon", "children" ]); var _a2, _b2, _c, _d, _e, _f; const breakpoints = useBreakpointContext("TextButton"); const sizes = mapResponsive( breakpoints, sizeFromProps, (breakpoint, size) => ({ breakpoint, size }) ); const style = __spreadValues(__spreadValues({}, textButtonColorVariants[variant]), styleFromProps); const buttonContainerCss = [ buttonBaseCss, buttonIconSizeCss(sizes), buttonTextCss(sizes) ]; const color = variant === "link" ? vars.blue[70] : vars.neutral[50]; const enhancedLeftIcon = isValidElement(leftAddon) ? cloneElement(leftAddon, __spreadProps(__spreadValues({}, (_a2 = leftAddon.props) != null ? _a2 : {}), { color: (_c = (_b2 = leftAddon.props) == null ? void 0 : _b2.color) != null ? _c : color })) : leftAddon; const enhancedRightIcon = isValidElement(rightAddon) ? cloneElement(rightAddon, __spreadProps(__spreadValues({}, (_d = rightAddon.props) != null ? _d : {}), { color: (_f = (_e = rightAddon.props) == null ? void 0 : _e.color) != null ? _f : color })) : rightAddon; return /* @__PURE__ */ jsxs("button", __spreadProps(__spreadValues({ ref, style, css: buttonContainerCss }, restProps), { children: [ leftAddon && /* @__PURE__ */ jsx("span", { css: addonCss, children: enhancedLeftIcon }), children, rightAddon && /* @__PURE__ */ jsx("span", { css: addonCss, children: enhancedRightIcon }) ] })); } ); export { TextButton };