Skip to main content
Version: 3.0.0-beta

Styling FireCMS

FireCMS allows you to customize the look and feel of your admin panel. You can customize the theme, colors, and typography to match your brand.

FireCMS uses tailwindcss for styling. FireCMS UI provides a default preset that can be extended or completely replaced.

Customizing the theme

Your default tailwind.config.js file should look like this:

import fireCMSConfig from "@firecms/ui/tailwind.config.js";

export default {
presets: [fireCMSConfig],
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
"./node_modules/@firecms/**/*.{js,ts,jsx,tsx}"
]
};

You may want to check the original tailwind.config.js file in the @firecms/ui package.

You can extend the default theme by adding your customizations, including all supported tailwindcss features.

Customizing colors

Primary and secondary colors

FireCMS UI uses a primary color and a secondary color. You can customize these colors in your index.css file:

@import "@firecms/ui/index.css";

@tailwind base;
@tailwind components;
@tailwind utilities;

:root {
--fcms-primary: #0070F4;
--fcms-primary-dark: #0061e6;
--fcms-primary-bg: #0061e610;
--fcms-secondary: #FF5B79;
}

body {
@apply w-full min-h-screen bg-gray-50 dark:bg-gray-900 flex flex-col items-center justify-center;
}

These are the default values but you can change them to match your brand. The --fcms-primary-dark is used for some effects like hovering buttons. The --fcms-primary-bg variable is used when hovering over primary elements, like cards ( it is usually mostly transparent)

Just like in the previous section, feel free to take a look at the original index.css file in the @firecms/ui package.

Customizing colors in the tailwind config

If you need a more complex color customization, you can modify the tailwind.config.js file, to override the default color used by FireCMS.

FireCMS defines colors for all the surfaces (a light gray by default), surfaces accents (a bluish gray by default), typography colors (primary, secondary and disabled) as well as the field colors (background, hover, etc).

All these colors can be overridden in the tailwind.config.js file. This is an example of a config file that overrides the default colors:

import fireCMSConfig from "@firecms/ui/tailwind.config.js";

export default {
presets: [fireCMSConfig],
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
"./node_modules/@firecms/**/*.{js,ts,jsx,tsx}"
],
theme: {
extend: {
colors: {
"primary": "var(--fcms-primary)",
"primary-dark": "var(--fcms-primary-dark)",
"primary-bg": "var(--fcms-primary-bg)",
"secondary": "var(--fcms-secondary)",
"field": {
"disabled": "rgb(224 224 226)",
"disabled-dark": "rgb(35 35 37)"
},
"text": {
"primary": "rgba(0, 0, 0, 0.87)",
"secondary": "rgba(0, 0, 0, 0.55)",
"disabled": "rgba(0, 0, 0, 0.38)",
"primary-dark": "#ffffff",
"secondary-dark": "rgba(255, 255, 255, 0.60)",
"disabled-dark": "rgba(255, 255, 255, 0.48)"
},
"surface": {
"50": "#f8f8fc",
"100": "#E7E7EB",
"200": "#CFCFD6",
"300": "#B7B7BF",
"400": "#A0A0A9",
"500": "#87878F",
"600": "#6B6B74",
"700": "#454552",
"800": "#292934",
"900": "#18181C",
"950": "#101013"
},
"surface-accent": {
"50": "#f8fafc",
"100": "#f1f5f9",
"200": "#e2e8f0",
"300": "#cbd5e1",
"400": "#94a3b8",
"500": "#64748b",
"600": "#475569",
"700": "#334155",
"800": "#1e293b",
"900": "#0f172a",
"950": "#020617"
}
}
}
}
};

Customizing typography

FireCMS uses the Rubik font by default, both for headings and body text. It also uses the JetBrains Mono font for code blocks.

Adding new fonts

If you would like to add a new font, you can install it using npm or yarn.

For example, to add the Noto Serif font:

yarn add @fontsource/noto-serif

and import it in your App.tsx file:

import "@fontsource/noto-serif";

In the FireCMS UI tailwind preset, we define 3 different font families: font-headers, font-sans and font-mono.

You can override these font families in your tailwind.config.js file. Let's say you want to use Noto Serif for headers and Roboto for the rest of the text:

import fireCMSConfig from "@firecms/ui/tailwind.config.js";

export default {
presets: [fireCMSConfig],
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
"./node_modules/@firecms/**/*.{js,ts,jsx,tsx}"
],
theme: {
extend: {
fontFamily: {
sans: [
"Roboto",
"Helvetica",
"Arial",
"sans-serif"
],
headers: [
"Noto Serif",
"Roboto",
"Helvetica",
"Arial",
"sans-serif"
],
mono: [
"JetBrains Mono",
"Space Mono",
"Lucida Console",
"monospace"
]
}
}
}
};

Customizing typography styles

Each typography style is defined in the index.css, and can be customized. These are the default styles, but you can change them to match your brand. The @apply directive is a tailwindcss feature that allows you to apply a set of utilities to a class.

Feel free to add any of this classes to your index.css file, to override the default styles:

.typography-h1 {
@apply text-6xl font-headers font-light;
}

.typography-h2 {
@apply text-5xl font-headers font-light;
}

.typography-h3 {
@apply text-4xl font-headers font-normal;
}

.typography-h4 {
@apply text-3xl font-headers font-normal;
}

.typography-h5 {
@apply text-2xl font-headers font-normal;
}

.typography-h6 {
@apply text-xl font-headers font-medium;
}

.typography-subtitle1 {
@apply text-lg font-headers font-medium;
}

.typography-subtitle2 {
@apply text-base font-headers font-medium;
}

.typography-body1 {
}

.typography-body2 {
@apply text-sm;
}

.typography-caption {
@apply text-xs;
}

.typography-label {
@apply text-sm font-medium;
}

.typography-button {
@apply text-sm font-semibold uppercase;
}

Do you miss any customization?

If you need to customize any other aspect of FireCMS, please let us know.

Sign up to our newsletter to get the latest news and updates. No spam!