[Glitch] Change appearance of account cards in web UI
Port dba4be1038 to glitch-soc
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
			
			
This commit is contained in:
		@@ -7,31 +7,28 @@ import { makeGetAccount } from 'flavours/glitch/selectors';
 | 
			
		||||
import Avatar from 'flavours/glitch/components/avatar';
 | 
			
		||||
import DisplayName from 'flavours/glitch/components/display_name';
 | 
			
		||||
import Permalink from 'flavours/glitch/components/permalink';
 | 
			
		||||
import RelativeTimestamp from 'flavours/glitch/components/relative_timestamp';
 | 
			
		||||
import IconButton from 'flavours/glitch/components/icon_button';
 | 
			
		||||
import Button from 'flavours/glitch/components/button';
 | 
			
		||||
import { FormattedMessage, injectIntl, defineMessages } from 'react-intl';
 | 
			
		||||
import { autoPlayGif, me, unfollowModal } from 'flavours/glitch/util/initial_state';
 | 
			
		||||
import ShortNumber from 'flavours/glitch/components/short_number';
 | 
			
		||||
import {
 | 
			
		||||
  followAccount,
 | 
			
		||||
  unfollowAccount,
 | 
			
		||||
  blockAccount,
 | 
			
		||||
  unblockAccount,
 | 
			
		||||
  unmuteAccount,
 | 
			
		||||
} from 'flavours/glitch/actions/accounts';
 | 
			
		||||
import { openModal } from 'flavours/glitch/actions/modal';
 | 
			
		||||
import { initMuteModal } from 'flavours/glitch/actions/mutes';
 | 
			
		||||
import classNames from 'classnames';
 | 
			
		||||
 | 
			
		||||
const messages = defineMessages({
 | 
			
		||||
  follow: { id: 'account.follow', defaultMessage: 'Follow' },
 | 
			
		||||
  unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },
 | 
			
		||||
  requested: { id: 'account.requested', defaultMessage: 'Awaiting approval' },
 | 
			
		||||
  unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' },
 | 
			
		||||
  unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' },
 | 
			
		||||
  unfollowConfirm: {
 | 
			
		||||
    id: 'confirmations.unfollow.confirm',
 | 
			
		||||
    defaultMessage: 'Unfollow',
 | 
			
		||||
  },
 | 
			
		||||
  follow: { id: 'account.follow', defaultMessage: 'Follow' },
 | 
			
		||||
  cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Cancel follow request' },
 | 
			
		||||
  requested: { id: 'account.requested', defaultMessage: 'Awaiting approval. Click to cancel follow request' },
 | 
			
		||||
  unblock: { id: 'account.unblock_short', defaultMessage: 'Unblock' },
 | 
			
		||||
  unmute: { id: 'account.unmute_short', defaultMessage: 'Unmute' },
 | 
			
		||||
  unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' },
 | 
			
		||||
  edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' },
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const makeMapStateToProps = () => {
 | 
			
		||||
@@ -75,18 +72,15 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
 | 
			
		||||
  onBlock(account) {
 | 
			
		||||
    if (account.getIn(['relationship', 'blocking'])) {
 | 
			
		||||
      dispatch(unblockAccount(account.get('id')));
 | 
			
		||||
    } else {
 | 
			
		||||
      dispatch(blockAccount(account.get('id')));
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onMute(account) {
 | 
			
		||||
    if (account.getIn(['relationship', 'muting'])) {
 | 
			
		||||
      dispatch(unmuteAccount(account.get('id')));
 | 
			
		||||
    } else {
 | 
			
		||||
      dispatch(initMuteModal(account));
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
export default
 | 
			
		||||
@@ -138,130 +132,92 @@ class AccountCard extends ImmutablePureComponent {
 | 
			
		||||
 | 
			
		||||
  handleMute = () => {
 | 
			
		||||
    this.props.onMute(this.props.account);
 | 
			
		||||
  };
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  handleEditProfile = () => {
 | 
			
		||||
    window.open('/settings/profile', '_blank');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  render() {
 | 
			
		||||
    const { account, intl } = this.props;
 | 
			
		||||
 | 
			
		||||
    let buttons;
 | 
			
		||||
    let actionBtn;
 | 
			
		||||
 | 
			
		||||
    if (
 | 
			
		||||
      account.get('id') !== me &&
 | 
			
		||||
      account.get('relationship', null) !== null
 | 
			
		||||
    ) {
 | 
			
		||||
      const following = account.getIn(['relationship', 'following']);
 | 
			
		||||
      const requested = account.getIn(['relationship', 'requested']);
 | 
			
		||||
      const blocking = account.getIn(['relationship', 'blocking']);
 | 
			
		||||
      const muting = account.getIn(['relationship', 'muting']);
 | 
			
		||||
 | 
			
		||||
      if (requested) {
 | 
			
		||||
        buttons = (
 | 
			
		||||
          <IconButton
 | 
			
		||||
            disabled
 | 
			
		||||
            icon='hourglass'
 | 
			
		||||
            title={intl.formatMessage(messages.requested)}
 | 
			
		||||
          />
 | 
			
		||||
        );
 | 
			
		||||
      } else if (blocking) {
 | 
			
		||||
        buttons = (
 | 
			
		||||
          <IconButton
 | 
			
		||||
            active
 | 
			
		||||
            icon='unlock'
 | 
			
		||||
            title={intl.formatMessage(messages.unblock, {
 | 
			
		||||
              name: account.get('username'),
 | 
			
		||||
            })}
 | 
			
		||||
            onClick={this.handleBlock}
 | 
			
		||||
          />
 | 
			
		||||
        );
 | 
			
		||||
      } else if (muting) {
 | 
			
		||||
        buttons = (
 | 
			
		||||
          <IconButton
 | 
			
		||||
            active
 | 
			
		||||
            icon='volume-up'
 | 
			
		||||
            title={intl.formatMessage(messages.unmute, {
 | 
			
		||||
              name: account.get('username'),
 | 
			
		||||
            })}
 | 
			
		||||
            onClick={this.handleMute}
 | 
			
		||||
          />
 | 
			
		||||
        );
 | 
			
		||||
      } else if (!account.get('moved') || following) {
 | 
			
		||||
        buttons = (
 | 
			
		||||
          <IconButton
 | 
			
		||||
            icon={following ? 'user-times' : 'user-plus'}
 | 
			
		||||
            title={intl.formatMessage(
 | 
			
		||||
              following ? messages.unfollow : messages.follow,
 | 
			
		||||
            )}
 | 
			
		||||
            onClick={this.handleFollow}
 | 
			
		||||
            active={following}
 | 
			
		||||
          />
 | 
			
		||||
        );
 | 
			
		||||
    if (me !== account.get('id')) {
 | 
			
		||||
      if (!account.get('relationship')) { // Wait until the relationship is loaded
 | 
			
		||||
        actionBtn = '';
 | 
			
		||||
      } else if (account.getIn(['relationship', 'requested'])) {
 | 
			
		||||
        actionBtn = <Button className={classNames('logo-button')} text={intl.formatMessage(messages.cancel_follow_request)} title={intl.formatMessage(messages.requested)} onClick={this.handleFollow} />;
 | 
			
		||||
      } else if (account.getIn(['relationship', 'muting'])) {
 | 
			
		||||
        actionBtn = <Button className='logo-button' text={intl.formatMessage(messages.unmute)} onClick={this.handleMute} />;
 | 
			
		||||
      } else if (!account.getIn(['relationship', 'blocking'])) {
 | 
			
		||||
        actionBtn = <Button disabled={account.getIn(['relationship', 'blocked_by'])} className={classNames('logo-button', { 'button--destructive': account.getIn(['relationship', 'following']) })} text={intl.formatMessage(account.getIn(['relationship', 'following']) ? messages.unfollow : messages.follow)} onClick={this.handleFollow} />;
 | 
			
		||||
      } else if (account.getIn(['relationship', 'blocking'])) {
 | 
			
		||||
        actionBtn = <Button className='logo-button' text={intl.formatMessage(messages.unblock)} onClick={this.handleBlock} />;
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      actionBtn = <Button className='logo-button' text={intl.formatMessage(messages.edit_profile)} onClick={this.handleEditProfile} />;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return (
 | 
			
		||||
      <div className='directory__card'>
 | 
			
		||||
        <div className='directory__card__img'>
 | 
			
		||||
          <img
 | 
			
		||||
            src={
 | 
			
		||||
              autoPlayGif ? account.get('header') : account.get('header_static')
 | 
			
		||||
            }
 | 
			
		||||
            alt=''
 | 
			
		||||
          />
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div className='directory__card__bar'>
 | 
			
		||||
          <Permalink
 | 
			
		||||
            className='directory__card__bar__name'
 | 
			
		||||
            href={account.get('url')}
 | 
			
		||||
            to={`/@${account.get('acct')}`}
 | 
			
		||||
          >
 | 
			
		||||
            <Avatar account={account} size={48} />
 | 
			
		||||
            <DisplayName account={account} />
 | 
			
		||||
          </Permalink>
 | 
			
		||||
 | 
			
		||||
          <div className='directory__card__bar__relationship account__relationship'>
 | 
			
		||||
            {buttons}
 | 
			
		||||
      <div className='account-card'>
 | 
			
		||||
        <Permalink href={account.get('url')} to={`/@${account.get('acct')}`} className='account-card__permalink'>
 | 
			
		||||
          <div className='account-card__header'>
 | 
			
		||||
            <img
 | 
			
		||||
              src={
 | 
			
		||||
                autoPlayGif ? account.get('header') : account.get('header_static')
 | 
			
		||||
              }
 | 
			
		||||
              alt=''
 | 
			
		||||
            />
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div className='directory__card__extra' onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave}>
 | 
			
		||||
          <div className='account-card__title'>
 | 
			
		||||
            <div className='account-card__title__avatar'><Avatar account={account} size={56} /></div>
 | 
			
		||||
            <DisplayName account={account} />
 | 
			
		||||
          </div>
 | 
			
		||||
        </Permalink>
 | 
			
		||||
 | 
			
		||||
        {account.get('note').length > 0 && (
 | 
			
		||||
          <div
 | 
			
		||||
            className='account__header__content translate'
 | 
			
		||||
            className='account-card__bio translate'
 | 
			
		||||
            onMouseEnter={this.handleMouseEnter}
 | 
			
		||||
            onMouseLeave={this.handleMouseLeave}
 | 
			
		||||
            dangerouslySetInnerHTML={{ __html: account.get('note_emojified') }}
 | 
			
		||||
          />
 | 
			
		||||
        </div>
 | 
			
		||||
        )}
 | 
			
		||||
 | 
			
		||||
        <div className='directory__card__extra'>
 | 
			
		||||
          <div className='accounts-table__count'>
 | 
			
		||||
            <ShortNumber value={account.get('statuses_count')} />
 | 
			
		||||
            <small>
 | 
			
		||||
              <FormattedMessage id='account.posts' defaultMessage='Toots' />
 | 
			
		||||
            </small>
 | 
			
		||||
        <div className='account-card__actions'>
 | 
			
		||||
          <div className='account-card__counters'>
 | 
			
		||||
            <div className='account-card__counters__item'>
 | 
			
		||||
              <ShortNumber value={account.get('statuses_count')} />
 | 
			
		||||
              <small>
 | 
			
		||||
                <FormattedMessage id='account.posts' defaultMessage='Toots' />
 | 
			
		||||
              </small>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
            <div className='account-card__counters__item'>
 | 
			
		||||
              {account.get('followers_count') < 0 ? '-' : <ShortNumber value={account.get('followers_count')} />}{' '}
 | 
			
		||||
              <small>
 | 
			
		||||
                <FormattedMessage
 | 
			
		||||
                  id='account.followers'
 | 
			
		||||
                  defaultMessage='Followers'
 | 
			
		||||
                />
 | 
			
		||||
              </small>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
            <div className='account-card__counters__item'>
 | 
			
		||||
              <ShortNumber value={account.get('following_count')} />{' '}
 | 
			
		||||
              <small>
 | 
			
		||||
                <FormattedMessage
 | 
			
		||||
                  id='account.following'
 | 
			
		||||
                  defaultMessage='Following'
 | 
			
		||||
                />
 | 
			
		||||
              </small>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div className='accounts-table__count'>
 | 
			
		||||
            {account.get('followers_count') < 0 ? '-' : <ShortNumber value={account.get('followers_count')} />}{' '}
 | 
			
		||||
            <small>
 | 
			
		||||
              <FormattedMessage
 | 
			
		||||
                id='account.followers'
 | 
			
		||||
                defaultMessage='Followers'
 | 
			
		||||
              />
 | 
			
		||||
            </small>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div className='accounts-table__count'>
 | 
			
		||||
            {account.get('last_status_at') === null ? (
 | 
			
		||||
              <FormattedMessage
 | 
			
		||||
                id='account.never_active'
 | 
			
		||||
                defaultMessage='Never'
 | 
			
		||||
              />
 | 
			
		||||
            ) : (
 | 
			
		||||
              <RelativeTimestamp timestamp={account.get('last_status_at')} />
 | 
			
		||||
            )}{' '}
 | 
			
		||||
            <small>
 | 
			
		||||
              <FormattedMessage
 | 
			
		||||
                id='account.last_status'
 | 
			
		||||
                defaultMessage='Last active'
 | 
			
		||||
              />
 | 
			
		||||
            </small>
 | 
			
		||||
 | 
			
		||||
          <div className='account-card__actions__button'>
 | 
			
		||||
            {actionBtn}
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -10,9 +10,9 @@ import { fetchDirectory, expandDirectory } from 'flavours/glitch/actions/directo
 | 
			
		||||
import { List as ImmutableList } from 'immutable';
 | 
			
		||||
import AccountCard from './components/account_card';
 | 
			
		||||
import RadioButton from 'flavours/glitch/components/radio_button';
 | 
			
		||||
import classNames from 'classnames';
 | 
			
		||||
import LoadMore from 'flavours/glitch/components/load_more';
 | 
			
		||||
import ScrollContainer from 'flavours/glitch/containers/scroll_container';
 | 
			
		||||
import LoadingIndicator from 'flavours/glitch/components/loading_indicator';
 | 
			
		||||
 | 
			
		||||
const messages = defineMessages({
 | 
			
		||||
  title: { id: 'column.directory', defaultMessage: 'Browse profiles' },
 | 
			
		||||
@@ -129,7 +129,7 @@ class Directory extends React.PureComponent {
 | 
			
		||||
    const pinned = !!columnId;
 | 
			
		||||
 | 
			
		||||
    const scrollableArea = (
 | 
			
		||||
      <div className='scrollable' style={{ background: 'transparent' }}>
 | 
			
		||||
      <div className='scrollable'>
 | 
			
		||||
        <div className='filter-form'>
 | 
			
		||||
          <div className='filter-form__column' role='group'>
 | 
			
		||||
            <RadioButton name='order' value='active' label={intl.formatMessage(messages.recentlyActive)} checked={order === 'active'} onChange={this.handleChangeOrder} />
 | 
			
		||||
@@ -142,8 +142,10 @@ class Directory extends React.PureComponent {
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div className={classNames('directory__list', { loading: isLoading })}>
 | 
			
		||||
          {accountIds.map(accountId => <AccountCard id={accountId} key={accountId} />)}
 | 
			
		||||
        <div className='directory__list'>
 | 
			
		||||
          {isLoading ? <LoadingIndicator /> : accountIds.map(accountId => (
 | 
			
		||||
            <AccountCard id={accountId} key={accountId} />
 | 
			
		||||
          ))}
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <LoadMore onClick={this.handleLoadMore} visible={!isLoading} />
 | 
			
		||||
 
 | 
			
		||||
@@ -1236,6 +1236,11 @@ a.sparkline {
 | 
			
		||||
  background: $ui-base-color;
 | 
			
		||||
  border-radius: 4px;
 | 
			
		||||
 | 
			
		||||
  &__permalink {
 | 
			
		||||
    color: inherit;
 | 
			
		||||
    text-decoration: none;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &__header {
 | 
			
		||||
    padding: 4px;
 | 
			
		||||
    border-radius: 4px;
 | 
			
		||||
@@ -1252,20 +1257,22 @@ a.sparkline {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &__title {
 | 
			
		||||
    margin-top: -25px;
 | 
			
		||||
    margin-top: -(15px + 8px);
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: flex-end;
 | 
			
		||||
 | 
			
		||||
    &__avatar {
 | 
			
		||||
      padding: 15px;
 | 
			
		||||
      padding: 14px;
 | 
			
		||||
 | 
			
		||||
      img {
 | 
			
		||||
      img,
 | 
			
		||||
      .account__avatar {
 | 
			
		||||
        display: block;
 | 
			
		||||
        margin: 0;
 | 
			
		||||
        width: 56px;
 | 
			
		||||
        height: 56px;
 | 
			
		||||
        background: darken($ui-base-color, 8%);
 | 
			
		||||
        background-color: darken($ui-base-color, 8%);
 | 
			
		||||
        border-radius: 8px;
 | 
			
		||||
        border: 1px solid $ui-base-color;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -1273,30 +1280,34 @@ a.sparkline {
 | 
			
		||||
      color: $darker-text-color;
 | 
			
		||||
      padding-bottom: 15px;
 | 
			
		||||
      font-size: 15px;
 | 
			
		||||
      line-height: 20px;
 | 
			
		||||
 | 
			
		||||
      bdi {
 | 
			
		||||
        display: block;
 | 
			
		||||
        color: $primary-text-color;
 | 
			
		||||
        font-weight: 500;
 | 
			
		||||
        font-weight: 700;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &__bio {
 | 
			
		||||
    padding: 0 15px;
 | 
			
		||||
    margin: 8px 0;
 | 
			
		||||
    overflow: hidden;
 | 
			
		||||
    text-overflow: ellipsis;
 | 
			
		||||
    word-wrap: break-word;
 | 
			
		||||
    max-height: 18px * 2;
 | 
			
		||||
    max-height: 21px * 2;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    font-size: 15px;
 | 
			
		||||
    line-height: 21px;
 | 
			
		||||
 | 
			
		||||
    &::after {
 | 
			
		||||
      display: block;
 | 
			
		||||
      content: "";
 | 
			
		||||
      width: 50px;
 | 
			
		||||
      height: 18px;
 | 
			
		||||
      height: 21px;
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      bottom: 0;
 | 
			
		||||
      bottom: 8px;
 | 
			
		||||
      right: 15px;
 | 
			
		||||
      background: linear-gradient(to left, $ui-base-color, transparent);
 | 
			
		||||
      pointer-events: none;
 | 
			
		||||
@@ -1309,10 +1320,6 @@ a.sparkline {
 | 
			
		||||
 | 
			
		||||
      &:hover {
 | 
			
		||||
        text-decoration: underline;
 | 
			
		||||
 | 
			
		||||
        .fa {
 | 
			
		||||
          color: lighten($dark-text-color, 7%);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      &.mention {
 | 
			
		||||
@@ -1329,12 +1336,21 @@ a.sparkline {
 | 
			
		||||
 | 
			
		||||
  &__actions {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    padding-top: 10px;
 | 
			
		||||
 | 
			
		||||
    &__button {
 | 
			
		||||
      flex: 0 0 auto;
 | 
			
		||||
      flex-shrink: 1;
 | 
			
		||||
      padding: 0 15px;
 | 
			
		||||
      overflow: hidden;
 | 
			
		||||
 | 
			
		||||
      .button {
 | 
			
		||||
        min-width: 0;
 | 
			
		||||
        white-space: nowrap;
 | 
			
		||||
        text-overflow: ellipsis;
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
        max-width: 100%;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -1343,19 +1359,23 @@ a.sparkline {
 | 
			
		||||
    display: grid;
 | 
			
		||||
    grid-auto-columns: minmax(0, 1fr);
 | 
			
		||||
    grid-auto-flow: column;
 | 
			
		||||
    max-width: 340px;
 | 
			
		||||
    min-width: 65px * 3;
 | 
			
		||||
 | 
			
		||||
    &__item {
 | 
			
		||||
      padding: 15px;
 | 
			
		||||
      padding: 15px 0;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
      color: $primary-text-color;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      font-size: 15px;
 | 
			
		||||
      line-height: 21px;
 | 
			
		||||
 | 
			
		||||
      small {
 | 
			
		||||
        display: block;
 | 
			
		||||
        color: $darker-text-color;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        font-size: 13px;
 | 
			
		||||
        line-height: 18px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,133 +1,17 @@
 | 
			
		||||
.directory {
 | 
			
		||||
  &__list {
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    margin: 10px 0;
 | 
			
		||||
    transition: opacity 100ms ease-in;
 | 
			
		||||
.scrollable .account-card {
 | 
			
		||||
  margin: 10px;
 | 
			
		||||
  background: lighten($ui-base-color, 8%);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    &.loading {
 | 
			
		||||
      opacity: 0.7;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @media screen and (max-width: $no-gap-breakpoint) {
 | 
			
		||||
      margin: 0;
 | 
			
		||||
    }
 | 
			
		||||
.scrollable .account-card__title__avatar {
 | 
			
		||||
  img,
 | 
			
		||||
  .account__avatar {
 | 
			
		||||
    border-color: lighten($ui-base-color, 8%);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
  &__card {
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    margin-bottom: 10px;
 | 
			
		||||
 | 
			
		||||
    &__img {
 | 
			
		||||
      height: 125px;
 | 
			
		||||
      position: relative;
 | 
			
		||||
      background: darken($ui-base-color, 12%);
 | 
			
		||||
      overflow: hidden;
 | 
			
		||||
 | 
			
		||||
      img {
 | 
			
		||||
        display: block;
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        height: 100%;
 | 
			
		||||
        margin: 0;
 | 
			
		||||
        object-fit: cover;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &__bar {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      background: lighten($ui-base-color, 4%);
 | 
			
		||||
      padding: 10px;
 | 
			
		||||
 | 
			
		||||
      &__name {
 | 
			
		||||
        flex: 1 1 auto;
 | 
			
		||||
        display: flex;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        text-decoration: none;
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      &__relationship {
 | 
			
		||||
        width: 23px;
 | 
			
		||||
        min-height: 1px;
 | 
			
		||||
        flex: 0 0 auto;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .avatar {
 | 
			
		||||
        flex: 0 0 auto;
 | 
			
		||||
        width: 48px;
 | 
			
		||||
        height: 48px;
 | 
			
		||||
        padding-top: 2px;
 | 
			
		||||
 | 
			
		||||
        img {
 | 
			
		||||
          width: 100%;
 | 
			
		||||
          height: 100%;
 | 
			
		||||
          display: block;
 | 
			
		||||
          margin: 0;
 | 
			
		||||
          border-radius: 4px;
 | 
			
		||||
          background: darken($ui-base-color, 8%);
 | 
			
		||||
          object-fit: cover;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .display-name {
 | 
			
		||||
        margin-left: 15px;
 | 
			
		||||
        text-align: left;
 | 
			
		||||
 | 
			
		||||
        strong {
 | 
			
		||||
          font-size: 15px;
 | 
			
		||||
          color: $primary-text-color;
 | 
			
		||||
          font-weight: 500;
 | 
			
		||||
          overflow: hidden;
 | 
			
		||||
          text-overflow: ellipsis;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        span {
 | 
			
		||||
          display: block;
 | 
			
		||||
          font-size: 14px;
 | 
			
		||||
          color: $darker-text-color;
 | 
			
		||||
          font-weight: 400;
 | 
			
		||||
          overflow: hidden;
 | 
			
		||||
          text-overflow: ellipsis;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &__extra {
 | 
			
		||||
      background: $ui-base-color;
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      justify-content: center;
 | 
			
		||||
 | 
			
		||||
      .accounts-table__count {
 | 
			
		||||
        width: 33.33%;
 | 
			
		||||
        flex: 0 0 auto;
 | 
			
		||||
        padding: 15px 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .account__header__content {
 | 
			
		||||
        box-sizing: border-box;
 | 
			
		||||
        padding: 15px 10px;
 | 
			
		||||
        border-bottom: 1px solid lighten($ui-base-color, 8%);
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        min-height: 18px + 30px;
 | 
			
		||||
        white-space: nowrap;
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
        text-overflow: ellipsis;
 | 
			
		||||
 | 
			
		||||
        p {
 | 
			
		||||
          display: none;
 | 
			
		||||
 | 
			
		||||
          &:first-child {
 | 
			
		||||
            display: inline;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        br {
 | 
			
		||||
          display: none;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
.scrollable .account-card__bio::after {
 | 
			
		||||
  background: linear-gradient(to left, lighten($ui-base-color, 8%), transparent);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.filter-form {
 | 
			
		||||
@@ -135,6 +19,7 @@
 | 
			
		||||
 | 
			
		||||
  &__column {
 | 
			
		||||
    padding: 10px 15px;
 | 
			
		||||
    padding-bottom: 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .radio-button {
 | 
			
		||||
 
 | 
			
		||||
@@ -41,7 +41,7 @@
 | 
			
		||||
  cursor: pointer;
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  font-family: inherit;
 | 
			
		||||
  font-size: 17px;
 | 
			
		||||
  font-size: 15px;
 | 
			
		||||
  font-weight: 500;
 | 
			
		||||
  letter-spacing: 0;
 | 
			
		||||
  line-height: 22px;
 | 
			
		||||
 
 | 
			
		||||
@@ -94,17 +94,7 @@
 | 
			
		||||
    padding: 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .directory__list {
 | 
			
		||||
    display: grid;
 | 
			
		||||
    grid-gap: 10px;
 | 
			
		||||
    grid-template-columns: minmax(0, 50%) minmax(0, 50%);
 | 
			
		||||
 | 
			
		||||
    @media screen and (max-width: $no-gap-breakpoint) {
 | 
			
		||||
      display: block;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .directory__card {
 | 
			
		||||
  .account-card {
 | 
			
		||||
    margin-bottom: 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -411,14 +411,6 @@
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .directory__card {
 | 
			
		||||
    border-radius: 4px;
 | 
			
		||||
 | 
			
		||||
    @media screen and (max-width: $no-gap-breakpoint) {
 | 
			
		||||
      border-radius: 0;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .page-header {
 | 
			
		||||
    @media screen and (max-width: $no-gap-breakpoint) {
 | 
			
		||||
      border-bottom: 0;
 | 
			
		||||
@@ -841,19 +833,21 @@
 | 
			
		||||
    grid-gap: 10px;
 | 
			
		||||
    grid-template-columns: minmax(0, 50%) minmax(0, 50%);
 | 
			
		||||
 | 
			
		||||
    .account-card {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      flex-direction: column;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @media screen and (max-width: $no-gap-breakpoint) {
 | 
			
		||||
      display: block;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .icon-button {
 | 
			
		||||
      font-size: 18px;
 | 
			
		||||
      .account-card {
 | 
			
		||||
        margin-bottom: 10px;
 | 
			
		||||
        display: block;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .directory__card {
 | 
			
		||||
    margin-bottom: 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .card-grid {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    flex-wrap: wrap;
 | 
			
		||||
 
 | 
			
		||||
@@ -12,11 +12,6 @@ body.rtl {
 | 
			
		||||
    margin-left: 10px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .directory__card__bar .display-name {
 | 
			
		||||
    margin-left: 0;
 | 
			
		||||
    margin-right: 15px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .display-name {
 | 
			
		||||
    text-align: right;
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user