-
Greg Fodor authoredGreg Fodor authored
entry-buttons.js 3.19 KiB
import React from "react";
import { FormattedMessage } from "react-intl";
import PropTypes from "prop-types";
import MobileDetect from "mobile-detect";
import MobileScreenEntryImg from "../assets/images/mobile_screen_entry.svg";
import DesktopScreenEntryImg from "../assets/images/desktop_screen_entry.svg";
import GenericVREntryImg from "../assets/images/generic_vr_entry.svg";
import GearVREntryImg from "../assets/images/gearvr_entry.svg";
import DaydreamEntryImg from "../assets/images/daydream_entry.svg";
import DeviceEntryImg from "../assets/images/device_entry.svg";
const mobiledetect = new MobileDetect(navigator.userAgent);
const EntryButton = props => (
<button className="entry-button" onClick={props.onClick}>
<img src={props.iconSrc} className="entry-button__icon" />
<div className="entry-button__label">
<div className="entry-button__label__contents">
<span>
<FormattedMessage id={props.prefixMessageId} />
</span>
<span className="entry-button--bolded">
<FormattedMessage id={props.mediumMessageId} />
</span>
{props.subtitle && (
<div className="entry-button__subtitle">
<FormattedMessage id={props.subtitle} />
</div>
)}
</div>
</div>
</button>
);
EntryButton.propTypes = {
onClick: PropTypes.func,
iconSrc: PropTypes.string,
prefixMessageId: PropTypes.string,
mediumMessageId: PropTypes.string,
subtitle: PropTypes.string,
isInHMD: PropTypes.bool
};
export const TwoDEntryButton = props => {
const entryButtonProps = {
...props,
iconSrc: mobiledetect.mobile() ? MobileScreenEntryImg : DesktopScreenEntryImg,
prefixMessageId: "entry.screen-prefix",
mediumMessageId: mobiledetect.mobile() ? "entry.mobile-screen" : "entry.desktop-screen"
};
return <EntryButton {...entryButtonProps} />;
};
export const GenericEntryButton = props => {
const entryButtonProps = {
...props,
iconSrc: GenericVREntryImg,
prefixMessageId: "entry.generic-prefix",
mediumMessageId: "entry.generic-medium",
subtitle: mobiledetect.mobile() ? null : "entry.generic-subtitle-desktop"
};
return <EntryButton {...entryButtonProps} />;
};
export const GearVREntryButton = props => {
const entryButtonProps = {
...props,
iconSrc: GearVREntryImg,
prefixMessageId: "entry.gearvr-prefix",
mediumMessageId: "entry.gearvr-medium"
};
return <EntryButton {...entryButtonProps} />;
};
export const DaydreamEntryButton = props => {
const entryButtonProps = {
...props,
iconSrc: DaydreamEntryImg,
prefixMessageId: "entry.daydream-prefix",
mediumMessageId: "entry.daydream-medium"
};
return <EntryButton {...entryButtonProps} />;
};
export const DeviceEntryButton = props => {
const entryButtonProps = {
...props,
iconSrc: DeviceEntryImg,
prefixMessageId: mobiledetect.mobile() ? "entry.device-prefix-mobile" : "entry.device-prefix-desktop",
mediumMessageId: "entry.device-medium"
};
entryButtonProps.subtitle = entryButtonProps.isInHMD
? "entry.device-subtitle-vr"
: mobiledetect.mobile() ? "entry.device-subtitle-mobile" : "entry.device-subtitle-desktop";
return <EntryButton {...entryButtonProps} />;
};