Skip to content
Folio

Website

Collection

Collection headings, search controls, featured records and empty states.

Usage

When to reach for it

Display a searchable archive without moving filtering or data access into the package.

Ships from@misoto22/folio/website

TSX
import { ContentBand } from '@misoto22/folio/website'

Best practices

Do

  • Supply localized labels, descriptive links and meaningful image alternatives.

Don’t

  • Do not put service credentials, routing logic or backend models inside presentation components.

Examples

searchable records

Search and category state stay with the host, which supplies the filtered records. The controls provide named inputs, clear actions and pressed filter states.

Parts

Composed at the call site rather than configured through props, so a layout this component did not anticipate is still expressible.

CollectionIntro

CollectionIntro props
PropTypeDefaultDescription
titlerequiredReactNode—
actionsReactNode—
compactbooleanfalse—
contextReactNode—
descriptionReactNode—
mediaReactNode—

CollectionMetadata

CollectionMetadata props
PropTypeDefaultDescription
itemsrequiredCollectionMetadataItem[]—

CollectionGroup

CollectionGroup props
PropTypeDefaultDescription
captionReactNode—
compactboolean—
headingIdstring—
titleReactNode—

Also accepts everything in Omit<HTMLAttributes<HTMLElement>, 'title'>. Those are forwarded to the underlying element and are not listed row by row.

CollectionSearch

CollectionSearch props
PropTypeDefaultDescription
clearLabelrequiredstring—
labelrequiredstring—
onChangerequired(value: string) => void—
valuerequiredstring—
focusShortcutbooleanfalse—
placeholderstring—

CollectionControls

CollectionControls props
PropTypeDefaultDescription
itemsrequiredCollectionFilter[]—
onSelectrequired(value: string | null) => void—
selectedrequiredstring | null—
filterLabelstring—
quietboolean—
searchCollectionSearchProps—
showCountsbooleantrue—

HighlightedText

HighlightedText props
PropTypeDefaultDescription
queryrequiredstring—
textrequiredstring—
classNamestring—

RecordRow

RecordRow props
PropTypeDefaultDescription
titlerequiredReactNode—
contextReactNode—
headingLevel2 | 32—
indexReactNode—
linkCollectionLink—
mediaReactNode—
metadataReactNode—
subtitleReactNode—
summaryReactNode—
trailingReactNode—
variant'editorial' | 'media' | 'compact''editorial'—

FeaturedRecord

FeaturedRecord props
PropTypeDefaultDescription
mediarequiredReactNode—
titlerequiredReactNode—
actionReactNode—
contextReactNode—
summaryReactNode—

CollectionEmpty

CollectionEmpty props
PropTypeDefaultDescription
messagerequiredstring—
actionReactNode—
hintstring—

CollectionFooter

CollectionFooter props
PropTypeDefaultDescription
childrenReactNode—
feedbackReactNode—

TaxonomyLinks

TaxonomyLinks props
PropTypeDefaultDescription
childrenrequiredReactNode—
labelstring—

ReferenceLink

A quiet resource link for references, separate from action buttons.

Takes no props of its own.

ReferenceRows

ReferenceRows props
PropTypeDefaultDescription
itemsrequired{ id?: string; label: ReactNode; hint?: ReactNode; content: ReactNode }[]—

CollectionTally

CollectionTally props
PropTypeDefaultDescription
childrenrequiredReactNode—

CollectionList

CollectionList props
PropTypeDefaultDescription
childrenrequiredReactNode—

Also accepts everything in HTMLAttributes<HTMLUListElement>. Those are forwarded to the underlying element and are not listed row by row.

Types

TSX
export type CollectionLink = ReactElement<{ children?: ReactNode }>