UNPKG

@alice-ui/react

Version:
41 lines (39 loc) 1 kB
// 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 };