/**
* ZeroShot EmptyState — placeholder for empty data states, search results, errors, etc.
* Every app needs one. ZeroShot ships it as a first-class component.
*
* @example Basic usage:
* ```tsx
* }
* title="No messages"
* description="You don't have any messages yet."
* />
* ```
*
* @example With action:
* ```tsx
* }
* title="No results found"
* description="Try adjusting your search or filters."
* action={{ label: "Clear filters", onClick: handleClear }}
* />
* ```
*/
import * as React from "react";
export interface EmptyStateAction {
/** Button label */
label: string;
/** Click handler */
onClick?: () => void;
/** Visual variant */
variant?: "default" | "outline" | "ghost";
}
export interface EmptyStateProps extends React.HTMLAttributes {
/**
* Icon displayed above the title. Defaults to an Inbox icon.
* @example icon={}
*/
icon?: React.ReactNode;
/**
* Title text.
* @example title="No results found"
*/
title: string;
/**
* Description text displayed below the title.
* @example description="Try adjusting your search filters."
*/
description?: string;
/**
* Config API: A single action button rendered below the description.
* @example action={{ label: "Create new", onClick: handleCreate }}
*/
action?: EmptyStateAction;
/**
* Additional content rendered below the action (or description if no action).
* Useful for custom CTAs, links, or illustrations.
*/
children?: React.ReactNode;
/**
* Visual size.
* @default "default"
*/
size?: "sm" | "default" | "lg";
}
export declare function EmptyState({ icon, title, description, action, children, size, className, ...props }: EmptyStateProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=empty-state.d.ts.map