Skip to content

Tab Manager

Logic-only tab renderer with imperative API through a ref.

interface TabManagerProps {
tabs: TabDef[];
initialKey?: string;
onTabChange?: (tab: string) => any;
}
interface TabDef {
key: string;
render?: (api: { setActive: (key: string, id?: string) => void }) => React.ReactNode;
}
interface TabManagerHandle {
setActiveTab: (key: string, id?: string) => void;
getActiveTab: () => string;
}

Helper:

goToTab(ref, "settings");
const ref = useRef<TabManagerHandle>(null);
<TabManager
ref={ref}
tabs={tabs}
initialKey="overview"
onTabChange={(key) => console.log(key)}
/>;