import React from 'react';
import { TextBadge } from '../src/lib/components/textbadge/TextBadge.component';
import { Tabs, Tab } from '../src/lib/components/tabsv2/Tabsv2.component';
import { Wrapper, Title } from './common';
import { BrowserRouter } from 'react-router-dom';
import { coreUIAvailableThemes } from '../src/lib/style/theme';
import styled from 'styled-components';
import { useLocation } from 'react-router';
import { spacing } from '../src/lib';
const Content = styled.div`
padding: ${spacing.r24};
color: ${(props) => props.theme.textPrimary};
height: 100%;
`;
export default {
title: 'Components/Navigation/Tabs',
component: Tabs,
decorators: [
(story) => (
{story()}
),
],
argTypes: {
activeTabSeparator: {
control: {
type: 'color',
},
},
},
};
const messages = [
'Really long',
'Long',
'Really long long long long long',
'Hello',
];
const generateTab = (n = 10, selectedIndex = 0) => {
return Array.from(new Array(n)).map((_, index) => (
index ? ` ${messages[index]}` : ''
}`}
textBadge={index % 3 === 0 ? : undefined}
>
Content {index}
));
};
const customTabStyle = {
activeTabColor: coreUIAvailableThemes.darkRebrand.selectedActive,
activeTabSeparator: coreUIAvailableThemes.darkRebrand.statusHealthy,
tabLineColor: coreUIAvailableThemes.darkRebrand.backgroundLevel3,
inactiveTabColor: coreUIAvailableThemes.darkRebrand.highlight,
tabContentColor: coreUIAvailableThemes.darkRebrand.buttonPrimary,
separatorColor: coreUIAvailableThemes.darkRebrand.statusCritical,
tabHoverColor: coreUIAvailableThemes.darkRebrand.statusHealthy,
};
const DefaultTabsDetails = (props) => {
const location = useLocation();
const query = new URLSearchParams(location.search);
const details = () => {
const tabName = query.get('tab');
if (tabName === 'group') {
return Group Content;
} else if (tabName === 'role @') {
return Roles Content;
} else if (tabName === 'policies') {
return Policies Content;
}
return Some Content;
};
return (
<>
{location.pathname} / {location.search}
Users Content
{details()}
Roles content
Policies content
Storage Location Content
Properties Content
>
);
};
export const Default = {
render: (args) => ,
};
export const CustomizedTabs = {
...Default,
args: { ...customTabStyle },
};
export const ScrollableTabs = {
render: (args) => (
<>
Default Tabs - scrollable 10 tabs
{generateTab(10, 10)}
Default Tabs - scrollable 20 tabs
{generateTab(20, 10)}
Default Tabs - scrollable 35 tabs
{generateTab(35, 10)}
>
),
};
export const WithQueryParams = {
render: (args) => {
const obj = { search: 'test' };
return (
}
icon={}
>
Tab 1 content
Tab 2 content
);
},
};