Skip to content
Folio

Website

Portfolio

An editorial introduction, featured images, records and a question card.

Usage

When to reach for it

Build a personal or studio index from supplied text, images and actions.

Ships from@misoto22/folio/website

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

Notes

An introduction and a chosen photograph, with content supplied by the host.

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

editorial introduction

A short biography and a supporting index share one introductory composition. Text, facts and category totals are supplied by the application.

Designer and writer exploring the everyday tools that help people think.

Independent practice
Working across places
Start by paying attention.

Selected work

Essays
12
Projects
4

Parts

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

PortfolioImage

PortfolioImage props
PropTypeDefaultDescription
childrenrequiredReactElement
indexstring
metadataReactNode
naturalbooleanfalsePreserve the supplied image's intrinsic dimensions instead of cropping.
size'feature' | 'tile' | 'thumbnail''tile'
titleReactNode

PortfolioRecord

PortfolioRecord props
PropTypeDefaultDescription
titlerequiredReactNode
actionReactNode
contextReactNode
descriptionReactNode
imageReactNode
metadataReactNode

PortfolioList

PortfolioList props
PropTypeDefaultDescription
childrenrequiredReactNode
labelstring
variant'records' | 'frames' | 'thumbnails''records'

PortfolioCategories

PortfolioCategories props
PropTypeDefaultDescription
itemsrequired{ id: string; label: ReactNode; count: number }[]
labelrequiredstring

QuestionCard

A compact invitation to an application-owned conversation.

QuestionCard props
PropTypeDefaultDescription
descriptionrequiredstring
examplesrequiredstring[]
examplesLabelrequiredstring
labelrequiredstring
onChangerequired(value: string) => void
onSubmitrequired(value: string) => void
placeholderrequiredstring
submitLabelrequiredstring
titlerequiredReactNode
valuerequiredstring
disabledboolean
inputIdstring
maxLengthnumber