import React from 'react';
import { Flex, color, space, themeColor, ChevronIcon } from '@blockstack/ui';
import { SideNav } from '../side-nav';
import { Header, HEADER_HEIGHT } from '../header';
import { Main } from '../main';
import { Footer } from '../footer';
import { useRouter } from 'next/router';
import { ContentWrapper } from '../content-wrapper';
import NotFoundPage from '@pages/404';
import { createGlobalStyle } from 'styled-components';
import { TableOfContents } from '@components/toc';
import { getHeadingStyles } from '@components/mdx/typography';
import { css } from '@styled-system/css';
import { SIDEBAR_WIDTH, TOC_WIDTH } from '@common/constants';
export const MdxOverrides = createGlobalStyle`
.DocSearch-Container{
z-index: 99999;
}
:root{
--docsearch-modal-background: ${color('bg')};
--docsearch-primary-color-R: 84;
--docsearch-primary-color-G: 104;
--docsearch-primary-color-B: 255;
--docsearch-primary-color: ${color('accent')};
--docsearch-input-color: ${color('text-title')};
--docsearch-highlight-color: var(--docsearch-primary-color);
--docsearch-placeholder-color: ${color('text-caption')};
--docsearch-container-background: rgba(22,22,22,0.75);
--docsearch-modal-shadow: inset 1px 1px 0px 0px hsla(0,0%,100%,0.5),0px 3px 8px 0px #555a64;
--docsearch-searchbox-background: var(--ifm-color-emphasis-300);
--docsearch-searchbox-focus-background: #fff;
--docsearch-searchbox-shadow: inset 0px 0px 0px 2px rgba(var(--docsearch-primary-color-R),var(--docsearch-primary-color-G),var(--docsearch-primary-color-B),0.5);
--docsearch-hit-color: var(--ifm-color-emphasis-800);
--docsearch-hit-active-color: #fff;
--docsearch-hit-background: #fff;
--docsearch-hit-shadow: 0px 1px 3px 0px #d4d9e1;
--docsearch-key-gradient: linear-gradient(-225deg,#d5dbe4,#f8f8f8);
--docsearch-key-shadow: inset 0px -2px 0px 0px #cdcde6,inset 0px 0px 1px 1px #fff,0px 1px 2px 1px rgba(30,35,90,0.4);
--docsearch-footer-background: #fff;
--docsearch-footer-shadow: 0px -1px 0px 0px #e0e3e8;
--docsearch-logo-color: #5468ff;
--docsearch-muted-color: #969faf;
--docsearch-modal-width: 560px;
--docsearch-modal-height: 600px;
--docsearch-searchbox-height: 56px;
--docsearch-hit-height: 56px;
--docsearch-footer-height: 44px;
--docsearch-spacing: 12px;
--docsearch-icon-stroke-width: 1.4;
}
pre{
display: inline-block;
}
p, ul, ol, table {
color: ${color('text-body')};
a > pre {
color: ${color('accent')} !important;
}
}
`;
const styleOverwrites = {
'& > *:not(pre):not(ul):not(ol):not(img):not([data-reach-accordion])': {
px: space('extra-loose'),
},
'& > ul, & > ol': {
pr: space('extra-loose'),
pl: '64px ',
},
p: {
display: 'inline-block',
fontSize: '16.5px',
lineHeight: '28px',
':before': {
content: "''",
marginTop: '-0.4878787878787879em',
display: 'block',
height: 0,
},
':after': {
content: "''",
marginBottom: '-0.4878787878787879em',
display: 'block',
height: 0,
},
},
li: {
pb: 0,
':last-child': {
mb: 0,
pb: 0,
},
'*:last-child': {
mb: 0,
},
pre: {
display: 'block',
my: space('extra-loose'),
},
p: {
display: 'inline',
},
'ol, ul': {
mt: space('base-loose'),
},
':before': {
verticalAlign: 'top',
},
':marker': {
verticalAlign: 'top',
},
mb: space('base'),
'p + p': {
mt: space('extra-loose'),
},
'p + p, ul + p, ol + p': {
display: 'inline-block',
mt: space('extra-loose'),
},
},
'p + p, ul + p, ol + p': {
display: 'inline-block',
mt: space('extra-loose'),
},
'& > *:not(pre) a > code': {
color: color('accent'),
'&:hover': {
textDecoration: 'underline',
},
},
pre: {
'& + h2, & + h3': {
mt: space('extra-loose'),
},
'& + h4, & + h5, & + h6, & + blockquote, & + ul, & + ol': {
mt: 0,
},
},
h2: {
mt: '64px',
'&, & > *': {
...getHeadingStyles('h2'),
},
'& > code': {
px: space('tight'),
py: space('extra-tight'),
mr: '2px',
fontSize: '22px',
},
'& + h3': {
mt: 0,
},
},
h3: {
mt: '64px',
'&, & > *': {
...getHeadingStyles('h3'),
},
'& + h4': {
mt: 0,
},
},
h4: {
mt: space('extra-loose'),
'&, & > *': {
...getHeadingStyles('h4'),
},
'& + h5': {
mt: 0,
},
},
h5: {
mt: space('extra-loose'),
'&, & > *': {
...getHeadingStyles('h5'),
},
},
h6: {
mt: space('extra-loose'),
'&, & > *': {
...getHeadingStyles('h6'),
},
},
h1: {
mt: space('extra-loose'),
'&, & > *': {
...getHeadingStyles('h1'),
},
'& + *': {
mt: space('extra-loose'),
},
},
'h1, h2, h3, h4, h5, h6': {
mb: space('extra-loose'),
'& + pre': {
mt: '0',
},
'& + ul, & + ol': {
mt: '0',
},
'& + blockquote': {
mt: '0',
},
},
'ol, ul': {
mb: 0,
mt: space('extra-loose'),
'& + blockquote, & + pre': {
// mt: space('extra-tight'),
},
},
blockquote: {
'& > div > div > *:first-child': {
mt: 0,
},
'& + pre': {
mt: '0',
},
'& + h2': {
mt: '0',
},
},
img: {
my: space('extra-loose'),
},
'& > pre > *:not(pre):not(.line-numbers)': {
border: 'none',
px: space(['extra-loose', 'extra-loose', 'none', 'none']),
},
'& > pre > div[style]': {
px: space(['base-loose', 'base-loose', 'none', 'none']),
},
'& > pre > .code-editor': {
pl: space(['base', 'base', 'none', 'none']),
},
'& > pre': {
px: space(['none', 'none', 'extra-loose', 'extra-loose']),
border: 'none',
boxShadow: 'none',
my: space('extra-loose'),
},
'& > img': {
mx: 'auto',
},
table: {
'& code': {
maxWidth: '100%',
overflowX: 'auto',
overflowY: 'hidden',
whiteSpace: 'pre',
},
},
};
export const Contents = ({ headings, children }) => (
<>
1
? ['100%', '100%', `calc(100% - ${TOC_WIDTH}px)`, `calc(100% - ${TOC_WIDTH}px)`]
: '100%'
}
mx="unset"
pt="unset"
pr={space('base-tight')}
css={css(styleOverwrites)}
>
{children}
{headings?.length && headings.length > 1 ? (
) : null}
>
);
const DocsLayout: React.FC<{ isHome?: boolean }> = ({ children, isHome }) => {
let isErrorPage = false;
// get if NotFoundPage
React.Children.forEach(children, (child: any) => {
if (child?.type === NotFoundPage) {
isErrorPage = true;
}
});
return (
{!isHome && }
{children}
{isErrorPage || isHome ? null : }
);
};
export { DocsLayout };