UNPKG

@stratakit/react

Version:

A React component library for StrataKit

68 lines (67 loc) 1.63 kB
import { jsx, jsxs } from "react/jsx-runtime"; import * as React from "react"; import { Button as SkButton } from "@stratakit/bricks"; import { Icon } from "@stratakit/foundations"; import { useCompatProps } from "./~utils.js"; const Button = React.forwardRef((props, forwardedRef) => { const { children, styleType = "default", startIcon, endIcon, startIconProps, endIconProps, htmlDisabled, // biome-ignore-start lint/correctness/noUnusedVariables: NOT IMPLEMENTED size, labelProps, stretched, loading, // biome-ignore-end lint/correctness/noUnusedVariables: NOT IMPLEMENTED ...rest } = useCompatProps(props); const variantAndTone = React.useMemo(() => { switch (styleType) { case "borderless": return { variant: "ghost" }; case "high-visibility": case "cta": return { variant: "solid", tone: "accent" }; } return { variant: "solid" }; }, [styleType]); const accessibleWhenDisabled = !htmlDisabled; return /* @__PURE__ */ jsxs( SkButton, { ...rest, accessibleWhenDisabled, disabled: props.disabled || htmlDisabled, ref: forwardedRef, ...variantAndTone, children: [ startIcon ? /* @__PURE__ */ jsx( Icon, { render: startIcon, ...startIconProps } ) : null, children, endIcon ? /* @__PURE__ */ jsx( Icon, { render: endIcon, ...endIconProps } ) : null ] } ); }); export { Button };