Every form sits on a 12-column grid. A component takes between 1 and 12 columns, and the row wraps on its own once they run out. Panels nest, so a layout is built by putting grids inside grids rather than by pointing at pixels.
Seven shared property sections
Every component inherits the same groups: binding to a field, display and column width, colour, variant and size, validation, per-role permissions, table settings and the form’s outer frame. On top of those, components have their own.
Field types pick the component
The data type decides which component a field gets by default — text, number, date, time, choice, boolean, file, or a reference to another record. The choice can be overridden per field.
Custom CSS per component
Every component takes a customCss property, and panels additionally expose frame, title row, icon, collapsibility, background colour and elevation as ordinary settings.
Record set components
Table, kanban, gantt, calendar, map, panel forms and status flow search out a set of records themselves — and the datasource need not be the form’s own.
Scriptable SVG
When no component fits, CureSvg draws anything at all from a datasource, with your own JavaScript in a confined context.
Permissions down to the field
Roles govern not only who sees a view, but which fields and which rows. The rules are evaluated on the server, not in the client.