mirror of https://framagit.org/tykayn/mastodon.git
🎨 make avatars a bit bigger
Signed-off-by: Baptiste Lemoine <contact@cipherbliss.com>
This commit is contained in:
parent
9e79e11091
commit
fa91d39338
|
@ -37,27 +37,27 @@ class Account extends ImmutablePureComponent {
|
||||||
|
|
||||||
handleFollow = () => {
|
handleFollow = () => {
|
||||||
this.props.onFollow(this.props.account);
|
this.props.onFollow(this.props.account);
|
||||||
}
|
};
|
||||||
|
|
||||||
handleBlock = () => {
|
handleBlock = () => {
|
||||||
this.props.onBlock(this.props.account);
|
this.props.onBlock(this.props.account);
|
||||||
}
|
};
|
||||||
|
|
||||||
handleMute = () => {
|
handleMute = () => {
|
||||||
this.props.onMute(this.props.account);
|
this.props.onMute(this.props.account);
|
||||||
}
|
};
|
||||||
|
|
||||||
handleMuteNotifications = () => {
|
handleMuteNotifications = () => {
|
||||||
this.props.onMuteNotifications(this.props.account, true);
|
this.props.onMuteNotifications(this.props.account, true);
|
||||||
}
|
};
|
||||||
|
|
||||||
handleUnmuteNotifications = () => {
|
handleUnmuteNotifications = () => {
|
||||||
this.props.onMuteNotifications(this.props.account, false);
|
this.props.onMuteNotifications(this.props.account, false);
|
||||||
}
|
};
|
||||||
|
|
||||||
handleAction = () => {
|
handleAction = () => {
|
||||||
this.props.onActionClick(this.props.account);
|
this.props.onActionClick(this.props.account);
|
||||||
}
|
};
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
const { account, intl, hidden, onActionClick, actionIcon, actionTitle } = this.props;
|
const { account, intl, hidden, onActionClick, actionIcon, actionTitle } = this.props;
|
||||||
|
@ -111,7 +111,10 @@ class Account extends ImmutablePureComponent {
|
||||||
<div className='account'>
|
<div className='account'>
|
||||||
<div className='account__wrapper'>
|
<div className='account__wrapper'>
|
||||||
<Permalink key={account.get('id')} className='account__display-name' title={account.get('acct')} href={account.get('url')} to={`/accounts/${account.get('id')}`}>
|
<Permalink key={account.get('id')} className='account__display-name' title={account.get('acct')} href={account.get('url')} to={`/accounts/${account.get('id')}`}>
|
||||||
<div className='account__avatar-wrapper'><Avatar account={account} size={36} /></div>
|
<div className='account__avatar-wrapper'><Avatar
|
||||||
|
account={account}
|
||||||
|
size={55}
|
||||||
|
/></div >
|
||||||
<DisplayName account={account} />
|
<DisplayName account={account} />
|
||||||
</Permalink>
|
</Permalink>
|
||||||
|
|
||||||
|
|
|
@ -7,16 +7,16 @@ export default class Avatar extends React.PureComponent {
|
||||||
|
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
account: ImmutablePropTypes.map.isRequired,
|
account: ImmutablePropTypes.map.isRequired,
|
||||||
size: PropTypes.number.isRequired,
|
size : PropTypes.number.isRequired,
|
||||||
style: PropTypes.object,
|
style : PropTypes.object,
|
||||||
inline: PropTypes.bool,
|
inline : PropTypes.bool,
|
||||||
animate: PropTypes.bool,
|
animate: PropTypes.bool,
|
||||||
};
|
};
|
||||||
|
|
||||||
static defaultProps = {
|
static defaultProps = {
|
||||||
animate: autoPlayGif,
|
animate: autoPlayGif,
|
||||||
size: 20,
|
size : 20,
|
||||||
inline: false,
|
inline : false,
|
||||||
};
|
};
|
||||||
|
|
||||||
state = {
|
state = {
|
||||||
|
@ -26,14 +26,14 @@ export default class Avatar extends React.PureComponent {
|
||||||
handleMouseEnter = () => {
|
handleMouseEnter = () => {
|
||||||
if (this.props.animate) return;
|
if (this.props.animate) return;
|
||||||
this.setState({ hovering: true });
|
this.setState({ hovering: true });
|
||||||
}
|
};
|
||||||
|
|
||||||
handleMouseLeave = () => {
|
handleMouseLeave = () => {
|
||||||
if (this.props.animate) return;
|
if (this.props.animate) return;
|
||||||
this.setState({ hovering: false });
|
this.setState({ hovering: false });
|
||||||
}
|
};
|
||||||
|
|
||||||
render () {
|
render() {
|
||||||
const { account, size, animate, inline } = this.props;
|
const { account, size, animate, inline } = this.props;
|
||||||
const { hovering } = this.state;
|
const { hovering } = this.state;
|
||||||
|
|
||||||
|
@ -48,8 +48,8 @@ export default class Avatar extends React.PureComponent {
|
||||||
|
|
||||||
const style = {
|
const style = {
|
||||||
...this.props.style,
|
...this.props.style,
|
||||||
width: `${size}px`,
|
width : `${size}px`,
|
||||||
height: `${size}px`,
|
height : `${size}px`,
|
||||||
backgroundSize: `${size}px ${size}px`,
|
backgroundSize: `${size}px ${size}px`,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -503,12 +503,12 @@ class Status extends ImmutablePureComponent {
|
||||||
if (otherAccounts && otherAccounts.size > 0) {
|
if (otherAccounts && otherAccounts.size > 0) {
|
||||||
statusAvatar = (<AvatarComposite
|
statusAvatar = (<AvatarComposite
|
||||||
accounts={otherAccounts}
|
accounts={otherAccounts}
|
||||||
size={48}
|
size={55}
|
||||||
/>);
|
/>);
|
||||||
} else if (account === undefined || account === null) {
|
} else if (account === undefined || account === null) {
|
||||||
statusAvatar = (<Avatar
|
statusAvatar = (<Avatar
|
||||||
account={status.get('account')}
|
account={status.get('account')}
|
||||||
size={48}
|
size={55}
|
||||||
/>);
|
/>);
|
||||||
} else {
|
} else {
|
||||||
statusAvatar = (<AvatarOverlay
|
statusAvatar = (<AvatarOverlay
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
import { defineMessages, FormattedMessage, injectIntl } from 'react-intl';
|
||||||
import Button from 'mastodon/components/button';
|
import Button from 'mastodon/components/button';
|
||||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||||
import { autoPlayGif, me, isStaff } from 'mastodon/initial_state';
|
import { autoPlayGif, isStaff, me } from 'mastodon/initial_state';
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import Icon from 'mastodon/components/icon';
|
import Icon from 'mastodon/components/icon';
|
||||||
import Avatar from 'mastodon/components/avatar';
|
import Avatar from 'mastodon/components/avatar';
|
||||||
|
@ -70,7 +70,7 @@ class Header extends ImmutablePureComponent {
|
||||||
|
|
||||||
openEditProfile = () => {
|
openEditProfile = () => {
|
||||||
window.open('/settings/profile', '_blank');
|
window.open('/settings/profile', '_blank');
|
||||||
}
|
};
|
||||||
|
|
||||||
isStatusesPageActive = (match, location) => {
|
isStatusesPageActive = (match, location) => {
|
||||||
if (!match) {
|
if (!match) {
|
||||||
|
@ -78,7 +78,7 @@ class Header extends ImmutablePureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
return !location.pathname.match(/\/(followers|following)\/?$/);
|
return !location.pathname.match(/\/(followers|following)\/?$/);
|
||||||
}
|
};
|
||||||
|
|
||||||
_updateEmojis () {
|
_updateEmojis () {
|
||||||
const node = this.node;
|
const node = this.node;
|
||||||
|
@ -111,15 +111,15 @@ class Header extends ImmutablePureComponent {
|
||||||
|
|
||||||
handleEmojiMouseEnter = ({ target }) => {
|
handleEmojiMouseEnter = ({ target }) => {
|
||||||
target.src = target.getAttribute('data-original');
|
target.src = target.getAttribute('data-original');
|
||||||
}
|
};
|
||||||
|
|
||||||
handleEmojiMouseLeave = ({ target }) => {
|
handleEmojiMouseLeave = ({ target }) => {
|
||||||
target.src = target.getAttribute('data-static');
|
target.src = target.getAttribute('data-static');
|
||||||
}
|
};
|
||||||
|
|
||||||
setRef = (c) => {
|
setRef = (c) => {
|
||||||
this.node = c;
|
this.node = c;
|
||||||
}
|
};
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
const { account, intl, domain, identity_proofs } = this.props;
|
const { account, intl, domain, identity_proofs } = this.props;
|
||||||
|
@ -263,7 +263,10 @@ class Header extends ImmutablePureComponent {
|
||||||
<div className='account__header__bar'>
|
<div className='account__header__bar'>
|
||||||
<div className='account__header__tabs'>
|
<div className='account__header__tabs'>
|
||||||
<a className='avatar' href={account.get('url')} rel='noopener noreferrer' target='_blank'>
|
<a className='avatar' href={account.get('url')} rel='noopener noreferrer' target='_blank'>
|
||||||
<Avatar account={account} size={90} />
|
<Avatar
|
||||||
|
account={account}
|
||||||
|
size={120}
|
||||||
|
/>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<div className='spacer' />
|
<div className='spacer' />
|
||||||
|
|
|
@ -26,7 +26,7 @@ export default class NavigationBar extends ImmutablePureComponent {
|
||||||
<span style={{ display: 'none' }}>{this.props.account.get('acct')}</span >
|
<span style={{ display: 'none' }}>{this.props.account.get('acct')}</span >
|
||||||
<Avatar
|
<Avatar
|
||||||
account={this.props.account}
|
account={this.props.account}
|
||||||
size={48}
|
size={55}
|
||||||
/>
|
/>
|
||||||
</Permalink >
|
</Permalink >
|
||||||
|
|
||||||
|
|
|
@ -179,7 +179,7 @@ class Conversation extends ImmutablePureComponent {
|
||||||
<div className='conversation__avatar'>
|
<div className='conversation__avatar'>
|
||||||
<AvatarComposite
|
<AvatarComposite
|
||||||
accounts={accounts}
|
accounts={accounts}
|
||||||
size={48}
|
size={55}
|
||||||
/>
|
/>
|
||||||
</div >
|
</div >
|
||||||
|
|
||||||
|
|
|
@ -9,10 +9,10 @@ import DisplayName from 'mastodon/components/display_name';
|
||||||
import Permalink from 'mastodon/components/permalink';
|
import Permalink from 'mastodon/components/permalink';
|
||||||
import RelativeTimestamp from 'mastodon/components/relative_timestamp';
|
import RelativeTimestamp from 'mastodon/components/relative_timestamp';
|
||||||
import IconButton from 'mastodon/components/icon_button';
|
import IconButton from 'mastodon/components/icon_button';
|
||||||
import { FormattedMessage, injectIntl, defineMessages } from 'react-intl';
|
import { defineMessages, FormattedMessage, injectIntl } from 'react-intl';
|
||||||
import { autoPlayGif, me, unfollowModal } from 'mastodon/initial_state';
|
import { autoPlayGif, me, unfollowModal } from 'mastodon/initial_state';
|
||||||
import { shortNumberFormat } from 'mastodon/utils/numbers';
|
import { shortNumberFormat } from 'mastodon/utils/numbers';
|
||||||
import { followAccount, unfollowAccount, blockAccount, unblockAccount, unmuteAccount } from 'mastodon/actions/accounts';
|
import { blockAccount, followAccount, unblockAccount, unfollowAccount, unmuteAccount } from 'mastodon/actions/accounts';
|
||||||
import { openModal } from 'mastodon/actions/modal';
|
import { openModal } from 'mastodon/actions/modal';
|
||||||
import { initMuteModal } from 'mastodon/actions/mutes';
|
import { initMuteModal } from 'mastodon/actions/mutes';
|
||||||
|
|
||||||
|
@ -113,27 +113,27 @@ class AccountCard extends ImmutablePureComponent {
|
||||||
|
|
||||||
handleEmojiMouseEnter = ({ target }) => {
|
handleEmojiMouseEnter = ({ target }) => {
|
||||||
target.src = target.getAttribute('data-original');
|
target.src = target.getAttribute('data-original');
|
||||||
}
|
};
|
||||||
|
|
||||||
handleEmojiMouseLeave = ({ target }) => {
|
handleEmojiMouseLeave = ({ target }) => {
|
||||||
target.src = target.getAttribute('data-static');
|
target.src = target.getAttribute('data-static');
|
||||||
}
|
};
|
||||||
|
|
||||||
handleFollow = () => {
|
handleFollow = () => {
|
||||||
this.props.onFollow(this.props.account);
|
this.props.onFollow(this.props.account);
|
||||||
}
|
};
|
||||||
|
|
||||||
handleBlock = () => {
|
handleBlock = () => {
|
||||||
this.props.onBlock(this.props.account);
|
this.props.onBlock(this.props.account);
|
||||||
}
|
};
|
||||||
|
|
||||||
handleMute = () => {
|
handleMute = () => {
|
||||||
this.props.onMute(this.props.account);
|
this.props.onMute(this.props.account);
|
||||||
}
|
};
|
||||||
|
|
||||||
setRef = (c) => {
|
setRef = (c) => {
|
||||||
this.node = c;
|
this.node = c;
|
||||||
}
|
};
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
const { account, intl } = this.props;
|
const { account, intl } = this.props;
|
||||||
|
@ -165,7 +165,10 @@ class AccountCard extends ImmutablePureComponent {
|
||||||
|
|
||||||
<div className='directory__card__bar'>
|
<div className='directory__card__bar'>
|
||||||
<Permalink className='directory__card__bar__name' href={account.get('url')} to={`/accounts/${account.get('id')}`}>
|
<Permalink className='directory__card__bar__name' href={account.get('url')} to={`/accounts/${account.get('id')}`}>
|
||||||
<Avatar account={account} size={48} />
|
<Avatar
|
||||||
|
account={account}
|
||||||
|
size={55}
|
||||||
|
/>
|
||||||
<DisplayName account={account} />
|
<DisplayName account={account} />
|
||||||
</Permalink>
|
</Permalink>
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,10 @@ class AccountAuthorize extends ImmutablePureComponent {
|
||||||
<div className='account-authorize__wrapper'>
|
<div className='account-authorize__wrapper'>
|
||||||
<div className='account-authorize'>
|
<div className='account-authorize'>
|
||||||
<Permalink href={account.get('url')} to={`/accounts/${account.get('id')}`} className='detailed-status__display-name'>
|
<Permalink href={account.get('url')} to={`/accounts/${account.get('id')}`} className='detailed-status__display-name'>
|
||||||
<div className='account-authorize__avatar'><Avatar account={account} size={48} /></div>
|
<div className='account-authorize__avatar'><Avatar
|
||||||
|
account={account}
|
||||||
|
size={55}
|
||||||
|
/></div >
|
||||||
<DisplayName account={account} />
|
<DisplayName account={account} />
|
||||||
</Permalink>
|
</Permalink>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
import { injectIntl, FormattedMessage, defineMessages } from 'react-intl';
|
import { defineMessages, FormattedMessage, injectIntl } from 'react-intl';
|
||||||
import { HotKeys } from 'react-hotkeys';
|
import { HotKeys } from 'react-hotkeys';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||||
|
@ -13,10 +13,10 @@ import Permalink from 'mastodon/components/permalink';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
favourite: { id: 'notification.favourite', defaultMessage: '{name} favourited your status' },
|
favourite: { id: 'notification.favourite', defaultMessage: '{name} favourited your status' },
|
||||||
follow: { id: 'notification.follow', defaultMessage: '{name} followed you' },
|
follow : { id: 'notification.follow', defaultMessage: '{name} followed you' },
|
||||||
ownPoll: { id: 'notification.own_poll', defaultMessage: 'Your poll has ended' },
|
ownPoll : { id: 'notification.own_poll', defaultMessage: 'Your poll has ended' },
|
||||||
poll: { id: 'notification.poll', defaultMessage: 'A poll you have voted in has ended' },
|
poll : { id: 'notification.poll', defaultMessage: 'A poll you have voted in has ended' },
|
||||||
reblog: { id: 'notification.reblog', defaultMessage: '{name} boosted your status' },
|
reblog : { id: 'notification.reblog', defaultMessage: '{name} boosted your status' },
|
||||||
});
|
});
|
||||||
|
|
||||||
const notificationForScreenReader = (intl, message, timestamp) => {
|
const notificationForScreenReader = (intl, message, timestamp) => {
|
||||||
|
@ -35,31 +35,31 @@ class Notification extends ImmutablePureComponent {
|
||||||
};
|
};
|
||||||
|
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
notification: ImmutablePropTypes.map.isRequired,
|
notification : ImmutablePropTypes.map.isRequired,
|
||||||
hidden: PropTypes.bool,
|
hidden : PropTypes.bool,
|
||||||
onMoveUp: PropTypes.func.isRequired,
|
onMoveUp : PropTypes.func.isRequired,
|
||||||
onMoveDown: PropTypes.func.isRequired,
|
onMoveDown : PropTypes.func.isRequired,
|
||||||
onMention: PropTypes.func.isRequired,
|
onMention : PropTypes.func.isRequired,
|
||||||
onFavourite: PropTypes.func.isRequired,
|
onFavourite : PropTypes.func.isRequired,
|
||||||
onReblog: PropTypes.func.isRequired,
|
onReblog : PropTypes.func.isRequired,
|
||||||
onToggleHidden: PropTypes.func.isRequired,
|
onToggleHidden : PropTypes.func.isRequired,
|
||||||
status: ImmutablePropTypes.map,
|
status : ImmutablePropTypes.map,
|
||||||
intl: PropTypes.object.isRequired,
|
intl : PropTypes.object.isRequired,
|
||||||
getScrollPosition: PropTypes.func,
|
getScrollPosition : PropTypes.func,
|
||||||
updateScrollBottom: PropTypes.func,
|
updateScrollBottom: PropTypes.func,
|
||||||
cacheMediaWidth: PropTypes.func,
|
cacheMediaWidth : PropTypes.func,
|
||||||
cachedMediaWidth: PropTypes.number,
|
cachedMediaWidth : PropTypes.number,
|
||||||
};
|
};
|
||||||
|
|
||||||
handleMoveUp = () => {
|
handleMoveUp = () => {
|
||||||
const { notification, onMoveUp } = this.props;
|
const { notification, onMoveUp } = this.props;
|
||||||
onMoveUp(notification.get('id'));
|
onMoveUp(notification.get('id'));
|
||||||
}
|
};
|
||||||
|
|
||||||
handleMoveDown = () => {
|
handleMoveDown = () => {
|
||||||
const { notification, onMoveDown } = this.props;
|
const { notification, onMoveDown } = this.props;
|
||||||
onMoveDown(notification.get('id'));
|
onMoveDown(notification.get('id'));
|
||||||
}
|
};
|
||||||
|
|
||||||
handleOpen = () => {
|
handleOpen = () => {
|
||||||
const { notification } = this.props;
|
const { notification } = this.props;
|
||||||
|
@ -69,94 +69,131 @@ class Notification extends ImmutablePureComponent {
|
||||||
} else {
|
} else {
|
||||||
this.handleOpenProfile();
|
this.handleOpenProfile();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
handleOpenProfile = () => {
|
handleOpenProfile = () => {
|
||||||
const { notification } = this.props;
|
const { notification } = this.props;
|
||||||
this.context.router.history.push(`/accounts/${notification.getIn(['account', 'id'])}`);
|
this.context.router.history.push(`/accounts/${notification.getIn(['account', 'id'])}`);
|
||||||
}
|
};
|
||||||
|
|
||||||
handleMention = e => {
|
handleMention = e => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
const { notification, onMention } = this.props;
|
const { notification, onMention } = this.props;
|
||||||
onMention(notification.get('account'), this.context.router.history);
|
onMention(notification.get('account'), this.context.router.history);
|
||||||
}
|
};
|
||||||
|
|
||||||
handleHotkeyFavourite = () => {
|
handleHotkeyFavourite = () => {
|
||||||
const { status } = this.props;
|
const { status } = this.props;
|
||||||
if (status) this.props.onFavourite(status);
|
if (status) this.props.onFavourite(status);
|
||||||
}
|
};
|
||||||
|
|
||||||
handleHotkeyBoost = e => {
|
handleHotkeyBoost = e => {
|
||||||
const { status } = this.props;
|
const { status } = this.props;
|
||||||
if (status) this.props.onReblog(status, e);
|
if (status) this.props.onReblog(status, e);
|
||||||
}
|
};
|
||||||
|
|
||||||
handleHotkeyToggleHidden = () => {
|
handleHotkeyToggleHidden = () => {
|
||||||
const { status } = this.props;
|
const { status } = this.props;
|
||||||
if (status) this.props.onToggleHidden(status);
|
if (status) this.props.onToggleHidden(status);
|
||||||
}
|
};
|
||||||
|
|
||||||
getHandlers () {
|
getHandlers() {
|
||||||
return {
|
return {
|
||||||
reply: this.handleMention,
|
reply : this.handleMention,
|
||||||
favourite: this.handleHotkeyFavourite,
|
favourite : this.handleHotkeyFavourite,
|
||||||
boost: this.handleHotkeyBoost,
|
boost : this.handleHotkeyBoost,
|
||||||
mention: this.handleMention,
|
mention : this.handleMention,
|
||||||
open: this.handleOpen,
|
open : this.handleOpen,
|
||||||
openProfile: this.handleOpenProfile,
|
openProfile : this.handleOpenProfile,
|
||||||
moveUp: this.handleMoveUp,
|
moveUp : this.handleMoveUp,
|
||||||
moveDown: this.handleMoveDown,
|
moveDown : this.handleMoveDown,
|
||||||
toggleHidden: this.handleHotkeyToggleHidden,
|
toggleHidden: this.handleHotkeyToggleHidden,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
renderFollow (notification, account, link) {
|
renderFollow(notification, account, link) {
|
||||||
const { intl } = this.props;
|
const { intl } = this.props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<HotKeys handlers={this.getHandlers()}>
|
<HotKeys handlers={this.getHandlers()}>
|
||||||
<div className='notification notification-follow focusable' tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage(messages.follow, { name: account.get('acct') }), notification.get('created_at'))}>
|
<div
|
||||||
<div className='notification__message'>
|
className='notification notification-follow focusable'
|
||||||
<div className='notification__favourite-icon-wrapper'>
|
tabIndex='0'
|
||||||
<Icon id='user-plus' fixedWidth />
|
aria-label={notificationForScreenReader(intl, intl.formatMessage(messages.follow, { name: account.get('acct') }), notification.get('created_at'))}
|
||||||
</div>
|
>
|
||||||
|
|
||||||
<span title={notification.get('created_at')}>
|
|
||||||
<FormattedMessage id='notification.follow' defaultMessage='{name} followed you' values={{ name: link }} />
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<AccountContainer id={account.get('id')} hidden={this.props.hidden} />
|
<span title={notification.get('created_at')}>
|
||||||
</div>
|
<span className='media'>
|
||||||
</HotKeys>
|
<span className='media-left'>
|
||||||
|
<AccountContainer
|
||||||
|
id={account.get('id')}
|
||||||
|
hidden={this.props.hidden}
|
||||||
|
/>
|
||||||
|
</span >
|
||||||
|
<span className='media-center'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='notification.follow'
|
||||||
|
defaultMessage='{name} followed you'
|
||||||
|
values={{ name: link }}
|
||||||
|
/>
|
||||||
|
</span >
|
||||||
|
<span className='media-right'>
|
||||||
|
<Icon
|
||||||
|
id='user-plus'
|
||||||
|
fixedWidth
|
||||||
|
/>
|
||||||
|
</span >
|
||||||
|
</span >
|
||||||
|
</span >
|
||||||
|
|
||||||
|
</div >
|
||||||
|
</HotKeys >
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
renderFollowRequest (notification, account, link) {
|
renderFollowRequest(notification, account, link) {
|
||||||
const { intl } = this.props;
|
const { intl } = this.props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<HotKeys handlers={this.getHandlers()}>
|
<HotKeys handlers={this.getHandlers()}>
|
||||||
<div className='notification notification-follow-request focusable' tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage({ id: 'notification.follow_request', defaultMessage: '{name} has requested to follow you' }, { name: account.get('acct') }), notification.get('created_at'))}>
|
<div
|
||||||
|
className='notification notification-follow-request focusable'
|
||||||
|
tabIndex='0'
|
||||||
|
aria-label={notificationForScreenReader(intl, intl.formatMessage({
|
||||||
|
id : 'notification.follow_request',
|
||||||
|
defaultMessage: '{name} has requested to follow you',
|
||||||
|
}, { name: account.get('acct') }), notification.get('created_at'))}
|
||||||
|
>
|
||||||
<div className='notification__message'>
|
<div className='notification__message'>
|
||||||
<div className='notification__favourite-icon-wrapper'>
|
<div className='notification__favourite-icon-wrapper'>
|
||||||
<Icon id='user' fixedWidth />
|
<Icon
|
||||||
</div>
|
id='user'
|
||||||
|
fixedWidth
|
||||||
|
/>
|
||||||
|
</div >
|
||||||
|
|
||||||
<span title={notification.get('created_at')}>
|
<span title={notification.get('created_at')}>
|
||||||
<FormattedMessage id='notification.follow_request' defaultMessage='{name} has requested to follow you' values={{ name: link }} />
|
<FormattedMessage
|
||||||
</span>
|
id='notification.follow_request'
|
||||||
</div>
|
defaultMessage='{name} has requested to follow you'
|
||||||
|
values={{ name: link }}
|
||||||
|
/>
|
||||||
|
</span >
|
||||||
|
</div >
|
||||||
|
|
||||||
<FollowRequestContainer id={account.get('id')} withNote={false} hidden={this.props.hidden} />
|
<FollowRequestContainer
|
||||||
</div>
|
id={account.get('id')}
|
||||||
</HotKeys>
|
withNote={false}
|
||||||
|
hidden={this.props.hidden}
|
||||||
|
/>
|
||||||
|
</div >
|
||||||
|
</HotKeys >
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
renderMention (notification) {
|
renderMention(notification) {
|
||||||
return (
|
return (
|
||||||
<StatusContainer
|
<StatusContainer
|
||||||
id={notification.get('status')}
|
id={notification.get('status')}
|
||||||
|
@ -173,21 +210,33 @@ class Notification extends ImmutablePureComponent {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
renderFavourite (notification, link) {
|
renderFavourite(notification, link) {
|
||||||
const { intl } = this.props;
|
const { intl } = this.props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<HotKeys handlers={this.getHandlers()}>
|
<HotKeys handlers={this.getHandlers()}>
|
||||||
<div className='notification notification-favourite focusable' tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage(messages.favourite, { name: notification.getIn(['account', 'acct']) }), notification.get('created_at'))}>
|
<div
|
||||||
|
className='notification notification-favourite focusable'
|
||||||
|
tabIndex='0'
|
||||||
|
aria-label={notificationForScreenReader(intl, intl.formatMessage(messages.favourite, { name: notification.getIn(['account', 'acct']) }), notification.get('created_at'))}
|
||||||
|
>
|
||||||
<div className='notification__message'>
|
<div className='notification__message'>
|
||||||
<div className='notification__favourite-icon-wrapper'>
|
<div className='notification__favourite-icon-wrapper'>
|
||||||
<Icon id='star' className='star-icon' fixedWidth />
|
<Icon
|
||||||
</div>
|
id='star'
|
||||||
|
className='star-icon'
|
||||||
|
fixedWidth
|
||||||
|
/>
|
||||||
|
</div >
|
||||||
|
|
||||||
<span title={notification.get('created_at')}>
|
<span title={notification.get('created_at')}>
|
||||||
<FormattedMessage id='notification.favourite' defaultMessage='{name} favourited your status' values={{ name: link }} />
|
<FormattedMessage
|
||||||
</span>
|
id='notification.favourite'
|
||||||
</div>
|
defaultMessage='{name} favourited your status'
|
||||||
|
values={{ name: link }}
|
||||||
|
/>
|
||||||
|
</span >
|
||||||
|
</div >
|
||||||
|
|
||||||
<StatusContainer
|
<StatusContainer
|
||||||
id={notification.get('status')}
|
id={notification.get('status')}
|
||||||
|
@ -200,26 +249,37 @@ class Notification extends ImmutablePureComponent {
|
||||||
cachedMediaWidth={this.props.cachedMediaWidth}
|
cachedMediaWidth={this.props.cachedMediaWidth}
|
||||||
cacheMediaWidth={this.props.cacheMediaWidth}
|
cacheMediaWidth={this.props.cacheMediaWidth}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div >
|
||||||
</HotKeys>
|
</HotKeys >
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
renderReblog (notification, link) {
|
renderReblog(notification, link) {
|
||||||
const { intl } = this.props;
|
const { intl } = this.props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<HotKeys handlers={this.getHandlers()}>
|
<HotKeys handlers={this.getHandlers()}>
|
||||||
<div className='notification notification-reblog focusable' tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage(messages.reblog, { name: notification.getIn(['account', 'acct']) }), notification.get('created_at'))}>
|
<div
|
||||||
|
className='notification notification-reblog focusable'
|
||||||
|
tabIndex='0'
|
||||||
|
aria-label={notificationForScreenReader(intl, intl.formatMessage(messages.reblog, { name: notification.getIn(['account', 'acct']) }), notification.get('created_at'))}
|
||||||
|
>
|
||||||
<div className='notification__message'>
|
<div className='notification__message'>
|
||||||
<div className='notification__favourite-icon-wrapper'>
|
<div className='notification__favourite-icon-wrapper'>
|
||||||
<Icon id='retweet' fixedWidth />
|
<Icon
|
||||||
</div>
|
id='retweet'
|
||||||
|
fixedWidth
|
||||||
|
/>
|
||||||
|
</div >
|
||||||
|
|
||||||
<span title={notification.get('created_at')}>
|
<span title={notification.get('created_at')}>
|
||||||
<FormattedMessage id='notification.reblog' defaultMessage='{name} boosted your status' values={{ name: link }} />
|
<FormattedMessage
|
||||||
</span>
|
id='notification.reblog'
|
||||||
</div>
|
defaultMessage='{name} boosted your status'
|
||||||
|
values={{ name: link }}
|
||||||
|
/>
|
||||||
|
</span >
|
||||||
|
</div >
|
||||||
|
|
||||||
<StatusContainer
|
<StatusContainer
|
||||||
id={notification.get('status')}
|
id={notification.get('status')}
|
||||||
|
@ -232,32 +292,45 @@ class Notification extends ImmutablePureComponent {
|
||||||
cachedMediaWidth={this.props.cachedMediaWidth}
|
cachedMediaWidth={this.props.cachedMediaWidth}
|
||||||
cacheMediaWidth={this.props.cacheMediaWidth}
|
cacheMediaWidth={this.props.cacheMediaWidth}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div >
|
||||||
</HotKeys>
|
</HotKeys >
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
renderPoll (notification, account) {
|
renderPoll(notification, account) {
|
||||||
const { intl } = this.props;
|
const { intl } = this.props;
|
||||||
const ownPoll = me === account.get('id');
|
const ownPoll = me === account.get('id');
|
||||||
const message = ownPoll ? intl.formatMessage(messages.ownPoll) : intl.formatMessage(messages.poll);
|
const message = ownPoll ? intl.formatMessage(messages.ownPoll) : intl.formatMessage(messages.poll);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<HotKeys handlers={this.getHandlers()}>
|
<HotKeys handlers={this.getHandlers()}>
|
||||||
<div className='notification notification-poll focusable' tabIndex='0' aria-label={notificationForScreenReader(intl, message, notification.get('created_at'))}>
|
<div
|
||||||
|
className='notification notification-poll focusable'
|
||||||
|
tabIndex='0'
|
||||||
|
aria-label={notificationForScreenReader(intl, message, notification.get('created_at'))}
|
||||||
|
>
|
||||||
<div className='notification__message'>
|
<div className='notification__message'>
|
||||||
<div className='notification__favourite-icon-wrapper'>
|
<div className='notification__favourite-icon-wrapper'>
|
||||||
<Icon id='tasks' fixedWidth />
|
<Icon
|
||||||
</div>
|
id='tasks'
|
||||||
|
fixedWidth
|
||||||
|
/>
|
||||||
|
</div >
|
||||||
|
|
||||||
<span title={notification.get('created_at')}>
|
<span title={notification.get('created_at')}>
|
||||||
{ownPoll ? (
|
{ownPoll ? (
|
||||||
<FormattedMessage id='notification.own_poll' defaultMessage='Your poll has ended' />
|
<FormattedMessage
|
||||||
|
id='notification.own_poll'
|
||||||
|
defaultMessage='Your poll has ended'
|
||||||
|
/>
|
||||||
) : (
|
) : (
|
||||||
<FormattedMessage id='notification.poll' defaultMessage='A poll you have voted in has ended' />
|
<FormattedMessage
|
||||||
|
id='notification.poll'
|
||||||
|
defaultMessage='A poll you have voted in has ended'
|
||||||
|
/>
|
||||||
)}
|
)}
|
||||||
</span>
|
</span >
|
||||||
</div>
|
</div >
|
||||||
|
|
||||||
<StatusContainer
|
<StatusContainer
|
||||||
id={notification.get('status')}
|
id={notification.get('status')}
|
||||||
|
@ -270,18 +343,24 @@ class Notification extends ImmutablePureComponent {
|
||||||
cachedMediaWidth={this.props.cachedMediaWidth}
|
cachedMediaWidth={this.props.cachedMediaWidth}
|
||||||
cacheMediaWidth={this.props.cacheMediaWidth}
|
cacheMediaWidth={this.props.cacheMediaWidth}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div >
|
||||||
</HotKeys>
|
</HotKeys >
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
render () {
|
render() {
|
||||||
const { notification } = this.props;
|
const { notification } = this.props;
|
||||||
const account = notification.get('account');
|
const account = notification.get('account');
|
||||||
const displayNameHtml = { __html: account.get('display_name_html') };
|
const displayNameHtml = { __html: account.get('display_name_html') };
|
||||||
const link = <bdi><Permalink className='notification__display-name' href={account.get('url')} title={account.get('acct')} to={`/accounts/${account.get('id')}`} dangerouslySetInnerHTML={displayNameHtml} /></bdi>;
|
const link = (<bdi ><Permalink
|
||||||
|
className='notification__display-name'
|
||||||
|
href={account.get('url')}
|
||||||
|
title={account.get('acct')}
|
||||||
|
to={`/accounts/${account.get('id')}`}
|
||||||
|
dangerouslySetInnerHTML={displayNameHtml}
|
||||||
|
/></bdi >);
|
||||||
|
|
||||||
switch(notification.get('type')) {
|
switch (notification.get('type')) {
|
||||||
case 'follow':
|
case 'follow':
|
||||||
return this.renderFollow(notification, account, link);
|
return this.renderFollow(notification, account, link);
|
||||||
case 'follow_request':
|
case 'follow_request':
|
||||||
|
|
|
@ -45,15 +45,15 @@ export default class DetailedStatus extends ImmutablePureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
}
|
};
|
||||||
|
|
||||||
handleOpenVideo = (media, startTime) => {
|
handleOpenVideo = (media, startTime) => {
|
||||||
this.props.onOpenVideo(media, startTime);
|
this.props.onOpenVideo(media, startTime);
|
||||||
}
|
};
|
||||||
|
|
||||||
handleExpandedToggle = () => {
|
handleExpandedToggle = () => {
|
||||||
this.props.onToggleHidden(this.props.status);
|
this.props.onToggleHidden(this.props.status);
|
||||||
}
|
};
|
||||||
|
|
||||||
_measureHeight (heightJustChanged) {
|
_measureHeight (heightJustChanged) {
|
||||||
if (this.props.measureHeight && this.node) {
|
if (this.props.measureHeight && this.node) {
|
||||||
|
@ -68,7 +68,7 @@ export default class DetailedStatus extends ImmutablePureComponent {
|
||||||
setRef = c => {
|
setRef = c => {
|
||||||
this.node = c;
|
this.node = c;
|
||||||
this._measureHeight();
|
this._measureHeight();
|
||||||
}
|
};
|
||||||
|
|
||||||
componentDidUpdate (prevProps, prevState) {
|
componentDidUpdate (prevProps, prevState) {
|
||||||
this._measureHeight(prevState.height !== this.state.height);
|
this._measureHeight(prevState.height !== this.state.height);
|
||||||
|
@ -86,7 +86,7 @@ export default class DetailedStatus extends ImmutablePureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
window.open(href, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes');
|
window.open(href, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes');
|
||||||
}
|
};
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
const status = (this.props.status && this.props.status.get('reblog')) ? this.props.status.get('reblog') : this.props.status;
|
const status = (this.props.status && this.props.status.get('reblog')) ? this.props.status.get('reblog') : this.props.status;
|
||||||
|
@ -211,8 +211,14 @@ export default class DetailedStatus extends ImmutablePureComponent {
|
||||||
<div style={outerStyle}>
|
<div style={outerStyle}>
|
||||||
<div ref={this.setRef} className={classNames('detailed-status', { compact })}>
|
<div ref={this.setRef} className={classNames('detailed-status', { compact })}>
|
||||||
<a href={status.getIn(['account', 'url'])} onClick={this.handleAccountClick} className='detailed-status__display-name'>
|
<a href={status.getIn(['account', 'url'])} onClick={this.handleAccountClick} className='detailed-status__display-name'>
|
||||||
<div className='detailed-status__display-avatar'><Avatar account={status.get('account')} size={48} /></div>
|
<div className='detailed-status__display-avatar'><Avatar
|
||||||
<DisplayName account={status.get('account')} localDomain={this.props.domain} />
|
account={status.get('account')}
|
||||||
|
size={55}
|
||||||
|
/></div >
|
||||||
|
<DisplayName
|
||||||
|
account={status.get('account')}
|
||||||
|
localDomain={this.props.domain}
|
||||||
|
/>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<StatusContent status={status} expanded={!status.get('hidden')} onExpandedToggle={this.handleExpandedToggle} />
|
<StatusContent status={status} expanded={!status.get('hidden')} onExpandedToggle={this.handleExpandedToggle} />
|
||||||
|
|
|
@ -26,16 +26,29 @@ export default class ActionsModal extends ImmutablePureComponent {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<li key={`${text}-${i}`}>
|
<li key={`${text}-${i}`}>
|
||||||
<a href={href} target='_blank' rel='noopener noreferrer' onClick={this.props.onClick} data-index={i} className={classNames({ active })}>
|
<a
|
||||||
{icon && <IconButton title={text} icon={icon} role='presentation' tabIndex='-1' inverted />}
|
href={href}
|
||||||
<div>
|
target='_blank'
|
||||||
<div className={classNames({ 'actions-modal__item-label': !!meta })}>{text}</div>
|
rel='noopener noreferrer'
|
||||||
<div>{meta}</div>
|
onClick={this.props.onClick}
|
||||||
</div>
|
data-index={i}
|
||||||
</a>
|
className={classNames({ active })}
|
||||||
</li>
|
>
|
||||||
|
{icon && <IconButton
|
||||||
|
title={text}
|
||||||
|
icon={icon}
|
||||||
|
role='presentation'
|
||||||
|
tabIndex='-1'
|
||||||
|
inverted
|
||||||
|
/>}
|
||||||
|
<div >
|
||||||
|
<div className={classNames({ 'actions-modal__item-label': !!meta })}>{text}</div >
|
||||||
|
<div >{meta}</div >
|
||||||
|
</div >
|
||||||
|
</a >
|
||||||
|
</li >
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
const status = this.props.status && (
|
const status = this.props.status && (
|
||||||
|
@ -49,7 +62,10 @@ export default class ActionsModal extends ImmutablePureComponent {
|
||||||
|
|
||||||
<a href={this.props.status.getIn(['account', 'url'])} className='status__display-name'>
|
<a href={this.props.status.getIn(['account', 'url'])} className='status__display-name'>
|
||||||
<div className='status__avatar'>
|
<div className='status__avatar'>
|
||||||
<Avatar account={this.props.status.get('account')} size={48} />
|
<Avatar
|
||||||
|
account={this.props.status.get('account')}
|
||||||
|
size={55}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<DisplayName account={this.props.status.get('account')} />
|
<DisplayName account={this.props.status.get('account')} />
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
import { defineMessages, FormattedMessage, injectIntl } from 'react-intl';
|
||||||
import Button from '../../../components/button';
|
import Button from '../../../components/button';
|
||||||
import StatusContent from '../../../components/status_content';
|
import StatusContent from '../../../components/status_content';
|
||||||
import Avatar from '../../../components/avatar';
|
import Avatar from '../../../components/avatar';
|
||||||
|
@ -37,7 +37,7 @@ class BoostModal extends ImmutablePureComponent {
|
||||||
handleReblog = () => {
|
handleReblog = () => {
|
||||||
this.props.onReblog(this.props.status);
|
this.props.onReblog(this.props.status);
|
||||||
this.props.onClose();
|
this.props.onClose();
|
||||||
}
|
};
|
||||||
|
|
||||||
handleAccountClick = (e) => {
|
handleAccountClick = (e) => {
|
||||||
if (e.button === 0 && !(e.ctrlKey || e.metaKey)) {
|
if (e.button === 0 && !(e.ctrlKey || e.metaKey)) {
|
||||||
|
@ -45,11 +45,11 @@ class BoostModal extends ImmutablePureComponent {
|
||||||
this.props.onClose();
|
this.props.onClose();
|
||||||
this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`);
|
this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
setRef = (c) => {
|
setRef = (c) => {
|
||||||
this.button = c;
|
this.button = c;
|
||||||
}
|
};
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
const { status, intl } = this.props;
|
const { status, intl } = this.props;
|
||||||
|
@ -66,7 +66,10 @@ class BoostModal extends ImmutablePureComponent {
|
||||||
|
|
||||||
<a onClick={this.handleAccountClick} href={status.getIn(['account', 'url'])} className='status__display-name'>
|
<a onClick={this.handleAccountClick} href={status.getIn(['account', 'url'])} className='status__display-name'>
|
||||||
<div className='status__avatar'>
|
<div className='status__avatar'>
|
||||||
<Avatar account={status.get('account')} size={48} />
|
<Avatar
|
||||||
|
account={status.get('account')}
|
||||||
|
size={55}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<DisplayName account={status.get('account')} />
|
<DisplayName account={status.get('account')} />
|
||||||
|
|
|
@ -129,25 +129,25 @@ class LinkFooter extends React.PureComponent {
|
||||||
|
|
||||||
<div className='extras'>
|
<div className='extras'>
|
||||||
|
|
||||||
<button className='mod-theme btn btn-block btn-small btn-primary pull-left'>
|
{/*<button className='mod-theme btn btn-block btn-small btn-primary pull-left'>*/}
|
||||||
{this.themeIsDark ? (
|
{/* {this.themeIsDark ? (*/}
|
||||||
<span
|
{/* <span*/}
|
||||||
onClick={this.setState('theme', 'light')}
|
{/* onClick={this.setState('theme', 'light')}*/}
|
||||||
title='set light'
|
{/* title='set light'*/}
|
||||||
>
|
{/* >*/}
|
||||||
<i className='fa fa-pencil-o' /> to light
|
{/* <i className='fa fa-pencil-o' /> to light*/}
|
||||||
</span >
|
{/* </span >*/}
|
||||||
) : (
|
{/* ) : (*/}
|
||||||
<span
|
{/* <span*/}
|
||||||
onClick={
|
{/* onClick={*/}
|
||||||
this.changeTheme
|
{/* this.changeTheme*/}
|
||||||
}
|
{/* }*/}
|
||||||
title='set dark'
|
{/* title='set dark'*/}
|
||||||
>
|
{/* >*/}
|
||||||
<i className='fa fa-pencil' /> to dark
|
{/* <i className='fa fa-pencil' /> to dark*/}
|
||||||
</span >
|
{/* </span >*/}
|
||||||
)}
|
{/* )}*/}
|
||||||
</button >
|
{/*</button >*/}
|
||||||
|
|
||||||
{this.state.enableChristmasSnow && (
|
{this.state.enableChristmasSnow && (
|
||||||
<div
|
<div
|
||||||
|
|
|
@ -711,9 +711,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.account__avatar {
|
.account__avatar {
|
||||||
width: 44px;
|
width: $avatar-side;
|
||||||
height: 44px;
|
height: $avatar-side;
|
||||||
background-size: 44px 44px;
|
background-size: $avatar-side $avatar-side;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2197,27 +2197,16 @@ a.account__display-name {
|
||||||
}
|
}
|
||||||
|
|
||||||
.notification {
|
.notification {
|
||||||
&__message {
|
background-color: $classic-base-color !important;
|
||||||
margin-left: 48px + 15px * 2;
|
padding: 1em 0;
|
||||||
padding-top: 15px;
|
color: $ui-highlight-color;
|
||||||
}
|
border-left: $ui-highlight-color 5px solid;
|
||||||
|
|
||||||
&__favourite-icon-wrapper {
|
|
||||||
left: -32px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status {
|
|
||||||
padding-top: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.account {
|
.account {
|
||||||
|
padding: 0;
|
||||||
padding-top: 8px;
|
padding-top: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.account__avatar-wrapper {
|
|
||||||
margin-left: 17px;
|
|
||||||
margin-right: 15px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2320,7 +2309,7 @@ a.account__display-name {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
height: calc(100% - 10px);
|
height: calc(100% - 10px);
|
||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
z-index:1;
|
z-index: 1;
|
||||||
|
|
||||||
.navigation-bar {
|
.navigation-bar {
|
||||||
padding-top: 20px;
|
padding-top: 20px;
|
||||||
|
|
|
@ -181,12 +181,12 @@
|
||||||
|
|
||||||
@media all and(min-width: $maximum-width) {
|
@media all and(min-width: $maximum-width) {
|
||||||
& {
|
& {
|
||||||
width: 30vw;
|
width: 25vw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@media all and(max-width: $maximum-width) {
|
@media all and(max-width: $maximum-width) {
|
||||||
& {
|
& {
|
||||||
width: 27vw;
|
width: 22vw;
|
||||||
height: 50vh;
|
height: 50vh;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
padding-right: 1em;
|
padding-right: 1em;
|
||||||
|
|
|
@ -55,6 +55,8 @@ $small-breakpoint: 960px;
|
||||||
$xs-top-breakpoint: 738px;
|
$xs-top-breakpoint: 738px;
|
||||||
$xs-breakpoint: 675px;
|
$xs-breakpoint: 675px;
|
||||||
|
|
||||||
|
// pictures
|
||||||
|
$avatar-side: 55px;
|
||||||
$font-sans-serif: 'mastodon-font-sans-serif' !default;
|
$font-sans-serif: 'mastodon-font-sans-serif' !default;
|
||||||
$font-display: 'mastodon-font-display' !default;
|
$font-display: 'mastodon-font-display' !default;
|
||||||
$font-monospace: 'mastodon-font-monospace' !default;
|
$font-monospace: 'mastodon-font-monospace' !default;
|
||||||
|
|
|
@ -95,9 +95,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.account__avatar {
|
.account__avatar {
|
||||||
width: 44px;
|
width: $avatar-side;
|
||||||
height: 44px;
|
height: $avatar-side;
|
||||||
background-size: 44px 44px;
|
background-size: $avatar-side $avatar-side;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,3 +22,4 @@ $action-button-color: #8d9ac2;
|
||||||
$inverted-text-color: $black !default;
|
$inverted-text-color: $black !default;
|
||||||
$lighter-text-color: darken($ui-base-color, 6%) !default;
|
$lighter-text-color: darken($ui-base-color, 6%) !default;
|
||||||
$light-text-color: darken($ui-primary-color, 40%) !default;
|
$light-text-color: darken($ui-primary-color, 40%) !default;
|
||||||
|
$avatar-side: 55px;
|
||||||
|
|
|
@ -1,26 +1,26 @@
|
||||||
@import 'large_center';
|
//@import 'large_center';
|
||||||
// custom sheet made on https://www.cipherbliss.com
|
//// custom sheet made on https://www.cipherbliss.com
|
||||||
// Commonly used web colors
|
//// Commonly used web colors
|
||||||
$black: #fff; // Black
|
//$black: #fff; // Black
|
||||||
$white: #000; // White
|
//$white: #000; // White
|
||||||
$success-green: #6bbd77 !default; // Padua
|
//$success-green: #6bbd77 !default; // Padua
|
||||||
$error-red: #d4839b !default; // Cerise
|
//$error-red: #d4839b !default; // Cerise
|
||||||
$warning-red: #528dc8 !default; // Sunset Orange
|
//$warning-red: #528dc8 !default; // Sunset Orange
|
||||||
$gold-star: #00ec84 !default; // Dark Goldenrod
|
//$gold-star: #00ec84 !default; // Dark Goldenrod
|
||||||
|
//
|
||||||
// User Interface Colors
|
//// User Interface Colors
|
||||||
$ui-base-color: #313644; // Midnight Express
|
//$ui-base-color: #313644; // Midnight Express
|
||||||
$ui-base-lighter-color: #bdd2d6;
|
//$ui-base-lighter-color: #bdd2d6;
|
||||||
$ui-primary-color: #a1ccff; // Echo Blue
|
//$ui-primary-color: #a1ccff; // Echo Blue
|
||||||
$ui-secondary-color: #7fc0ff; // Pattens Blue
|
//$ui-secondary-color: #7fc0ff; // Pattens Blue
|
||||||
$ui-highlight-color: #00a7d1; // Summer Sky
|
//$ui-highlight-color: #00a7d1; // Summer Sky
|
||||||
|
//$avatar-side: 55px;
|
||||||
// Variables for components
|
//// Variables for components
|
||||||
$media-modal-media-max-width: 100%;
|
//$media-modal-media-max-width: 100%;
|
||||||
// put margins on top and bottom of image to avoid the screen covered by image.
|
//// put margins on top and bottom of image to avoid the screen covered by image.
|
||||||
$media-modal-media-max-height: 80%;
|
//$media-modal-media-max-height: 80%;
|
||||||
// fix
|
//// fix
|
||||||
|
//
|
||||||
// then we import the rest of the world
|
//// then we import the rest of the world
|
||||||
@import 'application';
|
//@import 'application';
|
||||||
@import 'bliss/messaging';
|
//@import 'bliss/messaging';
|
||||||
|
|
|
@ -751,9 +751,9 @@ $small-breakpoint: 960px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.account__avatar {
|
.account__avatar {
|
||||||
width: 44px;
|
width: $avatar-side;
|
||||||
height: 44px;
|
height: $avatar-side;
|
||||||
background-size: 44px 44px;
|
background-size: $avatar-side $avatar-side;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -949,8 +949,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes fade {
|
@keyframes fade {
|
||||||
0% { opacity: 0; }
|
0% {
|
||||||
100% { opacity: 1; }
|
opacity: 0;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
@ -2175,7 +2179,7 @@ a.account__display-name {
|
||||||
.scrollable {
|
.scrollable {
|
||||||
overflow: visible;
|
overflow: visible;
|
||||||
|
|
||||||
@supports(display: grid) {
|
@supports (display: grid) {
|
||||||
contain: content;
|
contain: content;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2333,7 +2337,7 @@ a.account__display-name {
|
||||||
.columns-area__panels__pane--navigational {
|
.columns-area__panels__pane--navigational {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.getting-started__footer{
|
.getting-started__footer {
|
||||||
width: 250px;
|
width: 250px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2520,7 +2524,7 @@ a.account__display-name {
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
@supports(display: grid) { // hack to fix Chrome <57
|
@supports (display: grid) { // hack to fix Chrome <57
|
||||||
contain: strict;
|
contain: strict;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2537,7 +2541,7 @@ a.account__display-name {
|
||||||
}
|
}
|
||||||
|
|
||||||
.scrollable.fullscreen {
|
.scrollable.fullscreen {
|
||||||
@supports(display: grid) { // hack to fix Chrome <57
|
@supports (display: grid) { // hack to fix Chrome <57
|
||||||
contain: none;
|
contain: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3467,9 +3471,15 @@ a.status-card.compact:hover {
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes loader-label {
|
@keyframes loader-label {
|
||||||
0% { opacity: 0.25; }
|
0% {
|
||||||
30% { opacity: 1; }
|
opacity: 0.25;
|
||||||
100% { opacity: 0.25; }
|
}
|
||||||
|
30% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 0.25;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.video-error-cover {
|
.video-error-cover {
|
||||||
|
@ -3758,7 +3768,7 @@ a.status-card.compact:hover {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|
||||||
@supports(display: grid) { // hack to fix Chrome <57
|
@supports (display: grid) { // hack to fix Chrome <57
|
||||||
contain: strict;
|
contain: strict;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5163,6 +5173,7 @@ a.status-card.compact:hover {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* End Media Gallery */
|
/* End Media Gallery */
|
||||||
|
|
||||||
.detailed,
|
.detailed,
|
||||||
|
@ -5834,9 +5845,15 @@ noscript {
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes flicker {
|
@keyframes flicker {
|
||||||
0% { opacity: 1; }
|
0% {
|
||||||
30% { opacity: 0.75; }
|
opacity: 1;
|
||||||
100% { opacity: 1; }
|
}
|
||||||
|
30% {
|
||||||
|
opacity: 0.75;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 630px) and (max-height: 400px) {
|
@media screen and (max-width: 630px) and (max-height: 400px) {
|
||||||
|
@ -5869,13 +5886,13 @@ noscript {
|
||||||
& > .icon-button.close {
|
& > .icon-button.close {
|
||||||
will-change: opacity transform;
|
will-change: opacity transform;
|
||||||
transition: opacity $duration * 0.5 $delay,
|
transition: opacity $duration * 0.5 $delay,
|
||||||
transform $duration $delay;
|
transform $duration $delay;
|
||||||
}
|
}
|
||||||
|
|
||||||
& > .compose__action-bar .icon-button {
|
& > .compose__action-bar .icon-button {
|
||||||
will-change: opacity transform;
|
will-change: opacity transform;
|
||||||
transition: opacity $duration * 0.5 $delay + $duration * 0.5,
|
transition: opacity $duration * 0.5 $delay + $duration * 0.5,
|
||||||
transform $duration $delay;
|
transform $duration $delay;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
// Commonly used web colors
|
// Commonly used web colors
|
||||||
$black: #000000; // Black
|
$black: #000000; // Black
|
||||||
$white: #ffffff; // White
|
$white: #ffffff; // White
|
||||||
$success-green: #79bd9a !default; // Padua
|
$success-green: #79bd9a !default; // Padua
|
||||||
$error-red: #df405a !default; // Cerise
|
$error-red: #df405a !default; // Cerise
|
||||||
$warning-red: #ff5050 !default; // Sunset Orange
|
$warning-red: #ff5050 !default; // Sunset Orange
|
||||||
$gold-star: #ca8f04 !default; // Dark Goldenrod
|
$gold-star: #ca8f04 !default; // Dark Goldenrod
|
||||||
|
|
||||||
$red-bookmark: $warning-red;
|
$red-bookmark: $warning-red;
|
||||||
|
|
||||||
// Values from the classic Mastodon UI
|
// Values from the classic Mastodon UI
|
||||||
$classic-base-color: #282c37; // Midnight Express
|
$classic-base-color: #282c37; // Midnight Express
|
||||||
$classic-primary-color: #9baec8; // Echo Blue
|
$classic-primary-color: #9baec8; // Echo Blue
|
||||||
$classic-secondary-color: #d9e1e8; // Pattens Blue
|
$classic-secondary-color: #d9e1e8; // Pattens Blue
|
||||||
$classic-highlight-color: #2b90d9; // Summer Sky
|
$classic-highlight-color: #2b90d9; // Summer Sky
|
||||||
|
|
||||||
// Variables for defaults in UI
|
// Variables for defaults in UI
|
||||||
$base-shadow-color: $black !default;
|
$base-shadow-color: $black !default;
|
||||||
|
@ -23,10 +23,10 @@ $valid-value-color: $success-green !default;
|
||||||
$error-value-color: $error-red !default;
|
$error-value-color: $error-red !default;
|
||||||
|
|
||||||
// Tell UI to use selected colors
|
// Tell UI to use selected colors
|
||||||
$ui-base-color: $classic-base-color !default; // Darkest
|
$ui-base-color: $classic-base-color !default; // Darkest
|
||||||
$ui-base-lighter-color: lighten($ui-base-color, 26%) !default; // Lighter darkest
|
$ui-base-lighter-color: lighten($ui-base-color, 26%) !default; // Lighter darkest
|
||||||
$ui-primary-color: $classic-primary-color !default; // Lighter
|
$ui-primary-color: $classic-primary-color !default; // Lighter
|
||||||
$ui-secondary-color: $classic-secondary-color !default; // Lightest
|
$ui-secondary-color: $classic-secondary-color !default; // Lightest
|
||||||
$ui-highlight-color: $classic-highlight-color !default;
|
$ui-highlight-color: $classic-highlight-color !default;
|
||||||
|
|
||||||
// Variables for texts
|
// Variables for texts
|
||||||
|
@ -76,3 +76,5 @@ $no-gap-breakpoint: 415px;
|
||||||
$font-sans-serif: 'mastodon-font-sans-serif' !default;
|
$font-sans-serif: 'mastodon-font-sans-serif' !default;
|
||||||
$font-display: 'mastodon-font-display' !default;
|
$font-display: 'mastodon-font-display' !default;
|
||||||
$font-monospace: 'mastodon-font-monospace' !default;
|
$font-monospace: 'mastodon-font-monospace' !default;
|
||||||
|
|
||||||
|
$avatar-side: 55px;
|
||||||
|
|
|
@ -372,8 +372,8 @@
|
||||||
|
|
||||||
.account__avatar {
|
.account__avatar {
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
width: 36px;
|
width: $avatar-side;
|
||||||
height: 36px;
|
height: $avatar-side;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-left: -10px;
|
margin-left: -10px;
|
||||||
|
|
Loading…
Reference in New Issue