miniHabits
FREE TOOL · MINIHABITS.CO/TOOLS/THEME-BUILDER

Theme Builder

Two colours in, a whole theme out. Text tones, borders, panels, a 23-step accent ramp, and a light form and a dark form that match. Every pair is contrast-checked as you type, and the export is written so a model can apply it without guessing.

12 PRESETS TO START FROM · NO ACCOUNT · NOTHING UPLOADED

Body text on background16.1:1 · AAA
Muted text on background7.0:1 · AA
Accent on background12.5:1 · AAA
Text on an accent fill13.3:1 · AAA
START FROM
Today
FRI 27 JUL · 3 OF 5 DONE
◆ ◆ ◆
Read 20 pagescounter · streak 12820/20
Deep worktimer · running62:11
StepsHealthKit · auto8 412
Meditatecheckbox · morning
2 missed

Paste this into Claude, ChatGPT or your editor's assistant. It names every role and prints the contrast each pair was checked at, so the model knows which colour is allowed where instead of guessing from twelve hex values.

How to use it

  1. Pick a background and an accent. The other mode is derived while you type, so you always have a light and a dark form.

  2. Watch the four contrast ratios. Anything below AA is called out before you ship it, not after.

  3. Apply it to this site if you want to live in it for a minute. Every page follows, and it survives a reload.

  4. Copy the export. The first tab is written for a model, the other two are JSON and CSS custom properties.

FAQ

What does "reusable by an AI" mean here?

The first export is written as instructions rather than a list of colours. It names every role, prints the contrast ratio each pair was checked at, and ends with the rules that are easy to get wrong, like never putting a text colour on an accent fill. A model can apply it to a codebase without a follow-up prompt.

I only picked two colours. Where did the rest come from?

They are derived. Every text tone is the background mixed towards its opposite by a fixed amount, every hairline is a flat alpha, and the accent ramp is your accent at twenty-three alphas. Those amounts were measured off the miniHabits design, so a theme built here is built the same way the twelve shipped ones are.

Why does it check contrast?

Because two colours that look good together are often unreadable, and a generated palette is exactly where that goes unnoticed. The four ratios update as you type. The faint tones are deliberately below 4.5:1 and are meant for metadata, which is why the export says so.

Does applying a theme send anything anywhere?

No. It is kept in your browser under ih-custom, the same place the twelve themes keep their name. There is no account and nothing is uploaded. Clearing your site data removes it.

Can I put this theme in the app?

Not yet. The app ships 23 themes of its own and does not read a theme from outside. The JSON export is the format that would be imported when it does.

The app ships 23 of these.

miniHabits is a habit tracker built like a dev tool: five tracking modes, a heatmap, and streak shields so one missed day does not reset the chain. Free for 10 habits.

Get miniHabits