@stratakit/react
Version:
A React component library for StrataKit
68 lines (67 loc) • 1.63 kB
JavaScript
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
};