import styled from '@emotion/styled';
import {space} from 'sentry/styles/space';
import {trackAnalytics} from 'sentry/utils/analytics';
import replaceRouterParams from 'sentry/utils/replaceRouterParams';
import {normalizeUrl} from 'sentry/utils/withDomainRequired';
import SettingsNavItem from 'sentry/views/settings/components/settingsNavItem';
import type {NavigationGroupProps} from 'sentry/views/settings/types';
function SettingsNavigationGroup(props: NavigationGroupProps) {
const {organization, project, name, items} = props;
const navLinks = items.map(({path, title, index, show, badge, id, recordAnalytics}) => {
if (typeof show === 'function' && !show(props)) {
return null;
}
if (typeof show !== 'undefined' && !show) {
return null;
}
const badgeResult = typeof badge === 'function' ? badge(props) : null;
const to = replaceRouterParams(path, {
...(organization ? {orgId: organization.slug} : {}),
...(project ? {projectId: project.slug} : {}),
});
const handleClick = () => {
// only call the analytics event if the URL is changing
if (recordAnalytics && to !== window.location.pathname && organization) {
trackAnalytics('sidebar.item_clicked', {
organization,
project_id: project?.id,
sidebar_item_id: id,
dest: path,
});
}
};
return (
);
});
if (!navLinks.some(link => link !== null)) {
return null;
}
return (
{name}
{navLinks}
);
}
const NavSection = styled('div')`
margin-bottom: 20px;
`;
const SettingsHeading = styled('div')`
color: ${p => p.theme.text};
font-size: ${p => p.theme.fontSizeSmall};
font-weight: ${p => p.theme.fontWeightBold};
text-transform: uppercase;
margin-bottom: ${space(0.5)};
`;
export default SettingsNavigationGroup;