Appendix B — Built-in catalogues
Contents of DISL 0.1
| Element | Default |
|---|---|
| Node | rect, 120 × 60, fill token color.surface (#FFFFFF), stroke token color.border (#5F5E5A) width 1, one centered label bound to labelAttribute, word wrap, font 14 px system-ui |
| View-only node | as node, with dashed stroke |
| Container node | as node, with a 24 px header band holding the label; children laid out freely |
| Relation (directed) | straight line, width 1, color token color.border, targetMarker: "arrowFilled", no labels, unless the relation has a name attribute, which is shown middle/above |
| Relation (undirected) | as directed, without markers |
| Port | 8 × 8 rect, fill color.surface, sides by direction |
| Selection | 1.5 px outline in token color.accent (#534AB7), 8 screen-px square handles |
invalid state |
stroke token color.danger (#E24B4A), problem badge top-right |
warning state |
stroke token color.warning (#BA7517), warning badge top-right |
dropTarget / dropReject |
fill token color.accent.soft / stroke color.danger dashed |
Standard theme tokens. Runtimes provide these tokens with light and dark values, and specifications may override them: color.canvas, color.surface, color.surface.alt, color.text, color.text.muted, color.border, color.border.strong, color.accent, color.accent.soft, color.danger, color.warning, color.success, color.info, font.body, font.mono, size.stroke, size.corner, size.font.
| Shape | Parameter defaults |
|---|---|
roundedRect |
radius: 8 |
triangle |
apex: 0.5, direction: up |
parallelogram |
skew: 0.2, direction: right |
trapezoid |
inset: 0.2, direction: up (narrow side at the top) |
hexagon |
inset: 0.25, orientation: flat |
octagon |
inset: 0.29 |
polygon |
sides: 5, rotation: 0 |
star |
points: 5, innerRadius: 0.5, rotation: 0 |
cross |
thickness: 0.33 |
cylinder |
cap: 0.15 × height, orientation: vertical |
document |
wave: 0.1 |
multiDocument |
wave: 0.1, offset: 6, count: 3 |
note |
fold: 12 |
folder |
tabWidth: 0.4, tabHeight: 12, tabPosition: left |
frame |
tabWidth: 0.35, tabHeight: 20 |
cloud |
bumps: 8 |
process |
inset: 10 |
manualInput |
slope: 0.25 |
offPage |
pointer: 0.25 |
callout |
pointerX: 0.2, pointerY: 1.3, pointerWidth: 0.15, radius: 6 |
blockArrow |
direction: right, headLength: 0.35, shaftThickness: 0.5, doubleHeaded: false |
chevron |
depth: 0.25, direction: right |
bracket |
side: left, curl: 0.15 |
image |
fit: contain |
Fractions refer to the bounds' width (horizontal parameters) or height (vertical parameters).
Sizes are for a line width of 1 and scale with the stroke unless scaleWithStroke is false. "Hollow" markers are filled with background by default, and "filled" markers with stroke.
| Marker | Default length × width | Geometry |
|---|---|---|
arrow |
10 × 8 | Open V, 2 strokes, angle 30° |
arrowFilled |
10 × 8 | Filled triangle |
arrowHollow |
12 × 10 | Hollow triangle (generalisation) |
arrowConcave |
12 × 10 | Filled, swept-back base |
arrowThin |
8 × 6 | Open V, angle 20° |
arrowDouble |
16 × 8 | Two filled triangles in sequence |
halfArrowTop, halfArrowBottom |
10 × 5 | One barb only |
arrowCircle |
14 × 8 | Filled triangle followed by a hollow circle |
diamond / diamondFilled |
14 × 8 | Rhombus |
circle / circleFilled |
8 × 8 | Circle, tangent to the end point |
square / squareFilled |
8 × 8 | Square |
dot |
4 × 4 | Filled circle centered on the end point |
triangle / triangleFilled |
10 × 10 | Equilateral |
bar |
0 × 10 | Perpendicular line |
doubleBar |
4 × 10 | Two perpendicular lines |
cross |
8 × 8 | × |
slash |
6 × 10 | Oblique line |
erOne |
8 × 12 | One perpendicular bar |
erOnlyOne |
12 × 12 | Two perpendicular bars |
erMany |
12 × 12 | Crow's foot |
erZeroOrOne |
18 × 12 | Bar and hollow circle |
erOneOrMany |
16 × 12 | Crow's foot and bar |
erZeroOrMany |
20 × 12 | Crow's foot and hollow circle |
ballSocketBall |
10 × 10 | Hollow circle on a short stem |
socket |
10 × 12 | Half circle open towards the end |
containment |
10 × 10 | Circle with a plus |
ground |
6 × 14 | Three bars of decreasing length |
fork |
10 × 10 | Two short diverging lines |
| Rule | Numeric | Time | Ordinal | Angular | Sizes |
|---|---|---|---|---|---|
grid |
✓ | – | – | ✓ | ✓ |
values |
✓ | ✓ | – | ✓ | ✓ |
calendar |
– | ✓ | – | – | ✓ (durations) |
ticks |
✓ | ✓ | ✓ | ✓ | – |
bands |
– | – | ✓ | – | ✓ (number of bands) |
divisions |
✓ | – | – | ✓ | ✓ |
ratio |
– | – | – | – | ✓ |
cel |
✓ | ✓ | ✓ | ✓ | ✓ |
byZoom |
✓ | ✓ | ✓ | ✓ | ✓ |
plugin |
✓ | ✓ | ✓ | ✓ | ✓ |
Units: millisecond, second, minute, hour, day, week (starts on firstDayOfWeek), month, quarter, year. Date format patterns follow Unicode LDML (yyyy, MM, MMM, MMMM, d, EEE, w, HH:mm). Number patterns follow ICU (#,##0.00, #0%).
Runtimes provide these monochrome icons under std.: add, remove, delete, edit, copy, link, unlink, lock, unlock, eye, eye-off, info, warning, error, check, x, plus, minus, arrow-right, arrow-left, arrow-up, arrow-down, flag, key, database, table, user, users, clock, calendar, message, note, folder, file, image, code, play, pause, stop, settings, search, filter, star, bolt, circle, circle-dot, square, square-rounded, diamond, triangle, hexagon. Specifications may also reference icon sets by prefix (tabler:database, material:table_chart) when the runtime supports them.
| Attribute type | Widget |
|---|---|
string |
text (combobox if extensible enum) |
text |
textarea (markdown if markup: "markdown") |
int, number |
number (slider if both min and max are set and the range is at most 100 steps) |
bool |
checkbox |
date, datetime, time, duration |
date, datetime, time, duration |
color |
color |
uri |
link |
expression |
code with language: "cel" |
json |
code with language: "json" |
binary |
file |
| enum (≤ 4 values) | segmented |
| enum (> 4 values) | select |
| data type (struct) | struct |
| reference | reference |
many primitive |
tags for strings, list otherwise |
many struct |
table |
many reference |
references |
language.requires.features uses these identifiers: axis.log, axis.time, axis.time.collapse, axis.ordinal, axis.angular, system.polar, system.nested, placement.bound, placement.computed, placement.stack, snap.calendar, snap.byZoom, snap.objects, shape.custom, shape.composite, shape.handles, shape.nineSlice, stroke.effect, stroke.sketch, stroke.flow, edge.jumps, edge.bezier, edge.metro, marker.custom, marker.stack, label.rich, label.parse, node.variants, node.lod, form.embedded, layout.elk, collab.crdt, persist.yaml, persist.split, persist.perElement, export.pdf.