Compare commits
16 Commits
main
...
sass-upgrade
| Author | SHA1 | Date | |
|---|---|---|---|
| 63907208a3 | |||
| 8d23ec1e7c | |||
| 4b4b4b9d38 | |||
| 7f073ccd59 | |||
| 02c368b22a | |||
| 39720bf7d2 | |||
| 2dc019f1e9 | |||
| 25af845912 | |||
| 59c8cb987f | |||
| 39b0552b6a | |||
| 075b46d050 | |||
| 633352118b | |||
| fd5f6f60cc | |||
| 7c51ea30a4 | |||
| 4aeb935250 | |||
| cb0ad15138 |
+1
-1
@@ -3,5 +3,5 @@ root = true
|
|||||||
[*.scss]
|
[*.scss]
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
[login.scss]
|
[{**/login.scss,**/tangerine/**/*.scss,**/gts/**/*.scss}]
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
@@ -1,4 +1,2 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
singleQuote: true,
|
|
||||||
jsxSingleQuote: true,
|
|
||||||
};
|
};
|
||||||
|
|||||||
+13
-1
@@ -11,18 +11,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
- Added documentation for `yarn dev` (#75)
|
- Added documentation for `yarn dev` (#75)
|
||||||
- Added an .editorconfig (#78)
|
- Added an .editorconfig (#78)
|
||||||
- Added a changelog basaed on “Keep a Changelog” (#80)
|
- Added a CHANGELOG.md basaed on “Keep a Changelog” (#80)
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Preserve ‘mastodon-settings’ in localStorage (#66)
|
- Preserve ‘mastodon-settings’ in localStorage (#66)
|
||||||
- Redesigned the login page (#76)
|
- Redesigned the login page (#76)
|
||||||
|
- Changed all icons to the Phosphor icon set (#77)
|
||||||
|
- Changed AUTHORS.md to reflect fork contributors (#89)
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Updated caniuse-lite browserlist (#82)
|
- Updated caniuse-lite browserlist (#82)
|
||||||
- Fixed various linter issues (#85)
|
- Fixed various linter issues (#85)
|
||||||
|
- Fixed various CSS issues (#100)
|
||||||
- Updated Prettier to 3.6.2 (#86)
|
- Updated Prettier to 3.6.2 (#86)
|
||||||
|
- Updated Yarn to 4.10.3 (#90)
|
||||||
|
- Updated Webpack to 5.102.1 (#83)
|
||||||
|
- Updated ESlint to 9.37.0 (#88)
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
|
||||||
|
- Removed FontAwesome (#99)
|
||||||
|
- Removed unused CSS files (#99)
|
||||||
|
- Removed various unused assets
|
||||||
|
|
||||||
## [0.5.0] - 2025-07-14
|
## [0.5.0] - 2025-07-14
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,9 @@ RUN yarn && yarn build:production
|
|||||||
### RUNTIME IMAGE ###
|
### RUNTIME IMAGE ###
|
||||||
FROM nginx:alpine AS runtime
|
FROM nginx:alpine AS runtime
|
||||||
|
|
||||||
|
# Ensure deps up to date.
|
||||||
|
RUN apk upgrade --update --no-cache
|
||||||
|
|
||||||
# Copy bigger nested stuff.
|
# Copy bigger nested stuff.
|
||||||
COPY --from=builder /build/public/packs/js/flavours/glitch /usr/share/nginx/html/packs/js/flavours/glitch
|
COPY --from=builder /build/public/packs/js/flavours/glitch /usr/share/nginx/html/packs/js/flavours/glitch
|
||||||
COPY --from=builder /build/public/packs/js/flavours/vanilla /usr/share/nginx/html/packs/js/flavours/vanilla
|
COPY --from=builder /build/public/packs/js/flavours/vanilla /usr/share/nginx/html/packs/js/flavours/vanilla
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
// This file will be loaded on all pages, regardless of theme.
|
// This file will be loaded on all pages, regardless of theme.
|
||||||
|
|
||||||
import "packs/public-path";
|
import "packs/public-path";
|
||||||
import "font-awesome/css/font-awesome.css";
|
|
||||||
|
|
||||||
require.context("../images/", true);
|
require.context("../images/", true);
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
import "../styles/mailer.scss";
|
|
||||||
|
|
||||||
require.context("../icons");
|
|
||||||
@@ -10,9 +10,6 @@ pack:
|
|||||||
embed: embed.js
|
embed: embed.js
|
||||||
error:
|
error:
|
||||||
home:
|
home:
|
||||||
mailer:
|
|
||||||
filename: mailer.js
|
|
||||||
stylesheet: true
|
|
||||||
modal:
|
modal:
|
||||||
public:
|
public:
|
||||||
settings: settings.js
|
settings: settings.js
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ class Account extends ImmutablePureComponent {
|
|||||||
if (requested) {
|
if (requested) {
|
||||||
buttons = <IconButton disabled icon='hourglass' title={intl.formatMessage(messages.requested)} />;
|
buttons = <IconButton disabled icon='hourglass' title={intl.formatMessage(messages.requested)} />;
|
||||||
} else if (blocking) {
|
} else if (blocking) {
|
||||||
buttons = <IconButton active icon='unlock' title={intl.formatMessage(messages.unblock, { name: account.get("username") })} onClick={this.handleBlock} />;
|
buttons = <IconButton active icon='lock-open-simple' title={intl.formatMessage(messages.unblock, { name: account.get("username") })} onClick={this.handleBlock} />;
|
||||||
} else if (muting) {
|
} else if (muting) {
|
||||||
let hidingNotificationsButton;
|
let hidingNotificationsButton;
|
||||||
if (account.getIn(["relationship", "muting_notifications"])) {
|
if (account.getIn(["relationship", "muting_notifications"])) {
|
||||||
@@ -133,16 +133,16 @@ class Account extends ImmutablePureComponent {
|
|||||||
}
|
}
|
||||||
buttons = (
|
buttons = (
|
||||||
<>
|
<>
|
||||||
<IconButton active icon='volume-up' title={intl.formatMessage(messages.unmute, { name: account.get("username") })} onClick={this.handleMute} />
|
<IconButton active icon='speaker-high' title={intl.formatMessage(messages.unmute, { name: account.get("username") })} onClick={this.handleMute} />
|
||||||
{hidingNotificationsButton}
|
{hidingNotificationsButton}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
} else if (defaultAction === "mute") {
|
} else if (defaultAction === "mute") {
|
||||||
buttons = <IconButton icon='volume-off' title={intl.formatMessage(messages.mute, { name: account.get("username") })} onClick={this.handleMute} />;
|
buttons = <IconButton icon='speaker-slash' title={intl.formatMessage(messages.mute, { name: account.get("username") })} onClick={this.handleMute} />;
|
||||||
} else if (defaultAction === "block") {
|
} else if (defaultAction === "block") {
|
||||||
buttons = <IconButton icon='lock' title={intl.formatMessage(messages.block, { name: account.get("username") })} onClick={this.handleBlock} />;
|
buttons = <IconButton icon='lock-simple' title={intl.formatMessage(messages.block, { name: account.get("username") })} onClick={this.handleBlock} />;
|
||||||
} else if (!account.get("moved") || following) {
|
} else if (!account.get("moved") || following) {
|
||||||
buttons = <IconButton icon={following ? "user-times" : "user-plus"} title={intl.formatMessage(following ? messages.unfollow : messages.follow)} onClick={this.handleFollow} active={following} />;
|
buttons = <IconButton icon={following ? "user-minus" : "user-plus"} title={intl.formatMessage(following ? messages.unfollow : messages.follow)} onClick={this.handleFollow} className={following ? "destructive" : ""} active={following} />;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,8 @@ export const Avatar: React.FC<Props> = ({
|
|||||||
...styleFromParent,
|
...styleFromParent,
|
||||||
width: `${size}px`,
|
width: `${size}px`,
|
||||||
height: `${size}px`,
|
height: `${size}px`,
|
||||||
backgroundSize: `${size}px ${size}px`,
|
backgroundSize: "cover",
|
||||||
|
backgroundPosition: "center",
|
||||||
};
|
};
|
||||||
|
|
||||||
if (account) {
|
if (account) {
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ export default class ColumnBackButton extends PureComponent {
|
|||||||
|
|
||||||
const component = (
|
const component = (
|
||||||
<button onClick={this.handleClick} className='column-back-button'>
|
<button onClick={this.handleClick} className='column-back-button'>
|
||||||
<Icon id='chevron-left' className='column-back-button__icon' fixedWidth />
|
<Icon id='arrow-left' className='column-back-button__icon' fixedWidth />
|
||||||
<FormattedMessage id='column_back_button.label' defaultMessage='Back' />
|
<FormattedMessage id='column_back_button.label' defaultMessage='Back' />
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ export default class ColumnBackButtonSlim extends PureComponent {
|
|||||||
return (
|
return (
|
||||||
<div className='column-back-button--slim'>
|
<div className='column-back-button--slim'>
|
||||||
<div role='button' tabIndex={0} onClick={this.handleClick} className='column-back-button column-back-button--slim-button'>
|
<div role='button' tabIndex={0} onClick={this.handleClick} className='column-back-button column-back-button--slim-button'>
|
||||||
<Icon id='chevron-left' className='column-back-button__icon' fixedWidth />
|
<Icon id='arrow-left' className='column-back-button__icon' fixedWidth />
|
||||||
<FormattedMessage id='column_back_button.label' defaultMessage='Back' />
|
<FormattedMessage id='column_back_button.label' defaultMessage='Back' />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { FormattedMessage, injectIntl, defineMessages } from "react-intl";
|
|||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
|
|
||||||
import { Icon } from "flavours/glitch/components/icon";
|
import { Icon } from "flavours/glitch/components/icon";
|
||||||
|
import { IconButton } from "flavours/glitch/components/icon_button";
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
show: { id: "column_header.show_settings", defaultMessage: "Show settings" },
|
show: { id: "column_header.show_settings", defaultMessage: "Show settings" },
|
||||||
@@ -117,34 +118,39 @@ class ColumnHeader extends PureComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (multiColumn && pinned) {
|
if (multiColumn && pinned) {
|
||||||
pinButton = <button key='pin-button' className='text-btn column-header__setting-btn' onClick={this.handlePin}><Icon id='times' /> <FormattedMessage id='column_header.unpin' defaultMessage='Unpin' /></button>;
|
pinButton = (<IconButton key='pin-button' onClick={this.handlePin} className='column-header__footer-button' label='Unpin' icon='push-pin-slash' title={formatMessage({id: "column_header.unpin", defaultMessage: "Unpin"})} />);
|
||||||
|
|
||||||
moveButtons = (
|
moveButtons = (
|
||||||
<div key='move-buttons' className='column-header__setting-arrows'>
|
<div key='move-buttons' className='column-header__footer-arrows'>
|
||||||
<button title={formatMessage(messages.moveLeft)} aria-label={formatMessage(messages.moveLeft)} className='icon-button column-header__setting-btn' onClick={this.handleMoveLeft}><Icon id='chevron-left' /></button>
|
<button title={formatMessage(messages.moveLeft)} aria-label={formatMessage(messages.moveLeft)} className='column-header__footer-button' onClick={this.handleMoveLeft}><Icon id='caret-left' /></button>
|
||||||
<button title={formatMessage(messages.moveRight)} aria-label={formatMessage(messages.moveRight)} className='icon-button column-header__setting-btn' onClick={this.handleMoveRight}><Icon id='chevron-right' /></button>
|
<button title={formatMessage(messages.moveRight)} aria-label={formatMessage(messages.moveRight)} className='column-header__footer-button' onClick={this.handleMoveRight}><Icon id='caret-right' /></button>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
} else if (multiColumn && this.props.onPin) {
|
} else if (multiColumn && this.props.onPin) {
|
||||||
pinButton = <button key='pin-button' className='text-btn column-header__setting-btn' onClick={this.handlePin}><Icon id='plus' /> <FormattedMessage id='column_header.pin' defaultMessage='Pin' /></button>;
|
pinButton = (<IconButton key='pin-button' onClick={this.handlePin} className='column-header__footer-button' label='Pin' icon='push-pin' title={formatMessage({id: "column_header.pin", defaultMessage: "Pin"})} />);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pinned && ((multiColumn && router.history.location?.state?.fromMastodon) || showBackButton)) {
|
if (!pinned && ((multiColumn && router.history.location?.state?.fromMastodon) || showBackButton)) {
|
||||||
backButton = (
|
backButton = (
|
||||||
<button onClick={this.handleBackClick} className='column-header__back-button'>
|
<button onClick={this.handleBackClick} className='column-header__back-button'>
|
||||||
<Icon id='chevron-left' className='column-back-button__icon' fixedWidth />
|
<Icon id='arrow-left' className='column-back-button__icon' fixedWidth />
|
||||||
<FormattedMessage id='column_back_button.label' defaultMessage='Back' />
|
<FormattedMessage id='column_back_button.label' defaultMessage='Back' />
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const columnHeaderFooter = (
|
||||||
|
<div className='column-header__footer'>
|
||||||
|
{pinButton} {moveButtons}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
|
||||||
const collapsedContent = [
|
const collapsedContent = [
|
||||||
extraContent,
|
extraContent,
|
||||||
];
|
];
|
||||||
|
|
||||||
if (multiColumn) {
|
if (multiColumn) {
|
||||||
collapsedContent.push(pinButton);
|
collapsedContent.push(columnHeaderFooter);
|
||||||
collapsedContent.push(moveButtons);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.context.identity.signedIn && (children || (multiColumn && this.props.onPin))) {
|
if (this.context.identity.signedIn && (children || (multiColumn && this.props.onPin))) {
|
||||||
@@ -155,10 +161,10 @@ class ColumnHeader extends PureComponent {
|
|||||||
aria-label={formatMessage(collapsed ? messages.show : messages.hide)}
|
aria-label={formatMessage(collapsed ? messages.show : messages.hide)}
|
||||||
onClick={this.handleToggleClick}
|
onClick={this.handleToggleClick}
|
||||||
>
|
>
|
||||||
<i className='icon-with-badge'>
|
<div className='gts-icon-with-badge'>
|
||||||
<Icon id='sliders' />
|
<Icon id='slider-horizontal' />
|
||||||
{collapseIssues && <i className='icon-with-badge__issue-badge' />}
|
{collapseIssues && <i className='gts-icon-with-badge__issue-badge' />}
|
||||||
</i>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,8 @@ export const DismissableBanner: React.FC<PropsWithChildren<Props>> = ({
|
|||||||
<div className='dismissable-banner'>
|
<div className='dismissable-banner'>
|
||||||
<div className='dismissable-banner__action'>
|
<div className='dismissable-banner__action'>
|
||||||
<IconButton
|
<IconButton
|
||||||
icon='times'
|
icon='x'
|
||||||
|
className='dismissable-banner__action-button'
|
||||||
title={intl.formatMessage(messages.dismiss)}
|
title={intl.formatMessage(messages.dismiss)}
|
||||||
onClick={handleDismiss}
|
onClick={handleDismiss}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ export const Domain: React.FC<Props> = ({ domain, onUnblockDomain }) => {
|
|||||||
<div className='domain__buttons'>
|
<div className='domain__buttons'>
|
||||||
<IconButton
|
<IconButton
|
||||||
active
|
active
|
||||||
icon='unlock'
|
icon='lock-simple-open'
|
||||||
title={intl.formatMessage(messages.unblockDomain, { domain })}
|
title={intl.formatMessage(messages.unblockDomain, { domain })}
|
||||||
onClick={handleDomainUnblock}
|
onClick={handleDomainUnblock}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -13,10 +13,11 @@ export const Icon: React.FC<Props> = ({
|
|||||||
id,
|
id,
|
||||||
className,
|
className,
|
||||||
fixedWidth,
|
fixedWidth,
|
||||||
|
title,
|
||||||
...other
|
...other
|
||||||
}) => (
|
}) => (
|
||||||
<i
|
<svg className={classNames("gts-icon", className)} {...other}>
|
||||||
className={classNames("fa", `fa-${id}`, className, { "fa-fw": fixedWidth })}
|
{title && <title>{title}</title>}
|
||||||
{...other}
|
<use href={`/icons.svg#${id}`} />
|
||||||
/>
|
</svg>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -82,24 +82,10 @@ export class IconButton extends React.PureComponent<Props, States> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
// Hack required for some icons which have an overriden size
|
|
||||||
let containerSize = "1.28571429em";
|
|
||||||
if (this.props.style?.fontSize) {
|
|
||||||
containerSize = `${this.props.size * 1.28571429}px`;
|
|
||||||
}
|
|
||||||
|
|
||||||
const style = {
|
const style = {
|
||||||
fontSize: `${this.props.size}px`,
|
|
||||||
height: containerSize,
|
|
||||||
lineHeight: `${this.props.size}px`,
|
|
||||||
...this.props.style,
|
...this.props.style,
|
||||||
...(this.props.active ? this.props.activeStyle : {}),
|
...(this.props.active ? this.props.activeStyle : {}),
|
||||||
};
|
};
|
||||||
if (!this.props.label) {
|
|
||||||
style.width = containerSize;
|
|
||||||
} else {
|
|
||||||
style.textAlign = "left";
|
|
||||||
}
|
|
||||||
|
|
||||||
const {
|
const {
|
||||||
active,
|
active,
|
||||||
|
|||||||
@@ -16,11 +16,11 @@ export const IconWithBadge: React.FC<Props> = ({
|
|||||||
issueBadge,
|
issueBadge,
|
||||||
className,
|
className,
|
||||||
}) => (
|
}) => (
|
||||||
<i className='icon-with-badge'>
|
<div className='gts-icon-with-badge'>
|
||||||
<Icon id={id} fixedWidth className={className} />
|
<Icon id={id} fixedWidth className={className} />
|
||||||
{count > 0 && (
|
{count > 0 && (
|
||||||
<i className='icon-with-badge__badge'>{formatNumber(count)}</i>
|
<span className='gts-icon-with-badge__badge'>{formatNumber(count)}</span>
|
||||||
)}
|
)}
|
||||||
{issueBadge && <i className='icon-with-badge__issue-badge' />}
|
{issueBadge && <div className='gts-icon-with-badge__issue-badge' />}
|
||||||
</i>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ export const LoadGap: React.FC<Props> = ({ disabled, maxId, onClick }) => {
|
|||||||
onClick={handleClick}
|
onClick={handleClick}
|
||||||
aria-label={intl.formatMessage(messages.load_more)}
|
aria-label={intl.formatMessage(messages.load_more)}
|
||||||
>
|
>
|
||||||
<Icon id='ellipsis-h' />
|
<Icon id='dots-three-filled' />
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -17,10 +17,10 @@ import ImmutablePureComponent from "react-immutable-pure-component";
|
|||||||
import { Icon } from "flavours/glitch/components/icon";
|
import { Icon } from "flavours/glitch/components/icon";
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
btnAll : { id: "notification_purge.btn_all", defaultMessage: "Select\nall" },
|
btnAll : { id: "notification_purge.btn_all", defaultMessage: "All" },
|
||||||
btnNone : { id: "notification_purge.btn_none", defaultMessage: "Select\nnone" },
|
btnNone : { id: "notification_purge.btn_none", defaultMessage: "None" },
|
||||||
btnInvert : { id: "notification_purge.btn_invert", defaultMessage: "Invert\nselection" },
|
btnInvert : { id: "notification_purge.btn_invert", defaultMessage: "Invert" },
|
||||||
btnApply : { id: "notification_purge.btn_apply", defaultMessage: "Clear\nselected" },
|
btnApply : { id: "notification_purge.btn_apply", defaultMessage: "Remove" },
|
||||||
});
|
});
|
||||||
|
|
||||||
class NotificationPurgeButtons extends ImmutablePureComponent {
|
class NotificationPurgeButtons extends ImmutablePureComponent {
|
||||||
@@ -35,25 +35,24 @@ class NotificationPurgeButtons extends ImmutablePureComponent {
|
|||||||
};
|
};
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
const { intl, markNewForDelete } = this.props;
|
const { intl } = this.props;
|
||||||
|
|
||||||
//className='active'
|
|
||||||
return (
|
return (
|
||||||
<div className='column-header__notif-cleaning-buttons'>
|
<div className='column-header__notif-cleaning-buttons'>
|
||||||
<button onClick={this.props.onMarkAll} className={classNames("column-header__button", { active: markNewForDelete })}>
|
<button onClick={this.props.onMarkAll} className={classNames("column-header__button")}>
|
||||||
<b>∀</b><br />{intl.formatMessage(messages.btnAll)}
|
{intl.formatMessage(messages.btnAll)}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button onClick={this.props.onMarkNone} className={classNames("column-header__button", { active: !markNewForDelete })}>
|
<button onClick={this.props.onMarkNone} className={classNames("column-header__button")}>
|
||||||
<b>∅</b><br />{intl.formatMessage(messages.btnNone)}
|
{intl.formatMessage(messages.btnNone)}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button onClick={this.props.onInvert} className='column-header__button'>
|
<button onClick={this.props.onInvert} className='column-header__button'>
|
||||||
<b>¬</b><br />{intl.formatMessage(messages.btnInvert)}
|
{intl.formatMessage(messages.btnInvert)}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button onClick={this.props.onDeleteMarked} className='column-header__button'>
|
<button onClick={this.props.onDeleteMarked} className='column-header__button'>
|
||||||
<Icon id='trash' /><br />{intl.formatMessage(messages.btnApply)}
|
{intl.formatMessage(messages.btnApply)}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class PictureInPicturePlaceholder extends PureComponent {
|
|||||||
render () {
|
render () {
|
||||||
return (
|
return (
|
||||||
<div className='picture-in-picture-placeholder' role='button' tabIndex={0} onClick={this.handleClick}>
|
<div className='picture-in-picture-placeholder' role='button' tabIndex={0} onClick={this.handleClick}>
|
||||||
<Icon id='window-restore' />
|
<Icon id='browsers' />
|
||||||
<FormattedMessage id='picture_in_picture.restore' defaultMessage='Put it back' />
|
<FormattedMessage id='picture_in_picture.restore' defaultMessage='Put it back' />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -648,7 +648,7 @@ class Status extends ImmutablePureComponent {
|
|||||||
|
|
||||||
if (pictureInPicture.get("inUse")) {
|
if (pictureInPicture.get("inUse")) {
|
||||||
media.push(<PictureInPicturePlaceholder />);
|
media.push(<PictureInPicturePlaceholder />);
|
||||||
mediaIcons.push("video-camera");
|
mediaIcons.push("film-strip");
|
||||||
} else if (attachments.size > 0) {
|
} else if (attachments.size > 0) {
|
||||||
const language = status.getIn(["translation", "language"]) || status.get("language");
|
const language = status.getIn(["translation", "language"]) || status.get("language");
|
||||||
|
|
||||||
@@ -688,7 +688,7 @@ class Status extends ImmutablePureComponent {
|
|||||||
)}
|
)}
|
||||||
</Bundle>,
|
</Bundle>,
|
||||||
);
|
);
|
||||||
mediaIcons.push("music");
|
mediaIcons.push("music-note");
|
||||||
} else if (attachments.getIn([0, "type"]) === "video") {
|
} else if (attachments.getIn([0, "type"]) === "video") {
|
||||||
const attachment = status.getIn(["media_attachments", 0]);
|
const attachment = status.getIn(["media_attachments", 0]);
|
||||||
const description = attachment.getIn(["translation", "description"]) || attachment.get("description");
|
const description = attachment.getIn(["translation", "description"]) || attachment.get("description");
|
||||||
@@ -715,7 +715,7 @@ class Status extends ImmutablePureComponent {
|
|||||||
/>)}
|
/>)}
|
||||||
</Bundle>,
|
</Bundle>,
|
||||||
);
|
);
|
||||||
mediaIcons.push("video-camera");
|
mediaIcons.push("film-strip");
|
||||||
} else { // Media type is 'image' or 'gifv'
|
} else { // Media type is 'image' or 'gifv'
|
||||||
media.push(
|
media.push(
|
||||||
<Bundle fetchComponent={MediaGallery} loading={this.renderLoadingMediaGallery}>
|
<Bundle fetchComponent={MediaGallery} loading={this.renderLoadingMediaGallery}>
|
||||||
@@ -737,7 +737,7 @@ class Status extends ImmutablePureComponent {
|
|||||||
)}
|
)}
|
||||||
</Bundle>,
|
</Bundle>,
|
||||||
);
|
);
|
||||||
mediaIcons.push("picture-o");
|
mediaIcons.push("image");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!status.get("sensitive") && !(status.get("spoiler_text").length > 0) && settings.getIn(["collapsed", "backgrounds", "preview_images"])) {
|
if (!status.get("sensitive") && !(status.get("spoiler_text").length > 0) && settings.getIn(["collapsed", "backgrounds", "preview_images"])) {
|
||||||
@@ -759,7 +759,7 @@ class Status extends ImmutablePureComponent {
|
|||||||
if (status.get("poll")) {
|
if (status.get("poll")) {
|
||||||
const language = status.getIn(["translation", "language"]) || status.get("language");
|
const language = status.getIn(["translation", "language"]) || status.get("language");
|
||||||
contentMedia.push(<PollContainer pollId={status.get("poll")} lang={language} />);
|
contentMedia.push(<PollContainer pollId={status.get("poll")} lang={language} />);
|
||||||
contentMediaIcons.push("tasks");
|
contentMediaIcons.push("chart-bar-horizontal");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Here we prepare extra data-* attributes for CSS selectors.
|
// Here we prepare extra data-* attributes for CSS selectors.
|
||||||
@@ -819,17 +819,15 @@ class Status extends ImmutablePureComponent {
|
|||||||
{(connectReply || connectUp || connectToRoot) && <div className={classNames("status__line", { "status__line--full": connectReply, "status__line--first": !status.get("in_reply_to_id") && !connectToRoot })} />}
|
{(connectReply || connectUp || connectToRoot) && <div className={classNames("status__line", { "status__line--full": connectReply, "status__line--first": !status.get("in_reply_to_id") && !connectToRoot })} />}
|
||||||
|
|
||||||
<header className='status__info'>
|
<header className='status__info'>
|
||||||
<span>
|
{muted && prepend}
|
||||||
{muted && prepend}
|
{!muted || !isCollapsed ? (
|
||||||
{!muted || !isCollapsed ? (
|
<StatusHeader
|
||||||
<StatusHeader
|
status={status}
|
||||||
status={status}
|
friend={account}
|
||||||
friend={account}
|
collapsed={isCollapsed}
|
||||||
collapsed={isCollapsed}
|
parseClick={parseClick}
|
||||||
parseClick={parseClick}
|
/>
|
||||||
/>
|
) : null}
|
||||||
) : null}
|
|
||||||
</span>
|
|
||||||
<StatusIcons
|
<StatusIcons
|
||||||
status={status}
|
status={status}
|
||||||
mediaIcons={contentMediaIcons.concat(extraMediaIcons)}
|
mediaIcons={contentMediaIcons.concat(extraMediaIcons)}
|
||||||
|
|||||||
@@ -208,7 +208,6 @@ class StatusActionBar extends ImmutablePureComponent {
|
|||||||
const isRemote = status.getIn(["account", "username"]) !== status.getIn(["account", "acct"]);
|
const isRemote = status.getIn(["account", "username"]) !== status.getIn(["account", "acct"]);
|
||||||
|
|
||||||
let menu = [];
|
let menu = [];
|
||||||
let reblogIcon = "retweet";
|
|
||||||
let replyIcon;
|
let replyIcon;
|
||||||
let replyTitle;
|
let replyTitle;
|
||||||
|
|
||||||
@@ -278,10 +277,10 @@ class StatusActionBar extends ImmutablePureComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (status.get("in_reply_to_id", null) === null) {
|
if (status.get("in_reply_to_id", null) === null) {
|
||||||
replyIcon = "reply";
|
replyIcon = "arrow-bend-up-left";
|
||||||
replyTitle = intl.formatMessage(messages.reply);
|
replyTitle = intl.formatMessage(messages.reply);
|
||||||
} else {
|
} else {
|
||||||
replyIcon = "reply-all";
|
replyIcon = "arrow-bend-double-up-left";
|
||||||
replyTitle = intl.formatMessage(messages.replyAll);
|
replyTitle = intl.formatMessage(messages.replyAll);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -312,9 +311,9 @@ class StatusActionBar extends ImmutablePureComponent {
|
|||||||
counter={showReplyCount ? status.get("replies_count") : undefined}
|
counter={showReplyCount ? status.get("replies_count") : undefined}
|
||||||
obfuscateCount
|
obfuscateCount
|
||||||
/>
|
/>
|
||||||
<IconButton className={classNames("status__action-bar-button", { reblogPrivate })} disabled={!publicStatus && !reblogPrivate} active={status.get("reblogged")} title={reblogTitle} icon={reblogIcon} onClick={this.handleReblogClick} counter={withCounters ? status.get("reblogs_count") : undefined} />
|
<IconButton className={classNames("status__action-bar-button status-boost", { reblogPrivate })} disabled={!publicStatus && !reblogPrivate} active={status.get("reblogged")} title={reblogTitle} icon={status.get("reblogged") ? "rocket-launch-filled" : "rocket-launch"} onClick={this.handleReblogClick} counter={withCounters ? status.get("reblogs_count") : undefined} />
|
||||||
<IconButton className='status__action-bar-button star-icon' animate active={status.get("favourited")} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} counter={withCounters ? status.get("favourites_count") : undefined} />
|
<IconButton className='status__action-bar-button star-icon status-favourite' animate active={status.get("favourited")} title={intl.formatMessage(messages.favourite)} icon={status.get("favourited") ? "star-filled" : "star"} onClick={this.handleFavouriteClick} counter={withCounters ? status.get("favourites_count") : undefined} />
|
||||||
<IconButton className='status__action-bar-button bookmark-icon' disabled={!signedIn} active={status.get("bookmarked")} title={intl.formatMessage(messages.bookmark)} icon='bookmark' onClick={this.handleBookmarkClick} />
|
<IconButton className='status__action-bar-button bookmark-icon status-bookmark' disabled={!signedIn} active={status.get("bookmarked")} title={intl.formatMessage(messages.bookmark)} icon={status.get("bookmarked") ? "bookmark-filled" : "bookmark"} onClick={this.handleBookmarkClick} />
|
||||||
|
|
||||||
{filterButton}
|
{filterButton}
|
||||||
|
|
||||||
@@ -323,7 +322,7 @@ class StatusActionBar extends ImmutablePureComponent {
|
|||||||
scrollKey={scrollKey}
|
scrollKey={scrollKey}
|
||||||
status={status}
|
status={status}
|
||||||
items={menu}
|
items={menu}
|
||||||
icon='ellipsis-h'
|
icon='dots-three-outline'
|
||||||
size={18}
|
size={18}
|
||||||
direction='right'
|
direction='right'
|
||||||
ariaLabel={intl.formatMessage(messages.more)}
|
ariaLabel={intl.formatMessage(messages.more)}
|
||||||
|
|||||||
@@ -354,15 +354,12 @@ class StatusContent extends PureComponent {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={classNames} tabIndex={0} onMouseDown={this.handleMouseDown} onMouseUp={this.handleMouseUp}>
|
<div className={classNames} tabIndex={0} onMouseDown={this.handleMouseDown} onMouseUp={this.handleMouseUp}>
|
||||||
<p
|
<span dangerouslySetInnerHTML={spoilerContent} className='translate' lang={language} />
|
||||||
style={{ marginBottom: hidden && status.get("mentions").isEmpty() ? "0px" : null }}
|
{" "}
|
||||||
>
|
<button type='button' className='status__content__spoiler-link' onClick={this.handleSpoilerClick} aria-expanded={!hidden}>
|
||||||
<span dangerouslySetInnerHTML={spoilerContent} className='translate' lang={language} />
|
<Icon id={hidden ? "eye-closed" : "eye"} />
|
||||||
{" "}
|
{toggleText}
|
||||||
<button type='button' className='status__content__spoiler-link' onClick={this.handleSpoilerClick} aria-expanded={!hidden}>
|
</button>
|
||||||
{toggleText}
|
|
||||||
</button>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
{mentionsPlaceholder}
|
{mentionsPlaceholder}
|
||||||
|
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ class StatusIcons extends PureComponent {
|
|||||||
<Icon
|
<Icon
|
||||||
className='status__reply-icon'
|
className='status__reply-icon'
|
||||||
fixedWidth
|
fixedWidth
|
||||||
id='comment'
|
id='arrow-bend-double-up-left'
|
||||||
aria-hidden='true'
|
aria-hidden='true'
|
||||||
title={intl.formatMessage(messages.inReplyTo)}
|
title={intl.formatMessage(messages.inReplyTo)}
|
||||||
/>
|
/>
|
||||||
@@ -122,7 +122,7 @@ class StatusIcons extends PureComponent {
|
|||||||
{settings.get("local_only") && status.get("local_only") &&
|
{settings.get("local_only") && status.get("local_only") &&
|
||||||
<Icon
|
<Icon
|
||||||
fixedWidth
|
fixedWidth
|
||||||
id='home'
|
id='house-line'
|
||||||
aria-hidden='true'
|
aria-hidden='true'
|
||||||
title={intl.formatMessage(messages.localOnly)}
|
title={intl.formatMessage(messages.localOnly)}
|
||||||
/>}
|
/>}
|
||||||
@@ -138,7 +138,7 @@ class StatusIcons extends PureComponent {
|
|||||||
intl.formatMessage(messages.uncollapse) :
|
intl.formatMessage(messages.uncollapse) :
|
||||||
intl.formatMessage(messages.collapse)
|
intl.formatMessage(messages.collapse)
|
||||||
}
|
}
|
||||||
icon='angle-double-up'
|
icon='caret-circle-double-up'
|
||||||
onClick={this.handleCollapsedClick}
|
onClick={this.handleCollapsedClick}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -29,9 +29,9 @@ export default class StatusPrepend extends PureComponent {
|
|||||||
<a
|
<a
|
||||||
onClick={this.handleClick}
|
onClick={this.handleClick}
|
||||||
href={account.get("url")}
|
href={account.get("url")}
|
||||||
className='status__display-name'
|
className='status__prepend-display-name'
|
||||||
>
|
>
|
||||||
<b
|
<span
|
||||||
dangerouslySetInnerHTML={{
|
dangerouslySetInnerHTML={{
|
||||||
__html : account.get("display_name_html") || account.get("username"),
|
__html : account.get("display_name_html") || account.get("username"),
|
||||||
}}
|
}}
|
||||||
@@ -114,20 +114,20 @@ export default class StatusPrepend extends PureComponent {
|
|||||||
iconId = "star";
|
iconId = "star";
|
||||||
break;
|
break;
|
||||||
case "featured":
|
case "featured":
|
||||||
iconId = "thumb-tack";
|
iconId = "push-pin";
|
||||||
break;
|
break;
|
||||||
case "poll":
|
case "poll":
|
||||||
iconId = "tasks";
|
iconId = "chart-bar-horizontal";
|
||||||
break;
|
break;
|
||||||
case "reblog":
|
case "reblog":
|
||||||
case "reblogged_by":
|
case "reblogged_by":
|
||||||
iconId = "retweet";
|
iconId = "rocket-launch";
|
||||||
break;
|
break;
|
||||||
case "status":
|
case "status":
|
||||||
iconId = "bell";
|
iconId = "bell";
|
||||||
break;
|
break;
|
||||||
case "update":
|
case "update":
|
||||||
iconId = "pencil";
|
iconId = "pencil-simple-line";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ class VisibilityIcon extends ImmutablePureComponent {
|
|||||||
const { withLabel, visibility, intl } = this.props;
|
const { withLabel, visibility, intl } = this.props;
|
||||||
|
|
||||||
const visibilityIcon = {
|
const visibilityIcon = {
|
||||||
public: "globe",
|
public: "planet",
|
||||||
unlisted: "unlock",
|
unlisted: "lock-open-simple",
|
||||||
private: "lock",
|
private: "lock-simple",
|
||||||
direct: "envelope",
|
direct: "at",
|
||||||
}[visibility];
|
}[visibility];
|
||||||
|
|
||||||
const label = intl.formatMessage(messages[visibility]);
|
const label = intl.formatMessage(messages[visibility]);
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ class Section extends PureComponent {
|
|||||||
return (
|
return (
|
||||||
<div className={classNames("about__section", { active: !collapsed })}>
|
<div className={classNames("about__section", { active: !collapsed })}>
|
||||||
<div className='about__section__title' role='button' tabIndex={0} onClick={this.handleClick}>
|
<div className='about__section__title' role='button' tabIndex={0} onClick={this.handleClick}>
|
||||||
<Icon id={collapsed ? "chevron-right" : "chevron-down"} fixedWidth /> {title}
|
<Icon id={collapsed ? "caret-right" : "caret-down"} fixedWidth /> {title}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{!collapsed && (
|
{!collapsed && (
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ class Header extends ImmutablePureComponent {
|
|||||||
action_buttons = (
|
action_buttons = (
|
||||||
<div className='account__header__account-note__buttons'>
|
<div className='account__header__account-note__buttons'>
|
||||||
<button className='icon-button' tabIndex={0} onClick={this.props.onCancelAccountNote} disabled={isSubmitting}>
|
<button className='icon-button' tabIndex={0} onClick={this.props.onCancelAccountNote} disabled={isSubmitting}>
|
||||||
<Icon id='times' size={15} /> <FormattedMessage id='account_note.cancel' defaultMessage='Cancel' />
|
<Icon id='x' size={15} /> <FormattedMessage id='account_note.cancel' defaultMessage='Cancel' />
|
||||||
</button>
|
</button>
|
||||||
<div className='flex-spacer' />
|
<div className='flex-spacer' />
|
||||||
<button className='icon-button' tabIndex={0} onClick={this.props.onSaveAccountNote} disabled={isSubmitting}>
|
<button className='icon-button' tabIndex={0} onClick={this.props.onSaveAccountNote} disabled={isSubmitting}>
|
||||||
@@ -69,7 +69,7 @@ class Header extends ImmutablePureComponent {
|
|||||||
action_buttons = (
|
action_buttons = (
|
||||||
<div className='account__header__account-note__buttons'>
|
<div className='account__header__account-note__buttons'>
|
||||||
<button className='icon-button' tabIndex={0} onClick={this.props.onEditAccountNote} disabled={isSubmitting}>
|
<button className='icon-button' tabIndex={0} onClick={this.props.onEditAccountNote} disabled={isSubmitting}>
|
||||||
<Icon id='pencil' size={15} /> <FormattedMessage id='account_note.edit' defaultMessage='Edit' />
|
<Icon id='pencil-simple-line' size={15} /> <FormattedMessage id='account_note.edit' defaultMessage='Edit' />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -28,7 +28,8 @@ class ActionBar extends PureComponent {
|
|||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div className='account__disclaimer'>
|
<div className='account__disclaimer'>
|
||||||
<Icon id='info-circle' fixedWidth /> <FormattedMessage
|
<Icon id='info' fixedWidth />
|
||||||
|
<FormattedMessage
|
||||||
id='account.suspended_disclaimer_full'
|
id='account.suspended_disclaimer_full'
|
||||||
defaultMessage='This user has been suspended by a moderator.'
|
defaultMessage='This user has been suspended by a moderator.'
|
||||||
/>
|
/>
|
||||||
@@ -42,7 +43,8 @@ class ActionBar extends PureComponent {
|
|||||||
if (account.get("acct") !== account.get("username")) {
|
if (account.get("acct") !== account.get("username")) {
|
||||||
extraInfo = (
|
extraInfo = (
|
||||||
<div className='account__disclaimer'>
|
<div className='account__disclaimer'>
|
||||||
<Icon id='info-circle' fixedWidth /> <FormattedMessage
|
<Icon id='info' fixedWidth />
|
||||||
|
<FormattedMessage
|
||||||
id='account.disclaimer_full'
|
id='account.disclaimer_full'
|
||||||
defaultMessage="Information below may reflect the user's profile incompletely."
|
defaultMessage="Information below may reflect the user's profile incompletely."
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ export default class FollowRequestNote extends ImmutablePureComponent {
|
|||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button type='button' className='button button-tertiary button--destructive' onClick={onReject}>
|
<button type='button' className='button button-tertiary button--destructive' onClick={onReject}>
|
||||||
<Icon id='times' fixedWidth />
|
<Icon id='x' fixedWidth />
|
||||||
<FormattedMessage id='follow_request.reject' defaultMessage='Reject' />
|
<FormattedMessage id='follow_request.reject' defaultMessage='Reject' />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ class Header extends ImmutablePureComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (account.getIn(["relationship", "requested"]) || account.getIn(["relationship", "following"])) {
|
if (account.getIn(["relationship", "requested"]) || account.getIn(["relationship", "following"])) {
|
||||||
bellBtn = <IconButton icon={account.getIn(["relationship", "notifying"]) ? "bell" : "bell-o"} size={24} active={account.getIn(["relationship", "notifying"])} title={intl.formatMessage(account.getIn(["relationship", "notifying"]) ? messages.disableNotifications : messages.enableNotifications, { name: account.get("username") })} onClick={this.props.onNotifyToggle} />;
|
bellBtn = <IconButton icon={account.getIn(["relationship", "notifying"]) ? "bell-ringing" : "bell"} size={24} active={account.getIn(["relationship", "notifying"])} title={intl.formatMessage(account.getIn(["relationship", "notifying"]) ? messages.disableNotifications : messages.enableNotifications, { name: account.get("username") })} onClick={this.props.onNotifyToggle} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (me !== account.get("id")) {
|
if (me !== account.get("id")) {
|
||||||
@@ -217,7 +217,7 @@ class Header extends ImmutablePureComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (account.get("locked")) {
|
if (account.get("locked")) {
|
||||||
lockedIcon = <Icon id='lock' title={intl.formatMessage(messages.account_locked)} />;
|
lockedIcon = <Icon id='lock-simple' title={intl.formatMessage(messages.account_locked)} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (signedIn && account.get("id") !== me && !suspended) {
|
if (signedIn && account.get("id") !== me && !suspended) {
|
||||||
@@ -360,7 +360,7 @@ class Header extends ImmutablePureComponent {
|
|||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<DropdownMenuContainer disabled={menu.length === 0} items={menu} icon='ellipsis-v' size={24} direction='right' />
|
<DropdownMenuContainer disabled={menu.length === 0} items={menu} icon='dots-three-outline' size={24} direction='right' />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ export default class MediaItem extends ImmutablePureComponent {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (attachment.get("type") === "audio") {
|
if (attachment.get("type") === "audio") {
|
||||||
label = <Icon id='music' />;
|
label = <Icon id='music-note' />;
|
||||||
} else {
|
} else {
|
||||||
label = <Icon id='play' />;
|
label = <Icon id='play' />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ export default class MovedNote extends ImmutablePureComponent {
|
|||||||
return (
|
return (
|
||||||
<div className='account__moved-note'>
|
<div className='account__moved-note'>
|
||||||
<div className='account__moved-note__message'>
|
<div className='account__moved-note__message'>
|
||||||
<div className='account__moved-note__icon-wrapper'><Icon id='suitcase' className='account__moved-note__icon' fixedWidth /></div>
|
<div className='account__moved-note__icon-wrapper'><Icon id='signpost' className='account__moved-note__icon' fixedWidth /></div>
|
||||||
<FormattedMessage id='account.moved_to' defaultMessage='{name} has indicated that their new account is now:' values={{ name: <bdi><strong dangerouslySetInnerHTML={displayNameHtml} /></bdi> }} />
|
<FormattedMessage id='account.moved_to' defaultMessage='{name} has indicated that their new account is now:' values={{ name: <bdi><strong dangerouslySetInnerHTML={displayNameHtml} /></bdi> }} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -565,7 +565,7 @@ class Audio extends PureComponent {
|
|||||||
<div className='video-player__buttons-bar'>
|
<div className='video-player__buttons-bar'>
|
||||||
<div className='video-player__buttons left'>
|
<div className='video-player__buttons left'>
|
||||||
<button type='button' title={intl.formatMessage(paused ? messages.play : messages.pause)} aria-label={intl.formatMessage(paused ? messages.play : messages.pause)} className='player-button' onClick={this.togglePlay}><Icon id={paused ? "play" : "pause"} fixedWidth /></button>
|
<button type='button' title={intl.formatMessage(paused ? messages.play : messages.pause)} aria-label={intl.formatMessage(paused ? messages.play : messages.pause)} className='player-button' onClick={this.togglePlay}><Icon id={paused ? "play" : "pause"} fixedWidth /></button>
|
||||||
<button type='button' title={intl.formatMessage(muted ? messages.unmute : messages.mute)} aria-label={intl.formatMessage(muted ? messages.unmute : messages.mute)} className='player-button' onClick={this.toggleMute}><Icon id={muted ? "volume-off" : "volume-up"} fixedWidth /></button>
|
<button type='button' title={intl.formatMessage(muted ? messages.unmute : messages.mute)} aria-label={intl.formatMessage(muted ? messages.unmute : messages.mute)} className='player-button' onClick={this.toggleMute}><Icon id={muted ? "speaker-slash" : "speaker-high"} fixedWidth /></button>
|
||||||
|
|
||||||
<div className={classNames("video-player__volume", { active: this.state.hovered })} ref={this.setVolumeRef} onMouseDown={this.handleVolumeMouseDown}>
|
<div className={classNames("video-player__volume", { active: this.state.hovered })} ref={this.setVolumeRef} onMouseDown={this.handleVolumeMouseDown}>
|
||||||
<div className='video-player__volume__current' style={{ width: `${muted ? 0 : volume * 100}%`, backgroundColor: this._getAccentColor() }} />
|
<div className='video-player__volume__current' style={{ width: `${muted ? 0 : volume * 100}%`, backgroundColor: this._getAccentColor() }} />
|
||||||
@@ -587,7 +587,7 @@ class Audio extends PureComponent {
|
|||||||
<div className='video-player__buttons right'>
|
<div className='video-player__buttons right'>
|
||||||
{!editable && <button type='button' title={intl.formatMessage(messages.hide)} aria-label={intl.formatMessage(messages.hide)} className='player-button' onClick={this.toggleReveal}><Icon id='eye-slash' fixedWidth /></button>}
|
{!editable && <button type='button' title={intl.formatMessage(messages.hide)} aria-label={intl.formatMessage(messages.hide)} className='player-button' onClick={this.toggleReveal}><Icon id='eye-slash' fixedWidth /></button>}
|
||||||
<a title={intl.formatMessage(messages.download)} aria-label={intl.formatMessage(messages.download)} className='video-player__download__icon player-button' href={this.props.src} download>
|
<a title={intl.formatMessage(messages.download)} aria-label={intl.formatMessage(messages.download)} className='video-player__download__icon player-button' href={this.props.src} download>
|
||||||
<Icon id={"download"} fixedWidth />
|
<Icon id={"file-arrow-down"} fixedWidth />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ class ActionBar extends PureComponent {
|
|||||||
return (
|
return (
|
||||||
<div className='compose__action-bar'>
|
<div className='compose__action-bar'>
|
||||||
<div className='compose__action-bar-dropdown'>
|
<div className='compose__action-bar-dropdown'>
|
||||||
<DropdownMenuContainer items={menu} icon='ellipsis-v' size={18} direction='right' />
|
<DropdownMenuContainer items={menu} icon='dots-three-outline' size={18} direction='right' />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -205,10 +205,6 @@ export default class ComposerOptionsDropdown extends PureComponent {
|
|||||||
onKeyDown={this.handleButtonKeyDown}
|
onKeyDown={this.handleButtonKeyDown}
|
||||||
onKeyPress={this.handleKeyPress}
|
onKeyPress={this.handleKeyPress}
|
||||||
size={18}
|
size={18}
|
||||||
style={{
|
|
||||||
height: null,
|
|
||||||
lineHeight: "27px",
|
|
||||||
}}
|
|
||||||
title={title}
|
title={title}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+8
-5
@@ -10,6 +10,8 @@ import ImmutablePropTypes from "react-immutable-proptypes";
|
|||||||
import { supportsPassiveEvents } from "detect-passive-events";
|
import { supportsPassiveEvents } from "detect-passive-events";
|
||||||
import Overlay from "react-overlays/Overlay";
|
import Overlay from "react-overlays/Overlay";
|
||||||
|
|
||||||
|
import { Icon } from "flavours/glitch/components/icon";
|
||||||
|
|
||||||
import { useSystemEmojiFont } from "flavours/glitch/initial_state";
|
import { useSystemEmojiFont } from "flavours/glitch/initial_state";
|
||||||
import { assetHost } from "flavours/glitch/utils/config";
|
import { assetHost } from "flavours/glitch/utils/config";
|
||||||
|
|
||||||
@@ -389,13 +391,14 @@ class EmojiPickerDropdown extends PureComponent {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='emoji-picker-dropdown' onKeyDown={this.handleKeyDown}>
|
<div className='emoji-picker-dropdown' onKeyDown={this.handleKeyDown}>
|
||||||
<div ref={this.setTargetRef} className='emoji-button' title={title} aria-label={title} aria-expanded={active} role='button' onClick={this.onToggle} onKeyDown={this.onToggle} tabIndex={0}>
|
<button ref={this.setTargetRef} className='emoji-button' title={title} aria-label={title} aria-expanded={active} onClick={this.onToggle} onKeyDown={this.onToggle}>
|
||||||
{button || <img
|
{button || <Icon
|
||||||
|
fixedWidth
|
||||||
|
id='smiley'
|
||||||
|
aria-hidden='true'
|
||||||
className={classNames("emojione", { "pulse-loading": active && loading })}
|
className={classNames("emojione", { "pulse-loading": active && loading })}
|
||||||
alt='🙂'
|
|
||||||
src={`${assetHost}/emoji/1f642.svg`}
|
|
||||||
/>}
|
/>}
|
||||||
</div>
|
</button>
|
||||||
|
|
||||||
<Overlay show={active} placement={"bottom"} target={this.findTarget} popperConfig={{ strategy: "fixed" }}>
|
<Overlay show={active} placement={"bottom"} target={this.findTarget} popperConfig={{ strategy: "fixed" }}>
|
||||||
{({ props, placement })=> (
|
{({ props, placement })=> (
|
||||||
|
|||||||
@@ -79,19 +79,22 @@ class Header extends ImmutablePureComponent {
|
|||||||
aria-label={intl.formatMessage(messages.start)}
|
aria-label={intl.formatMessage(messages.start)}
|
||||||
title={intl.formatMessage(messages.start)}
|
title={intl.formatMessage(messages.start)}
|
||||||
to='/getting-started'
|
to='/getting-started'
|
||||||
|
className='drawer__tab'
|
||||||
><Icon id='asterisk' /></Link>
|
><Icon id='asterisk' /></Link>
|
||||||
{renderForColumn("HOME", (
|
{renderForColumn("HOME", (
|
||||||
<Link
|
<Link
|
||||||
aria-label={intl.formatMessage(messages.home_timeline)}
|
aria-label={intl.formatMessage(messages.home_timeline)}
|
||||||
title={intl.formatMessage(messages.home_timeline)}
|
title={intl.formatMessage(messages.home_timeline)}
|
||||||
to='/home'
|
to='/home'
|
||||||
><Icon id='home' /></Link>
|
className='drawer__tab'
|
||||||
|
><Icon id='house-line' /></Link>
|
||||||
))}
|
))}
|
||||||
{renderForColumn("NOTIFICATIONS", (
|
{renderForColumn("NOTIFICATIONS", (
|
||||||
<Link
|
<Link
|
||||||
aria-label={intl.formatMessage(messages.notifications)}
|
aria-label={intl.formatMessage(messages.notifications)}
|
||||||
title={intl.formatMessage(messages.notifications)}
|
title={intl.formatMessage(messages.notifications)}
|
||||||
to='/notifications'
|
to='/notifications'
|
||||||
|
className='drawer__tab'
|
||||||
>
|
>
|
||||||
<span className='icon-badge-wrapper'>
|
<span className='icon-badge-wrapper'>
|
||||||
<Icon id='bell' />
|
<Icon id='bell' />
|
||||||
@@ -104,6 +107,7 @@ class Header extends ImmutablePureComponent {
|
|||||||
aria-label={intl.formatMessage(messages.community)}
|
aria-label={intl.formatMessage(messages.community)}
|
||||||
title={intl.formatMessage(messages.community)}
|
title={intl.formatMessage(messages.community)}
|
||||||
to='/public/local'
|
to='/public/local'
|
||||||
|
className='drawer__tab'
|
||||||
><Icon id='users' /></Link>
|
><Icon id='users' /></Link>
|
||||||
))}
|
))}
|
||||||
{renderForColumn("PUBLIC", (
|
{renderForColumn("PUBLIC", (
|
||||||
@@ -111,19 +115,22 @@ class Header extends ImmutablePureComponent {
|
|||||||
aria-label={intl.formatMessage(messages.public)}
|
aria-label={intl.formatMessage(messages.public)}
|
||||||
title={intl.formatMessage(messages.public)}
|
title={intl.formatMessage(messages.public)}
|
||||||
to='/public'
|
to='/public'
|
||||||
><Icon id='globe' /></Link>
|
className='drawer__tab'
|
||||||
|
><Icon id='planet' /></Link>
|
||||||
))}
|
))}
|
||||||
<a
|
<a
|
||||||
aria-label={intl.formatMessage(messages.settings)}
|
aria-label={intl.formatMessage(messages.settings)}
|
||||||
onClick={onSettingsClick}
|
onClick={onSettingsClick}
|
||||||
href='/settings/preferences'
|
href='/settings/preferences'
|
||||||
title={intl.formatMessage(messages.settings)}
|
title={intl.formatMessage(messages.settings)}
|
||||||
><Icon id='cogs' /></a>
|
className='drawer__tab'
|
||||||
|
><Icon id='gear' /></a>
|
||||||
<a
|
<a
|
||||||
aria-label={intl.formatMessage(messages.logout)}
|
aria-label={intl.formatMessage(messages.logout)}
|
||||||
onClick={this.handleLogoutClick}
|
onClick={this.handleLogoutClick}
|
||||||
href={signOutLink}
|
href={signOutLink}
|
||||||
title={intl.formatMessage(messages.logout)}
|
title={intl.formatMessage(messages.logout)}
|
||||||
|
className='drawer__tab'
|
||||||
><Icon id='sign-out' /></a>
|
><Icon id='sign-out' /></a>
|
||||||
</nav>
|
</nav>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ class ComposerOptions extends ImmutablePureComponent {
|
|||||||
text: formatMessage(messages.plain),
|
text: formatMessage(messages.plain),
|
||||||
},
|
},
|
||||||
markdown: {
|
markdown: {
|
||||||
icon: "arrow-circle-down",
|
icon: "markdown-logo",
|
||||||
name: "text/markdown",
|
name: "text/markdown",
|
||||||
text: formatMessage(messages.markdown),
|
text: formatMessage(messages.markdown),
|
||||||
},
|
},
|
||||||
@@ -238,7 +238,7 @@ class ComposerOptions extends ImmutablePureComponent {
|
|||||||
icon='paperclip'
|
icon='paperclip'
|
||||||
items={[
|
items={[
|
||||||
{
|
{
|
||||||
icon: "cloud-upload",
|
icon: "file-arrow-up",
|
||||||
name: "upload",
|
name: "upload",
|
||||||
text: formatMessage(messages.upload),
|
text: formatMessage(messages.upload),
|
||||||
},
|
},
|
||||||
@@ -255,7 +255,7 @@ class ComposerOptions extends ImmutablePureComponent {
|
|||||||
<IconButton
|
<IconButton
|
||||||
active={hasPoll}
|
active={hasPoll}
|
||||||
disabled={disabled || !allowPoll}
|
disabled={disabled || !allowPoll}
|
||||||
icon='tasks'
|
icon='chart-bar-horizontal'
|
||||||
inverted
|
inverted
|
||||||
onClick={onTogglePoll}
|
onClick={onTogglePoll}
|
||||||
size={18}
|
size={18}
|
||||||
@@ -293,7 +293,7 @@ class ComposerOptions extends ImmutablePureComponent {
|
|||||||
<LanguageDropdown />
|
<LanguageDropdown />
|
||||||
<DropdownContainer
|
<DropdownContainer
|
||||||
disabled={disabled || isEditing}
|
disabled={disabled || isEditing}
|
||||||
icon='ellipsis-h'
|
icon='dots-three-outline'
|
||||||
items={advancedOptions ? [
|
items={advancedOptions ? [
|
||||||
{
|
{
|
||||||
meta: formatMessage(messages.local_only_long),
|
meta: formatMessage(messages.local_only_long),
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ class OptionIntl extends PureComponent {
|
|||||||
</label>
|
</label>
|
||||||
|
|
||||||
<div className='poll__cancel'>
|
<div className='poll__cancel'>
|
||||||
<IconButton disabled={index <= 1} title={intl.formatMessage(messages.remove_option)} icon='times' onClick={this.handleOptionRemove} />
|
<IconButton disabled={index <= 1} title={intl.formatMessage(messages.remove_option)} icon='x' onClick={this.handleOptionRemove} />
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -38,25 +38,25 @@ class PrivacyDropdown extends PureComponent {
|
|||||||
// dropdown icon later.
|
// dropdown icon later.
|
||||||
const privacyItems = {
|
const privacyItems = {
|
||||||
direct: {
|
direct: {
|
||||||
icon: "envelope",
|
icon: "at",
|
||||||
meta: formatMessage(messages.direct_long),
|
meta: formatMessage(messages.direct_long),
|
||||||
name: "direct",
|
name: "direct",
|
||||||
text: formatMessage(messages.direct_short),
|
text: formatMessage(messages.direct_short),
|
||||||
},
|
},
|
||||||
private: {
|
private: {
|
||||||
icon: "lock",
|
icon: "lock-simple",
|
||||||
meta: formatMessage(messages.private_long),
|
meta: formatMessage(messages.private_long),
|
||||||
name: "private",
|
name: "private",
|
||||||
text: formatMessage(messages.private_short),
|
text: formatMessage(messages.private_short),
|
||||||
},
|
},
|
||||||
public: {
|
public: {
|
||||||
icon: "globe",
|
icon: "planet",
|
||||||
meta: formatMessage(messages.public_long),
|
meta: formatMessage(messages.public_long),
|
||||||
name: "public",
|
name: "public",
|
||||||
text: formatMessage(messages.public_short),
|
text: formatMessage(messages.public_short),
|
||||||
},
|
},
|
||||||
unlisted: {
|
unlisted: {
|
||||||
icon: "unlock",
|
icon: "lock-open-simple",
|
||||||
meta: formatMessage(messages.unlisted_long),
|
meta: formatMessage(messages.unlisted_long),
|
||||||
name: "unlisted",
|
name: "unlisted",
|
||||||
text: formatMessage(messages.unlisted_short),
|
text: formatMessage(messages.unlisted_short),
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ class Publisher extends ImmutablePureComponent {
|
|||||||
over: diff < 0,
|
over: diff < 0,
|
||||||
});
|
});
|
||||||
|
|
||||||
const privacyIcons = { direct: "envelope", private: "lock", public: "globe", unlisted: "unlock" };
|
const privacyIcons = { direct: "at", private: "lock-simple", public: "planet", unlisted: "lock-open-simple" };
|
||||||
|
|
||||||
let publishText;
|
let publishText;
|
||||||
if (isEditing) {
|
if (isEditing) {
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ class ReplyIndicator extends ImmutablePureComponent {
|
|||||||
<header className='reply-indicator__header'>
|
<header className='reply-indicator__header'>
|
||||||
<IconButton
|
<IconButton
|
||||||
className='reply-indicator__cancel'
|
className='reply-indicator__cancel'
|
||||||
icon='times'
|
icon='x'
|
||||||
onClick={this.handleClick}
|
onClick={this.handleClick}
|
||||||
title={intl.formatMessage(messages.cancel)}
|
title={intl.formatMessage(messages.cancel)}
|
||||||
inverted
|
inverted
|
||||||
|
|||||||
@@ -347,6 +347,7 @@ class Search extends PureComponent {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={classNames("search", { active: expanded })}>
|
<div className={classNames("search", { active: expanded })}>
|
||||||
|
<Icon id='magnifying-glass' className='search__icon' />
|
||||||
<input
|
<input
|
||||||
ref={this.setRef}
|
ref={this.setRef}
|
||||||
className='search__input'
|
className='search__input'
|
||||||
@@ -359,11 +360,9 @@ class Search extends PureComponent {
|
|||||||
onFocus={this.handleFocus}
|
onFocus={this.handleFocus}
|
||||||
onBlur={this.handleBlur}
|
onBlur={this.handleBlur}
|
||||||
/>
|
/>
|
||||||
|
<button type='button' className={hasValue ? "search__button active" : "search__button"} onClick={this.handleClear}>
|
||||||
<div role='button' tabIndex={0} className='search__icon' onClick={this.handleClear}>
|
<Icon id='x' />
|
||||||
<Icon id='search' className={hasValue ? "" : "active"} />
|
</button>
|
||||||
<Icon id='times-circle' className={hasValue ? "active" : ""} />
|
|
||||||
</div>
|
|
||||||
<div className='search__popout'>
|
<div className='search__popout'>
|
||||||
{options.length === 0 && (
|
{options.length === 0 && (
|
||||||
<>
|
<>
|
||||||
@@ -373,7 +372,9 @@ class Search extends PureComponent {
|
|||||||
{recent.size > 0 ? this._getOptions().map(({ label, action, forget }, i) => (
|
{recent.size > 0 ? this._getOptions().map(({ label, action, forget }, i) => (
|
||||||
<button key={label} onMouseDown={action} className={classNames("search__popout__menu__item search__popout__menu__item--flex", { selected: selectedOption === i })}>
|
<button key={label} onMouseDown={action} className={classNames("search__popout__menu__item search__popout__menu__item--flex", { selected: selectedOption === i })}>
|
||||||
<span>{label}</span>
|
<span>{label}</span>
|
||||||
<button className='icon-button' onMouseDown={forget}><Icon id='times' /></button>
|
<button className='icon-button' onMouseDown={forget}>
|
||||||
|
<Icon id='x' />
|
||||||
|
</button>
|
||||||
</button>
|
</button>
|
||||||
)) : (
|
)) : (
|
||||||
<div className='search__popout__menu__message'>
|
<div className='search__popout__menu__message'>
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ class SearchResults extends ImmutablePureComponent {
|
|||||||
|
|
||||||
if (results.get("hashtags") && results.get("hashtags").size > 0) {
|
if (results.get("hashtags") && results.get("hashtags").size > 0) {
|
||||||
hashtags = (
|
hashtags = (
|
||||||
<SearchSection title={<><Icon id='hashtag' fixedWidth /><FormattedMessage id='search_results.hashtags' defaultMessage='Hashtags' /></>}>
|
<SearchSection title={<><Icon id='tag' fixedWidth /><FormattedMessage id='search_results.hashtags' defaultMessage='Hashtags' /></>}>
|
||||||
{withoutLastResult(results.get("hashtags")).map(hashtag => <Hashtag key={hashtag.get("name")} hashtag={hashtag} />)}
|
{withoutLastResult(results.get("hashtags")).map(hashtag => <Hashtag key={hashtag.get("name")} hashtag={hashtag} />)}
|
||||||
{(results.get("hashtags").size > INITIAL_PAGE_LIMIT && results.get("hashtags").size % INITIAL_PAGE_LIMIT === 1) && <LoadMore visible onClick={this.handleLoadMoreHashtags} />}
|
{(results.get("hashtags").size > INITIAL_PAGE_LIMIT && results.get("hashtags").size % INITIAL_PAGE_LIMIT === 1) && <LoadMore visible onClick={this.handleLoadMoreHashtags} />}
|
||||||
</SearchSection>
|
</SearchSection>
|
||||||
@@ -61,7 +61,7 @@ class SearchResults extends ImmutablePureComponent {
|
|||||||
|
|
||||||
if (results.get("statuses") && results.get("statuses").size > 0) {
|
if (results.get("statuses") && results.get("statuses").size > 0) {
|
||||||
statuses = (
|
statuses = (
|
||||||
<SearchSection title={<><Icon id='quote-right' fixedWidth /><FormattedMessage id='search_results.statuses' defaultMessage='Posts' /></>}>
|
<SearchSection title={<><Icon id='chat-circle-dots' fixedWidth /><FormattedMessage id='search_results.statuses' defaultMessage='Posts' /></>}>
|
||||||
{withoutLastResult(results.get("statuses")).map(statusId => <StatusContainer key={statusId} id={statusId} />)}
|
{withoutLastResult(results.get("statuses")).map(statusId => <StatusContainer key={statusId} id={statusId} />)}
|
||||||
{(results.get("statuses").size > INITIAL_PAGE_LIMIT && results.get("statuses").size % INITIAL_PAGE_LIMIT === 1) && <LoadMore visible onClick={this.handleLoadMoreStatuses} />}
|
{(results.get("statuses").size > INITIAL_PAGE_LIMIT && results.get("statuses").size % INITIAL_PAGE_LIMIT === 1) && <LoadMore visible onClick={this.handleLoadMoreStatuses} />}
|
||||||
</SearchSection>
|
</SearchSection>
|
||||||
@@ -71,7 +71,7 @@ class SearchResults extends ImmutablePureComponent {
|
|||||||
return (
|
return (
|
||||||
<div className='drawer--results'>
|
<div className='drawer--results'>
|
||||||
<header className='search-results__header'>
|
<header className='search-results__header'>
|
||||||
<Icon id='search' fixedWidth />
|
<Icon id='magnifying-glass' fixedWidth />
|
||||||
<FormattedMessage id='explore.search_results' defaultMessage='Search results' />
|
<FormattedMessage id='explore.search_results' defaultMessage='Search results' />
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
|||||||
@@ -51,13 +51,13 @@ export default class Upload extends ImmutablePureComponent {
|
|||||||
{({ scale }) => (
|
{({ scale }) => (
|
||||||
<div className='compose-form__upload-thumbnail' style={{ transform: `scale(${scale})`, backgroundImage: `url(${media.get("preview_url")})`, backgroundPosition: `${x}% ${y}%` }}>
|
<div className='compose-form__upload-thumbnail' style={{ transform: `scale(${scale})`, backgroundImage: `url(${media.get("preview_url")})`, backgroundPosition: `${x}% ${y}%` }}>
|
||||||
<div className='compose-form__upload__actions'>
|
<div className='compose-form__upload__actions'>
|
||||||
<button type='button' className='icon-button' onClick={this.handleUndoClick}><Icon id='times' /> <FormattedMessage id='upload_form.undo' defaultMessage='Delete' /></button>
|
<button type='button' className='icon-button' onClick={this.handleUndoClick}><Icon id='x' /> <FormattedMessage id='upload_form.undo' defaultMessage='Delete' /></button>
|
||||||
<button type='button' className='icon-button' onClick={this.handleFocalPointClick}><Icon id='pencil' /> <FormattedMessage id='upload_form.edit' defaultMessage='Edit' /></button>
|
<button type='button' className='icon-button' onClick={this.handleFocalPointClick}><Icon id='pencil-simple-line' /> <FormattedMessage id='upload_form.edit' defaultMessage='Edit' /></button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{(media.get("description") || "").length === 0 && (
|
{(media.get("description") || "").length === 0 && (
|
||||||
<div className='compose-form__upload__warning'>
|
<div className='compose-form__upload__warning'>
|
||||||
<button type='button' className='icon-button' onClick={this.handleFocalPointClick}><Icon id='info-circle' /> <FormattedMessage id='upload_form.description_missing' defaultMessage='No description added' /></button>
|
<button type='button' className='icon-button' onClick={this.handleFocalPointClick}><Icon id='info' /> <FormattedMessage id='upload_form.description_missing' defaultMessage='No description added' /></button>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ export default class UploadProgress extends PureComponent {
|
|||||||
return (
|
return (
|
||||||
<div className='upload-progress'>
|
<div className='upload-progress'>
|
||||||
<div className='upload-progress__icon'>
|
<div className='upload-progress__icon'>
|
||||||
<Icon id='upload' />
|
<Icon id='file-arrow-up' />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='upload-progress__message'>
|
<div className='upload-progress__message'>
|
||||||
|
|||||||
@@ -212,14 +212,14 @@ class Conversation extends ImmutablePureComponent {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<div className='status__action-bar'>
|
<div className='status__action-bar'>
|
||||||
<IconButton className='status__action-bar-button' title={intl.formatMessage(messages.reply)} icon='reply' onClick={this.handleReply} />
|
<IconButton className='status__action-bar-button' title={intl.formatMessage(messages.reply)} icon='arrow-bend-up-left' onClick={this.handleReply} />
|
||||||
|
|
||||||
<div className='status__action-bar-dropdown'>
|
<div className='status__action-bar-dropdown'>
|
||||||
<DropdownMenuContainer
|
<DropdownMenuContainer
|
||||||
scrollKey={scrollKey}
|
scrollKey={scrollKey}
|
||||||
status={lastStatus}
|
status={lastStatus}
|
||||||
items={menu}
|
items={menu}
|
||||||
icon='ellipsis-h'
|
icon='dots-three-outline'
|
||||||
size={18}
|
size={18}
|
||||||
direction='right'
|
direction='right'
|
||||||
title={intl.formatMessage(messages.more)}
|
title={intl.formatMessage(messages.more)}
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ class DirectTimeline extends PureComponent {
|
|||||||
return (
|
return (
|
||||||
<Column bindToDocument={!multiColumn} ref={this.setRef} label={intl.formatMessage(messages.title)}>
|
<Column bindToDocument={!multiColumn} ref={this.setRef} label={intl.formatMessage(messages.title)}>
|
||||||
<ColumnHeader
|
<ColumnHeader
|
||||||
icon='envelope'
|
icon='at'
|
||||||
active={hasUnread}
|
active={hasUnread}
|
||||||
title={intl.formatMessage(messages.title)}
|
title={intl.formatMessage(messages.title)}
|
||||||
onPin={this.handlePin}
|
onPin={this.handlePin}
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ class AccountCard extends ImmutablePureComponent {
|
|||||||
<div className='account-card'>
|
<div className='account-card'>
|
||||||
<Permalink href={account.get("url")} to={`/@${account.get("acct")}`} className='account-card__permalink'>
|
<Permalink href={account.get("url")} to={`/@${account.get("acct")}`} className='account-card__permalink'>
|
||||||
<div className='account-card__header'>
|
<div className='account-card__header'>
|
||||||
{this.props.onDismiss && <IconButton className='media-modal__close' title={intl.formatMessage(messages.dismissSuggestion)} icon='times' onClick={this.handleDismiss} size={20} />}
|
{this.props.onDismiss && <IconButton className='media-modal__close' title={intl.formatMessage(messages.dismissSuggestion)} icon='x' onClick={this.handleDismiss} size={20} />}
|
||||||
|
|
||||||
<img
|
<img
|
||||||
src={
|
src={
|
||||||
|
|||||||
@@ -171,13 +171,13 @@ class Results extends PureComponent {
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
{hashtags.size > 0 && (
|
{hashtags.size > 0 && (
|
||||||
<SearchSection key='hashtags' title={<><Icon id='hashtag' fixedWidth /><FormattedMessage id='search_results.hashtags' defaultMessage='Hashtags' /></>} onClickMore={this.handleLoadMoreHashtags}>
|
<SearchSection key='hashtags' title={<><Icon id='tag' fixedWidth /><FormattedMessage id='search_results.hashtags' defaultMessage='Hashtags' /></>} onClickMore={this.handleLoadMoreHashtags}>
|
||||||
{hashtags.take(INITIAL_DISPLAY).map(hashtag => <Hashtag key={hashtag.get("name")} hashtag={hashtag} />)}
|
{hashtags.take(INITIAL_DISPLAY).map(hashtag => <Hashtag key={hashtag.get("name")} hashtag={hashtag} />)}
|
||||||
</SearchSection>
|
</SearchSection>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{statuses.size > 0 && (
|
{statuses.size > 0 && (
|
||||||
<SearchSection key='statuses' title={<><Icon id='quote-right' fixedWidth /><FormattedMessage id='search_results.statuses' defaultMessage='Posts' /></>} onClickMore={this.handleLoadMoreStatuses}>
|
<SearchSection key='statuses' title={<><Icon id='chat-circle-dots' fixedWidth /><FormattedMessage id='search_results.statuses' defaultMessage='Posts' /></>} onClickMore={this.handleLoadMoreStatuses}>
|
||||||
{statuses.take(INITIAL_DISPLAY).map(id => <Status key={id} id={id} />)}
|
{statuses.take(INITIAL_DISPLAY).map(id => <Status key={id} id={id} />)}
|
||||||
</SearchSection>
|
</SearchSection>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ class Favourites extends ImmutablePureComponent {
|
|||||||
showBackButton
|
showBackButton
|
||||||
multiColumn={multiColumn}
|
multiColumn={multiColumn}
|
||||||
extraButton={(
|
extraButton={(
|
||||||
<button className='column-header__button' title={intl.formatMessage(messages.refresh)} aria-label={intl.formatMessage(messages.refresh)} onClick={this.handleRefresh}><Icon id='refresh' /></button>
|
<button className='column-header__button' title={intl.formatMessage(messages.refresh)} aria-label={intl.formatMessage(messages.refresh)} onClick={this.handleRefresh}><Icon id='arrows-clockwise' /></button>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
<ScrollableList
|
<ScrollableList
|
||||||
|
|||||||
@@ -178,7 +178,7 @@ const Firehose = ({ feedType, multiColumn }) => {
|
|||||||
return (
|
return (
|
||||||
<Column bindToDocument={!multiColumn} ref={columnRef} label={intl.formatMessage(messages.title)}>
|
<Column bindToDocument={!multiColumn} ref={columnRef} label={intl.formatMessage(messages.title)}>
|
||||||
<ColumnHeader
|
<ColumnHeader
|
||||||
icon='globe'
|
icon='planet'
|
||||||
active={hasUnread}
|
active={hasUnread}
|
||||||
title={intl.formatMessage(messages.title)}
|
title={intl.formatMessage(messages.title)}
|
||||||
onPin={handlePin}
|
onPin={handlePin}
|
||||||
|
|||||||
+1
-1
@@ -60,7 +60,7 @@ class Account extends ImmutablePureComponent {
|
|||||||
if (account.getIn(["relationship", "following"])) {
|
if (account.getIn(["relationship", "following"])) {
|
||||||
button = <IconButton icon='check' title={intl.formatMessage(messages.unfollow)} active onClick={this.handleFollow} />;
|
button = <IconButton icon='check' title={intl.formatMessage(messages.unfollow)} active onClick={this.handleFollow} />;
|
||||||
} else {
|
} else {
|
||||||
button = <IconButton icon='plus' title={intl.formatMessage(messages.follow)} onClick={this.handleFollow} />;
|
button = <IconButton icon='user-plus' title={intl.formatMessage(messages.follow)} onClick={this.handleFollow} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
+1
-1
@@ -41,7 +41,7 @@ class AccountAuthorize extends ImmutablePureComponent {
|
|||||||
|
|
||||||
<div className='account--panel'>
|
<div className='account--panel'>
|
||||||
<div className='account--panel__button'><IconButton title={intl.formatMessage(messages.authorize)} icon='check' onClick={onAuthorize} /></div>
|
<div className='account--panel__button'><IconButton title={intl.formatMessage(messages.authorize)} icon='check' onClick={onAuthorize} /></div>
|
||||||
<div className='account--panel__button'><IconButton title={intl.formatMessage(messages.reject)} icon='times' onClick={onReject} /></div>
|
<div className='account--panel__button'><IconButton title={intl.formatMessage(messages.reject)} icon='x' onClick={onReject} /></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
+2
-2
@@ -444,9 +444,9 @@ class Announcements extends ImmutablePureComponent {
|
|||||||
|
|
||||||
{announcements.size > 1 && (
|
{announcements.size > 1 && (
|
||||||
<div className='announcements__pagination'>
|
<div className='announcements__pagination'>
|
||||||
<IconButton disabled={announcements.size === 1} title={intl.formatMessage(messages.previous)} icon='chevron-left' onClick={this.handlePrevClick} size={13} />
|
<IconButton disabled={announcements.size === 1} title={intl.formatMessage(messages.previous)} icon='caret-left' onClick={this.handlePrevClick} size={13} />
|
||||||
<span>{index + 1} / {announcements.size}</span>
|
<span>{index + 1} / {announcements.size}</span>
|
||||||
<IconButton disabled={announcements.size === 1} title={intl.formatMessage(messages.next)} icon='chevron-right' onClick={this.handleNextClick} size={13} />
|
<IconButton disabled={announcements.size === 1} title={intl.formatMessage(messages.next)} icon='caret-right' onClick={this.handleNextClick} size={13} />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ class GettingStarted extends ImmutablePureComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!columns.find(item => item.get("id") === "PUBLIC")) {
|
if (!columns.find(item => item.get("id") === "PUBLIC")) {
|
||||||
navItems.push(<ColumnLink key='public_timeline' icon='globe' text={intl.formatMessage(messages.public_timeline)} to='/public' />);
|
navItems.push(<ColumnLink key='public_timeline' icon='planet' text={intl.formatMessage(messages.public_timeline)} to='/public' />);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,24 +151,24 @@ class GettingStarted extends ImmutablePureComponent {
|
|||||||
|
|
||||||
if (signedIn) {
|
if (signedIn) {
|
||||||
if (!multiColumn || !columns.find(item => item.get("id") === "DIRECT")) {
|
if (!multiColumn || !columns.find(item => item.get("id") === "DIRECT")) {
|
||||||
navItems.push(<ColumnLink key='conversations' icon='envelope' text={intl.formatMessage(messages.direct)} to='/conversations' />);
|
navItems.push(<ColumnLink key='conversations' icon='at' text={intl.formatMessage(messages.direct)} to='/conversations' />);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!multiColumn || !columns.find(item => item.get("id") === "BOOKMARKS")) {
|
if (!multiColumn || !columns.find(item => item.get("id") === "BOOKMARKS")) {
|
||||||
navItems.push(<ColumnLink key='bookmarks' icon='bookmark' text={intl.formatMessage(messages.bookmarks)} to='/bookmarks' />);
|
navItems.push(<ColumnLink key='bookmarks' icon='bookmarks' text={intl.formatMessage(messages.bookmarks)} to='/bookmarks' />);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (myAccount.get("locked") || unreadFollowRequests > 0) {
|
if (myAccount.get("locked") || unreadFollowRequests > 0) {
|
||||||
navItems.push(<ColumnLink key='follow_requests' icon='user-plus' text={intl.formatMessage(messages.follow_requests)} badge={badgeDisplay(unreadFollowRequests, 40)} to='/follow_requests' />);
|
navItems.push(<ColumnLink key='follow_requests' icon='user-plus' text={intl.formatMessage(messages.follow_requests)} badge={badgeDisplay(unreadFollowRequests, 40)} to='/follow_requests' />);
|
||||||
}
|
}
|
||||||
|
|
||||||
navItems.push(<ColumnLink key='getting_started' icon='ellipsis-h' text={intl.formatMessage(messages.misc)} to='/getting-started-misc' />);
|
navItems.push(<ColumnLink key='getting_started' icon='dots-three-outline' text={intl.formatMessage(messages.misc)} to='/getting-started-misc' />);
|
||||||
|
|
||||||
listItems = listItems.concat([
|
listItems = listItems.concat([
|
||||||
<div key='9'>
|
<div key='9'>
|
||||||
<ColumnLink key='lists' icon='bars' text={intl.formatMessage(messages.lists)} to='/lists' />
|
<ColumnLink key='lists' icon='list' text={intl.formatMessage(messages.lists)} to='/lists' />
|
||||||
{lists.filter(list => !columns.find(item => item.get("id") === "LIST" && item.getIn(["params", "id"]) === list.get("id"))).map(list =>
|
{lists.filter(list => !columns.find(item => item.get("id") === "LIST" && item.getIn(["params", "id"]) === list.get("id"))).map(list =>
|
||||||
<ColumnLink key={`list-${list.get("id")}`} to={`/lists/${list.get("id")}`} icon='list-ul' text={list.get("title")} />,
|
<ColumnLink key={`list-${list.get("id")}`} to={`/lists/${list.get("id")}`} icon='dot' text={list.get("title")} />,
|
||||||
)}
|
)}
|
||||||
</div>,
|
</div>,
|
||||||
]);
|
]);
|
||||||
@@ -187,7 +187,7 @@ class GettingStarted extends ImmutablePureComponent {
|
|||||||
{listItems}
|
{listItems}
|
||||||
<ColumnSubheading text={intl.formatMessage(messages.settings_subheading)} />
|
<ColumnSubheading text={intl.formatMessage(messages.settings_subheading)} />
|
||||||
{ preferencesLink !== undefined && <ColumnLink icon='cog' text={intl.formatMessage(messages.preferences)} href={preferencesLink} /> }
|
{ preferencesLink !== undefined && <ColumnLink icon='cog' text={intl.formatMessage(messages.preferences)} href={preferencesLink} /> }
|
||||||
<ColumnLink icon='cogs' text={intl.formatMessage(messages.settings)} onClick={openSettings} />
|
<ColumnLink icon='gear' text={intl.formatMessage(messages.settings)} onClick={openSettings} />
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -60,13 +60,13 @@ class GettingStartedMisc extends ImmutablePureComponent {
|
|||||||
<div className='scrollable'>
|
<div className='scrollable'>
|
||||||
<ColumnSubheading text={intl.formatMessage(messages.subheading)} />
|
<ColumnSubheading text={intl.formatMessage(messages.subheading)} />
|
||||||
{signedIn && (<ColumnLink key='favourites' icon='star' text={intl.formatMessage(messages.favourites)} to='/favourites' />)}
|
{signedIn && (<ColumnLink key='favourites' icon='star' text={intl.formatMessage(messages.favourites)} to='/favourites' />)}
|
||||||
{signedIn && (<ColumnLink key='pinned' icon='thumb-tack' text={intl.formatMessage(messages.pins)} to='/pinned' />)}
|
{signedIn && (<ColumnLink key='pinned' icon='push-pin' text={intl.formatMessage(messages.pins)} to='/pinned' />)}
|
||||||
{signedIn && (<ColumnLink key='featured_users' icon='users' text={intl.formatMessage(messages.featured_users)} onClick={this.openFeaturedAccountsModal} />)}
|
{signedIn && (<ColumnLink key='featured_users' icon='users' text={intl.formatMessage(messages.featured_users)} onClick={this.openFeaturedAccountsModal} />)}
|
||||||
{signedIn && (<ColumnLink key='mutes' icon='volume-off' text={intl.formatMessage(messages.mutes)} to='/mutes' />)}
|
{signedIn && (<ColumnLink key='mutes' icon='bell-slash' text={intl.formatMessage(messages.mutes)} to='/mutes' />)}
|
||||||
{signedIn && (<ColumnLink key='blocks' icon='ban' text={intl.formatMessage(messages.blocks)} to='/blocks' />)}
|
{signedIn && (<ColumnLink key='blocks' icon='prohibit' text={intl.formatMessage(messages.blocks)} to='/blocks' />)}
|
||||||
{signedIn && (<ColumnLink key='domain_blocks' icon='minus-circle' text={intl.formatMessage(messages.domain_blocks)} to='/domain_blocks' />)}
|
{signedIn && (<ColumnLink key='domain_blocks' icon='network-slash' text={intl.formatMessage(messages.domain_blocks)} to='/domain_blocks' />)}
|
||||||
<ColumnLink key='shortcuts' icon='question' text={intl.formatMessage(messages.keyboard_shortcuts)} to='/keyboard-shortcuts' />
|
<ColumnLink key='shortcuts' icon='keyboard' text={intl.formatMessage(messages.keyboard_shortcuts)} to='/keyboard-shortcuts' />
|
||||||
{signedIn && (<ColumnLink key='onboarding' icon='hand-o-right' text={intl.formatMessage(messages.show_me_around)} onClick={this.openOnboardingModal} />)}
|
{signedIn && (<ColumnLink key='onboarding' icon='signpost' text={intl.formatMessage(messages.show_me_around)} onClick={this.openOnboardingModal} />)}
|
||||||
</div>
|
</div>
|
||||||
</Column>
|
</Column>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ class HomeTimeline extends PureComponent {
|
|||||||
aria-label={intl.formatMessage(showAnnouncements ? messages.hide_announcements : messages.show_announcements)}
|
aria-label={intl.formatMessage(showAnnouncements ? messages.hide_announcements : messages.show_announcements)}
|
||||||
onClick={this.handleToggleAnnouncementsClick}
|
onClick={this.handleToggleAnnouncementsClick}
|
||||||
>
|
>
|
||||||
<IconWithBadge id='bullhorn' count={unreadAnnouncements} />
|
<IconWithBadge id='megaphone-simple' count={unreadAnnouncements} />
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -193,7 +193,7 @@ class HomeTimeline extends PureComponent {
|
|||||||
return (
|
return (
|
||||||
<Column bindToDocument={!multiColumn} ref={this.setRef} name='home' label={intl.formatMessage(messages.title)}>
|
<Column bindToDocument={!multiColumn} ref={this.setRef} name='home' label={intl.formatMessage(messages.title)}>
|
||||||
<ColumnHeader
|
<ColumnHeader
|
||||||
icon='home'
|
icon='house-line'
|
||||||
active={hasUnread}
|
active={hasUnread}
|
||||||
title={intl.formatMessage(messages.title)}
|
title={intl.formatMessage(messages.title)}
|
||||||
onPin={this.handlePin}
|
onPin={this.handlePin}
|
||||||
|
|||||||
@@ -354,12 +354,12 @@ class InteractionModal extends React.PureComponent {
|
|||||||
|
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case "reply":
|
case "reply":
|
||||||
icon = <Icon id='reply' />;
|
icon = <Icon id='arrow-bend-up-left' />;
|
||||||
title = <FormattedMessage id='interaction_modal.title.reply' defaultMessage="Reply to {name}'s post" values={{ name }} />;
|
title = <FormattedMessage id='interaction_modal.title.reply' defaultMessage="Reply to {name}'s post" values={{ name }} />;
|
||||||
actionDescription = <FormattedMessage id='interaction_modal.description.reply' defaultMessage='With an account on Mastodon, you can respond to this post.' />;
|
actionDescription = <FormattedMessage id='interaction_modal.description.reply' defaultMessage='With an account on Mastodon, you can respond to this post.' />;
|
||||||
break;
|
break;
|
||||||
case "reblog":
|
case "reblog":
|
||||||
icon = <Icon id='retweet' />;
|
icon = <Icon id='rocket-launch' />;
|
||||||
title = <FormattedMessage id='interaction_modal.title.reblog' defaultMessage="Boost {name}'s post" values={{ name }} />;
|
title = <FormattedMessage id='interaction_modal.title.reblog' defaultMessage="Boost {name}'s post" values={{ name }} />;
|
||||||
actionDescription = <FormattedMessage id='interaction_modal.description.reblog' defaultMessage='With an account on Mastodon, you can boost this post to share it with your own followers.' />;
|
actionDescription = <FormattedMessage id='interaction_modal.description.reblog' defaultMessage='With an account on Mastodon, you can boost this post to share it with your own followers.' />;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ class List extends ImmutablePureComponent {
|
|||||||
let button;
|
let button;
|
||||||
|
|
||||||
if (added) {
|
if (added) {
|
||||||
button = <IconButton icon='times' title={intl.formatMessage(messages.remove)} onClick={onRemove} />;
|
button = <IconButton icon='x' title={intl.formatMessage(messages.remove)} onClick={onRemove} />;
|
||||||
} else {
|
} else {
|
||||||
button = <IconButton icon='plus' title={intl.formatMessage(messages.add)} onClick={onAdd} />;
|
button = <IconButton icon='plus' title={intl.formatMessage(messages.add)} onClick={onAdd} />;
|
||||||
}
|
}
|
||||||
@@ -55,7 +55,7 @@ class List extends ImmutablePureComponent {
|
|||||||
<div className='list'>
|
<div className='list'>
|
||||||
<div className='list__wrapper'>
|
<div className='list__wrapper'>
|
||||||
<div className='list__display-name'>
|
<div className='list__display-name'>
|
||||||
<Icon id='list-ul' className='column-link__icon' fixedWidth />
|
<Icon id='dot' className='column-link__icon' fixedWidth />
|
||||||
{list.get("title")}
|
{list.get("title")}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ export default class Account extends ImmutablePureComponent {
|
|||||||
let button;
|
let button;
|
||||||
|
|
||||||
if (added) {
|
if (added) {
|
||||||
button = <IconButton icon='times' title={intl.formatMessage(messages.remove)} onClick={onRemove} />;
|
button = <IconButton icon='x' title={intl.formatMessage(messages.remove)} onClick={onRemove} />;
|
||||||
} else {
|
} else {
|
||||||
button = <IconButton icon='plus' title={intl.formatMessage(messages.add)} onClick={onAdd} />;
|
button = <IconButton icon='plus' title={intl.formatMessage(messages.add)} onClick={onAdd} />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,8 +55,8 @@ export default class Search extends PureComponent {
|
|||||||
</label>
|
</label>
|
||||||
|
|
||||||
<div role='button' tabIndex={0} className='search__icon' onClick={this.handleClear}>
|
<div role='button' tabIndex={0} className='search__icon' onClick={this.handleClear}>
|
||||||
<Icon id='search' className={classNames({ active: !hasValue })} />
|
<Icon id='magnifying-glass' className={classNames({ active: !hasValue })} />
|
||||||
<Icon id='times-circle' aria-label={intl.formatMessage(messages.search)} className={classNames({ active: hasValue })} />
|
<Icon id='x' aria-label={intl.formatMessage(messages.search)} className={classNames({ active: hasValue })} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ class ListTimeline extends PureComponent {
|
|||||||
return (
|
return (
|
||||||
<Column bindToDocument={!multiColumn} ref={this.setRef} label={title}>
|
<Column bindToDocument={!multiColumn} ref={this.setRef} label={title}>
|
||||||
<ColumnHeader
|
<ColumnHeader
|
||||||
icon='list-ul'
|
icon='dot'
|
||||||
active={hasUnread}
|
active={hasUnread}
|
||||||
title={title}
|
title={title}
|
||||||
onPin={this.handlePin}
|
onPin={this.handlePin}
|
||||||
@@ -190,13 +190,15 @@ class ListTimeline extends PureComponent {
|
|||||||
pinned={pinned}
|
pinned={pinned}
|
||||||
multiColumn={multiColumn}
|
multiColumn={multiColumn}
|
||||||
>
|
>
|
||||||
<div className='column-settings__row column-header__links'>
|
<div className='column-settings__row column-header__links column-header__button-row'>
|
||||||
<button type='button' className='text-btn column-header__setting-btn' tabIndex={0} onClick={this.handleEditClick}>
|
<button type='button' className='text-btn column-header__setting-btn' tabIndex={0} onClick={this.handleEditClick}>
|
||||||
<Icon id='pencil' /> <FormattedMessage id='lists.edit' defaultMessage='Edit list' />
|
<Icon id='pencil-simple-line' />
|
||||||
|
<FormattedMessage id='lists.edit' defaultMessage='Edit list' />
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button type='button' className='text-btn column-header__setting-btn' tabIndex={0} onClick={this.handleDeleteClick}>
|
<button type='button' className='text-btn column-header__setting-btn' tabIndex={0} onClick={this.handleDeleteClick}>
|
||||||
<Icon id='trash' /> <FormattedMessage id='lists.delete' defaultMessage='Delete list' />
|
<Icon id='trash' />
|
||||||
|
<FormattedMessage id='lists.delete' defaultMessage='Delete list' />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ class NewListForm extends PureComponent {
|
|||||||
|
|
||||||
<IconButton
|
<IconButton
|
||||||
disabled={disabled || !value}
|
disabled={disabled || !value}
|
||||||
icon='plus'
|
icon='list-plus'
|
||||||
title={title}
|
title={title}
|
||||||
onClick={this.handleClick}
|
onClick={this.handleClick}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ class Lists extends ImmutablePureComponent {
|
|||||||
const emptyMessage = <FormattedMessage id='empty_column.lists' defaultMessage="You don't have any lists yet. When you create one, it will show up here." />;
|
const emptyMessage = <FormattedMessage id='empty_column.lists' defaultMessage="You don't have any lists yet. When you create one, it will show up here." />;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Column bindToDocument={!multiColumn} icon='bars' heading={intl.formatMessage(messages.heading)}>
|
<Column bindToDocument={!multiColumn} icon='list' heading={intl.formatMessage(messages.heading)}>
|
||||||
<ColumnBackButtonSlim />
|
<ColumnBackButtonSlim />
|
||||||
|
|
||||||
<NewListForm />
|
<NewListForm />
|
||||||
@@ -76,7 +76,7 @@ class Lists extends ImmutablePureComponent {
|
|||||||
bindToDocument={!multiColumn}
|
bindToDocument={!multiColumn}
|
||||||
>
|
>
|
||||||
{lists.map(list =>
|
{lists.map(list =>
|
||||||
<ColumnLink key={list.get("id")} to={`/lists/${list.get("id")}`} icon='list-ul' text={list.get("title")} />,
|
<ColumnLink key={list.get("id")} to={`/lists/${list.get("id")}`} icon='dot' text={list.get("title")} />,
|
||||||
)}
|
)}
|
||||||
</ScrollableList>
|
</ScrollableList>
|
||||||
|
|
||||||
|
|||||||
@@ -37,28 +37,28 @@ class LocalSettingsNavigation extends PureComponent {
|
|||||||
active={index === 0}
|
active={index === 0}
|
||||||
index={0}
|
index={0}
|
||||||
onNavigate={onNavigate}
|
onNavigate={onNavigate}
|
||||||
icon='cogs'
|
icon='gear'
|
||||||
title={intl.formatMessage(messages.general)}
|
title={intl.formatMessage(messages.general)}
|
||||||
/>
|
/>
|
||||||
<LocalSettingsNavigationItem
|
<LocalSettingsNavigationItem
|
||||||
active={index === 1}
|
active={index === 1}
|
||||||
index={1}
|
index={1}
|
||||||
onNavigate={onNavigate}
|
onNavigate={onNavigate}
|
||||||
icon='pencil'
|
icon='pencil-simple-line'
|
||||||
title={intl.formatMessage(messages.compose)}
|
title={intl.formatMessage(messages.compose)}
|
||||||
/>
|
/>
|
||||||
<LocalSettingsNavigationItem
|
<LocalSettingsNavigationItem
|
||||||
active={index === 2}
|
active={index === 2}
|
||||||
index={2}
|
index={2}
|
||||||
onNavigate={onNavigate}
|
onNavigate={onNavigate}
|
||||||
textIcon='CW'
|
icon='warning'
|
||||||
title={intl.formatMessage(messages.content_warnings)}
|
title={intl.formatMessage(messages.content_warnings)}
|
||||||
/>
|
/>
|
||||||
<LocalSettingsNavigationItem
|
<LocalSettingsNavigationItem
|
||||||
active={index === 3}
|
active={index === 3}
|
||||||
index={3}
|
index={3}
|
||||||
onNavigate={onNavigate}
|
onNavigate={onNavigate}
|
||||||
icon='angle-double-up'
|
icon='caret-circle-double-up'
|
||||||
title={intl.formatMessage(messages.collapsed)}
|
title={intl.formatMessage(messages.collapsed)}
|
||||||
/>
|
/>
|
||||||
<LocalSettingsNavigationItem
|
<LocalSettingsNavigationItem
|
||||||
@@ -73,7 +73,7 @@ class LocalSettingsNavigation extends PureComponent {
|
|||||||
className='close'
|
className='close'
|
||||||
index={5}
|
index={5}
|
||||||
onNavigate={onClose}
|
onNavigate={onClose}
|
||||||
icon='times'
|
icon='x'
|
||||||
title={intl.formatMessage(messages.close)}
|
title={intl.formatMessage(messages.close)}
|
||||||
/>
|
/>
|
||||||
</nav>
|
</nav>
|
||||||
|
|||||||
@@ -66,42 +66,42 @@ class FilterBar extends PureComponent {
|
|||||||
onClick={this.onClick("mention")}
|
onClick={this.onClick("mention")}
|
||||||
title={intl.formatMessage(tooltips.mentions)}
|
title={intl.formatMessage(tooltips.mentions)}
|
||||||
>
|
>
|
||||||
<Icon id='reply-all' fixedWidth />
|
<Icon id={selectedFilter === "mention" ? "arrow-bend-double-up-left-filled" : "arrow-bend-double-up-left"} fixedWidth />
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
className={selectedFilter === "favourite" ? "active" : ""}
|
className={selectedFilter === "favourite" ? "active" : ""}
|
||||||
onClick={this.onClick("favourite")}
|
onClick={this.onClick("favourite")}
|
||||||
title={intl.formatMessage(tooltips.favourites)}
|
title={intl.formatMessage(tooltips.favourites)}
|
||||||
>
|
>
|
||||||
<Icon id='star' fixedWidth />
|
<Icon id={selectedFilter === "favourite" ? "star-filled" : "star"} fixedWidth />
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
className={selectedFilter === "reblog" ? "active" : ""}
|
className={selectedFilter === "reblog" ? "active" : ""}
|
||||||
onClick={this.onClick("reblog")}
|
onClick={this.onClick("reblog")}
|
||||||
title={intl.formatMessage(tooltips.boosts)}
|
title={intl.formatMessage(tooltips.boosts)}
|
||||||
>
|
>
|
||||||
<Icon id='retweet' fixedWidth />
|
<Icon id={selectedFilter === "reblog" ? "rocket-launch-filled" : "rocket-launch"} fixedWidth />
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
className={selectedFilter === "poll" ? "active" : ""}
|
className={selectedFilter === "poll" ? "active" : ""}
|
||||||
onClick={this.onClick("poll")}
|
onClick={this.onClick("poll")}
|
||||||
title={intl.formatMessage(tooltips.polls)}
|
title={intl.formatMessage(tooltips.polls)}
|
||||||
>
|
>
|
||||||
<Icon id='tasks' fixedWidth />
|
<Icon id={selectedFilter === "poll" ? "chart-bar-horizontal-filled" : "chart-bar-horizontal"} fixedWidth />
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
className={selectedFilter === "status" ? "active" : ""}
|
className={selectedFilter === "status" ? "active" : ""}
|
||||||
onClick={this.onClick("status")}
|
onClick={this.onClick("status")}
|
||||||
title={intl.formatMessage(tooltips.statuses)}
|
title={intl.formatMessage(tooltips.statuses)}
|
||||||
>
|
>
|
||||||
<Icon id='home' fixedWidth />
|
<Icon id={selectedFilter === "status" ? "chat-circle-dots-filled" : "chat-circle-dots"} fixedWidth />
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
className={selectedFilter === "follow" ? "active" : ""}
|
className={selectedFilter === "follow" ? "active" : ""}
|
||||||
onClick={this.onClick("follow")}
|
onClick={this.onClick("follow")}
|
||||||
title={intl.formatMessage(tooltips.follows)}
|
title={intl.formatMessage(tooltips.follows)}
|
||||||
>
|
>
|
||||||
<Icon id='user-plus' fixedWidth />
|
<Icon id={selectedFilter === "follow" ? "user-plus-filled" : "user-plus"} fixedWidth />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ class FollowRequest extends ImmutablePureComponent {
|
|||||||
|
|
||||||
<div className='account__relationship'>
|
<div className='account__relationship'>
|
||||||
<IconButton title={intl.formatMessage(messages.authorize)} icon='check' onClick={onAuthorize} />
|
<IconButton title={intl.formatMessage(messages.authorize)} icon='check' onClick={onAuthorize} />
|
||||||
<IconButton title={intl.formatMessage(messages.reject)} icon='times' onClick={onReject} />
|
<IconButton title={intl.formatMessage(messages.reject)} icon='x' onClick={onReject} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+2
-2
@@ -38,11 +38,11 @@ class NotificationsPermissionBanner extends PureComponent {
|
|||||||
return (
|
return (
|
||||||
<div className='notifications-permission-banner'>
|
<div className='notifications-permission-banner'>
|
||||||
<div className='notifications-permission-banner__close'>
|
<div className='notifications-permission-banner__close'>
|
||||||
<IconButton icon='times' onClick={this.handleClose} title={intl.formatMessage(messages.close)} />
|
<IconButton icon='x' onClick={this.handleClose} title={intl.formatMessage(messages.close)} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h2><FormattedMessage id='notifications_permission_banner.title' defaultMessage='Never miss a thing' /></h2>
|
<h2><FormattedMessage id='notifications_permission_banner.title' defaultMessage='Never miss a thing' /></h2>
|
||||||
<p><FormattedMessage id='notifications_permission_banner.how_to_control' defaultMessage="To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled." values={{ icon: <Icon id='sliders' /> }} /></p>
|
<p><FormattedMessage id='notifications_permission_banner.how_to_control' defaultMessage="To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled." values={{ icon: <Icon id='sliders-horizontal' /> }} /></p>
|
||||||
<Button onClick={this.handleClick}><FormattedMessage id='notifications_permission_banner.enable' defaultMessage='Enable desktop notifications' /></Button>
|
<Button onClick={this.handleClick}><FormattedMessage id='notifications_permission_banner.enable' defaultMessage='Enable desktop notifications' /></Button>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -297,7 +297,7 @@ class Notifications extends PureComponent {
|
|||||||
onClick={this.handleMarkAsRead}
|
onClick={this.handleMarkAsRead}
|
||||||
className='column-header__button'
|
className='column-header__button'
|
||||||
>
|
>
|
||||||
<Icon id='check' />
|
<Icon id='checks' />
|
||||||
</button>,
|
</button>,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -175,10 +175,10 @@ class Footer extends ImmutablePureComponent {
|
|||||||
let replyIcon, replyTitle;
|
let replyIcon, replyTitle;
|
||||||
|
|
||||||
if (status.get("in_reply_to_id", null) === null) {
|
if (status.get("in_reply_to_id", null) === null) {
|
||||||
replyIcon = "reply";
|
replyIcon = "arrow-bend-up-left";
|
||||||
replyTitle = intl.formatMessage(messages.reply);
|
replyTitle = intl.formatMessage(messages.reply);
|
||||||
} else {
|
} else {
|
||||||
replyIcon = "reply-all";
|
replyIcon = "arrow-bend-double-up-left";
|
||||||
replyTitle = intl.formatMessage(messages.replyAll);
|
replyTitle = intl.formatMessage(messages.replyAll);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -220,9 +220,9 @@ class Footer extends ImmutablePureComponent {
|
|||||||
return (
|
return (
|
||||||
<div className='picture-in-picture__footer'>
|
<div className='picture-in-picture__footer'>
|
||||||
{replyButton}
|
{replyButton}
|
||||||
<IconButton className={classNames("status__action-bar-button", { reblogPrivate })} disabled={!publicStatus && !reblogPrivate} active={status.get("reblogged")} title={reblogTitle} icon='retweet' onClick={this.handleReblogClick} counter={status.get("reblogs_count")} />
|
<IconButton className={classNames("status__action-bar-button", { reblogPrivate })} disabled={!publicStatus && !reblogPrivate} active={status.get("reblogged")} title={reblogTitle} icon='rocket-launch' onClick={this.handleReblogClick} counter={status.get("reblogs_count")} />
|
||||||
<IconButton className='status__action-bar-button star-icon' animate active={status.get("favourited")} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} counter={status.get("favourites_count")} />
|
<IconButton className='status__action-bar-button star-icon' animate active={status.get("favourited")} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} counter={status.get("favourites_count")} />
|
||||||
{withOpenButton && <IconButton className='status__action-bar-button' title={intl.formatMessage(messages.open)} icon='external-link' onClick={this.handleOpenClick} href={status.get("url")} />}
|
{withOpenButton && <IconButton className='status__action-bar-button' title={intl.formatMessage(messages.open)} icon='arrow-square-out' onClick={this.handleOpenClick} href={status.get("url")} />}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ class Header extends ImmutablePureComponent {
|
|||||||
<DisplayName account={account} />
|
<DisplayName account={account} />
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<IconButton icon='times' onClick={onClose} title={intl.formatMessage(messages.close)} />
|
<IconButton icon='x' onClick={onClose} title={intl.formatMessage(messages.close)} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class PinnedStatuses extends ImmutablePureComponent {
|
|||||||
const { intl, statusIds, hasMore, multiColumn } = this.props;
|
const { intl, statusIds, hasMore, multiColumn } = this.props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Column bindToDocument={!multiColumn} icon='thumb-tack' heading={intl.formatMessage(messages.heading)} ref={this.setRef}>
|
<Column bindToDocument={!multiColumn} icon='push-pin' heading={intl.formatMessage(messages.heading)} ref={this.setRef}>
|
||||||
<ColumnBackButtonSlim />
|
<ColumnBackButtonSlim />
|
||||||
<StatusList
|
<StatusList
|
||||||
statusIds={statusIds}
|
statusIds={statusIds}
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ class PublicTimeline extends PureComponent {
|
|||||||
return (
|
return (
|
||||||
<Column bindToDocument={!multiColumn} ref={this.setRef} name='federated' label={intl.formatMessage(messages.title)}>
|
<Column bindToDocument={!multiColumn} ref={this.setRef} name='federated' label={intl.formatMessage(messages.title)}>
|
||||||
<ColumnHeader
|
<ColumnHeader
|
||||||
icon='globe'
|
icon='planet'
|
||||||
active={hasUnread}
|
active={hasUnread}
|
||||||
title={intl.formatMessage(messages.title)}
|
title={intl.formatMessage(messages.title)}
|
||||||
onPin={this.handlePin}
|
onPin={this.handlePin}
|
||||||
|
|||||||
@@ -79,13 +79,13 @@ class Reblogs extends ImmutablePureComponent {
|
|||||||
return (
|
return (
|
||||||
<Column ref={this.setRef}>
|
<Column ref={this.setRef}>
|
||||||
<ColumnHeader
|
<ColumnHeader
|
||||||
icon='retweet'
|
icon='rocket-launch'
|
||||||
title={intl.formatMessage(messages.heading)}
|
title={intl.formatMessage(messages.heading)}
|
||||||
onClick={this.handleHeaderClick}
|
onClick={this.handleHeaderClick}
|
||||||
showBackButton
|
showBackButton
|
||||||
multiColumn={multiColumn}
|
multiColumn={multiColumn}
|
||||||
extraButton={(
|
extraButton={(
|
||||||
<button className='column-header__button' title={intl.formatMessage(messages.refresh)} aria-label={intl.formatMessage(messages.refresh)} onClick={this.handleRefresh}><Icon id='refresh' /></button>
|
<button className='column-header__button' title={intl.formatMessage(messages.refresh)} aria-label={intl.formatMessage(messages.refresh)} onClick={this.handleRefresh}><Icon id='arrows-clockwise' /></button>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -219,14 +219,22 @@ class ActionBar extends PureComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='detailed-status__action-bar'>
|
<div className='status__action-bar detailed-status__action-bar'>
|
||||||
<div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.reply)} icon={status.get("in_reply_to_id", null) === null ? "reply" : "reply-all"} onClick={this.handleReplyClick} /></div>
|
<div className='detailed-status__button'>
|
||||||
<div className='detailed-status__button'><IconButton className={classNames({ reblogPrivate })} disabled={!publicStatus && !reblogPrivate} active={status.get("reblogged")} title={reblogTitle} icon='retweet' onClick={this.handleReblogClick} /></div>
|
<IconButton title={intl.formatMessage(messages.reply)} icon={status.get("in_reply_to_id", null) === null ? "arrow-bend-up-left" : "arrow-bend-double-up-left"} onClick={this.handleReplyClick} />
|
||||||
<div className='detailed-status__button'><IconButton className='star-icon' animate active={status.get("favourited")} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} /></div>
|
</div>
|
||||||
<div className='detailed-status__button'><IconButton className='bookmark-icon' disabled={!signedIn} active={status.get("bookmarked")} title={intl.formatMessage(messages.bookmark)} icon='bookmark' onClick={this.handleBookmarkClick} /></div>
|
<div className='detailed-status__button'>
|
||||||
|
<IconButton className={classNames({ reblogPrivate })} disabled={!publicStatus && !reblogPrivate} active={status.get("reblogged")} title={reblogTitle} icon={status.get("reblogged") ? "rocket-launch-filled" : "rocket-launch"} onClick={this.handleReblogClick} />
|
||||||
|
</div>
|
||||||
|
<div className='detailed-status__button'>
|
||||||
|
<IconButton className='star-icon' animate active={status.get("favourited")} title={intl.formatMessage(messages.favourite)} icon={status.get("favourited") ? "star-filled" : "star"} onClick={this.handleFavouriteClick} />
|
||||||
|
</div>
|
||||||
|
<div className='detailed-status__button'>
|
||||||
|
<IconButton className='bookmark-icon' disabled={!signedIn} active={status.get("bookmarked")} title={intl.formatMessage(messages.bookmark)} icon={status.get("bookmarked") ? "bookmark-filled" : "bookmark"} onClick={this.handleBookmarkClick} />
|
||||||
|
</div>
|
||||||
|
|
||||||
<div className='detailed-status__action-bar-dropdown'>
|
<div className='detailed-status__action-bar-dropdown'>
|
||||||
<DropdownMenuContainer size={18} icon='ellipsis-h' items={menu} direction='left' title={intl.formatMessage(messages.more)} />
|
<DropdownMenuContainer size={18} icon='dots-three-outline' items={menu} direction='left' title={intl.formatMessage(messages.more)} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -213,7 +213,7 @@ export default class Card extends PureComponent {
|
|||||||
<div className='status-card__actions'>
|
<div className='status-card__actions'>
|
||||||
<div>
|
<div>
|
||||||
<button onClick={this.handleEmbedClick}><Icon id={iconVariant} /></button>
|
<button onClick={this.handleEmbedClick}><Icon id={iconVariant} /></button>
|
||||||
{horizontal && <a href={card.get("url")} target='_blank' rel='noopener noreferrer'><Icon id='external-link' /></a>}
|
{horizontal && <a href={card.get("url")} target='_blank' rel='noopener noreferrer'><Icon id='arrow-square-out' /></a>}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ class DetailedStatus extends ImmutablePureComponent {
|
|||||||
|
|
||||||
let applicationLink = "";
|
let applicationLink = "";
|
||||||
let reblogLink = "";
|
let reblogLink = "";
|
||||||
let reblogIcon = "retweet";
|
let reblogIcon = "rocket-launch";
|
||||||
let favouriteLink = "";
|
let favouriteLink = "";
|
||||||
let edited = "";
|
let edited = "";
|
||||||
|
|
||||||
@@ -255,9 +255,9 @@ class DetailedStatus extends ImmutablePureComponent {
|
|||||||
const visibilityLink = <> · <VisibilityIcon visibility={status.get("visibility")} /></>;
|
const visibilityLink = <> · <VisibilityIcon visibility={status.get("visibility")} /></>;
|
||||||
|
|
||||||
if (status.get("visibility") === "direct") {
|
if (status.get("visibility") === "direct") {
|
||||||
reblogIcon = "envelope";
|
reblogIcon = "at";
|
||||||
} else if (status.get("visibility") === "private") {
|
} else if (status.get("visibility") === "private") {
|
||||||
reblogIcon = "lock";
|
reblogIcon = "lock-simple";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!["unlisted", "public"].includes(status.get("visibility"))) {
|
if (!["unlisted", "public"].includes(status.get("visibility"))) {
|
||||||
|
|||||||
@@ -721,7 +721,7 @@ class Status extends ImmutablePureComponent {
|
|||||||
return (
|
return (
|
||||||
<Column bindToDocument={!multiColumn} ref={this.setColumnRef} label={intl.formatMessage(messages.detailedStatus)}>
|
<Column bindToDocument={!multiColumn} ref={this.setColumnRef} label={intl.formatMessage(messages.detailedStatus)}>
|
||||||
<ColumnHeader
|
<ColumnHeader
|
||||||
icon='comment'
|
icon='chat-circle-text'
|
||||||
title={intl.formatMessage(messages.tootHeading)}
|
title={intl.formatMessage(messages.tootHeading)}
|
||||||
onClick={this.handleHeaderClick}
|
onClick={this.handleHeaderClick}
|
||||||
showBackButton
|
showBackButton
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ class SubscribedLanguagesModal extends ImmutablePureComponent {
|
|||||||
return (
|
return (
|
||||||
<div className='modal-root__modal report-dialog-modal'>
|
<div className='modal-root__modal report-dialog-modal'>
|
||||||
<div className='report-modal__target'>
|
<div className='report-modal__target'>
|
||||||
<IconButton className='report-modal__close' title={intl.formatMessage(messages.close)} icon='times' onClick={onClose} size={20} />
|
<IconButton className='report-modal__close' title={intl.formatMessage(messages.close)} icon='x' onClick={onClose} size={20} />
|
||||||
<FormattedMessage id='subscribed_languages.target' defaultMessage='Change subscribed languages for {target}' values={{ target: <strong>{acct}</strong> }} />
|
<FormattedMessage id='subscribed_languages.target' defaultMessage='Change subscribed languages for {target}' values={{ target: <strong>{acct}</strong> }} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ class BoostModal extends ImmutablePureComponent {
|
|||||||
{ missingMediaDescription ?
|
{ missingMediaDescription ?
|
||||||
<FormattedMessage id='boost_modal.missing_description' defaultMessage='This toot contains some media without description' />
|
<FormattedMessage id='boost_modal.missing_description' defaultMessage='This toot contains some media without description' />
|
||||||
:
|
:
|
||||||
<FormattedMessage id='boost_modal.combo' defaultMessage='You can press {combo} to skip this next time' values={{ combo: <span>Shift + <Icon id='retweet' /></span> }} />
|
<FormattedMessage id='boost_modal.combo' defaultMessage='You can press {combo} to skip this next time' values={{ combo: <span>Shift + <Icon id='rocket-launch' /></span> }} />
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ class BundleModalError extends Component {
|
|||||||
return (
|
return (
|
||||||
<div className='modal-root__modal error-modal'>
|
<div className='modal-root__modal error-modal'>
|
||||||
<div className='error-modal__body'>
|
<div className='error-modal__body'>
|
||||||
<IconButton title={formatMessage(messages.retry)} icon='refresh' onClick={this.handleRetry} size={64} />
|
<IconButton title={formatMessage(messages.retry)} icon='arrows-clockwise' onClick={this.handleRetry} size={64} />
|
||||||
{formatMessage(messages.error)}
|
{formatMessage(messages.error)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ class CompareHistoryModal extends PureComponent {
|
|||||||
return (
|
return (
|
||||||
<div className='modal-root__modal compare-history-modal'>
|
<div className='modal-root__modal compare-history-modal'>
|
||||||
<div className='report-modal__target'>
|
<div className='report-modal__target'>
|
||||||
<IconButton className='report-modal__close' icon='times' onClick={onClose} size={20} />
|
<IconButton className='report-modal__close' icon='x' onClick={onClose} size={20} />
|
||||||
{label}
|
{label}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -51,12 +51,12 @@ class DeprecatedSettingsModal extends PureComponent {
|
|||||||
values={{
|
values={{
|
||||||
app_settings: (
|
app_settings: (
|
||||||
<strong className='deprecated-settings-label'>
|
<strong className='deprecated-settings-label'>
|
||||||
<Icon id='cogs' /> <FormattedMessage id='navigation_bar.app_settings' defaultMessage='App settings' />
|
<Icon id='gear' /> <FormattedMessage id='navigation_bar.app_settings' defaultMessage='App settings' />
|
||||||
</strong>
|
</strong>
|
||||||
),
|
),
|
||||||
preferences: (
|
preferences: (
|
||||||
<strong className='deprecated-settings-label'>
|
<strong className='deprecated-settings-label'>
|
||||||
<Icon id='cog' /> <FormattedMessage id='navigation_bar.preferences' defaultMessage='Preferences' />
|
<Icon id='gear' /> <FormattedMessage id='navigation_bar.preferences' defaultMessage='Preferences' />
|
||||||
</strong>
|
</strong>
|
||||||
),
|
),
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -596,9 +596,9 @@ class DoodleModal extends ImmutablePureComponent {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className='doodle-toolbar'>
|
<div className='doodle-toolbar'>
|
||||||
<IconButton icon='pencil' title='Draw' label='Draw' onClick={this.setModeDraw} size={18} active={this.mode === "draw"} inverted />
|
<IconButton icon='pencil-simple-line' title='Draw' label='Draw' onClick={this.setModeDraw} size={18} active={this.mode === "draw"} inverted />
|
||||||
<IconButton icon='bath' title='Fill' label='Fill' onClick={this.setModeFill} size={18} active={this.mode === "fill"} inverted />
|
<IconButton icon='paint-bucket' title='Fill' label='Fill' onClick={this.setModeFill} size={18} active={this.mode === "fill"} inverted />
|
||||||
<IconButton icon='undo' title='Undo' label='Undo' onClick={this.undo} size={18} inverted />
|
<IconButton icon='arrow-counter-clockwise' title='Undo' label='Undo' onClick={this.undo} size={18} inverted />
|
||||||
<IconButton icon='trash' title='Clear' label='Clear' onClick={this.handleClearBtn} size={18} inverted />
|
<IconButton icon='trash' title='Clear' label='Clear' onClick={this.handleClearBtn} size={18} inverted />
|
||||||
</div>
|
</div>
|
||||||
<div className='doodle-palette'>
|
<div className='doodle-palette'>
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ class EmbedModal extends ImmutablePureComponent {
|
|||||||
return (
|
return (
|
||||||
<div className='modal-root__modal report-modal embed-modal'>
|
<div className='modal-root__modal report-modal embed-modal'>
|
||||||
<div className='report-modal__target'>
|
<div className='report-modal__target'>
|
||||||
<IconButton className='media-modal__close' title={intl.formatMessage(messages.close)} icon='times' onClick={onClose} size={16} />
|
<IconButton className='media-modal__close' title={intl.formatMessage(messages.close)} icon='x' onClick={onClose} size={16} />
|
||||||
<FormattedMessage id='status.embed' defaultMessage='Embed' />
|
<FormattedMessage id='status.embed' defaultMessage='Embed' />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ class FilterModal extends ImmutablePureComponent {
|
|||||||
return (
|
return (
|
||||||
<div className='modal-root__modal report-dialog-modal'>
|
<div className='modal-root__modal report-dialog-modal'>
|
||||||
<div className='report-modal__target'>
|
<div className='report-modal__target'>
|
||||||
<IconButton className='report-modal__close' title={intl.formatMessage(messages.close)} icon='times' onClick={onClose} size={20} />
|
<IconButton className='report-modal__close' title={intl.formatMessage(messages.close)} icon='x' onClick={onClose} size={20} />
|
||||||
<FormattedMessage id='filter_modal.title.status' defaultMessage='Filter a post' />
|
<FormattedMessage id='filter_modal.title.status' defaultMessage='Filter a post' />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -311,7 +311,7 @@ class FocalPointModal extends ImmutablePureComponent {
|
|||||||
return (
|
return (
|
||||||
<div className='modal-root__modal report-modal' style={{ maxWidth: 960 }}>
|
<div className='modal-root__modal report-modal' style={{ maxWidth: 960 }}>
|
||||||
<div className='report-modal__target'>
|
<div className='report-modal__target'>
|
||||||
<IconButton className='report-modal__close' title={intl.formatMessage(messages.close)} icon='times' onClick={onClose} size={20} />
|
<IconButton className='report-modal__close' title={intl.formatMessage(messages.close)} icon='x' onClick={onClose} size={20} />
|
||||||
<FormattedMessage id='upload_modal.edit_media' defaultMessage='Edit media' />
|
<FormattedMessage id='upload_modal.edit_media' defaultMessage='Edit media' />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ class Header extends PureComponent {
|
|||||||
if (signedIn) {
|
if (signedIn) {
|
||||||
content = (
|
content = (
|
||||||
<>
|
<>
|
||||||
{location.pathname !== "/search" && <Link to='/search' className='button button-secondary' aria-label={intl.formatMessage(messages.search)}><Icon id='search' /></Link>}
|
{location.pathname !== "/search" && <Link to='/search' className='button button-secondary' aria-label={intl.formatMessage(messages.search)}><Icon id='magnifying-glass' /></Link>}
|
||||||
{location.pathname !== "/publish" && <Link to='/publish' className='button button-secondary'><FormattedMessage id='compose_form.publish_form' defaultMessage='New post' /></Link>}
|
{location.pathname !== "/publish" && <Link to='/publish' className='button button-secondary'><FormattedMessage id='compose_form.publish_form' defaultMessage='New post' /></Link>}
|
||||||
<Account />
|
<Account />
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ class ImageModal extends PureComponent {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className={navigationClassName}>
|
<div className={navigationClassName}>
|
||||||
<IconButton className='media-modal__close' title={intl.formatMessage(messages.close)} icon='times' onClick={onClose} size={40} />
|
<IconButton className='media-modal__close' title={intl.formatMessage(messages.close)} icon='x' onClick={onClose} size={40} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ class ListPanel extends ImmutablePureComponent {
|
|||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
{lists.map(list => (
|
{lists.map(list => (
|
||||||
<ColumnLink icon='list-ul' key={list.get("id")} strict text={list.get("title")} to={`/lists/${list.get("id")}`} transparent />
|
<ColumnLink icon='dot' key={list.get("id")} strict text={list.get("title")} to={`/lists/${list.get("id")}`} transparent />
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -141,8 +141,8 @@ class MediaModal extends ImmutablePureComponent {
|
|||||||
|
|
||||||
const index = this.getIndex();
|
const index = this.getIndex();
|
||||||
|
|
||||||
const leftNav = media.size > 1 && <button tabIndex={0} className='media-modal__nav media-modal__nav--left' onClick={this.handlePrevClick} aria-label={intl.formatMessage(messages.previous)}><Icon id='chevron-left' fixedWidth /></button>;
|
const leftNav = media.size > 1 && <button tabIndex={0} className='media-modal__nav media-modal__nav--left' onClick={this.handlePrevClick} aria-label={intl.formatMessage(messages.previous)}><Icon id='caret-left' fixedWidth /></button>;
|
||||||
const rightNav = media.size > 1 && <button tabIndex={0} className='media-modal__nav media-modal__nav--right' onClick={this.handleNextClick} aria-label={intl.formatMessage(messages.next)}><Icon id='chevron-right' fixedWidth /></button>;
|
const rightNav = media.size > 1 && <button tabIndex={0} className='media-modal__nav media-modal__nav--right' onClick={this.handleNextClick} aria-label={intl.formatMessage(messages.next)}><Icon id='caret-right' fixedWidth /></button>;
|
||||||
|
|
||||||
const content = media.map((image) => {
|
const content = media.map((image) => {
|
||||||
const width = image.getIn(["meta", "original", "width"]) || null;
|
const width = image.getIn(["meta", "original", "width"]) || null;
|
||||||
@@ -244,7 +244,7 @@ class MediaModal extends ImmutablePureComponent {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className={navigationClassName}>
|
<div className={navigationClassName}>
|
||||||
<IconButton className='media-modal__close' title={intl.formatMessage(messages.close)} icon='times' onClick={onClose} size={40} />
|
<IconButton className='media-modal__close' title={intl.formatMessage(messages.close)} icon='x' onClick={onClose} size={40} />
|
||||||
|
|
||||||
{leftNav}
|
{leftNav}
|
||||||
{rightNav}
|
{rightNav}
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ class NavigationPanel extends Component {
|
|||||||
|
|
||||||
{signedIn && (
|
{signedIn && (
|
||||||
<>
|
<>
|
||||||
<ColumnLink transparent to='/home' icon='home' text={intl.formatMessage(messages.home)} />
|
<ColumnLink transparent to='/home' icon='house-line' text={intl.formatMessage(messages.home)} />
|
||||||
<ColumnLink transparent to='/notifications' icon={<NotificationsCounterIcon className='column-link__icon' />} text={intl.formatMessage(messages.notifications)} />
|
<ColumnLink transparent to='/notifications' icon={<NotificationsCounterIcon className='column-link__icon' />} text={intl.formatMessage(messages.notifications)} />
|
||||||
<FollowRequestsColumnLink />
|
<FollowRequestsColumnLink />
|
||||||
</>
|
</>
|
||||||
@@ -80,11 +80,11 @@ class NavigationPanel extends Component {
|
|||||||
{trendsEnabled ? (
|
{trendsEnabled ? (
|
||||||
<ColumnLink transparent to='/explore' icon='hashtag' text={intl.formatMessage(messages.explore)} />
|
<ColumnLink transparent to='/explore' icon='hashtag' text={intl.formatMessage(messages.explore)} />
|
||||||
) : (
|
) : (
|
||||||
<ColumnLink transparent to='/search' icon='search' text={intl.formatMessage(messages.search)} />
|
<ColumnLink transparent to='/search' icon='magnifying-glass' text={intl.formatMessage(messages.search)} />
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{(signedIn || timelinePreview) && (
|
{(signedIn || timelinePreview) && (
|
||||||
<ColumnLink transparent to='/public/local' isActive={this.isFirehoseActive} icon='globe' text={intl.formatMessage(messages.firehose)} />
|
<ColumnLink transparent to='/public/local' isActive={this.isFirehoseActive} icon='planet' text={intl.formatMessage(messages.firehose)} />
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{!signedIn && (
|
{!signedIn && (
|
||||||
@@ -97,15 +97,15 @@ class NavigationPanel extends Component {
|
|||||||
{signedIn && (
|
{signedIn && (
|
||||||
<>
|
<>
|
||||||
<ColumnLink transparent to='/conversations' icon='at' text={intl.formatMessage(messages.direct)} />
|
<ColumnLink transparent to='/conversations' icon='at' text={intl.formatMessage(messages.direct)} />
|
||||||
<ColumnLink transparent to='/bookmarks' icon='bookmark' text={intl.formatMessage(messages.bookmarks)} />
|
<ColumnLink transparent to='/bookmarks' icon='bookmarks' text={intl.formatMessage(messages.bookmarks)} />
|
||||||
<ColumnLink transparent to='/favourites' icon='star' text={intl.formatMessage(messages.favourites)} />
|
<ColumnLink transparent to='/favourites' icon='star' text={intl.formatMessage(messages.favourites)} />
|
||||||
<ColumnLink transparent to='/lists' icon='list-ul' text={intl.formatMessage(messages.lists)} />
|
<ColumnLink transparent to='/lists' icon='list' text={intl.formatMessage(messages.lists)} />
|
||||||
|
|
||||||
<ListPanel />
|
<ListPanel />
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
<ColumnLink transparent onClick={onOpenSettings} icon='cogs' text={intl.formatMessage(messages.app_settings)} />
|
<ColumnLink transparent onClick={onOpenSettings} icon='gear' text={intl.formatMessage(messages.app_settings)} />
|
||||||
<ColumnLink transparent onClick={onLogout} icon='sign-out' text={intl.formatMessage(messages.logout)} />
|
<ColumnLink transparent onClick={onLogout} icon='sign-out' text={intl.formatMessage(messages.logout)} />
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ const PageFour = ({ domain, intl }) => (
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<div className='figure non-interactive' style={{ marginBottom: 0 }}><ColumnHeader icon='globe' type={intl.formatMessage(messages.federated_title)} /></div>
|
<div className='figure non-interactive' style={{ marginBottom: 0 }}><ColumnHeader icon='planet' type={intl.formatMessage(messages.federated_title)} /></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ class ReportModal extends ImmutablePureComponent {
|
|||||||
return (
|
return (
|
||||||
<div className='modal-root__modal report-dialog-modal'>
|
<div className='modal-root__modal report-dialog-modal'>
|
||||||
<div className='report-modal__target'>
|
<div className='report-modal__target'>
|
||||||
<IconButton className='report-modal__close' title={intl.formatMessage(messages.close)} icon='times' onClick={onClose} size={20} />
|
<IconButton className='report-modal__close' title={intl.formatMessage(messages.close)} icon='x' onClick={onClose} size={20} />
|
||||||
<FormattedMessage id='report.target' defaultMessage='Report {target}' values={{ target: <strong>{account.get("acct")}</strong> }} />
|
<FormattedMessage id='report.target' defaultMessage='Report {target}' values={{ target: <strong>{account.get("acct")}</strong> }} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -420,12 +420,14 @@ class ZoomableImage extends PureComponent {
|
|||||||
const zoomButtonShouldHide = this.state.navigationHidden || this.props.zoomButtonHidden || this.state.zoomMatrix.rate <= MIN_SCALE ? "media-modal__zoom-button--hidden" : "";
|
const zoomButtonShouldHide = this.state.navigationHidden || this.props.zoomButtonHidden || this.state.zoomMatrix.rate <= MIN_SCALE ? "media-modal__zoom-button--hidden" : "";
|
||||||
const zoomButtonTitle = this.state.zoomState === "compress" ? intl.formatMessage(messages.compress) : intl.formatMessage(messages.expand);
|
const zoomButtonTitle = this.state.zoomState === "compress" ? intl.formatMessage(messages.compress) : intl.formatMessage(messages.expand);
|
||||||
|
|
||||||
|
const zoomButtonIcon = this.state.zoomState === "compress" ? "arrows-in-simple" : "arrows-out-simple";
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<IconButton
|
<IconButton
|
||||||
className={`media-modal__zoom-button ${zoomButtonShouldHide}`}
|
className={`media-modal__zoom-button ${zoomButtonShouldHide}`}
|
||||||
title={zoomButtonTitle}
|
title={zoomButtonTitle}
|
||||||
icon={this.state.zoomState}
|
icon={zoomButtonIcon}
|
||||||
onClick={this.handleZoomClick}
|
onClick={this.handleZoomClick}
|
||||||
size={40}
|
size={40}
|
||||||
style={{
|
style={{
|
||||||
|
|||||||
@@ -639,8 +639,13 @@ class Video extends PureComponent {
|
|||||||
|
|
||||||
<div className='video-player__buttons-bar'>
|
<div className='video-player__buttons-bar'>
|
||||||
<div className='video-player__buttons left'>
|
<div className='video-player__buttons left'>
|
||||||
<button type='button' title={intl.formatMessage(paused ? messages.play : messages.pause)} aria-label={intl.formatMessage(paused ? messages.play : messages.pause)} className='player-button' onClick={this.togglePlay} autoFocus={autoFocus}><Icon id={paused ? "play" : "pause"} fixedWidth /></button>
|
<button type='button' title={intl.formatMessage(paused ? messages.play : messages.pause)} aria-label={intl.formatMessage(paused ? messages.play : messages.pause)} className='player-button' onClick={this.togglePlay} autoFocus={autoFocus}>
|
||||||
<button type='button' title={intl.formatMessage(muted ? messages.unmute : messages.mute)} aria-label={intl.formatMessage(muted ? messages.unmute : messages.mute)} className='player-button' onClick={this.toggleMute}><Icon id={muted ? "volume-off" : "volume-up"} fixedWidth /></button>
|
<Icon id={paused ? "play" : "pause"} fixedWidth />
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button type='button' title={intl.formatMessage(muted ? messages.unmute : messages.mute)} aria-label={intl.formatMessage(muted ? messages.unmute : messages.mute)} className='player-button' onClick={this.toggleMute}>
|
||||||
|
<Icon id={muted ? "speaker-slash" : "speaker-high"} fixedWidth />
|
||||||
|
</button>
|
||||||
|
|
||||||
<div className={classNames("video-player__volume", { active: this.state.hovered })} onMouseDown={this.handleVolumeMouseDown} ref={this.setVolumeRef}>
|
<div className={classNames("video-player__volume", { active: this.state.hovered })} onMouseDown={this.handleVolumeMouseDown} ref={this.setVolumeRef}>
|
||||||
<div className='video-player__volume__current' style={{ width: `${muted ? 0 : volume * 100}%` }} />
|
<div className='video-player__volume__current' style={{ width: `${muted ? 0 : volume * 100}%` }} />
|
||||||
@@ -662,10 +667,10 @@ class Video extends PureComponent {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='video-player__buttons right'>
|
<div className='video-player__buttons right'>
|
||||||
{(!onCloseVideo && !editable && !fullscreen && !this.props.alwaysVisible) && <button type='button' title={intl.formatMessage(messages.hide)} aria-label={intl.formatMessage(messages.hide)} className='player-button' onClick={this.toggleReveal}><Icon id='eye-slash' fixedWidth /></button>}
|
{(!onCloseVideo && !editable && !fullscreen && !this.props.alwaysVisible) && <button type='button' title={intl.formatMessage(messages.hide)} aria-label={intl.formatMessage(messages.hide)} className='player-button' onClick={this.toggleReveal}><Icon id='eye-slash-filled' fixedWidth /></button>}
|
||||||
{(!fullscreen && onOpenVideo) && <button type='button' title={intl.formatMessage(messages.expand)} aria-label={intl.formatMessage(messages.expand)} className='player-button' onClick={this.handleOpenVideo}><Icon id='expand' fixedWidth /></button>}
|
{(!fullscreen && onOpenVideo) && <button type='button' title={intl.formatMessage(messages.expand)} aria-label={intl.formatMessage(messages.expand)} className='player-button' onClick={this.handleOpenVideo}><Icon id='arrows-out-simple' fixedWidth /></button>}
|
||||||
{onCloseVideo && <button type='button' title={intl.formatMessage(messages.close)} aria-label={intl.formatMessage(messages.close)} className='player-button' onClick={this.handleCloseVideo}><Icon id='compress' fixedWidth /></button>}
|
{onCloseVideo && <button type='button' title={intl.formatMessage(messages.close)} aria-label={intl.formatMessage(messages.close)} className='player-button' onClick={this.handleCloseVideo}><Icon id='arrows-in-simple' fixedWidth /></button>}
|
||||||
<button type='button' title={intl.formatMessage(fullscreen ? messages.exit_fullscreen : messages.fullscreen)} aria-label={intl.formatMessage(fullscreen ? messages.exit_fullscreen : messages.fullscreen)} className='player-button' onClick={this.toggleFullscreen}><Icon id={fullscreen ? "compress" : "arrows-alt"} fixedWidth /></button>
|
<button type='button' title={intl.formatMessage(fullscreen ? messages.exit_fullscreen : messages.fullscreen)} aria-label={intl.formatMessage(fullscreen ? messages.exit_fullscreen : messages.fullscreen)} className='player-button' onClick={this.toggleFullscreen}><Icon id={fullscreen ? "arrows-in-simple" : "frame-corners"} fixedWidth /></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
background-size: $size $size;
|
background-size: $size $size;
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin single-column($media, $parent: '&') {
|
@mixin single-column($media, $parent: "&") {
|
||||||
.auto-columns #{$parent} {
|
.auto-columns #{$parent} {
|
||||||
@media #{$media} {
|
@media #{$media} {
|
||||||
@content;
|
@content;
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin limited-single-column($media, $parent: '&') {
|
@mixin limited-single-column($media, $parent: "&") {
|
||||||
.auto-columns #{$parent},
|
.auto-columns #{$parent},
|
||||||
.single-column #{$parent} {
|
.single-column #{$parent} {
|
||||||
@media #{$media} {
|
@media #{$media} {
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin multi-columns($media, $parent: '&') {
|
@mixin multi-columns($media, $parent: "&") {
|
||||||
.auto-columns #{$parent} {
|
.auto-columns #{$parent} {
|
||||||
@media #{$media} {
|
@media #{$media} {
|
||||||
@content;
|
@content;
|
||||||
@@ -43,26 +43,23 @@
|
|||||||
|
|
||||||
@mixin fullwidth-gallery {
|
@mixin fullwidth-gallery {
|
||||||
&.full-width {
|
&.full-width {
|
||||||
margin-left: -14px;
|
margin-left: -10px;
|
||||||
margin-right: -14px;
|
margin-right: -10px;
|
||||||
width: inherit;
|
width: calc(100% + 20px);
|
||||||
max-width: none;
|
max-width: none;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin search-input() {
|
@mixin search-input() {
|
||||||
outline: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border: 0;
|
border: 1px solid var(--color-search-lines);
|
||||||
box-shadow: none;
|
border-radius: var(--drawer-border-radius);
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: var(--color-search-fg);
|
||||||
font-family: inherit;
|
font-family: inherit;
|
||||||
background: $ui-base-color;
|
font-size: inherit;
|
||||||
color: $darker-text-color;
|
background: var(--color-search-bg);
|
||||||
border-radius: 4px;
|
|
||||||
font-size: 14px;
|
|
||||||
margin: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin search-popout() {
|
@mixin search-popout() {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
$emojis-requiring-inversion: 'back' 'copyright' 'curly_loop' 'currency_exchange'
|
$emojis-requiring-inversion: "back" "copyright" "curly_loop" "currency_exchange"
|
||||||
'end' 'heavy_check_mark' 'heavy_division_sign' 'heavy_dollar_sign'
|
"end" "heavy_check_mark" "heavy_division_sign" "heavy_dollar_sign"
|
||||||
'heavy_minus_sign' 'heavy_multiplication_x' 'heavy_plus_sign' 'on'
|
"heavy_minus_sign" "heavy_multiplication_x" "heavy_plus_sign" "on"
|
||||||
'registered' 'soon' 'spider' 'telephone_receiver' 'tm' 'top' 'wavy_dash' !default;
|
"registered" "soon" "spider" "telephone_receiver" "tm" "top" "wavy_dash" !default;
|
||||||
|
|
||||||
%emoji-color-inversion {
|
%emoji-color-inversion {
|
||||||
filter: invert(1);
|
filter: invert(1);
|
||||||
@@ -9,29 +9,12 @@ $emojis-requiring-inversion: 'back' 'copyright' 'curly_loop' 'currency_exchange'
|
|||||||
|
|
||||||
.emojione {
|
.emojione {
|
||||||
@each $emoji in $emojis-requiring-inversion {
|
@each $emoji in $emojis-requiring-inversion {
|
||||||
&[title=':#{$emoji}:'] {
|
&[title=":#{$emoji}:"] {
|
||||||
@extend %emoji-color-inversion;
|
@extend %emoji-color-inversion;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Display a checkmark on active UI elements otherwise differing only by color
|
|
||||||
.status__action-bar-button,
|
|
||||||
.detailed-status__button .icon-button {
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
&.active::after {
|
|
||||||
position: absolute;
|
|
||||||
content: '\F00C';
|
|
||||||
font-size: 50%;
|
|
||||||
inset-inline-end: -0.55em;
|
|
||||||
top: -0.44em;
|
|
||||||
|
|
||||||
/* stylelint-disable-next-line font-family-no-missing-generic-family-keyword -- this is an icon font, this can't use a generic font */
|
|
||||||
font-family: FontAwesome;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.hicolor-privacy-icons {
|
.hicolor-privacy-icons {
|
||||||
.status__visibility-icon.fa-globe,
|
.status__visibility-icon.fa-globe,
|
||||||
.privacy-dropdown__option .fa-globe {
|
.privacy-dropdown__option .fa-globe {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user