Objects

Objects are the data your Liquid templates read: the firm, the signed-in client (customer), the page being viewed, the section being rendered. Read a property with a dot and its snake_case name:

Liquid
<a href="{{ firm.url }}">{{ firm.name | escape }}</a>

Some objects are available everywhere, some only in certain templates, and some only come from other objects (a menu's links are link objects). Each section below says where its object is available.

Reading this reference

Types

Type Meaning
string Text. Escape it with escape before you output it in HTML, unless the property says it's HTML.
HTML A string of sanitized HTML. Output it as is, without escape.
number An integer or a decimal. Money amounts are in major units: 49.0 is 49 dollars.
boolean true or false.
array of X A list you can loop over with for, and count with .size.
X or nil The value can be missing. nil is falsy, so {% if firm.logo_url %} checks for it.

Missing values. A property that doesn't exist, or an object that isn't available in the current template, is nil. It renders as nothing and doesn't raise an error.

Relative URLs. Properties named url or …_url that point at the firm's own pages are paths, such as /contact. Image URLs and firm.url are absolute.

Overview

Object Type Available in
firm firm Everywhere
settings Theme settings Everywhere
routes routes Everywhere
customer customer or nil Everywhere
request request Everywhere
flash flash or nil Everywhere
template, page_title, page_description, canonical_url string Everywhere
content_for_header, content_for_layout HTML Layouts
form_authenticity_token string Everywhere
linklists Menus by handle Everywhere
practice_areas array of practice_area Everywhere
team team Everywhere
blog blog Everywhere
intake_form intake_form Everywhere
practice_area practice_area The practice_area template
article article The article template
page page Site pages (index, page and page.* templates)
reset_password reset_password customers/reset_password template
invitation invitation or nil customers/activate_account template
section section Section files
block block Loops over section.blocks
form form Inside {% form %}
area, article_category, article_tag, metafields, team_member, linklist, link, font, color_scheme Reached through other objects and settings

firm

The firm whose site is being rendered. It only exposes public details.

Available: everywhere, as firm.

Property Type Description
id string The firm's unique ID.
name string The firm's name.
description string or nil The firm's short description.
url string The site's absolute address, e.g. https://learn.example.com.
host string The host the site is served on: the firm's primary custom domain once it's verified, otherwise its platform subdomain.
logo_url string or nil Absolute URL of the logo.
favicon_url string or nil Absolute URL of the favicon.
og_image_url string or nil Absolute URL of the default social sharing image.
currency string The firm's currency as an ISO 4217 code, e.g. USD. Use the money filter rather than formatting amounts yourself.
country string or nil The firm's country as a two-letter code, e.g. FR.
locale string The locale used to format numbers, money and dates, e.g. en-US.
timezone string or nil The firm's time zone, e.g. Europe/Paris. The local_date filter uses it.
contact_email string or nil The public contact email address.
phone string or nil The office phone number, as the firm typed it.
phone_url string or nil The phone as a tel: link with only + and digits, e.g. tel:+14155550100. Use it as the href.
address_line_1, address_line_2 string or nil The office address, e.g. 450 Sutter Street, Suite 400 and San Francisco, CA 94108.
address string or nil Both address lines joined with , , e.g. for a map link.
office_hours string or nil The office hours, e.g. Monday to Friday, 9am – 6pm.
legal_name string The name for the copyright line: the firm's legal name, or its name when none is set.
established number or nil The year the firm was established, e.g. 1994.
portal_enabled boolean Whether the firm's client portal is on. Show sign-in and account links only when it is.
has_privacy_policy boolean Whether the firm has written a privacy policy.
has_terms_of_use boolean Whether the firm has written terms of use.
social_links array of social link The firm's social media profiles, in the order the firm set.
powered_by powered-by badge The platform badge. Some plans require it.
Liquid
{% if firm.logo_url %}
  <img src="{{ firm.logo_url }}" alt="{{ firm.name | escape }}">
{% else %}
  <span>{{ firm.name | escape }}</span>
{% endif %}

The office details are set in Firm settings → General, so they stay the same whichever theme is live. Leave out any that are empty:

Liquid
{% if firm.phone %}<a href="{{ firm.phone_url }}">{{ firm.phone | escape }}</a>{% endif %}
{% if firm.address %}<address>{{ firm.address_line_1 | escape }}<br>{{ firm.address_line_2 | escape }}</address>{% endif %}
<p>© {{ 'now' | date: '%Y' }} {{ firm.legal_name | escape }}</p>
Property Type Description
type string One of youtube, x, facebook, instagram, linkedin, github, or website when no type was saved. Use it to pick an icon.
label string or nil The link text the firm entered.
url string The profile's absolute URL.
Liquid
{% for link in firm.social_links %}
  <a href="{{ link.url }}" target="_blank" rel="noopener noreferrer">
    {{ link.label | default: link.type | escape }}
  </a>
{% endfor %}

Powered-by badge

Property Type Description
visible boolean Whether the firm's plan shows the badge. Render it when this is true.
text string The badge text.
url string Where the badge links to.
Liquid
{% if firm.powered_by.visible %}
  <a href="{{ firm.powered_by.url }}">{{ firm.powered_by.text | escape }}</a>
{% endif %}

settings

The theme-wide settings declared in config/settings_schema.json, by setting id, with the values the firm saved in the theme editor (or each setting's default). Section and block settings work the same way, as section.settings and block.settings.

Available: everywhere, as settings.

The value's type depends on the setting's type:

Setting type Value
text, textarea, select, radio string or nil
richtext, inline_richtext HTML or nil
color string: a hex colour such as #0f172a
checkbox boolean
range, number number or nil
url string or nil: a path such as /contact. Links to site pages follow route changes.
video_url, image_picker string or nil: an absolute URL
font_picker font or nil
link_list linklist or nil
color_scheme_group array of color_scheme
color_scheme color_scheme: a deleted scheme falls back to the setting's default, then to the first scheme

See Settings for how to declare each type.

Liquid
<h1 style="font-family: {{ settings.heading_font.family }}">{{ section.settings.heading | escape }}</h1>

routes

URLs of the platform pages a theme links to. Use these instead of hard-coded paths, so your theme keeps working if a path changes. Every property is a string path.

Available: everywhere, as routes.

Property Description
root_url The home page.
contact_url The firm's contact page, wherever it now lives.
privacy_policy_url The privacy policy. Check firm.has_privacy_policy before linking to it.
terms_of_use_url The terms of use. Check firm.has_terms_of_use before linking to it.
signin_url The sign-in page. It keeps the current ?redirect=, so signing in returns the visitor where they were going.
signup_url The sign-in page: clients join the portal by invitation, so there is no public sign-up. Kept for older themes; it keeps the current ?redirect= too.
forgot_password_url The page that sends a password reset link.
signout_url Sign-out. It only accepts POST: use the customer_logout form, or a form with form_authenticity_token.
account_url The customer's account settings.
practice_areas_url The list of the firm's published practice areas (/practice-areas).
blog_url The blog's latest articles (/blog).
intake_url The intake form (/intake), or nil while the firm hasn't turned it on. Hide your link to it when it's nil.
Liquid
<a href="{{ routes.contact_url }}">Contact us</a>

customer

The signed-in client, or nil for visitors who aren't signed in.

Available: everywhere, as customer.

Property Type Description
id string The customer's unique ID.
first_name string or nil First name.
last_name string or nil Last name.
name string Full name.
email string Email address.
avatar_url string or nil Absolute URL of the profile picture.
Liquid
{% if customer %}
  <a href="{{ routes.account_url }}">My account</a>
  {% form 'customer_logout' %}<button type="submit">Sign out</button>{% endform %}
{% else %}
  <a href="{{ routes.signin_url }}">Sign in</a>
{% endif %}

request

The current request.

Available: everywhere, as request.

Property Type Description
path string The path, starting with /, e.g. /contact.
url string The absolute URL, without the query string.
host string The host the visitor used.
locale string Same as firm.locale.
design_mode boolean true while the page is shown inside the theme editor. Use it to keep editor previews static, e.g. to stop autoplay.
redirect string or nil Where signing in or signing up should send the visitor afterwards. It's always a path on the same site.

flash

The success or error message from the visitor's last action, such as signing out or resetting a password, or nil.

Available: everywhere, as flash.

Property Type Description
type string success or error.
message string The message to show.
Liquid
{% if flash %}
  <p role="status" class="alert alert-{{ flash.type }}">{{ flash.message | escape }}</p>
{% endif %}

Page metadata

Available: everywhere.

Object Type Description
template string The template being rendered, e.g. index, page, page.contact, customers/login, 404.
page_title string The title for <title>, e.g. the page name and the firm name.
page_description string or nil The description for the meta description tag.
canonical_url string The page's canonical absolute URL.

content_for_header already outputs the meta description, canonical and social sharing tags, so you only need these to show them somewhere else.

Liquid
<body class="template-{{ template | replace: '/', '-' | replace: '.', '-' }}">

content_for_header and content_for_layout

Available: in layouts.

Object Type Description
content_for_header HTML Required in <head>: meta tags, structured data, section styles and platform scripts.
content_for_layout HTML Required in <body>: the template's sections.

content_for_header also prints the page's structured data for search engines (JSON-LD): the firm as a LegalService and the WebSite on the homepage, a BlogPosting on articles, a Service on practice group pages and a BreadcrumbList on the rest. Don't add your own JSON-LD for these types, or search engines see them twice. Client portal pages (customers/* templates) are marked noindex.

Liquid
<head>
  {{ content_for_header }}
</head>
<body>
  {% sections 'header-group' %}
  <main id="main-content">{{ content_for_layout }}</main>
</body>

form_authenticity_token

Available: everywhere, as a string.

The security token a form needs when it posts to the platform. {% form %} adds it for you; use it only in a form you write by hand.

Liquid
<form method="post" action="{{ routes.signout_url }}">
  <input type="hidden" name="_token" value="{{ form_authenticity_token }}">
  <button type="submit">Sign out</button>
</form>

linklists

The firm's menus, built under Navigation, by handle. Hyphenated handles can also be read with underscores. Every firm has main-menu and footer.

Available: everywhere. Each value is a linklist.

Liquid
{% for link in linklists['main-menu'].links %}
  <a href="{{ link.url }}">{{ link.title | escape }}</a>
{% endfor %}

Prefer a link_list setting, so the firm chooses which menu a section shows.

The firm can mark a link "Hide from signed-in clients" in Navigation. While a client is signed in, that link (with its child links) isn't in the menu at all, so your markup needs nothing for it.

practice_areas

The firm's published practice areas, in the firm's order. Firms write them under Firm settings → Practice areas: each is a practice group with its own page at /practice-areas/{handle}, and its areas (sub-practices) are sections of that page.

Available: everywhere, as an array of practice_area. It's empty when the firm hasn't published any.

Liquid
{% for group in practice_areas %}
  <a href="{{ group.url }}">{{ group.name | escape }}</a>
  {% for area in group.areas %}<a href="{{ area.url }}">{{ area.name | escape }}</a>{% endfor %}
{% endfor %}

practice_area

A published practice group.

Available: as items of practice_areas, and as practice_area on the practice_area template (the group's own page).

Property Type Description
id string The group's ID.
name string Its name, e.g. Family & Estate.
handle string The last part of its address, e.g. family-estate.
url string Its page, e.g. /practice-areas/family-estate.
summary string or nil One line, for cards and menus.
content HTML The group's text (sanitized). May be empty.
image_url string or nil Its image, 1600×1200.
card_image_url string or nil Its image, 1200×900, for cards.
lead team_member or nil The person who leads it, while they're on the team page.
areas array of area Its published areas, in order.
seo_title, seo_description string or nil The firm's search title and description, if set.
metafields metafields The firm's custom fields for practice groups, by key. Every firm starts with intro, highlights and representative_matters.

area

One area (sub-practice) of a practice group, shown as a section of the group's page.

Available: as items of practice_area.areas.

Property Type Description
id string The area's ID.
name string Its name.
handle string Its anchor on the group's page, unique within the group. Put it on the area's element as id.
url string The group's page with the anchor, e.g. /practice-areas/family-estate#probate.
summary string or nil One line.
content HTML Its text (sanitized). May be empty.
metafields metafields The firm's custom fields for practice areas, by key.
Liquid
{% for area in practice_area.areas %}
  <section id="{{ area.handle }}">
    <h2>{{ area.name | escape }}</h2>
    {{ area.content }}
  </section>
{% endfor %}

intake_form

The firm's intake form, which prospective clients fill in to tell the firm about their matter. The firm sets it up in its admin (Intake → Intake form); each submission becomes a lead there. Draw it with {% form 'intake' %} in your intake template (Counsel's main-intake section is the reference).

Property Type
enabled boolean Whether the form is on (false without the website on the firm's plan too). /intake is a 404 while it's false.
url string /intake.
intro string or nil Text the firm wrote to go above the form (plain text: use escape).
ask_phone boolean Whether to show a phone field (phone).
ask_practice_area boolean Whether to show a practice area picker (practice_area_id).
practice_areas array The published practice areas to pick from, each with id and name. Empty when ask_practice_area is false.
questions array The firm's own questions, in order: key, label, type (text, textarea or select), required and options (the choices of a select). Post each answer as answers[{{ question.key }}].
Liquid
{% form 'intake' %}
  <input type="text" name="company_website" class="hidden" tabindex="-1" autocomplete="off">
  <input type="text" name="name" required>
  <input type="email" name="email" required>
  {% for question in intake_form.questions %}
    <label for="q-{{ question.key }}">{{ question.label | escape }}</label>
    <input id="q-{{ question.key }}" type="text" name="answers[{{ question.key }}]" value="{{ form.values.answers[question.key] | escape }}"{% if question.required %} required{% endif %}>
    {% assign field = 'answers.' | append: question.key %}
    {% if form.errors[field] %}<p>{{ form.errors[field] | escape }}</p>{% endif %}
  {% endfor %}
  <button type="submit">Send</button>
{% endform %}

Keep the hidden company_website field: it's a spam trap, and submissions that fill it are dropped.

blog

The firm's blog. Firms write articles under Website → Blog, each optionally in one category and with any number of tags. Only live articles appear: published, with a publish date that has passed. On plans without the blog every list is empty.

Available: everywhere, as blog. On the blog template it is the page being shown: /blog (?page=2 for older articles), a category's archive at /blog/category/{handle}, or a tag's at /blog/tag/{handle}. Elsewhere it holds the blog's first page.

Property Type Description
url string /blog.
articles array of article This page's articles, newest first, 12 per page (on an archive, only its category's or tag's).
category article_category or nil The category on its archive.
tag article_tag or nil The tag on its archive.
pagination object current_page, total_pages, and previous_url / next_url (nil on the first or last page). previous_url leads to newer articles.
latest_articles array of article The 12 newest articles, on any page.
featured_articles array of article The 12 newest featured articles.
categories array of article_category Categories with at least one live article, by name.
tags array of article_tag Tags on at least one live article, by name.
Liquid
{% for article in blog.articles %}
  <a href="{{ article.url }}">{{ article.title | escape }}</a>
{% endfor %}
{% if blog.pagination.next_url %}<a href="{{ blog.pagination.next_url }}">Older</a>{% endif %}

article

A live blog article.

Available: as items of the blog lists, and as article on the article template (the article's page at /blog/{handle}).

Property Type Description
id string The article's ID.
title string Its title.
subtitle string or nil One or two sentences under the title; use it as the excerpt on cards.
handle string The last part of its address.
url string Its page, e.g. /blog/estate-tax-thresholds.
content HTML Its text (sanitized). May be empty.
image_url string or nil Its featured image, 1600×900.
card_image_url string or nil Its featured image, 1200×900, for cards.
featured boolean Whether the firm featured it.
published_at string When it went live (ISO 8601); format it with local_date.
reading_time number Minutes to read it, at least 1.
category article_category or nil Its category.
tags array of article_tag Its tags, by name.
author team_member or nil Its author, while they're on the team page.
author_name string or nil Its author's name, always (also after they've left the firm).
seo_title, seo_description string or nil The firm's search title and description, if set.
metafields metafields The firm's custom fields for articles, by key.

article_category

A blog category, with its archive at /blog/category/{handle}.

Available: as article.category, items of blog.categories, and blog.category.

Property Type Description
id string The category's ID.
name string Its name.
handle string The last part of its address.
url string Its archive, e.g. /blog/category/estate-planning.
description string or nil Plain text; escape it.
articles_count number Its live articles.
seo_title, seo_description string or nil The firm's search title and description, if set.
metafields metafields The firm's custom fields for article categories, by key.

article_tag

A blog tag, with its archive at /blog/tag/{handle}.

Available: as items of article.tags and blog.tags, and blog.tag.

Property Type Description
name string The tag.
handle string The last part of its address.
url string Its archive, e.g. /blog/tag/tax.
articles_count number Its live articles.

metafields

A practice group's or area's custom fields. Firms add their own under Firm settings → Custom fields, each with a key, so your theme can show more than the standard properties without the platform knowing about it. Read one as metafields.<key>. A key the firm hasn't added, or a field left empty, gives nil ([] for a list), so check before printing and document the keys your theme reads.

Available: as practice_area.metafields, area.metafields, article.metafields and article_category.metafields.

Field type Value
Text, Long text string. Escape it.
Rich text HTML (sanitized): print it without escape.
Number number
Yes / No true, or nil when off
Date string, YYYY-MM-DD
Link string, an http(s) URL
Dropdown string, the chosen choice's value
List array of rows, each keyed by its sub-fields' keys, e.g. {label, value}

Every firm starts with three practice group fields, which the bundled themes read:

Key Type Row keys
intro Long text
highlights List label, value
representative_matters List title, result (may be nil)
Liquid
{% if practice_area.metafields.intro != blank %}
  <p>{{ practice_area.metafields.intro | escape }}</p>
{% endif %}
{% for item in practice_area.metafields.highlights %}
  <dt>{{ item.label | escape }}</dt><dd>{{ item.value | escape }}</dd>
{% endfor %}

team

The firm members shown on the firm's team page (switched on with On website on the Team page; each member fills in their own website profile under My account), in the firm's order. Featured people have a full profile; the others are the supporting team. People have no page of their own: link to them on your team page with #{{ person.handle }}.

Available: everywhere, as team.

Property Type Description
members array of team_member Everyone.
featured array of team_member The featured people.
supporting array of team_member Everyone else.
size number How many people there are.

team_member

One person on the team page.

Available: as items of team.members, team.featured and team.supporting, as practice_area.lead and as article.author.

Property Type Description
id string The person's user ID.
name string Full name.
first_name string Their first name.
handle string Their anchor on the team page, e.g. priya-raman.
title string or nil E.g. Partner.
focus string or nil A few words on their work, e.g. Family law.
bio HTML Their biography (sanitized). May be empty.
admissions string or nil Bar admissions.
education string or nil Degrees.
email, phone, linkedin_url string or nil Public contact details.
photo_url string or nil Portrait, 800×1000.
thumb_url string or nil Square, 160×160.
featured boolean Whether they have a full profile.
Liquid
{% for person in team.featured %}
  <article id="{{ person.handle }}">
    {% if person.photo_url %}<img src="{{ person.photo_url }}" alt="{{ person.name | escape }}">{% endif %}
    <h3>{{ person.name | escape }}</h3>
    {{ person.bio }}
  </article>
{% endfor %}

page

A page of the firm's site, written under Pages.

Available: as page on every site page (the index, page and page.* templates).

Property Type Description
id string The page's ID.
handle string Its address without the slash, e.g. family-law.
title string The page's title.
url string Its path, e.g. /family-law (/ for the homepage).
template string The template it uses.
is_homepage boolean Whether it's the homepage.
content HTML The text the firm wrote for the page (sanitized). May be empty.
seo_title, seo_description string The firm's search title and description, if set.
published_at string When it was first published (ISO 8601).

Pages don't nest: each one is at its own address, and the firm groups them into dropdowns in Navigation (see linklists).

Liquid
<h1>{{ page.title | escape }}</h1>
<div class="rte">{{ page.content }}</div>

reset_password

Available: as reset_password in the customers/reset_password template.

Property Type Description
token string The reset token from the email link. Send it back in a hidden token field.
email string The email address from the link. Send it back in a hidden email field.

See the reset_customer_password form in the Liquid reference.

invitation

Available: as invitation in the customers/activate_account template, the page a client's invitation email opens. It's nil once the link has expired or been used: tell them to ask the firm for a new one, or to sign in.

Property Type Description
token string The invitation token. Send it back in a hidden token field.
first_name string The invited client's first name.
email string The email address they'll sign in with.
Liquid
{% if invitation %}
  {% form 'activate_customer_password' %}
    <input type="hidden" name="token" value="{{ invitation.token | escape }}">
    …
  {% endform %}
{% else %}
  <a href="{{ routes.signin_url }}">Sign in</a>
{% endif %}

See the activate_customer_password form in the Liquid reference.

section

The section being rendered.

Available: as section inside a section file (sections/*.liquid).

Property Type Description
id string The section's unique ID on the page.
type string The section file's name, e.g. hero for sections/hero.liquid.
index number The section's position on the page, starting at 1. Use it to load only the first images eagerly.
settings Settings The section's settings by id, typed like settings.
blocks array of block The section's blocks, in order.
Liquid
<img src="{{ section.settings.image }}" alt=""
     loading="{% if section.index == 1 %}eager{% else %}lazy{% endif %}">

block

One block of a section.

Available: as each item of section.blocks.

Property Type Description
id string The block's unique ID.
type string The block type, as declared in the section's schema.
settings Settings The block's settings by id, typed like settings.
theme_attributes HTML The block's animation (data-animate="…", when the firm picked one) and, in the theme editor, the attributes that let the editor select the block. Output them on the block's outermost element.
shopify_attributes HTML Same as theme_attributes, so markup written for Shopify keeps working.
Liquid
{% for block in section.blocks %}
  {% case block.type %}
    {% when 'heading' %}
      <h2 {{ block.theme_attributes }}>{{ block.settings.text | escape }}</h2>
    {% when 'button' %}
      <a href="{{ block.settings.link }}" {{ block.theme_attributes }}>{{ block.settings.label | escape }}</a>
  {% endcase %}
{% endfor %}

form

The state of the form being rendered.

Available: as form inside {% form %}…{% endform %}. See Forms for each form type and its fields.

Property Type Description
type string The form type, e.g. contact.
posted_successfully boolean Whether this form was just submitted successfully.
errors Object The first error message for each field, by field name, after a failed submission. Empty otherwise.
values Object What was entered, by field name, after a failed submission, so you can fill the fields again. Passwords are never included.
Liquid
{% form 'contact' %}
  <input type="email" name="email" value="{{ form.values.email | escape }}">
  {% if form.errors.email %}<p class="error">{{ form.errors.email | escape }}</p>{% endif %}
{% endform %}

A menu.

Available: as values of linklists, and as the value of a link_list setting. Output on its own, a linklist prints its handle.

Property Type Description
handle string The menu's handle, e.g. main-menu.
title string The menu's name.
links array of link The top-level links.
levels number 0 for an empty menu, 1 for a flat one, 2 when a link has child links.

One link of a menu. Links to draft or deleted pages, and to practice groups or areas that aren't public, are left out.

Available: as items of linklist.links and link.links.

Property Type Description
title string The link text.
url string Where the link goes.
type string What the link points at: home_link, page_link, auth_link (sign in / sign up), practice_areas_link (all practice areas), practice_area_link (a practice group), area_link (an area on its group's page), blog_link (the blog), article_category_link (a blog category), article_link (an article) or http_link (a custom URL). For example, open a mega menu of practice_areas for a practice_areas_link.
active boolean Whether the link points at the current page.
child_active boolean Whether one of its child links points at the current page.
current boolean active or child_active.
links array of link Child links.
levels number 0 without child links, 1 with them.
Liquid
{% for link in section.settings.menu.links %}
  <a href="{{ link.url }}" {% if link.current %}aria-current="page"{% endif %}>{{ link.title | escape }}</a>
  {% if link.links.size > 0 %}
    <ul>
      {% for child in link.links %}
        <li><a href="{{ child.url }}">{{ child.title | escape }}</a></li>
      {% endfor %}
    </ul>
  {% endif %}
{% endfor %}

font

A font chosen with a font_picker setting. Output on its own, a font prints its CSS font-family stack.

Available: as the value of a font_picker setting.

Property Type Description
key string The font's identifier, as stored in the setting.
label string The font's display name.
family string The CSS font-family stack, with fallbacks.
stylesheet_url string or nil The stylesheet that loads the font, or nil for system fonts. Prefer the font_face filter.
Liquid
{{ settings.body_font | font_face }}
<style>
  body { font-family: {{ settings.body_font.family }}; }
</style>

color_scheme

One colour scheme: a named set of colours. Output on its own, a colour scheme prints its ID.

Available: as items of a color_scheme_group setting, and as the value of a color_scheme setting.

Property Type Description
id string The scheme's ID, e.g. scheme-1.
settings Object The scheme's colours, by the IDs in the group's definition. Each is a hex colour string.
Liquid
<section class="color-{{ section.settings.color_scheme }}">
  …
</section>

The platform already outputs a .color-<id> class for each scheme, setting the scheme's colours as --theme-* CSS variables. See Settings.

Still need help?

Send a request to the Mattersimple team and we'll reply by email.

Sign in to contact support