From 6497665819648223fa671a5ee8f017bb1f794907 Mon Sep 17 00:00:00 2001 From: Baptiste Lemoine Date: Sun, 1 Nov 2020 12:10:34 +0100 Subject: [PATCH] icons for dropdown --- app/javascript/images/logo_cipherbliss.png | Bin 0 -> 17697 bytes .../mastodon/components/dropdown_menu.js | 4 +- .../mastodon/components/icon_button.js | 2 +- .../mastodon/components/status_action_bar.js | 279 +++++++++++------- .../mastodon/components/status_content.js | 78 +++-- .../compose/components/compose_form.js | 4 + .../mastodon/features/compose/index.js | 162 +++++++--- .../components/account_authorize.js | 33 ++- .../styles/bliss/_general_overrides.scss | 56 +++- 9 files changed, 424 insertions(+), 194 deletions(-) create mode 100755 app/javascript/images/logo_cipherbliss.png diff --git a/app/javascript/images/logo_cipherbliss.png b/app/javascript/images/logo_cipherbliss.png new file mode 100755 index 0000000000000000000000000000000000000000..40c7e37a737080f73b367ad703486b3d1f0b4b8d GIT binary patch literal 17697 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 literal 0 HcmV?d00001 diff --git a/app/javascript/mastodon/components/dropdown_menu.js b/app/javascript/mastodon/components/dropdown_menu.js index 09e3c9df8..4290927ca 100644 --- a/app/javascript/mastodon/components/dropdown_menu.js +++ b/app/javascript/mastodon/components/dropdown_menu.js @@ -128,11 +128,13 @@ class DropdownMenu extends React.PureComponent { return
  • ; } - const { text, href = '#', target = '_blank', method } = option; + const { text, href = '#', target = '_blank', method, iconName } = option; return (
  • + + {text}
  • diff --git a/app/javascript/mastodon/components/icon_button.js b/app/javascript/mastodon/components/icon_button.js index 7ec39198a..5b936083a 100644 --- a/app/javascript/mastodon/components/icon_button.js +++ b/app/javascript/mastodon/components/icon_button.js @@ -120,7 +120,7 @@ export default class IconButton extends React.PureComponent { }); if (typeof counter !== 'undefined') { - style.width = 'auto'; + style.width = '100%'; } return ( diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index 66b5a17ac..2b96cdf56 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -6,41 +6,41 @@ import IconButton from './icon_button'; import DropdownMenuContainer from '../containers/dropdown_menu_container'; import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { me, isStaff } from '../initial_state'; +import { isStaff, me } from '../initial_state'; import classNames from 'classnames'; const messages = defineMessages({ - delete: { id: 'status.delete', defaultMessage: 'Delete' }, - redraft: { id: 'status.redraft', defaultMessage: 'Delete & re-draft' }, - direct: { id: 'status.direct', defaultMessage: 'Direct message @{name}' }, - mention: { id: 'status.mention', defaultMessage: 'Mention @{name}' }, - mute: { id: 'account.mute', defaultMessage: 'Mute @{name}' }, - block: { id: 'account.block', defaultMessage: 'Block @{name}' }, - reply: { id: 'status.reply', defaultMessage: 'Reply' }, - share: { id: 'status.share', defaultMessage: 'Share' }, - more: { id: 'status.more', defaultMessage: 'More' }, - replyAll: { id: 'status.replyAll', defaultMessage: 'Reply to thread' }, - reblog: { id: 'status.reblog', defaultMessage: 'Boost' }, - reblog_private: { id: 'status.reblog_private', defaultMessage: 'Boost with original visibility' }, + delete : { id: 'status.delete', defaultMessage: 'Delete' }, + redraft : { id: 'status.redraft', defaultMessage: 'Delete & re-draft' }, + direct : { id: 'status.direct', defaultMessage: 'Direct message @{name}' }, + mention : { id: 'status.mention', defaultMessage: 'Mention @{name}' }, + mute : { id: 'account.mute', defaultMessage: 'Mute @{name}' }, + block : { id: 'account.block', defaultMessage: 'Block @{name}' }, + reply : { id: 'status.reply', defaultMessage: 'Reply' }, + share : { id: 'status.share', defaultMessage: 'Share' }, + more : { id: 'status.more', defaultMessage: 'More' }, + replyAll : { id: 'status.replyAll', defaultMessage: 'Reply to thread' }, + reblog : { id: 'status.reblog', defaultMessage: 'Boost' }, + reblog_private : { id: 'status.reblog_private', defaultMessage: 'Boost with original visibility' }, cancel_reblog_private: { id: 'status.cancel_reblog_private', defaultMessage: 'Unboost' }, - cannot_reblog: { id: 'status.cannot_reblog', defaultMessage: 'This post cannot be boosted' }, - favourite: { id: 'status.favourite', defaultMessage: 'Favourite' }, - bookmark: { id: 'status.bookmark', defaultMessage: 'Bookmark' }, - removeBookmark: { id: 'status.remove_bookmark', defaultMessage: 'Remove bookmark' }, - open: { id: 'status.open', defaultMessage: 'Expand this status' }, - report: { id: 'status.report', defaultMessage: 'Report @{name}' }, - muteConversation: { id: 'status.mute_conversation', defaultMessage: 'Mute conversation' }, - unmuteConversation: { id: 'status.unmute_conversation', defaultMessage: 'Unmute conversation' }, - pin: { id: 'status.pin', defaultMessage: 'Pin on profile' }, - unpin: { id: 'status.unpin', defaultMessage: 'Unpin from profile' }, - embed: { id: 'status.embed', defaultMessage: 'Embed' }, - admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' }, - admin_status: { id: 'status.admin_status', defaultMessage: 'Open this status in the moderation interface' }, - copy: { id: 'status.copy', defaultMessage: 'Copy link to status' }, - blockDomain: { id: 'account.block_domain', defaultMessage: 'Block domain {domain}' }, - unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' }, - unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' }, - unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' }, + cannot_reblog : { id: 'status.cannot_reblog', defaultMessage: 'This post cannot be boosted' }, + favourite : { id: 'status.favourite', defaultMessage: 'Favourite' }, + bookmark : { id: 'status.bookmark', defaultMessage: 'Bookmark' }, + removeBookmark : { id: 'status.remove_bookmark', defaultMessage: 'Remove bookmark' }, + open : { id: 'status.open', defaultMessage: 'Expand this status' }, + report : { id: 'status.report', defaultMessage: 'Report @{name}' }, + muteConversation : { id: 'status.mute_conversation', defaultMessage: 'Mute conversation' }, + unmuteConversation : { id: 'status.unmute_conversation', defaultMessage: 'Unmute conversation' }, + pin : { id: 'status.pin', defaultMessage: 'Pin on profile' }, + unpin : { id: 'status.unpin', defaultMessage: 'Unpin from profile' }, + embed : { id: 'status.embed', defaultMessage: 'Embed' }, + admin_account : { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' }, + admin_status : { id: 'status.admin_status', defaultMessage: 'Open this status in the moderation interface' }, + copy : { id: 'status.copy', defaultMessage: 'Copy link to status' }, + blockDomain : { id: 'account.block_domain', defaultMessage: 'Block domain {domain}' }, + unblockDomain : { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' }, + unmute : { id: 'account.unmute', defaultMessage: 'Unmute @{name}' }, + unblock : { id: 'account.unblock', defaultMessage: 'Unblock @{name}' }, }); const mapStateToProps = (state, { status }) => ({ @@ -56,28 +56,28 @@ class StatusActionBar extends ImmutablePureComponent { }; static propTypes = { - status: ImmutablePropTypes.map.isRequired, - relationship: ImmutablePropTypes.map, - onReply: PropTypes.func, - onFavourite: PropTypes.func, - onReblog: PropTypes.func, - onDelete: PropTypes.func, - onDirect: PropTypes.func, - onMention: PropTypes.func, - onMute: PropTypes.func, - onUnmute: PropTypes.func, - onBlock: PropTypes.func, - onUnblock: PropTypes.func, - onBlockDomain: PropTypes.func, - onUnblockDomain: PropTypes.func, - onReport: PropTypes.func, - onEmbed: PropTypes.func, + status : ImmutablePropTypes.map.isRequired, + relationship : ImmutablePropTypes.map, + onReply : PropTypes.func, + onFavourite : PropTypes.func, + onReblog : PropTypes.func, + onDelete : PropTypes.func, + onDirect : PropTypes.func, + onMention : PropTypes.func, + onMute : PropTypes.func, + onUnmute : PropTypes.func, + onBlock : PropTypes.func, + onUnblock : PropTypes.func, + onBlockDomain : PropTypes.func, + onUnblockDomain : PropTypes.func, + onReport : PropTypes.func, + onEmbed : PropTypes.func, onMuteConversation: PropTypes.func, - onPin: PropTypes.func, - onBookmark: PropTypes.func, - withDismiss: PropTypes.bool, - scrollKey: PropTypes.string, - intl: PropTypes.object.isRequired, + onPin : PropTypes.func, + onBookmark : PropTypes.func, + withDismiss : PropTypes.bool, + scrollKey : PropTypes.string, + intl : PropTypes.object.isRequired, }; // Avoid checking props that are functions (and whose equality will always @@ -86,7 +86,7 @@ class StatusActionBar extends ImmutablePureComponent { 'status', 'relationship', 'withDismiss', - ] + ]; handleReplyClick = () => { if (me) { @@ -94,16 +94,16 @@ class StatusActionBar extends ImmutablePureComponent { } else { this._openInteractionDialog('reply'); } - } + }; handleShareClick = () => { navigator.share({ text: this.props.status.get('search_index'), - url: this.props.status.get('url'), + url : this.props.status.get('url'), }).catch((e) => { if (e.name !== 'AbortError') console.error(e); }); - } + }; handleFavouriteClick = () => { if (me) { @@ -111,7 +111,7 @@ class StatusActionBar extends ImmutablePureComponent { } else { this._openInteractionDialog('favourite'); } - } + }; handleReblogClick = e => { if (me) { @@ -119,35 +119,35 @@ class StatusActionBar extends ImmutablePureComponent { } else { this._openInteractionDialog('reblog'); } - } + }; _openInteractionDialog = type => { window.open(`/interact/${this.props.status.get('id')}?type=${type}`, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes'); - } + }; handleBookmarkClick = () => { this.props.onBookmark(this.props.status); - } + }; handleDeleteClick = () => { this.props.onDelete(this.props.status, this.context.router.history); - } + }; handleRedraftClick = () => { this.props.onDelete(this.props.status, this.context.router.history, true); - } + }; handlePinClick = () => { this.props.onPin(this.props.status); - } + }; handleMentionClick = () => { this.props.onMention(this.props.status.get('account'), this.context.router.history); - } + }; handleDirectClick = () => { this.props.onDirect(this.props.status.get('account'), this.context.router.history); - } + }; handleMuteClick = () => { const { status, relationship, onMute, onUnmute } = this.props; @@ -158,7 +158,7 @@ class StatusActionBar extends ImmutablePureComponent { } else { onMute(account); } - } + }; handleBlockClick = () => { const { status, relationship, onBlock, onUnblock } = this.props; @@ -169,43 +169,43 @@ class StatusActionBar extends ImmutablePureComponent { } else { onBlock(status); } - } + }; handleBlockDomain = () => { const { status, onBlockDomain } = this.props; const account = status.get('account'); onBlockDomain(account.get('acct').split('@')[1]); - } + }; handleUnblockDomain = () => { const { status, onUnblockDomain } = this.props; const account = status.get('account'); onUnblockDomain(account.get('acct').split('@')[1]); - } + }; handleOpen = () => { this.context.router.history.push(`/statuses/${this.props.status.get('id')}`); - } + }; handleEmbed = () => { this.props.onEmbed(this.props.status); - } + }; handleReport = () => { this.props.onReport(this.props.status); - } + }; handleConversationMuteClick = () => { this.props.onMuteConversation(this.props.status); - } + }; handleCopy = () => { - const url = this.props.status.get('url'); + const url = this.props.status.get('url'); const textarea = document.createElement('textarea'); - textarea.textContent = url; + textarea.textContent = url; textarea.style.position = 'fixed'; document.body.appendChild(textarea); @@ -218,58 +218,97 @@ class StatusActionBar extends ImmutablePureComponent { } finally { document.body.removeChild(textarea); } - } + }; - render () { + render() { const { status, relationship, intl, withDismiss, scrollKey } = this.props; const mutingConversation = status.get('muted'); - const anonymousAccess = !me; - const publicStatus = ['public', 'unlisted'].includes(status.get('visibility')); - const account = status.get('account'); + const anonymousAccess = !me; + const publicStatus = ['public', 'unlisted'].includes(status.get('visibility')); + const account = status.get('account'); let menu = []; - menu.push({ text: intl.formatMessage(messages.open), action: this.handleOpen }); + menu.push({ text: intl.formatMessage(messages.open), action: this.handleOpen , iconName: 'arrow-right' }); if (publicStatus) { - menu.push({ text: intl.formatMessage(messages.copy), action: this.handleCopy }); - menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed }); + menu.push({ text: intl.formatMessage(messages.copy), action: this.handleCopy, iconName: 'copy' }); + menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed, iconName: 'screen' }); } - menu.push({ text: intl.formatMessage(status.get('bookmarked') ? messages.removeBookmark : messages.bookmark), action: this.handleBookmarkClick }); + menu.push({ + text : intl.formatMessage(status.get('bookmarked') ? messages.removeBookmark : messages.bookmark), + action: this.handleBookmarkClick, + iconName: 'bookmark', + }); menu.push(null); if (status.getIn(['account', 'id']) === me || withDismiss) { - menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick }); + menu.push({ + text : intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), + action: this.handleConversationMuteClick, iconName: 'hide', + }); menu.push(null); } if (status.getIn(['account', 'id']) === me) { if (publicStatus) { - menu.push({ text: intl.formatMessage(status.get('pinned') ? messages.unpin : messages.pin), action: this.handlePinClick }); + menu.push({ + text : intl.formatMessage(status.get('pinned') ? messages.unpin : messages.pin), + action: this.handlePinClick, + iconName: 'gears', + }); } menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick }); menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick }); } else { - menu.push({ text: intl.formatMessage(messages.mention, { name: account.get('username') }), action: this.handleMentionClick }); - menu.push({ text: intl.formatMessage(messages.direct, { name: account.get('username') }), action: this.handleDirectClick }); + menu.push({ + text : intl.formatMessage(messages.mention, { name: account.get('username') }), + action: this.handleMentionClick, + iconName: 'plane', + }); + menu.push({ + text : intl.formatMessage(messages.direct, { name: account.get('username') }), + action: this.handleDirectClick, + iconName: 'enveloppe-o', + }); menu.push(null); if (relationship && relationship.get('muting')) { - menu.push({ text: intl.formatMessage(messages.unmute, { name: account.get('username') }), action: this.handleMuteClick }); + menu.push({ + text : intl.formatMessage(messages.unmute, { name: account.get('username') }), + action: this.handleMuteClick, + iconName: 'times', + }); } else { - menu.push({ text: intl.formatMessage(messages.mute, { name: account.get('username') }), action: this.handleMuteClick }); + menu.push({ + text : intl.formatMessage(messages.mute, { name: account.get('username') }), + action: this.handleMuteClick, + iconName: 'times', + }); } if (relationship && relationship.get('blocking')) { - menu.push({ text: intl.formatMessage(messages.unblock, { name: account.get('username') }), action: this.handleBlockClick }); + menu.push({ + text : intl.formatMessage(messages.unblock, { name: account.get('username') }), + action: this.handleBlockClick, + iconName: 'plus', + }); } else { - menu.push({ text: intl.formatMessage(messages.block, { name: account.get('username') }), action: this.handleBlockClick }); + menu.push({ + text : intl.formatMessage(messages.block, { name: account.get('username') }), + action: this.handleBlockClick, + iconName: 'times', + }); } - menu.push({ text: intl.formatMessage(messages.report, { name: account.get('username') }), action: this.handleReport }); + menu.push({ + text : intl.formatMessage(messages.report, { name: account.get('username') }), + action: this.handleReport, + iconName: 'flag', + }); if (account.get('acct') !== account.get('username')) { const domain = account.get('acct').split('@')[1]; @@ -285,8 +324,18 @@ class StatusActionBar extends ImmutablePureComponent { if (isStaff) { menu.push(null); - menu.push({ text: intl.formatMessage(messages.admin_account, { name: account.get('username') }), href: `/admin/accounts/${status.getIn(['account', 'id'])}` }); - menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses/${status.get('id')}` }); + menu.push({ + text: intl.formatMessage(messages.admin_account, + { name: account.get('username') }), + href: `/admin/accounts/${status.getIn(['account', 'id'])}`, + iconName: 'gears', + + }); + menu.push({ + text: intl.formatMessage(messages.admin_status), + href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses/${status.get('id')}`, + iconName: 'menu', + }); } } @@ -314,14 +363,42 @@ class StatusActionBar extends ImmutablePureComponent { } const shareButton = ('share' in navigator) && publicStatus && ( - + ); return (
    - - - + + + {shareButton} @@ -336,8 +413,8 @@ class StatusActionBar extends ImmutablePureComponent { direction='right' title={intl.formatMessage(messages.more)} /> -
    - + + ); } diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index 266ebcd94..6f5a4ccf7 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -6,7 +6,6 @@ import { FormattedMessage } from 'react-intl'; import Permalink from './permalink'; import classnames from 'classnames'; import PollContainer from 'mastodon/containers/poll_container'; -import Icon from 'mastodon/components/icon'; import { autoPlayGif } from 'mastodon/initial_state'; const MAX_HEIGHT = 642; // 20px * 32 (+ 2px padding at the top) @@ -31,7 +30,7 @@ export default class StatusContent extends React.PureComponent { hidden: true, }; - _updateStatusLinks () { + _updateStatusLinks() { const node = this.node; if (!node) { @@ -65,18 +64,18 @@ export default class StatusContent extends React.PureComponent { if (this.props.status.get('collapsed', null) === null) { let collapsed = - this.props.collapsable - && this.props.onClick - && node.clientHeight > MAX_HEIGHT - && this.props.status.get('spoiler_text').length === 0; + this.props.collapsable + && this.props.onClick + && node.clientHeight > MAX_HEIGHT + && this.props.status.get('spoiler_text').length === 0; - if(this.props.onCollapsedToggle) this.props.onCollapsedToggle(collapsed); + if (this.props.onCollapsedToggle) this.props.onCollapsedToggle(collapsed); this.props.status.set('collapsed', collapsed); } } - _updateStatusEmojis () { + _updateStatusEmojis() { const node = this.node; if (!node || autoPlayGif) { @@ -97,12 +96,12 @@ export default class StatusContent extends React.PureComponent { } } - componentDidMount () { + componentDidMount() { this._updateStatusLinks(); this._updateStatusEmojis(); } - componentDidUpdate () { + componentDidUpdate() { this._updateStatusLinks(); this._updateStatusEmojis(); } @@ -140,8 +139,8 @@ export default class StatusContent extends React.PureComponent { return; } - const [ startX, startY ] = this.startXY; - const [ deltaX, deltaY ] = [Math.abs(e.clientX - startX), Math.abs(e.clientY - startY)]; + const [startX, startY] = this.startXY; + const [deltaX, deltaY] = [Math.abs(e.clientX - startX), Math.abs(e.clientY - startY)]; let element = e.target; while (element) { @@ -173,7 +172,7 @@ export default class StatusContent extends React.PureComponent { this.node = c; }; - render () { + render() { const { status } = this.props; if (status.get('content').length === 0) { @@ -202,10 +201,13 @@ export default class StatusContent extends React.PureComponent { className='status__content__read-more-button' onClick={this.props.onClick} > - + + + + ); @@ -215,10 +217,14 @@ export default class StatusContent extends React.PureComponent { onClick={this.props.onClick} key='read-more' > - + + + + + ); @@ -226,19 +232,37 @@ export default class StatusContent extends React.PureComponent { let mentionsPlaceholder = ''; const mentionLinks = status.get('mentions').map(item => ( - - @{item.get('username')} - + + @{item.get('username')} + )).reduce((aggregate, item) => [...aggregate, item, ' '], []); - const toggleText = hidden ? : ; + const toggleText = hidden ? () : (); if (hidden) { - mentionsPlaceholder =
    {mentionLinks}
    ; + mentionsPlaceholder =
    {mentionLinks}
    ; } return ( -
    +
    + + + ); } return ( -
    +
    {header} - {(multiColumn || isSearchPage) && } + {(multiColumn || isSearchPage) && }
    - {!isSearchPage &&
    + {!isSearchPage &&
    - -
    -
    } + logo + {/**/} +
    +
    } - + {({ x }) => ( -
    +
    -
    +
    )} -
    -
    -
    + +
    +
    ); } diff --git a/app/javascript/mastodon/features/follow_requests/components/account_authorize.js b/app/javascript/mastodon/features/follow_requests/components/account_authorize.js index c1522af45..e6fddfd6b 100644 --- a/app/javascript/mastodon/features/follow_requests/components/account_authorize.js +++ b/app/javascript/mastodon/features/follow_requests/components/account_authorize.js @@ -28,8 +28,7 @@ class AccountAuthorize extends ImmutablePureComponent { const { intl, account, onAuthorize, onReject } = this.props; const content = { __html: account.get('note_emojified') }; - - const fields = account.get('fields'); + const fields = account.get('fields'); return (
    @@ -46,7 +45,7 @@ class AccountAuthorize extends ImmutablePureComponent {
    {account.get('remote_url')} -
    +
    - {(account.get('followers_count'))} {(account.get('followers_count'))} + @@ -94,16 +94,21 @@ class AccountAuthorize extends ImmutablePureComponent {
    -
    -
    +
    + +
    +
    +
    ); diff --git a/app/javascript/styles/bliss/_general_overrides.scss b/app/javascript/styles/bliss/_general_overrides.scss index a17b2e4ff..a8b415870 100644 --- a/app/javascript/styles/bliss/_general_overrides.scss +++ b/app/javascript/styles/bliss/_general_overrides.scss @@ -1,3 +1,8 @@ +.columns-area__panels { + + background: url('../images/elephant_ui_plane.svg') no-repeat left bottom fixed, url('../images/logo_cipherbliss.png') no-repeat right bottom fixed; +} + .status__content { min-height: 5em; } @@ -21,11 +26,12 @@ display: inline-block; } - .fa{ - &:hover{ + .fa { + &:hover { color: $gold-star; } } + a { display: inline-block; padding: .5em; @@ -38,7 +44,8 @@ &:visited { color: #528dc8; } - &:hover{ + + &:hover { color: $gold-star; } @@ -61,10 +68,14 @@ .compose-form { .reply-indicator { - display: none; + display: block; } } +.autosuggest-textarea__textarea{ + color: #528dc8; +} + .account-authorize--more-data { padding: 1em; color: white; @@ -77,18 +88,51 @@ } } -.account__relationship{ - button{ +.account__relationship { + button { width: 10em; height: 3em; } } + .account--panel { margin-top: 1em; } .account--panel__button { + padding: 1em; + button { display: block; } } + +.status__content__read-more-button { + .fa{ + float:left; + } + .see-more { + opacity: 0; + transition: opacity ease 0.2s; + float:left; + margin-left: 1em; + } + &:hover .see-more{ + display: block; + opacity: 1; + } +} + +.dropdown-menu__item{ + .fa{ + margin-right:1em; + } +} + +@media all and (max-width: 600px) { + .columns-area__panels { + + background: none; + } + +}