import { RadiantElement } from '@ecopages/radiant'; import type { EventEmitter } from '@ecopages/radiant/tools/event-emitter'; export type RuiTabsVariant = 'ghost' | 'boxed'; export type RuiTabsProps = { /** Visual treatment. `boxed` wraps tabs in a bordered card; `ghost` is underline-only. Default: `boxed`. */ variant?: RuiTabsVariant; /** Selected tab id (matches `RuiTab` / `RuiTabPanel` `id`). Defaults to the first tab. */ value?: string; /** * Accessible name for the tab list when `RuiTabList` has no `aria-label`. * Prefer `aria-label` on `RuiTabList`. */ label?: string; /** * When `true` (default), focusing a tab activates it (automatic activation). * When `false`, Space/Enter activate the focused tab (manual activation). */ automatic?: boolean; }; export type RuiTabsChangeDetail = { value: string; }; /** * `` — layered sections of content with one visible panel at a time. * * Compose with `RuiTabList`, `RuiTab`, `RuiTabPanels`, and `RuiTabPanel`, or author * matching `[role="tablist"]`, `[role="tab"]`, and `[role="tabpanel"]` markup directly. * * @remarks * Re-syncs when light-DOM children are replaced (e.g. a parent host re-renders the * tab list). Observes `childList` only so attribute updates from sync itself do not loop. * * @see https://www.w3.org/WAI/ARIA/apg/patterns/tabs/ * * @element rui-tabs * @slot - `RuiTabList` and `RuiTabPanels` (or matching tablist / tabpanel markup). * @fires rui-change - Emitted when the selected tab changes. */ export declare class RuiTabs extends RadiantElement { variant: RuiTabsVariant; value: string; label: string; automatic: boolean; changeEvent: EventEmitter; private childObserver; connectedCallback(): void; protected onConnected(): void; disconnectedCallback(): void; onPropsUpdated(): void; /** Re-applies tablist labeling and selected/hidden state from the current `value`. */ resync(): void; private getTabs; private getPanels; private getTabValue; private syncTablistLabel; private syncSelection; private activateTab; onTabClick(event: Event): void; onTabKeydown(event: KeyboardEvent): void; }