import { TemplateResult } from 'lit-html';
/**
* Event detail for tab change events
*/
interface TabChangeEventDetail {
/** The index of the active tab */
index: number;
/** The tab id */
id: string;
/** The original event */
event: Event;
}
/**
* Panel component - visual container with optional tabs and header actions.
*
* Use this component when you want the panel UI without state management,
* or wrap it around `` for full functionality.
*
* @tag ease-panel
*
* @slot headline - Panel title text (hidden when tabs are present)
* @slot actions - Header action buttons, links, or dropdowns
* @slot - Default slot for main content
* @slot tab-{id} - Tab panel content (use `data-tab-label` for display name)
* @slot footer - Footer content below all panels
*
* @csspart section - Outer container
* @csspart header - Header row containing headline/tabs and actions
* @csspart headline - Title element
* @csspart tabs - Tab button container
* @csspart tab - Individual tab button
* @csspart actions - Actions container
* @csspart content - Content wrapper (handles height animations)
* @csspart body - Inner body container
* @csspart items - Grid container for slotted content
* @csspart tab-panel - Individual tab panel
* @csspart footer - Footer container
*
* @fires tab-change - Fired when the active tab changes
*/
declare class Panel extends HTMLElement {
#private;
requestRender: () => void;
accessor activeTab: number;
accessor headline: string | null;
accessor maxHeight: string | null;
/** @internal */
handleActiveTabChange(previous: number, next: number): void;
accessor contentElement: HTMLElement | null;
accessor bodyElement: HTMLElement | null;
/**
* Get the tab configuration
*/
get tabs(): ReadonlyArray<{
id: string;
label: string;
}>;
/**
* Switch to a specific tab by index
* @param index - The tab index (0-based)
*/
setTab(index: number): void;
connectedCallback(): void;
afterRender(): void;
render(): TemplateResult;
performTabAnimation(fromIndex: number, toIndex: number): Promise;
onFooterSlotChange(): void;
onDefaultSlotChange(): void;
private updateFooterAttribute;
}
export { Panel as P, type TabChangeEventDetail as T };