sitereal
v0.1

Ship & extend

Reference

Tokens, element attributes, motion attributes and keyboard shortcuts, in tables.

Everything worth looking up, in tables.

Design-system tokens

TokenFromIs
--{role}Colorsa palette role: primary secondary tertiary accent base neutral success warning info danger white black
--{role}-h -s -lColorsits hue, saturation and lightness, separately
--{role}-hoverColorsthe same colour, one step along
--{role}-ultra-light -light -medium -dark -ultra-darkColorsthe shade strip
--{role}-trans-10-90Colorsthe transparency ramp
--text-xs--text-xxlTypographythe fluid text scale
--h1--h6Typographythe fluid heading scale
--text-size --text-color --text-line-heightTypographythe running text
--heading-weight --heading-color --heading-line-height --heading-letter-spacingTypographyheadings
--font-primary --font-headingTypographythe families
--space-xs--space-xxlSpacingspace inside things
--section-space-s/m/lSpacingspace between bands
--content-gap --container-gap --grid-gapSpacingthe named gaps
--content-widthLayouthow wide the content column may get
--content-width-safeLayoutthe same, minus the gutter
--gutterLayoutthe distance to the screen edge
--border-width --border-light --border-darkBordersthe parts
--border --border-strongBordersready-made shorthands
--radius-s --radius-m --radius-lBorderscorners
--shadow-s --shadow-m --shadow-lShadowsdepth
--motion-duration --motion-ease --motion-distance --motion-staggerMotionwhat animation is like here
--btn-*Buttonsthe button's shape, type, tone and motion
--transitionalways200ms ease

Element attribute

Every node carries builder-data-element. The design system styles it as :where([builder-data-element="…"]).

GroupValues
Layoutsection container flex div figure loop condition site-content
Contentheading text span link button image svg list
Navigationnav nav-list nav-item nav-link nav-dropdown nav-trigger nav-caret nav-sub nav-mega nav-panel nav-toggle nav-burger nav-close nav-scrim nav-skip

Motion attributes

AttributeValues
data-motionfade rise sink slide-right slide-left zoom pop blur tilt custom
data-motion-duration / -delaymilliseconds
data-motion-easesmooth out in-out bouncy linear, or any curve
data-motion-springstiffness damping mass, e.g. 400 30 1
data-motion-opacity -x -y -scale -rotate -blurwhere it comes from
data-motion-exit-*the same six, for where it leaves to
data-motion-triggerwhat starts it
data-motion-start% of the viewport before a reveal fires
data-motion-oncefalse replays it on the way back
data-motion-staggerms between children
data-scroll-speedhow much slower than the page; negative leads
data-scroll-rotatedegrees across the range
data-scroll-scalescale added across the range

Overlay and nav attributes

AttributeOnMeans
popoverthe panelit is an overlay — the browser's own
popovertargetany elementthis is the trigger for that panel
data-overlaythe panelfixed (modal, no script) or relative (hangs off the trigger)
data-nav-partnav partswhat nav.js finds — not editable
data-nav-open-ona dropdownhover or click; default is both
data-nav-aligna dropdowncenter or end; default hangs from the start and flips itself
data-nav-open / data-nav-peekcanvas preview only, never saved into a page

Button variants

KindClasses
Colour.btn--primary --secondary --tertiary --accent --base --neutral --success --warning --info --danger
Style.btn--outline --soft --text --pill --block
Size.btn--xs --s --l --xl (m is the button itself)
Opt out.btn--none

Keyboard

ShortcutDoes
⌘Ssave the page
⌘Z / ⇧⌘Zundo / redo
⌘Dduplicate the selection
⌘C / ⌘Vcopy / paste an element
Delete / Backspacedelete the selection
Escdeselect
? in the CSS bodyexpand a recipe

Generated files

PathWritten when
src/pages/<route>.astrothe page is saved
src/components/<Name>.astrocomponents are saved
src/styles/generated/framework.cssthe design system changes
src/styles/generated/global.cssglobal styles change
src/styles/generated/pages/<route>.cssthe page is saved
src/styles/generated/templates/<id>.csstemplates change
src/styles/generated/snippets/<id>.cssCSS snippets change
public/scripts/nav.js motion.js overlay.jsa page needs one
public/scripts/snippets/<id>.jsJS snippets change
src/data/<slug>.jsona queryable content type is saved
public/robots.txt public/sitemap.xmlSEO settings, while marked as generated
site.siterealany change — the engine is its only writer

Project layout

my-site/
  site.sitereal              everything the builder knows
  .sitereal/                 engine state — gitignored
  .mcp.json                  this project's MCP server
  astro.config.mjs
  package.json
  public/
    fonts/                   installed families
    scripts/                 the runtimes
    uploads/                 assets added through the app
  src/
    components/              emitted components
    content/                 markdown entries
    data/                    content-type rows
    layouts/PlainBase.astro  yours
    pages/                   emitted pages
    styles/generated/        the generated CSS