Skip to content

Skeleton

Grey shapes that stand where content will appear, so the page keeps its layout while it loads.

  • .aparte-skeleton
On this page
Open

.aparte-skeleton is a block that pulses where text, a picture or a card will be. It has no margin of its own: lay a group out the way the real content will be (a grid with a gap), and the skeleton takes the same shape. The conversation list and the transcript draw their loading state with it.

VariableDefault
--aparte-skeleton-rect-height5rem
--aparte-skeleton-text-last-width60%
--aparte-skeleton-basevar(--aparte-track)
--aparte-skeleton-shinevar(--aparte-surface-3)
--aparte-skeleton-text-heightvar(--aparte-content-font-size)
--aparte-skeleton-text-gapcalc(var(--aparte-content-font-size) * (var(--aparte-content-line-height) - 1))
--aparte-skeleton-circle-sizevar(--aparte-avatar-size)

.aparte-skeleton · .aparte-skeleton--circle · .aparte-skeleton--rect · .aparte-skeleton--text

  • A skeleton is decoration: give it aria-hidden="true", or put the group in one region marked aria-busy with a line that says what is loading, so a screen reader does not read empty boxes.
  • The pulse stops under prefers-reduced-motion.
  • Spinner — a wait with no shape to stand in for.
  • Conversation — the transcript’s loading state.