Skip to content
SurfaceDocs
FRGet started
DocsModel reference

ManagedModelAuthoring · types

Interfaces, values and named contracts for ManagedModelAuthoring.

The following types define named objects and their relationships. Tables include inherited properties. Schema-derived types refer to their validated structures; a TypeScript declaration does not replace the compiler’s semantic checks.

ManagedModelAuthorElement

Tree syntax changes placement representation only; the one portable catalogue still owns props and events.

export type ManagedModelAuthorElement = SurfaceCompositionElement extends infer Element
  ? Element extends SurfaceCompositionElement
    ? Omit<Element, 'children' | 'on'> & {
        readonly id: string;
        readonly children?: readonly ManagedModelAuthorElement[];
        readonly on?: Element['on'];
      }
    : never
  : never;

ManagedModelSourcePackage

Explicit source-fragment manifest and its required composition-catalogue dependency.

export type ManagedModelSourcePackage = z.infer<typeof managedModelSourcePackageSchema>;

ManagedModelAuthorFieldControl

A shortcut never supplies a competing binding, selector or option list.

export type ManagedModelAuthorFieldControl = NativeControl | (Omit<NativeControl, 'binding' | 'options' | 'selector'> & {
 readonly fieldPath: `fields/${string}`; readonly binding?: never; readonly options?: never; readonly selector?: never;
});
type ManagedModelAuthorFieldControl = NativeControl | (Omit<NativeControl, "selector" | "binding" | "options"> & { readonly fieldPath: `fields/${string}`; readonly binding?: never; readonly options?: never; readonly selector?: never; });

ManagedModelAuthorScreen

Authored screen selectors and element tree before native composition expansion.

export type ManagedModelAuthorScreen = WorkspaceModelFoundation['uiComposition']['screens'][number] extends infer Screen
 ? Screen extends WorkspaceModelFoundation['uiComposition']['screens'][number]
   ? Omit<Screen, 'composition'> & { readonly tree: ManagedModelAuthorElement } : never : never;

ManagedModelAuthoringSource

Author data is complete and autonomous; only compiler-managed envelopes are omitted.

export type ManagedModelAuthoringSource = Omit<ManagedModelSource, 'contract' | 'managed' | 'foundation'> & {
 readonly foundation?: Omit<WorkspaceModelFoundation, 'contract' | 'uiComposition' | 'presentation' | 'homePresentation' | 'forms'> & {
  readonly presentation: Omit<WorkspaceModelFoundation['presentation'], 'contract'>;
  readonly homePresentation: Omit<WorkspaceModelFoundation['homePresentation'], 'contract'>;
  readonly forms: readonly (Omit<WorkspaceModelFoundation['forms'][number], 'contract' | 'fields'> & {
    readonly fields: readonly ManagedModelAuthorFieldControl[];
  })[];
 };
 readonly flows: readonly ManagedModelAuthorFlow[];
 readonly screens: readonly ManagedModelAuthorScreen[];
};
type ManagedModelAuthoringSource = Omit<ManagedModelSource, "contract" | "managed" | "foundation"> & { readonly foundation?: Omit<WorkspaceModelFoundation, "contract" | "uiComposition" | "presentation" | "homePresentation" | "forms"> & { readonly presentation: Omit<WorkspaceModelFoundation["presentation"], "contract">; readonly homePresentation: Omit<WorkspaceModelFoundation["homePresentation"], "contract">; readonly forms: readonly (Omit<WorkspaceModelFoundation["forms"][number], "contract" | "fields"> & { readonly fields: readonly ManagedModelAuthorFieldControl[]; })[]; }; readonly flows: readonly ManagedModelAuthorFlow[]; readonly screens: readonly ManagedModelAuthorScreen[]; };

All references

Applied examples : Assemble a coherent definition

The Form and record profile reference the same company, status and notes Fields.

Configuration

Fragment placed in forms[]. Properties and accepted values.

{
  "contract": "WorkspaceForm@2",
  "key": "new-client",
  "label": "New client",
  "actionKey": "create-client",
  "targetDefinitionPath": "workspace/clients/surface/client",
  "mode": "create",
  "fields": [
    {
      "contract": "WorkspaceFormControl@2",
      "repeatable": false,
      "key": "company",
      "label": "Company",
      "input": "text",
      "binding": {
        "kind": "field",
        "fieldKey": "company"
      },
      "required": true,
      "ruleKeys": [],
      "options": []
    },
    {
      "contract": "WorkspaceFormControl@2",
      "repeatable": false,
      "key": "status",
      "label": "Status",
      "input": "choice",
      "binding": {
        "kind": "field",
        "fieldKey": "status"
      },
      "required": true,
      "ruleKeys": [],
      "options": [
        "prospect",
        "active"
      ]
    }
  ],
  "ruleKeys": []
}

Variation and connection

Fragment placed in presentation.recordProfiles[]. Properties and accepted values.

{
  "key": "client",
  "definitionPaths": [
    "workspace/clients/surface/client"
  ],
  "editActionKey": "edit-client",
  "identity": {
    "title": {
      "kind": "field",
      "fieldPath": "fields/company"
    },
    "avatar": {
      "kind": "initials",
      "maximumLetters": 2
    },
    "subtitle": {
      "kind": "field",
      "fieldPath": "fields/status"
    }
  },
  "valueLabels": [
    {
      "fieldPath": "fields/status",
      "values": [
        {
          "value": "prospect",
          "label": "Prospect"
        },
        {
          "value": "active",
          "label": "Active"
        }
      ]
    }
  ],
  "card": {
    "summary": {
      "kind": "field",
      "fieldPath": "fields/notes"
    },
    "tags": {
      "namespace": "user",
      "maximumVisible": 3
    },
    "metricKeys": [],
    "openLabel": "Open client"
  },
  "queryBindings": [],
  "metrics": [],
  "detail": {
    "primaryActionKey": null,
    "creationActionKeys": [],
    "actionKeys": [],
    "sections": [
      {
        "kind": "fields",
        "key": "follow-up",
        "label": "Client follow-up",
        "fieldPaths": [
          "fields/notes",
          "fields/status"
        ]
      }
    ],
    "settings": {
      "fieldPaths": [
        "fields/email"
      ]
    },
    "tags": {
      "namespace": "user",
      "maximumVisible": 3
    },
    "relatedGroups": [],
    "primaryActionLabel": null
  }
}

UI layout example

The illustrative layout below places this configuration in the Clients/Quotes app. Insert each fragment at the stated location, with Field, Query and Action references matching the Model declarations.

  1. Clients · Data
  2. References · Knowledge
  3. Preparation · Work
  4. Quotes · Product
ILLUSTRATIVE LAYOUTClients / Quotes app
SurfaceClients / North StudioExample
ManagedModelAuthoring · typesAssemble a coherent definition
Clients
01Clients · Data

Records and reference information

02References · Knowledge

Pricing, procedure and sources

03Preparation · Work

Steps, decisions and results

04Quotes · Product

Durable deliverable and revisions

Search for a concept, field or action.Esc