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; }