import { type AnchorHTMLAttributes, type ButtonHTMLAttributes, type ReactElement, type ReactNode } from "react";
import { type ComponentWithRippleProps } from "../interaction/types.js";
import { type CustomLinkComponent } from "../link/Link.js";
import { type BaseTabClassNameOptions } from "./tabStyles.js";
/**
* @since 6.0.0
*/
export interface BaseTabProps extends ComponentWithRippleProps, BaseTabClassNameOptions {
/**
* Set this to `true` if the tab is currently active.
*
* This is normally provided by the {@link useTabs} hook.
*/
active: boolean;
/**
* An optional icon to render with the with the {@link children}. The default
* behavior will render this icon before the children.
*
* @see {@link iconAfter}
* @see {@link stacked}
*/
icon?: ReactNode;
/**
* Set this to `true` to render the {@link icon} after the {@link children}.
*
* @defaultValue `false`
*/
iconAfter?: boolean;
}
/**
* @since 6.0.0
*/
export interface TabButtonProps extends BaseTabProps, ButtonHTMLAttributes {
as?: "button";
}
/**
* @since 6.0.0
*/
export interface TabLinkProps extends BaseTabProps, AnchorHTMLAttributes {
as: CustomLinkComponent;
}
/**
* @since 6.0.0
*/
export type TabProps = TabButtonProps | TabLinkProps;
/**
* **Client Component**
*
* This component should usually be used with the `TabsList` component and
* `useTabs` hook.
*
* @see {@link https://react-md.dev/components/tabs | Tabs Demos}
* @see {@link useTabs}
* @since 6.0.0
*/
export declare function Tab(props: TabProps): ReactElement;