/** * External dependencies */ import { Button as AriakitButton } from '@ariakit/react'; import { forwardRef } from '@wordpress/element'; import clsx from 'clsx'; import type { ForwardedRef } from 'react'; import type { ButtonProps as AriakitButtonProps } from '@ariakit/react'; import deprecated from '@wordpress/deprecated'; /** * Internal dependencies */ import './style.scss'; import Spinner from '../../../../../packages/components/spinner'; type WCButtonProps = AriakitButtonProps & { children?: React.ReactNode }; export interface ButtonProps extends WCButtonProps { /** * Deprecated: Show a spinner. Preferably, * render a spinner in the button children * instead. * * @default false */ showSpinner?: boolean | undefined; /** * Button variant * * @default 'contained' */ variant?: 'text' | 'contained' | 'outlined'; /** * By default we render a wrapper around the button children, * but you can opt in to removing it by setting removeTextWrap * to true. * * @default false */ removeTextWrap?: boolean; } interface LinkProps extends ButtonProps { /** * Button href */ href: string; } /** * Component that visually renders a button but semantically might be `