Skip to content

[Due for payment 2026-05-29] [HR Import] Render per-provider cards on the HR page [F06] #90599

@francoisl

Description

@francoisl

Task

Extend the HR page (built by the Gusto project) to render one MenuItem card per supported HR provider.

Files:

  • src/pages/workspace/hr/WorkspaceHRPage.tsx
  • src/pages/workspace/hr/utils.tsx → rename to utils.ts (it doesn't contain React components)

Behavior:

  • For each connection entry from MERGE_HR_PROVIDERS, render one MenuItem.
  • Each card passes the provider's iconUrl as the icon prop with iconType={CONST.ICON_TYPE_AVATAR} (or ICON_TYPE_WORKSPACE — whichever matches the visual treatment Gusto's card uses today). This is the same path the app already uses for user-avatar menu rows: the URI string renders through <Avatar><Image>.
  • Add a fallback Expensicon (e.g. a generic HR / office icon) for when the icon URL fails to load or is missing — important since we're depending on Merge's CDN at render time.
  • Whether a card is in "connected" vs "disconnected" state is driven by policy.connections[connectionName].
  • Extend getHRCardState() to handle any HR connection name, not just Gusto.
  • Wire the three-dot menu items ("Sync now", "Disconnect") by connection name.

Dependencies: F1, F3, F5.

Issue OwnerCurrent Issue Owner: @bernhardoj

Metadata

Metadata

Labels

DailyKSv2InternalRequires API changes or must be handled by Expensify staff

Type

No fields configured for Task.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions