...
 
Commits (4)
...@@ -64,9 +64,7 @@ class Account extends ImmutablePureComponent { ...@@ -64,9 +64,7 @@ class Account extends ImmutablePureComponent {
render() { render() {
const { account, intl, hidden, onActionClick, actionIcon, actionTitle, displayOnly } = this.props; const { account, intl, hidden, onActionClick, actionIcon, actionTitle, displayOnly } = this.props;
if (!account) { if (!account) return null;
return <div />;
}
if (hidden) { if (hidden) {
return ( return (
......
import { defineMessages, injectIntl } from 'react-intl'; import { defineMessages, injectIntl } from 'react-intl';
import Column from '../column'; import Column from '../column';
import ColumnHeader from '../column_header'; import { ColumnHeader } from '../column_header';
import IconButton from '../icon_button'; import IconButton from '../icon_button';
import './bundle_column_error.scss'; import './bundle_column_error.scss';
......
...@@ -9,12 +9,12 @@ export default class ColumnHeaderSettingButton extends PureComponent { ...@@ -9,12 +9,12 @@ export default class ColumnHeaderSettingButton extends PureComponent {
static propTypes = { static propTypes = {
title: PropTypes.node.isRequired, title: PropTypes.node.isRequired,
icon: PropTypes.string.isRequired, icon: PropTypes.string.isRequired,
onClick: PropTypes.func.isRequired, onClick: PropTypes.func,
to: PropTypes.string, to: PropTypes.string,
}; };
render () { render () {
const { title, icon, to } = this.props; const { title, icon, to, onClick } = this.props;
const classes = classNames('column-header-setting-btn', { const classes = classNames('column-header-setting-btn', {
'column-header-setting-btn--link': !!to 'column-header-setting-btn--link': !!to
...@@ -30,7 +30,7 @@ export default class ColumnHeaderSettingButton extends PureComponent { ...@@ -30,7 +30,7 @@ export default class ColumnHeaderSettingButton extends PureComponent {
} }
return ( return (
<button className={classes} tabIndex='0' onClick={this.props.onClick}> <button className={classes} tabIndex='0' onClick={onClick}>
<Icon id={icon} /> <Icon id={icon} />
{title} {title}
</button> </button>
......
...@@ -3,6 +3,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; ...@@ -3,6 +3,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
import { openModal } from '../../../actions/modal'; import { openModal } from '../../../actions/modal';
import { cancelReplyCompose } from '../../../actions/compose'; import { cancelReplyCompose } from '../../../actions/compose';
import ModalLayout from '../modal_layout'; import ModalLayout from '../modal_layout';
import TimelineComposeBlock from '../../timeline_compose_block';
const messages = defineMessages({ const messages = defineMessages({
confirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' }, confirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' },
...@@ -46,7 +47,7 @@ class ComposeModal extends ImmutablePureComponent { ...@@ -46,7 +47,7 @@ class ComposeModal extends ImmutablePureComponent {
const { intl } = this.props; const { intl } = this.props;
return ( return (
<ModalLayout title={intl.formatMessage(messages.title)} onClose={onClickClose}> <ModalLayout title={intl.formatMessage(messages.title)} onClose={this.onClickClose}>
<TimelineComposeBlock /> <TimelineComposeBlock />
</ModalLayout> </ModalLayout>
); );
......
...@@ -16,7 +16,7 @@ class ModalLayout extends PureComponent { ...@@ -16,7 +16,7 @@ class ModalLayout extends PureComponent {
}; };
render() { render() {
const { title, children } = this.props; const { title, children, intl, onClose } = this.props;
return ( return (
<div className='modal modal--layout modal--root'> <div className='modal modal--layout modal--root'>
......
...@@ -8,7 +8,7 @@ class SectionHeadlineBarItem extends PureComponent { ...@@ -8,7 +8,7 @@ class SectionHeadlineBarItem extends PureComponent {
icon: PropTypes.string, icon: PropTypes.string,
className: PropTypes.string, className: PropTypes.string,
onClick: PropTypes.func, onClick: PropTypes.func,
title: PropTypes.oneOf([ title: PropTypes.oneOfType([
PropTypes.string, PropTypes.string,
PropTypes.node, PropTypes.node,
]), ]),
...@@ -21,14 +21,20 @@ class SectionHeadlineBarItem extends PureComponent { ...@@ -21,14 +21,20 @@ class SectionHeadlineBarItem extends PureComponent {
const classes = classNames('section-header-bar__item', className); const classes = classNames('section-header-bar__item', className);
if (to) { if (to) {
return (<NavLink className={classes} exact={exact} to={to}>{title}</NavLink>); return (
<NavLink className={classes} exact={exact} to={to}>{title}</NavLink>
)
} else if (icon) { } else if (icon) {
<button className={classes} onClick={onClick} title={title}> return (
<Icon id={icon} fixedWidth /> <button className={classes} onClick={onClick} title={title}>
</button> <Icon id={icon} fixedWidth />
</button>
)
} }
return (<button className={classes} onClick={onClick}>{title}</button>) return (
<button className={classes} onClick={onClick}>{title}</button>
)
} }
}; };
...@@ -46,8 +52,8 @@ export default class SectionHeadlineBar extends PureComponent { ...@@ -46,8 +52,8 @@ export default class SectionHeadlineBar extends PureComponent {
return ( return (
<div className={classes}> <div className={classes}>
{ {
items.forEach(item, i => ( items.forEach((item, i) => (
<SectionHeadlineBarItem key={`shbi-{i}`} {...item} /> <SectionHeadlineBarItem key={`shbi-${i}`} {...item} />
)) ))
} }
</div> </div>
......
...@@ -14,6 +14,8 @@ export default class TrendingItem extends ImmutablePureComponent { ...@@ -14,6 +14,8 @@ export default class TrendingItem extends ImmutablePureComponent {
}; };
render() { render() {
const { hashtag } = this.props;
return ( return (
<div className='trending-item'> <div className='trending-item'>
<div className='trending-item__text'> <div className='trending-item__text'>
......
...@@ -15,30 +15,6 @@ import { getLocale } from '../locales'; ...@@ -15,30 +15,6 @@ import { getLocale } from '../locales';
import initialState from '../initial_state'; import initialState from '../initial_state';
import { me } from '../initial_state'; import { me } from '../initial_state';
import ErrorBoundary from '../components/error_boundary'; import ErrorBoundary from '../components/error_boundary';
// import { whyDidYouUpdate } from 'why-did-you-update';
import '../../styles/gabsocial/components.scss';
import '../../styles/gabsocial/components/buttons.scss';
import '../../styles/gabsocial/components/inputs.scss';
import '../../styles/gabsocial/components/tabs-bar.scss';
import '../../styles/gabsocial/components/dropdown-menu.scss';
import '../../styles/gabsocial/components/modal.scss';
import '../../styles/gabsocial/components/account-header.scss';
import '../../styles/gabsocial/components/user-panel.scss';
import '../../styles/gabsocial/components/compose-form.scss';
import '../../styles/gabsocial/components/group-card.scss';
import '../../styles/gabsocial/components/group-detail.scss';
import '../../styles/gabsocial/components/group-form.scss';
import '../../styles/gabsocial/components/group-sidebar-panel.scss';
import '../../styles/gabsocial/polls.scss';
import '../../styles/gabsocial/introduction.scss';
import '../../styles/gabsocial/emoji_picker.scss';
import '../../styles/gabsocial/about.scss';
import '../../styles/gabsocial/tables.scss';
import '../../styles/gabsocial/admin.scss';
import '../../styles/gabsocial/dashboard.scss';
import '../../styles/gabsocial/rtl.scss';
import '../../styles/gabsocial/accessibility.scss';
const { localeData, messages } = getLocale(); const { localeData, messages } = getLocale();
addLocaleData(localeData); addLocaleData(localeData);
...@@ -84,10 +60,6 @@ class GabSocialMount extends PureComponent { ...@@ -84,10 +60,6 @@ class GabSocialMount extends PureComponent {
} }
// whyDidYouUpdate(React);
// whyDidYouUpdate(React, { groupByComponent: true, collapseComponentGroups: false });
// whyDidYouUpdate(React, { exclude: [/^Connect|Link|NavLink|Route/] });
export default class GabSocial extends PureComponent { export default class GabSocial extends PureComponent {
static propTypes = { static propTypes = {
......
...@@ -7,7 +7,7 @@ import Video from '../features/video'; ...@@ -7,7 +7,7 @@ import Video from '../features/video';
import Card from '../features/status/components/card'; import Card from '../features/status/components/card';
import Poll from 'gabsocial/components/poll'; import Poll from 'gabsocial/components/poll';
import ModalRoot from '../components/modal_root'; import ModalRoot from '../components/modal_root';
import MediaModal from '../components/modal'; import { MediaModal } from '../components/modal';
import { List as ImmutableList, fromJS } from 'immutable'; import { List as ImmutableList, fromJS } from 'immutable';
const { localeData, messages } = getLocale(); const { localeData, messages } = getLocale();
......
...@@ -157,7 +157,7 @@ class AccountGallery extends ImmutablePureComponent { ...@@ -157,7 +157,7 @@ class AccountGallery extends ImmutablePureComponent {
} }
render () { render () {
const { attachments, isLoading, hasMore, isAccount, accountId, unavailable, accountUsername } = this.props; const { attachments, isLoading, hasMore, isAccount, accountId, unavailable, accountUsername, intl } = this.props;
const { width } = this.state; const { width } = this.state;
if (!isAccount && accountId !== -1) { if (!isAccount && accountId !== -1) {
......
...@@ -6,6 +6,8 @@ import classNames from 'classnames'; ...@@ -6,6 +6,8 @@ import classNames from 'classnames';
import { decode } from 'blurhash'; import { decode } from 'blurhash';
import { isIOS } from 'gabsocial/utils/is_mobile'; import { isIOS } from 'gabsocial/utils/is_mobile';
import './media_item.scss';
export default class MediaItem extends ImmutablePureComponent { export default class MediaItem extends ImmutablePureComponent {
static propTypes = { static propTypes = {
......
...@@ -2,7 +2,7 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; ...@@ -2,7 +2,7 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import StatusListContainer from '../../containers/status_list_container'; import StatusListContainer from '../../containers/status_list_container';
import Column from '../../components/column'; import Column from '../../components/column';
import ColumnSettings from './components/column_settings'; import ColumnSettings from './components/column_settings';
import HomeColumnHeader from '../../components/column_header'; import { HomeColumnHeader } from '../../components/column_header';
import { import {
expandCommunityTimeline, expandCommunityTimeline,
expandPublicTimeline, expandPublicTimeline,
......
...@@ -17,9 +17,11 @@ export default class CharacterCounter extends PureComponent { ...@@ -17,9 +17,11 @@ export default class CharacterCounter extends PureComponent {
'character-counter--over': (diff < 0), 'character-counter--over': (diff < 0),
}); });
<div className='character-counter__wrapper'> return (
<span className={classes}>{diff}</span> <div className='character-counter__wrapper'>
</div> <span className={classes}>{diff}</span>
</div>
)
} }
} }
...@@ -50,7 +50,7 @@ class ComposeSearch extends PureComponent { ...@@ -50,7 +50,7 @@ class ComposeSearch extends PureComponent {
} }
render () { render () {
const { intl, value, onShow, ...rest } = this.props; const { intl, value, onShow, openInRoute } = this.props;
return ( return (
<Search <Search
...@@ -61,7 +61,7 @@ class ComposeSearch extends PureComponent { ...@@ -61,7 +61,7 @@ class ComposeSearch extends PureComponent {
handleClear={this.handleClear} handleClear={this.handleClear}
onShow={onShow} onShow={onShow}
withOverlay withOverlay
{...rest} openInRoute
/> />
) )
} }
......
...@@ -5,7 +5,7 @@ import AccountContainer from '../../../../containers/account_container'; ...@@ -5,7 +5,7 @@ import AccountContainer from '../../../../containers/account_container';
import StatusContainer from '../../../../containers/status_container'; import StatusContainer from '../../../../containers/status_container';
import TrendingItem from '../../../../components/trending_item'; import TrendingItem from '../../../../components/trending_item';
import Icon from '../../../../components/icon'; import Icon from '../../../../components/icon';
import WhoToFollowPanel from '../../../../components/panel'; import { WhoToFollowPanel } from '../../../../components/panel';
import './search_results.scss'; import './search_results.scss';
......
...@@ -43,7 +43,6 @@ const mapStateToProps = (state, { params: { username } }) => { ...@@ -43,7 +43,6 @@ const mapStateToProps = (state, { params: { username } }) => {
export default @connect(mapStateToProps) export default @connect(mapStateToProps)
@injectIntl
class Following extends ImmutablePureComponent { class Following extends ImmutablePureComponent {
static propTypes = { static propTypes = {
......
...@@ -101,7 +101,7 @@ class Create extends PureComponent { ...@@ -101,7 +101,7 @@ class Create extends PureComponent {
disabled={disabled} disabled={disabled}
onChange={this.handleCoverImageChange} onChange={this.handleCoverImageChange}
/> />
<button className='standard-small'>{intl.formatMessage(messages.create)}</button> <button className='button'>{intl.formatMessage(messages.create)}</button>
</div> </div>
</form> </form>
); );
......
...@@ -47,7 +47,7 @@ class Groups extends ImmutablePureComponent { ...@@ -47,7 +47,7 @@ class Groups extends ImmutablePureComponent {
return ( return (
<div className="group-column-header"> <div className="group-column-header">
<div className="group-column-header__cta"><Link to="/groups/create" className="button standard-small">{intl.formatMessage(messages.create)}</Link></div> <div className="group-column-header__cta"><Link to="/groups/create" className="button">{intl.formatMessage(messages.create)}</Link></div>
<div className="group-column-header__title">{intl.formatMessage(messages.heading)}</div> <div className="group-column-header__title">{intl.formatMessage(messages.heading)}</div>
<div className="column-header__wrapper"> <div className="column-header__wrapper">
......
import StatusListContainer from '../../containers/status_list_container'; import StatusListContainer from '../../containers/status_list_container';
import Column from '../../components/column'; import Column from '../../components/column';
import ColumnHeader from '../../components/column_header'; import { ColumnHeader } from '../../components/column_header';
import { expandHashtagTimeline, clearTimeline } from '../../actions/timelines'; import { expandHashtagTimeline, clearTimeline } from '../../actions/timelines';
import { FormattedMessage } from 'react-intl'; import { FormattedMessage } from 'react-intl';
import { connectHashtagStream } from '../../actions/streaming'; import { connectHashtagStream } from '../../actions/streaming';
......
...@@ -48,7 +48,7 @@ class ListEditorSearch extends PureComponent { ...@@ -48,7 +48,7 @@ class ListEditorSearch extends PureComponent {
} }
render () { render () {
const { value, intl, ...rest } = this.props; const { value, intl } = this.props;
return ( return (
<Search <Search
...@@ -60,7 +60,6 @@ class ListEditorSearch extends PureComponent { ...@@ -60,7 +60,6 @@ class ListEditorSearch extends PureComponent {
handleSubmit={this.handleSubmit} handleSubmit={this.handleSubmit}
handleClear={this.handleClear} handleClear={this.handleClear}
searchTitle={intl.formatMessage(messages.searchTitle)} searchTitle={intl.formatMessage(messages.searchTitle)}
{...rest}
/> />
) )
} }
......
...@@ -10,7 +10,7 @@ import { fetchList, deleteList } from '../../actions/lists'; ...@@ -10,7 +10,7 @@ import { fetchList, deleteList } from '../../actions/lists';
import { openModal } from '../../actions/modal'; import { openModal } from '../../actions/modal';
import ColumnIndicator from '../../components/column_indicator'; import ColumnIndicator from '../../components/column_indicator';
import Icon from '../../components/icon'; import Icon from '../../components/icon';
import HomeColumnHeader from '../../components/column_header'; import { HomeColumnHeader } from '../../components/column_header';
import Button from '../../components/button'; import Button from '../../components/button';
import ColumnHeaderSettingButton from '../../components/column_header_setting_button'; import ColumnHeaderSettingButton from '../../components/column_header_setting_button';
......
import { defineMessages, injectIntl } from 'react-intl'; import { defineMessages, injectIntl } from 'react-intl';
import SectionHeadlineBar from '../../../../components/section_headline_bar'; import SectionHeadlineBar from '../../../../components/section_headline_bar';
const tooltips = defineMessages({ const messages = defineMessages({
mentions: { id: 'notifications.filter.mentions', defaultMessage: 'Mentions' }, mentions: { id: 'notifications.filter.mentions', defaultMessage: 'Mentions' },
favourites: { id: 'notifications.filter.favourites', defaultMessage: 'Favorites' }, favourites: { id: 'notifications.filter.favourites', defaultMessage: 'Favorites' },
boosts: { id: 'notifications.filter.boosts', defaultMessage: 'Reposts' }, boosts: { id: 'notifications.filter.boosts', defaultMessage: 'Reposts' },
...@@ -58,33 +58,33 @@ class NotificationFilterBar extends PureComponent { ...@@ -58,33 +58,33 @@ class NotificationFilterBar extends PureComponent {
{ {
className: selectedFilter === 'mention' ? 'active' : '', className: selectedFilter === 'mention' ? 'active' : '',
onClick: this.onClick('mention'), onClick: this.onClick('mention'),
title: intl.formatMessage(tooltips.mentions), title: intl.formatMessage(messages.mentions),
icon: 'at', icon: 'at',
}, },
{ {
className: selectedFilter === 'favourite' ? 'active' : '', className: selectedFilter === 'favourite' ? 'active' : '',
onClick: this.onClick('favourite'), onClick: this.onClick('favourite'),
title: intl.formatMessage(tooltips.favourites), title: intl.formatMessage(messages.favourites),
icon: 'star', icon: 'star',
}, },
{ {
className: selectedFilter === 'reblog' ? 'active' : '', className: selectedFilter === 'reblog' ? 'active' : '',
onClick: this.onClick('reblog'), onClick: this.onClick('reblog'),
title: intl.formatMessage(tooltips.boosts), title: intl.formatMessage(messages.boosts),
icon: 'retweet', icon: 'retweet',
}, },
{ {
className: selectedFilter === 'poll' ? 'active' : '', className: selectedFilter === 'poll' ? 'active' : '',
onClick: this.onClick('poll'), onClick: this.onClick('poll'),
title: intl.formatMessage(tooltips.polls), title: intl.formatMessage(messages.polls),
icon: 'tasks', icon: 'tasks',
}, },
{ {
className: selectedFilter === 'follow' ? 'active' : '', className: selectedFilter === 'follow' ? 'active' : '',
onClick: this.onClick('follow'), onClick: this.onClick('follow'),
title: intl.formatMessage(tooltips.follows), title: intl.formatMessage(messages.follows),
icon: 'user-plus', icon: 'user-plus',
} },
]} ]}
/> />
) )
......
...@@ -5,7 +5,7 @@ import { createSelector } from 'reselect'; ...@@ -5,7 +5,7 @@ import { createSelector } from 'reselect';
import { List as ImmutableList } from 'immutable'; import { List as ImmutableList } from 'immutable';
import { debounce } from 'lodash'; import { debounce } from 'lodash';
import Column from '../../components/column'; import Column from '../../components/column';
import ColumnHeader from '../../components/column_header'; import { ColumnHeader } from '../../components/column_header';
import { import {
expandNotifications, expandNotifications,
scrollTopNotifications, scrollTopNotifications,
......
...@@ -32,12 +32,12 @@ import { ...@@ -32,12 +32,12 @@ import {
import { initMuteModal } from '../../actions/mutes'; import { initMuteModal } from '../../actions/mutes';
import { initReport } from '../../actions/reports'; import { initReport } from '../../actions/reports';
import { makeGetStatus } from '../../selectors'; import { makeGetStatus } from '../../selectors';
import ColumnHeader from '../../components/column_header'; import { ColumnHeader } from '../../components/column_header';
import StatusContainer from '../../containers/status_container'; import StatusContainer from '../../containers/status_container';
import { openModal } from '../../actions/modal'; import { openModal } from '../../actions/modal';
import { boostModal, deleteModal, me } from '../../initial_state'; import { boostModal, deleteModal, me } from '../../initial_state';
import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../../utils/fullscreen'; import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../../utils/fullscreen';
import { textForScreenReader, defaultMediaVisibility } from '../../components/status'; import { textForScreenReader, defaultMediaVisibility } from '../../components/status/status';
import Icon from '../../components/icon'; import Icon from '../../components/icon';
import ColumnIndicator from '../../components/column_indicator'; import ColumnIndicator from '../../components/column_indicator';
...@@ -420,7 +420,7 @@ class Status extends ImmutablePureComponent { ...@@ -420,7 +420,7 @@ class Status extends ImmutablePureComponent {
const { fullscreen } = this.state; const { fullscreen } = this.state;
if (status === null) { if (status === null) {
return (<ColumnIndicator type='missing' />); return (<ColumnIndicator type='loading' />);
} }
if (ancestorsIds && ancestorsIds.size > 0) { if (ancestorsIds && ancestorsIds.size > 0) {
......
...@@ -18,7 +18,7 @@ import { openModal } from '../../actions/modal'; ...@@ -18,7 +18,7 @@ import { openModal } from '../../actions/modal';
import WrappedRoute from './util/wrapped_route'; import WrappedRoute from './util/wrapped_route';
import UploadArea from '../../components/upload_area'; import UploadArea from '../../components/upload_area';
import TabsBar from '../../components/tabs_bar'; import TabsBar from '../../components/tabs_bar';
import WhoToFollowPanel from '../../components/panel'; import { WhoToFollowPanel } from '../../components/panel';
import LinkFooter from '../../components/link_footer'; import LinkFooter from '../../components/link_footer';
import ProfilePage from 'gabsocial/pages/profile_page'; import ProfilePage from 'gabsocial/pages/profile_page';
import GroupPage from 'gabsocial/pages/group_page'; import GroupPage from 'gabsocial/pages/group_page';
...@@ -65,6 +65,7 @@ import '../../components/status'; ...@@ -65,6 +65,7 @@ import '../../components/status';
import { fetchGroups } from '../../actions/groups'; import { fetchGroups } from '../../actions/groups';
import { Fragment } from 'react'; import { Fragment } from 'react';
import '../../../styles/application.scss';
import './ui.scss'; import './ui.scss';
const messages = defineMessages({ const messages = defineMessages({
......
...@@ -2,9 +2,9 @@ import { Fragment } from 'react'; ...@@ -2,9 +2,9 @@ import { Fragment } from 'react';
import { PropTypes } from 'prop-types'; import { PropTypes } from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePropTypes from 'react-immutable-proptypes';
import ImmutablePureComponent from 'react-immutable-pure-component'; import ImmutablePureComponent from 'react-immutable-pure-component';
import WhoToFollowPanel from '../components/panel'; import { WhoToFollowPanel } from '../components/panel';
import LinkFooter from '../components/link_footer'; import LinkFooter from '../components/link_footer';
import PromoPanel from '../components/panel'; import PromoPanel from '../components/promo_panel';
import HeaderContainer from '../features/groups/timeline/containers/header_container'; import HeaderContainer from '../features/groups/timeline/containers/header_container';
import GroupPanel from '../features/groups/timeline/components/panel'; import GroupPanel from '../features/groups/timeline/components/panel';
import { fetchGroup } from '../actions/groups'; import { fetchGroup } from '../actions/groups';
......
...@@ -2,7 +2,7 @@ import { Fragment } from 'react'; ...@@ -2,7 +2,7 @@ import { Fragment } from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePropTypes from 'react-immutable-proptypes';
import ImmutablePureComponent from 'react-immutable-pure-component'; import ImmutablePureComponent from 'react-immutable-pure-component';
import HeaderContainer from '../features/account_timeline/containers/header_container'; import HeaderContainer from '../features/account_timeline/containers/header_container';
import {WhoToFollowPanel, SignUpPanel} from '../components/panel'; import { WhoToFollowPanel, SignUpPanel } from '../components/panel';
import LinkFooter from '../components/link_footer'; import LinkFooter from '../components/link_footer';
import ProfileInfoPanel from '../features/account_timeline/components/profile_info_panel/profile_info_panel'; import ProfileInfoPanel from '../features/account_timeline/components/profile_info_panel/profile_info_panel';
import ColumnsArea from '../components/columns_area'; import ColumnsArea from '../components/columns_area';
...@@ -37,12 +37,15 @@ class ProfilePage extends ImmutablePureComponent { ...@@ -37,12 +37,15 @@ class ProfilePage extends ImmutablePureComponent {
static propTypes = { static propTypes = {
account: ImmutablePropTypes.map, account: ImmutablePropTypes.map,
accountUsername: PropTypes.string.isRequired, accountUsername: PropTypes.string.isRequired,
accountId: PropTypes.number.isRequired, accountId: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number,
]).isRequired,
children: PropTypes.node, children: PropTypes.node,
}; };
render () { render() {
const {accountId, account, accountUsername} = this.props; const { accountId, account, accountUsername } = this.props;
return ( return (
<ColumnsArea <ColumnsArea
......
...@@ -130,11 +130,11 @@ ...@@ -130,11 +130,11 @@
line-height: $lineHeight; line-height: $lineHeight;
} }
@if ($textAlign != '') { @if ($textAlign !='') {
text-align: $textAlign; text-align: $textAlign;
} }
@if ($letterSpacing != '') { @if ($letterSpacing !='') {
letter-spacing: $letterSpacing; letter-spacing: $letterSpacing;
} }
} }
...@@ -184,11 +184,11 @@ ...@@ -184,11 +184,11 @@
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
@if ($whitespace != '') { @if ($whitespace !='') {
white-space: $whitespace; white-space: $whitespace;
} }
@if ($wordWrap != '') { @if ($wordWrap !='') {
word-wrap: $wordWrap; word-wrap: $wordWrap;
} }
} }
...@@ -247,6 +247,7 @@ ...@@ -247,6 +247,7 @@
@include text-sizing(16px, 400, 19px); @include text-sizing(16px, 400, 19px);
@include border-design($gab-placeholder-accent, 1px, 4px); @include border-design($gab-placeholder-accent, 1px, 4px);
@include input-placeholder { @include input-placeholder {
color: $gab-placeholder-accent; color: $gab-placeholder-accent;
} }
...@@ -260,4 +261,58 @@ ...@@ -260,4 +261,58 @@
&:active { &:active {
outline: 0 !important; outline: 0 !important;
} }
}
// TYPEOGRAPHY MIXINS
// declare the font family using these shortcuts
@mixin font-roboto() {
font-family: 'Roboto', Arial, sans-serif !important;
}
@mixin font-montserrat() {
font-family: 'Montserrat', Arial, sans-serif !important;
}
// Declare font weights as a numerical value in rendered output
// Prevents certain browsers which do not play nice with "light, medium" textual declarations
// Numeical values always work more consistently across browsers
// Each font-weight is linked with the @font-face declaration to the actual font file
@mixin font-weight($weight) {
@if $weight=='light' {
font-weight: 300;
}
@if $weight=='normal' {
font-weight: 400;
}
@if $weight=='medium' {
font-weight: 500;
}
@if $weight=='bold' {
font-weight: 700;
}
@if $weight=='extrabold' {
font-weight: 800;
}
}
// Use these mixins to define font-size and line-height
// html and body declaration allows developer to pass px value as argument
// Rendered css will default to "rem" and fall back to "px" for unsupported browsers
@mixin font-size($size) {
$rem: ($size / 10);
$px: $size;
font-size: #{$px + "px"};
font-size: #{$rem + "rem"};
}
@mixin line-height($size) {
$rem: ($size / 10);
$px: $size;
line-height: #{$px + "px"};
line-height: #{$rem + "rem"};
} }
\ No newline at end of file
@import 'gabsocial/mixins'; @import './gabsocial/variables';
@import 'gabsocial/variables';
@import 'gabsocial/fonts'; @import 'gabsocial/fonts';
@import 'gabsocial/reset'; @import 'gabsocial/reset';
@import 'gabsocial/scrollbars';
@import 'gabsocial/basics'; @import 'gabsocial/basics';
@import 'gabsocial/containers'; @import 'gabsocial/containers';
@import 'gabsocial/lists'; @import 'gabsocial/lists';
...@@ -12,13 +11,11 @@ ...@@ -12,13 +11,11 @@
@import 'gabsocial/forms'; @import 'gabsocial/forms';
@import 'gabsocial/accounts'; @import 'gabsocial/accounts';
@import 'gabsocial/stream_entries'; @import 'gabsocial/stream_entries';
@import 'gabsocial/boost';
// NOTE - In the process of stripping this giant file into individual components (below) // NOTE - In the process of stripping this giant file into individual components (below)
@import 'gabsocial/components'; @import 'gabsocial/components';
// COMPONENTS // COMPONENTS
@import 'gabsocial/components/buttons';
@import 'gabsocial/components/inputs'; @import 'gabsocial/components/inputs';
@import 'gabsocial/components/tabs-bar'; @import 'gabsocial/components/tabs-bar';
@import 'gabsocial/components/dropdown-menu'; @import 'gabsocial/components/dropdown-menu';
...@@ -32,7 +29,6 @@ ...@@ -32,7 +29,6 @@
@import 'gabsocial/components/group-sidebar-panel'; @import 'gabsocial/components/group-sidebar-panel';
@import 'gabsocial/polls'; @import 'gabsocial/polls';
@import 'gabsocial/introduction';
@import 'gabsocial/emoji_picker'; @import 'gabsocial/emoji_picker';
@import 'gabsocial/about'; @import 'gabsocial/about';
@import 'gabsocial/tables'; @import 'gabsocial/tables';
......
@import 'contrast/variables';
@import 'application';
@import 'contrast/diff';
...@@ -58,16 +58,6 @@ ...@@ -58,16 +58,6 @@
} }
} }
.getting-started__footer a {
text-decoration: underline;
&:hover,
&:focus,
&:active {
text-decoration: none;
}
}
.nothing-here { .nothing-here {
color: $darker-text-color; color: $darker-text-color;
} }
......
@import 'gabsocial-light/variables';
@import 'application';
@import 'gabsocial-light/diff';
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
.button { .button {
color: $white; color: $white;
&.button-alternative-2 { &.button--alternative-2 {
color: $white; color: $white;
} }
} }
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
} }
.detailed-status, .detailed-status,
.detailed-status__action-bar { .detailed-status-action-bar {
background: darken($ui-base-color, 6%); background: darken($ui-base-color, 6%);
} }
...@@ -214,7 +214,6 @@ ...@@ -214,7 +214,6 @@
} }
// Change the default color used for the text in an empty column or on the error column // Change the default color used for the text in an empty column or on the error column
.empty-column-indicator,
.error-column { .error-column {
color: $primary-text-color; color: $primary-text-color;
background: $white; background: $white;
...@@ -317,16 +316,11 @@ ...@@ -317,16 +316,11 @@
} }
} }
.account__section-headline a.active::after { .account-section-headline a.active::after {
border-color: transparent transparent $white; border-color: transparent transparent $white;
} }
.hero-widget,
.box-widget, .box-widget,
.contact-widget,
.landing-page__information.contact-widget,
.moved-account-widget,
.memoriam-widget,
.activity-stream, .activity-stream,
.nothing-here, .nothing-here,
.directory__tag > a, .directory__tag > a,
......
// NEW GAB SPECIFIC MIXINS
// THEME MIXINS
// standard container drop shadow
@mixin light-theme-shadow() {box-shadow: 0 0 6px 0 rgba(0,0,0,0.1);}
// common properties for all standard containers
@mixin gab-container-standards() {
border-radius: 10px;
background: $gab-background-container;
body.theme-gabsocial-light & {
@include light-theme-shadow();
background: $gab-background-container-light;
}
}
// SHORTCUTS
@mixin input-placeholder($color) {
&::-webkit-input-placeholder {color: $color;}
&::-moz-placeholder {color: $color;}
&:-ms-input-placeholder {color: $color;}
&:-moz-placeholder {color: $color;}
}
// OLDER MIXINS
@mixin avatar-radius() {
border-radius: 50%;
background: transparent no-repeat;
background-position: 50%;
background-clip: padding-box;
}
@mixin avatar-size($size:48px) {
width: $size;
height: $size;
background-size: $size $size;
}
@mixin search-input() {
outline: 0;
box-sizing: border-box;
width: 100%;
border: 1px $gab-placeholder-accent solid;
box-shadow: none;
font-family: inherit;
background: $gab-background-container;
color: $gab-text-highlight;
@include font-size(16);
@include line-height(19);
margin: 0;
border-radius: 4px;
// Chrome does not like these concatinated together
&::placeholder {color: $gab-placeholder-accent;}
&:-ms-input-placeholder {color: $gab-placeholder-accent;}
&::-ms-input-placeholder{color: $gab-placeholder-accent;}
&::-moz-focus-inner {
border: 0;
}
&::-moz-focus-inner,
&:focus,
&:active {
outline: 0 !important;
}
}
@mixin search-popout() {
background: $gab-background-container;
border-radius: 4px;
border: 1px solid $gab-placeholder-accent;
padding: 8px 10px 17px 10px;
margin: 4px 0 0 0;
@include font-size(12);
@include line-height(14);
@include font-weight(normal);
color: $gab-secondary-text;
box-shadow: 0 0 6px 0 rgba(0,0,0,0.5);
h4 {
color: #fff;
@include font-size(14);
@include line-height(16);
@include font-weight(bold);
}
ul {
margin: 6px 0 6px;
li {
margin: 0 0 2px 0;
em {color: $gab-text-highlight;}
}
}
}
This diff is collapsed.
.card { .card {
& > a { &>a {
display: block; display: block;
text-decoration: none; text-decoration: none;
color: inherit; color: inherit;
...@@ -26,14 +26,14 @@ ...@@ -26,14 +26,14 @@
img { img {
display: block; display: block;
width: 100%;
height: 100%;
margin: 0; margin: 0;
object-fit: cover; object-fit: cover;
border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0;
@include size(100%);
} }
@media screen and (max-width: 600px) { @include breakpoint(sm) {
height: 200px; height: 200px;
} }
...@@ -45,30 +45,29 @@ ...@@ -45,30 +45,29 @@
&__bar { &__bar {
position: relative; position: relative;
padding: 15px; padding: 15px;
display: flex;
justify-content: flex-start;
align-items: center;
background: lighten($ui-base-color, 4%); background: lighten($ui-base-color, 4%);
border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px;
@include flex(flex-start, center);
@media screen and (max-width: $no-gap-breakpoint) { @media screen and (max-width: $no-gap-breakpoint) {
border-radius: 0; border-radius: 0;
} }
.avatar { .avatar {
flex: 0 0 auto; flex: 0 0 auto;
width: 48px;
height: 48px;
padding-top: 2px; padding-top: 2px;
@include size(48px);
img { img {
width: 100%;
height: 100%;
display: block; display: block;
margin: 0; margin: 0;
border-radius: 4px; border-radius: 4px;
background: darken($ui-base-color, 8%); background: darken($ui-base-color, 8%);
object-fit: cover; object-fit: cover;
@include size(100%);
} }
} }
...@@ -77,20 +76,18 @@ ...@@ -77,20 +76,18 @@
text-align: left; text-align: left;
strong { strong {
font-size: 15px;
color: $primary-text-color; color: $primary-text-color;
font-weight: 500;
overflow: hidden; @include text-overflow;
text-overflow: ellipsis; @include text-sizing(15px, 500);
} }
span { span {
display: block; display: block;
font-size: 14px;
color: $gab-secondary-text; color: $gab-secondary-text;
font-weight: 400;
overflow: hidden; @include text-overflow;
text-overflow: ellipsis; @include text-sizing(14px, 400);
} }
} }
} }
...@@ -107,12 +104,12 @@ ...@@ -107,12 +104,12 @@
.older, .older,
.page, .page,
.gap { .gap {
font-size: 14px;
color: $primary-text-color; color: $primary-text-color;
font-weight: 500;
display: inline-block; display: inline-block;
padding: 6px 10px; padding: 6px 10px;
text-decoration: none; text-decoration: none;
@include text-sizing(14px, 500);
} }
.current { .current {
...@@ -176,17 +173,14 @@ ...@@ -176,17 +173,14 @@
background: $ui-base-color; background: $ui-base-color;
box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
color: $gab-secondary-text; color: $gab-secondary-text;
font-size: 14px;
font-weight: 500;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
cursor: default; cursor: default;
border-radius: 4px; border-radius: 4px;
padding: 20px; padding: 20px;
min-height: 30vh; min-height: 30vh;
@include flex(center, center);
@include text-sizing(14px, 500, 1, center);
&--under-tabs { &--under-tabs {
border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px;
} }
...@@ -201,13 +195,11 @@ ...@@ -201,13 +195,11 @@
display: inline-block; display: inline-block;
padding: 4px 6px; padding: 4px 6px;
cursor: default; cursor: default;
border-radius: 3px;
font-size: 12px;
line-height: 12px;
font-weight: 500;
color: $ui-secondary-color; color: $ui-secondary-color;
background-color: rgba($ui-secondary-color, 0.1); background-color: rgba($ui-secondary-color, 0.1);
border: 1px solid rgba($ui-secondary-color, 0.5);
@include text-sizing(12px, 500, 12px);
@include border-design(rgba($ui-secondary-color, 0.5), 1px, 3px);
&.moderator { &.moderator {
color: $success-green; color: $success-green;
...@@ -228,8 +220,8 @@ ...@@ -228,8 +220,8 @@
border: 0 none; border: 0 none;
border-top: 1px solid lighten($ui-base-color, 12%); border-top: 1px solid lighten($ui-base-color, 12%);
border-bottom: 1px solid lighten($ui-base-color, 12%); border-bottom: 1px solid lighten($ui-base-color, 12%);
font-size: 14px;
line-height: 20px; @include text-sizing(14px, 400, 20px);
dl { dl {
display: flex; display: flex;
...@@ -239,12 +231,10 @@ ...@@ -239,12 +231,10 @@
dt, dt,
dd { dd {
box-sizing: border-box; box-sizing: border-box;
padding: 14px;
text-align: center;
max-height: 48px; max-height: 48px;
overflow: hidden;
white-space: nowrap; @include text-overflow(nowrap);
text-overflow: ellipsis; @include text-sizing(14px, 400, 1, center);
} }
dt { dt {
...@@ -290,7 +280,7 @@ ...@@ -290,7 +280,7 @@
} }
} }
.directory__tag .trends__item__current { .directory__tag .trending-item__uses {
width: auto; width: auto;
} }
...@@ -318,4 +308,4 @@ ...@@ -318,4 +308,4 @@
&__body { &__body {
margin-top: 10px; margin-top: 10px;
} }
} }
\ No newline at end of file
...@@ -3,16 +3,16 @@ $sidebar-width: 240px; ...@@ -3,16 +3,16 @@ $sidebar-width: 240px;
$content-width: 840px; $content-width: 840px;
.admin-wrapper { .admin-wrapper {
display: flex;
justify-content: center;
height: 100%; height: 100%;
@include flex(center);
.sidebar-wrapper { .sidebar-wrapper {
flex: 1 1 $sidebar-width; flex: 1 1 $sidebar-width;
height: 100%; height: 100%;
background: $ui-base-color; background: $ui-base-color;
display: flex;
justify-content: flex-end; @include flex(flex-end);
} }
.sidebar { .sidebar {
...@@ -24,12 +24,12 @@ $content-width: 840px; ...@@ -24,12 +24,12 @@ $content-width: 840px;
.logo { .logo {
display: block; display: block;
margin: 40px auto; margin: 40px auto;
width: 100px;
height: 100px; @include size(100px);
} }
@media screen and (max-width: $no-columns-breakpoint) { @media screen and (max-width: $no-columns-breakpoint) {
& > a:first-child { &>a:first-child {
display: none; display: none;
} }
} }
...@@ -93,7 +93,7 @@ $content-width: 840px; ...@@ -93,7 +93,7 @@ $content-width: 840px;
} }
} }
& > ul > .simple-navigation-active-leaf a { &>ul>.simple-navigation-active-leaf a {
border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px;
} }
} }
...@@ -105,49 +105,41 @@ $content-width: 840px; ...@@ -105,49 +105,41 @@ $content-width: 840px;
.content { .content {
max-width: $content-width; max-width: $content-width;
padding: 20px 15px; padding: 60px 15px 20px 25px;
padding-top: 60px;
padding-left: 25px;
@media screen and (max-width: $no-columns-breakpoint) { @media screen and (max-width: $no-columns-breakpoint) {
max-width: none; max-width: none;
padding: 15px; padding: 30px 15px 15px 15px;
padding-top: 30px;
} }
h2 { h2 {
color: $secondary-text-color; color: $secondary-text-color;
font-size: 24px;
line-height: 28px;
font-weight: 400;
padding-bottom: 40px;
border-bottom: 1px solid lighten($ui-base-color, 8%); border-bottom: 1px solid lighten($ui-base-color, 8%);
margin-bottom: 40px;
@include text-sizing(24px, 400, 28px);
@include bottom-spacing(40px);
} }
h3 { h3 {
color: $secondary-text-color; color: $secondary-text-color;
font-size: 20px;
line-height: 28px;
font-weight: 400;
margin-bottom: 30px; margin-bottom: 30px;
@include text-sizing(20px, 400, 28px);
} }
h4 { h4 {
text-transform: uppercase; text-transform: uppercase;
font-size: 13px;
font-weight: 700;
color: $gab-secondary-text; color: $gab-secondary-text;
padding-bottom: 8px;
margin-bottom: 8px;
border-bottom: 1px solid lighten($ui-base-color, 8%); border-bottom: 1px solid lighten($ui-base-color, 8%);
@include text-sizing(13px, 700);
@include bottom-spacing(8px);
} }
h6 { h6 {
font-size: 16px;
color: $secondary-text-color; color: $secondary-text-color;
line-height: 28px;
font-weight: 400; @include text-sizing(16px, 400, 28px);
} }
.fields-group h6 { .fields-group h6 {
...@@ -155,8 +147,8 @@ $content-width: 840px; ...@@ -155,8 +147,8 @@ $content-width: 840px;
font-weight: 500; font-weight: 500;
} }
.directory__tag > a, .directory__tag>a,
.directory__tag > div { .directory__tag>div {
box-shadow: none; box-shadow: none;
} }
...@@ -165,21 +157,20 @@ $content-width: 840px; ...@@ -165,21 +157,20 @@ $content-width: 840px;
} }
.directory__tag h4 { .directory__tag h4 {
font-size: 18px;
font-weight: 700;
color: $gab-secondary-text; color: $gab-secondary-text;
text-transform: none; text-transform: none;
padding-bottom: 0;
margin-bottom: 0;
border-bottom: none; border-bottom: none;
@include text-sizing(18px, 700);
@include bottom-spacing(0);
} }
& > p { &>p {
font-size: 14px;
line-height: 18px;
color: $gab-secondary-text; color: $gab-secondary-text;
margin-bottom: 20px; margin-bottom: 20px;
@include text-sizing(14px, 400, 18px);
strong { strong {
color: $gab-secondary-text; color: $gab-secondary-text;
font-weight: 500; font-weight: 500;
...@@ -193,12 +184,12 @@ $content-width: 840px; ...@@ -193,12 +184,12 @@ $content-width: 840px;
} }
hr { hr {
width: 100%;
height: 0;
border: 0; border: 0;
border-bottom: 1px solid rgba($ui-base-lighter-color, .6); border-bottom: 1px solid rgba($ui-base-lighter-color, .6);
margin: 20px 0; margin: 20px 0;
@include size(100%, 0);
&.spacer { &.spacer {
height: 1px; height: 1px;
border: 0; border: 0;
...@@ -272,9 +263,9 @@ $content-width: 840px; ...@@ -272,9 +263,9 @@ $content-width: 840px;
} }
strong { strong {
font-weight: 500;
text-transform: uppercase; text-transform: uppercase;
font-size: 12px;
@include text-sizing(12px, 500);
@each $lang in $cjk-langs { @each $lang in $cjk-langs {
&:lang(#{$lang}) { &:lang(#{$lang}) {
...@@ -288,10 +279,10 @@ $content-width: 840px; ...@@ -288,10 +279,10 @@ $content-width: 840px;
color: $gab-secondary-text; color: $gab-secondary-text;
text-decoration: none; text-decoration: none;
text-transform: uppercase; text-transform: uppercase;
font-size: 12px;
font-weight: 500;
border-bottom: 2px solid $gab-secondary-text; border-bottom: 2px solid $gab-secondary-text;
@include text-sizing(12px, 500);
&:hover { &:hover {
color: $primary-text-color; color: $primary-text-color;
border-bottom: 2px solid lighten($gab-secondary-text, 5%); border-bottom: 2px solid lighten($gab-secondary-text, 5%);
...@@ -317,14 +308,13 @@ $content-width: 840px; ...@@ -317,14 +308,13 @@ $content-width: 840px;
flex-direction: column; flex-direction: column;
margin: 0 5px; margin: 0 5px;
& > strong { &>strong {
display: block; display: block;
margin: 0 0 10px -5px; margin: 0 0 10px -5px;
font-weight: 500;
font-size: 14px;
line-height: 18px;
color: $secondary-text-color; color: $secondary-text-color;
@include text-sizing(14px, 500, 18px);
@each $lang in $cjk-langs { @each $lang in $cjk-langs {
&:lang(#{$lang}) { &:lang(#{$lang}) {
font-weight: 700; font-weight: 700;
...@@ -420,15 +410,14 @@ $content-width: 840px; ...@@ -420,15 +410,14 @@ $content-width: 840px;
line-height: 20px; line-height: 20px;
&__header { &__header {
display: flex;
justify-content: flex-start;
align-items: center;
padding: 10px; padding: 10px;
background: $ui-base-color; background: $ui-base-color;
color: $darker-text-color; color: $darker-text-color;
border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0;
font-size: 14px; font-size: 14px;
position: relative; position: relative;
@include flex(flex-start, center);
} }
&__avatar { &__avatar {
...@@ -437,9 +426,8 @@ $content-width: 840px; ...@@ -437,9 +426,8 @@ $content-width: 840px;
.avatar { .avatar {
display: block; display: block;
margin: 0; margin: 0;
border-radius: 50%;
width: 40px; @include circle(40px);
height: 40px;
} }
} }
...@@ -473,12 +461,8 @@ $content-width: 840px; ...@@ -473,12 +461,8 @@ $content-width: 840px;
} }
&__icon__overlay { &__icon__overlay {
position: absolute; @include circle(10px);
top: 10px; @include abs-position(10px, 10px);
right: 10px;
width: 10px;
height: 10px;
border-radius: 50%;
&.positive { &.positive {
background: $success-green; background: $success-green;
...@@ -575,13 +559,11 @@ a.name-tag, ...@@ -575,13 +559,11 @@ a.name-tag,
} }
&__bubble { &__bubble {
padding: 16px; padding: 16px 16px 16px 14px;
padding-left: 14px;
font-size: 15px;
line-height: 20px;
border-radius: 4px 4px 4px 0; border-radius: 4px 4px 4px 0;
position: relative; position: relative;
font-weight: 500