import { type ComponentType, type ReactNode } from "react"; type SettingsTabIcon = ComponentType<{ className?: string; }>; /** * A single deep-link target inside settings that the settings search can jump * to. Entries usually map to a section within a tab (via a `hash`/anchor id), * making individual controls discoverable without hunting through every tab. */ export interface SettingsSearchEntry { /** Stable unique id for the entry. */ id: string; /** Primary label shown in the search results. */ label: string; /** Extra space-separated terms to match against (synonyms, provider names). */ keywords?: string; /** Optional secondary description shown under the label. */ description?: string; /** Tab to activate when the entry is picked. Defaults to the owning tab. */ tabId?: string; /** * Optional section id / DOM element id to open + scroll to after switching * tabs. Handled by the inner panels' own hash listeners. */ hash?: string; /** Optional icon override; defaults to the owning tab's icon. */ icon?: SettingsTabIcon; } export interface SettingsTabItem { id: string; label: string; icon?: SettingsTabIcon; content: ReactNode; /** Optional route for settings that live on a canonical page elsewhere. */ href?: string; /** Whether a parent surface may expose a personal/organization scope for this tab. */ scopeAware?: boolean; /** * Optional visual navigation group. Adjacent tabs with the same group render * together; a quiet divider separates each group on desktop while mobile * keeps the compact horizontal tab scroller unchanged. */ group?: string; /** Extra space-separated terms so this tab is findable via search. */ keywords?: string; /** Deep-link entries within this tab for the settings search. */ searchEntries?: SettingsSearchEntry[]; } export interface SettingsTabsPageProps { general: ReactNode; account?: ReactNode; team?: ReactNode; whatsNew?: ReactNode; extraTabs?: SettingsTabItem[]; generalLabel?: string; accountLabel?: string; teamLabel?: string; whatsNewLabel?: string; ariaLabel?: string; defaultTab?: string; className?: string; navClassName?: string; contentClassName?: string; /** Whether to render the settings search box. Defaults to true. */ enableSearch?: boolean; /** Placeholder for the settings search box. */ searchPlaceholder?: string; /** Extra global search entries (e.g. anchors within the General tab). */ searchEntries?: SettingsSearchEntry[]; /** Deep-link entries for the General tab. */ generalSearchEntries?: SettingsSearchEntry[]; /** * Controlled active tab id. When provided, the parent owns tab state (and is * responsible for URL/app-state sync). Recognized top-level tab hashes still * report through `onValueChange`, so shared links such as * `/settings#organization` can select the matching controlled Team tab. * Leave undefined for the default uncontrolled, hash-driven behavior. */ value?: string; /** * Called whenever the active tab changes via a tab click or a search result * selection. Fires in both controlled and uncontrolled modes. */ onValueChange?: (tabId: string) => void; } export declare function SettingsTabsPage({ general, account, team, whatsNew, extraTabs, generalLabel, accountLabel, teamLabel, whatsNewLabel, ariaLabel, defaultTab, className, navClassName, contentClassName, enableSearch, searchPlaceholder, searchEntries, generalSearchEntries, value, onValueChange, }: SettingsTabsPageProps): import("react").JSX.Element; export {}; //# sourceMappingURL=SettingsTabsPage.d.ts.map