![Themes](https://cdn.slatesource.com/b/4/8/b4896739-e227-4285-b9e8-6745f0cc8ab6.webp)

# Themes

- [Made in Slatesource](https://slatesource.com/@steph/themes)
- By [Steph](https://slatesource.com/@steph)
- Created on Jul 19, 2026

## A SmallSmall FeatureFeature, DocumentedDocumented at Its ActualActual SizeSize

This pagepage is shortershorter than the othersothers becausebecause the featurefeature is smallersmaller than the othersothers. ThereThere are threethree themesthemes. They are colourcolour variablesvariables in oneone stylesheetstylesheet, pickedpicked in settingssettings, storedstored againstagainst your accountaccount. That is genuinelygenuinely all of it, and paddingpadding it out wouldwould makemake this slateslate lessless usefuluseful, not moremore.

Themes

3

Files holding every theme

1

Themes reachable from the slate page toggle

2

Purchasable themes in the shop

0

Changelog entries mentioning themes

0

## PearlPearl MidnightMidnight WireframeWireframe

PearlPearl is whitewhite on near-blacknear-black texttext and is the defaultdefault. MidnightMidnight is the darkdark oneone. WireframeWireframe is blackblack with a limelime accentaccent, switchesswitches the typetype to monospacemonospace, and flattensflattens all eighteight texttext sizessizes to a singlesingle valuevalue. WireframeWireframe is a noveltynovelty and it is implementedimplemented likelike oneone: the flatteningflattening is a bluntblunt overrideoverride ratherrather than a designeddesigned scalescale, whichwhich is finefine for what it is and wouldwould not survivesurvive being takentaken seriouslyseriously.

css

1

2

3

4

5

6

7

```
[data-theme='MIDNIGHT'] {
  --background-colour: #171717;
  --text-colour: #c9c9c9;
  --accent-colour: #8a8a8a;
  --image-brightness: 0.8;
}
```

## No TokenToken SystemSystem

No TailwindTailwind, no themetheme JSONJSON, no generatedgenerated palettepalette. ThreeThree blocksblocks of CSSCSS customcustom propertiesproperties in oneone filefile, plusplus a handfulhandful of SVGSVG filterfilter recipesrecipes so iconsicons invertinvert correctlycorrectly. AddingAdding a fourthfourth themetheme meansmeans writingwriting a blockblock and addingadding a fourthfourth buttonbutton by handhand, becausebecause the pickerpicker is threethree hardcodedhardcoded buttonsbuttons ratherrather than a looploop over a listlist. For threethree themesthemes that is the rightright amountamount of machinerymachinery. At sixsix it wouldwould not be.

## StoredStored TwiceTwice, on PurposePurpose

The choicechoice is a columncolumn on a preferencespreferences rowrow, so it followsfollows your accountaccount acrossacross devicesdevices. It is alsoalso mirroredmirrored into locallocal storagestorage, and a smallsmall scriptscript in the documentdocument headhead readsreads that beforebefore the firstfirst paintpaint and setssets the attributeattribute. WithoutWithout it everyevery dark-modedark-mode useruser getsgets a whitewhite flashflash on everyevery pagepage loadload. When you signsign in, the serverserver valuevalue overwritesoverwrites the locallocal oneone. TwoTwo sourcessources of truthtruth with a clearclear winnerwinner, whichwhich is the only versionversion of that patternpattern worthworth havinghaving.

## The ToggleToggle Only KnowsKnows TwoTwo

The sunsun and moonmoon buttonbutton on a slateslate pagepage is a straightstraight flipflip betweenbetween PearlPearl and MidnightMidnight. It decidesdecides by askingasking whetherwhether the currentcurrent themetheme is MidnightMidnight, so if you are on WireframeWireframe the answeranswer is no and oneone taptap sendssends you to MidnightMidnight. From therethere the buttonbutton can nevernever bringbring you backback. WireframeWireframe existsexists only in settingssettings, and the toggletoggle was writtenwritten beforebefore therethere were threethree.

## ThereThere Is AlsoAlso No SystemSystem PreferencePreference

NothingNothing readsreads the operatingoperating system'ssystem's darkdark modemode. A first-timefirst-time visitorvisitor whosewhose machinemachine is setset to darkdark getsgets PearlPearl. That is oneone mediamedia queryquery and it has not been addedadded.

## ThemesThemes Are a ReaderReader SettingSetting

This is the importantimportant limitlimit. A themetheme belongsbelongs to whoeverwhoever is lookinglooking, not to whoeverwhoever mademade the pagepage. NothingNothing on a slateslate or a chipchip carriescarries a themetheme, and therethere is no per-slateper-slate overrideoverride or stubstub for oneone. If you writewrite a slateslate and someonesomeone readsreads it in WireframeWireframe, they readread it in WireframeWireframe. Creator-controlledCreator-controlled themingtheming wouldwould be a differentdifferent featurefeature and it has not been startedstarted.

## The ShopShop ItemItem TypeType That SellsSells NothingNothing

The shop'sshop's itemitem typestypes includeinclude ThemeTheme. CountingCounting acrossacross everyevery migrationmigration: twentytwenty chipchip typetype itemsitems, sevenseven packspacks, threethree wizardswizards, twotwo featurefeature unlocksunlocks, twotwo storagestorage boostsboosts, and zerozero themesthemes. The constantconstant appearsappears exactlyexactly onceonce in the backendbackend, in its ownown declarationdeclaration. No codecode branchesbranches on it, nothingnothing linkslinks owningowning a themetheme to being allowedallowed to selectselect oneone, and all threethree themesthemes are freefree to everyoneeveryone. An administratoradministrator couldcould createcreate oneone and a buyerbuyer wouldwould receivereceive nothingnothing, becausebecause nothingnothing redeemsredeems it. It sitssits in the enumenum nextnext to BadgeBadge, whichwhich is unwiredunwired in exactlyexactly the samesame wayway.

Themes have never appeared in the changelog. The work is in the commit log across about two years, in short bursts, and was never announced. That is a fair reflection of its size.

> Three colour schemes and a preference row. Written down at that size on purpose.