Canvas responses are arrays of component objects. Sleekplan also accepts a single object and wraps it in an array automatically. This page documents every supported component and how interactions post values back to your endpoint.Documentation Index
Fetch the complete documentation index at: https://sleekplan.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Response format
type field; most have an id that is used as the key in interaction payloads.
Components
text
text
Renders a block of text. Use No interaction — text components do not post values.
"header" for a prominent heading or "paragraph" for body copy.Must be
"text".The string to display.
Controls the visual treatment. Accepted values:
"header" or "paragraph".divider
divider
Renders a horizontal rule to visually separate sections of the canvas.No interaction.
Must be
"divider".button
button
input
input
Renders a single-line text input. Submitted value is posted as Interaction: submitting the input posts
{ [id]: <value> }.Must be
"input".Unique identifier. Used as the key in the interaction payload.
Placeholder text shown inside the input field.
Optional label rendered above the input field.
When
true, pressing Enter or the submit arrow submits the form immediately.{ "input-action-search": "<entered value>" }.textarea
textarea
Renders a multi-line text area. Follows the same interaction model as Interaction: submitting the textarea posts
input.Must be
"textarea".Unique identifier. Used as the key in the interaction payload.
Placeholder text shown inside the textarea.
Optional label rendered above the textarea.
When
true, pressing Enter or the submit arrow submits the form immediately.{ "create-item-description": "<entered value>" }.dropdown
dropdown
Renders a select dropdown populated with a list of options. When the admin picks an option, its Interaction: selecting an option posts
id is posted back.Must be
"dropdown".Unique identifier. Used as the key in the interaction payload.
Label displayed above the dropdown.
Array of option objects, each with:
id— value posted when this option is selected.text— label displayed in the dropdown.
{ "create-item-project": "proj_abc" }.link
link
Renders a hyperlink, optionally with a label above it. No interaction is posted.No interaction — link components do not post values.
Must be
"link".The visible link text.
The URL the link points to.
Optional label rendered above the link.
list
list
Renders a labeled list of items. Each item is either a selectable Interaction: selecting the first option posts
"option" or a "link". When the admin selects an option item, the item’s id is posted under the list’s id.Must be
"list".Unique identifier for the list. Used as the key in the interaction payload.
Heading displayed above the list.
Array of item objects. Each item is one of:
{ "type": "option", "id": <value>, "text": <string> }— a selectable row. When clicked, posts{ [list.id]: <item.id> }. Theidcan be a nested object (for example{ "item_id": 42, "project_id": "p1" }), and the whole object is posted back.{ "type": "link", "href": <string>, "text": <string> }— a row that opens a URL. No interaction is posted.
{ "link-item-list": { "item_id": 42, "project_id": "p1" } }.Conditional visibility
Any component accepts an optionalcondition object. When present, Sleekplan shows the component only when the value of the field identified by condition.value matches the string in condition.key.
create-item-project field currently holds the value "proj_abc".
Inline errors
To display a section-level error, return the first element with anerror key instead of a type key.
