-
-
+
+
{
@@ -83,10 +98,10 @@ class SchedulePostDropdown extends PureComponent {
minDate={new Date()}
selected={date}
onChange={date => this.handleSetDate(date)}
- timeFormat="p"
+ timeFormat='p'
timeIntervals={15}
- timeCaption="Time"
- dateFormat="MMM d, yyyy h:mm aa"
+ timeCaption='Time'
+ dateFormat='MMM d, yyyy h:mm aa'
disabled={datePickerDisabled}
showTimeSelect
customInput={}
@@ -95,18 +110,18 @@ class SchedulePostDropdown extends PureComponent {
popperModifiers={{
offset: {
enabled: true,
- offset: "0px, 5px"
+ offset: '0px, 5px'
},
preventOverflow: {
enabled: true,
escapeWithReference: false,
- boundariesElement: "viewport"
+ boundariesElement: 'viewport'
}
}}
/>
}
- );
+ )
}
}
diff --git a/app/javascript/gabsocial/features/compose/components/spoiler_button.js b/app/javascript/gabsocial/features/compose/components/spoiler_button.js
new file mode 100644
index 00000000..dce933dc
--- /dev/null
+++ b/app/javascript/gabsocial/features/compose/components/spoiler_button.js
@@ -0,0 +1,50 @@
+import { injectIntl, defineMessages } from 'react-intl'
+import { changeComposeSpoilerness } from '../../../actions/compose'
+import ComposeExtraButton from './compose_extra_button'
+
+const messages = defineMessages({
+ marked: { id: 'compose_form.spoiler.marked', defaultMessage: 'Text is hidden behind warning' },
+ unmarked: { id: 'compose_form.spoiler.unmarked', defaultMessage: 'Text is not hidden' },
+ title: { id: 'compose_form.spoiler.title', defaultMessage: 'Warning' },
+})
+
+const mapStateToProps = (state) => ({
+ active: state.getIn(['compose', 'spoiler']),
+})
+
+const mapDispatchToProps = dispatch => ({
+
+ onClick () {
+ dispatch(changeComposeSpoilerness())
+ },
+
+})
+
+export default
+@injectIntl
+@connect(mapStateToProps, mapDispatchToProps)
+class SpoilerButton extends PureComponent {
+
+ static propTypes = {
+ active: PropTypes.bool,
+ intl: PropTypes.map,
+ }
+
+ handleClick = (e) => {
+ e.preventDefault()
+ this.props.onClick()
+ }
+
+ render () {
+ const { active, intl } = this.props
+
+ return (
+
+ )
+ }
+
+}
diff --git a/app/javascript/gabsocial/features/compose/components/text_icon_button/index.js b/app/javascript/gabsocial/features/compose/components/text_icon_button/index.js
deleted file mode 100644
index 356546a4..00000000
--- a/app/javascript/gabsocial/features/compose/components/text_icon_button/index.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './text_icon_button';
\ No newline at end of file
diff --git a/app/javascript/gabsocial/features/compose/components/text_icon_button/text_icon_button.js b/app/javascript/gabsocial/features/compose/components/text_icon_button/text_icon_button.js
deleted file mode 100644
index 7a3683ab..00000000
--- a/app/javascript/gabsocial/features/compose/components/text_icon_button/text_icon_button.js
+++ /dev/null
@@ -1,33 +0,0 @@
-export default class TextIconButton extends PureComponent {
-
- static propTypes = {
- label: PropTypes.string.isRequired,
- title: PropTypes.string,
- active: PropTypes.bool,
- onClick: PropTypes.func.isRequired,
- ariaControls: PropTypes.string,
- };
-
- handleClick = (e) => {
- e.preventDefault();
- this.props.onClick();
- }
-
- render () {
- const { label, title, active, ariaControls } = this.props;
-
- return (
-
- );
- }
-
-}
diff --git a/app/javascript/gabsocial/features/compose/components/text_icon_button/text_icon_button.scss b/app/javascript/gabsocial/features/compose/components/text_icon_button/text_icon_button.scss
deleted file mode 100644
index 5e19683e..00000000
--- a/app/javascript/gabsocial/features/compose/components/text_icon_button/text_icon_button.scss
+++ /dev/null
@@ -1,32 +0,0 @@
-.text-icon-button {
- color: $gab-secondary-text;
- border: none;
- background: transparent;
- cursor: pointer;
- padding: 0 3px;
- outline: 0;
- transition: color 100ms ease-in;
-
- @include text-sizing(11px, 600, 27px);
-
- &:hover,
- &:active,
- &:focus {
- color: darken($lighter-text-color, 7%);
- transition: color 200ms ease-out;
- }
-
- &--active {
- color: $highlight-text-color;
- }
-
- &::-moz-focus-inner {
- border: 0;
- }
-
- &::-moz-focus-inner,
- &:focus,
- &:active {
- outline: 0 !important;
- }
-}
\ No newline at end of file
diff --git a/app/javascript/gabsocial/features/compose/components/upload/upload.js b/app/javascript/gabsocial/features/compose/components/upload/upload.js
index 904667cd..be19075d 100644
--- a/app/javascript/gabsocial/features/compose/components/upload/upload.js
+++ b/app/javascript/gabsocial/features/compose/components/upload/upload.js
@@ -6,8 +6,6 @@ import spring from 'react-motion/lib/spring';
import Motion from '../../../ui/util/optional_motion';
import IconButton from '../../../../components/icon_button';
-import './upload.scss';
-
const messages = defineMessages({
description: { id: 'upload_form.description', defaultMessage: 'Describe for the visually impaired' },
delete: { id: 'upload_form.undo', defaultMessage: 'Delete' },
diff --git a/app/javascript/gabsocial/features/compose/components/upload_button.js b/app/javascript/gabsocial/features/compose/components/upload_button.js
new file mode 100644
index 00000000..b95cec33
--- /dev/null
+++ b/app/javascript/gabsocial/features/compose/components/upload_button.js
@@ -0,0 +1,87 @@
+import ImmutablePureComponent from 'react-immutable-pure-component'
+import ImmutablePropTypes from 'react-immutable-proptypes'
+import { defineMessages, injectIntl } from 'react-intl'
+import { uploadCompose } from '../../../actions/compose'
+import ComposeExtraButton from './compose_extra_button'
+
+const messages = defineMessages({
+ upload: { id: 'upload_button.label', defaultMessage: 'Add media (JPEG, PNG, GIF, WebM, MP4, MOV)' },
+ title: { id: 'upload_button.title', defaultMessage: 'Photo/Video' },
+})
+
+const makeMapStateToProps = () => {
+ const mapStateToProps = state => ({
+ acceptContentTypes: state.getIn(['media_attachments', 'accept_content_types']),
+ disabled: state.getIn(['compose', 'is_uploading']) || (state.getIn(['compose', 'media_attachments']).size > 3 || state.getIn(['compose', 'media_attachments']).some(m => m.get('type') === 'video')),
+ unavailable: state.getIn(['compose', 'poll']) !== null,
+ resetFileKey: state.getIn(['compose', 'resetFileKey']),
+ })
+
+ return mapStateToProps
+}
+
+const mapDispatchToProps = dispatch => ({
+ onSelectFile(files) {
+ dispatch(uploadCompose(files))
+ },
+})
+
+export default
+@connect(makeMapStateToProps, mapDispatchToProps)
+@injectIntl
+class UploadButton extends ImmutablePureComponent {
+
+ static propTypes = {
+ disabled: PropTypes.bool,
+ unavailable: PropTypes.bool,
+ onSelectFile: PropTypes.func.isRequired,
+ style: PropTypes.object,
+ resetFileKey: PropTypes.number,
+ acceptContentTypes: ImmutablePropTypes.listOf(PropTypes.string).isRequired,
+ intl: PropTypes.object.isRequired,
+ }
+
+ handleChange = (e) => {
+ if (e.target.files.length > 0) {
+ this.props.onSelectFile(e.target.files)
+ }
+ }
+
+ handleClick = () => {
+ this.fileElement.click()
+ }
+
+ setRef = (c) => {
+ this.fileElement = c
+ }
+
+ render() {
+ const { intl, resetFileKey, unavailable, disabled, acceptContentTypes } = this.props
+
+ if (unavailable) return null
+
+ return (
+
+
+
+ )
+ }
+
+}
diff --git a/app/javascript/gabsocial/features/compose/components/upload_button/index.js b/app/javascript/gabsocial/features/compose/components/upload_button/index.js
deleted file mode 100644
index 67cdb712..00000000
--- a/app/javascript/gabsocial/features/compose/components/upload_button/index.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './upload_button';
\ No newline at end of file
diff --git a/app/javascript/gabsocial/features/compose/components/upload_button/upload_button.js b/app/javascript/gabsocial/features/compose/components/upload_button/upload_button.js
deleted file mode 100644
index 959a7fee..00000000
--- a/app/javascript/gabsocial/features/compose/components/upload_button/upload_button.js
+++ /dev/null
@@ -1,89 +0,0 @@
-import ImmutablePureComponent from 'react-immutable-pure-component';
-import ImmutablePropTypes from 'react-immutable-proptypes';
-import { defineMessages, injectIntl } from 'react-intl';
-import IconButton from '../../../../components/icon_button';
-
-import './upload_button.scss';
-
-const messages = defineMessages({
- upload: { id: 'upload_button.label', defaultMessage: 'Add media (JPEG, PNG, GIF, WebM, MP4, MOV)' },
-});
-
-const makeMapStateToProps = () => {
- const mapStateToProps = state => ({
- acceptContentTypes: state.getIn(['media_attachments', 'accept_content_types']),
- });
-
- return mapStateToProps;
-};
-
-const iconStyle = {
- height: null,
- lineHeight: '27px',
-};
-
-export default @connect(makeMapStateToProps)
-@injectIntl
-class UploadButton extends ImmutablePureComponent {
-
- static propTypes = {
- disabled: PropTypes.bool,
- unavailable: PropTypes.bool,
- onSelectFile: PropTypes.func.isRequired,
- style: PropTypes.object,
- resetFileKey: PropTypes.number,
- acceptContentTypes: ImmutablePropTypes.listOf(PropTypes.string).isRequired,
- intl: PropTypes.object.isRequired,
- };
-
- handleChange = (e) => {
- if (e.target.files.length > 0) {
- this.props.onSelectFile(e.target.files);
- }
- }
-
- handleClick = () => {
- this.fileElement.click();
- }
-
- setRef = (c) => {
- this.fileElement = c;
- }
-
- render () {
- const { intl, resetFileKey, unavailable, disabled, acceptContentTypes } = this.props;
-
- if (unavailable) {
- return null;
- }
-
- return (
-
-
-
-
- );
- }
-
-}
diff --git a/app/javascript/gabsocial/features/compose/components/upload_button/upload_button.scss b/app/javascript/gabsocial/features/compose/components/upload_button/upload_button.scss
deleted file mode 100644
index 2cd05f67..00000000
--- a/app/javascript/gabsocial/features/compose/components/upload_button/upload_button.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-.compose-form-upload-button {
- &__icon {
- line-height: 27px;
- }
-}
\ No newline at end of file
diff --git a/app/javascript/gabsocial/features/compose/components/upload_form/upload_form.js b/app/javascript/gabsocial/features/compose/components/upload_form/upload_form.js
index d6d24dd3..b146ca92 100644
--- a/app/javascript/gabsocial/features/compose/components/upload_form/upload_form.js
+++ b/app/javascript/gabsocial/features/compose/components/upload_form/upload_form.js
@@ -4,8 +4,6 @@ import UploadProgress from '../upload_progress';
import UploadContainer from '../../containers/upload_container';
import SensitiveButtonContainer from '../../containers/sensitive_button_container';
-import './upload_form.scss';
-
const mapStateToProps = state => ({
mediaIds: state.getIn(['compose', 'media_attachments']).map(item => item.get('id')),
});
diff --git a/app/javascript/gabsocial/features/compose/components/upload_progress/upload_progress.js b/app/javascript/gabsocial/features/compose/components/upload_progress/upload_progress.js
index f02d3115..fbe7c9cd 100644
--- a/app/javascript/gabsocial/features/compose/components/upload_progress/upload_progress.js
+++ b/app/javascript/gabsocial/features/compose/components/upload_progress/upload_progress.js
@@ -3,8 +3,6 @@ import spring from 'react-motion/lib/spring';
import Motion from '../../../ui/util/optional_motion';
import Icon from '../../../../components/icon';
-import './upload_progress.scss'
-
const mapStateToProps = state => ({
active: state.getIn(['compose', 'is_uploading']),
progress: state.getIn(['compose', 'progress']),
diff --git a/app/javascript/gabsocial/features/compose/components/warning/warning.js b/app/javascript/gabsocial/features/compose/components/warning/warning.js
index d76b42d1..0f4760f4 100644
--- a/app/javascript/gabsocial/features/compose/components/warning/warning.js
+++ b/app/javascript/gabsocial/features/compose/components/warning/warning.js
@@ -1,8 +1,6 @@
import Motion from '../../../ui/util/optional_motion';
import spring from 'react-motion/lib/spring';
-import './warning.scss';
-
export default class Warning extends PureComponent {
static propTypes = {
diff --git a/app/javascript/gabsocial/features/compose/compose.js b/app/javascript/gabsocial/features/compose/compose.js
index 28076570..0d100431 100644
--- a/app/javascript/gabsocial/features/compose/compose.js
+++ b/app/javascript/gabsocial/features/compose/compose.js
@@ -15,8 +15,6 @@ import SearchResultsContainer from './containers/search_results_container';
import NavigationBar from './components/navigation_bar';
import elephantUIPlane from '../../../images/logo_ui_column_footer.png';
-import './compose.scss';
-
const messages = defineMessages({
start: { id: 'getting_started.heading', defaultMessage: 'Getting started' },
home_timeline: { id: 'tabs_bar.home', defaultMessage: 'Home' },
diff --git a/app/javascript/gabsocial/features/compose/containers/poll_button_container.js b/app/javascript/gabsocial/features/compose/containers/poll_button_container.js
deleted file mode 100644
index 6fda3485..00000000
--- a/app/javascript/gabsocial/features/compose/containers/poll_button_container.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import PollButton from '../components/poll_button';
-import { addPoll, removePoll } from '../../../actions/compose';
-
-const mapStateToProps = state => ({
- unavailable: state.getIn(['compose', 'is_uploading']) || (state.getIn(['compose', 'media_attachments']).size > 0),
- active: state.getIn(['compose', 'poll']) !== null,
-});
-
-const mapDispatchToProps = dispatch => ({
-
- onClick () {
- dispatch((_, getState) => {
- if (getState().getIn(['compose', 'poll'])) {
- dispatch(removePoll());
- } else {
- dispatch(addPoll());
- }
- });
- },
-
-});
-
-export default connect(mapStateToProps, mapDispatchToProps)(PollButton);
diff --git a/app/javascript/gabsocial/features/compose/containers/privacy_dropdown_container.js b/app/javascript/gabsocial/features/compose/containers/privacy_dropdown_container.js
deleted file mode 100644
index de4a2fc5..00000000
--- a/app/javascript/gabsocial/features/compose/containers/privacy_dropdown_container.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import PrivacyDropdown from '../components/privacy_dropdown';
-import { changeComposeVisibility } from '../../../actions/compose';
-import { openModal, closeModal } from '../../../actions/modal';
-import { isUserTouching } from '../../../utils/is_mobile';
-
-const mapStateToProps = state => ({
- isModalOpen: state.get('modal').modalType === 'ACTIONS',
- value: state.getIn(['compose', 'privacy']),
-});
-
-const mapDispatchToProps = dispatch => ({
-
- onChange (value) {
- dispatch(changeComposeVisibility(value));
- },
-
- isUserTouching,
- onModalOpen: props => dispatch(openModal('ACTIONS', props)),
- onModalClose: () => dispatch(closeModal()),
-
-});
-
-export default connect(mapStateToProps, mapDispatchToProps)(PrivacyDropdown);
diff --git a/app/javascript/gabsocial/features/compose/containers/schedule_post_dropdown_container.js b/app/javascript/gabsocial/features/compose/containers/schedule_post_dropdown_container.js
deleted file mode 100644
index a046e704..00000000
--- a/app/javascript/gabsocial/features/compose/containers/schedule_post_dropdown_container.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import SchedulePostDropdown from '../components/schedule_post_dropdown';
-import { changeScheduledAt } from '../../../actions/compose';
-import { openModal } from '../../../actions/modal';
-import { me } from '../../../initial_state';
-
-const mapStateToProps = state => ({
- date: state.getIn(['compose', 'scheduled_at']),
- isPro: state.getIn(['accounts', me, 'is_pro']),
-});
-
-const mapDispatchToProps = dispatch => ({
- setScheduledAt (date) {
- dispatch(changeScheduledAt(date));
- },
-
- onOpenProUpgradeModal() {
- dispatch(openModal('PRO_UPGRADE'));
- },
-});
-
-export default connect(mapStateToProps, mapDispatchToProps)(SchedulePostDropdown);
diff --git a/app/javascript/gabsocial/features/compose/containers/spoiler_button_container.js b/app/javascript/gabsocial/features/compose/containers/spoiler_button_container.js
deleted file mode 100644
index b7aca741..00000000
--- a/app/javascript/gabsocial/features/compose/containers/spoiler_button_container.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import TextIconButton from '../components/text_icon_button';
-import { changeComposeSpoilerness } from '../../../actions/compose';
-import { injectIntl, defineMessages } from 'react-intl';
-
-const messages = defineMessages({
- marked: { id: 'compose_form.spoiler.marked', defaultMessage: 'Text is hidden behind warning' },
- unmarked: { id: 'compose_form.spoiler.unmarked', defaultMessage: 'Text is not hidden' },
-});
-
-const mapStateToProps = (state, { intl }) => ({
- label: 'CW',
- title: intl.formatMessage(state.getIn(['compose', 'spoiler']) ? messages.marked : messages.unmarked),
- active: state.getIn(['compose', 'spoiler']),
- ariaControls: 'cw-spoiler-input',
-});
-
-const mapDispatchToProps = dispatch => ({
-
- onClick () {
- dispatch(changeComposeSpoilerness());
- },
-
-});
-
-export default injectIntl(connect(mapStateToProps, mapDispatchToProps)(TextIconButton));
diff --git a/app/javascript/gabsocial/features/compose/containers/upload_button_container.js b/app/javascript/gabsocial/features/compose/containers/upload_button_container.js
deleted file mode 100644
index 03b0c552..00000000
--- a/app/javascript/gabsocial/features/compose/containers/upload_button_container.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import UploadButton from '../components/upload_button';
-import { uploadCompose } from '../../../actions/compose';
-
-const mapStateToProps = state => ({
- disabled: state.getIn(['compose', 'is_uploading']) || (state.getIn(['compose', 'media_attachments']).size > 3 || state.getIn(['compose', 'media_attachments']).some(m => m.get('type') === 'video')),
- unavailable: state.getIn(['compose', 'poll']) !== null,
- resetFileKey: state.getIn(['compose', 'resetFileKey']),
-});
-
-const mapDispatchToProps = dispatch => ({
-
- onSelectFile (files) {
- dispatch(uploadCompose(files));
- },
-
-});
-
-export default connect(mapStateToProps, mapDispatchToProps)(UploadButton);
diff --git a/app/javascript/gabsocial/features/follow_requests/components/account_authorize/account_authorize.js b/app/javascript/gabsocial/features/follow_requests/components/account_authorize/account_authorize.js
index 0834ff61..53b220cb 100644
--- a/app/javascript/gabsocial/features/follow_requests/components/account_authorize/account_authorize.js
+++ b/app/javascript/gabsocial/features/follow_requests/components/account_authorize/account_authorize.js
@@ -8,8 +8,6 @@ import Avatar from '../../../../components/avatar';
import DisplayName from '../../../../components/display_name';
import IconButton from '../../../../components/icon_button';
-import './account_authorize.scss';
-
const messages = defineMessages({
authorize: { id: 'follow_request.authorize', defaultMessage: 'Authorize' },
reject: { id: 'follow_request.reject', defaultMessage: 'Reject' },
diff --git a/app/javascript/gabsocial/features/groups/sidebar_panel/index.js b/app/javascript/gabsocial/features/groups/sidebar_panel/index.js
deleted file mode 100644
index d31dcb0e..00000000
--- a/app/javascript/gabsocial/features/groups/sidebar_panel/index.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import ImmutablePropTypes from 'react-immutable-proptypes';
-import ImmutablePureComponent from 'react-immutable-pure-component';
-import { defineMessages, injectIntl } from 'react-intl';
-import { Link } from 'react-router-dom';
-import Item from './item';
-import Icon from '../../../components/icon';
-
-const messages = defineMessages({
- title: { id: 'groups.sidebar-panel.title', defaultMessage: 'Groups You\'re In' },
- show_all: { id: 'groups.sidebar-panel.show_all', defaultMessage: 'Show all' },
-});
-
-const mapStateToProps = (state, { id }) => ({
- groupIds: state.getIn(['group_lists', 'member']),
-});
-
-export default @connect(mapStateToProps)
-@injectIntl
-class GroupSidebarPanel extends ImmutablePureComponent {
- static propTypes = {
- groupIds: ImmutablePropTypes.list,
- }
-
- render() {
- const { intl, groupIds } = this.props;
- const count = groupIds.count();
-
- // Only when there are groups to show
- if (count === 0) return null;
-
- return (
-
-
-
- {intl.formatMessage(messages.title)}
-
-
-
-
- {groupIds.slice(0, 10).map(groupId => )}
- {count > 10 && {intl.formatMessage(messages.show_all)}}
-
-
-
- );
- }
-}
diff --git a/app/javascript/gabsocial/features/groups/sidebar_panel/item.js b/app/javascript/gabsocial/features/groups/sidebar_panel/item.js
deleted file mode 100644
index 9ee283f4..00000000
--- a/app/javascript/gabsocial/features/groups/sidebar_panel/item.js
+++ /dev/null
@@ -1,43 +0,0 @@
-import ImmutablePropTypes from 'react-immutable-proptypes';
-import ImmutablePureComponent from 'react-immutable-pure-component';
-import { defineMessages, injectIntl } from 'react-intl';
-import { Link } from 'react-router-dom';
-import { shortNumberFormat } from '../../../utils/numbers';
-
-const messages = defineMessages({
- new_statuses: { id: 'groups.sidebar-panel.item.view', defaultMessage: 'new gabs' },
- no_recent_activity: { id: 'groups.sidebar-panel.item.no_recent_activity', defaultMessage: 'No recent activity' },
-});
-
-const mapStateToProps = (state, { id }) => ({
- group: state.getIn(['groups', id]),
- relationships: state.getIn(['group_relationships', id]),
-});
-
-export default @connect(mapStateToProps)
-@injectIntl
-class Item extends ImmutablePureComponent {
- static propTypes = {
- group: ImmutablePropTypes.map,
- relationships: ImmutablePropTypes.map,
- }
-
- render() {
- const { intl, group, relationships } = this.props;
-
- // Wait for relationships
- if (!relationships) return null;
-
- const unreadCount = relationships.get('unread_count');
-
- return (
-
-
{group.get('title')}
-
- {unreadCount > 0 && {shortNumberFormat(unreadCount)} {intl.formatMessage(messages.new_statuses)}}
- {unreadCount === 0 && {intl.formatMessage(messages.no_recent_activity)}}
-
-
- );
- }
-}
\ No newline at end of file
diff --git a/app/javascript/gabsocial/features/home_timeline/index.js b/app/javascript/gabsocial/features/home_timeline/index.js
index 5b58b7a5..6d9344b0 100644
--- a/app/javascript/gabsocial/features/home_timeline/index.js
+++ b/app/javascript/gabsocial/features/home_timeline/index.js
@@ -67,9 +67,6 @@ class HomeTimeline extends PureComponent {
return (
-
-
-
state.get('lists')], lists => {
if (!lists) {
return lists;
diff --git a/app/javascript/gabsocial/features/list_editor/list_editor.js b/app/javascript/gabsocial/features/list_editor/list_editor.js
index f19d3e83..e28229b2 100644
--- a/app/javascript/gabsocial/features/list_editor/list_editor.js
+++ b/app/javascript/gabsocial/features/list_editor/list_editor.js
@@ -8,8 +8,6 @@ import EditListForm from './components/edit_list_form/edit_list_form';
import ColumnSubheading from '../../components/column_subheading';
import IconButton from '../../components/icon_button';
-import './list_editor.scss';
-
const mapStateToProps = state => ({
accountIds: state.getIn(['listEditor', 'accounts', 'items']),
searchAccountIds: state.getIn(['listEditor', 'suggestions', 'items']),
diff --git a/app/javascript/gabsocial/features/notifications/components/notification/notification.js b/app/javascript/gabsocial/features/notifications/components/notification/notification.js
index 1121ee45..587cdd20 100644
--- a/app/javascript/gabsocial/features/notifications/components/notification/notification.js
+++ b/app/javascript/gabsocial/features/notifications/components/notification/notification.js
@@ -7,8 +7,6 @@ import AccountContainer from '../../../../containers/account_container';
import Permalink from '../../../../components/permalink';
import Icon from '../../../../components/icon';
-import './notification.scss';
-
const notificationForScreenReader = (intl, message, timestamp) => {
const output = [message];
diff --git a/app/javascript/gabsocial/features/status/components/card/card.js b/app/javascript/gabsocial/features/status/components/card/card.js
index fdf4e91a..7e6fb593 100644
--- a/app/javascript/gabsocial/features/status/components/card/card.js
+++ b/app/javascript/gabsocial/features/status/components/card/card.js
@@ -5,8 +5,6 @@ import punycode from 'punycode';
import classnames from 'classnames';
import Icon from '../../../../components/icon';
-import './card.scss';
-
const IDNA_PREFIX = 'xn--';
const decodeIDNA = domain => {
diff --git a/app/javascript/gabsocial/features/status/components/detailed_status/detailed_status.js b/app/javascript/gabsocial/features/status/components/detailed_status/detailed_status.js
index dfd0f928..77a320b4 100644
--- a/app/javascript/gabsocial/features/status/components/detailed_status/detailed_status.js
+++ b/app/javascript/gabsocial/features/status/components/detailed_status/detailed_status.js
@@ -14,8 +14,6 @@ import Poll from '../../../../components/poll';
import Card from '../card';
import Video from '../../../video';
-import './detailed_status.scss';
-
export default class DetailedStatus extends ImmutablePureComponent {
static contextTypes = {
diff --git a/app/javascript/gabsocial/features/status/components/detailed_status_action_bar/detailed_status_action_bar.js b/app/javascript/gabsocial/features/status/components/detailed_status_action_bar/detailed_status_action_bar.js
index 11390877..39a90cfa 100644
--- a/app/javascript/gabsocial/features/status/components/detailed_status_action_bar/detailed_status_action_bar.js
+++ b/app/javascript/gabsocial/features/status/components/detailed_status_action_bar/detailed_status_action_bar.js
@@ -6,8 +6,6 @@ import { me, isStaff } from '../../../../initial_state';
import DropdownMenuContainer from '../../../../containers/dropdown_menu_container';
import IconButton from '../../../../components/icon_button';
-import './detailed_status_action_bar.scss';
-
const messages = defineMessages({
delete: { id: 'status.delete', defaultMessage: 'Delete' },
edit: { id: 'status.edit', defaultMessage: 'Edit' },
diff --git a/app/javascript/gabsocial/features/ui/ui.js b/app/javascript/gabsocial/features/ui/ui.js
index c6914ea2..d1bf92a0 100644
--- a/app/javascript/gabsocial/features/ui/ui.js
+++ b/app/javascript/gabsocial/features/ui/ui.js
@@ -70,9 +70,6 @@ import { me, meUsername } from '../../initial_state';
import '../../components/status';
import { fetchGroups } from '../../actions/groups';
-// import '../../../styles/application.scss';
-// import './ui.scss';
-
const messages = defineMessages({
beforeUnload: { id: 'ui.beforeunload', defaultMessage: 'Your draft will be lost if you leave Gab Social.' },
publish: { id: 'compose_form.publish', defaultMessage: 'Gab' },
diff --git a/app/javascript/gabsocial/pages/group_page.js b/app/javascript/gabsocial/pages/group_page.js
index b575dc42..98ca2e10 100644
--- a/app/javascript/gabsocial/pages/group_page.js
+++ b/app/javascript/gabsocial/pages/group_page.js
@@ -8,7 +8,6 @@ import GroupSidebarPanel from '../features/groups/sidebar_panel';
import PageLayout from '../components/page_layout';
import { WhoToFollowPanel } from '../components/panel';
import LinkFooter from '../components/link_footer';
-import PromoPanel from '../components/promo_panel';
const mapStateToProps = (state, { params: { id } }) => ({
group: state.getIn(['groups', id]),
@@ -51,7 +50,6 @@ class GroupPage extends ImmutablePureComponent {
group={group}
relationships={relationships}
/>}
-
)
diff --git a/app/javascript/gabsocial/pages/home_page.js b/app/javascript/gabsocial/pages/home_page.js
index 2470e6c9..1a8c609f 100644
--- a/app/javascript/gabsocial/pages/home_page.js
+++ b/app/javascript/gabsocial/pages/home_page.js
@@ -1,38 +1,38 @@
-import { Fragment } from 'react';
-import GroupSidebarPanel from '../features/groups/sidebar_panel';
-import LinkFooter from '../components/link_footer';
-import PromoPanel from '../components/panel/promo_panel';
-import SignUpPanel from '../components/panel/sign_up_panel';
-import WhoToFollowPanel from '../components/panel/who_to_follow_panel';
-import TrendsPanel from '../components/panel/trends_panel';
-import ProgressPanel from '../components/panel/progress_panel';
-// import UserPanel from '../components/user_panel';
-import PageLayout from '../components/page_layout';
-// import TimelineComposeBlock from '../components/timeline_compose_block';
+import { Fragment } from 'react'
+import GroupSidebarPanel from '../components/panel/groups_panel'
+import LinkFooter from '../components/link_footer'
+import SignUpPanel from '../components/panel/sign_up_panel'
+import WhoToFollowPanel from '../components/panel/who_to_follow_panel'
+import TrendsPanel from '../components/panel/trends_panel'
+import ProgressPanel from '../components/panel/progress_panel'
+import UserPanel from '../components/user_panel'
+import Search from '../components/search'
+import PageLayout from '../components/page_layout'
+import TimelineComposeBlock from '../components/timeline_compose_block'
export default class HomePage extends PureComponent {
- render () {
- const {children} = this.props;
+ render() {
+ const { children } = this.props
return (
- { /* */ }
- { /* */ }
-
+
+
+
+
+
- { /* */ }
- { /* */ }
),
}}
>
- {/**/}
- { /* children */ }
+
+ {children}
)
}
diff --git a/app/javascript/gabsocial/utils/numbers.js b/app/javascript/gabsocial/utils/numbers.js
index 7ae77d4c..9786b26f 100644
--- a/app/javascript/gabsocial/utils/numbers.js
+++ b/app/javascript/gabsocial/utils/numbers.js
@@ -1,9 +1,14 @@
-import { FormattedNumber } from 'react-intl';
+import { Fragment } from 'react'
+import { FormattedNumber } from 'react-intl'
export const shortNumberFormat = number => {
if (number < 1000) {
- return ;
+ return
}
- return K;
-};
+ return (
+
+ K
+
+ )
+}
diff --git a/app/javascript/styles/global.css b/app/javascript/styles/global.css
index 86531b32..201dec78 100644
--- a/app/javascript/styles/global.css
+++ b/app/javascript/styles/global.css
@@ -9,6 +9,13 @@ body {
overscroll-behavior-y: none;
}
+.statusContent * {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-size: 15px;
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", sans-serif;
+}
+
.default {
display: flex;
flex-basis: auto;
@@ -49,7 +56,7 @@ body {
white-space: inherit;
}
-.flex-normal {
+.flexNormal {
flex-basis: 0%;
flex-grow: 1;
flex-shrink: 1;
@@ -80,13 +87,23 @@ body {
white-space: nowrap;
}
+.whiteSpaceNoWrap { white-space: nowrap; }
+
+.outlineNone { outline: none; }
+.resizeNone { resize: none; }
+
.circle { border-radius: 9999px; }
.radiusSmall { border-radius: 4px; }
-.borderColorSubtle { border-color: #e4e4e4; }
+.borderColorSubtle { border-color: #ECECED; }
+.borderColorWhite { border-color: #fff; }
+.borderColorBrand { border-color: #21cf7a; }
.borderRight1PX { border-right-width: 1px; }
.borderBottom1PX { border-bottom-width: 1px; }
.borderLeft1PX { border-left-width: 1px; }
+.borderTop1PX { border-top-width: 1px; }
+.border1PX { border-width: 1px; }
+.border2PX { border-width: 2px; }
.marginAuto { margin: auto; }
@@ -101,8 +118,11 @@ body {
.pointerEventsAuto > * { pointer-events: auto;}
.pointerEventsNone { pointer-events: none !important; }
+.backgroundTransparent { background-color: transparent; }
.backgroundPanel { background-color: #aaa; }
.backgroundSubtle { background-color: #F5F8FA; }
+.backgroundSubtle2 { background-color: #e8ecef; }
+.backgroundColorSubtle3 { background-color: #F6F6F9; }
.backgroundWhite { background-color: #fff; }
.backgroundColorBrandLightOpaque { background-color: rgba(54, 233, 145, 0.1); }
.backgroundColorBrandLight { background-color: #36e991; }
@@ -114,16 +134,19 @@ body {
.colorBrand { color: #21cf7a }
.fillColorBlack { fill: #000; }
.fillColorBrand { fill: #21cf7a; }
+.fillColorSubtle { fill: #666; }
.bottom0 { bottom: 0; }
.left0 { left: 0px; }
.right0 { right: 0px; }
.top0 { top: 0px; }
-.lineHeight125 { height: 1.25em; }
+.lineHeight125 { line-height: 1.25em; }
+.lineHeight15 { line-height: 1.5em; }
.lineHeight2 { line-height: 2em; }
.positionFixed { position: fixed; }
+.positionSticky { position: sticky; }
.positionRelative { position: relative; }
.positionAbsolute { position: absolute; }
@@ -131,12 +154,14 @@ body {
.height100VH { height: 100vh; }
.height100PC { height: 100%; }
-.height50PX { height: 50px; }
-.height72PX { height: 72px; }
.height22PX { height: 22px; }
+.height50PX { height: 50px; }
+.height53PX { height: 53px; }
+.height72PX { height: 72px; }
+.height122PX { height: 122px; }
.width1015PX { width: 1015px; }
-.width660PX { width: 660px; }
+.width670PX { width: 670px; }
.width325PX { width: 325px; }
.width250PX { width: 250px; }
.width100PC { width: 100%; }
@@ -149,35 +174,48 @@ body {
.textAlignCenter { text-align: center; }
.fontSize19PX { font-size: 19px; }
+.fontSize16PX { font-size: 16px; }
.fontSize15PX { font-size: 15px; }
+.fontSize14PX { font-size: 14px; }
.fontSize13PX { font-size: 13px; }
+.fontSize12PX { font-size: 12px; }
.fontWeightNormal { font-weight: 400; }
+.fontWeight500 { font-weight: 500; }
.fontWeightBold { font-weight: 600; }
.fontWeightExtraBold { font-weight: 800; }
.noUnderline { text-decoration: none; }
.underline { text-decoration: underline; }
+.objectFitCover { object-fit: cover; }
+
.z1 { z-index: 1; }
.z2 { z-index: 2; }
.z3 { z-index: 3; }
-.marginRight10PX { margin-right: 10px; }
-
.marginVertical5PX {
margin-top: 5px;
margin-bottom: 5px;
}
+.marginLeft5PX { margin-left: 5px; }
+.marginRight2PX { margin-right: 2px; }
+
.marginVertical10PX {
margin-top: 10px;
margin-bottom: 10px;
}
+.marginRight10PX { margin-right: 10px; }
+.marginLeft15PX { margin-left: 15px; }
+.marginLeftAuto { margin-left: auto; }
+.marginRightAuto { margin-right: auto; }
.marginBottom15PX { margin-bottom: 15px; }
+.marginBottom10PX { margin-bottom: 10px; }
.marginTop10PX { margin-top: 10px; }
.marginTop5PX { margin-top: 5px; }
+.marginTopNeg30PX { margin-top: -30px; }
.paddingHorizontal15PX {
padding-left: 15px;
@@ -185,6 +223,11 @@ body {
}
.paddingRight15PX { padding-right: 15px; }
+.paddingVertical5PX {
+ padding-top: 5px;
+ padding-bottom: 5px;
+}
+
.paddingVertical10PX {
padding-top: 10px;
padding-bottom: 10px;
@@ -195,7 +238,12 @@ body {
padding-bottom: 15px;
}
-.paddingHoizontal10PX {
+.paddingVertical2PX {
+ padding-top: 2px;
+ padding-bottom: 2px;
+}
+
+.paddingHorizontal10PX {
padding-left: 10px;
padding-right: 10px;
}
diff --git a/package.json b/package.json
index 1ee812ef..26d66e92 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,9 @@
"type": "git",
"url": "https://code.gab.com/gab/social/gab-social"
},
- "sideEffects": [ "*.scss" ],
+ "sideEffects": [
+ "*.scss"
+ ],
"browserslist": [
"last 2 versions",
"IE >= 11",
@@ -95,7 +97,6 @@
"exif-js": "^2.3.0",
"express": "^4.17.1",
"file-loader": "^3.0.1",
- "font-awesome": "^4.7.0",
"glob": "^7.1.1",
"http-link-header": "^1.0.2",
"immutable": "^3.8.2",
@@ -140,7 +141,6 @@
"react-router-dom": "^4.1.1",
"react-router-scroll-4": "^1.0.0-beta.1",
"react-select": "^2.4.4",
- "react-sparklines": "^1.7.0",
"react-swipeable-views": "^0.13.0",
"react-textarea-autosize": "^7.1.0",
"react-toggle": "^4.0.1",
diff --git a/yarn.lock b/yarn.lock
index 30f6ac39..ae8e5e4b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4095,11 +4095,6 @@ follow-redirects@^1.0.0:
dependencies:
debug "^3.0.0"
-font-awesome@^4.7.0:
- version "4.7.0"
- resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133"
- integrity sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=
-
for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -8285,13 +8280,6 @@ react-select@^2.4.4:
react-input-autosize "^2.2.1"
react-transition-group "^2.2.1"
-react-sparklines@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/react-sparklines/-/react-sparklines-1.7.0.tgz#9b1d97e8c8610095eeb2ad658d2e1fcf91f91a60"
- integrity sha512-bJFt9K4c5Z0k44G8KtxIhbG+iyxrKjBZhdW6afP+R7EnIq+iKjbWbEFISrf3WKNFsda+C46XAfnX0StS5fbDcg==
- dependencies:
- prop-types "^15.5.10"
-
react-swipeable-views-core@^0.13.1:
version "0.13.1"
resolved "https://registry.yarnpkg.com/react-swipeable-views-core/-/react-swipeable-views-core-0.13.1.tgz#8829a922462a8bdd701709cd1b385393d38f1527"