Shapes component
Shapestype: "shape"Renders any SVG path with fill, stroke and aspect-ratio control — stars, arrows, blobs, logos and every custom vector in between.
Design JSON
{
"title": "Shape sample",
"description": "A dynamic star shape",
"dimensions": {
"width": 800,
"height": 420
},
"background": {
"color": "#ffffff"
},
"components": [
{
"id": "sample-shape",
"key": "star",
"type": "shape",
"position": {
"x": 290,
"y": 100
},
"rotation": 0,
"size": {
"width": 220,
"height": 220
},
"dynamic": true,
"properties": {
"path": "M 50 5 L 61 38 L 95 38 L 68 59 L 79 92 L 50 70 L 21 92 L 32 59 L 5 38 L 39 38 Z",
"viewBox": "0 0 100 100",
"fillColor": "#F5A623",
"strokeColor": "#D0021B",
"strokeWidth": 0,
"opacity": 1
}
}
]
}Like what you built? The full editor — canvas, templates and the render API — is free to start.
Open the editorShapes examples
Real renders of the shapes — each one is the same component with different property values, and the API payload below each preview reproduces it exactly.
Featured-product star
A gold star with a darker outline, ready to sit beside an imagined "Editor's pick" product title.
API overrides for this example
{
"star.fillColor": "#FBBF24",
"star.strokeColor": "#D97706",
"star.strokeWidth": 3
}Star burst on a dark hero
A soft violet star as the decorative centerpiece of a dark launch-announcement backdrop.
API overrides for this example
{
"star.fillColor": "#A78BFA"
}All shapes styles
Every style rendered live — each is just a different set of property values on the same component, and each has its own page with a dedicated preview, use cases and API example.
Use cases
What developers typically build with the shapes component.
- Brand marks and logo shapes stamped into generated images
- Decorative blobs and stars behind content
- Arrows and callouts in explainer graphics
Use it dynamically via the API
Recolor per render with '<key>.fillColor' (or just '<key>'); strokeColor, strokeWidth and even the path are overridable.
Full API request with the sample design's current values — the playground above sends only the properties you change
curl --location 'https://render.imejis.io/v1/{{YOUR_DESIGN_ID}}' \
--header 'dma-api-key: {{YOUR_API_KEY}}' \
--header 'Content-Type: application/json' \
--data '{
"star.path": "M 50 5 L 61 38 L 95 38 L 68 59 L 79 92 L 50 70 L 21 92 L 32 59 L 5 38 L 39 38 Z",
"star.viewBox": "0 0 100 100",
"star.fillColor": "#F5A623",
"star.strokeColor": "#D0021B",
"star.strokeWidth": 0,
"star.opacity": 1
}'Only send the properties you want to change — everything else keeps its design value. See the API documentation for all languages.
Property reference
Every property the shapes component accepts — in the editor, in design JSON, and as API overrides.
| Property | Type | Edits as | Default | Description |
|---|---|---|---|---|
| path | string | text | "M 10 10 L 90 90" | SVG path data drawn inside the viewBox. |
| viewBox | string | text | "0 0 100 100" | SVG viewBox the path coordinates are relative to. |
| fillColor | color | #808080 | "#808080" | Fill color. |
| strokeColor | color | transparent | "transparent" | Stroke (outline) color. |
| strokeWidth | number | 0 | 0 | Stroke width in viewBox units. |
| preserveAspectRatio | string | text | "xMidYMid meet" | SVG preserveAspectRatio value controlling how the path scales. |
| opacity | number | 1 | 1 | Overall component opacity from 0 (transparent) to 1 (opaque). |
| borderWidth | number | 0 | 0 | Border thickness in pixels around the component. |
| borderColor | color | transparent | "transparent" | Border color (any CSS color). |
| borderStyle | 'solid' | 'dashed' | 'dotted' | 'double' | 'none' | soliddasheddotteddoublenone | "solid" | Border line style. |
| borderRadius | number | 0 | 0 | Corner radius in pixels. |
| boxShadow | string | text | — | CSS box-shadow applied to the component, e.g. "0 4px 6px rgba(0,0,0,0.1)". |