iA / Presenter / Support / Action

Custom Themes

A Theme is a set of files allowing to change the visual style of a presentation.

You can change the style of a presentation at different levels:

Note that if you are not very comfortable with HTML and CSS, creating a Custom Theme might be difficult. To help you, we have created a Theme Builder for iA Presenter that you can access here: themes.ia.net

But if you would rather get your hands dirty and do it yourself, keep on reading.

Theme structure

  1. Themes assets.
  2. Presets (Predefined sets of CSS variables)
  3. Custom fonts
  4. Theme CSS definitions
  5. Theme thumbnail
  6. Theme definition

Slides HTML structures








The Grid layout also has a CSS class indicating the number of grid cells at the slide content DIV level: grid-items-2 , grid-items-3 , grid-items-4 , etc…


Image Title

Default (text)

Custom fonts

You need to follow these steps to add a custom font to your theme:

1. Add the font files to your theme folder


2. Reference these fonts at the beginning of your CSS

@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 400;
  src: url(Roboto-Slab-Regular.woff2) format('woff2');
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 700;
  src: url(roboto-slab-Bold.woff2) format('woff2');

3. Inform metadata

A. In template.json 

  "TitleFont": "New York",
  "BodyFont": "New York",

Here you need to inform the display name of your custom fonts. That’s the name that will appear in the Style Inspector. Above is an example for the New York font.

B. In presets.json

"TitleFont": "-apple-system-ui-serif, ui-serif",
"BodyFont": "-apple-system-ui-serif, ui-serif",

Here you need to inform the CSS name of your custom font. Above is an example for the New York font. You will notice the name is different than the display name.

NOTE: You could directly set your custom font in CSS but you would lose the ability to override it using the Style Inspector.

Using images from your Theme in CSS

When your custom Theme is installed, iA Presenter preserves the directories structure.

You can then reference an image using the url(...) function. Example:

.backgrounds .default-container{
  background-image: url("image1.jpg");
  background-size: cover;
  background-position: center;


You need to target the inner div of each layout (see table above).


.layout-cover > div {
    justify-content: flex-end; /* vertical alignment */
    align-items: flex-start; /* horizontal alignment */

Horizontal alignment

Property: align-items

Alignment Value
Left flex-start
Center center
Right flex-end

Vertical alignment

Property: justify-content

Alignment Value
Top flex-start
Center center
Bottom flex-end


.backgrounds .v-split-container{
  background-image: url('data:image/svg+xml;utf8,<svg viewBox="0 0 1024 600" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2"><path fill="red" d="m541.526-57.455 584.065 49.14-56.35 669.755-584.065-49.14z"/></svg>');
  background-size: cover;
  background-position: center;

If you use inline SVG as url, directly in your CSS files, you need to take care of how you declare colors. Colors in hexadecimal format (like #FFFFFF) will break your CSS. You will need to use instead of the rgb(0,0,0) format.

If you want to target all backgrounds, whatever is the layout, target the .slide-background class.

Gradient background


  "Presets": [
      "Name": "Default",
      "TitleFont": "system-ui",
      "BodyFont": "system-ui",
      "Appearance" : "dark",
      "DarkBodyTextColor": "#000000",
      "LightBodyTextColor": "#ffffff",
      "DarkTitleTextColor": "#000000",
      "LightTitleTextColor": "#ffffff",
      "DarkBackgroundColor": "transparent",
      "LightBackgroundColor": "transparent",
      "Accent1": "#f94144",
      "Accent2": "#43aa8b",
      "Accent3": "#f9c74f",
      "Accent4": "#90be6d",
      "Accent5": "#f8961e",
      "Accent6": "#577590",


iA Presenter uses the .dark and .light CSS classes. – These classes are set per layout. – You can force the appearance for a specific layout in a custom Theme, in the template.json file


  "Name": "New York",
  "Version": 0.1,
  "Author": "iA",
  "ShortDescription": "Stylish, bold, classy.",
  "LongDescription": "Stylish, bold, classy\n- Different sizes for headlines\n- Simple color background\n- Default white on black\n- Default font: New York",
  "Css": "newyork.css",
  "TitleFont": "New York",
  "BodyFont": "New York",
          "Name": "Cover",
          "Classes": "invert",
          "Name": "Title",
          "Classes": "invert",


The themes are responsive. By default, CSS applies to mobile devices. If you want to target non-mobile devices:

@media (min-width: 768px) {

You can add additional breakpoints if, for instance, you want to provide different font-size/margins depending on the viewport size. However, iA Presenter already has its logic, and defaults should be enough.

Developing custom themes

  1. Create a new Theme: Go to PreferencesThemes. Click on Create New and enter a name.
  2. Navigate to the new Theme files: Click on the Reveal Themes folder in Finder button. Navigate then to the folder of the newly created Theme.
  3. Use your new Theme: Open a presentation, go to the Style Inspector, and set the newly created Theme.
  4. Bring your modification: Open your Theme.css in your preferred editor and add your custom CSS.



Share your presentation to your audience as Markdown, PDF, HTML, PPTX or Images.

Presentation Mode

How to use the teleprompter: read your notes and get a preview of your slides.

Remote controllers

Many of you do presentations with a remote controller. We have created iA Presenter with this in mind.

Custom Themes

You can change the style of a presentation at different levels.

Presenting Online

Project the slides to your audience while you check the teleprompter.