import React from 'react'; import {createContainer} from '@workday/canvas-kit-react/common'; import {Menu} from '@workday/canvas-kit-react/menu'; import {TabsItem} from './TabsItem'; import {TabsList} from './TabsList'; import {TabsMenuPopper} from './TabsMenuPopper'; import {TabsOverflowButton} from './TabsOverflowButton'; import {TabsPanel} from './TabsPanel'; import {TabsPanels} from './TabsPanels'; import {useTabsModel} from './useTabsModel'; // use `T = any` here because there's no way to pass generics to a compound component... export interface TabsProps { /** * The contents of the Tabs. Can be `Tabs` children or any valid elements. */ children: React.ReactNode; } /** * `Tabs` is a container component that is responsible for creating a {@link TabsModel} and sharing * it with its subcomponents using React context. It does not represent a real element. * * ```tsx * console.log('Selected tab', data.id)}> * {child components} * * ``` * * Alternatively, you may pass in a model using the hoisted model pattern. * * ```tsx * const model = useTabsModel({ * onSelect(data) { * console.log('Activated Tab', data.id); * }, * }); * * {child components} * ``` * * See [Configuring a * Model](/get-started/for-developers/documentation/compound-components/#configuring-a-model) for * more information on model configuration. */ export const Tabs = createContainer()({ displayName: 'Tabs', modelHook: useTabsModel, subComponents: { /** * `Tabs.List` is a `
` element. It is a container for {@link TabsItem Tabs.Item} * subcomponents. * * ```tsx * {Tabs.Items} * ``` */ List: TabsList, /** * `Tabs.Item` is a `