import React from 'react';
import {createContainer} from '@workday/canvas-kit-react/common';
import {SegmentedControlItem} from './SegmentedControlItem';
import {SegmentedControlList} from './SegmentedControlList';
import {useSegmentedControlModel} from './hooks/useSegmentedControlModel';
export interface SegmentedControlProps {
children: React.ReactNode;
}
/**
* `SegmentedControl` is a container component that is responsible for creating a
* {@link SegmentedControlModel} and sharing it with its subcomponents using React context. It does
* not represent a real element.
*
* ```tsx
* {Child components}
* ```
*
* Alternatively, you may pass in a model using the [hoisted model
* pattern](/getting-started/for-developers/resources/compound-components/#configuring-a-model).
*
* ```tsx
* const model = useSegmentedControlModel({
* items: [],
* });
*
* {Child components}
* ```
*/
export const SegmentedControl = createContainer()({
displayName: 'SegmentedControl',
modelHook: useSegmentedControlModel,
subComponents: {
/**
* `SegmentedControl.List` renders {@link Grid} under the hood. It is a container for
* {@link SegmentedControlItem SegmentedControl.Item} subcomponents.
*
* ```tsx
* {SegmentedControl.Items}
* ```
*/
List: SegmentedControlList,
/**
* `SegmentedControl.Item` is a `button` element built on `BaseButton`. `SegmentedControl.Item`
* has a `data-id` prop to handle `onSelect` properly.
*
* ```tsx
* Table
* ```
*/
Item: SegmentedControlItem,
},
})(({children}) => {
return <>{children}>;
});