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 ); }, };