UNPKG

@trail-ui/react

Version:
30 lines (28 loc) 923 B
// 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 };