Nasaq

CompanyList

A list of companies as a table or cards with logo, domain, industry, location, contacts count, tags, owner and last activity, plus search, industry and tag and owner filters, bulk select, loading skeletons and an empty state.

PreviewOpen ↗

Code

import { CompanyList, type Company } from "@fadymondy/nasaq/web";const companies: Company[] = [  { id: "1", name: "Acme", domain: "acme.com", industry: "Manufacturing", location: "Riyadh", contactsCount: 12, owner: { name: "Omar Nasser" }, lastActivity: new Date() },];export function Companies() {  return <CompanyList companies={companies} />;}

CRM · beta

Live examples and controls: CompanyList in the lab.

Install

npx shadcn@latest add https://docs.nasaqui.com/r/company-list.json

The companies (accounts) screen of a CRM. It is EntityList with the columns, cards and filters set up: a square logo, the domain, industry, location, how many contacts the company has, tags, owner and last activity.

When to use

  • A CRM list of organisations, clients or accounts.

When not to use

Import

import { CompanyList } from "@fadymondy/nasaq/web";
// inside this monorepo: "@nasaq/web"

Quick start

import { CompanyList, type Company } from "@fadymondy/nasaq/web";

const companies: Company[] = [
  { id: "1", name: "Acme", domain: "acme.com", industry: "Manufacturing", location: "Riyadh", contactsCount: 12, owner: { name: "Omar Nasser" }, lastActivity: new Date() },
];

export function Companies() {
  return <CompanyList companies={companies} />;
}

Anatomy

CompanyList renders EntityList. Columns: name (logo, name, domain), industry, location (hidden by default), contacts, tags, owner, last activity. Facets: industry, tags, owner.

API

CompanyListProps extends the EntityList props (view, pageSize, selectable, toolbar, bulkActions, rowActions, onRowClick, loading, error, onRetry, empty, defaultSort, className).

PropTypeDescription
companiesCompany[]{ id, name, domain?, logo?, industry?, location?, contactsCount, tags?, owner?, lastActivity? }.
labelstringAccessible name. Default "Companies" / "الشركات".
labelsPartial<CompanyListLabels>Override any string.

Examples

Logos

<CompanyList companies={companies.map((c) => ({ ...c, logo: `/logos/${c.id}.svg` }))} />

Use the company's own logo file. Without one the list shows initials on a square tile; it never draws a brand mark.

Accessibility

Inherited from EntityList: table or card grid, named checkboxes and menus, a live result count.

RTL & i18n

  • English and Arabic strings ship. Domains are set left-to-right in <bdi dir="ltr">; counts and times follow the locale.

Styling & tokens

  • The logo is a square Avatar (shape="square"), so wide logos are not cropped to a circle.

Do / Don't

  • Do pass the domain without a scheme (acme.com).
  • Don't substitute another company's logo when yours is missing; leave logo empty.

Lab

https://docs.nasaqui.com/?path=/docs/components-crm-company-list--docs

On this page