KQ-552 · FOLD/TEXT

Fold Text

Read-more done by measurement. The folded box is exactly as many line boxes tall as it claims, and opening animates that height to the content's ResizeObserver-measured height on glide while the bottom fade lifts on an opacity tween and the chevron snaps over with the label. It is a real disclosure button: aria-expanded and aria-controls, Enter or Space to open, and no button at all when the passage already fits.

KQ-552 · FOLD/TEXT

Fernworks Ridge Tarp

A two-pole tarp cut for exposed ground, in a 20-denier silicone nylon that holds its tension through a wet night. The ridge seam is taped rather than sewn twice, so it sheds instead of wicking, and the eight perimeter points are bar-tacked onto a webbing loop you can reach with gloves on. Pitched low it clears 900mm at the head; pitched high it becomes a kitchen for four. Packed with its guys and pegs it weighs 640g and rolls to the size of a water bottle.

Description folded

Install

One command — the source lands in your repo. Or copy it from the Code tab.

$ pnpm dlx shadcn@latest add @kinetiq/fold-text

Props

lines
number
default 3
Visible lines while folded.
children
React.ReactNode
default
The text.
moreLabel
string
default "Read more"
Button copy while folded.
lessLabel
string
default "Show less"
Button copy while open.
open / defaultOpen
boolean
default false
Controlled or initial open state.
onOpenChange
(open: boolean) => void
default
Fires when the disclosure opens or folds.