diff --git a/examples/bpk-component-segmented-control/examples.tsx b/examples/bpk-component-segmented-control/examples.tsx index da0d191a7d..8f55b37563 100644 --- a/examples/bpk-component-segmented-control/examples.tsx +++ b/examples/bpk-component-segmented-control/examples.tsx @@ -16,13 +16,18 @@ * limitations under the License. */ +import { useState } from 'react'; + import { canvasContrastDay, surfaceContrastDay, } from '@skyscanner/bpk-foundations-web/tokens/base.es6'; -import BpkSegmentedControl from '../../packages/bpk-component-segmented-control'; +import BpkSegmentedControl, { + useSegmentedControlPanels, +} from '../../packages/bpk-component-segmented-control'; import { SEGMENT_TYPES } from '../../packages/bpk-component-segmented-control/src/BpkSegmentedControl'; +import BpkText from '../../packages/bpk-component-text'; import { cssModules } from '../../packages/bpk-react-utils'; // @ts-expect-error Untyped import. See `decisions/imports-ts-suppressions.md`. import { BpkDarkExampleWrapper } from '../bpk-storybook-utils'; @@ -276,6 +281,89 @@ const VisualExample = () => ( > ); +// Example demonstrating the recommended hook pattern for managing tabs and panels. +// The hook automatically handles ID generation and ARIA relationships. +const WithHookControlledPanelsExample = () => { + const [selectedIndex, setSelectedIndex] = useState(0); + const buttonContents = ['Flights', 'Hotels', 'Car hire']; + + const { controlProps, getPanelProps } = useSegmentedControlPanels( + buttonContents, + selectedIndex, + ); + + const panelStyle = { + padding: '1rem', + border: '1px solid #ddd', + borderRadius: '0.5rem', + marginTop: '1rem', + }; + + return ( +
Search for flights to your destination.
+Find the perfect place to stay.
+Rent a car for your trip.
+Panel for specific dates
+Panel for flexible dates
+