Skip to content

Data blocks ​

Show and work with records and structured data: grids, lists, trees, boards, calendars, timelines, search and business widgets.

This page is generated from the block registry, so it lists exactly what the Page Designer accepts. 82 blocks.

BlockWhat it is for
core.ai-chatChat panel connected to an AI agent by agentCode; shows the reply and fires messageSent.
core.ai-classificationAI block that classifies the input by running a library prompt (promptCode) with inputValues; shows the result and a loading state, can run automatically, and fires generateRequested.
core.ai-form-assistantAI assistant for a form: asks for suggestions for the fields of an entity (suggestRequested) and applies the ones the person accepts (suggestionApplied).
core.ai-insightsAI block that produces insights from data by running a library prompt (promptCode) with inputValues; shows the result and a loading state, can run automatically, and fires generateRequested.
core.ai-predictionAI block that predicts an outcome by running a library prompt (promptCode) with inputValues; shows the result and a loading state, can run automatically, and fires generateRequested.
core.ai-recommendationAI block that recommends a next step by running a library prompt (promptCode) with inputValues; shows the result and a loading state, can run automatically, and fires generateRequested.
core.ai-record-searchNatural-language search over an entity; the question is sent on querySubmitted and results summarised in resultSummary.
core.ai-summaryAI block that summarises text by running a library prompt (promptCode) with inputValues; shows the result and a loading state, can run automatically, and fires generateRequested.
core.ai-translationAI block that translates text by running a library prompt (promptCode) with inputValues; shows the result and a loading state, can run automatically, and fires generateRequested.
core.alert-cardCard that shows an alert from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.announcement-cardCard that shows an announcement from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.app-tile-gridA SaaS-style application launcher grid — colored icon tiles, e.g.
core.appointment-calendarResource calendar for appointments: rows are resources, events sit on a time axis between the first and last visible hour; fires selected.
core.article-feedbackHelpful or not-helpful feedback control for a help article.
core.attachment-listDisplays a list of file attachments (name, size, type) with per-item open — and optionally remove — actions, for showing multiple documents attached to a record (e.g.
core.attendance-cardDisplays one day's attendance summary for an employee — date, check-in time, check-out time, and status (e.g.
core.availabilityResource calendar for showing who or what is free: rows are resources, events sit on a time axis between the first and last visible hour; fires selected.
core.booking-calendarResource calendar for bookings: rows are resources, events sit on a time axis between the first and last visible hour; fires selected.
core.business-unit-cardCard that shows a business unit from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.calendar-cardCard that shows upcoming calendar items from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.chat-windowMessage thread with an input; fires messageSent.
core.company-cardCard that shows a company from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.conversation-listList of conversations, optionally with avatars with a primary line, a secondary line, a badge and a date taken from fields of each item; fires selected when one is chosen.
core.custom-fields-panelRenders and edits a record's tenant-authored custom fields (Custom Field Engine v1) — one input per active field definition for a given entity type/instance, with a single all-or-nothing Save.
core.customer-cardCard that shows a customer from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.data-cardA generic, author-configurable field-list card for showing one bound record's title plus a handful of labeled fields — unlike the fixed-shape ERP business cards (employee-card, etc.), both titlePath and the entire fields list are authored, not fixed.
core.department-cardCard that shows a department from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.document-viewerDisplays a summary of one document (name, size, type) with an "open" action — for showing a single linked document (e.g.
core.dynamic-tableSimple table whose columns and rows are supplied as data; fires rowClicked. Use core.grid when you need paging, filters or editing.
core.employee-calendarResource calendar for employees: rows are resources, events sit on a time axis between the first and last visible hour; fires selected.
core.employee-cardDisplays a compact summary of one employee record (name, job title, department, photo) as a clickable card — the canonical HCM "who is this" tile for directories, org charts, and dashboards.
core.file-browserTree browser of folders and files; fires expand and selected.
core.file-version-historyList of the versions of a file; fires download and restore for a version.
core.financial-summary-cardCard that shows a financial summary from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.gantt-chartDisplays a set of tasks as horizontal bars positioned along a shared timeline, with an optional in-bar progress indicator — the standard project/task-schedule visualization.
core.goods-receipt-cardCard that shows a goods receipt from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.gridA full-featured, license-free server-side data grid — sorting, filtering, paging, grouping with per-group aggregates, column visibility/order/pin/width/density, inline cell editing, row selection, and CSV export — the primary widget for tabular record lists (e.g.
core.invoice-cardCard that shows an invoice from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.journal-entry-cardCard that shows a journal entry from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.kanbanA drag-and-drop kanban board.
core.lead-cardCard that shows a lead from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.leave-balanceDisplays an employee's leave balance for one leave type — used, total, and a computed remaining amount.
core.listA simple, unmapped-columns repeated row list for showing a compact array of records as primary/secondary text rows (contrast with core.grid, which is the tabular/sortable/filterable data component).
core.meeting-calendarResource calendar for meeting rooms or attendees: rows are resources, events sit on a time axis between the first and last visible hour; fires selected.
core.my-approvalsList of approvals waiting for the person with a primary line, a secondary line, a badge and a date taken from fields of each item; fires selected when one is chosen.
core.my-notificationsList of the person's notifications with a primary line, a secondary line, a badge and a date taken from fields of each item; fires selected when one is chosen.
core.my-tasksList of the person's tasks with a primary line, a secondary line, a badge and a date taken from fields of each item; fires selected when one is chosen.
core.nav-menuAn iPad-style icon-grid menu of a single app's own navigation sections (e.g.
core.news-cardCard that shows news items from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.opportunity-cardCard that shows an opportunity from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.payment-cardCard that shows a payment from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.payroll-summaryDisplays a payroll period summary for an employee — period, gross pay, deductions, and net pay — formatted as localized currency.
core.pending-actionsList of actions waiting for the person with a primary line, a secondary line, a badge and a date taken from fields of each item; fires selected when one is chosen.
core.pivot-tableAggregates tabular data by a row field (and optional column field).
core.portal-api-tokensPortal block that shows the member's personal read-only API tokens, with create and revoke for the signed-in portal member, scoped by the portal's access policies.
core.portal-approvalsPortal block that shows records waiting for the member's approval, with approve and decline for the signed-in portal member, scoped by the portal's access policies.
core.portal-catalogPortal block that shows a catalog of items the member can request, with a request form for the signed-in portal member, scoped by the portal's access policies.
core.portal-delegatesPortal block that shows the people the member has let act for them, with add and remove for the signed-in portal member, scoped by the portal's access policies.
core.portal-libraryPortal block that shows the document library folders configured for the portal for the signed-in portal member, scoped by the portal's access policies.
core.portal-messagesPortal block that shows the member's conversations with your team for the signed-in portal member, scoped by the portal's access policies.
core.portal-notificationsPortal block that shows the member's notifications for the signed-in portal member, scoped by the portal's access policies.
core.portal-recordsPortal block that shows a table of records from a data service, with paging and an optional detail view for the signed-in portal member, scoped by the portal's access policies.
core.portal-searchPortal block that shows a search over the portal's content for the signed-in portal member, scoped by the portal's access policies.
core.portal-summaryPortal block that shows summary tiles computed by a data service for the signed-in portal member, scoped by the portal's access policies.
core.portal-teamPortal block that shows the colleagues of the member's company for the signed-in portal member, scoped by the portal's access policies.
core.product-cardCard that shows a product from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.purchase-order-cardCard that shows a purchase order from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.quotation-cardCard that shows a quotation from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.recent-recordsList of recently opened records with a primary line, a secondary line, a badge and a date taken from fields of each item; fires selected when one is chosen.
core.role-cardCard that shows a role from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.sales-order-cardCard that shows a sales order from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.schedulerDisplays a set of resources (rooms, staff, machines, ...) as rows against a fixed daily time range, with each resource's events drawn as bars within that range — a day-view resource scheduler/calendar grid.
core.stock-movement-cardCard that shows a stock movement from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.stock-transfer-cardCard that shows a stock transfer from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.supplier-cardCard that shows a supplier from a record, with a title, selected fields and an icon; fires clicked when pressed.
core.surveySurvey with questions and a rating scale; answers are sent to the portal.
core.task-cardDisplays a summary of one task/to-do item — title, due date, assignee, status, and priority — as a clickable card, for task lists, My Tasks inboxes, and workflow queues.
core.timeline-calendarResource calendar for scheduling across resources: rows are resources, events sit on a time axis between the first and last visible hour; fires selected.
core.tree-gridDisplays hierarchical data as a table — one row per node, with multiple columns per row instead of a single label — for structures like an org chart-as-table or a nested category/BOM listing.
core.user-listList of users, optionally with avatars with a primary line, a secondary line, a badge and a date taken from fields of each item; fires selected when one is chosen.
core.user-profileDisplays a compact summary of one system user (name, role, email, avatar, status) — the generic "who is logged in / who owns this" tile, distinct from core.employee-card which is HR-domain-specific.
core.warehouse-cardCard that shows a warehouse from a record, with a title, selected fields and an icon; fires clicked when pressed.

core.ai-chat ​

PropertyTypeSet fromDefault
agentCodestringstatic
assistantReplyjsonstatic, expression, binding
loadingbooleanstatic, expression, bindingfalse
placeholderstringstaticType your question...

Events: messageSent

core.ai-classification ​

PropertyTypeSet fromDefault
titlestringstatic, expressionAI Classification
promptCodestringstaticai-classification
inputValuesjsonstatic, expression, binding{}
resultjsonstatic, expression, binding
loadingbooleanstatic, expression, bindingfalse
placeholderstringstaticUnclassified
autoRunbooleanstatictrue
regenerateLabelstringstaticRegenerate

Events: generateRequested

core.ai-form-assistant ​

PropertyTypeSet fromDefault
entityNamestringstatic, expression
inputValuesjsonstatic, expression, binding{}
suggestionsjsonstatic, expression, binding
loadingbooleanstatic, expression, bindingfalse
suggestLabelstringstaticSuggest values

Events: suggestRequested, suggestionApplied

core.ai-insights ​

PropertyTypeSet fromDefault
titlestringstatic, expressionAI Insights
promptCodestringstaticai-insights
inputValuesjsonstatic, expression, binding{}
resultjsonstatic, expression, binding
loadingbooleanstatic, expression, bindingfalse
placeholderstringstaticNo insights yet.
autoRunbooleanstatictrue
regenerateLabelstringstaticRegenerate

Events: generateRequested

core.ai-prediction ​

PropertyTypeSet fromDefault
titlestringstatic, expressionAI Prediction
promptCodestringstaticai-prediction
inputValuesjsonstatic, expression, binding{}
resultjsonstatic, expression, binding
loadingbooleanstatic, expression, bindingfalse
placeholderstringstaticNo prediction yet.
autoRunbooleanstatictrue
regenerateLabelstringstaticRegenerate

Events: generateRequested

core.ai-recommendation ​

PropertyTypeSet fromDefault
titlestringstatic, expressionAI Recommendation
promptCodestringstaticai-recommendation
inputValuesjsonstatic, expression, binding{}
resultjsonstatic, expression, binding
loadingbooleanstatic, expression, bindingfalse
placeholderstringstaticNo recommendation yet.
autoRunbooleanstatictrue
regenerateLabelstringstaticRegenerate

Events: generateRequested

PropertyTypeSet fromDefault
entityNamestringstatic, expression
placeholderstringstaticAsk in plain language...
resultSummaryjsonstatic, expression, binding
loadingbooleanstatic, expression, bindingfalse

Events: querySubmitted

core.ai-summary ​

PropertyTypeSet fromDefault
titlestringstatic, expressionAI Summary
promptCodestringstaticai-summary
inputValuesjsonstatic, expression, binding{}
resultjsonstatic, expression, binding
loadingbooleanstatic, expression, bindingfalse
placeholderstringstaticNo summary yet.
autoRunbooleanstatictrue
regenerateLabelstringstaticRegenerate

Events: generateRequested

core.ai-translation ​

PropertyTypeSet fromDefault
titlestringstatic, expressionAI Translation
promptCodestringstaticai-translation
inputValuesjsonstatic, expression, binding{}
resultjsonstatic, expression, binding
loadingbooleanstatic, expression, bindingfalse
placeholderstringstaticNo translation yet.
autoRunbooleanstaticfalse
regenerateLabelstringstaticRegenerate

Events: generateRequested

core.alert-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"title":"Approval overdue","message":"3 leave ...
titlePathstringstatictitle
fieldsjsonstatic[{"label":"","valuePath":"message"}]
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindingwarning
tonestringstatic, expression, bindingwarning

Events: clicked

core.announcement-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"title":"Company holiday schedule published","...
titlePathstringstatictitle
fieldsjsonstatic[{"label":"","valuePath":"message"}]
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindingcampaign
tonestringstatic, expression, bindinginfo

Events: clicked

core.app-tile-grid ​

A SaaS-style application launcher grid — colored icon tiles, e.g. Microsoft 365's own app launcher — for surfacing a tenant's applications/modules as clickable tiles.

PropertyTypeSet fromDefault
itemsjsonstatic, expression, binding[{"label":"First app","icon":"grid","color":"#4...
primaryPathstringstaticlabel
iconPathstringstaticicon
colorPathstringstaticcolor
badgePathstringstaticbadge
subtitlePathstringstaticsubtitle
cardVariantstringstaticflat

Events: selected

json
{
  "instanceId": "tiles-app-launcher",
  "blockType": "core.app-tile-grid",
  "blockVersion": "1.0.0",
  "contractVersion": 1,
  "properties": {
    "items": { "source": "binding", "value": { "scope": "page", "key": "myApplications" } },
    "primaryPath": { "source": "static", "value": "displayName" },
    "iconPath": { "source": "static", "value": "iconKey" },
    "colorPath": { "source": "static", "value": "accentColor" }
  }
}
  • Use for a top-level "launcher" surface (e.g. an Application Launcher page), not as a substitute for in-app navigation (core.nav-menu/core.sidebar).
  • Set colorPath per tile for visual differentiation; omitted/invalid colors all fall back to the same default tint.
  • Use badgePath only for literal author-typed labels — it is not a live count (see core.menu-nav's badgeCount for that).

core.appointment-calendar ​

PropertyTypeSet fromDefault
resourcesjsonstatic, expression, binding[{"id":"provider1","label":"Dr. Nair"}]
eventsjsonstatic, expression, binding[{"id":"e1","resourceId":"provider1","label":"A...
slotStartHournumberstatic9
slotEndHournumberstatic17

Events: selected

core.article-feedback ​

PropertyTypeSet fromDefault
titlestringstaticWas this helpful?
portalstringstatic
itemstringstatic, binding

core.attachment-list ​

Displays a list of file attachments (name, size, type) with per-item open — and optionally remove — actions, for showing multiple documents attached to a record (e.g. all files on an employee's HR case).

PropertyTypeSet fromDefault
itemsjsonstatic, expression, binding[{"name":"Contract.pdf","url":"","size":"340 KB...
removablebooleanstaticfalse

Events: opened, removed

json
{
  "blockType": "core.attachment-list",
  "properties": {
    "items": { "source": "binding", "binding": { "scope": "block", "key": "caseAttachments" } },
    "removable": { "source": "static", "value": true }
  }
}
  • Set removable: true only where the caller actually wires a removed handler that deletes the underlying file — otherwise the button is misleading.
  • Bind items to a Data Source query filtered to the current record's attachments, not a global file list.
  • Use core.document-viewer instead when there is exactly one document to surface with richer per-document context.

core.attendance-card ​

Displays one day's attendance summary for an employee — date, check-in time, check-out time, and status (e.g. Present/Absent/Late).

PropertyTypeSet fromDefault
recordjsonstatic, binding{"date":"2026-07-21","checkIn":"09:02","checkOu...
datePathstringstaticdate
checkInPathstringstaticcheckIn
checkOutPathstringstaticcheckOut
statusPathstringstaticstatus
json
{
  "blockType": "core.attendance-card",
  "properties": {
    "record": { "source": "binding", "binding": { "scope": "block", "key": "todaysAttendance" } }
  }
}
  • Bind record to a per-day attendance query result, not a list — for multiple days use core.grid alongside this card, or repeat this card inside a list/loop container.
  • Keep datePath/checkInPath/checkOutPath/statusPath in sync with the actual attendance entity's field names rather than reshaping upstream data.
  • Pair with core.leave-balance on an Employee Self-Service dashboard for a combined attendance/leave overview.

core.availability ​

PropertyTypeSet fromDefault
resourcesjsonstatic, expression, binding[{"id":"r1","label":"Availability"}]
eventsjsonstatic, expression, binding[{"id":"e1","resourceId":"r1","label":"Busy","s...
slotStartHournumberstatic0
slotEndHournumberstatic24

Events: selected

core.booking-calendar ​

PropertyTypeSet fromDefault
resourcesjsonstatic, expression, binding[{"id":"venue1","label":"Main Hall"},{"id":"ven...
eventsjsonstatic, expression, binding[{"id":"e1","resourceId":"venue1","label":"Book...
slotStartHournumberstatic0
slotEndHournumberstatic24

Events: selected

core.business-unit-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"name":"North America Sales","code":"NA-SALES"...
titlePathstringstaticname
fieldsjsonstatic[{"label":"Code","valuePath":"code"},{"label":"...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindingdomain

Events: clicked

core.calendar-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding
titlePathstringstatictitle
fieldsjsonstatic[]
itemsjsonstatic, expression, binding[{"primary":"All-hands meeting","secondary":"10...
iconstringstatic, expression, bindingevent

Events: itemClicked

core.chat-window ​

PropertyTypeSet fromDefault
messagesjsonstatic, expression, binding[{"id":"1","authorId":"u2","authorName":"Jane D...
currentUserIdstringstatic, expression, binding
placeholderstringstaticType a message...
loadingbooleanstatic, expression, bindingfalse

Events: messageSent

core.company-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"name":"Spark ERP Inc.","legalName":"Spark ERP...
titlePathstringstaticname
fieldsjsonstatic[{"label":"Legal Name","valuePath":"legalName"}...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindingbusiness

Events: clicked

core.conversation-list ​

PropertyTypeSet fromDefault
itemsjsonstatic, expression, binding[{"title":"Jane Doe","lastMessage":"Sure, what'...
primaryPathstringstatictitle
secondaryPathstringstaticlastMessage
showAvatarbooleanstatic, expression, bindingtrue
badgePathstringstaticunreadCount
badgeColorPathstringstaticbadgeColor

Events: selected

core.custom-fields-panel ​

Renders and edits a record's tenant-authored custom fields (Custom Field Engine v1) — one input per active field definition for a given entity type/instance, with a single all-or-nothing Save.

PropertyTypeSet fromDefault
entityTypestringstatic, expression, binding
entityIdstringstatic, expression, binding
readOnlybooleanstaticfalse

Events: saved

json
{
  "instanceId": "custom-fields-employee-profile",
  "blockType": "core.custom-fields-panel",
  "blockVersion": "1.0.0",
  "contractVersion": 1,
  "properties": {
    "entityType": { "source": "static", "value": "employee" },
    "entityId": { "source": "binding", "binding": { "scope": "page", "key": "selectedEmployeeId" } },
    "readOnly": { "source": "static", "value": false }
  }
}
  • Always inject a real CustomFieldDataSource in production — the un-wired default renders no fields at all.
  • Set readOnly: true for display-only contexts (e.g. an audit/history view) rather than hiding the panel entirely.
  • Treat lookup-type fields as display-only in v1 — they render read-only regardless of readOnly, since no nested lookup data source exists yet.

core.customer-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"name":"Acme Corp","accountManager":"Jane Doe"...
titlePathstringstaticname
fieldsjsonstatic[{"label":"Account Manager","valuePath":"accoun...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindingstorefront

Events: clicked

core.data-card ​

A generic, author-configurable field-list card for showing one bound record's title plus a handful of labeled fields — unlike the fixed-shape ERP business cards (employee-card, etc.), both titlePath and the entire fields list are authored, not fixed.

PropertyTypeSet fromDefault
recordjsonstatic, binding{"title":"Sample Record","region":"West","owner...
titlePathstringstatictitle
fieldsjsonstatic[{"label":"Region","valuePath":"region"},{"labe...
iconstringstatic, expression, binding
tonestringstatic, expression, bindingdefault
itemsjsonstatic, expression, binding[]

Events: clicked, itemClicked

json
{
  "instanceId": "card-selected-employee",
  "blockType": "core.data-card",
  "blockVersion": "1.0.0",
  "contractVersion": 1,
  "properties": {
    "record": { "source": "binding", "value": { "scope": "page", "key": "selectedEmployee" } },
    "titlePath": { "source": "static", "value": "fullName" },
    "fields": {
      "source": "static",
      "value": [
        { "label": "Department", "valuePath": "department.name" },
        { "label": "Manager", "valuePath": "manager.fullName" }
      ]
    }
  }
}
  • Keep fields short (a handful of entries) — this is a summary card, not a full record view; use a Form for full editing.
  • Prefer the children slot only when the built-in title/field layout genuinely can't express the needed design — it fully overrides the built-in layout when non-empty.
  • Wire clicked to a navigate action reading ${event.record.<idField>} for drill-down.

core.department-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"name":"Engineering","code":"ENG","head":"Alex...
titlePathstringstaticname
fieldsjsonstatic[{"label":"Code","valuePath":"code"},{"label":"...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindinggroups

Events: clicked

core.document-viewer ​

Displays a summary of one document (name, size, type) with an "open" action — for showing a single linked document (e.g. an employee's offer letter) on a Page or Form.

PropertyTypeSet fromDefault
recordjsonstatic, binding{"name":"Employee Handbook.pdf","url":"","size"...
namePathstringstaticname
urlPathstringstaticurl
sizePathstringstaticsize
typePathstringstatictype

Events: opened

json
{
  "blockType": "core.document-viewer",
  "properties": {
    "record": { "source": "binding", "binding": { "scope": "block", "key": "offerLetterDoc" } }
  }
}
  • Bind record to a single document metadata query result; use core.attachment-list when there are multiple documents to show.
  • Wire opened to an openUrl/navigate action pointing at the document's real URL rather than embedding preview logic in this widget.
  • Keep urlPath pointing at a signed/authorized URL when documents are access-controlled (File Management module concern, not this widget's).

core.dynamic-table ​

PropertyTypeSet fromDefault
itemsjsonstatic, expression, binding[{"category":"North","amount":1200},{"category"...
columnsjsonstatic, expression, binding[]

Events: rowClicked

core.employee-calendar ​

PropertyTypeSet fromDefault
resourcesjsonstatic, expression, binding[{"id":"emp1","label":"Sam Patel"},{"id":"emp2"...
eventsjsonstatic, expression, binding[{"id":"e1","resourceId":"emp1","label":"Mornin...
slotStartHournumberstatic8
slotEndHournumberstatic20

Events: selected

core.employee-card ​

Displays a compact summary of one employee record (name, job title, department, photo) as a clickable card — the canonical HCM "who is this" tile for directories, org charts, and dashboards.

PropertyTypeSet fromDefault
recordjsonstatic, binding{"fullName":"Jane Doe","jobTitle":"Product Mana...
namePathstringstaticfullName
titlePathstringstaticjobTitle
departmentPathstringstaticdepartment.name
photoPathstringstaticphoto

Events: opened

json
{
  "blockType": "core.employee-card",
  "properties": {
    "record": { "source": "binding", "binding": { "scope": "page", "key": "selectedEmployee" } },
    "namePath": { "source": "static", "value": "fullName" },
    "titlePath": { "source": "static", "value": "jobTitle" },
    "departmentPath": { "source": "static", "value": "department.name" },
    "photoPath": { "source": "static", "value": "photoUrl" }
  }
}
  • Bind record to a single-row Data Source result (e.g. "Get Employee by Id"), not a full list.
  • Adjust the *Path properties instead of reshaping the upstream entity to match the widget's default field names.
  • Use the children slot when the built-in card layout doesn't match a tenant's branding, rather than forking the widget.

core.file-browser ​

PropertyTypeSet fromDefault
nodesjsonstatic, expression, binding[{"id":"cab-1","name":"HR Documents","type":"ca...

Events: expand, selected

core.file-version-history ​

PropertyTypeSet fromDefault
fileIdstringstatic, expression, binding
versionsjsonstatic, expression, binding[{"versionNumber":2,"sizeBytes":348160,"created...
currentVersionnumberstatic, expression, binding

Events: download, restore

core.financial-summary-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"period":"Q2 2026","revenue":1250000,"expenses...
titlePathstringstaticperiod
fieldsjsonstatic[{"label":"Revenue","valuePath":"revenue"},{"la...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindinginsights

Events: clicked

core.gantt-chart ​

Displays a set of tasks as horizontal bars positioned along a shared timeline, with an optional in-bar progress indicator — the standard project/task-schedule visualization.

PropertyTypeSet fromDefault
tasksjsonstatic, expression, binding[{"id":"1","label":"Design","start":"2026-07-01...
json
{
  "contractVersion": 1,
  "instanceId": "onboarding-gantt",
  "blockType": "core.gantt-chart",
  "blockVersion": "1.0.0",
  "properties": {
    "tasks": {
      "source": "static",
      "value": [
        { "id": "t1", "label": "Offer & Paperwork", "start": "2026-08-01", "end": "2026-08-03", "progress": 100 },
        { "id": "t2", "label": "IT Provisioning", "start": "2026-08-03", "end": "2026-08-05", "progress": 50 },
        { "id": "t3", "label": "Orientation", "start": "2026-08-05", "end": "2026-08-06", "progress": 0 }
      ]
    }
  }
}
  • Keep label short — long labels compete with the category-axis width
  • Use progress (0–100) to reflect real completion so the two-tone bar is
  • Prefer a binding source for tasks when the data comes from a live

core.goods-receipt-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"grNumber":"GR-3390","poNumber":"PO-5521","rec...
titlePathstringstaticgrNumber
fieldsjsonstatic[{"label":"PO Number","valuePath":"poNumber"},{...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindinginventory

Events: clicked

core.grid ​

A full-featured, license-free server-side data grid — sorting, filtering, paging, grouping with per-group aggregates, column visibility/order/pin/width/density, inline cell editing, row selection, and CSV export — the primary widget for tabular record lists (e.g. Employee Directory, Payroll Runs, Leave Requests).

PropertyTypeSet fromDefault
columnsjsonstatic, expression, binding[{"name":"name"},{"name":"status"}]
pageSizenumberstatic25
externalFilterjsonstatic, expression, binding
searchstringstatic, expression, binding
showColumnFiltersbooleanstatictrue
bulkActionsjsonstatic[]
hiddenActionKeysjsonstatic, expression, binding[]
dataSourcestringstatic
refreshTriggerstringstatic, expression, binding
reorderableRowsbooleanstaticfalse
loadModestringstaticpaged
rowAccentjsonstatic, expression, binding[]
detailFieldstringstatic
sharedViewsApijsonstatic, expression, binding

Events: selectionChanged, rowClicked, rowEdited, rowAction, bulkAction, rowReordered

Outputs: rows (json), total (number), pageIndex (number), sort (json), filter (json), groups (json), aggregates (json), expandedGroups (json), error (string), circuitOpen (boolean), selectedIds (json), density (string), groupBy (string)

json
{
  "blockType": "core.grid",
  "properties": {
    "columns": {
      "source": "static",
      "value": [
        { "name": "employeeName", "type": "string", "headerKey": "Employee" },
        { "name": "department", "type": "string", "headerKey": "Department", "groupable": true },
        { "name": "status", "type": "string", "headerKey": "Status" },
        { "name": "salary", "type": "number", "headerKey": "Salary", "aggregate": "sum" }
      ]
    },
    "pageSize": { "source": "static", "value": 50 }
  }
}
  • Always inject a real GridDataSource (via coreBlockTypes(gridDataSource, ...)) backed by an actual Query Engine/Data Source in production — never ship the grid pointed at HarnessGridDataSource outside tests/dev.
  • Use refreshTrigger (bound to page-scope state) to re-query in response to a sibling filter control, rather than trying to force a re-render another way — a bound-property change is the block's only real re-render trigger.
  • Set aggregate/groupable per column in columns rather than trying to compute aggregates client-side.

core.invoice-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"invoiceNumber":"INV-1042","customerName":"Acm...
titlePathstringstaticinvoiceNumber
fieldsjsonstatic[{"label":"Customer","valuePath":"customerName"...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindingreceipt-long

Events: clicked

core.journal-entry-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"entryNumber":"JE-2026-0456","date":"2026-07-3...
titlePathstringstaticentryNumber
fieldsjsonstatic[{"label":"Date","valuePath":"date"},{"label":"...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindingmenu-book

Events: clicked

core.kanban ​

A drag-and-drop kanban board.

PropertyTypeSet fromDefault
columnsjsonstatic, expression, binding[{"id":"todo","title":"To Do","cardIds":["card-...
cardsjsonstatic, expression, binding[{"id":"card-1","title":"Design review","tags":...

Events: cardMoved

json
{ "blockType": "core.kanban", "instanceId": "leave-board", "blockVersion": "1.0.0", "contractVersion": 1,
  "properties": { "columns": {"source":"binding","binding":{"scope":"page","key":"leaveColumns"}}, "cards": {"source":"binding","binding":{"scope":"page","key":"leaveCards"}} } }
  • Wire cardMoved to a callApi action to persist the new column placement server-side — the widget never persists on its own.

core.lead-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"name":"Riya Shah","company":"Nimbus Retail","...
titlePathstringstaticname
fieldsjsonstatic[{"label":"Company","valuePath":"company"},{"la...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindingperson-search

Events: clicked

core.leave-balance ​

Displays an employee's leave balance for one leave type — used, total, and a computed remaining amount.

PropertyTypeSet fromDefault
recordjsonstatic, binding
leaveTypePathstringstaticleaveType
usedPathstringstaticused
totalPathstringstatictotal
json
{
  "blockType": "core.leave-balance",
  "properties": {
    "record": { "source": "binding", "binding": { "scope": "block", "key": "annualLeaveBalance" } }
  }
}
  • Bind record to one leave-type balance at a time; repeat the widget (one per leave type) inside a list/container for a multi-type leave summary.
  • Rely on the widget's own remaining computation instead of pre-computing it upstream — it keeps used/total as the single source of truth.
  • Pair with core.attendance-card on Employee Self-Service pages.

core.list ​

A simple, unmapped-columns repeated row list for showing a compact array of records as primary/secondary text rows (contrast with core.grid, which is the tabular/sortable/filterable data component).

PropertyTypeSet fromDefault
itemsjsonstatic, expression, binding[{"label":"First item","description":"Sample de...
primaryPathstringstaticlabel
secondaryPathstringstaticdescription
showAvatarbooleanstatic, expression, bindingfalse
layoutstringstaticrows
showConnectorsbooleanstaticfalse
badgePathstringstaticbadge
badgeColorPathstringstaticbadgeColor
datePathstringstaticdate

Events: selected

json
{
  "instanceId": "list-open-tickets",
  "blockType": "core.list",
  "blockVersion": "1.0.0",
  "contractVersion": 1,
  "properties": {
    "items": { "source": "binding", "binding": { "scope": "page", "key": "openTickets" } },
    "primaryPath": { "source": "static", "value": "subject" },
    "secondaryPath": { "source": "static", "value": "status" }
  }
}
  • Use core.list for a simple repeated row projection; use core.grid when you need sortable/filterable tabular columns.
  • Keep primaryPath/secondaryPath pointed at scalar fields — non-scalar values are stringified via String(...).
  • Wire selected to a navigate action reading ${event.item.<field>} rather than trying to read page state directly.

core.meeting-calendar ​

PropertyTypeSet fromDefault
resourcesjsonstatic, expression, binding[{"id":"room-a","label":"Room A"},{"id":"room-b...
eventsjsonstatic, expression, binding[{"id":"e1","resourceId":"room-a","label":"Stan...
slotStartHournumberstatic9
slotEndHournumberstatic17

Events: selected

core.my-approvals ​

PropertyTypeSet fromDefault
itemsjsonstatic, expression, binding[{"title":"Leave request — Sam Patel","subtitle...
primaryPathstringstatictitle
secondaryPathstringstaticsubtitle
badgePathstringstaticbadge
badgeColorPathstringstaticbadgeColor
datePathstringstaticdate

Events: selected

core.my-notifications ​

PropertyTypeSet fromDefault
itemsjsonstatic, expression, binding[{"title":"Your leave request was approved","su...
primaryPathstringstatictitle
secondaryPathstringstaticsubtitle
badgePathstringstaticbadge
badgeColorPathstringstaticbadgeColor
datePathstringstaticdate

Events: selected

core.my-tasks ​

PropertyTypeSet fromDefault
itemsjsonstatic, expression, binding[{"title":"Prepare Q3 report","subtitle":"Due A...
primaryPathstringstatictitle
secondaryPathstringstaticsubtitle
badgePathstringstaticbadge
badgeColorPathstringstaticbadgeColor
datePathstringstaticdate

Events: selected

core.nav-menu ​

An iPad-style icon-grid menu of a single app's own navigation sections (e.g. a Dashboard/Settings tile grid within one application), distinct from core.app-tile-grid's cross-application launcher role even though both share the same tile-grid render code.

PropertyTypeSet fromDefault
itemsjsonstatic, expression, binding[{"label":"Dashboard","icon":"home","color":"#4...
primaryPathstringstaticlabel
iconPathstringstaticicon
colorPathstringstaticcolor

Events: selected

json
{
  "instanceId": "navmenu-hcm-sections",
  "blockType": "core.nav-menu",
  "blockVersion": "1.0.0",
  "contractVersion": 1,
  "properties": {
    "items": {
      "source": "static",
      "value": [
        { "label": "Employees", "icon": "people", "color": "#4F46E5" },
        { "label": "Payroll", "icon": "wallet", "color": "#16A34A" },
        { "label": "Attendance", "icon": "schedule", "color": "#F59E0B" }
      ]
    }
  }
}
  • Use core.nav-menu for a single application's own sub-navigation; use core.app-tile-grid for a cross-application launcher.
  • Keep tile counts small (a handful to a dozen) — this is a landing/home surface, not a dense data list.
  • Wire selected to a navigate action reading ${event.item.route} (or equivalent field) rather than hardcoding routes per tile.

core.news-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding
titlePathstringstatictitle
fieldsjsonstatic[]
itemsjsonstatic, expression, binding[{"primary":"New benefits partner announced","s...
iconstringstatic, expression, bindingarticle

Events: itemClicked

core.opportunity-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"name":"Nimbus Retail — Platform Upgrade","sta...
titlePathstringstaticname
fieldsjsonstatic[{"label":"Stage","valuePath":"stage"},{"label"...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindingtrending-up

Events: clicked

core.payment-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"reference":"PMT-3081","payerName":"Acme Corp"...
titlePathstringstaticreference
fieldsjsonstatic[{"label":"Payer / Payee","valuePath":"payerNam...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindingpayments

Events: clicked

core.payroll-summary ​

Displays a payroll period summary for an employee — period, gross pay, deductions, and net pay — formatted as localized currency.

PropertyTypeSet fromDefault
recordjsonstatic, binding{"period":"July 2026","gross":5000,"deductions"...
periodPathstringstaticperiod
grossPathstringstaticgross
deductionsPathstringstaticdeductions
netPathstringstaticnet
currencyCodestringstaticUSD
json
{
  "blockType": "core.payroll-summary",
  "properties": {
    "record": { "source": "binding", "binding": { "scope": "block", "key": "julyPayrollRun" } },
    "currencyCode": { "source": "static", "value": "INR" }
  }
}
  • Set currencyCode explicitly per tenant/country rather than relying on the "USD" default, especially for multi-country HCM deployments.
  • Bind record to one payroll period at a time; use core.grid for a payroll history list.
  • Keep numeric fields (gross/deductions/net) as raw numbers upstream — let the widget handle currency formatting rather than pre-formatting strings.

core.pending-actions ​

PropertyTypeSet fromDefault
itemsjsonstatic, expression, binding[{"title":"Complete your profile","subtitle":"M...
primaryPathstringstatictitle
secondaryPathstringstaticsubtitle
badgePathstringstaticbadge
badgeColorPathstringstaticbadgeColor
datePathstringstaticdate

Events: selected

core.pivot-table ​

Aggregates tabular data by a row field (and optional column field).

PropertyTypeSet fromDefault
datajsonstatic, expression, binding[{"category":"North","amount":1200},{"category"...
rowFieldPathstringstaticcategory
columnFieldPathstringstatic
valueFieldPathstringstaticamount
aggregationstringstaticsum
json
{ "blockType": "core.pivot-table", "instanceId": "expense-pivot", "blockVersion": "1.0.0", "contractVersion": 1,
  "properties": { "data": {"source":"binding","binding":{"scope":"page","key":"expenseRows"}}, "rowFieldPath": {"source":"static","value":"department"}, "valueFieldPath": {"source":"static","value":"amount"}, "aggregation": {"source":"static","value":"sum"} } }
  • Use core.grid instead for row-level data browsing; use this widget specifically for grouped/aggregated summaries.

core.portal-api-tokens ​

PropertyTypeSet fromDefault
titlestringstaticAPI tokens
portalstringstatic

core.portal-approvals ​

PropertyTypeSet fromDefault
titlestringstaticNeeds your approval
portalstringstatic
columnsjsonstatic[]

core.portal-catalog ​

PropertyTypeSet fromDefault
titlestringstaticHow can we help?
portalstringstatic
entitystringstatic
itemsjsonstatic[]
formFieldsjsonstatic[]

core.portal-delegates ​

PropertyTypeSet fromDefault
titlestringstaticPeople who act for me
portalstringstatic
rolesstringstatic

core.portal-library ​

PropertyTypeSet fromDefault
titlestringstaticDocuments
portalstringstatic

core.portal-messages ​

PropertyTypeSet fromDefault
titlestringstaticMessages
portalstringstatic

core.portal-notifications ​

PropertyTypeSet fromDefault
titlestringstaticNotifications
portalstringstatic

core.portal-records ​

PropertyTypeSet fromDefault
titlestringstaticMy records
portalstringstatic
dataServicestringstatic
columnsjsonstatic[]
pageSizenumberstatic10
showDetailbooleanstatictrue
emptyTextstringstaticNothing here yet.
entitystringstatic
formFieldsjsonstatic[]
allowCreatebooleanstaticfalse
allowEditbooleanstaticfalse
idFieldstringstaticid
showFilesbooleanstaticfalse
showTimelinebooleanstaticfalse
parametersjsonstatic{}
PropertyTypeSet fromDefault
titlestringstaticSearch
portalstringstatic

core.portal-summary ​

PropertyTypeSet fromDefault
titlestringstaticSummary
portalstringstatic
dataServicestringstatic
tilesjsonstatic[]
parametersjsonstatic{}

core.portal-team ​

PropertyTypeSet fromDefault
titlestringstaticOur team
portalstringstatic

core.product-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"name":"Wireless Mouse","sku":"WM-2200","categ...
titlePathstringstaticname
fieldsjsonstatic[{"label":"SKU","valuePath":"sku"},{"label":"Ca...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindinginventory-2

Events: clicked

core.purchase-order-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"poNumber":"PO-5521","supplierName":"BluePeak ...
titlePathstringstaticpoNumber
fieldsjsonstatic[{"label":"Supplier","valuePath":"supplierName"...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindingassignment

Events: clicked

core.quotation-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"quoteNumber":"QUO-2216","customerName":"Acme ...
titlePathstringstaticquoteNumber
fieldsjsonstatic[{"label":"Customer","valuePath":"customerName"...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindingrequest-quote

Events: clicked

core.recent-records ​

PropertyTypeSet fromDefault
itemsjsonstatic, expression, binding[{"title":"Acme Corp — Renewal Quote","subtitle...
primaryPathstringstatictitle
secondaryPathstringstaticsubtitle
badgePathstringstaticbadge
badgeColorPathstringstaticbadgeColor
datePathstringstaticdate

Events: selected

core.role-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"name":"HR Manager","permissionCount":38,"user...
titlePathstringstaticname
fieldsjsonstatic[{"label":"Permission Count","valuePath":"permi...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindingadmin-panel-settings

Events: clicked

core.sales-order-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"orderNumber":"SO-7781","customerName":"Acme C...
titlePathstringstaticorderNumber
fieldsjsonstatic[{"label":"Customer","valuePath":"customerName"...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindingshopping-cart

Events: clicked

core.scheduler ​

Displays a set of resources (rooms, staff, machines, ...) as rows against a fixed daily time range, with each resource's events drawn as bars within that range — a day-view resource scheduler/calendar grid.

PropertyTypeSet fromDefault
resourcesjsonstatic, expression, binding[{"id":"r1","label":"Room A"},{"id":"r2","label...
eventsjsonstatic, expression, binding[{"id":"e1","resourceId":"r1","label":"Standup"...
slotStartHournumberstatic8
slotEndHournumberstatic18

Events: selected

json
{
  "contractVersion": 1,
  "instanceId": "room-scheduler",
  "blockType": "core.scheduler",
  "blockVersion": "1.0.0",
  "properties": {
    "resources": {
      "source": "static",
      "value": [
        { "id": "conf-a", "label": "Conference Room A" },
        { "id": "conf-b", "label": "Conference Room B" }
      ]
    },
    "events": {
      "source": "binding",
      "binding": "page.roomBookingsToday"
    },
    "slotStartHour": { "source": "static", "value": 8 },
    "slotEndHour": { "source": "static", "value": 19 }
  },
  "events": {
    "selected": {
      "source": "action-chain",
      "actions": []
    }
  }
}
  • Keep slotStartHour/slotEndHour matched to real business hours so
  • Bind events to a live query (bookings/interviews/shifts) rather than
  • Wire the selected event to an action chain (e.g. open a detail dialog)

core.stock-movement-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"movementNumber":"SM-8842","product":"Wireless...
titlePathstringstaticmovementNumber
fieldsjsonstatic[{"label":"Product","valuePath":"product"},{"la...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindingsync-alt

Events: clicked

core.stock-transfer-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"transferNumber":"ST-1190","product":"Wireless...
titlePathstringstatictransferNumber
fieldsjsonstatic[{"label":"Product","valuePath":"product"},{"la...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindingcompare-arrows

Events: clicked

core.supplier-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"name":"BluePeak Materials","category":"Raw Ma...
titlePathstringstaticname
fieldsjsonstatic[{"label":"Category","valuePath":"category"},{"...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindinglocal-shipping

Events: clicked

core.survey ​

PropertyTypeSet fromDefault
titlestringstaticHow likely are you to recommend us to a friend?
portalstringstatic
surveystringstaticnps
scalestringstaticnps
questionsjsonstatic[]

core.task-card ​

Displays a summary of one task/to-do item — title, due date, assignee, status, and priority — as a clickable card, for task lists, My Tasks inboxes, and workflow queues.

PropertyTypeSet fromDefault
recordjsonstatic, binding{"title":"Prepare Q3 report","dueDate":"2026-08...
titlePathstringstatictitle
duePathstringstaticdueDate
assigneePathstringstaticassignee
statusPathstringstaticstatus
priorityPathstringstaticpriority

Events: clicked

json
{
  "blockType": "core.task-card",
  "properties": {
    "record": { "source": "binding", "binding": { "scope": "block", "key": "myTask" } }
  }
}
  • Bind record to one task at a time; combine with a list/loop container or core.grid for a full task inbox.
  • Wire clicked to a navigate action toward a task detail Page or Form.
  • Use priorityPath/statusPath consistently with the tenant's task/workflow entity so status/priority values render as expected by the render adapter's styling (e.g. color-coded chips).

core.timeline-calendar ​

PropertyTypeSet fromDefault
resourcesjsonstatic, expression, binding[{"id":"r1","label":"Timeline"}]
eventsjsonstatic, expression, binding[{"id":"e1","resourceId":"r1","label":"Design R...
slotStartHournumberstatic8
slotEndHournumberstatic18

Events: selected

core.tree-grid ​

Displays hierarchical data as a table — one row per node, with multiple columns per row instead of a single label — for structures like an org chart-as-table or a nested category/BOM listing.

PropertyTypeSet fromDefault
columnsjsonstatic[{"key":"name","label":"Name"},{"key":"status",...
nodesjsonstatic, expression, binding[{"id":"root","cells":{"name":"Engineering","st...

Events: select

json
{
  "blockType": "core.tree-grid",
  "properties": {
    "columns": { "source": "static", "value": [{ "key": "name", "label": "Department" }, { "key": "headcount", "label": "Headcount" }] },
    "nodes": { "source": "binding", "binding": { "scope": "page", "key": "orgUnitTree" } }
  }
}
  • Use core.tree-grid for hierarchical data that needs multiple columns per node; use plain core.tree-view when a single label per node is enough.
  • Keep columns[].key in sync with the keys present in each node's cells record.
  • Bind nodes to a Data Source result already shaped as a nested tree — this widget does not build hierarchy from a flat list itself.

core.user-list ​

PropertyTypeSet fromDefault
itemsjsonstatic, expression, binding[{"name":"Jane Doe","title":"Engineering Manage...
primaryPathstringstaticname
secondaryPathstringstatictitle
showAvatarbooleanstatic, expression, bindingtrue
badgePathstringstaticbadge
badgeColorPathstringstaticbadgeColor

Events: selected

core.user-profile ​

Displays a compact summary of one system user (name, role, email, avatar, status) — the generic "who is logged in / who owns this" tile, distinct from core.employee-card which is HR-domain-specific.

PropertyTypeSet fromDefault
recordjsonstatic, binding{"name":"Jane Doe","role":"Administrator","emai...
namePathstringstaticname
rolePathstringstaticrole
emailPathstringstaticemail
photoPathstringstaticavatar
statusPathstringstaticstatus
json
{
  "blockType": "core.user-profile",
  "properties": {
    "record": { "source": "binding", "binding": { "scope": "session", "key": "currentUser" } }
  }
}
  • Bind record to the current-user/session context for header/profile-menu placement, or to a queried user row for an admin "user detail" view.
  • Reserve core.employee-card for HR-specific employee records (job title/department); use core.user-profile for identity/account-facing contexts (role/email/status).
  • Use the children slot rather than forking the widget when a tenant needs a different visual layout.

core.warehouse-card ​

PropertyTypeSet fromDefault
recordjsonstatic, binding{"name":"Main Warehouse","code":"WH-01","locati...
titlePathstringstaticname
fieldsjsonstatic[{"label":"Code","valuePath":"code"},{"label":"...
itemsjsonstatic, expression, binding[]
iconstringstatic, expression, bindingwarehouse

Events: clicked