Foundation
Sky types
One table — src/design/skyTypes.ts — decides the colour and the glyph for every
kind of thing in the sky, and every surface that names an object reads it: the info panel,
the Tonight list, search results, the archive, guide annotations and the map's own labels.
Nothing chooses its own.
The interface may not invent a colour the sky does not already use.
There are five families and there will not be a sixth. Four of the hues were already on the canvas before the chips existed; the fifth was the one left over. A new kind of thing joins a family — it does not arrive with a hue of its own, because a hue nobody has seen the map draw teaches the reader nothing.
— The five families
Stars
var(--t-tone-amber) Star names are drawn amber on the map, warm like the sprites underneath them. The interface follows the sky, not the other way round.
Deep sky
var(--t-tone-plum) The one family that used to borrow the star colour, which made a galaxy and a star the same thing at a glance — in the list and in the sky. Plum in both places now.
Figures
var(--t-tone-sky) Figure lines and their names are accent blue on the map. A constellation, an asterism and a region are all the same act of drawing on the sky, so they share the hue.
Solar system
var(--t-tone-neutral) Sun, Moon and planets are drawn plain white, because they are the only objects bright enough that a tint would misdescribe them. White is a colour here, not an absence of one.
Events
var(--t-tone-ember) The only family never drawn on the sphere at all, which is what frees ember for it. Ember also reads as urgency, which is exactly what a shower peaking tonight is.
— Why every type also carries a glyph
Under [data-theme="night"] every tone resolves to ember, so that a screen used
outdoors does not wreck dark adaptation. That is a deliberate collapse, and it means colour
alone can carry nothing at all in red-light mode. The shape has to survive on its own — which
is why the table stores an icon next to the tone rather than instead of it, and why
<TypePill> always renders both.
Flip NIGHT in the bar above
Five hues become one ember, and the five glyphs are all that is left telling them apart. Any rule that leans on hue alone stops working here, which is the test a new pattern has to pass before it ships.
— The legend
Every row of SKY_TYPES. The gloss is what a reader gets on hover from a dot
pill, so it says what the thing is rather than repeating its name.
| Mark | Type | Icon | Tone | What it is |
|---|---|---|---|---|
| Star | star | star | amber | A sun of its own, far enough away to be a single point of light. |
| Double star | double-star | star | amber | Two stars close enough to look like one until you magnify them. |
| Variable star | variable-star | star | amber | A star whose brightness changes on a timescale you can watch. |
| Galaxy | galaxy | galaxy | plum | Another island of billions of stars, outside our own. |
| Nebula | nebula | nebula | plum | A cloud of gas and dust, lit by the stars inside or behind it. |
| Planetary nebula | planetary-nebula | nebula | plum | The shed outer layers of a dying star. Nothing to do with planets. |
| Open cluster | cluster | cluster | plum | A loose family of stars born together and still drifting apart. |
| Globular cluster | globular-cluster | cluster | plum | A dense ancient ball of hundreds of thousands of stars. |
| Constellation | constellation | constellation | sky | One of the 88 official regions the sky is divided into. |
| Asterism | asterism | asterism | sky | A recognisable pattern that is not itself a constellation. |
| The Sun | sun | sun | neutral | Our own star. Its position sets when the sky is dark. |
| The Moon | moon | moon | neutral | Close, bright, and the main thing that spoils a dark sky. |
| Planet | planet | planet | neutral | A world of our own system, wandering against the fixed stars. |
| Meteor shower | meteor-shower | meteor | ember | Dust from a comet burning up as Earth crosses its trail. |
| Satellite pass | satellite-pass | satellite | ember | Sunlight reflected off something in orbit, minutes long. |
| Conjunction | conjunction | conjunction | ember | Two bodies appearing close together from where you stand. |
| Eclipse | eclipse | eclipse | ember | One body passing into the shadow of, or in front of, another. |
| Comet | comet | comet | ember | A dirty snowball growing a tail as it nears the Sun. |
— Using it
Never hand-pick a type
Call skyTypeFor(kind, subtype) with what the engine or the catalogue gave
you. It is the only place the catalogue's free-text classes are translated, so a
"planetary nebula" cannot become a planet on one page and a nebula on another.
Never hand-pick a colour
toneVar(tone) returns the custom property, never a literal. If you find
yourself writing color: var(--t-tone-plum) next to the word "galaxy", you
wanted <TypePill>.
The map is the other half
SkyCanvas.astro paints its labels from the same five hues —
--lbl-star, --lbl-dso, --lbl-figure,
--lbl-body. If a chip and its label disagree, the chip is wrong: the
association only forms because both ends of it hold.