Unsaved session
Handoff

Export

Copy the project 20% identity layer and compose manifest for the current session draft. Edit in Compose · Back to preview.

Identity — expression-profile.yaml

# expression-profile.yaml — project 20% layer (snippet)
colors:
  canvas: "#FFFFFF"
  surface: "#FFFFFF"
  ink: "#141d1c"
  ink-secondary: "#6a7776"
  ink-muted: "#889696"
  border: "#dde3e1"
  border-strong: "#c5cecd"
  primary: "#4e88f6"
  primary-hover: "#4274d1"
  on-primary: "#FFFFFF"
  inverse-canvas: "#141d1c"
  on-inverse: "#fafafa"
  shape-fill-subtle: "#eef4ff"

typography:
  display:
    fontFamily: "\"Gayathri\", Georgia, serif"
  headline:
    fontFamily: "\"Fraunces\", Georgia, serif"
  body:
    fontFamily: "\"Mulish\", system-ui, sans-serif"
  label:
    fontFamily: "\"Geist Mono\", ui-monospace, monospace"

expression:
  spacingPosture: "standard"  # macro 50, component 50, inset 50; gaps: section 40px, block 32px, section-y clamp(48px, 6vw, 72px)
  spacingLayers:
    macro: 50
    component: 50
    inset: 50
  typeScale: 1  # display 1, body 1, ui 1
  typeLayers:
    display: 1
    body: 1
    ui: 1

pageCompositions:
  - pageId: home
    sections:
      - cover-hero
      - feature-grid
      - testimony-feature
      - event-list
      - giving-strip
  - pageId: about
    sections:
      - lead-essay
      - people-grid
      - content-cards
      - pull-quote
      - stats-bar
  - pageId: sermons
    sections:
      - section-intro
      - media-list
      - metric-highlight
  - pageId: visit
    sections:
      - section-intro
      - step-list
      - map-locator
      - faq-accordion
      - cta-band
  - pageId: give
    sections:
      - giving-strip
      - comparison-table
      - newsletter-band

Handoff

Copy the YAML snippet into projects/<slug>/expression-profile.yaml in the haven-design-system monorepo. Merge with the template at projects/_template/expression-profile.yaml, then complete PROJECT-INIT.md for dev handoff. Preview font packs are not part of production handoff — ship fonts from brand assets.

Compose — compose-manifest.yaml

Page → pattern selections with rhetorical categories and haven-docs fixture ids. Generated from pageCompositions in the active profile.

# compose-manifest.yaml — pattern selections for dev / CMS handoff
# Pair with expression-profile.yaml from Identity export.
version: 1
profileName: "Session draft"
profileStatus: draft
exportedAt: "2026-09-11T23:19:03.252Z"
pages:
  - pageId: home
    pageLabel: "Home"
    sections:
    - studioFixtureId: cover-hero
      label: "Cover hero"
      category: declare
      categoryLabel: "Declare"
      docsFixtureId: ed-cover-hero
      patternName: "Cover Hero"
      tier: 1
    - studioFixtureId: feature-grid
      label: "Feature grid"
      category: clarify
      categoryLabel: "Clarify"
      docsFixtureId: ed-feature-grid
      patternName: "Feature Grid"
      tier: 1
    - studioFixtureId: testimony-feature
      label: "Testimony feature"
      category: humanize
      categoryLabel: "Humanize"
      docsFixtureId: ed-testimony-feature
      patternName: "Testimony Feature"
      tier: 1
    - studioFixtureId: event-list
      label: "Event list"
      category: orient
      categoryLabel: "Orient"
      docsFixtureId: ed-event-list
      patternName: "Event List"
      tier: 2
    - studioFixtureId: giving-strip
      label: "Giving strip"
      category: invite
      categoryLabel: "Invite"
      docsFixtureId: ed-giving-strip
      patternName: "Giving Strip"
      tier: 1
  - pageId: about
    pageLabel: "About"
    sections:
    - studioFixtureId: lead-essay
      label: "Lead essay"
      category: orient
      categoryLabel: "Orient"
      docsFixtureId: ed-lead-essay
      patternName: "Lead Essay"
      tier: 1
    - studioFixtureId: people-grid
      label: "People grid"
      category: humanize
      categoryLabel: "Humanize"
      docsFixtureId: ed-people-grid
      patternName: "People Grid"
      tier: 2
    - studioFixtureId: content-cards
      label: "Content cards"
      category: clarify
      categoryLabel: "Clarify"
      docsFixtureId: ed-content-cards
      patternName: "Content Cards"
      tier: 2
    - studioFixtureId: pull-quote
      label: "Pull quote"
      category: contrast
      categoryLabel: "Contrast"
      docsFixtureId: ed-pull-quote
      patternName: "Pull Quote"
      tier: 2
    - studioFixtureId: stats-bar
      label: "Stats bar"
      category: prove
      categoryLabel: "Prove"
      docsFixtureId: ed-stats-bar
      patternName: "Stats Bar"
      tier: 1
  - pageId: sermons
    pageLabel: "Sermons"
    sections:
    - studioFixtureId: section-intro
      label: "Section intro"
      category: orient
      categoryLabel: "Orient"
      docsFixtureId: ed-section-intro
      patternName: "Section Intro"
      tier: 1
    - studioFixtureId: media-list
      label: "Media list"
      category: guide
      categoryLabel: "Guide"
      docsFixtureId: ed-media-list
      patternName: "Media List"
      tier: 2
    - studioFixtureId: metric-highlight
      label: "Metric highlight"
      category: prove
      categoryLabel: "Prove"
      docsFixtureId: ed-metric-highlight
      patternName: "Metric Highlight"
      tier: 1
  - pageId: visit
    pageLabel: "Visit"
    sections:
    - studioFixtureId: section-intro
      label: "Section intro"
      category: orient
      categoryLabel: "Orient"
      docsFixtureId: ed-section-intro
      patternName: "Section Intro"
      tier: 1
    - studioFixtureId: step-list
      label: "Step list"
      category: guide
      categoryLabel: "Guide"
      docsFixtureId: ed-step-list
      patternName: "Step List"
      tier: 1
    - studioFixtureId: map-locator
      label: "Map locator"
      category: orient
      categoryLabel: "Orient"
      docsFixtureId: ed-map-locator
      patternName: "Map Locator"
      tier: 3
    - studioFixtureId: faq-accordion
      label: "FAQ accordion"
      category: clarify
      categoryLabel: "Clarify"
      docsFixtureId: ed-faq-accordion
      patternName: "FAQ Accordion"
      tier: 1
    - studioFixtureId: cta-band
      label: "CTA band"
      category: invite
      categoryLabel: "Invite"
      docsFixtureId: ed-cta-band
      patternName: "CTA Band"
      tier: 1
  - pageId: give
    pageLabel: "Give"
    sections:
    - studioFixtureId: giving-strip
      label: "Giving strip"
      category: invite
      categoryLabel: "Invite"
      docsFixtureId: ed-giving-strip
      patternName: "Giving Strip"
      tier: 1
    - studioFixtureId: comparison-table
      label: "Comparison table"
      category: clarify
      categoryLabel: "Clarify"
      docsFixtureId: ed-comparison-table
      patternName: "Comparison Table"
      tier: 1
    - studioFixtureId: newsletter-band
      label: "Newsletter band"
      category: invite
      categoryLabel: "Invite"
      docsFixtureId: ed-newsletter-band
      patternName: "Newsletter Band"
      tier: 2

Handoff

Pair this manifest with the identity expression-profile.yaml from Export. Dev merges both into projects/<slug>/ in the haven-design-system monorepo.