LogoLogo
WebsitePricingGitHubSign up
  • Getting started
    • Installation and usage
    • Form settings
    • Options
    • Frequently asked questions
    • Spam protection
    • React
  • Customization
    • Theming
    • Localization
  • Input types
    • Text input
    • Email input
    • URL input
    • Telephone input
    • Password input
    • Number input
    • Select box
    • Choice input
    • Picture choice
    • Rating input
    • Opinion scale / Net Promoter Score®
    • Datetime input
    • Date input
    • Time input
    • File input
  • Content
    • Slide
    • Start slide
    • End slide
    • Markdown
    • Data binding
    • CSS utility classes
  • Integrations
    • Google Sheets integration
Powered by GitBook

© 2025 Forms.md | All rights reserved

On this page
  • Set up custom themes
  • The themeLight and themeDark options
  • Light and dark modes
  • Toggle

Was this helpful?

  1. Customization

Theming

Customize your forms to perfectly match your brand.

PreviousReactNextLocalization

Last updated 4 months ago

Was this helpful?

Set up custom themes

Set the themeLight and themeDark during instantiation to create custom themes that perfectly match your brand. The options correspond to the theme used for light mode or dark mode.

import { Composer, Formsmd } from "formsmd";

const composer = new Composer({
  id: "my-form"
});

composer.opinionScale("nps", {
  question: "How likely are you to recommend our product to a friend or colleague?",
  required: true
});

// Set the themes during instantiation
const formsmd = new Formsmd(
  composer.template,
  document.getElementById("my-form-container"),
  {
    themeLight: {
      accent: "#353148",
      accentForeground: "#e2d2b6",
      backgroundColor: "#e2d2b6",
      color: "#353148"
    },
    themeDark: {
      accent: "#e2d2b6",
      accentForeground: "#353148",
      backgroundColor: "#353148",
      color: "#e2d2b6"
    }
  }
);
formsmd.init();

The themeLight and themeDark options

The colors must be HTML names, hex codes, or RGB values.

Both the theme options have the following parameters:

Name
Type
Description

accent

string

The primary color used on buttons, form fields, etc.

accentForeground

string

The text color used on accent background, for example, the text on buttons.

backgroundColor

string

The background-color of the page.

color

string

The color of the text on the page.


Light and dark modes

const formsmd = new Formsmd(
  composer.template,
  document.getElementById("my-form-container"),
  {
    colorScheme: "dark"
  }
);
formsmd.init();

Toggle

If you have a toggle on your website that lets users select light mode or dark mode (or system), you will need to dynamically update the color scheme of the forms when the user changes their preference. This is easy to do because the color scheme is handled using the data-fmd-color-scheme attribute on the .fmd-root container:

  • For light mode, the data-fmd-color-scheme has the "light" value.

  • For dark mode, the data-fmd-color-scheme has the "dark" value.

function toggleColorScheme() {
  const colorSchemeToSet =
    document.documentElement.getAttribute("data-bs-theme") === "light"
      ? "dark"
      : "light";
  document.documentElement.setAttribute("data-bs-theme", colorSchemeToSet);
  setCookie("halfmoon:color-scheme", colorSchemeToSet, 365);
    
  // Set color scheme of all Forms.md root elements
  document.querySelectorAll(".fmd-root").forEach((div) => {
    div.setAttribute("data-fmd-color-scheme", colorSchemeToSet);
  });
}

The color scheme is set using the colorScheme , which is set to "light" by default. Of course, this can be changed during instantiation. For example, the form below would start off in dark mode.

For example, here's a snippet the handles dynamic color schemes on a Bootstrap/ website:

options
option
Halfmoon
Theming - light mode
Theming - dark mode