...
 
Commits (4)
......@@ -64,9 +64,7 @@ class Account extends ImmutablePureComponent {
render() {
const { account, intl, hidden, onActionClick, actionIcon, actionTitle, displayOnly } = this.props;
if (!account) {
return <div />;
}
if (!account) return null;
if (hidden) {
return (
......
import { defineMessages, injectIntl } from 'react-intl';
import Column from '../column';
import ColumnHeader from '../column_header';
import { ColumnHeader } from '../column_header';
import IconButton from '../icon_button';
import './bundle_column_error.scss';
......
......@@ -9,12 +9,12 @@ export default class ColumnHeaderSettingButton extends PureComponent {
static propTypes = {
title: PropTypes.node.isRequired,
icon: PropTypes.string.isRequired,
onClick: PropTypes.func.isRequired,
onClick: PropTypes.func,
to: PropTypes.string,
};
render () {
const { title, icon, to } = this.props;
const { title, icon, to, onClick } = this.props;
const classes = classNames('column-header-setting-btn', {
'column-header-setting-btn--link': !!to
......@@ -30,7 +30,7 @@ export default class ColumnHeaderSettingButton extends PureComponent {
}
return (
<button className={classes} tabIndex='0' onClick={this.props.onClick}>
<button className={classes} tabIndex='0' onClick={onClick}>
<Icon id={icon} />
{title}
</button>
......
......@@ -3,6 +3,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
import { openModal } from '../../../actions/modal';
import { cancelReplyCompose } from '../../../actions/compose';
import ModalLayout from '../modal_layout';
import TimelineComposeBlock from '../../timeline_compose_block';
const messages = defineMessages({
confirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' },
......@@ -46,7 +47,7 @@ class ComposeModal extends ImmutablePureComponent {
const { intl } = this.props;
return (
<ModalLayout title={intl.formatMessage(messages.title)} onClose={onClickClose}>
<ModalLayout title={intl.formatMessage(messages.title)} onClose={this.onClickClose}>
<TimelineComposeBlock />
</ModalLayout>
);
......
......@@ -16,7 +16,7 @@ class ModalLayout extends PureComponent {
};
render() {
const { title, children } = this.props;
const { title, children, intl, onClose } = this.props;
return (
<div className='modal modal--layout modal--root'>
......
......@@ -8,7 +8,7 @@ class SectionHeadlineBarItem extends PureComponent {
icon: PropTypes.string,
className: PropTypes.string,
onClick: PropTypes.func,
title: PropTypes.oneOf([
title: PropTypes.oneOfType([
PropTypes.string,
PropTypes.node,
]),
......@@ -21,14 +21,20 @@ class SectionHeadlineBarItem extends PureComponent {
const classes = classNames('section-header-bar__item', className);
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) {
<button className={classes} onClick={onClick} title={title}>
<Icon id={icon} fixedWidth />
</button>
return (
<button className={classes} onClick={onClick} title={title}>
<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 {
return (
<div className={classes}>
{
items.forEach(item, i => (
<SectionHeadlineBarItem key={`shbi-{i}`} {...item} />
items.forEach((item, i) => (
<SectionHeadlineBarItem key={`shbi-${i}`} {...item} />
))
}
</div>
......
......@@ -14,6 +14,8 @@ export default class TrendingItem extends ImmutablePureComponent {
};
render() {
const { hashtag } = this.props;
return (
<div className='trending-item'>
<div className='trending-item__text'>
......
......@@ -15,30 +15,6 @@ import { getLocale } from '../locales';
import initialState from '../initial_state';
import { me } from '../initial_state';
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();
addLocaleData(localeData);
......@@ -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 {
static propTypes = {
......
......@@ -7,7 +7,7 @@ import Video from '../features/video';
import Card from '../features/status/components/card';
import Poll from 'gabsocial/components/poll';
import ModalRoot from '../components/modal_root';
import MediaModal from '../components/modal';
import { MediaModal } from '../components/modal';
import { List as ImmutableList, fromJS } from 'immutable';
const { localeData, messages } = getLocale();
......
......@@ -157,7 +157,7 @@ class AccountGallery extends ImmutablePureComponent {
}
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;
if (!isAccount && accountId !== -1) {
......
......@@ -6,6 +6,8 @@ import classNames from 'classnames';
import { decode } from 'blurhash';
import { isIOS } from 'gabsocial/utils/is_mobile';
import './media_item.scss';
export default class MediaItem extends ImmutablePureComponent {
static propTypes = {
......
......@@ -2,7 +2,7 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import StatusListContainer from '../../containers/status_list_container';
import Column from '../../components/column';
import ColumnSettings from './components/column_settings';
import HomeColumnHeader from '../../components/column_header';
import { HomeColumnHeader } from '../../components/column_header';
import {
expandCommunityTimeline,
expandPublicTimeline,
......
......@@ -17,9 +17,11 @@ export default class CharacterCounter extends PureComponent {
'character-counter--over': (diff < 0),
});
<div className='character-counter__wrapper'>
<span className={classes}>{diff}</span>
</div>
return (
<div className='character-counter__wrapper'>
<span className={classes}>{diff}</span>
</div>
)
}
}
......@@ -50,7 +50,7 @@ class ComposeSearch extends PureComponent {
}
render () {
const { intl, value, onShow, ...rest } = this.props;
const { intl, value, onShow, openInRoute } = this.props;
return (
<Search
......@@ -61,7 +61,7 @@ class ComposeSearch extends PureComponent {
handleClear={this.handleClear}
onShow={onShow}
withOverlay
{...rest}
openInRoute
/>
)
}
......
......@@ -5,7 +5,7 @@ import AccountContainer from '../../../../containers/account_container';
import StatusContainer from '../../../../containers/status_container';
import TrendingItem from '../../../../components/trending_item';
import Icon from '../../../../components/icon';
import WhoToFollowPanel from '../../../../components/panel';
import { WhoToFollowPanel } from '../../../../components/panel';
import './search_results.scss';
......
......@@ -43,7 +43,6 @@ const mapStateToProps = (state, { params: { username } }) => {
export default @connect(mapStateToProps)
@injectIntl
class Following extends ImmutablePureComponent {
static propTypes = {
......
......@@ -101,7 +101,7 @@ class Create extends PureComponent {
disabled={disabled}
onChange={this.handleCoverImageChange}
/>
<button className='standard-small'>{intl.formatMessage(messages.create)}</button>
<button className='button'>{intl.formatMessage(messages.create)}</button>
</div>
</form>
);
......
......@@ -47,7 +47,7 @@ class Groups extends ImmutablePureComponent {
return (
<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="column-header__wrapper">
......
import StatusListContainer from '../../containers/status_list_container';
import Column from '../../components/column';
import ColumnHeader from '../../components/column_header';
import { ColumnHeader } from '../../components/column_header';
import { expandHashtagTimeline, clearTimeline } from '../../actions/timelines';
import { FormattedMessage } from 'react-intl';
import { connectHashtagStream } from '../../actions/streaming';
......
......@@ -48,7 +48,7 @@ class ListEditorSearch extends PureComponent {
}
render () {
const { value, intl, ...rest } = this.props;
const { value, intl } = this.props;
return (
<Search
......@@ -60,7 +60,6 @@ class ListEditorSearch extends PureComponent {
handleSubmit={this.handleSubmit}
handleClear={this.handleClear}
searchTitle={intl.formatMessage(messages.searchTitle)}
{...rest}
/>
)
}
......
......@@ -10,7 +10,7 @@ import { fetchList, deleteList } from '../../actions/lists';
import { openModal } from '../../actions/modal';
import ColumnIndicator from '../../components/column_indicator';
import Icon from '../../components/icon';
import HomeColumnHeader from '../../components/column_header';
import { HomeColumnHeader } from '../../components/column_header';
import Button from '../../components/button';
import ColumnHeaderSettingButton from '../../components/column_header_setting_button';
......
import { defineMessages, injectIntl } from 'react-intl';
import SectionHeadlineBar from '../../../../components/section_headline_bar';
const tooltips = defineMessages({
const messages = defineMessages({
mentions: { id: 'notifications.filter.mentions', defaultMessage: 'Mentions' },
favourites: { id: 'notifications.filter.favourites', defaultMessage: 'Favorites' },
boosts: { id: 'notifications.filter.boosts', defaultMessage: 'Reposts' },
......@@ -58,33 +58,33 @@ class NotificationFilterBar extends PureComponent {
{
className: selectedFilter === 'mention' ? 'active' : '',
onClick: this.onClick('mention'),
title: intl.formatMessage(tooltips.mentions),
title: intl.formatMessage(messages.mentions),
icon: 'at',
},
{
className: selectedFilter === 'favourite' ? 'active' : '',
onClick: this.onClick('favourite'),
title: intl.formatMessage(tooltips.favourites),
title: intl.formatMessage(messages.favourites),
icon: 'star',
},
{
className: selectedFilter === 'reblog' ? 'active' : '',
onClick: this.onClick('reblog'),
title: intl.formatMessage(tooltips.boosts),
title: intl.formatMessage(messages.boosts),
icon: 'retweet',
},
{
className: selectedFilter === 'poll' ? 'active' : '',
onClick: this.onClick('poll'),
title: intl.formatMessage(tooltips.polls),
title: intl.formatMessage(messages.polls),
icon: 'tasks',
},
{
className: selectedFilter === 'follow' ? 'active' : '',
onClick: this.onClick('follow'),
title: intl.formatMessage(tooltips.follows),
title: intl.formatMessage(messages.follows),
icon: 'user-plus',
}
},
]}
/>
)
......
......@@ -5,7 +5,7 @@ import { createSelector } from 'reselect';
import { List as ImmutableList } from 'immutable';
import { debounce } from 'lodash';
import Column from '../../components/column';
import ColumnHeader from '../../components/column_header';
import { ColumnHeader } from '../../components/column_header';
import {
expandNotifications,
scrollTopNotifications,
......
......@@ -32,12 +32,12 @@ import {
import { initMuteModal } from '../../actions/mutes';
import { initReport } from '../../actions/reports';
import { makeGetStatus } from '../../selectors';
import ColumnHeader from '../../components/column_header';
import { ColumnHeader } from '../../components/column_header';
import StatusContainer from '../../containers/status_container';
import { openModal } from '../../actions/modal';
import { boostModal, deleteModal, me } from '../../initial_state';
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 ColumnIndicator from '../../components/column_indicator';
......@@ -420,7 +420,7 @@ class Status extends ImmutablePureComponent {
const { fullscreen } = this.state;
if (status === null) {
return (<ColumnIndicator type='missing' />);
return (<ColumnIndicator type='loading' />);
}
if (ancestorsIds && ancestorsIds.size > 0) {
......
......@@ -18,7 +18,7 @@ import { openModal } from '../../actions/modal';
import WrappedRoute from './util/wrapped_route';
import UploadArea from '../../components/upload_area';
import TabsBar from '../../components/tabs_bar';
import WhoToFollowPanel from '../../components/panel';
import { WhoToFollowPanel } from '../../components/panel';
import LinkFooter from '../../components/link_footer';
import ProfilePage from 'gabsocial/pages/profile_page';
import GroupPage from 'gabsocial/pages/group_page';
......@@ -65,6 +65,7 @@ import '../../components/status';
import { fetchGroups } from '../../actions/groups';
import { Fragment } from 'react';
import '../../../styles/application.scss';
import './ui.scss';
const messages = defineMessages({
......
......@@ -2,9 +2,9 @@ import { Fragment } from 'react';
import { PropTypes } from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import ImmutablePureComponent from 'react-immutable-pure-component';
import WhoToFollowPanel from '../components/panel';
import { WhoToFollowPanel } from '../components/panel';
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 GroupPanel from '../features/groups/timeline/components/panel';
import { fetchGroup } from '../actions/groups';
......
......@@ -2,7 +2,7 @@ import { Fragment } from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes';
import ImmutablePureComponent from 'react-immutable-pure-component';
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 ProfileInfoPanel from '../features/account_timeline/components/profile_info_panel/profile_info_panel';
import ColumnsArea from '../components/columns_area';
......@@ -37,12 +37,15 @@ class ProfilePage extends ImmutablePureComponent {
static propTypes = {
account: ImmutablePropTypes.map,
accountUsername: PropTypes.string.isRequired,
accountId: PropTypes.number.isRequired,
accountId: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number,
]).isRequired,
children: PropTypes.node,
};
render () {
const {accountId, account, accountUsername} = this.props;
render() {
const { accountId, account, accountUsername } = this.props;
return (
<ColumnsArea
......
......@@ -130,11 +130,11 @@
line-height: $lineHeight;
}
@if ($textAlign != '') {
@if ($textAlign !='') {
text-align: $textAlign;
}
@if ($letterSpacing != '') {
@if ($letterSpacing !='') {
letter-spacing: $letterSpacing;
}
}
......@@ -184,11 +184,11 @@
overflow: hidden;
text-overflow: ellipsis;
@if ($whitespace != '') {
@if ($whitespace !='') {
white-space: $whitespace;
}
@if ($wordWrap != '') {
@if ($wordWrap !='') {
word-wrap: $wordWrap;
}
}
......@@ -247,6 +247,7 @@
@include text-sizing(16px, 400, 19px);
@include border-design($gab-placeholder-accent, 1px, 4px);
@include input-placeholder {
color: $gab-placeholder-accent;
}
......@@ -260,4 +261,58 @@
&:active {
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/reset';
@import 'gabsocial/scrollbars';
@import 'gabsocial/basics';
@import 'gabsocial/containers';
@import 'gabsocial/lists';
......@@ -12,13 +11,11 @@
@import 'gabsocial/forms';
@import 'gabsocial/accounts';
@import 'gabsocial/stream_entries';
@import 'gabsocial/boost';
// NOTE - In the process of stripping this giant file into individual components (below)
@import 'gabsocial/components';
// COMPONENTS
@import 'gabsocial/components/buttons';
@import 'gabsocial/components/inputs';
@import 'gabsocial/components/tabs-bar';
@import 'gabsocial/components/dropdown-menu';
......@@ -32,7 +29,6 @@
@import 'gabsocial/components/group-sidebar-panel';
@import 'gabsocial/polls';
@import 'gabsocial/introduction';
@import 'gabsocial/emoji_picker';
@import 'gabsocial/about';
@import 'gabsocial/tables';
......
@import 'contrast/variables';
@import 'application';
@import 'contrast/diff';
......@@ -58,16 +58,6 @@
}
}
.getting-started__footer a {
text-decoration: underline;
&:hover,
&:focus,
&:active {
text-decoration: none;
}
}
.nothing-here {
color: $darker-text-color;
}
......
@import 'gabsocial-light/variables';
@import 'application';
@import 'gabsocial-light/diff';
......@@ -5,7 +5,7 @@
.button {
color: $white;
&.button-alternative-2 {
&.button--alternative-2 {
color: $white;
}
}
......@@ -79,7 +79,7 @@
}
.detailed-status,
.detailed-status__action-bar {
.detailed-status-action-bar {
background: darken($ui-base-color, 6%);
}
......@@ -214,7 +214,6 @@
}
// Change the default color used for the text in an empty column or on the error column
.empty-column-indicator,
.error-column {
color: $primary-text-color;
background: $white;
......@@ -317,16 +316,11 @@
}
}
.account__section-headline a.active::after {
.account-section-headline a.active::after {
border-color: transparent transparent $white;
}
.hero-widget,
.box-widget,
.contact-widget,
.landing-page__information.contact-widget,
.moved-account-widget,
.memoriam-widget,
.activity-stream,
.nothing-here,
.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 {
& > a {
&>a {
display: block;
text-decoration: none;
color: inherit;
......@@ -26,14 +26,14 @@
img {
display: block;
width: 100%;
height: 100%;
margin: 0;
object-fit: cover;
border-radius: 4px 4px 0 0;
@include size(100%);
}
@media screen and (max-width: 600px) {
@include breakpoint(sm) {
height: 200px;
}
......@@ -45,30 +45,29 @@
&__bar {
position: relative;
padding: 15px;
display: flex;
justify-content: flex-start;
align-items: center;
background: lighten($ui-base-color, 4%);
border-radius: 0 0 4px 4px;
@include flex(flex-start, center);
@media screen and (max-width: $no-gap-breakpoint) {
border-radius: 0;
}
.avatar {
flex: 0 0 auto;
width: 48px;
height: 48px;
padding-top: 2px;
@include size(48px);
img {
width: 100%;
height: 100%;
display: block;
margin: 0;
border-radius: 4px;
background: darken($ui-base-color, 8%);
object-fit: cover;
@include size(100%);
}
}
......@@ -77,20 +76,18 @@
text-align: left;
strong {
font-size: 15px;
color: $primary-text-color;
font-weight: 500;
overflow: hidden;
text-overflow: ellipsis;
@include text-overflow;
@include text-sizing(15px, 500);
}
span {
display: block;
font-size: 14px;
color: $gab-secondary-text;
font-weight: 400;
overflow: hidden;
text-overflow: ellipsis;
@include text-overflow;
@include text-sizing(14px, 400);
}
}
}
......@@ -107,12 +104,12 @@
.older,
.page,
.gap {
font-size: 14px;
color: $primary-text-color;
font-weight: 500;
display: inline-block;
padding: 6px 10px;
text-decoration: none;
@include text-sizing(14px, 500);
}
.current {
......@@ -176,17 +173,14 @@
background: $ui-base-color;
box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
color: $gab-secondary-text;
font-size: 14px;
font-weight: 500;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
cursor: default;
border-radius: 4px;
padding: 20px;
min-height: 30vh;
@include flex(center, center);
@include text-sizing(14px, 500, 1, center);
&--under-tabs {
border-radius: 0 0 4px 4px;
}
......@@ -201,13 +195,11 @@
display: inline-block;
padding: 4px 6px;
cursor: default;
border-radius: 3px;
font-size: 12px;
line-height: 12px;
font-weight: 500;
color: $ui-secondary-color;
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 {
color: $success-green;
......@@ -228,8 +220,8 @@
border: 0 none;
border-top: 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 {
display: flex;
......@@ -239,12 +231,10 @@
dt,
dd {
box-sizing: border-box;
padding: 14px;
text-align: center;
max-height: 48px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
@include text-overflow(nowrap);
@include text-sizing(14px, 400, 1, center);
}
dt {
......@@ -290,7 +280,7 @@
}
}
.directory__tag .trends__item__current {
.directory__tag .trending-item__uses {
width: auto;
}
......@@ -318,4 +308,4 @@
&__body {
margin-top: 10px;
}
}
}
\ No newline at end of file
......@@ -3,16 +3,16 @@ $sidebar-width: 240px;
$content-width: 840px;
.admin-wrapper {
display: flex;
justify-content: center;
height: 100%;
@include flex(center);
.sidebar-wrapper {
flex: 1 1 $sidebar-width;
height: 100%;
background: $ui-base-color;
display: flex;
justify-content: flex-end;
@include flex(flex-end);
}
.sidebar {
......@@ -24,12 +24,12 @@ $content-width: 840px;
.logo {
display: block;
margin: 40px auto;
width: 100px;
height: 100px;
@include size(100px);
}
@media screen and (max-width: $no-columns-breakpoint) {
& > a:first-child {
&>a:first-child {
display: none;
}
}
......@@ -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;
}
}
......@@ -105,49 +105,41 @@ $content-width: 840px;
.content {
max-width: $content-width;
padding: 20px 15px;
padding-top: 60px;
padding-left: 25px;
padding: 60px 15px 20px 25px;
@media screen and (max-width: $no-columns-breakpoint) {
max-width: none;
padding: 15px;
padding-top: 30px;
padding: 30px 15px 15px 15px;
}
h2 {
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%);
margin-bottom: 40px;
@include text-sizing(24px, 400, 28px);
@include bottom-spacing(40px);
}
h3 {
color: $secondary-text-color;
font-size: 20px;
line-height: 28px;
font-weight: 400;
margin-bottom: 30px;
@include text-sizing(20px, 400, 28px);
}
h4 {
text-transform: uppercase;
font-size: 13px;
font-weight: 700;
color: $gab-secondary-text;
padding-bottom: 8px;
margin-bottom: 8px;
border-bottom: 1px solid lighten($ui-base-color, 8%);
@include text-sizing(13px, 700);
@include bottom-spacing(8px);
}
h6 {
font-size: 16px;
color: $secondary-text-color;
line-height: 28px;
font-weight: 400;
@include text-sizing(16px, 400, 28px);
}
.fields-group h6 {
......@@ -155,8 +147,8 @@ $content-width: 840px;
font-weight: 500;
}
.directory__tag > a,
.directory__tag > div {
.directory__tag>a,
.directory__tag>div {
box-shadow: none;
}
......@@ -165,21 +157,20 @@ $content-width: 840px;
}
.directory__tag h4 {
font-size: 18px;
font-weight: 700;
color: $gab-secondary-text;
text-transform: none;
padding-bottom: 0;
margin-bottom: 0;
border-bottom: none;
@include text-sizing(18px, 700);
@include bottom-spacing(0);
}
& > p {
font-size: 14px;
line-height: 18px;
&>p {
color: $gab-secondary-text;
margin-bottom: 20px;
@include text-sizing(14px, 400, 18px);
strong {
color: $gab-secondary-text;
font-weight: 500;
......@@ -193,12 +184,12 @@ $content-width: 840px;
}
hr {
width: 100%;
height: 0;
border: 0;
border-bottom: 1px solid rgba($ui-base-lighter-color, .6);
margin: 20px 0;
@include size(100%, 0);
&.spacer {
height: 1px;
border: 0;
......@@ -272,9 +263,9 @@ $content-width: 840px;
}
strong {
font-weight: 500;
text-transform: uppercase;
font-size: 12px;
@include text-sizing(12px, 500);
@each $lang in $cjk-langs {
&:lang(#{$lang}) {
......@@ -288,10 +279,10 @@ $content-width: 840px;
color: $gab-secondary-text;
text-decoration: none;
text-transform: uppercase;
font-size: 12px;
font-weight: 500;
border-bottom: 2px solid $gab-secondary-text;
@include text-sizing(12px, 500);
&:hover {
color: $primary-text-color;
border-bottom: 2px solid lighten($gab-secondary-text, 5%);
......@@ -317,14 +308,13 @@ $content-width: 840px;
flex-direction: column;
margin: 0 5px;
& > strong {
&>strong {
display: block;
margin: 0 0 10px -5px;
font-weight: 500;
font-size: 14px;
line-height: 18px;
color: $secondary-text-color;
@include text-sizing(14px, 500, 18px);
@each $lang in $cjk-langs {
&:lang(#{$lang}) {
font-weight: 700;
......@@ -420,15 +410,14 @@ $content-width: 840px;
line-height: 20px;
&__header {
display: flex;
justify-content: flex-start;
align-items: center;
padding: 10px;
background: $ui-base-color;
color: $darker-text-color;
border-radius: 4px 4px 0 0;
font-size: 14px;
position: relative;
@include flex(flex-start, center);
}
&__avatar {
......@@ -437,9 +426,8 @@ $content-width: 840px;
.avatar {
display: block;
margin: 0;
border-radius: 50%;
width: 40px;
height: 40px;
@include circle(40px);
}
}
......@@ -473,12 +461,8 @@ $content-width: 840px;
}
&__icon__overlay {
position: absolute;
top: 10px;
right: 10px;
width: 10px;
height: 10px;
border-radius: 50%;
@include circle(10px);
@include abs-position(10px, 10px);
&.positive {
background: $success-green;
......@@ -575,13 +559,11 @@ a.name-tag,
}
&__bubble {
padding: 16px;
padding-left: 14px;
font-size: 15px;
line-height: 20px;
padding: 16px 16px 16px 14px;
border-radius: 4px 4px 4px 0;
position: relative;
font-weight: 500;
@include text-sizing(15px, 500, 20px);
a {
color: $darker-text-color;
......@@ -589,8 +571,7 @@ a.name-tag,
}
&__owner {
padding: 8px;
padding-left: 12px;
padding: 8px 8px 8px 12px;
}
time {
......@@ -604,11 +585,10 @@ a.name-tag,
margin-bottom: 20px;
&__profile {
display: flex;
justify-content: space-between;
align-items: center;
padding: 15px;
@include flex(space-between, center);
.account {
padding: 0;
border: 0;
......@@ -644,10 +624,10 @@ a.name-tag,
&__summary {
&__item {
display: flex;
justify-content: flex-start;
border-top: 1px solid darken($ui-base-color, 4%);
@include flex(flex-start);
&:hover {
background: lighten($ui-base-color, 2%);
}
......@@ -662,9 +642,7 @@ a.name-tag,
&,
.username {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
@include text-overflow(nowrap);
}
}
......@@ -692,15 +670,13 @@ a.name-tag,
}
.one-line {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
@include text-overflow(nowrap);
}
.ellipsized-ip {
display: inline-block;
max-width: 120px;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: middle;
}
@include text-overflow;
}
\ No newline at end of file
@function hex-color($color) {
@if type-of($color) == 'color' {
@if type-of($color)=='color' {
$color: str-slice(ie-hex-str($color), 4);
}
@return '%23' + unquote($color)
@return '%23'+unquote($color)
}
html {
......@@ -15,16 +16,17 @@ html {
}
body {
@include font-size(16);
@include line-height(19);
font-size: 16px;
line-height: 19px;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizelegibility;
font-feature-settings: "kern";
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-webkit-tap-highlight-color: transparent;
color: white;
background: $gab-background-base;
&.theme-gabsocial-light {
color: $gab-default-text-light;
background: $gab-background-base-light;
......@@ -82,18 +84,18 @@ body {
.container {
position: absolute;
width: 100%;
height: 100%;
overflow: hidden;
@include size(100%);
}
}
&.admin {
background: darken($ui-base-color, 4%);
position: fixed;
width: 100%;
height: 100%;
padding: 0;
@include size(100%);
}
&.error {
......@@ -101,12 +103,10 @@ body {
text-align: center;
color: $darker-text-color;
background: $ui-base-color;
width: 100%;
height: 100%;
padding: 0;
display: flex;
justify-content: center;
align-items: center;
@include flex(center, center);
@include size(100%);
.dialog {
vertical-align: middle;
......@@ -116,16 +116,14 @@ body {
img {
display: block;
max-width: 470px;
width: 100%;
height: auto;
margin-top: -120px;
@include size(100%, auto);
}
}
h1 {
font-size: 20px;
line-height: 28px;
font-weight: 400;
@include text-sizing(20px, 400, 28px);
}
}
}
......@@ -142,23 +140,10 @@ button {
.app-holder {
&,
& > div {
display: flex;
width: 100%;
height: 100%;
align-items: start;
justify-content: center;
&>div {
outline: 0 !important;
}
}
.visuallyhidden {
border: 0 !important;
clip: rect(1px,1px,1px,1px) !important;
font-size: 1px !important;
height: 1px !important;
overflow: hidden !important;
padding: 0 !important;
position: absolute !important;
width: 1px !important;
}
@include flex(center, start);
@include size(100%);
}
}
\ No newline at end of file
This diff is collapsed.
.compact-header {
h1 {
font-size: 24px;
line-height: 28px;
color: $darker-text-color;
font-weight: 500;
margin-bottom: 20px;
padding: 0 10px;
word-wrap: break-word;
@media screen and (max-width: 740px) {
text-align: center;
padding: 20px 10px 0;
}
a {
color: inherit;
text-decoration: none;
}
small {
font-weight: 400;
color: $secondary-text-color;
}
img {
display: inline-block;
margin-bottom: -5px;
margin-right: 15px;
width: 36px;
height: 36px;
}
}
}
.account__header {
&.inactive {
opacity: 0.5;
.account__header__image,
.account__avatar {filter: grayscale(100%);}
}
&__info {
position: absolute;
top: 10px;
left: 10px;
}
&__image {
overflow: hidden;
height: 350px;
position: relative;
background: darken($ui-base-color, 4%);
@media screen and (max-width:895px) {height: 225px;}
&--none {height: 125px;}
img {
object-fit: cover;
display: block;
width: 100%;
height: 100%;
margin: 0;
}
}
&__bar {