diff --git a/app/soapbox/features/account/components/header.js b/app/soapbox/features/account/components/header.js
index 93b75108d..c443e3716 100644
--- a/app/soapbox/features/account/components/header.js
+++ b/app/soapbox/features/account/components/header.js
@@ -182,61 +182,141 @@ class Header extends ImmutablePureComponent {
}
if (account.get('id') === me) {
- menu.push({ text: intl.formatMessage(messages.edit_profile), to: '/settings/profile' });
- menu.push({ text: intl.formatMessage(messages.preferences), to: '/settings/preferences' });
+ menu.push({
+ text: intl.formatMessage(messages.edit_profile),
+ to: '/settings/profile',
+ icon: require('@tabler/icons/icons/user.svg'),
+ });
+ menu.push({
+ text: intl.formatMessage(messages.preferences),
+ to: '/settings/preferences',
+ icon: require('@tabler/icons/icons/settings.svg'),
+ });
menu.push(null);
- menu.push({ text: intl.formatMessage(messages.follow_requests), to: '/follow_requests' });
+ menu.push({
+ text: intl.formatMessage(messages.follow_requests),
+ to: '/follow_requests',
+ icon: require('@tabler/icons/icons/user-plus.svg'),
+ });
menu.push(null);
- menu.push({ text: intl.formatMessage(messages.mutes), to: '/mutes' });
- menu.push({ text: intl.formatMessage(messages.blocks), to: '/blocks' });
- menu.push({ text: intl.formatMessage(messages.domain_blocks), to: '/domain_blocks' });
+ menu.push({
+ text: intl.formatMessage(messages.mutes),
+ to: '/mutes',
+ icon: require('@tabler/icons/icons/circle-x.svg'),
+ });
+ menu.push({
+ text: intl.formatMessage(messages.blocks),
+ to: '/blocks',
+ icon: require('@tabler/icons/icons/ban.svg'),
+ });
+ menu.push({
+ text: intl.formatMessage(messages.domain_blocks),
+ to: '/domain_blocks',
+ icon: require('@tabler/icons/icons/ban.svg'),
+ });
} else {
- menu.push({ text: intl.formatMessage(messages.mention, { name: account.get('username') }), action: this.props.onMention });
+ menu.push({
+ text: intl.formatMessage(messages.mention, { name: account.get('username') }),
+ action: this.props.onMention,
+ icon: require('feather-icons/dist/icons/at-sign.svg'),
+ });
if (account.getIn(['pleroma', 'accepts_chat_messages'], false) === true) {
- menu.push({ text: intl.formatMessage(messages.chat, { name: account.get('username') }), action: this.props.onChat });
+ menu.push({
+ text: intl.formatMessage(messages.chat, { name: account.get('username') }),
+ action: this.props.onChat,
+ icon: require('@tabler/icons/icons/messages.svg'),
+ });
} else {
- menu.push({ text: intl.formatMessage(messages.direct, { name: account.get('username') }), action: this.props.onDirect });
+ menu.push({
+ text: intl.formatMessage(messages.direct, { name: account.get('username') }),
+ action: this.props.onDirect,
+ icon:require('@tabler/icons/icons/mail.svg'),
+ });
}
if (account.getIn(['relationship', 'following'])) {
if (account.getIn(['relationship', 'showing_reblogs'])) {
- menu.push({ text: intl.formatMessage(messages.hideReblogs, { name: account.get('username') }), action: this.props.onReblogToggle });
+ menu.push({
+ text: intl.formatMessage(messages.hideReblogs, { name: account.get('username') }),
+ action: this.props.onReblogToggle,
+ icon: require('@tabler/icons/icons/repeat.svg'),
+ });
} else {
- menu.push({ text: intl.formatMessage(messages.showReblogs, { name: account.get('username') }), action: this.props.onReblogToggle });
+ menu.push({
+ text: intl.formatMessage(messages.showReblogs, { name: account.get('username') }),
+ action: this.props.onReblogToggle,
+ icon: require('@tabler/icons/icons/repeat.svg'),
+ });
}
if (features.accountSubscriptions) {
if (account.getIn(['relationship', 'subscribing'])) {
- menu.push({ text: intl.formatMessage(messages.unsubscribe, { name: account.get('username') }), action: this.props.onSubscriptionToggle });
+ menu.push({
+ text: intl.formatMessage(messages.unsubscribe, { name: account.get('username') }),
+ action: this.props.onSubscriptionToggle,
+ icon: require('@tabler/icons/icons/bell.svg'),
+ });
} else {
- menu.push({ text: intl.formatMessage(messages.subscribe, { name: account.get('username') }), action: this.props.onSubscriptionToggle });
+ menu.push({
+ text: intl.formatMessage(messages.subscribe, { name: account.get('username') }),
+ action: this.props.onSubscriptionToggle,
+ icon: require('@tabler/icons/icons/bell-off.svg'),
+ });
}
}
if (features.lists) {
- menu.push({ text: intl.formatMessage(messages.add_or_remove_from_list), action: this.props.onAddToList });
+ menu.push({
+ text: intl.formatMessage(messages.add_or_remove_from_list),
+ action: this.props.onAddToList,
+ icon: require('@tabler/icons/icons/list.svg'),
+ });
}
// menu.push({ text: intl.formatMessage(account.getIn(['relationship', 'endorsed']) ? messages.unendorse : messages.endorse), action: this.props.onEndorseToggle });
menu.push(null);
} else if (features.lists && features.unrestrictedLists) {
- menu.push({ text: intl.formatMessage(messages.add_or_remove_from_list), action: this.props.onAddToList });
+ menu.push({
+ text: intl.formatMessage(messages.add_or_remove_from_list),
+ action: this.props.onAddToList,
+ icon: require('@tabler/icons/icons/list.svg'),
+ });
}
if (account.getIn(['relationship', 'muting'])) {
- menu.push({ text: intl.formatMessage(messages.unmute, { name: account.get('username') }), action: this.props.onMute });
+ menu.push({
+ text: intl.formatMessage(messages.unmute, { name: account.get('username') }),
+ action: this.props.onMute,
+ icon: require('@tabler/icons/icons/circle-x.svg'),
+ });
} else {
- menu.push({ text: intl.formatMessage(messages.mute, { name: account.get('username') }), action: this.props.onMute });
+ menu.push({
+ text: intl.formatMessage(messages.mute, { name: account.get('username') }),
+ action: this.props.onMute,
+ icon: require('@tabler/icons/icons/circle-x.svg'),
+ });
}
if (account.getIn(['relationship', 'blocking'])) {
- menu.push({ text: intl.formatMessage(messages.unblock, { name: account.get('username') }), action: this.props.onBlock });
+ menu.push({
+ text: intl.formatMessage(messages.unblock, { name: account.get('username') }),
+ action: this.props.onBlock,
+ icon: require('@tabler/icons/icons/ban.svg'),
+ });
} else {
- menu.push({ text: intl.formatMessage(messages.block, { name: account.get('username') }), action: this.props.onBlock });
+ menu.push({
+ text: intl.formatMessage(messages.block, { name: account.get('username') }),
+ action: this.props.onBlock,
+ icon: require('@tabler/icons/icons/ban.svg'),
+ });
}
- menu.push({ text: intl.formatMessage(messages.report, { name: account.get('username') }), action: this.props.onReport });
+ menu.push({
+ text: intl.formatMessage(messages.report, { name: account.get('username') }),
+ action: this.props.onReport,
+ icon: require('@tabler/icons/icons/flag.svg'),
+ });
}
if (isRemote(account)) {
@@ -245,9 +325,17 @@ class Header extends ImmutablePureComponent {
menu.push(null);
if (account.getIn(['relationship', 'domain_blocking'])) {
- menu.push({ text: intl.formatMessage(messages.unblockDomain, { domain }), action: this.props.onUnblockDomain });
+ menu.push({
+ text: intl.formatMessage(messages.unblockDomain, { domain }),
+ action: this.props.onUnblockDomain,
+ icon: require('@tabler/icons/icons/ban.svg'),
+ });
} else {
- menu.push({ text: intl.formatMessage(messages.blockDomain, { domain }), action: this.props.onBlockDomain });
+ menu.push({
+ text: intl.formatMessage(messages.blockDomain, { domain }),
+ action: this.props.onBlockDomain,
+ icon: require('@tabler/icons/icons/ban.svg'),
+ });
}
}
@@ -255,31 +343,74 @@ class Header extends ImmutablePureComponent {
menu.push(null);
if (isAdmin(meAccount)) {
- menu.push({ text: intl.formatMessage(messages.admin_account, { name: account.get('username') }), href: `/pleroma/admin/#/users/${account.get('id')}/`, newTab: true });
+ menu.push({
+ text: intl.formatMessage(messages.admin_account, { name: account.get('username') }),
+ href: `/pleroma/admin/#/users/${account.get('id')}/`, newTab: true,
+ icon: require('icons/gavel.svg'),
+ });
}
if (account.get('id') !== me && isLocal(account)) {
if (isAdmin(account)) {
- menu.push({ text: intl.formatMessage(messages.demoteToModerator, { name: account.get('username') }), action: this.props.onPromoteToModerator });
- menu.push({ text: intl.formatMessage(messages.demoteToUser, { name: account.get('username') }), action: this.props.onDemoteToUser });
+ menu.push({
+ text: intl.formatMessage(messages.demoteToModerator, { name: account.get('username') }),
+ action: this.props.onPromoteToModerator,
+ icon: require('@tabler/icons/icons/arrow-up-circle.svg'),
+ });
+ menu.push({
+ text: intl.formatMessage(messages.demoteToUser, { name: account.get('username') }),
+ action: this.props.onDemoteToUser,
+ icon: require('@tabler/icons/icons/arrow-down-circle.svg'),
+ });
} else if (isModerator(account)) {
- menu.push({ text: intl.formatMessage(messages.promoteToAdmin, { name: account.get('username') }), action: this.props.onPromoteToAdmin });
- menu.push({ text: intl.formatMessage(messages.demoteToUser, { name: account.get('username') }), action: this.props.onDemoteToUser });
+ menu.push({
+ text: intl.formatMessage(messages.promoteToAdmin, { name: account.get('username') }),
+ action: this.props.onPromoteToAdmin,
+ icon: require('@tabler/icons/icons/arrow-up-circle.svg'),
+ });
+ menu.push({
+ text: intl.formatMessage(messages.demoteToUser, { name: account.get('username') }),
+ action: this.props.onDemoteToUser,
+ icon: require('@tabler/icons/icons/arrow-down-circle.svg'),
+ });
} else {
- menu.push({ text: intl.formatMessage(messages.promoteToAdmin, { name: account.get('username') }), action: this.props.onPromoteToAdmin });
- menu.push({ text: intl.formatMessage(messages.promoteToModerator, { name: account.get('username') }), action: this.props.onPromoteToModerator });
+ menu.push({
+ text: intl.formatMessage(messages.promoteToAdmin, { name: account.get('username') }),
+ action: this.props.onPromoteToAdmin,
+ icon: require('@tabler/icons/icons/arrow-up-circle.svg'),
+ });
+ menu.push({
+ text: intl.formatMessage(messages.promoteToModerator, { name: account.get('username') }),
+ action: this.props.onPromoteToModerator,
+ icon: require('@tabler/icons/icons/arrow-up-circle.svg'),
+ });
}
}
if (isVerified(account)) {
- menu.push({ text: intl.formatMessage(messages.unverifyUser, { name: account.get('username') }), action: this.props.onUnverifyUser });
+ menu.push({
+ text: intl.formatMessage(messages.unverifyUser, { name: account.get('username') }),
+ action: this.props.onUnverifyUser,
+ icon: require('@tabler/icons/icons/check.svg'),
+ });
} else {
- menu.push({ text: intl.formatMessage(messages.verifyUser, { name: account.get('username') }), action: this.props.onVerifyUser });
+ menu.push({
+ text: intl.formatMessage(messages.verifyUser, { name: account.get('username') }),
+ action: this.props.onVerifyUser,
+ icon: require('@tabler/icons/icons/check.svg'),
+ });
}
if (account.get('id') !== me) {
- menu.push({ text: intl.formatMessage(messages.deactivateUser, { name: account.get('username') }), action: this.props.onDeactivateUser });
- menu.push({ text: intl.formatMessage(messages.deleteUser, { name: account.get('username') }), action: this.props.onDeleteUser });
+ menu.push({
+ text: intl.formatMessage(messages.deactivateUser, { name: account.get('username') }),
+ action: this.props.onDeactivateUser,
+ icon: require('@tabler/icons/icons/user-off.svg'),
+ });
+ menu.push({
+ text: intl.formatMessage(messages.deleteUser, { name: account.get('username') }),
+ icon: require('@tabler/icons/icons/user-minus.svg'),
+ });
}
}
diff --git a/app/soapbox/features/admin/components/report.js b/app/soapbox/features/admin/components/report.js
index 297b0d55d..8ef9a3172 100644
--- a/app/soapbox/features/admin/components/report.js
+++ b/app/soapbox/features/admin/components/report.js
@@ -37,9 +37,11 @@ class Report extends ImmutablePureComponent {
return [{
text: intl.formatMessage(messages.deactivateUser, { name: report.getIn(['account', 'username']) }),
action: this.handleDeactivateUser,
+ icon: require('@tabler/icons/icons/user-off.svg'),
}, {
text: intl.formatMessage(messages.deleteUser, { name: report.getIn(['account', 'username']) }),
action: this.handleDeleteUser,
+ icon: require('@tabler/icons/icons/user-minus.svg'),
}];
}
diff --git a/app/soapbox/features/admin/components/report_status.js b/app/soapbox/features/admin/components/report_status.js
index 11110adb8..83bb4ef46 100644
--- a/app/soapbox/features/admin/components/report_status.js
+++ b/app/soapbox/features/admin/components/report_status.js
@@ -32,9 +32,11 @@ class ReportStatus extends ImmutablePureComponent {
return [{
text: intl.formatMessage(messages.viewStatus, { acct: `@${acct}` }),
to: `/@${acct}/posts/${status.get('id')}`,
+ icon: require('@tabler/icons/icons/pencil.svg'),
}, {
text: intl.formatMessage(messages.deleteStatus, { acct: `@${acct}` }),
action: this.handleDeleteStatus,
+ icon: require('@tabler/icons/icons/trash.svg'),
}];
}
diff --git a/app/soapbox/features/admin/reports.js b/app/soapbox/features/admin/reports.js
index 141db1d45..ac34352c6 100644
--- a/app/soapbox/features/admin/reports.js
+++ b/app/soapbox/features/admin/reports.js
@@ -44,6 +44,7 @@ class Reports extends ImmutablePureComponent {
return [{
text: intl.formatMessage(messages.modlog),
to: '/admin/log',
+ icon: require('@tabler/icons/icons/list.svg'),
}];
}
diff --git a/app/soapbox/features/backups/index.js b/app/soapbox/features/backups/index.js
index 7b161cc35..a247db302 100644
--- a/app/soapbox/features/backups/index.js
+++ b/app/soapbox/features/backups/index.js
@@ -52,6 +52,7 @@ class Backups extends ImmutablePureComponent {
return [{
text: intl.formatMessage(messages.create),
action: this.handleCreateBackup,
+ icon: require('@tabler/icons/icons/plus.svg'),
}];
}
diff --git a/app/soapbox/features/chats/components/chat_message_list.js b/app/soapbox/features/chats/components/chat_message_list.js
index 6e570e06c..7689bb4f9 100644
--- a/app/soapbox/features/chats/components/chat_message_list.js
+++ b/app/soapbox/features/chats/components/chat_message_list.js
@@ -261,8 +261,16 @@ class ChatMessageList extends ImmutablePureComponent {
renderMessage = (chatMessage) => {
const { me, intl } = this.props;
const menu = [
- { text: intl.formatMessage(messages.delete), action: this.handleDeleteMessage(chatMessage.get('chat_id'), chatMessage.get('id')) },
- { text: intl.formatMessage(messages.report), action: this.handleReportUser(chatMessage.get('account_id')) },
+ {
+ text: intl.formatMessage(messages.delete),
+ action: this.handleDeleteMessage(chatMessage.get('chat_id'), chatMessage.get('id')),
+ icon: require('@tabler/icons/icons/trash.svg'),
+ },
+ {
+ text: intl.formatMessage(messages.report),
+ action: this.handleReportUser(chatMessage.get('account_id')),
+ icon: require('@tabler/icons/icons/flag.svg'),
+ },
];
return (
diff --git a/app/soapbox/features/groups/timeline/components/header.js b/app/soapbox/features/groups/timeline/components/header.js
index 34d0bb2c5..0355a1c4a 100644
--- a/app/soapbox/features/groups/timeline/components/header.js
+++ b/app/soapbox/features/groups/timeline/components/header.js
@@ -50,8 +50,16 @@ class Header extends ImmutablePureComponent {
const { group, intl } = this.props;
const menu = [
- { text: intl.formatMessage(messages.edit), to: `/groups/${group.get('id')}/edit` },
- { text: intl.formatMessage(messages.removed_accounts), to: `/groups/${group.get('id')}/removed_accounts` },
+ {
+ text: intl.formatMessage(messages.edit),
+ to: `/groups/${group.get('id')}/edit`,
+ icon: require('@tabler/icons/icons/edit.svg'),
+ },
+ {
+ text: intl.formatMessage(messages.removed_accounts),
+ to: `/groups/${group.get('id')}/removed_accounts`,
+ icon: require('@tabler/icons/icons/trash.svg'),
+ },
];
return