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 `