Skip to content

Rule.io SDK


Rule.io SDK / rcml/src / email

Variable: email

const email: object

Defined in: rcml/src/email/email-namespace.ts:39

Namespace object grouping the Email RFM string builders.

Each builder returns a literal Email RFM directive string suitable for splicing into copy that is later compiled and parsed.

Type Declaration

createCustomField

createCustomField: (opts) => string

Build a ::placeholder{type="CustomField" …} directive string.

The atom's name= attribute is group.name joined with a dot; the original= attribute follows the canonical [CustomField:<id>] form.

Parameters

opts
group

string

id

number

name

string

Returns

string

createFont

createFont: (opts) => string

Build a :font[content]{…} inline directive string.

Style options map to their kebab-cased Email RFM attribute names (fontSizefont-size, textDecorationtext-decoration, etc.). content may itself be another atom string for nested composition.

Parameters

opts
color?

string

content

string

fontFamily?

string

fontSize?

string

fontStyle?

string

fontWeight?

string

letterSpacing?

string

lineHeight?

string

textDecoration?

string

textTransform?

string

Returns

string

createLink: (opts) => string

Build a :link[label]{…} inline directive string.

label may itself be another atom string (e.g. the output of createFont) to support nested composition like font-inside-link.

Parameters

opts
href

string

label

string

noTracked?

boolean

target?

string

Returns

string

createLoopValue

createLoopValue: (opts) => string

Build a ::loop-value{…} directive string.

original= follows the canonical [LoopValue:<key>] form. index= defaults to key when omitted — matches every existing usage.

Parameters

opts
index?

string

key

string

Returns

string

Example

ts
import { email } from '@rule/rcml';

const fieldAtom = email.createCustomField({
  group: 'Order', name: 'Total', id: 13,
});

const linkAtom = email.createLink({
  label: 'Click here',
  href: 'https://example.com',
});