mirror of
https://github.com/Unleash/unleash.git
synced 2025-05-12 01:17:04 +02:00
feat: onboarding stepper (#8100)
This commit is contained in:
parent
01fb748c01
commit
2daa0cd8ca
@ -44,7 +44,6 @@ const StyledDialog = styled(Dialog)(({ theme }) => ({
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
const Navigation = styled('div')(({ theme }) => ({
|
const Navigation = styled('div')(({ theme }) => ({
|
||||||
marginTop: theme.spacing(16),
|
|
||||||
borderTop: `1px solid ${theme.palette.divider}}`,
|
borderTop: `1px solid ${theme.palette.divider}}`,
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
justifyContent: 'flex-end',
|
justifyContent: 'flex-end',
|
||||||
|
@ -16,6 +16,7 @@ import EnvironmentsIcon from '@mui/icons-material/CloudCircle';
|
|||||||
import { ArcherContainer, ArcherElement } from 'react-archer';
|
import { ArcherContainer, ArcherElement } from 'react-archer';
|
||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
import { SectionHeader } from './SharedComponents';
|
import { SectionHeader } from './SharedComponents';
|
||||||
|
import { Stepper } from './Stepper';
|
||||||
|
|
||||||
const ChooseEnvironment = ({
|
const ChooseEnvironment = ({
|
||||||
environments,
|
environments,
|
||||||
@ -226,7 +227,8 @@ export const GenerateApiKey = ({
|
|||||||
return (
|
return (
|
||||||
<SpacedContainer>
|
<SpacedContainer>
|
||||||
<Typography variant='h2'>Connect an SDK to Unleash</Typography>
|
<Typography variant='h2'>Connect an SDK to Unleash</Typography>
|
||||||
<Box sx={{ mt: 4 }}>
|
<Stepper active={1} steps={3} />
|
||||||
|
<Box sx={{ mt: 2 }}>
|
||||||
<SectionHeader>Environment</SectionHeader>
|
<SectionHeader>Environment</SectionHeader>
|
||||||
<SectionDescription>
|
<SectionDescription>
|
||||||
The environment SDK will connect to in order to retrieve
|
The environment SDK will connect to in order to retrieve
|
||||||
|
@ -3,6 +3,7 @@ import type { FC } from 'react';
|
|||||||
import { formatAssetPath } from 'utils/formatPath';
|
import { formatAssetPath } from 'utils/formatPath';
|
||||||
import { SectionHeader } from './SharedComponents';
|
import { SectionHeader } from './SharedComponents';
|
||||||
import { clientSdks, type Sdk, serverSdks } from './sharedTypes';
|
import { clientSdks, type Sdk, serverSdks } from './sharedTypes';
|
||||||
|
import { Stepper } from './Stepper';
|
||||||
|
|
||||||
const SpacedContainer = styled('div')(({ theme }) => ({
|
const SpacedContainer = styled('div')(({ theme }) => ({
|
||||||
padding: theme.spacing(5, 8, 8, 8),
|
padding: theme.spacing(5, 8, 8, 8),
|
||||||
@ -59,7 +60,8 @@ export const SelectSdk: FC<ISelectSdkProps> = ({ onSelect }) => {
|
|||||||
return (
|
return (
|
||||||
<SpacedContainer>
|
<SpacedContainer>
|
||||||
<Typography variant='h2'>Connect an SDK to Unleash</Typography>
|
<Typography variant='h2'>Connect an SDK to Unleash</Typography>
|
||||||
<Box sx={{ mt: 4 }}>
|
<Stepper active={0} steps={3} />
|
||||||
|
<Box sx={{ mt: 2 }}>
|
||||||
<SectionHeader>Select SDK</SectionHeader>
|
<SectionHeader>Select SDK</SectionHeader>
|
||||||
<SecondarySectionHeader>
|
<SecondarySectionHeader>
|
||||||
Server side SDKs
|
Server side SDKs
|
||||||
|
38
frontend/src/component/onboarding/Stepper.tsx
Normal file
38
frontend/src/component/onboarding/Stepper.tsx
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
import { styled } from '@mui/material';
|
||||||
|
import type { FC } from 'react';
|
||||||
|
|
||||||
|
const StepContainer = styled('div')(({ theme }) => ({
|
||||||
|
display: 'flex',
|
||||||
|
gap: theme.spacing(1),
|
||||||
|
marginTop: theme.spacing(2),
|
||||||
|
}));
|
||||||
|
|
||||||
|
const Step = styled('div')(({ theme }) => ({
|
||||||
|
background: theme.palette.background.application,
|
||||||
|
borderRadius: theme.shape.borderRadius,
|
||||||
|
width: theme.spacing(7),
|
||||||
|
height: theme.spacing(1),
|
||||||
|
}));
|
||||||
|
const ActiveStep = styled('div')(({ theme }) => ({
|
||||||
|
background: theme.palette.background.sidebar,
|
||||||
|
borderRadius: theme.shape.borderRadius,
|
||||||
|
width: theme.spacing(7),
|
||||||
|
height: theme.spacing(1),
|
||||||
|
}));
|
||||||
|
|
||||||
|
export const Stepper: FC<{ active: number; steps: number }> = ({
|
||||||
|
active,
|
||||||
|
steps,
|
||||||
|
}) => {
|
||||||
|
return (
|
||||||
|
<StepContainer>
|
||||||
|
{Array.from({ length: steps }, (_, index) =>
|
||||||
|
index === active ? (
|
||||||
|
<ActiveStep key={index} />
|
||||||
|
) : (
|
||||||
|
<Step key={index} />
|
||||||
|
),
|
||||||
|
)}
|
||||||
|
</StepContainer>
|
||||||
|
);
|
||||||
|
};
|
@ -20,9 +20,10 @@ import copy from 'copy-to-clipboard';
|
|||||||
import useToast from 'hooks/useToast';
|
import useToast from 'hooks/useToast';
|
||||||
import CopyIcon from '@mui/icons-material/FileCopy';
|
import CopyIcon from '@mui/icons-material/FileCopy';
|
||||||
import { formatAssetPath } from '../../utils/formatPath';
|
import { formatAssetPath } from '../../utils/formatPath';
|
||||||
|
import { Stepper } from './Stepper';
|
||||||
|
|
||||||
const SpacedContainer = styled('div')(({ theme }) => ({
|
const SpacedContainer = styled('div')(({ theme }) => ({
|
||||||
padding: theme.spacing(5, 8, 8, 8),
|
padding: theme.spacing(5, 8, 2, 8),
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
flexDirection: 'column',
|
flexDirection: 'column',
|
||||||
gap: theme.spacing(3),
|
gap: theme.spacing(3),
|
||||||
@ -37,6 +38,7 @@ const StyledCodeBlock = styled('pre')(({ theme }) => ({
|
|||||||
wordBreak: 'break-all',
|
wordBreak: 'break-all',
|
||||||
whiteSpace: 'pre-wrap',
|
whiteSpace: 'pre-wrap',
|
||||||
position: 'relative',
|
position: 'relative',
|
||||||
|
maxHeight: theme.spacing(34),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const CopyToClipboard = styled(Tooltip)(({ theme }) => ({
|
const CopyToClipboard = styled(Tooltip)(({ theme }) => ({
|
||||||
@ -114,7 +116,8 @@ export const TestSdkConnection: FC<ITestSdkConnectionProps> = ({
|
|||||||
return (
|
return (
|
||||||
<SpacedContainer>
|
<SpacedContainer>
|
||||||
<Typography variant='h2'>Connect an SDK to Unleash</Typography>
|
<Typography variant='h2'>Connect an SDK to Unleash</Typography>
|
||||||
<Box sx={{ mt: 4 }}>
|
<Stepper active={2} steps={3} />
|
||||||
|
<Box sx={{ mt: 2 }}>
|
||||||
<ChangeSdk>
|
<ChangeSdk>
|
||||||
{sdkIcon ? (
|
{sdkIcon ? (
|
||||||
<Avatar
|
<Avatar
|
||||||
|
Loading…
Reference in New Issue
Block a user