Skip to main content

ARC 2.0.0-beta.25

App, page, and shell

Declare a compact app manifest, then keep shell, page discovery, and named navigation within one inspectable source boundary.

An app declaration is the DSL’s authoring manifest. It can name a default page, tone/palette/mode/branding values, wrapper or shell, locales, page order, page discovery, overrides, and explicit pages. It compiles to AUP configuration; it is not a second runtime or a replacement for blocklet routing.

A small app with an inline page

aup
app "Nimbus" {
  default home
  locales [en, zh]

  shell {
    header {
      brand "Nimbus" -> href "/"
      action "Home" -> page home
    }
    footer "Nimbus"
  }

  page home "Home" {
    view {
      h1 "Welcome"
    }
  }
}

shell and an explicit wrapper "wrapper.json" cannot be combined. A shell generates wrapper material that places the page content slot between header and footer; it is a concise app frame, not a full application framework.

Choose one page-discovery form deliberately

Pages may be defined inline, declared as an external tree/settings/scaffold, or discovered through a limited declaration such as pages from "pages/*.aup". That latter form is resolved by ARC’s page parser; it is not a general glob language that works outside the runtime.

Inline pages compile to pages/<name>.json. Named page navigation is checked against declared pages, which makes a missing page a source problem rather than a browser surprise.

The currently built-in recipe names are narrow (settings-shell, workspace-shell, marketing-site, and scaffold-app). Do not document an arbitrary recipe name as available until the target runtime has accepted it.

Next, read Nodes, values, and sugar and Events, navigation, and visibility.