/**
* @license
* Copyright 2026 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import { type ClassInfo } from 'lit/directives/class-map.js';
/** Fab color configuration types. */
export type FabColor = 'primary' | 'primary-container' | 'secondary' | 'secondary-container' | 'tertiary' | 'tertiary-container';
/** Fab size configuration types. */
export type FabSize = 'default' | 'md' | 'lg';
/** Fab color configurations. */
export declare const FAB_COLORS: {
readonly primary: "primary";
readonly primaryContainer: "primary-container";
readonly secondary: "secondary";
readonly secondaryContainer: "secondary-container";
readonly tertiary: "tertiary";
readonly tertiaryContainer: "tertiary-container";
};
/** Fab size configurations. */
export declare const FAB_SIZES: {
readonly default: "default";
readonly md: "md";
readonly lg: "lg";
};
/** Fab classes. */
export declare const FAB_CLASSES: {
readonly fab: "fab";
readonly fabPrimary: "fab-primary";
readonly fabPrimaryContainer: "fab-primary-container";
readonly fabSecondary: "fab-secondary";
readonly fabSecondaryContainer: "fab-secondary-container";
readonly fabTertiary: "fab-tertiary";
readonly fabTertiaryContainer: "fab-tertiary-container";
readonly fabMd: "fab-md";
readonly fabLg: "fab-lg";
readonly hover: string;
readonly active: string;
};
/** The state provided to the `fabClasses()` function. */
export interface FabClassesState {
/** The color of the fab. */
color?: FabColor;
/** The size of the fab. */
size?: FabSize;
/** Emulates `:hover`. */
hover?: boolean;
/** Emulates `:active`. */
active?: boolean;
}
/**
* Returns the fab classes to apply to an element based on the given state.
*
* @param state The state of the fab.
* @return An object of class names and truthy values if they apply.
*/
export declare function fabClasses({ color, size, hover, active, }?: FabClassesState): ClassInfo;
/**
* Sets up fab functionality for the given element.
*
* @param fab The element on which to set up fab functionality.
* @param opts Setup options, supports a cleanup `signal`.
*/
export declare function setupFab(fab: HTMLElement, opts?: {
signal?: AbortSignal;
}): void;
/**
* A Lit directive that adds fab styling and functionality to its element.
*
* @example
* ```ts
* html`
*
*
*
* `;
* ```
*/
export declare const fab: (state?: FabClassesState & import("../shared/directives.js").AdditionalClasses) => import("lit-html/directive.js").DirectiveResult;