foundation layer 2

Runtime scaffold and UI primitives consumed by blueprint output. Houses the shared design token system, layout components, and the base Astro application shell.

Seed Data

Deterministic fixture users and tenants loaded at demo startup.

typescript
// Seed data — deterministic users and tenants
import { DemoSeed } from "foundation/demo/seed";

const seed = DemoSeed.load();

console.log("Users:", seed.users.map(u => u.email));
console.log("Tenants:", seed.tenants.map(t => t.name));
console.log(
  "Subscriptions:",
  seed.subscriptions.map(s => ({
    tenant: s.tenantId,
    tier: s.tier,
    status: s.status,
  }))
);
output
Users: [
  "alice@acme-corp.example",
  "bob@acme-corp.example",
  "carol@brightwave.example",
  "dan@brightwave.example"
]

Tenants: ["Acme Corp", "Brightwave"]

Subscriptions: [
  { tenant: "tenant-acme", tier: "pro", status: "active" },
  { tenant: "tenant-brightwave", tier: "starter", status: "active" }
]

Tenant-Scoped Usage

Usage dimensions filtered to a single tenant — no cross-tenant leakage.

typescript
// Tenant-scoped usage data
import { getScopedUsage } from "foundation/demo/seed";

const tenantId = "tenant-acme";
const snapshot = getScopedUsage(tenantId);

console.log("Tenant:", snapshot.tenantId);
console.log("Period:", snapshot.period);
console.log("Dimensions:", snapshot.dimensions);
output
Tenant: "tenant-acme"
Period: { start: "2025-01-01", end: "2025-01-31" }
Dimensions: [
  { name: "api_calls",      value: 14820, unit: "requests",  limit: 50000 },
  { name: "storage_gb",     value: 3.2,   unit: "GB",        limit: 10    },
  { name: "ai_completions", value: 412,   unit: "tokens_k",  limit: 1000  },
  { name: "active_users",   value: 8,     unit: "seats",     limit: 25    }
]