import React, { Children, useEffect, useRef, useId } from 'react'; import WrapperTag from '../../common/WrapperTag'; import DSTabs from '@scottish-government/design-system/dist/scripts/components/tabs/tabs'; import { TabListItemProps, TabsItemProps, TabsProps } from './types'; import clsx from 'clsx'; const TabItem = ({ isBorderless, children, className, id, tabLabel, ...props }: TabsItemProps) => { return (
{children}
); }; const TabListItem = ({ children, href }: TabListItemProps) => { return (
  • {children}
  • ); } const Tabs = ({ baseId = 'tabs', children, className, headingLevel = 'h2', isBorderless, isManual = false, title = 'Contents', ...props }: TabsProps) => { const ref = useRef(null); const headingId = `${baseId}-heading`; useEffect(() => { /* istanbul ignore else */ if (ref.current) { new DSTabs(ref.current).init(); } }, [ref]); const processedItems = Children.map(children, child => { const thisChild = child as React.ReactElement; if (thisChild && thisChild.type === TabItem) { return React.cloneElement(thisChild, { isBorderless: !!isBorderless, id: thisChild.props.id || `${baseId}-${useId()}`, }); } }); const tabListItems = Children.map(processedItems, child => { if (child && child.type === TabItem) { return {child.props.tabLabel} } }); return (
    {title} {processedItems}
    ); }; Tabs.displayName = 'Tabs'; TabItem.displayName = 'Tabs.Item'; Tabs.Item = TabItem; export default Tabs;