Same screens. Your brand.

Aquex is this site's neutral palette with a teal accent. USWDS brings blue controls, grey and navy surfaces, and Public Sans.

React app · sample recordsMaturity: betasha256:1a4469913d0d…Open full size: Subscription list screen generated by OODS Foundry in React

What design_compose reported for every screen here:

  • OODS-V121 Object 'Subscription' has maturity 'beta' — composed output may change.
  • OODS-V117 Subscription refines 11 fields its traits define, and its own definitions are used: lifecycle/Stateful (status); lifecycle/Cancellable (cancel_at_period_end, cancellation_reason, cancellation_requested_at); financial/Billable (amount, currency, billing_interval, current_period_start, current_period_end, current_period_progress, next_payment_due_at).
The receipt and calls for the Subscription list apps, in React and Vue

React receipt

Checked

  • schema-structure
  • component-registry
  • state-contract
  • target-readiness
  • normalization-fidelity
  • binding-contract
  • props-contract
  • slots-contract
  • events-contract
  • dependency-closure

Not checked

  • fallback-policy
  • rendered-evidence
  • interaction-evidence
  • accessibility-evidence
  • theme-evidence
  • determinism-evidence
  • performance-evidence
  • certification-evidence
3 calls, as the pipeline sent them
design_compose {
  "object": "Subscription",
  "context": "list",
  "preferences": {
    "brand": "Aquex",
    "theme": "light"
  }
}

code_generate {
  "schemaRef": "compose-d8770ac1",
  "framework": "react",
  "profile": "build",
  "options": {
    "output": "application",
    "brand": "Aquex",
    "theme": "light",
    "payloadMode": "file"
  }
}

code_generate {
  "schemaRef": "compose-d8770ac1",
  "framework": "vue",
  "profile": "build",
  "options": {
    "output": "application",
    "brand": "Aquex",
    "theme": "light",
    "payloadMode": "file"
  }
}

The React app's content hash: sha256:1a4469913d0d7e8a40c141b1eeb6f439096cf3521c687b20becc05d18ce44294. Its src/ folder: App.tsx, GeneratedUI.tsx, app.css, main.tsx, oods-brand-aquex.css

The Vue app's content hash: sha256:b952f0e283b5d5ea4a8ad98b10992e2f01e0aaec2c17c176d70f5be30caa2855. Its src/ folder: App.vue, GeneratedUI.vue, app.css, main.ts, oods-brand-aquex.css

Canvas colours set the background; panel colours set the cards and subtle areas. Controls and charts have their own colour roles. Each brand carries light, dark and high-contrast values.

The values and the checks

USWDS colours come from its published theme tokens, checked against a recorded site scan. We mapped them into OODS Foundry's roles. The dark and high-contrast views are our adaptations; unmapped roles retain the OODS starting values. These screens use OODS components.

Aquex: documents, contrast and calls
light
84 of 84 pairs pass; 7 of 7 chart colours clear
dark
84 of 84 pairs pass; 7 of 7 chart colours clear
high contrast
83 of 83 pairs pass; 1 pair is exempt; 7 of 7 chart colours clear. System colours graded as resolved in Chromium 141.0.7390.37 without forced colours (macOS and Linux, light and dark color-scheme), 2026-09-29

Full brand documents · Full contrast report

USWDS: documents, contrast and calls
light
84 of 84 pairs pass; 7 of 7 chart colours clear
dark
84 of 84 pairs pass; 7 of 7 chart colours clear
high contrast
83 of 83 pairs pass; 1 pair is exempt; 7 of 7 chart colours clear. System colours graded as resolved in Chromium 141.0.7390.37 without forced colours (macOS and Linux, light and dark color-scheme), 2026-09-29

Full brand documents · Full contrast report

USWDS source values and role mapping · Every recorded file and its hash

The contrast report checks colour pairs. Each generated app's receipt separately lists what was built and checked.

Shipped brands and the Aquex recipe

The shipped brands

OODS Foundry ships 2 brands, each in light, dark and high contrast. You can make your own from a recipe, or from your own colour values.

Brands A and B in each theme, as their components render.

Brand A

Ships with OODS Foundry. Neutral first: the primary action takes the neutral (near-black in light), with grey structure, an indigo accent and Geist. Its charts lead with indigo.

Brand A in the light theme

Button, intent primary

Button

Banner

StatusBadge

Past Due

Input

Use a work address

Card

Account summary

Tabs

Summary
Brand A in the dark theme

Button, intent primary

Button

Banner

StatusBadge

Past Due

Input

Use a work address

Card

Account summary

Tabs

Summary
Brand A in the high contrast theme

Button, intent primary

Button

Banner

StatusBadge

Past Due

Input

Use a work address

Card

Account summary

Tabs

Summary

Brand B

Ships with OODS Foundry. Brand A's neutral, with a violet primary and DM Sans. Its charts lead with violet.

Brand B in the light theme

Button, intent primary

Button

Banner

StatusBadge

Past Due

Input

Use a work address

Card

Account summary

Tabs

Summary
Brand B in the dark theme

Button, intent primary

Button

Banner

StatusBadge

Past Due

Input

Use a work address

Card

Account summary

Tabs

Summary
Brand B in the high contrast theme

Button, intent primary

Button

Banner

StatusBadge

Past Due

Input

Use a work address

Card

Account summary

Tabs

Summary

Make your own

This site's brand, Aquex, was made this way from a neutral recipe with aquex.ai's teal as its one accent, with the published OODS Foundry. Each step shows its real call.

Harbor is the example team brand in the package's quickstart, made the same way from the quickstart's colour values. The system overview shows the quickstart's Warehouse in it.

  1. Template. brand_create lists every slot, with what it's for and a starting value from a shipped brand or a preset. Or give it a recipe: the neutral's hue and tint, the accent's hue, which of them is the primary action, the corner radius and the font. It returns the whole brand the recipe gives, graded.

    This site's call, with its recipe
    {
      "action": "template",
      "from": {
        "recipe": {
          "neutralHue": 250,
          "neutralChroma": 0.008,
          "accentHue": 183,
          "primary": "neutral",
          "radius": 8,
          "font": "DM Sans"
        }
      }
    }

    It returned each theme's slots and the presets:

    {
      "slots": {
        "base": 103,
        "dark": 96,
        "hc": 96
      },
      "presets": [
        "corporate-blue",
        "dark-minimal",
        "startup-warm"
      ]
    }
  2. Validate. It checks every slot and colour, the contrast of every text, icon, control border and focus ring pair, and that the chart colours reach 3:1 against the canvas, in each theme. It writes nothing.

    This site's call, with its recipe
    {
      "action": "validate",
      "brand_id": "Aquex",
      "recipe": {
        "neutralHue": 250,
        "neutralChroma": 0.008,
        "accentHue": 183,
        "primary": "neutral",
        "radius": 8,
        "font": "DM Sans"
      }
    }

    Its report:

    {
      "action": "validate",
      "valid": true,
      "brand_id": "Aquex",
      "themes": {
        "base": {
          "label": "light",
          "slots": 103,
          "provided": 103
        },
        "dark": {
          "label": "dark",
          "slots": 96,
          "provided": 96
        },
        "hc": {
          "label": "high contrast",
          "slots": 96,
          "provided": 96
        }
      },
      "issues": [],
      "contrast": {
        "base": {
          "graded": 84,
          "passed": 84,
          "failed": 0,
          "ungraded": 0,
          "charts": {
            "graded": 7,
            "passed": 7,
            "failed": 0,
            "ungraded": 0
          }
        },
        "dark": {
          "graded": 84,
          "passed": 84,
          "failed": 0,
          "ungraded": 0,
          "charts": {
            "graded": 7,
            "passed": 7,
            "failed": 0,
            "ungraded": 0
          }
        },
        "hc": {
          "graded": 83,
          "passed": 83,
          "failed": 0,
          "ungraded": 0,
          "systemColoursResolvedIn": "Chromium 141.0.7390.37 without forced colours (macOS and Linux, light and dark color-scheme), 2026-09-29",
          "exempt": 1,
          "charts": {
            "graded": 7,
            "passed": 7,
            "failed": 0,
            "ungraded": 0
          }
        }
      },
      "files": [
        {
          "theme": "base",
          "path": "Aquex/base.json",
          "sha256": "fd02a715ec0811ae19fc0c845092e104eb6269933a9a708a0aec98117e59607f",
          "bytes": 32539
        },
        {
          "theme": "dark",
          "path": "Aquex/dark.json",
          "sha256": "d16368b455b291d2ba5d839e75a964a542e9fb23aa72cbe465dbdc9be749a212",
          "bytes": 30976
        },
        {
          "theme": "hc",
          "path": "Aquex/hc.json",
          "sha256": "81b4883cc956a429a9829eb072c4502ac0021bbd3c460194b987fbadfccdc4fd",
          "bytes": 19759
        }
      ]
    }
  3. Create. It writes the brand to your brands folder and builds it. Previews, generated apps, charts and dashboards can use it at once.

    This site's call
    {
      "action": "create",
      "brand_id": "Aquex",
      "recipe": {
        "neutralHue": 250,
        "neutralChroma": 0.008,
        "accentHue": 183,
        "primary": "neutral",
        "radius": 8,
        "font": "DM Sans"
      }
    }

    Its result:

    {
      "created": true,
      "brand_id": "Aquex",
      "folder": "~/.oods-foundry/brands",
      "build": {
        "exitCode": 0,
        "durationMs": 3461
      },
      "brands": [
        "A",
        "Aquex",
        "B"
      ]
    }

This site's contrast report

What validate reported for Aquex:

light
84 of 84 pairs pass; 7 of 7 chart colours clear 3:1
dark
84 of 84 pairs pass; 7 of 7 chart colours clear 3:1
high contrast
83 of 83 pairs pass; 1 pair is exempt; 7 of 7 chart colours clear 3:1. System colours graded as resolved in Chromium 141.0.7390.37 without forced colours (macOS and Linux, light and dark color-scheme), 2026-09-29
Aquex in the light theme

Button, intent primary

Button

Banner

StatusBadge

Past Due

Input

Use a work address

Card

Account summary

Tabs

Summary
Aquex in the dark theme

Button, intent primary

Button

Banner

StatusBadge

Past Due

Input

Use a work address

Card

Account summary

Tabs

Summary
Aquex in the high contrast theme

Button, intent primary

Button

Banner

StatusBadge

Past Due

Input

Use a work address

Card

Account summary

Tabs

Summary

Limits

  • A brand is OODS Foundry's own slots, 103 in light, 96 in dark and 96 in high contrast, filled from a recipe or by you.
  • A recipe fills the slots without your own token names. Your team's DTCG token file keeps the names, aliases and modes it supports once you accept the draft: Keep your token names.
  • The shipped brands can't be edited from npm.