Shinkansen generates JSON Schema valid documents from user submissions with <html />
forms.
Engine renders React layouts with <html />
form field and group elements, as well as optional navigation components, using Pinion, Gears and Transmission.
Layouts can be produced from a JSON Schema transformed into the Zashiki description format. The user submission generated by the layout will be valid according to that JSON Schema.
We use Storybook to present React layouts and components.
Our Stories contain single-value components for development. (Layouts for production are composed of one or several components.)
Typically, these render with an <input />
element, but under Controls you can see how a choice can be captured with <radio />
or <select />
elements.
Array values
Whether items is an object or items is an array depends on how Zashiki interprets the JSON Schema (assuming that Zashiki has mechanically translated a JSON Schema into a description, and the description hasn't been generated manually). It matters for validating the document according to the schema, but for humans the distinction may seem arbitrary. Our stories account for both structures.
- String
- String (Enum)
- String (Any of)
- String (One of)
- Number
- Number (Enum)
- Number (Any of)
- Number (One of)
- Boolean
- Boolean (Enum)
- Boolean (Any of)
- Boolean (One of)
- Null
- Null (Enum)
- Null (Any of)
- Null (One of)
- String
- String (Enum)
- String (Any of)
- String (One of)
- Number
- Number (Enum)
- Number (Any of)
- Number (One of)
- Boolean
- Boolean (Enum)
- Boolean (Any of)
- Boolean (One of)
- Null
- Null (Enum)
- Null (Any of)
- Null (One of)
Object values
- Object - String
- Object - String (Enum)
- Object - String (Any of)
- Object - String (One of)
- Object - Number
- Object - Number (Enum)
- Object - Number (Any of)
- Object - Number (One of)
- Object - Boolean
- Object - Boolean (Enum)
- Object - Boolean (Any of)
- Object - Boolean (One of)
- Object - Null
- Object - Null (Enum)
- Object - Null (Any of)
- Object - Null (One of)