UNPKG

braid-design-system

Version:
63 lines (62 loc) 1.81 kB
"use strict"; const jsxRuntime = require("react/jsx-runtime"); const react = require("react"); const lib_components_Box_Box_cjs = require("../Box/Box.cjs"); const lib_components_TextLink_TextLink_cjs = require("../TextLink/TextLink.cjs"); const lib_components_private_buildDataAttributes_cjs = require("../private/buildDataAttributes.cjs"); const noop = () => { }; const TextLinkButton = ({ weight, hitArea, id, onClick = noop, data, children, "aria-controls": ariaControls, "aria-expanded": ariaExpanded, "aria-describedby": ariaDescribedBy, "aria-label": ariaLabel, tabIndex, icon, iconPosition, ...restProps }) => { const buttonRef = react.useRef(null); const classes = lib_components_TextLink_TextLink_cjs.useLinkStyles({ reset: false, weight, hitArea }); const handleKeyboard = react.useCallback( (event) => { var _a; if (event.key === "Enter" || event.key === " ") { event.preventDefault(); (_a = buttonRef.current) == null ? void 0 : _a.click(); } }, [buttonRef] ); return /* @__PURE__ */ jsxRuntime.jsx( lib_components_Box_Box_cjs.Box, { ref: buttonRef, role: "button", tabIndex: tabIndex ?? 0, component: "span", outline: "focus", onClick, onKeyDown: handleKeyboard, "aria-controls": ariaControls, "aria-expanded": ariaExpanded, "aria-describedby": ariaDescribedBy, "aria-label": ariaLabel, id, className: classes, ...lib_components_private_buildDataAttributes_cjs.buildDataAttributes({ data, validateRestProps: restProps }), children: /* @__PURE__ */ jsxRuntime.jsx(lib_components_TextLink_TextLink_cjs.TextLinkContent, { icon, iconPosition, children }) } ); }; exports.TextLinkButton = TextLinkButton;