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 (
);
};
Tabs.displayName = 'Tabs';
TabItem.displayName = 'Tabs.Item';
Tabs.Item = TabItem;
export default Tabs;