# @teasim/aster

## What it is

The furniture a content site repeats on every page: the three-pane
documentation shell, the sticky header run, the footer, the navigation tree,
the pager, the pricing section, the question list, the closing call to
action, the sign-in panel, the request and response blocks, and the listing
shapes — steps, headings, grids, records.

Each one is composed from `@teasim/astra` elements rather than drawn from
scratch, and they are imported exactly the same way.

## The line it holds

**A block owns arrangement.** Grid, gap, measure, and the breakpoints where a
layout changes. It never restates a surface — a border, a fill, a type scale or
a focus ring arrives with the family it composes, so a look the elements lack is
fixed on the element and not patched here.

That line is why the package declares no `@shortcut` of its own. Every fragment
its recipes name is declared once, in astra's TeaCSS interface.

## Two invariants that bend here

An element renders no sibling part and takes no named slot. A block bends both,
and only where the shape demands it: a tree renders itself, so the nav renders
its own list part; and a layout has regions, so the shell takes its three panes
and the header takes its logo as named slots.

Both exceptions are pinned by tests rather than left as an allowlist with no
reason attached.