Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changeset/cute-ideas-appear.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@clerk/clerk-js': minor
'@clerk/shared': minor
---

Add support for parsing seat-based billing fields from FAPI.
2 changes: 2 additions & 0 deletions packages/clerk-js/sandbox/scenarios/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
export { UserButtonSignedIn } from './user-button-signed-in';
export { CheckoutAccountCredit } from './checkout-account-credit';
export { OrgProfileSeatLimit } from './org-profile-seat-limit';
export { PricingTableSBB } from './pricing-table-sbb';
74 changes: 74 additions & 0 deletions packages/clerk-js/sandbox/scenarios/org-profile-seat-limit.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import {
BillingService,
clerkHandlers,
EnvironmentService,
SessionService,
setClerkState,
type MockScenario,
UserService,
OrganizationService,
} from '@clerk/msw';

export function OrgProfileSeatLimit(): MockScenario {
const organization = OrganizationService.create({ maxAllowedMemberships: 10 });
const user = UserService.create();
user.organizationMemberships = [
{
object: 'organization_membership',
id: 'orgmem_3004mVaZrB4yD63C9KuwTMWNKbj',
public_metadata: {},
role: 'org:owner',
role_name: 'Owner',
permissions: [
'org:applications:create',
'org:applications:manage',
'org:applications:delete',
'org:billing:read',
'org:billing:manage',
'org:config:read',
'org:config:manage',
'org:global:read',
'org:global:manage',
'org:instances:create',
'org:instances:manage',
'org:instances:delete',
'org:restrictions:read',
'org:restrictions:manage',
'org:secrets:manage',
'org:users:imp',
'org:sys_profile:manage',
'org:sys_profile:delete',
'org:sys_billing:read',
'org:sys_billing:manage',
'org:sys_domains:read',
'org:sys_domains:manage',
'org:sys_memberships:read',
'org:sys_memberships:manage',
],
created_at: 1752751315275,
updated_at: 1752751315275,
organization,
},
];
const session = SessionService.create(user);
const plans = BillingService.createDefaultPlans();
const subscription = BillingService.createSubscription(plans[1]);

setClerkState({
environment: EnvironmentService.MULTI_SESSION,
session,
user,
organization,
billing: {
plans,
subscription,
},
});

return {
description: 'OrganizationProfile with a seat limit',
handlers: clerkHandlers,
initialState: { session, user, organization },
name: 'org-profile-seat-limit',
};
}
Loading
Loading