diff --git a/.changeset/wet-mangos-stop.md b/.changeset/wet-mangos-stop.md new file mode 100644 index 00000000000..51dc39d0e81 --- /dev/null +++ b/.changeset/wet-mangos-stop.md @@ -0,0 +1,8 @@ +--- +'@clerk/localizations': minor +'@clerk/clerk-js': minor +'@clerk/shared': minor +'@clerk/ui': minor +--- + +Add support for rendering the Banned badge in the organization members list. diff --git a/packages/clerk-js/src/core/resources/PublicUserData.ts b/packages/clerk-js/src/core/resources/PublicUserData.ts index 01ca46b7acd..10977d693ee 100644 --- a/packages/clerk-js/src/core/resources/PublicUserData.ts +++ b/packages/clerk-js/src/core/resources/PublicUserData.ts @@ -12,6 +12,7 @@ export class PublicUserData implements IPublicUserData { identifier!: string; userId?: string; username?: string; + banned?: boolean; constructor(data: PublicUserDataJSON | PublicUserDataJSONSnapshot) { this.fromJSON(data); @@ -26,6 +27,7 @@ export class PublicUserData implements IPublicUserData { this.identifier = data.identifier || ''; this.userId = data.user_id; this.username = data.username; + this.banned = data.banned ?? undefined; } return this; @@ -40,6 +42,7 @@ export class PublicUserData implements IPublicUserData { identifier: this.identifier, user_id: this.userId, username: this.username, + banned: this.banned, }; } } diff --git a/packages/localizations/src/en-US.ts b/packages/localizations/src/en-US.ts index 130d121b173..70ea6c728fa 100644 --- a/packages/localizations/src/en-US.ts +++ b/packages/localizations/src/en-US.ts @@ -63,6 +63,7 @@ export const enUS: LocalizationResource = { badge__upcomingPlan: 'Upcoming', badge__userDevice: 'User device', badge__you: 'You', + badge__banned: 'Banned', billing: { addPaymentMethod__label: 'Add payment method', alwaysFree: 'Always free', diff --git a/packages/shared/src/types/json.ts b/packages/shared/src/types/json.ts index 29f5d5a38d7..7c91ed39498 100644 --- a/packages/shared/src/types/json.ts +++ b/packages/shared/src/types/json.ts @@ -321,6 +321,7 @@ export interface PublicUserDataJSON { identifier: string; user_id?: string; username?: string; + banned?: boolean; } export interface SessionWithActivitiesJSON extends Omit { diff --git a/packages/shared/src/types/localization.ts b/packages/shared/src/types/localization.ts index b1142118f42..5e65b15004e 100644 --- a/packages/shared/src/types/localization.ts +++ b/packages/shared/src/types/localization.ts @@ -152,6 +152,7 @@ export type __internal_LocalizationResource = { badge__unverified: LocalizationValue; badge__requiresAction: LocalizationValue; badge__you: LocalizationValue; + badge__banned: LocalizationValue; badge__freeTrial: LocalizationValue; badge__currentPlan: LocalizationValue; badge__upcomingPlan: LocalizationValue; diff --git a/packages/shared/src/types/session.ts b/packages/shared/src/types/session.ts index f8813281c9f..a512fc2baf9 100644 --- a/packages/shared/src/types/session.ts +++ b/packages/shared/src/types/session.ts @@ -336,6 +336,7 @@ export interface PublicUserData { identifier: string; userId?: string; username?: string; + banned?: boolean; } /** diff --git a/packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx b/packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx index ef713846990..79f48631bcb 100644 --- a/packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx +++ b/packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx @@ -95,7 +95,16 @@ const MemberRow = (props: { user={membership.publicUserData} subtitle={membership.publicUserData?.identifier} subtitleProps={{ variant: 'caption' }} - badge={isCurrentUser && } + badge={ + isCurrentUser ? ( + + ) : membership.publicUserData?.banned ? ( + + ) : undefined + } />