diff --git a/app/components/Modal.js b/app/components/Modal.js index 28a7ec8fb..c7488019a 100644 --- a/app/components/Modal.js +++ b/app/components/Modal.js @@ -51,7 +51,7 @@ const Modal = ({ {title &&

{title}

} - + esc {children} @@ -98,8 +98,8 @@ const Close = styled.a` position: fixed; top: 16px; right: 16px; - opacity: 0.5; - color: ${props => props.theme.textSecondary}; + opacity: 0.75; + color: ${props => props.theme.text}; &:hover { opacity: 1; diff --git a/app/components/Tip.js b/app/components/Tip.js deleted file mode 100644 index b57671837..000000000 --- a/app/components/Tip.js +++ /dev/null @@ -1,58 +0,0 @@ -// @flow -import * as React from 'react'; -import { observable } from 'mobx'; -import { observer } from 'mobx-react'; -import styled from 'styled-components'; -import { CloseIcon } from 'outline-icons'; -import Tooltip from './Tooltip'; -import Flex from 'shared/components/Flex'; - -type Props = { - id: string, - children: React.Node, - disabled?: boolean, -}; - -@observer -class Tip extends React.Component { - @observable - isHidden: boolean = window.localStorage.getItem(this.storageId) === 'hidden'; - - get storageId() { - return `tip-${this.props.id}`; - } - - hide = () => { - window.localStorage.setItem(this.storageId, 'hidden'); - this.isHidden = true; - }; - - render() { - const { children } = this.props; - if (this.props.disabled || this.isHidden) return null; - - return ( - - {children} - - - - - - ); - } -} - -const Close = styled(CloseIcon)` - margin-top: 8px; -`; - -const Wrapper = styled(Flex)` - background: ${props => props.theme.primary}; - color: ${props => props.theme.text}; - padding: 8px 16px; - border-radius: 4px; - font-weight: 400; -`; - -export default Tip; diff --git a/app/components/Tooltip.js b/app/components/Tooltip.js index f347f1200..bc126cbf3 100644 --- a/app/components/Tooltip.js +++ b/app/components/Tooltip.js @@ -5,6 +5,7 @@ import Tippy from '@tippy.js/react'; type Props = { tooltip: React.Node, + shortcut?: React.Node, placement?: 'top' | 'bottom' | 'left' | 'right', children: React.Node, delay?: number, @@ -19,6 +20,7 @@ class Tooltip extends React.Component { render() { const { + shortcut, tooltip, delay = 50, children, @@ -28,12 +30,22 @@ class Tooltip extends React.Component { } = this.props; const Component = block ? 'div' : 'span'; + let content = tooltip; + + if (shortcut) { + content = ( + + {tooltip} · {shortcut} + + ); + } + return ( { } } +const Shortcut = styled.kbd` + position: relative; + top: -2px; + + display: inline-block; + padding: 2px 4px; + font: 10px 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, + monospace; + line-height: 10px; + color: ${props => props.theme.tooltipBackground}; + vertical-align: middle; + background-color: ${props => props.theme.tooltipText}; + border-radius: 3px; +`; + const StyledTippy = styled(Tippy)` font-size: 13px; background-color: ${props => props.theme.tooltipBackground}; diff --git a/app/scenes/Collection.js b/app/scenes/Collection.js index 8da008a0d..605fa3ff0 100644 --- a/app/scenes/Collection.js +++ b/app/scenes/Collection.js @@ -24,6 +24,7 @@ import Search from 'scenes/Search'; import CollectionMenu from 'menus/CollectionMenu'; import Actions, { Action, Separator } from 'components/Actions'; import Heading from 'components/Heading'; +import Tooltip from 'components/Tooltip'; import CenteredContent from 'components/CenteredContent'; import { ListPlaceholder } from 'components/LoadingPlaceholder'; import Mask from 'components/Mask'; @@ -104,9 +105,16 @@ class CollectionScene extends React.Component { return ( - + + + diff --git a/app/scenes/Document/components/Header.js b/app/scenes/Document/components/Header.js index 4f1d0e9e4..2ac3fed12 100644 --- a/app/scenes/Document/components/Header.js +++ b/app/scenes/Document/components/Header.js @@ -19,6 +19,7 @@ import DocumentMenu from 'menus/DocumentMenu'; import NewChildDocumentMenu from 'menus/NewChildDocumentMenu'; import DocumentShare from 'scenes/DocumentShare'; import Button from 'components/Button'; +import Tooltip from 'components/Tooltip'; import Modal from 'components/Modal'; import Badge from 'components/Badge'; import Collaborators from 'components/Collaborators'; @@ -182,14 +183,21 @@ class Header extends React.Component { )} {canEdit && ( - + + )} {canEdit && @@ -198,9 +206,16 @@ class Header extends React.Component { } neutral> - New doc - + + + } /> diff --git a/app/scenes/Document/components/KeyboardShortcuts.js b/app/scenes/Document/components/KeyboardShortcuts.js index 5b7bfc008..e78f367e0 100644 --- a/app/scenes/Document/components/KeyboardShortcuts.js +++ b/app/scenes/Document/components/KeyboardShortcuts.js @@ -34,7 +34,13 @@ class KeyboardShortcutsButton extends React.Component {