mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
79 lines
2.6 KiB
TypeScript
79 lines
2.6 KiB
TypeScript
import {useContext} from 'react';
|
|
import styled from '@emotion/styled';
|
|
import {motion} from 'framer-motion';
|
|
import omit from 'lodash/omit';
|
|
|
|
import {OnboardingContext} from 'sentry/components/onboarding/onboardingContext';
|
|
import PlatformPicker from 'sentry/components/platformPicker';
|
|
import platforms from 'sentry/data/platforms';
|
|
import {t} from 'sentry/locale';
|
|
import testableTransition from 'sentry/utils/testableTransition';
|
|
import useOrganization from 'sentry/utils/useOrganization';
|
|
import StepHeading from 'sentry/views/onboarding/components/stepHeading';
|
|
|
|
import {CreateProjectsFooter} from './components/createProjectsFooter';
|
|
import type {StepProps} from './types';
|
|
|
|
export function PlatformSelection(props: StepProps) {
|
|
const organization = useOrganization();
|
|
const onboardingContext = useContext(OnboardingContext);
|
|
|
|
const selectedPlatform = onboardingContext.data.selectedSDK
|
|
? platforms.find(platform => platform.id === onboardingContext.data.selectedSDK?.key)
|
|
? onboardingContext.data.selectedSDK
|
|
: undefined
|
|
: undefined;
|
|
|
|
return (
|
|
<Wrapper>
|
|
<StepHeading step={props.stepIndex}>
|
|
{t('Select the platform you want to monitor')}
|
|
</StepHeading>
|
|
<motion.div
|
|
transition={testableTransition()}
|
|
variants={{
|
|
initial: {y: 30, opacity: 0},
|
|
animate: {y: 0, opacity: 1},
|
|
exit: {opacity: 0},
|
|
}}
|
|
>
|
|
<p>
|
|
{t(
|
|
'Set up a separate project for each part of your application (for example, your API server and frontend client), to quickly pinpoint which part of your application errors are coming from.'
|
|
)}
|
|
</p>
|
|
<PlatformPicker
|
|
noAutoFilter
|
|
source="targeted-onboarding"
|
|
platform={onboardingContext.data.selectedSDK?.key}
|
|
defaultCategory={onboardingContext.data.selectedSDK?.category}
|
|
setPlatform={platform => {
|
|
onboardingContext.setData({
|
|
...onboardingContext.data,
|
|
selectedSDK: platform
|
|
? {...omit(platform, 'id'), key: platform.id}
|
|
: undefined,
|
|
});
|
|
}}
|
|
organization={organization}
|
|
/>
|
|
</motion.div>
|
|
<CreateProjectsFooter
|
|
{...props}
|
|
organization={organization}
|
|
clearPlatform={() => {
|
|
onboardingContext.setData({...onboardingContext.data, selectedSDK: undefined});
|
|
}}
|
|
selectedPlatform={selectedPlatform}
|
|
/>
|
|
</Wrapper>
|
|
);
|
|
}
|
|
|
|
const Wrapper = styled('div')`
|
|
max-width: 850px;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
width: 100%;
|
|
`;
|