// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import {useCallback, useMemo, useState, type ComponentProps} from 'react'; import type Tabs from './tabs'; import type {TabDefinition} from './types'; function useTabs(defaultTab: T, tabs: Array>, changeCallback?: (value: T) => void, testID?: string) { const [tab, setTab] = useState(defaultTab); const handleTabChange = useCallback((value: T) => { setTab(value); changeCallback?.(value); }, [changeCallback]); const tabsProps = useMemo>(() => ({ tabs, selectedTab: tab, onTabChange: handleTabChange, testID, }), [tabs, tab, handleTabChange, testID]); return [tab, tabsProps] as const; } export default useTabs;