Skip to content

Types

The Types module exports shared TypeScript types and constants used across the component library. Import from @cratis/components/types (lowercase). Most exports are types, so import them with import type.

Describes the shape of a JSON Schema object used by ObjectContentEditor, SchemaEditor, and related components.

import type { JsonSchema } from '@cratis/components/types';
const schema: JsonSchema = {
type: 'object',
required: ['name'],
properties: {
name: { type: 'string', description: 'Full name' },
age: { type: 'integer' },
email: { type: 'string', format: 'email' }
}
};
PropertyTypeDescription
titlestringHuman-readable title
namestringSchema name
$idstringSchema identifier
$refstringReference to another schema
typestringJSON type (object, array, string, number, integer, boolean)
formatstringFormat hint (e.g. date-time, email, uri, uuid)
descriptionstringProperty description — displayed as a tooltip
propertiesRecord<string, JsonSchemaProperty>Object properties
itemsJsonSchemaSchema for array items
requiredstring[]Names of required properties
definitionsRecord<string, JsonSchema>Reusable sub-schemas
PropertyTypeDescription
idstringProperty identifier
namestringProperty name
typestringJSON type
formatstringFormat hint
descriptionstringDescription shown as tooltip
itemsJsonSchemaSchema for array items
propertiesRecord<string, JsonSchemaProperty>Nested properties
requiredstring[]Names of required properties inside this property’s own properties (for type: 'object')
$refstringReference to another schema

A recursive type representing any valid JSON value.

// Definition, as exported from '@cratis/components/types'
type Json = string | number | boolean | null | Json[] | { [key: string]: Json };
import type { Json } from '@cratis/components/types';
const value: Json = { name: 'Sample User', tags: ['a'], active: true };

Use Json for the object prop on ObjectContentEditor and for onChange callbacks.

Represents a JSON type and format pair. Used to describe the type/format combinations that a schema editor or form field supports.

import type { TypeFormat } from '@cratis/components/types';
import { DEFAULT_TYPE_FORMATS } from '@cratis/components/types';
const formats: TypeFormat[] = [...DEFAULT_TYPE_FORMATS, { jsonType: 'string', format: 'email' }];

format is an empty string ('') when there is no format.

A pre-defined list of common type/format combinations:

jsonTypeformat
string(none)
stringguid
stringdate-time
stringdate
stringtime
integer(none)
integerint16
integerint32
integerint64
number(none)
numberfloat
numberdouble
boolean(none)

Represents a single step in a breadcrumb navigation path.

// Definition, as exported from '@cratis/components/types'
interface NavigationItem {
name: string;
path: string[];
}

path is the ordered list of property keys from the root to this step, for example ['address', 'street']. Used by SchemaEditor, ObjectContentEditor, and ObjectNavigationalBar.

The module also exports:

  • ChangeHandler<T> and ChangeMeta: the (value, meta?) => void callback shape used by onChange props across Components, where meta.source is 'user', 'programmatic', or 'reset'. See Basic controls.
  • cratisParts, cratisPartStates, and their helper types (PartsOf, PartStatesOf, and others): generated manifests of the stable data-cratis-part names and states each component exposes. See Pass-through.