diff --git a/app/javascript/flavours/glitch/components/badge.jsx b/app/javascript/flavours/glitch/components/badge.jsx
deleted file mode 100644
index 2a335d7f50..0000000000
--- a/app/javascript/flavours/glitch/components/badge.jsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import PropTypes from 'prop-types';
-
-import { FormattedMessage } from 'react-intl';
-
-import GroupsIcon from '@/material-icons/400-24px/group.svg?react';
-import PersonIcon from '@/material-icons/400-24px/person.svg?react';
-import SmartToyIcon from '@/material-icons/400-24px/smart_toy.svg?react';
-
-
-export const Badge = ({ icon = , label, domain, roleId }) => (
-
- {icon}
- {label}
- {domain && {domain}}
-
-);
-
-Badge.propTypes = {
- icon: PropTypes.node,
- label: PropTypes.node,
- domain: PropTypes.node,
- roleId: PropTypes.string
-};
-
-export const GroupBadge = () => (
- } label={} />
-);
-
-export const AutomatedBadge = () => (
- } label={} />
-);
diff --git a/app/javascript/flavours/glitch/components/badge.tsx b/app/javascript/flavours/glitch/components/badge.tsx
new file mode 100644
index 0000000000..b7dc169edb
--- /dev/null
+++ b/app/javascript/flavours/glitch/components/badge.tsx
@@ -0,0 +1,46 @@
+import type { FC, ReactNode } from 'react';
+
+import { FormattedMessage } from 'react-intl';
+
+import classNames from 'classnames';
+
+import GroupsIcon from '@/material-icons/400-24px/group.svg?react';
+import PersonIcon from '@/material-icons/400-24px/person.svg?react';
+import SmartToyIcon from '@/material-icons/400-24px/smart_toy.svg?react';
+
+export const Badge: FC<{
+ label: ReactNode;
+ icon?: ReactNode;
+ className?: string;
+ domain?: ReactNode;
+ roleId?: string;
+}> = ({ icon = , label, className, domain, roleId }) => (
+
+ {icon}
+ {label}
+ {domain && {domain}}
+
+);
+
+export const GroupBadge: FC<{ className?: string }> = ({ className }) => (
+ }
+ label={
+
+ }
+ className={className}
+ />
+);
+
+export const AutomatedBadge: FC<{ className?: string }> = ({ className }) => (
+ }
+ label={
+
+ }
+ className={className}
+ />
+);
diff --git a/app/javascript/flavours/glitch/features/account_timeline/components/badges.tsx b/app/javascript/flavours/glitch/features/account_timeline/components/badges.tsx
index 6b2a20c181..3ad9d7dd0a 100644
--- a/app/javascript/flavours/glitch/features/account_timeline/components/badges.tsx
+++ b/app/javascript/flavours/glitch/features/account_timeline/components/badges.tsx
@@ -1,12 +1,19 @@
-import type { FC } from 'react';
+import type { FC, ReactNode } from 'react';
import {
AutomatedBadge,
Badge,
GroupBadge,
} from '@/flavours/glitch/components/badge';
+import { Icon } from '@/flavours/glitch/components/icon';
import { useAccount } from '@/flavours/glitch/hooks/useAccount';
+import type { AccountRole } from '@/flavours/glitch/models/account';
import { useAppSelector } from '@/flavours/glitch/store';
+import IconAdmin from '@/images/icons/icon_admin.svg?react';
+
+import { isRedesignEnabled } from '../common';
+
+import classes from './redesign.module.scss';
export const AccountBadges: FC<{ accountId: string }> = ({ accountId }) => {
const account = useAccount(accountId);
@@ -19,22 +26,32 @@ export const AccountBadges: FC<{ accountId: string }> = ({ accountId }) => {
return null;
}
+ const className = isRedesignEnabled() ? classes.badge : '';
+
if (account.bot) {
- badges.push();
+ badges.push();
} else if (account.group) {
- badges.push();
+ badges.push();
}
const domain = account.acct.includes('@')
? account.acct.split('@')[1]
: localDomain;
account.roles.forEach((role) => {
+ let icon: ReactNode = undefined;
+ if (isAdminBadge(role)) {
+ icon = (
+
+ );
+ }
badges.push(
{role.get('name')}}
- domain={domain}
- roleId={role.get('id')}
+ key={role.id}
+ label={role.name}
+ className={className}
+ domain={isRedesignEnabled() ? `(${domain})` : domain}
+ roleId={role.id}
+ icon={icon}
/>,
);
});
@@ -43,5 +60,10 @@ export const AccountBadges: FC<{ accountId: string }> = ({ accountId }) => {
return null;
}
- return {badges}
;
+ return {badges}
;
};
+
+function isAdminBadge(role: AccountRole) {
+ const name = role.name.toLowerCase();
+ return isRedesignEnabled() && (name === 'admin' || name === 'owner');
+}
diff --git a/app/javascript/flavours/glitch/features/account_timeline/components/redesign.module.scss b/app/javascript/flavours/glitch/features/account_timeline/components/redesign.module.scss
index 757f5a4231..5ccdb1f310 100644
--- a/app/javascript/flavours/glitch/features/account_timeline/components/redesign.module.scss
+++ b/app/javascript/flavours/glitch/features/account_timeline/components/redesign.module.scss
@@ -39,6 +39,27 @@ h1.name > small {
}
}
+.badge {
+ background-color: var(--color-bg-secondary);
+ border: none;
+ color: var(--color-text-secondary);
+ font-weight: 600;
+
+ > span {
+ font-weight: unset;
+ opacity: 1;
+ }
+}
+
+svg.badgeIcon {
+ opacity: 1;
+ fill: revert-layer;
+
+ path {
+ fill: revert-layer;
+ }
+}
+
.fieldList {
margin-top: 16px;
}