Portal Community

Minimal Example

{
  "id": "privacy-notice",
  "type": "article",
  "width": "full",
  "settings": {
    "content": "## Privacy Notice\n\nBy submitting this form you agree to our [Privacy Policy](https://example.com/privacy).\n\nWe collect the following data:\n- Full name\n- Email address\n- Company details"
  }
}

Settings Reference

SettingTypeDefaultDescription
contentstringMarkdown content string. Supports standard CommonMark plus GFM tables and task lists.
srcstringURL to an external Markdown file. Takes precedence over content when both are set.
maxHeightstring (CSS)If set, makes the article scrollable at this height
showBorderbooleanfalseRender a card-style border around the article
paddingstring (CSS)"0"Padding inside the article container

Supported Markdown Features

FeatureSyntaxRenders as
Headings# H1, ## H2, ### H3HTML heading elements
Bold / italic**bold**, *italic*Strong / em
Links[text](url)Anchor with rel="noopener"
Unordered list- itemul / li
Ordered list1. itemol / li
Task list- [ ] unchecked, - [x] checkedCheckbox list (read-only)
Code inline`code`code element
Code blockTriple backtick with languageSyntax-highlighted code block
TableGFM pipe table syntaxHTML table
Blockquote> textblockquote element
Horizontal rule---hr element

Scrollable Policy Panel

For terms and conditions or lengthy policies, constrain the height so the article scrolls without pushing the submit button off screen:

{
  "id": "terms-article",
  "type": "article",
  "width": "full",
  "settings": {
    "content": "## Terms of Service\n\n### 1. Acceptance\nBy using this service...\n\n### 2. User Obligations\n...\n\n### 10. Governing Law\n...",
    "maxHeight": "350px",
    "showBorder": true,
    "padding": "16px"
  }
},
{
  "id": "terms-accepted",
  "type": "checkbox",
  "label": "I have read and accept the Terms of Service",
  "validation": { "required": true }
}

Dynamic Content from Context

The src setting loads Markdown from an external URL. Combine with a context template expression to load tenant-specific content:

{
  "id": "tenant-policy",
  "type": "article",
  "settings": {
    "src": "{{context.tenant.policyUrl}}",
    "maxHeight": "400px",
    "showBorder": true
  }
}

Article vs HTML Control

ScenarioArticleHTML Control
Simple prose, lists, headingsBest — clean MarkdownVerbose HTML required
Rich formatted content with custom stylingLimited to MarkdownBest — full HTML
Dynamic content from a CMSBest if CMS exports MarkdownBest if CMS exports HTML
Code examples with syntax highlightingBest — fenced code blocksRequires pre/code markup
User-generated contentBoth safe — sanitisedBoth safe — sanitised