Sass API

The Sass API is the framework's SCSS source, open since 3.2. These pages cover the build-your-own path: compiling from source, adding device profiles, and using the mixins in your own SCSS. A custom stack can also skip the build entirely and serve an official released build, which is what the TRMNL Platform always does.

TRMNL Platform trmnl.com
Custom Stack BYOS, trmnlp, ...

The TRMNL Platform serves the framework for you, rendering every plugin against its official builds. Recipes can pin a specific release, and the developer license lets a private plugin do the same.

You choose the framework build your screens load: a released build straight from the releases CDN, or your own build compiled from this SCSS source.

<!-- plugins.css (platform-provided) -->
<!-- plugins.js (platform-provided) -->
<div class="screen">...</div>
<!-- Option 1: serve a released build -->
<link rel="stylesheet" href="https://trmnl.com/css/latest/plugins.css">
<script src="https://trmnl.com/js/latest/plugins.js"></script>

<!-- Option 2: compile and serve your own build -->
<link rel="stylesheet" href="/assets/plugins.css">
<script src="/assets/plugins.js"></script>
#

The Source at a Glance

Everything compiles from one entrypoint. plugins.scss loads the framework module (framework/index.scss), which loads the configuration, the mixins, and the style layers in a fixed order.

// framework/index.scss: configuration and mixins load first,
// then every style lands in a declared cascade layer.
@forward 'config/custom';
@use 'config/tokens' as vars;
@use 'mixins' as mixins;

@layer tn--normalize, tn--elements, tn--components, tn--base,
    tn--device-overrides, tn--themes, tn--utilities;

Every rule lands in a tn-- prefixed cascade layer, so a custom stack can run the framework next to other CSS without specificity fights. The codebase uses the Dart Sass module system throughout: @use and @forward, never @import.

The source lives at github.com/usetrmnl/trmnl-framework. For the repository tour, the license, and the release pipeline, see Open Source .

#

Public and Internal Surface

Theme stylesheets have their own authoring contract built on the theme-slot mixins; it is documented on Authoring Themes and enforced by rake framework:themes:lint.

#

Go Deeper