# LinkStyle

Import it from `@grafloria/engine`.

```ts
interface LinkStyle
```

**Properties**

| Name | Type | Default | Description |
| --- | --- | --- | --- |
| `className?` | `string` |  | Extra CSS class(es) put verbatim on the rendered path, alongside `diagram-link` and the state classes. Host-CSS hook; never read back. |
| `styleClass?` | `string` |  | Name(s) of NAMED STYLES to apply — the classDef / linkStyle equivalent. Space-separated (later names win). See NodeStyle.styleClass; identical cascade: theme < type-default < named-class < element-inline < state. |
| `stroke?` | `string \| LinearGradient \| RadialGradient \| Pattern` |  |  |
| `strokeWidth?` | `number` |  |  |
| `strokeDasharray?` | `string` |  |  |
| `opacity?` | `number` |  |  |
| `arrowHead?` | `ArrowStyle` |  |  |
| `arrowTail?` | `ArrowStyle` |  |  |
| `curvature?` | `number` |  | Smooth/bezier curve TIGHTNESS, as a multiplier of the endpoint distance for the control-point offset. Default `0.5` (unchanged legacy behaviour); `0` collapses the curve onto its chord, larger values bulge harder. Honoured by both LinkModel.generateSmoothPath and the SVG renderer's control-point maths, so a link looks the same however its path was produced. |
| `jetty?` | `number` |  | . Minimum port-anchor stub (px): the route leaves the source and enters the target perpendicular to the port side for at least this length before the first bend — GUARANTEED, not best-effort (the router enforces it on whichever routing branch produced the path). Unset = the legacy 20px best-effort stub, byte-for-byte. |
| `cornerRadius?` | `number` |  | PER-LINK orthogonal corner radius (px). Defaults to the renderer's built-ins (5px for `orthogonal`, 12px for the rounded fallback a `smooth` detour falls back to). `0` gives hard 90° corners. |
| `jumpPoints?` | `JumpPointConfig` |  |  |
| `parallel?` | `ParallelLinkConfig` |  | How THIS link behaves when it is one of several links between the same pair of nodes. Per-link override of the renderer-wide `parallelLinks` config. |
| `selfLoop?` | `SelfLoopConfig` |  | How THIS link is drawn when it is a SELF-LOOP (source node === target node). Ignored on ordinary links. |
| `template?` | `string` |  | Name of a registered LINK TEMPLATE (`registerLinkTemplate` in |
| `gradient?` | `LinearGradient \| RadialGradient` |  |  |
| `pattern?` | `Pattern` |  |  |
| `shadow?` | `Shadow` |  |  |
| `animation?` | `LinkAnimation` |  |  |
| `markers?` | `Marker[]` |  |  |
