Improve styles of onboarding tooltip

This commit is contained in:
fragosti
2018-06-15 13:17:02 -07:00
parent d0a3779091
commit 54f79c2798
7 changed files with 117 additions and 53 deletions

View File

@@ -1,8 +1,12 @@
import { colors } from '@0xproject/react-shared';
import * as React from 'react';
import { Button } from 'ts/components/ui/button';
import { Container } from 'ts/components/ui/container';
import { IconButton } from 'ts/components/ui/icon_button';
import { Island } from 'ts/components/ui/island';
import { Pointer } from 'ts/components/ui/pointer';
import { Pointer, PointerDirection } from 'ts/components/ui/pointer';
import { Text, Title } from 'ts/components/ui/text';
export type ContinueButtonDisplay = 'enabled' | 'disabled';
@@ -14,45 +18,70 @@ export interface OnboardingTooltipProps {
onClickNext: () => void;
onClickBack: () => void;
continueButtonDisplay?: ContinueButtonDisplay;
hideBackButton?: boolean;
hideNextButton?: boolean;
shouldHideBackButton?: boolean;
shouldHideNextButton?: boolean;
pointerDirection?: PointerDirection;
className?: string;
}
// TODO: Make this more general button.
export interface ContinueButtonProps {
display: ContinueButtonDisplay;
children?: string;
onClick: () => void;
}
export const ContinueButton: React.StatelessComponent<ContinueButtonProps> = (props: ContinueButtonProps) => {
const isDisabled = props.display === 'disabled';
return (
<button disabled={isDisabled} onClick={isDisabled ? undefined : props.onClick}>
{props.children}
</button>
);
};
export const OnboardingTooltip: React.StatelessComponent<OnboardingTooltipProps> = (props: OnboardingTooltipProps) => (
<Pointer direction="left">
export const OnboardingTooltip: React.StatelessComponent<OnboardingTooltipProps> = ({
title,
content,
continueButtonDisplay,
onClickNext,
onClickBack,
onClose,
shouldHideBackButton,
shouldHideNextButton,
pointerDirection,
className,
}) => (
<Pointer className={className} direction={pointerDirection}>
<Island>
<Container paddingRight="30px" paddingLeft="30px" maxWidth={350} paddingTop="15px" paddingBottom="15px">
<div className="flex flex-column">
{props.title}
{props.content}
{props.continueButtonDisplay && (
<ContinueButton onClick={props.onClickNext} display={props.continueButtonDisplay}>
<div className="flex justify-between">
<Title>{title}</Title>
<Container position="relative" bottom="20px" left="15px">
<IconButton color={colors.grey} iconName="zmdi-close" onClick={onClose}>
Close
</IconButton>
</Container>
</div>
<Container marginBottom="15px">
<Text>{content}</Text>
</Container>
{continueButtonDisplay && (
<Button
isDisabled={continueButtonDisplay === 'disabled'}
onClick={onClickNext}
fontColor={colors.white}
fontSize="15px"
backgroundColor={colors.mediumBlue}
>
Continue
</ContinueButton>
</Button>
)}
{!props.hideBackButton && <button onClick={props.onClickBack}>Back</button>}
{!props.hideNextButton && <button onClick={props.onClickNext}>Skip</button>}
<button onClick={props.onClose}>Close</button>
<Container className="flex justify-between" marginTop="15px">
{!shouldHideBackButton && (
<Text fontColor={colors.grey} onClick={onClickBack}>
Back
</Text>
)}
{!shouldHideNextButton && (
<Text fontColor={colors.grey} onClick={onClickNext}>
Skip
</Text>
)}
</Container>
</div>
</Container>
</Island>
</Pointer>
);
OnboardingTooltip.defaultProps = {
pointerDirection: 'left',
};
OnboardingTooltip.displayName = 'OnboardingTooltip';