UNPKG

@ariakit/react-core

Version:

Ariakit React core

48 lines (45 loc) 1.1 kB
"use client"; import { useCommand } from "./WJ7PHYH7.js"; import { createElement, createHook, forwardRef } from "./ILRXHV7V.js"; import { useMergeRefs, useTagName } from "./K2XTQB3X.js"; // src/button/button.tsx import { isButton } from "@ariakit/core/utils/dom"; import { useEffect, useRef, useState } from "react"; var TagName = "button"; var useButton = createHook( function useButton2(props) { const ref = useRef(null); const tagName = useTagName(ref, TagName); const [isNativeButton, setIsNativeButton] = useState( () => !!tagName && isButton({ tagName, type: props.type }) ); useEffect(() => { if (!ref.current) return; setIsNativeButton(isButton(ref.current)); }, []); props = { role: !isNativeButton && tagName !== "a" ? "button" : void 0, ...props, ref: useMergeRefs(ref, props.ref) }; props = useCommand(props); return props; } ); var Button = forwardRef(function Button2(props) { const htmlProps = useButton(props); return createElement(TagName, htmlProps); }); export { useButton, Button };