mirror of https://github.com/lukechilds/docs.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
4.0 KiB
139 lines
4.0 KiB
import React from 'react';
|
|
import {
|
|
Box,
|
|
Button,
|
|
BoxProps,
|
|
color,
|
|
Flex,
|
|
space,
|
|
Stack,
|
|
transition,
|
|
SlideFade,
|
|
} from '@blockstack/ui';
|
|
import { Text } from '@components/typography';
|
|
import { Link } from '@components/mdx';
|
|
import { SadIcon, NeutralIcon, HappyIcon } from '@components/icons/feedback';
|
|
import { useTouchable } from '@common/hooks/use-touchable';
|
|
import { border } from '@common/utils';
|
|
import { useRouter } from 'next/router';
|
|
import { getHeadingStyles } from '@components/mdx/typography';
|
|
import { css } from '@styled-system/css';
|
|
import { StatusCheck } from '@components/status-check';
|
|
|
|
const Icon: React.FC<BoxProps & { icon: React.FC<any> }> = ({ icon: IconComponent, ...props }) => {
|
|
const { bind, hover, active } = useTouchable();
|
|
const isHovered = hover || active;
|
|
return (
|
|
<Box
|
|
color={color('text-caption')}
|
|
_hover={{ color: color('bg'), cursor: 'pointer' }}
|
|
size="28px"
|
|
{...props}
|
|
{...bind}
|
|
>
|
|
<IconComponent bg={isHovered ? color('accent') : color('bg-alt')} />
|
|
</Box>
|
|
);
|
|
};
|
|
|
|
const FeedbackCard = ({ show, onClose }) => {
|
|
return (
|
|
<SlideFade in={show}>
|
|
{styles => (
|
|
<Box ml={space('base-loose')} p={space('base')}>
|
|
<Flex
|
|
p={space('base')}
|
|
border={border()}
|
|
borderRadius="12px"
|
|
align="center"
|
|
justifyContent="center"
|
|
bg={color('bg')}
|
|
size="100%"
|
|
boxShadow="mid"
|
|
transition={transition}
|
|
_hover={{
|
|
transform: 'translateY(-5px)',
|
|
boxShadow: 'high',
|
|
}}
|
|
style={{
|
|
...styles,
|
|
}}
|
|
>
|
|
<Box>
|
|
<Button
|
|
as="a"
|
|
// @ts-ignore
|
|
href="https://forms.formium.io/f/5f174a3960b46d000139b62f"
|
|
target="_blank"
|
|
>
|
|
Leave feedback
|
|
</Button>
|
|
<Box
|
|
color={color('text-body')}
|
|
_hover={{ color: color('accent'), textDecoration: 'underline', cursor: 'pointer' }}
|
|
onClick={onClose}
|
|
mt={space('tight')}
|
|
textAlign="center"
|
|
mx="auto"
|
|
>
|
|
<Text color="currentColor" fontSize="14px">
|
|
Dismiss
|
|
</Text>
|
|
</Box>
|
|
</Box>
|
|
</Flex>
|
|
</Box>
|
|
)}
|
|
</SlideFade>
|
|
);
|
|
};
|
|
|
|
export const FeedbackSection: React.FC<BoxProps> = props => {
|
|
const { pathname } = useRouter();
|
|
const [showButton, setShowButton] = React.useState(false);
|
|
const handleShow = () => {
|
|
setShowButton(!showButton);
|
|
};
|
|
return (
|
|
<Flex
|
|
flexDirection={['column', 'column', 'row']}
|
|
justifyContent="space-between"
|
|
borderTop={border()}
|
|
mt={space('extra-loose')}
|
|
>
|
|
<Flex>
|
|
<Box mt={space('extra-loose')} position="relative">
|
|
<Text
|
|
css={css({
|
|
...getHeadingStyles('h5'),
|
|
})}
|
|
>
|
|
Was this page helpful?
|
|
</Text>
|
|
<Stack isInline spacing={space('base-loose')} mt={space('base-loose')}>
|
|
<Icon onClick={() => handleShow()} icon={SadIcon} />
|
|
<Icon onClick={() => handleShow()} icon={NeutralIcon} />
|
|
<Icon onClick={() => handleShow()} icon={HappyIcon} />
|
|
</Stack>
|
|
</Box>
|
|
<FeedbackCard show={showButton} onClose={() => setShowButton(false)} />
|
|
</Flex>
|
|
<Flex
|
|
flexDirection="column"
|
|
justifyContent="flex-end"
|
|
align="flex-end"
|
|
mt={space(['extra-loose', 'extra-loose', 'base-loose'])}
|
|
>
|
|
<Link
|
|
href={`https://github.com/blockstack/docs.blockstack/tree/feat/next/src/pages${pathname}.md`}
|
|
target="_blank"
|
|
rel="nofollow noopener noreferrer"
|
|
fontSize="14px"
|
|
>
|
|
Edit this page on GitHub
|
|
</Link>
|
|
<StatusCheck mt={space('base-loose')} />
|
|
</Flex>
|
|
</Flex>
|
|
);
|
|
};
|
|
|