Resource List

Paginated resource list view

SaaSResource

Overview

ResourceList displays resources in a filterable, searchable list using ResourceCard components. It supports search by name or type, status and type dropdown filters, loading skeleton state, and empty state messaging. Each card can trigger selection and detail navigation callbacks.

Usage

import { ResourceList } from "@leanicon/web-builder-library/saas";

<ResourceList
  resources={[
    {
      id: "room-1",
      name: "Conference Room A",
      type: "meeting-room",
      status: "active",
      capacity: { min: 1, max: 10, unit: "people" },
    },
    {
      id: "desk-1",
      name: "Hot Desk Area",
      type: "desk",
      status: "active",
      capacity: { min: 1, max: 20, unit: "people" },
    },
  ]}
  showSearch
  showStatusFilter
  onResourceSelect={(r) => console.log("Selected:", r.id)}
  onViewDetails={(r) => router.push(`/resources/${r.id}`)}
/>;

Variants

Default

5 resources found

Conference Room A

meeting-room

Capacity: 1-10 people

Active

Conference Room B

meeting-room

Capacity: 1-6 people

Active

Hot Desk Area

desk

Capacity: 1-20 people

Active

Projector HP-2000

equipment

Maintenance

Training Room

meeting-room

Capacity: 1-30 people

Inactive

Default (Dark)

3 resources found

Conference Room A

meeting-room

Capacity: 1-10 people

Active

Conference Room B

meeting-room

Capacity: 1-6 people

Active

Hot Desk Area

desk

Capacity: 1-20 people

Active

3 resources found

Conference Room A

meeting-room

Capacity: 1-10 people

Active

Conference Room B

meeting-room

Capacity: 1-6 people

Active

Hot Desk Area

desk

Capacity: 1-20 people

Active

With Filters

3 resources found

Conference Room A

meeting-room

Capacity: 1-10 people

Active

Projector HP-2000

equipment

Maintenance

Training Room

meeting-room

Capacity: 1-30 people

Inactive

Loading

Empty

0 resources found

No resources found

Single Resource

1 resource found

Conference Room A

meeting-room

Capacity: 1-10 people

Active

Props

NameTypeDefaultRequiredDescription
resources(ResourceSummary | ResourceData)[]—YesList of resources to display
loadingbooleanfalseNoWhether list is in loading state
selectedIdstring—NoCurrently selected resource ID
showSearchbooleantrueNoShow search filter
showStatusFilterbooleantrueNoShow status filter
showTypeFilterbooleanfalseNoShow type filter
statusOptionsResourceStatus[]["active", "inactive", "maintenance"]NoAvailable status options for filter
typeOptionsstring[][]NoAvailable type options for filter
emptyMessagestring—NoEmpty state message
labelsRecord<string, string>—NoOptional label overrides
classNamestring—NoCustom class name
onResourceSelect((resource: ResourceSummary | ResourceData) => void)—NoCalled when a resource is selected
onViewDetails((resource: ResourceSummary | ResourceData) => void)—NoCalled when view details is clicked