@alice-ui/react
Version:
41 lines (39 loc) • 1 kB
JavaScript
// src/button/icon-button.tsx
import { button } from "@alice-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 {
variant,
color,
size = "md",
radius,
disableAnimation,
className,
children,
...otherProps
} = props;
const styles = useMemo(
() => button({
isIconOnly: true,
size,
color,
variant,
radius,
disableAnimation,
className
}),
[className, color, disableAnimation, radius, size, variant]
);
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
};