mirror of
https://github.com/Unleash/unleash.git
synced 2025-04-06 01:15:28 +02:00
[](https://renovatebot.com)
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@biomejs/biome](https://biomejs.dev)
([source](https://togithub.com/biomejs/biome)) | [`1.3.3` ->
`1.4.0`](https://renovatebot.com/diffs/npm/@biomejs%2fbiome/1.3.3/1.4.0)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
---
### Release Notes
<details>
<summary>biomejs/biome (@​biomejs/biome)</summary>
###
[`v1.4.0`](https://togithub.com/biomejs/biome/blob/HEAD/CHANGELOG.md#140-2023-11-27)
[Compare
Source](af24597c18...889593e3f9
)
##### CLI
- Remove the CLI options from the `lsp-proxy`, as they were never meant
to be passed to that command. Contributed by
[@​ematipico](https://togithub.com/ematipico)
- Add option `--config-path` to `lsp-proxy` and `start` commands. It's
now possible to tell the Daemon server to load `biome.json` from a
custom path. Contributed by
[@​ematipico](https://togithub.com/ematipico)
- Add new `--diagnostic-level` option to let users control the level of
diagnostics printed by the CLI. Possible values are: `"info"`, `"warn"`,
`"hint"`. Contributed by
[@​simonxabris](https://togithub.com/simonxabris)
- Add option `--line-feed` to the `format` command. Contributed by
[@​SuperchupuDev](https://togithub.com/SuperchupuDev)
- Add option `--bracket-same-line` to the `format` command. Contributed
by [@​faultyserve](https://togithub.com/faultyserve)
- Add option `--bracket-spacing` to the `format` command. Contributed by
[@​faultyserve](https://togithub.com/faultyserve)
##### Bug fixes
- Fix the command `format`, now it returns a non-zero exit code when if
there pending diffs. Contributed by
[@​ematipico](https://togithub.com/ematipico)
##### Configuration
- Add option `formatter.lineFeed`. Contributed by
[@​SuperchupuDev](https://togithub.com/SuperchupuDev)
- Add option `javascript.formatter.bracketSameLine`. Contributed by
[@​faultyserve](https://togithub.com/faultyserve)
- Add option `javascript.formatter.bracketSpacing`. Contributed by
[@​faultyserve](https://togithub.com/faultyserve)
##### Formatter
##### New features
- Add a new option
[`--line-ending`](https://biomejs.dev/reference/configuration/#formatterlineending).
This option allows changing the type of line endings. Contributed by
[@​SuperchupuDev](https://togithub.com/SuperchupuDev)
- Added a new option called `--bracket-spacing` to the formatter. This
option allows you to control whether spaces are inserted around the
brackets of object literals.
[#​627](https://togithub.com/biomejs/biome/issues/627).
Contributed by [@​faultyserver](https://togithub.com/faultyserver)
- Added a new option called `--bracket-same-line` to the formatter. This
option allows you to control whether spaces are inserted around the
brackets of object literals.
[#​627](https://togithub.com/biomejs/biome/issues/627).
Contributed by [@​faultyserver](https://togithub.com/faultyserver)
##### Bug fixes
- Fix [#​832](https://togithub.com/biomejs/biome/issues/832), the
formatter no longer keeps an unnecessary trailing comma in type
parameter lists. Contributed by
[@​Conaclos](https://togithub.com/Conaclos)
- Fix [#​301](https://togithub.com/biomejs/biome/issues/301), the
formatter should not break before the `in` keyword. Contributed by
[@​ematipico](https://togithub.com/ematipico)
##### Linter
##### Promoted rules
-
[a11y/noInteractiveElementToNoninteractiveRole](https://biomejs.dev/linter/rules/no-interactive-element-to-noninteractive-role)
-
[complexity/noThisInStatic](https://biomejs.dev/linter/rules/no-this-in-static)
-
[complexity/useArrowFunction](https://biomejs.dev/linter/rules/use-arrow-function)
-
[correctness/noEmptyCharacterClassInRegex](https://biomejs.dev/linter/rules/no-empty-character-class-in-regex)
-
[correctness/noInvalidNewBuiltin](https://biomejs.dev/linter/rules/no-invalid-new-builtin)
-
[style/noUselessElse](https://biomejs.dev/linter/rules/no-useless-else)
-
[style/useAsConstAssertion](https://biomejs.dev/linter/rules/use-as-const-assertion)
-
[style/useShorthandAssign](https://biomejs.dev/linter/rules/use-shorthand-assign)
-
[suspicious/noApproximativeNumericConstant](https://biomejs.dev/linter/rules/no-approximative-numeric-constant)
-
[suspicious/noMisleadingInstantiator](https://biomejs.dev/linter/rules/no-misleading-instantiator)
-
[suspicious/noMisrefactoredShorthandAssign](https://biomejs.dev/linter/rules/no-misrefactored-shorthand-assign)
The following rules are now recommended:
- [a11y/noAccessKey](https://biomejs.dev/linter/rules/no-access-key)
-
[a11y/useHeadingContent](https://biomejs.dev/linter/rules/use-heading-content)
-
[complexity/useSimpleNumberKeys](https://biomejs.dev/linter/use-simple-number-keys)
The following rules are now deprecated:
-
[correctness/noNewSymbol](https://biomejs.dev/linter/rules/no-new-symbol)
The rule is replaced by
[correctness/noInvalidNewBuiltin](https://biomejs.dev/linter/rules/no-invalid-new-builtin)
##### New features
- Add
[noDefaultExport](https://biomejs.dev/linter/rules/no-default-export)
which disallows `export default`. Contributed by
[@​Conaclos](https://togithub.com/Conaclos)
- Add
[noAriaHiddenOnFocusable](https://biomejs.dev/linter/rules/no-aria-hidden-on-focusable)
which reports hidden and focusable elements. Contributed by
[@​vasucp1207](https://togithub.com/vasucp1207)
- Add
[noImplicitAnyLet](https://biomejs.dev/linter/rules/no-implicit-any-let)
that reports variables declared with `let` and without initialization
and type annotation. Contributed by
[@​TaKO8Ki](https://togithub.com/TaKO8Ki) and
[@​b4s36t4](https://togithub.com/b4s36t4)
- Add [useAwait](https://biomejs.dev/linter/rules/use-await) that
reports `async` functions that don't use an `await` expression.
- Add
[useValidAriaRole](https://biomejs.dev/linter/rules/use-valid-aria-role).
Contributed by [@​vasucp1207](https://togithub.com/vasucp1207)
- Add [useRegexLiterals](https://biomejs.dev/linter/use-regex-literals)
that suggests turning call to the regex constructor into regex literals.
COntributed by [@​Yuiki](https://togithub.com/Yuiki)
##### Enhancements
- Add an unsafe code fix for
[a11y/useAriaActivedescendantWithTabindex](https://biomejs.dev/linter/rules/use-aria-activedescendant-with-tabindex)
##### Bug fixes
- Fix [#​639](https://togithub.com/biomejs/biome/issues/639) by
ignoring unused TypeScript's mapped key. Contributed by
[@​Conaclos](https://togithub.com/Conaclos)
- Fix [#​565](https://togithub.com/biomejs/biome/issues/565) by
handling several `infer` with the same name in extends clauses of
TypeScript's conditional types. Contributed by
[@​Conaclos](https://togithub.com/Conaclos)
- Fix [#​653](https://togithub.com/biomejs/biome/issues/653).
[noUnusedImports](https://biomejs.dev/linter/rules/no-unused-imports)
now correctly removes the entire line where the unused `import` is.
Contributed by [@​Conaclos](https://togithub.com/Conaclos)
- Fix [#​607](https://togithub.com/biomejs/biome/issues/609)
`useExhaustiveDependencies`, ignore optional chaining, Contributed by
[@​msdlisper](https://togithub.com/msdlisper)
- Fix [#​676](https://togithub.com/biomejs/biome/issues/676), by
using the correct node for the `"noreferrer"` when applying the code
action. Contributed by
[@​ematipico](https://togithub.com/ematipico)
- Fix [#​455](https://togithub.com/biomejs/biome/issues/455). The
CLI can now print complex emojis to the console correctly.
- Fix [#​727](https://togithub.com/biomejs/biome/issues/727).
[noInferrableTypes](https://biomejs.dev/linter/rules/no-inferrable-types)
now correctly keeps type annotations when the initialization expression
is `null`. Contributed by
[@​Conaclos](https://togithub.com/Conaclos)
- Fix [#​784](https://togithub.com/biomejs/biome/issues/784),
[noSvgWithoutTitle](https://biomejs.dev/linter/rules/no-svg-without-title)
fixes false-positives to `aria-label` and reports svg's role attribute
is implicit. Contributed by
[@​unvalley](https://togithub.com/unvalley)
- Fix [#​834](https://togithub.com/biomejs/biome/issues/834) that
made
[noUselessLoneBlockStatements](https://biomejs.dev/linter/rules/no-useless-lone-block-statements)
reports block statements of switch clauses. Contributed by
[@​vasucp1207](https://togithub.com/vasucp1207)
- Fix [#​783](https://togithub.com/biomejs/biome/issues/834) that
made
[noUselessLoneBlockStatements](https://biomejs.dev/linter/rules/no-useless-lone-block-statements)
reports block statements of `try-catch` structures. Contributed by
[@​hougesen](https://togithub.com/hougesen)
- Fix [#​69](https://togithub.com/biomejs/biome/issues/69) that
made
[correctness/noUnnecessaryContinue](https://biomejs.dev/linter/rules/no-unnecessary-continue)
incorrectly reports a `continue` used to break a switch clause.
Contributed by [@​TaKO8Ki](https://togithub.com/TaKO8Ki)
- Fix [#​664](https://togithub.com/biomejs/biome/issues/664) by
improving the diagnostic of
[style/useNamingConvention](https://biomejs.dev/linter/use-naming-convention)
when double capital are detected in strict camel case mode. Contributed
by [@​vasucp1207](https://togithub.com/vasucp1207)
- Fix [#​643](https://togithub.com/biomejs/biome/issues/643) that
erroneously parsed the option of
[complexity/useExhaustiveDependencies](https://biomejs.dev/linter/use-naming-convention).
Contributed by [@​arendjr](https://togithub.com/arendjr)
##### Parser
##### Bug fixes
- Fix [#​846](https://togithub.com/biomejs/biome/issues/846) that
erroneously parsed `<const T,>() => {}` as a JSX tag instead of an arrow
function when both TypeScript and JSX are enabled.
##### VSCode
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/Unleash/unleash).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40Ni4wIiwidXBkYXRlZEluVmVyIjoiMzcuNTkuOCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Christopher Kolstad <chriswk@getunleash.io>
398 lines
12 KiB
TypeScript
398 lines
12 KiB
TypeScript
import MenuBookIcon from '@mui/icons-material/MenuBook';
|
|
import Codebox from '../Codebox/Codebox';
|
|
import {
|
|
Collapse,
|
|
IconButton,
|
|
useMediaQuery,
|
|
Tooltip,
|
|
Divider,
|
|
styled,
|
|
} from '@mui/material';
|
|
import { FileCopy, Info } from '@mui/icons-material';
|
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
|
import Loader from '../Loader/Loader';
|
|
import copy from 'copy-to-clipboard';
|
|
import useToast from 'hooks/useToast';
|
|
import React, { ReactNode, useState } from 'react';
|
|
import { ReactComponent as MobileGuidanceBG } from 'assets/img/mobileGuidanceBg.svg';
|
|
import { formTemplateSidebarWidth } from './FormTemplate.styles';
|
|
import { relative } from 'themes/themeStyles';
|
|
|
|
interface ICreateProps {
|
|
title?: ReactNode;
|
|
description: string;
|
|
documentationLink: string;
|
|
documentationLinkLabel: string;
|
|
loading?: boolean;
|
|
modal?: boolean;
|
|
disablePadding?: boolean;
|
|
compactPadding?: boolean;
|
|
showDescription?: boolean;
|
|
showLink?: boolean;
|
|
formatApiCode?: () => string;
|
|
footer?: ReactNode;
|
|
compact?: boolean;
|
|
}
|
|
|
|
const StyledContainer = styled('section', {
|
|
shouldForwardProp: (prop) =>
|
|
!['modal', 'compact'].includes(prop.toString()),
|
|
})<{ modal?: boolean; compact?: boolean }>(({ theme, modal, compact }) => ({
|
|
minHeight: modal ? '100vh' : compact ? 0 : '80vh',
|
|
borderRadius: modal ? 0 : theme.spacing(2),
|
|
width: '100%',
|
|
display: 'flex',
|
|
margin: '0 auto',
|
|
overflow: modal ? 'unset' : 'hidden',
|
|
[theme.breakpoints.down(1100)]: {
|
|
flexDirection: 'column',
|
|
minHeight: 0,
|
|
},
|
|
}));
|
|
|
|
const StyledRelativeDiv = styled('div')(({ theme }) => relative);
|
|
|
|
const StyledMain = styled('div')(({ theme }) => ({
|
|
display: 'flex',
|
|
flexDirection: 'column',
|
|
flexGrow: 1,
|
|
flexShrink: 1,
|
|
width: '100%',
|
|
[theme.breakpoints.down(1100)]: {
|
|
width: '100%',
|
|
},
|
|
}));
|
|
|
|
const StyledFormContent = styled('div', {
|
|
shouldForwardProp: (prop) => {
|
|
return !['disablePadding', 'compactPadding'].includes(prop.toString());
|
|
},
|
|
})<{ disablePadding?: boolean; compactPadding?: boolean }>(
|
|
({ theme, disablePadding, compactPadding }) => ({
|
|
backgroundColor: theme.palette.background.paper,
|
|
display: 'flex',
|
|
flexDirection: 'column',
|
|
flexGrow: 1,
|
|
padding: disablePadding
|
|
? 0
|
|
: compactPadding
|
|
? theme.spacing(4)
|
|
: theme.spacing(6),
|
|
[theme.breakpoints.down('lg')]: {
|
|
padding: disablePadding ? 0 : theme.spacing(4),
|
|
},
|
|
[theme.breakpoints.down(1100)]: {
|
|
width: '100%',
|
|
},
|
|
[theme.breakpoints.down(500)]: {
|
|
padding: disablePadding ? 0 : theme.spacing(4, 2),
|
|
},
|
|
}),
|
|
);
|
|
|
|
const StyledFooter = styled('div')(({ theme }) => ({
|
|
backgroundColor: theme.palette.background.paper,
|
|
padding: theme.spacing(4, 6),
|
|
[theme.breakpoints.down('lg')]: {
|
|
padding: theme.spacing(4),
|
|
},
|
|
[theme.breakpoints.down(500)]: {
|
|
padding: theme.spacing(4, 2),
|
|
},
|
|
}));
|
|
|
|
const StyledTitle = styled('h1')(({ theme }) => ({
|
|
marginBottom: theme.fontSizes.mainHeader,
|
|
fontWeight: 'normal',
|
|
}));
|
|
|
|
const StyledSidebarDivider = styled(Divider)(({ theme }) => ({
|
|
opacity: 0.3,
|
|
marginBottom: theme.spacing(0.5),
|
|
}));
|
|
|
|
const StyledSubtitle = styled('h2')(({ theme }) => ({
|
|
color: theme.palette.common.white,
|
|
marginBottom: theme.spacing(2),
|
|
display: 'flex',
|
|
justifyContent: 'space-between',
|
|
alignItems: 'center',
|
|
fontWeight: theme.fontWeight.bold,
|
|
fontSize: theme.fontSizes.bodySize,
|
|
}));
|
|
|
|
const StyledIcon = styled(FileCopy)(({ theme }) => ({
|
|
fill: theme.palette.primary.contrastText,
|
|
}));
|
|
|
|
const StyledMobileGuidanceContainer = styled('div')(() => ({
|
|
zIndex: 1,
|
|
position: 'absolute',
|
|
right: -3,
|
|
top: -3,
|
|
}));
|
|
|
|
const StyledMobileGuidanceBackground = styled(MobileGuidanceBG)(() => ({
|
|
width: '75px',
|
|
height: '75px',
|
|
}));
|
|
|
|
const StyledMobileGuidanceButton = styled(IconButton)(() => ({
|
|
position: 'absolute',
|
|
zIndex: 400,
|
|
right: 0,
|
|
}));
|
|
|
|
const StyledInfoIcon = styled(Info)(({ theme }) => ({
|
|
fill: theme.palette.primary.contrastText,
|
|
}));
|
|
|
|
const StyledSidebar = styled('aside')(({ theme }) => ({
|
|
backgroundColor: theme.palette.background.sidebar,
|
|
padding: theme.spacing(4),
|
|
flexGrow: 0,
|
|
flexShrink: 0,
|
|
width: formTemplateSidebarWidth,
|
|
[theme.breakpoints.down(1100)]: {
|
|
width: '100%',
|
|
color: 'red',
|
|
},
|
|
[theme.breakpoints.down(500)]: {
|
|
padding: theme.spacing(4, 2),
|
|
},
|
|
}));
|
|
|
|
const StyledDescription = styled('p')(({ theme }) => ({
|
|
color: theme.palette.common.white,
|
|
zIndex: 1,
|
|
position: 'relative',
|
|
}));
|
|
|
|
const StyledLinkContainer = styled('div')(({ theme }) => ({
|
|
margin: theme.spacing(3, 0),
|
|
display: 'flex',
|
|
alignItems: 'center',
|
|
}));
|
|
|
|
const StyledLinkIcon = styled(MenuBookIcon)(({ theme }) => ({
|
|
marginRight: theme.spacing(1),
|
|
color: theme.palette.primary.contrastText,
|
|
}));
|
|
|
|
const StyledDocumentationLink = styled('a')(({ theme }) => ({
|
|
color: theme.palette.primary.contrastText,
|
|
display: 'block',
|
|
'&:hover': {
|
|
textDecoration: 'none',
|
|
},
|
|
}));
|
|
|
|
const FormTemplate: React.FC<ICreateProps> = ({
|
|
title,
|
|
description,
|
|
children,
|
|
documentationLink,
|
|
documentationLinkLabel,
|
|
loading,
|
|
modal,
|
|
formatApiCode,
|
|
disablePadding,
|
|
compactPadding = false,
|
|
showDescription = true,
|
|
showLink = true,
|
|
footer,
|
|
compact,
|
|
}) => {
|
|
const { setToastData } = useToast();
|
|
const smallScreen = useMediaQuery(`(max-width:${1099}px)`);
|
|
const copyCommand = () => {
|
|
if (formatApiCode !== undefined) {
|
|
if (copy(formatApiCode())) {
|
|
setToastData({
|
|
title: 'Successfully copied the command',
|
|
text: 'The command should now be automatically copied to your clipboard',
|
|
autoHideDuration: 6000,
|
|
type: 'success',
|
|
show: true,
|
|
});
|
|
} else {
|
|
setToastData({
|
|
title: 'Could not copy the command',
|
|
text: 'Sorry, but we could not copy the command.',
|
|
autoHideDuration: 6000,
|
|
type: 'error',
|
|
show: true,
|
|
});
|
|
}
|
|
}
|
|
};
|
|
|
|
const renderApiInfo = (apiDisabled: boolean, dividerDisabled = false) => {
|
|
if (!apiDisabled) {
|
|
return (
|
|
<>
|
|
<ConditionallyRender
|
|
condition={!dividerDisabled}
|
|
show={<StyledSidebarDivider />}
|
|
/>
|
|
<StyledSubtitle>
|
|
API Command{' '}
|
|
<Tooltip title='Copy command' arrow>
|
|
<IconButton onClick={copyCommand} size='large'>
|
|
<StyledIcon />
|
|
</IconButton>
|
|
</Tooltip>
|
|
</StyledSubtitle>
|
|
<Codebox text={formatApiCode!()} />{' '}
|
|
</>
|
|
);
|
|
}
|
|
};
|
|
|
|
return (
|
|
<StyledContainer modal={modal} compact={compact}>
|
|
<ConditionallyRender
|
|
condition={smallScreen}
|
|
show={
|
|
<StyledRelativeDiv>
|
|
<MobileGuidance
|
|
description={description}
|
|
documentationLink={documentationLink}
|
|
documentationLinkLabel={documentationLinkLabel}
|
|
/>
|
|
</StyledRelativeDiv>
|
|
}
|
|
/>
|
|
<StyledMain>
|
|
<StyledFormContent
|
|
disablePadding={disablePadding}
|
|
compactPadding={compactPadding}
|
|
>
|
|
<ConditionallyRender
|
|
condition={loading || false}
|
|
show={<Loader />}
|
|
elseShow={
|
|
<>
|
|
<ConditionallyRender
|
|
condition={title !== undefined}
|
|
show={<StyledTitle>{title}</StyledTitle>}
|
|
/>
|
|
{children}
|
|
</>
|
|
}
|
|
/>
|
|
</StyledFormContent>
|
|
<ConditionallyRender
|
|
condition={footer !== undefined}
|
|
show={() => (
|
|
<>
|
|
<Divider />
|
|
<StyledFooter>{footer}</StyledFooter>
|
|
</>
|
|
)}
|
|
/>
|
|
</StyledMain>
|
|
<ConditionallyRender
|
|
condition={!smallScreen}
|
|
show={
|
|
<Guidance
|
|
description={description}
|
|
documentationLink={documentationLink}
|
|
documentationLinkLabel={documentationLinkLabel}
|
|
showDescription={showDescription}
|
|
showLink={showLink}
|
|
>
|
|
{renderApiInfo(
|
|
formatApiCode === undefined,
|
|
!(showDescription || showLink),
|
|
)}
|
|
</Guidance>
|
|
}
|
|
/>
|
|
</StyledContainer>
|
|
);
|
|
};
|
|
|
|
interface IMobileGuidance {
|
|
description: string;
|
|
documentationLink: string;
|
|
documentationLinkLabel?: string;
|
|
}
|
|
|
|
const MobileGuidance = ({
|
|
description,
|
|
documentationLink,
|
|
documentationLinkLabel,
|
|
}: IMobileGuidance) => {
|
|
const [open, setOpen] = useState(false);
|
|
|
|
return (
|
|
<>
|
|
<StyledMobileGuidanceContainer>
|
|
<StyledMobileGuidanceBackground />
|
|
</StyledMobileGuidanceContainer>
|
|
<Tooltip title='Toggle help' arrow>
|
|
<StyledMobileGuidanceButton
|
|
onClick={() => setOpen((prev) => !prev)}
|
|
size='large'
|
|
>
|
|
<StyledInfoIcon />
|
|
</StyledMobileGuidanceButton>
|
|
</Tooltip>
|
|
<Collapse in={open} timeout={500}>
|
|
<Guidance
|
|
description={description}
|
|
documentationLink={documentationLink}
|
|
documentationLinkLabel={documentationLinkLabel}
|
|
/>
|
|
</Collapse>
|
|
</>
|
|
);
|
|
};
|
|
|
|
interface IGuidanceProps {
|
|
description: string;
|
|
documentationLink: string;
|
|
documentationLinkLabel?: string;
|
|
showDescription?: boolean;
|
|
showLink?: boolean;
|
|
}
|
|
|
|
const Guidance: React.FC<IGuidanceProps> = ({
|
|
description,
|
|
children,
|
|
documentationLink,
|
|
documentationLinkLabel = 'Learn more',
|
|
showDescription = true,
|
|
showLink = true,
|
|
}) => {
|
|
return (
|
|
<StyledSidebar>
|
|
<ConditionallyRender
|
|
condition={showDescription}
|
|
show={<StyledDescription>{description}</StyledDescription>}
|
|
/>
|
|
|
|
<ConditionallyRender
|
|
condition={showLink}
|
|
show={
|
|
<StyledLinkContainer>
|
|
<StyledLinkIcon />
|
|
<StyledDocumentationLink
|
|
href={documentationLink}
|
|
rel='noopener noreferrer'
|
|
target='_blank'
|
|
>
|
|
{documentationLinkLabel}
|
|
</StyledDocumentationLink>
|
|
</StyledLinkContainer>
|
|
}
|
|
/>
|
|
|
|
{children}
|
|
</StyledSidebar>
|
|
);
|
|
};
|
|
|
|
export default FormTemplate;
|