Dashboard

/dashboard — DashboardModule, guarded by DocuSignGuard (which is really the DocuSign return handler, see Route Guards).

The dashboard is a widget board. Which cards appear depends entirely on the supplier’s calculated permissions and product state, so two suppliers rarely see the same page.

Widgets and their gates

Widget Permission Shows

pyb-your-account-widget

—

Account status and activation progress.

pyb-your-identity-widget

—

KYC status and the ID-upload prompt.

pyb-payments-config-widget

TRANSFER_INFORMATION

The configured payout method.

pyb-advance-line-widget

ADVANCE_LINE.VIEW_ADVANCE_LINE_WIDGET

Available credit, outstanding balance, draw CTA.

pyb-advance-line-open-advances

ADVANCE_LINE.VIEW_ADVANCE_LINE_REPORT

Open drawdowns.

pyb-instant-advance-widget

INSTANT_ADVANCE_REPORT_WIDGET

Active Instant Advance and repayment progress.

pyb-instant-advance-pending-widget

INSTANT_ADVANCE_PENDING

Pending Instant Advance awaiting signature.

pyb-instant-access-widget

—

Instant Transfer eligibility CTA.

pyb-seller-card-widget

SELLER_CARD

Card balance and quick actions.

pyb-vendorpay-incoming-payments-widget

VENDOR_PAY

Incoming vendor payments.

pyb-referral-banner

REFERRAL

Referral programme promotion.

daily-summary

DAILY_SUMMARY

Recent daily transaction totals.

additional-documents-widget

—

Outstanding document requirements.

CTA cards

VIEW_NOTIFICATIONS

Notification-driven offers — see Dashboard Notifications & CTAs.

Gating in the template uses the full dotted permission names:

<div *ngxPermissionsOnly="['ADVANCE_LINE.VIEW_ADVANCE_LINE_WIDGET']">
    <pyb-advance-line-widget></pyb-advance-line-widget>
</div>

Widgets render pyb-skeleton placeholders while their slice is loading.

DashboardComponent

views/pages/dashboard/dashboard.component.ts, extends Subscriber.

State it selects:

selectCurrentUser

The user, for status-driven rendering.

selectAdvanceLineStatus / selectAdvanceLineStatusType

Advance Line summary.

selectActiveInstantAdv

The active Instant Advance.

selectAllEntitiesSupplierMarketplaces

Connected channels.

selectBalanceState

Available balance.

selectIsFreeAccess

Free-access cohort rendering.

Actions it dispatches on init:

fetchDashboardNotifications()

Loads the notification set that drives CTA cards.

loadSummary()

Loads the Advance Line summary.

Services it composes:

SubheaderService

Page title and breadcrumbs.

TopBarService

The onboarding progress bar, shown when the supplier is still pre-activation (isTopBarVisible).

ProductSummaryService / ProductSummaryGridService

The product summary panel.

InternalMessagesService

Cross-component messages and the account-cancelled banner.

PybToastService

Inline success and error toasts.

SuppliersService

Direct status reads where the slice is not sufficient.

DashboardComponent does not set changeDetection: OnPush — it is one of the few components using default change detection, because it aggregates many independently updating sources.

Page-load timing

/dashboard is the only route in the PageLoadTimeTrackerModule.forRoot([…]) allow-list, so its render duration is measured and pushed to CloudWatch. See Observability.

Session-start side effects

Landing on the dashboard is what triggers most one-time session behaviour, via GlobalSubscriptionsService.init():

  • welcome modal (new_sd_welcome),

  • Airwallex terms modal (airwallex_pcard_terms),

  • Seller Card transition modal (identity_document_expired),

  • the re-sign contract flow,

  • the 2FA setup banner, suspension banner, cancellation banners,

  • marketplace connector health checks,

  • fetchFees().

SuspensionReasonInitializerService additionally listens for navigation to /dashboard and opens the suspension modal there specifically — see Suspension.

DocuSign returns

Because DocuSignGuard is applied here, a supplier returning from DocuSign with flowType and event query parameters has their flow executed before the dashboard renders, and is then redirected to a clean URL. See DocuSign Contract Flows.