Skip to content

Error messages

View Markdownllms.txt

The Folio compiler never stops at the first problem: it always produces the best presentation it can, plus a list of diagnostics. In the editor, each diagnostic is underlined in the text and listed in the bottom panel, with:

PartExample
SeverityError (something was dropped or does not work) or warning (it works, but probably not the way you wanted).
CodeF209. The code is stable and does not change between versions.
PositionLine and column of the problem.
Messageunknown attribute: colr
HintDid you mean color?

Errors inside a component are reported on the line where the component is used, with the suffix “(in component name)”. Errors in a @style are reported once, at the definition, not at every use.

FamilyTopic
F1xxStructure: blocks, tables, code, charts and icons.
F2xxAttributes: brace syntax, styles and attribute names.
F3xxAttribute values.
F4xxComponents and named slots.
F5xxPreamble definitions and the project theme.

Error. Message: ::: closes a block, but no block is open here.

A ::: alone on a line closes the last open block. Here there is no open block, usually because of an extra :::.

# Results
We grew 38%.
:::

How to fix: remove the line or open a block before it, such as ::: columns.

Error. Message: block columns was opened but never closed.

Every block opened with ::: name needs a ::: line that closes it. Each slide is read on its own, so the block must be closed before the next ---.

::: columns
Left
Right

How to fix: add a line containing only ::: at the end of the block.

Error. Message: @theme can only be used at the start of the document, before the first slide.

Definitions with @ (@title, @theme, @color, @style, @component and the others) only work in the preamble. Once the first slide starts, they are dropped.

# Opening
---
@theme ink
# Second slide

How to fix: move the definition to the top of the file, before any content.

Error. Message: missing block name after :::.

A line that starts with ::: or :: and has other content needs the block name right after it.

::: {.card}
Text
:::

How to fix: write the block name before the attributes, as in ::: box {.card}.

Error. Message: unclosed code block.

A code block opened with ``` needs another ``` line to end it. Without it, the rest of the slide becomes code.

```js
console.log("hi")

How to fix: close the block with a line containing ```.

Error. Message: table without a separator line after the header.

The second line of a table must be the separator line, which divides the header from the data.

| Product | Price |
| Coffee | 12 |

How to fix: add a line like | --- | --- | right below the header.

F107 · Table row with a different number of columns

Section titled “F107 · Table row with a different number of columns”

Warning. Message: this row has 3 columns, but the header has 2.

A table row has more or fewer cells than the header.

| Product | Price |
| --- | --- |
| Coffee | 12 | extra |

How to fix: give every row the same number of cells as the header. To write | inside a cell, use \|.

Error. Message: unknown block: colums.

The name after ::: or :: is neither a built-in block nor a component defined in the document or the project theme. The hint suggests the closest name.

::: colums
Text
:::

How to fix: fix the name (here, columns) or define the component with @component. See the list in Blocks.

Warning. Message: divider does not accept content; use :: divider on a single line.

icon, spacer and divider have no content. When opened with :::, the content between them and the closing ::: is ignored.

::: divider
Text
:::

How to fix: use the single-line form, :: divider, and put the text outside the block.

Warning. Message: the text 3 after grid will be ignored.

Only icon and spacer take a value after the name. On the other built-in blocks, loose text is ignored.

::: grid 3
A
B
C
:::

How to fix: use attributes in braces, as in ::: grid {cols=3}.

Error. Message: the chart needs a table with the data.

The chart block draws the data of a Markdown table placed inside it. Without a table, the chart is not drawn.

::: chart {type=bar}
Sales per month
:::

How to fix: put a table inside the block. The first column holds the labels and the others are the series. See Charts.

Error. Message: twelve is not a number.

Every data cell of a chart, except the first column, must be a number. The invalid cell counts as 0.

::: chart
| Month | Sales |
| --- | ---: |
| Jan | twelve |
:::

How to fix: use numbers such as 42, 3.5 or 3,5. A trailing % is accepted.

Error. Message: the chart table needs at least one column of values.

The table only has the label column, so there is nothing to draw.

::: chart
| Month |
| --- |
| Jan |
:::

How to fix: add at least one column of values to the table.

Error. Message: provide the icon name.

:: icon {size=3xl}

How to fix: write the name after icon, as in :: icon rocket {size=3xl}. The names are listed in Icons.

Error. Message: unknown icon: rockets.

The name is not in the list of built-in icons. When there is a similar name, the hint suggests it.

:: icon rockets

How to fix: use a name from the list in Icons, such as rocket.

Error. Message: . must be followed by a name.

Inside braces, . must be attached to a style name and # to an id.

Text {. color=accent}

How to fix: write the name right after it, as in {.highlight} or {#opening}, or remove the loose character.

Error. Message: unclosed quotes in attribute value.

A value that starts with a quote must end with the same quote.

![Photo](https://example.com/photo.jpg){fit="cover}

How to fix: close the value with the quote that opened it: {fit="cover"}. At the end of headings, paragraphs and blocks, braces with an open quote are not recognized as attributes and show up as text on the slide.

Error. Message: attribute color has no value after =.

There is an = with nothing after it. It usually comes with an F301, because the empty value is also invalid.

# Heading {color=}

How to fix: provide the value ({color=accent}) or remove the attribute.

Error. Message: invalid text in attributes: @highlight.

Inside braces, only .style, #id, key=value, key="value with spaces" and key are accepted.

Text {@highlight}

How to fix: use the right form, here {.highlight}. Attribute names start with a letter.

Warning. Message: #id only works on the slide separator (--- {#id}).

Ids identify slides, for links such as [back](#opening). On other blocks, the id is ignored.

# Opening {#start}

How to fix: put the id on the slide separator, as in --- {#start}.

Error. Message: style .loop references itself.

A @style includes itself, directly or through other styles. Since the style does not exist yet while its own definition is read, the compiler also shows an F207 at the same spot.

@style loop {.loop color=accent}
Text {.loop}

How to fix: remove the circular reference. A style can only include styles defined before it.

Error. Message: unknown style: .highlite.

The name after the . is not a built-in style, a @style or a color token. The hint suggests the closest name.

Text {.highlite}

How to fix: fix the name or declare the style at the start of the document with @style name {attributes}. See the built-in styles.

Warning. Message: another slide already uses the id #summary.

Two slides have the same id, so a #summary link can only lead to one of them.

--- {#summary}
# Summary
--- {#summary}
# Conclusion

How to fix: give each slide a different id.

Error. Message: unknown attribute: colr.

The name is neither a style attribute nor an attribute of the block it appears on. The hint suggests the closest name or lists the attributes accepted there.

# Heading {colr=coral}

How to fix: fix the name. Block attributes, such as cols or fit, only work on the right blocks. See Attributes.

Error. Message: depends on the attribute, for example invalid size: huge or unknown color: corall.

The attribute exists, but the value is not accepted. The attribute is ignored, and the hint says which values are valid.

# Heading {size=huge color=corall}

Common cases:

CaseInvalid exampleValid example
Unknown color or malformed hexcolor=corall, color=#12color=coral, color=#123
Color opacity outside 0 to 100color=accent/150color=accent/40
Name outside the scale or number out of rangesize=huge, pad=900size=5xl, pad=xl
Font not declaredfont=titlefont=display or @font title …
Invalid weightweight=450weight=500
Invalid booleanitalic=maybeitalic or italic=false
Invalid alignmentalign=middlealign=center
Invalid shadowshadow=xlshadow=lg
Border wider than 40border="80 coral"border="4 coral"
Invalid lengthw=200%, w=halfw=50%, w=480
Attribute that needs a value, used alone{size}{size=xl}
Address not allowed in a link or image[x](javascript:…), ![x](file.png)https://…, asset:<id>
Invalid image fitfit=stretchfit=cover
Grid columns outside 1 to 12cols=20cols=4
Invalid column proportionswidths="a b"widths="2 1"
Invalid chart typetype=radartype=line
Invalid spacer size:: spacer huge:: spacer 3xl
Step outside 1 to 99step=0step=1

How to fix: use one of the values given in the hint. The full scales and ranges are in Attributes.

Warning. Message: widths has 3 values, but there are 1 columns.

The number of proportions in widths differs from the number of children of the columns block.

::: columns {widths="2 1 1"}
Left
:::

How to fix: give one proportion per column, or adjust the columns. Remember that each direct child is a column; group several elements with ::: stack.

Error. Message: $content can only be used inside a @component.

$content marks where the content passed to a component goes, so it only makes sense in the body of a @component.

# Heading
$content

How to fix: remove the line or move it into a component body. To write the literal text, use \$content.

Error. Message: component echo uses itself.

A component uses itself, directly or through other components. Components have no recursion, so the use is dropped.

@component echo
:: echo
@end
:: echo

How to fix: remove the circular use from the component body.

Error. Message: components nested too deeply (limit: 16 levels).

A component uses another, which uses another, and so on, for more than 16 levels. The example below is abbreviated: with all 17 definitions written out, the error shows up on the use of n1.

@component n1
:: n2
@end
@component n2
:: n3
@end
// n3 to n16 follow the same pattern, each one using the next
@component n17
End
@end
:: n1

How to fix: simplify the chain of components by merging intermediate levels.

Error. Message: components only accept parameters, not .styles or #id.

When using a component, the braces only accept named parameters.

@component badge {text}
::: box {.card}
$text
:::
@end
:: badge {.dark text=New}

How to fix: wrap the component in a block with the style (::: box {.dark} … :: badge {text=New} … :::) or add a parameter for it.

Error. Message: component badge has no parameter tone.

The parameter was not declared in the component definition. The hint lists the existing parameters.

@component badge {text}
::: box {.card}
$text
:::
@end
:: badge {text=New tone=accent}

How to fix: fix the name or declare the parameter, as in @component badge {text tone=accent}.

F408 · Loose text after the component name

Section titled “F408 · Loose text after the component name”

Error. Message: components take named parameters in braces.

Components do not take positional values: every parameter needs a name.

@component badge {text=New}
::: box {.card}
$text
:::
@end
:: badge Sale

How to fix: pass the value as a named parameter: :: badge {text=Sale}.

Error. Message: missing required parameter text of component badge.

Parameters declared without a default value are required.

@component badge {text}
::: box {.card}
$text
:::
@end
:: badge

How to fix: provide the parameter (:: badge {text=New}) or give it a default value in the definition (@component badge {text=New}).

Error. Message: component badge uses $title, which is not a declared parameter.

The component body uses $title inside text or an attribute, but title is not in the parameter list.

@component badge {text}
::: box {.card}
## $title
$text
:::
@end
:: badge {text=New}

How to fix: declare the parameter (@component badge {text title}) or fix the name. Alone on a line, $name is a named slot and does not cause this error.

Warning. Message: component badge does not use $content; the content will be ignored.

The component was used with ::: and received content, but its body has no $content.

@component badge {text}
::: box {.card}
$text
:::
@end
::: badge {text=New}
This paragraph is ignored.
:::

How to fix: add $content to the component body or use the single-line form (:: badge {text=New}).

Error. Message: box is already a language block and cannot be redefined.

The names stack, row, columns, grid, box, steps, notes, chart, icon, spacer, divider and slot are reserved.

@component box
Text
@end

How to fix: pick another name, such as panel or card-box.

Error. Message: component badge was defined more than once.

The same document defines two components with the same name. The second definition is dropped.

@component badge
New
@end
@component badge
Sale
@end

How to fix: remove or rename one of the definitions. Redefining a project theme component in a presentation is allowed and does not cause this error.

Error. Message: component pair has no slot side-c.

::: slot fills a slot that the component does not declare. The hint suggests the closest name.

@component pair {title}
## $title
$content
$side-b
@end
::: pair {title=Comparison}
Before
::: slot side-c
After
:::
:::

How to fix: use the name of an existing slot (here, side-b) or declare the slot in the component with $side-c alone on a line.

Error. Message: provide the slot name.

@component pair {title}
## $title
$content
$side-b
@end
::: pair {title=Comparison}
Before
::: slot
After
:::
:::

How to fix: write the slot name after slot, as in ::: slot side-b.

Error. Message: ::: slot can only be used inside a component.

::: slot only works as a direct child of a container component use. Outside one, the compiler also warns that the name is ignored (F110).

::: slot side-b
After
:::

How to fix: put the ::: slot inside ::: component … :::, or remove the block.

Error. Message: slot side-b was filled more than once.

@component pair {title}
## $title
$content
$side-b
@end
::: pair {title=Comparison}
::: slot side-b
After
:::
::: slot side-b
Again
:::
:::

How to fix: merge the content into a single ::: slot side-b.

Error. Message: @title needs a value.

@title, @author, @theme, @version and @aspect need a value on the same line.

@title
# Opening

How to fix: provide the value, as in @title Annual report, or remove the line.

Error. Message: @color expects a name and a value.

@color
# Opening

How to fix: provide the token name and the color, as in @color brand #ff6b4a.

Error. Message: @style expects a name and attributes.

@style highlight
# Opening

How to fix: provide the name and the attributes in braces, as in @style highlight {color=coral weight=bold}.

Error. Message: @component without @end (or @header, @footer).

Without @end, the rest of the document is read as the block body, and the presentation ends up with no slides.

@component badge {text}
::: box {.card}
$text
:::
# Opening

How to fix: end the @component, @header or @footer with an @end line.

Error. Message: @end without an open block.

An @end line appears with no open @component, @header or @footer before it.

@end
# Opening

How to fix: remove the @end or add, before it, the @component, @header or @footer it should close.

Error. Message: unknown definition: @theem.

The name after @ is not a language definition. The hint suggests the closest one.

@theem ink
# Opening

How to fix: use one of the definitions: @title, @author, @theme, @version, @aspect, @color, @font, @style, @component, @header, @footer or @end.

Error. Message: font name without closing quotes.

@font title "Bebas Neue 400
# Opening

How to fix: close the quotes after the family name: @font title "Bebas Neue" 400.

Error. Message: invalid font name: Open-Sans.

The family name can only contain letters, numbers and spaces, and cannot be empty.

@font title "Open-Sans"
# Opening

How to fix: use the family name as it appears on Google Fonts, in quotes: @font title "Open Sans".

Error. Message: invalid font weight: 450.

@font title "Inter" 450
# Opening

How to fix: use weights from 100 to 900, in steps of 100, such as 400 or 500.

Error. Message: @component needs a name.

@component {text}
$text
@end

How to fix: write the name right after @component: @component badge {text}.

Error. Message: invalid component name: Badge.

Component names start with a lowercase letter and use only lowercase letters, numbers and hyphens.

@component Badge {text}
$text
@end

How to fix: use a name such as badge or new-badge.

F512 · Component parameter with a style or id

Section titled “F512 · Component parameter with a style or id”

Error. Message: component parameters do not accept .style or #id.

The braces after @component declare parameters, not styles.

@component badge {.card text}
$text
@end

How to fix: remove the .style or #id from the list and apply the style to a block in the body, such as ::: box {.card}.

Error. Message: unknown theme: dark.

The theme does not exist, and the document falls back to the paper theme.

@theme dark
# Opening

How to fix: use paper, ink or editorial. See Built-in themes.

@theme does not create or name a theme: it only picks the base. To have your own theme, keep a base and adjust it with @color, @font and @style. In the Library, the theme’s name goes in the Name field. See Themes.

Error. Message: unsupported language version: 2.

@version 2
# Opening

How to fix: use @version 1, the current version, or remove the line.

Error. Message: unsupported aspect ratio: 21:9.

@aspect 21:9
# Opening

How to fix: use 16:9 (the default) or 4:3.

Error. Message: invalid color name: Brand.

Color tokens start with a lowercase letter and use only lowercase letters, numbers and hyphens.

@color Brand #ff6b4a
# Opening

How to fix: use a name such as brand or brand-dark.

Error. Message: invalid font name: Title.

The token name (the first word after @font) follows the same rule as color tokens.

@font Title "Bebas Neue" 400
# Opening

How to fix: use a name such as title, and apply it with {font=title}.

Error. Message: invalid style name: Highlight.

@style Highlight {color=accent weight=bold}
# Opening

How to fix: use lowercase letters, numbers and hyphens, such as highlight.

Error. Message: the project theme can only contain definitions, not slides.

It only appears in the project theme editor, never in presentations. The example below is the text of the project theme.

@theme ink
@color brand #12a37f
# Opening

How to fix: keep only lines that start with @ (@theme, @color, @font, @style and @component) in the theme, plus blank lines and comments. Slide content goes in each presentation.

F520 · @title or @author in the project theme

Section titled “F520 · @title or @author in the project theme”

Warning. Message: @title in the project theme is ignored; set it in each presentation.

It only appears in the project theme editor. Title and author belong to each presentation, so they are ignored in the theme.

@title Annual report
@theme ink

How to fix: remove the line from the theme and write @title or @author at the start of each presentation.

Error. Message: @footer was defined more than once.

Each presentation has one header and one footer. The second block is ignored.

@footer
Confidential
@end
@footer
$page / $pages
@end
# Opening

How to fix: put all the content in a single block, for example with ::: columns. See Header and footer.

Section titled “F522 · Unknown field in the header or footer”

Error. Message: @footer uses $pagina, which is not an available field.

Inside @header and @footer, $ followed by a name is an automatic field. The hint suggests the closest field.

@footer
Page $pagina
@end
# Opening
---
# Agenda

How to fix: use one of the fields: $page, $pages, $title, $author or $date.

Section titled “F523 · Step-by-step reveal in the header or footer”

Warning. Message: @footer is always shown in full; step and ::: steps are ignored in it.

@footer
::: steps
- First
- Second
:::
@end
# Opening
---
# Agenda

How to fix: remove step and ::: steps from the block. To reveal something gradually, do it inside the slide.

Warning. Message: speaker notes inside @footer are ignored.

@footer
Confidential
::: notes
Remember to mention the contract.
:::
@end
# Opening
---
# Agenda

How to fix: write ::: notes inside the slide where the note belongs.

Section titled “F525 · Text on the @header or @footer line”

Warning. Message: the text Confidential after @footer will be ignored.

The @header or @footer line only accepts attributes in braces. The content goes on the following lines, up to @end.

@footer Confidential
@end
# Opening

How to fix: move the text to the next line. To turn off the footer that comes from the project theme, use @footer none.

F530 · Definition that does not fit the Library item kind

Section titled “F530 · Definition that does not fit the Library item kind”

Error. Message: @theme cannot be used in a palette.

Each Library item kind accepts only some definitions: palettes take @color and @font; styles also take @style; components also take @component; themes accept any theme definition.

@theme paper
@color brand #349ef4

How to fix: delete the highlighted line or save the item with another kind, for example Theme instead of Palette.

F531 · Library item without a main definition

Section titled “F531 · Library item without a main definition”

Error. Message: choose which component is the main one.

Library components and styles must say which definition is the main one, the one people call when they use the item.

How to fix: in the Library editor, pick the Main definition.

Error. Message: component not found: card.

The chosen main definition does not exist in the item text, or it was renamed.

How to fix: pick another main definition or fix the name in the text.

Error. Message: unknown item kind: slide.

The item was sent with a kind the Library does not know. Valid kinds are theme, component, style and palette (templates are validated as themes).

How to fix: save the item again from the app, picking one of the kinds in the list.