Data display
Present records: tables, lists, trees, boards, and disclosure of detail.
Table #
Static and sortable data tables.
Table #
Styled <table>; pass <thead> / <tbody> as children.
| Project | Status |
|---|---|
| marketing-site | Ready |
| docs | Building |
<Table striped fullwidth>
<thead>
<tr>
<th scope="col">Project</th>
<th scope="col">Status</th>
</tr>
</thead>
<tbody>
<tr>
<td>marketing-site</td>
<td>Ready</td>
</tr>
<tr>
<td>docs</td>
<td>Building</td>
</tr>
</tbody>
</Table>| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
bordered | boolean | Borders around every cell. | ||
children | content | Table parts: Thead, Tbody, Tfoot (or native elements). | ||
fullwidth | boolean | Stretch to the container's width. | ||
hoverable | boolean | Highlight the row under the pointer. | ||
narrow | boolean | Compact cell padding. | ||
striped | boolean | Alternate row shading. |
Parts
Thead #
Table head section.
| Invoice | Amount |
|---|---|
| INV-014 | $49.00 |
<Table>
<Thead>
<Tr>
<Th scope="col">Invoice</Th>
<Th scope="col">Amount</Th>
</Tr>
</Thead>
<Tbody>
<Tr>
<Td>INV-014</Td>
<Td>$49.00</Td>
</Tr>
</Tbody>
</Table>| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
children | content | Rows or cell content. |
Tbody #
Table body section.
| INV-014 | $49.00 |
| INV-013 | $49.00 |
<Table>
<Tbody>
<Tr>
<Td>INV-014</Td>
<Td>$49.00</Td>
</Tr>
<Tr>
<Td>INV-013</Td>
<Td>$49.00</Td>
</Tr>
</Tbody>
</Table>| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
children | content | Rows or cell content. |
Tfoot #
Table footer section.
| INV-014 | $49.00 |
| Total | $49.00 |
|---|
<Table>
<Tbody>
<Tr>
<Td>INV-014</Td>
<Td>$49.00</Td>
</Tr>
</Tbody>
<Tfoot>
<Tr>
<Th scope="row">Total</Th>
<Td>$49.00</Td>
</Tr>
</Tfoot>
</Table>| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
children | content | Rows or cell content. |
Tr #
Table row (clickable when onClick is set).
| INV-014 | Paid |
<Table>
<Tbody>
<Tr>
<Td>INV-014</Td>
<Td>Paid</Td>
</Tr>
</Tbody>
</Table>| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
children | content | Rows or cell content. | ||
onClick | (e: MouseEvent) => void | Makes the row clickable. |
Th #
Table header cell.
| Status |
|---|
<Table>
<Thead>
<Tr>
<Th scope="col">
Status
</Th>
</Tr>
</Thead>
</Table>| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
abbr | string | Short form of the header, read by screen readers. | ||
children | content | Rows or cell content. | ||
colspan | string | number | Columns the cell spans. | ||
headers | string | Ids of the header cells describing this cell. | ||
rowspan | string | number | Rows the cell spans. | ||
scope | "row" | "col" | "rowgroup" | "colgroup" | Which cells a header cell describes. |
Td #
Table data cell.
| Paid |
<Table>
<Tbody>
<Tr>
<Td>Paid</Td>
</Tr>
</Tbody>
</Table>| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
abbr | string | Short form of the header, read by screen readers. | ||
children | content | Rows or cell content. | ||
colspan | string | number | Columns the cell spans. | ||
headers | string | Ids of the header cells describing this cell. | ||
rowspan | string | number | Rows the cell spans. | ||
scope | "row" | "col" | "rowgroup" | "colgroup" | Which cells a header cell describes. |
DataTable #
Sortable data grid with ARIA table semantics (rowgroups, aria-sort, header sort buttons). Sorting is stable; clicking cycles asc → desc → none.
<DataTable
label="Deploys"
rows={[
{ id: "128", branch: "main", duration: 102 },
{ id: "127", branch: "feat/ui-kit", duration: 88 },
{ id: "126", branch: "main", duration: 131 },
]}
columns={[
{ id: "id", header: "Deploy", cell: (r: { id: string }) => `#${r.id}` },
{ id: "branch", header: "Branch", cell: (r: { branch: string }) => r.branch },
{
id: "duration",
header: "Duration",
cell: (r: { duration: number }) => `${r.duration}s`,
sortValue: (r: { duration: number }) => r.duration,
},
]}
/>Slots: root body cell empty head header row sort
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
columns | DataTableColumn<T>[] | yes | Column definitions, in order. | |
rows | T[] | yes | Row data; each row needs a unique id. | |
defaultSort | DataTableSort | Initial sort (read once). | ||
empty | content | Shown when there are no rows. | ||
label | string | Accessible name for the table. | ||
onSortChange | (sort: DataTableSort | null) => void | Notified after a header click changes the sort. |
DataTableColumn
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | Column id (used by sorting). |
header | string | yes | Column header text. |
cell | (row: T) => unknown | yes | Renders a row's cell for this column. |
sortValue | (row: T) => string | number | Value to sort by; the column is sortable when set. |
DataTableSort
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | Id of the sorted column. |
dir | "asc" | "desc" | yes | Sort direction. |
Also accepts the shared props: pass-through attributes, class, style, classes, styles, unstyled.
Description list #
Label / value pairs.
DescriptionList #
Label / value pairs (<dl>).
- Region
- eu-central-1
- Runtime
- Bun 1.3
- Created
- Sep 3, 2026
<DescriptionList
items={[
{ label: "Region", value: "eu-central-1" },
{ label: "Runtime", value: "Bun 1.3" },
{ label: "Created", value: "Sep 3, 2026" },
]}
/>Slots: root label row value
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
items | DescriptionItem[] | yes | Label / value pairs, in order. |
DescriptionItem
| Field | Type | Required | Description |
|---|---|---|---|
label | string | yes | Term (rendered as <dt>). |
value | content | yes | Description text or content (rendered as <dd>). |
PropertyList #
Label / value pairs.
- Status
- Active
- Owner
- Ada Lovelace
- Region
- eu-central-1
<PropertyList
items={[
{ label: "Status", value: "Active" },
{ label: "Owner", value: "Ada Lovelace" },
{ label: "Region", value: "eu-central-1" },
]}
/>Slots: root label row value
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
items | PropertyItem[] | yes | Properties, in order. |
PropertyItem
| Field | Type | Required | Description |
|---|---|---|---|
label | string | yes | Property name. |
value | content | yes | Property value (text or content). |
Also accepts the shared props: pass-through attributes, class, style, classes, styles, unstyled.
List #
Plain and grouped lists.
List #
Styled list (ordered for numbers).
- Install the package
- Import the stylesheet
- Render your first component
<List>
<ListItem>Install the package</ListItem>
<ListItem>Import the stylesheet</ListItem>
<ListItem>Render your first component</ListItem>
</List>| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
children | content | ListItems. | ||
ordered | boolean | Render <ol> instead of <ul>; fixed at mount. |
Parts
ListItem #
List item with an optional icon.
- Install the package
- Import the stylesheet
<List ordered>
<ListItem>Install the package</ListItem>
<ListItem>Import the stylesheet</ListItem>
</List>Slots: root body icon
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
children | content | Item content. | ||
icon | IconName | Icon instead of the bullet. |
IconName — Material Design Icons path names used by <Icon />.
type IconName = | "check" | "x" | "plus" | "minus" | "search" | "user" | "users" | "settings" | "menu" | "home" | "heart" | "star" | "bell" | "mail" | "calendar" | "clock" | "edit" | "trash" | "copy" | "download" | "upload" | "link" | "external" | "info" | "warning" | "error" | "success" | "chevron-down" | "chevron-up" | "chevron-left" | "chevron-right" | "arrow-left" | "arrow-right" | "eye" | "eye-off" | "eye-outline" | "lock" | "unlock" | "filter" | "more" | "close" | "spinner" | "sun" | "moon" | "play" | "pause" | "refresh" | "share" | "image" | "file" | "folder" | "zap" | "phone" | "git" | "code";ListGroup #
Bordered group of list rows.
- Profile
- Security
- Notifications
<ListGroup>
<ListGroupItem>Profile</ListGroupItem>
<ListGroupItem>Security</ListGroupItem>
<ListGroupItem>Notifications</ListGroupItem>
</ListGroup>| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
children | content | ListGroupItems. | ||
flush | boolean | No outer border or radius (for edge-to-edge use in cards). |
Parts
ListGroupItem #
List-group row.
- Profile
- Security
<ListGroup>
<ListGroupItem>Profile</ListGroupItem>
<ListGroupItem>Security</ListGroupItem>
</ListGroup>Slots: root item
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
active | boolean | Marks the current row. | ||
children | content | Row content. | ||
disabled | boolean | Dims the row and blocks clicks. | ||
onClick | (e: MouseEvent) => void | Makes the row a button (fixed at mount); the <li> becomes the item slot. |
Also accepts the shared props: pass-through attributes, class, style, classes, styles, unstyled.
Timeline #
Vertical timeline.
Build started
09:41Tests passed
09:43Deployed to production
09:44
<Timeline>
<TimelineItem title="Build started" bullet="play">
09:41
</TimelineItem>
<TimelineItem title="Tests passed" bullet="check">
09:43
</TimelineItem>
<TimelineItem title="Deployed to production" bullet="zap" active>
09:44
</TimelineItem>
</Timeline>| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
children | content | TimelineItems, oldest or newest first. |
Also accepts the shared props: pass-through attributes, class, style, classes, styles, unstyled.
Parts
TimelineItem #
Timeline entry with a bullet, title and content.
Deployed to production
09:44 by Ada
<Timeline>
<TimelineItem title="Deployed to production" bullet="zap" active>
09:44 by Ada
</TimelineItem>
</Timeline>Slots: root body bullet content title
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
active | boolean | Highlights this event (e.g. the latest). | ||
bullet | IconName | Icon in the bullet. | ||
children | content | Event detail under the title. | ||
title | string | Event title. |
IconName — Material Design Icons path names used by <Icon />.
type IconName = | "check" | "x" | "plus" | "minus" | "search" | "user" | "users" | "settings" | "menu" | "home" | "heart" | "star" | "bell" | "mail" | "calendar" | "clock" | "edit" | "trash" | "copy" | "download" | "upload" | "link" | "external" | "info" | "warning" | "error" | "success" | "chevron-down" | "chevron-up" | "chevron-left" | "chevron-right" | "arrow-left" | "arrow-right" | "eye" | "eye-off" | "eye-outline" | "lock" | "unlock" | "filter" | "more" | "close" | "spinner" | "sun" | "moon" | "play" | "pause" | "refresh" | "share" | "image" | "file" | "folder" | "zap" | "phone" | "git" | "code";Tree #
WAI-ARIA tree: one tab stop, ↑ ↓ move, → expands / enters, ← collapses / goes to parent, Home End, Enter/Space select, type-ahead. Node icons and badges, filter for search, icons="auto" for folder/file icons.
- apps2
- web
- adminlocked
- packages
- ui
- button.tsx
- tree.tsx
- styles.css
- README.md
Open: button.tsx
function Example() {
const selected = signal("button.tsx");
const query = signal("");
const files: TreeNode[] = [
{
id: "apps",
label: "apps",
badge: 2,
children: [
{ id: "web", label: "web", children: [{ id: "client.tsx", label: "client.tsx" }] },
{ id: "admin", label: "admin", disabled: true, badge: "locked" },
],
},
{
id: "packages",
label: "packages",
children: [
{
id: "ui",
label: "ui",
children: [
{ id: "button.tsx", label: "button.tsx" },
{ id: "tree.tsx", label: "tree.tsx" },
{ id: "styles.css", label: "styles.css", icon: "code" },
],
},
],
},
{ id: "readme", label: "README.md", icon: "info" },
];
return (
<Stack gap="0.5rem" style={{ "max-width": "22rem" }}>
<SearchInput
aria-label="Filter files"
placeholder="Filter files"
value={query()}
onChange={query.set}
/>
<Tree
label="Workspace"
icons="auto"
filter={query()}
defaultExpanded={["apps", "packages", "ui"]}
value={selected()}
onChange={selected.set}
data={files}
/>
<Text muted>Open: {selected()}</Text>
</Stack>
);
}Slots: root badge empty group icon item label row toggle
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
data | TreeNode[] | yes | Root nodes. | |
defaultExpanded | string[] | Node ids expanded on mount. | ||
emptyLabel | content | "No matches" | Shown when filter matches nothing (default "No matches"). | |
expandOnClick | boolean | Clicking a parent row also expands / collapses it (default true). | ||
filter | string | "" | Show only nodes whose label contains this text (case-insensitive), plus their ancestors, expanded, with the match highlighted. | |
icons | "auto" | "none" | "auto": folder / file icons for nodes without their own icon. | ||
label | string | Accessible name for the tree. | ||
onChange | (id: string) => void | Called with the id of the node the user selects. | ||
onToggle | (id: string, open: boolean) => void | Called when a node is expanded or collapsed by the user. | ||
value | string | Id of the selected node. |
TreeNode
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | Node id, passed to onChange and matched against value. |
label | string | yes | Node text (also used by type-ahead and filter). |
children | TreeNode[] | Child nodes; a node with children can expand. | |
icon | content | Leading icon: an icon name or any content. | |
badge | content | Trailing content, e.g. a count or status badge. | |
disabled | boolean | Shown and focusable, but can't be selected. |
IconName — Material Design Icons path names used by <Icon />.
type IconName = | "check" | "x" | "plus" | "minus" | "search" | "user" | "users" | "settings" | "menu" | "home" | "heart" | "star" | "bell" | "mail" | "calendar" | "clock" | "edit" | "trash" | "copy" | "download" | "upload" | "link" | "external" | "info" | "warning" | "error" | "success" | "chevron-down" | "chevron-up" | "chevron-left" | "chevron-right" | "arrow-left" | "arrow-right" | "eye" | "eye-off" | "eye-outline" | "lock" | "unlock" | "filter" | "more" | "close" | "spinner" | "sun" | "moon" | "play" | "pause" | "refresh" | "share" | "image" | "file" | "folder" | "zap" | "phone" | "git" | "code";Also accepts the shared props: pass-through attributes, class, style, classes, styles, unstyled.
SortableList #
Reorderable list with keyboard-accessible move buttons.
- Install
- Test
- Deploy
function Example() {
const steps = signal([
{ id: "install", label: "Install" },
{ id: "test", label: "Test" },
{ id: "deploy", label: "Deploy" },
]);
return <SortableList items={steps()} onChange={steps.set} />;
}Slots: root actions item label
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
items | SortableItem[] | yes | Items in their current order (controlled). | |
onChange | (items: SortableItem[]) => void | yes | Called with the reordered items (drag or the move buttons). |
SortableItem
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | Item id (stable across reorders). |
label | string | yes | Item text. |
Also accepts the shared props: pass-through attributes, class, style, classes, styles, unstyled.
KanbanBoard #
Horizontal board of kanban columns. With onMove, cards (cardId) can be dragged between columns (columnId) or moved with Alt+←/→ (column) and Alt+↑/↓ (position); moves are announced to screen readers.
function Example() {
type Card = { id: string; title: string; meta: string; column: string };
const columns = [
{ id: "todo", title: "Todo" },
{ id: "doing", title: "In progress" },
{ id: "done", title: "Done" },
];
const cards = signal<Card[]>([
{ id: "c-1", title: "Audit form labels", meta: "#418", column: "todo" },
{ id: "c-2", title: "Toast pause on hover", meta: "#421", column: "todo" },
{ id: "c-3", title: "Kanban keyboard moves", meta: "#402", column: "doing" },
{ id: "c-4", title: "Dark theme tokens", meta: "#389", column: "done" },
]);
const move = (cardId: string, toColumn: string, index: number) => {
const card = cards().find((c) => c.id === cardId);
if (!card) return;
const rest = cards().filter((c) => c.id !== cardId);
const target = rest.filter((c) => c.column === toColumn);
const before = target[index];
const at = before ? rest.indexOf(before) : rest.length;
cards.set([...rest.slice(0, at), { ...card, column: toColumn }, ...rest.slice(at)]);
};
return (
<KanbanBoard label="Sprint 14" onMove={move}>
<For each={columns}>
{(column) => (
<KanbanColumn
title={column.title}
columnId={column.id}
count={cards().filter((c) => c.column === column.id).length}
>
<For each={cards().filter((c) => c.column === column.id)}>
{(card) => (
<KanbanCard
cardId={card.id}
title={card.title}
meta={card.meta}
onClick={() => {}}
/>
)}
</For>
</KanbanColumn>
)}
</For>
</KanbanBoard>
);
}| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
children | content | The board's KanbanColumns. | ||
label | string | "Board" | Accessible name for the board. Default "Board". | |
onMove | (cardId: string, toColumnId: string, index: number) => void | Called when a card is dropped on a column or moved with Alt+arrow keys. index is the position in the target column (without the moved card). Update your data; the board keeps focus on the moved card. |
Also accepts the shared props: pass-through attributes, class, style, classes, styles, unstyled.
Parts
KanbanColumn #
Kanban column with title, count and cards.
<KanbanBoard label="Review board">
<KanbanColumn title="In review" columnId="review" count={1}>
<KanbanCard cardId="c-7" title="Dark theme for charts" meta="#412 · Ada" />
</KanbanColumn>
</KanbanBoard>Slots: root body count header title
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
title | string | yes | Column heading (also its accessible name). | |
children | content | The column's KanbanCards. | ||
columnId | string | Column id reported to KanbanBoard onMove; enables dropping cards here. | ||
count | number | Number shown next to the title, e.g. the card count. |
KanbanCard #
Card in a kanban column.
<KanbanBoard label="Backlog board">
<KanbanColumn title="Backlog" columnId="backlog">
<KanbanCard cardId="c-9" title="Audit form labels" meta="#418 · Grace" />
</KanbanColumn>
</KanbanBoard>Slots: root meta title
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
title | string | yes | Card title. | |
cardId | string | Card id reported to KanbanBoard onMove; makes the card draggable. | ||
meta | string | Small line, e.g. issue number or assignee. | ||
onClick | (e: MouseEvent) => void | Called when the card is clicked (e.g. to open it). |
Accordion & disclosure #
Show and hide detail.
Accordion #
Disclosure list. Panels stay mounted (state and focus survive toggling) and animate height via grid-template-rows.
function Example() {
const openItem = signal<string | null>("billing");
return (
<Accordion
value={openItem() ?? ""}
onChange={(id: string | null) => openItem.set(id)}
items={[
{
id: "billing",
title: "How does billing work?",
content: "You're billed monthly per seat.",
},
{
id: "cancel",
title: "Can I cancel anytime?",
content: "Yes — your plan ends at the period's close.",
},
{
id: "data",
title: "Where is my data stored?",
content: "In the EU (Frankfurt) by default.",
},
]}
/>
);
}Slots: root chevron content icon item panel subtitle title trigger
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
items | AccordionItem[] | yes | The sections, in order. | |
onChange | ((id: string | null) => void) | ((ids: string[]) => void) | yes | Called with the id to open, or null when the open item is closed. | |
value | string | string[] | yes | Id of the open item, or null when all are closed. | |
chevron | content | Custom chevron (any node); null hides it. | ||
multiple | boolean | Single mode: one item open at a time (value is an id or null). | ||
variant | "default" | "separated" | "flush" | "default" | separated renders each item as its own card. |
AccordionItem
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | Item id, passed to onChange and matched against value. |
title | content | yes | Header text or content (the toggle button's label). |
content | content | yes | Panel content shown when the item is open. |
disabled | boolean | The header can't be toggled. | |
icon | content | Leading icon / avatar next to the title. | |
subtitle | content | Secondary line under the title. |
Collapse #
Show/hide region.
Collapsible content animates its height when toggled.
function Example() {
const open = signal(true);
return (
<Stack gap="0.5rem">
<Button size="sm" variant="outline" aria-expanded={open()} onClick={() => open.set(!open())}>
{open() ? "Hide details" : "Show details"}
</Button>
<Collapse open={open()}>
<Text>Collapsible content animates its height when toggled.</Text>
</Collapse>
</Stack>
);
}| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
open | boolean | yes | Whether the content is shown; height animates on change. | |
children | content | Content to show or hide. |
Spoiler #
Height-clamped content with a toggle.
<Spoiler maxHeight={48} showLabel="Show more" hideLabel="Show less">
Arachne renders on the server and hydrates on the client without re-running component
bodies. Signals track exactly which DOM nodes depend on which values, so updates touch only
what changed. Components share one customization system for classes, styles and slots.
</Spoiler>Slots: root content toggle
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
children | content | Long content to clip. | ||
hideLabel | string | "Show less" | Button text while expanded. | |
maxHeight | number | 80 | Collapsed height in pixels. | |
showLabel | string | "Show more" | Button text while collapsed. |
Details #
Native <details> disclosure (listen with onToggle).
Why is my deploy queued?
<Details summary="Why is my deploy queued?">
Free plans run one build at a time; later builds wait for the current one.
</Details>Slots: root body summary
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
summary | content | yes | Always-visible line that toggles the detail. | |
children | content | Detail content. | ||
open | boolean | Start expanded. |
Also accepts the shared props: pass-through attributes, class, style, classes, styles, unstyled.
Filtering #
Filter bars, active-filter chips and result counts.
FilterBar #
Horizontal toolbar for filters and chips.
marketing-site #128
docs #127
marketing-site #126
api #125
function Example() {
const query = signal("");
const deploys = ["marketing-site #128", "docs #127", "marketing-site #126", "api #125"];
return (
<Stack gap="0.5rem">
<FilterBar>
<SearchInput
aria-label="Search deploys"
placeholder="Search deploys"
value={query()}
onChange={query.set}
/>
<Button variant="outline" onClick={() => query.set("")}>
Clear
</Button>
</FilterBar>
<For each={deploys.filter((d) => d.includes(query()))}>{(d) => <Text>{d}</Text>}</For>
</Stack>
);
}| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
children | content | Filter controls: search, selects, chips, buttons. |
FilterChip #
Active filter with a remove button.
function Example() {
const filters = signal(["Status: failed", "Branch: main", "Author: ada"]);
return (
<Group gap="0.5rem">
<For each={filters()}>
{(filter) => (
<FilterChip
label={filter}
onRemove={() => filters.set(filters().filter((f) => f !== filter))}
/>
)}
</For>
<Show when={filters().length < 3}>
<Button
size="sm"
variant="ghost"
onClick={() => filters.set(["Status: failed", "Branch: main", "Author: ada"])}
>
Reset filters
</Button>
</Show>
</Group>
);
}Slots: root remove
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
label | string | yes | Filter text, e.g. "Status: failed". | |
onRemove | () => void | Shows a remove (×) button; called when it is pressed. |
ResultCount #
"12 results" line (live region).
1284 deploys
<ResultCount count={1284} label="deploys" />| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
count | number | yes | Number of results. | |
label | string | Noun after the count, e.g. "deploys". |
Also accepts the shared props: pass-through attributes, class, style, classes, styles, unstyled.