import {cloneElement, isValidElement, useState} from 'react';
import type {RouteComponentProps} from 'react-router';
import styled from '@emotion/styled';
import {addErrorMessage, addSuccessMessage} from 'sentry/actionCreators/indicator';
import {joinTeam} from 'sentry/actionCreators/teams';
import {Alert} from 'sentry/components/alert';
import {Button} from 'sentry/components/button';
import IdBadge from 'sentry/components/idBadge';
import ListLink from 'sentry/components/links/listLink';
import LoadingIndicator from 'sentry/components/loadingIndicator';
import NavTabs from 'sentry/components/navTabs';
import SentryDocumentTitle from 'sentry/components/sentryDocumentTitle';
import {t, tct} from 'sentry/locale';
import useApi from 'sentry/utils/useApi';
import useOrganization from 'sentry/utils/useOrganization';
import {useParams} from 'sentry/utils/useParams';
import {useTeams} from 'sentry/utils/useTeams';
type Props = {
children: React.ReactNode;
} & RouteComponentProps<{teamId: string}, {}>;
function TeamDetails({children}: Props) {
const api = useApi();
const params = useParams();
const orgSlug = useOrganization().slug;
const [requesting, setRequesting] = useState(false);
const {teams, initiallyLoaded} = useTeams({slugs: [params.teamId]});
const team = teams.find(({slug}) => slug === params.teamId);
function handleRequestAccess(teamSlug: string) {
setRequesting(true);
joinTeam(
api,
{
orgId: orgSlug,
teamId: teamSlug,
},
{
success: () => {
addSuccessMessage(
tct('You have requested access to [team]', {
team: `#${teamSlug}`,
})
);
setRequesting(false);
},
error: () => {
addErrorMessage(
tct('Unable to request access to [team]', {
team: `#${teamSlug}`,
})
);
setRequesting(false);
},
}
);
}
const routePrefix = `/settings/${orgSlug}/teams/${params.teamId}/`;
const navigationTabs = [