Error messages
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:
| Part | Example |
|---|---|
| Severity | Error (something was dropped or does not work) or warning (it works, but probably not the way you wanted). |
| Code | F209. The code is stable and does not change between versions. |
| Position | Line and column of the problem. |
| Message | unknown attribute: colr |
| Hint | Did 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.
| Family | Topic |
|---|---|
| F1xx | Structure: blocks, tables, code, charts and icons. |
| F2xx | Attributes: brace syntax, styles and attribute names. |
| F3xx | Attribute values. |
| F4xx | Components and named slots. |
| F5xx | Preamble definitions and the project theme. |
F1xx: structure
Section titled “F1xx: structure”F101 · Closing fence with no open block
Section titled “F101 · Closing fence with no open block”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 :::.
# ResultsWe grew 38%.:::How to fix: remove the line or open a block before it, such as ::: columns.
F102 · Unclosed block
Section titled “F102 · Unclosed block”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 ---.
::: columnsLeftRightHow to fix: add a line containing only ::: at the end of the block.
F103 · Definition after the first slide
Section titled “F103 · Definition after the first slide”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 slideHow to fix: move the definition to the top of the file, before any content.
F104 · Block without a name
Section titled “F104 · Block without a name”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}.
F105 · Unclosed code block
Section titled “F105 · Unclosed code block”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.
```jsconsole.log("hi")How to fix: close the block with a line containing ```.
F106 · Table without a separator line
Section titled “F106 · Table without a separator line”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 \|.
F108 · Unknown block
Section titled “F108 · Unknown block”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.
::: columsText:::How to fix: fix the name (here, columns) or define the component with @component. See the list in Blocks.
F109 · Single-line block with content
Section titled “F109 · Single-line block with content”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.
::: dividerText:::How to fix: use the single-line form, :: divider, and put the text outside the block.
F110 · Text ignored after the block name
Section titled “F110 · Text ignored after the block name”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 3ABC:::How to fix: use attributes in braces, as in ::: grid {cols=3}.
F111 · Chart without a table
Section titled “F111 · Chart without a table”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.
F112 · Chart value is not a number
Section titled “F112 · Chart value is not a number”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.
F113 · Chart without series
Section titled “F113 · Chart without series”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.
F114 · Icon without a name
Section titled “F114 · Icon without a name”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.
F115 · Unknown icon
Section titled “F115 · Unknown icon”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 rocketsHow to fix: use a name from the list in Icons, such as rocket.
F2xx: attributes
Section titled “F2xx: attributes”F201 · Dot or hash without a name
Section titled “F201 · Dot or hash without a name”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.
F202 · Unclosed quotes
Section titled “F202 · Unclosed quotes”Error. Message: unclosed quotes in attribute value.
A value that starts with a quote must end with the same quote.
{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.
F203 · Attribute without a value
Section titled “F203 · Attribute without a value”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.
F204 · Invalid text in attributes
Section titled “F204 · Invalid text in attributes”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.
F205 · Id outside the slide separator
Section titled “F205 · Id outside the slide separator”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}.
F206 · Style that references itself
Section titled “F206 · Style that references itself”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.
F207 · Unknown style
Section titled “F207 · Unknown style”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.
F208 · Repeated slide id
Section titled “F208 · Repeated slide id”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}# ConclusionHow to fix: give each slide a different id.
F209 · Unknown attribute
Section titled “F209 · Unknown attribute”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.
F3xx: values
Section titled “F3xx: values”F301 · Invalid value
Section titled “F301 · Invalid value”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:
| Case | Invalid example | Valid example |
|---|---|---|
| Unknown color or malformed hex | color=corall, color=#12 | color=coral, color=#123 |
| Color opacity outside 0 to 100 | color=accent/150 | color=accent/40 |
| Name outside the scale or number out of range | size=huge, pad=900 | size=5xl, pad=xl |
| Font not declared | font=title | font=display or @font title … |
| Invalid weight | weight=450 | weight=500 |
| Invalid boolean | italic=maybe | italic or italic=false |
| Invalid alignment | align=middle | align=center |
| Invalid shadow | shadow=xl | shadow=lg |
| Border wider than 40 | border="80 coral" | border="4 coral" |
| Invalid length | w=200%, w=half | w=50%, w=480 |
| Attribute that needs a value, used alone | {size} | {size=xl} |
| Address not allowed in a link or image | [x](javascript:…),  | https://…, asset:<id> |
| Invalid image fit | fit=stretch | fit=cover |
| Grid columns outside 1 to 12 | cols=20 | cols=4 |
| Invalid column proportions | widths="a b" | widths="2 1" |
| Invalid chart type | type=radar | type=line |
Invalid spacer size | :: spacer huge | :: spacer 3xl |
| Step outside 1 to 99 | step=0 | step=1 |
How to fix: use one of the values given in the hint. The full scales and ranges are in Attributes.
F302 · widths does not match the columns
Section titled “F302 · widths does not match the columns”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.
F4xx: components
Section titled “F4xx: components”F401 · $content outside a component
Section titled “F401 · $content outside a component”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$contentHow to fix: remove the line or move it into a component body. To write the literal text, use \$content.
F404 · Component that uses itself
Section titled “F404 · Component that uses itself”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
:: echoHow to fix: remove the circular use from the component body.
F405 · Components nested too deeply
Section titled “F405 · Components nested too deeply”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 n17End@end
:: n1How to fix: simplify the chain of components by merging intermediate levels.
F406 · Style or id on a component use
Section titled “F406 · Style or id on a component use”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.
F407 · Unknown parameter
Section titled “F407 · Unknown parameter”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 SaleHow to fix: pass the value as a named parameter: :: badge {text=Sale}.
F409 · Missing required parameter
Section titled “F409 · Missing required parameter”Error. Message: missing required parameter text of component badge.
Parameters declared without a default value are required.
@component badge {text}::: box {.card}$text:::@end
:: badgeHow to fix: provide the parameter (:: badge {text=New}) or give it a default value in the definition (@component badge {text=New}).
F410 · Undeclared $ placeholder
Section titled “F410 · Undeclared $ placeholder”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.
F411 · Content ignored by the component
Section titled “F411 · Content ignored by the component”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}).
F412 · Built-in block name
Section titled “F412 · Built-in block name”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 boxText@endHow to fix: pick another name, such as panel or card-box.
F413 · Component defined twice
Section titled “F413 · Component defined twice”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 badgeNew@end@component badgeSale@endHow 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.
F414 · Unknown named slot
Section titled “F414 · Unknown named slot”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-cAfter::::::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.
F415 · ::: slot without a name
Section titled “F415 · ::: slot without a name”Error. Message: provide the slot name.
@component pair {title}## $title$content$side-b@end
::: pair {title=Comparison}Before::: slotAfter::::::How to fix: write the slot name after slot, as in ::: slot side-b.
F416 · ::: slot outside a component
Section titled “F416 · ::: slot outside a component”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-bAfter:::How to fix: put the ::: slot inside ::: component … :::, or remove the block.
F417 · Slot filled twice
Section titled “F417 · Slot filled twice”Error. Message: slot side-b was filled more than once.
@component pair {title}## $title$content$side-b@end
::: pair {title=Comparison}::: slot side-bAfter:::::: slot side-bAgain::::::How to fix: merge the content into a single ::: slot side-b.
F5xx: definitions and project theme
Section titled “F5xx: definitions and project theme”F501 · Definition without a value
Section titled “F501 · Definition without a value”Error. Message: @title needs a value.
@title, @author, @theme, @version and @aspect need a value on the same line.
@title
# OpeningHow to fix: provide the value, as in @title Annual report, or remove the line.
F502 · Incomplete @color
Section titled “F502 · Incomplete @color”Error. Message: @color expects a name and a value.
@color
# OpeningHow to fix: provide the token name and the color, as in @color brand #ff6b4a.
F503 · Incomplete @style
Section titled “F503 · Incomplete @style”Error. Message: @style expects a name and attributes.
@style highlight
# OpeningHow to fix: provide the name and the attributes in braces, as in @style highlight {color=coral weight=bold}.
F504 · Block without @end
Section titled “F504 · Block without @end”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:::
# OpeningHow to fix: end the @component, @header or @footer with an @end line.
F505 · @end without an open block
Section titled “F505 · @end without an open block”Error. Message: @end without an open block.
An @end line appears with no open @component, @header or @footer before it.
@end
# OpeningHow to fix: remove the @end or add, before it, the @component, @header or @footer it should close.
F506 · Unknown definition
Section titled “F506 · Unknown definition”Error. Message: unknown definition: @theem.
The name after @ is not a language definition. The hint suggests the closest one.
@theem ink
# OpeningHow to fix: use one of the definitions: @title, @author, @theme, @version, @aspect, @color, @font, @style, @component, @header, @footer or @end.
F507 · Font name without closing quotes
Section titled “F507 · Font name without closing quotes”Error. Message: font name without closing quotes.
@font title "Bebas Neue 400
# OpeningHow to fix: close the quotes after the family name: @font title "Bebas Neue" 400.
F508 · Invalid font family
Section titled “F508 · Invalid font family”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"
# OpeningHow to fix: use the family name as it appears on Google Fonts, in quotes: @font title "Open Sans".
F509 · Invalid font weight
Section titled “F509 · Invalid font weight”Error. Message: invalid font weight: 450.
@font title "Inter" 450
# OpeningHow to fix: use weights from 100 to 900, in steps of 100, such as 400 or 500.
F510 · Component without a name
Section titled “F510 · Component without a name”Error. Message: @component needs a name.
@component {text}$text@endHow to fix: write the name right after @component: @component badge {text}.
F511 · Invalid component name
Section titled “F511 · Invalid component name”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@endHow 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@endHow to fix: remove the .style or #id from the list and apply the style to a block in the body, such as ::: box {.card}.
F513 · Unknown theme
Section titled “F513 · Unknown theme”Error. Message: unknown theme: dark.
The theme does not exist, and the document falls back to the paper theme.
@theme dark
# OpeningHow 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.
F514 · Unsupported language version
Section titled “F514 · Unsupported language version”Error. Message: unsupported language version: 2.
@version 2
# OpeningHow to fix: use @version 1, the current version, or remove the line.
F515 · Unsupported aspect ratio
Section titled “F515 · Unsupported aspect ratio”Error. Message: unsupported aspect ratio: 21:9.
@aspect 21:9
# OpeningHow to fix: use 16:9 (the default) or 4:3.
F516 · Invalid color name
Section titled “F516 · Invalid color name”Error. Message: invalid color name: Brand.
Color tokens start with a lowercase letter and use only lowercase letters, numbers and hyphens.
@color Brand #ff6b4a
# OpeningHow to fix: use a name such as brand or brand-dark.
F517 · Invalid font token name
Section titled “F517 · Invalid font token name”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
# OpeningHow to fix: use a name such as title, and apply it with {font=title}.
F518 · Invalid style name
Section titled “F518 · Invalid style name”Error. Message: invalid style name: Highlight.
@style Highlight {color=accent weight=bold}
# OpeningHow to fix: use lowercase letters, numbers and hyphens, such as highlight.
F519 · Slides in the project theme
Section titled “F519 · Slides in the project theme”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
# OpeningHow 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 inkHow to fix: remove the line from the theme and write @title or @author at the start of each presentation.
F521 · Repeated @header or @footer
Section titled “F521 · Repeated @header or @footer”Error. Message: @footer was defined more than once.
Each presentation has one header and one footer. The second block is ignored.
@footerConfidential@end
@footer$page / $pages@end
# OpeningHow to fix: put all the content in a single block, for example with ::: columns. See Header and footer.
F522 · Unknown field in the header or 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.
@footerPage $pagina@end
# Opening
---# AgendaHow to fix: use one of the fields: $page, $pages, $title, $author or $date.
F523 · Step-by-step reveal in the header or footer
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
---# AgendaHow to fix: remove step and ::: steps from the block. To reveal something gradually, do it inside the slide.
F524 · Notes in the header or footer
Section titled “F524 · Notes in the header or footer”Warning. Message: speaker notes inside @footer are ignored.
@footerConfidential::: notesRemember to mention the contract.:::@end
# Opening
---# AgendaHow to fix: write ::: notes inside the slide where the note belongs.
F525 · Text on the @header or @footer line
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
# OpeningHow 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 #349ef4How 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.
F532 · Main definition not found
Section titled “F532 · Main definition not found”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.
F533 · Unknown item kind
Section titled “F533 · Unknown item kind”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.