@trail-ui/react
Version:
30 lines (28 loc) • 923 B
JavaScript
// src/button/icon-button.tsx
import { button } from "@trail-ui/theme";
import { cloneElement, forwardRef, isValidElement, useMemo } from "react";
import { Button as AriaButton } from "react-aria-components";
import { jsx } from "react/jsx-runtime";
function IconButton(props, ref) {
const { appearance, spacing, disableAnimation, className, children, ...otherProps } = props;
const styles = useMemo(
() => button({
isIconOnly: true,
appearance,
spacing,
disableAnimation,
className
}),
[className, disableAnimation, appearance, spacing]
);
const element = children;
const _children = isValidElement(element) ? cloneElement(element, {
"aria-hidden": true,
focusable: false
}) : null;
return /* @__PURE__ */ jsx(AriaButton, { ref, className: styles, ...otherProps, children: _children });
}
var _IconButton = forwardRef(IconButton);
export {
_IconButton
};