-
Notifications
You must be signed in to change notification settings - Fork 0
Graphite Themes
Two themes in one extension: Graphite Dark and Graphite Light.
Graphite Dark takes its hues from the Andromeda
palette. Andromeda ships dark-only, so
Graphite Light is derived from it by GraphiteTheme/Themes/derive-light.py: the
hues stay Andromeda's and the greys keep its violet cast, but every accent is
darkened until it clears WCAG AA (4.5:1) against the white editor surface. The
surfaces split rather than invert, because Andromeda's chrome and editor share
one flat colour that has to become two on light.
This is the one structural difference from the Focus family. In both Graphite
themes, class name, interface name, record class name, record struct name, struct name, enum name, delegate name, type parameter name and the
rest all resolve to a single type hue. Per-kind type colours are a
Focus Themes feature and exist nowhere in Graphite.
Interfaces and type parameters are still distinguishable, but by slant rather than by hue — see Color Roles for the emphasis rules, which are shared by both families.
Near-black with a cool violet cast. Cyan #00E8C6 is Andromeda's active-state
colour and carries the accent here: status bar, active-tab underline, and every
name in the editor.
| Role | Hex |
|---|---|
| keyword | #C74DED |
| all type names | #7CB7FF |
| method | #FFE66D |
| names (local, field, property, event, parameter, enum member) | #00E8C6 |
| operator | #EE5D43 |
| string | #96E072 |
| number | #E36480 |
| constant and escape character | #F39C12 |
| preprocessor keyword and label | #FF00AA |
| punctuation, namespace, comment | #A0A1A7 |
| brace pair levels one / two / three |
#F92672 / #FFE66D / #00E8C6
|
| mismatched brace | #EE5D43 |
| Surface | Hex |
|---|---|
| editor | #23262E |
| tool window | #20232A |
| raised | #2B303B |
| border | #333844 |
| selection | #3D4352 |
| inactive selection | #2B303B |
| plain text | #D5CED9 |
| comment | #A0A1A7 |
| gutter | #746F77 |
| accent | #00E8C6 |
#E36480 is the number hue on dark. A true burgundy is only about 1.7:1 on this
background, so it is lifted here; the light theme uses the deep value instead.
A white editor on warm-grey chrome. Every syntax colour is Andromeda's hue darkened until it clears 4.5:1 on white, so the two themes are recognisably the same palette rather than two unrelated ones.
| Role | Hex |
|---|---|
| keyword | #7E28C9 |
| all type names | #1D6BC4 |
| method | #8A6D00 |
| names (local, field, property, event, parameter, enum member) | #007D6A |
| operator | #C0341C |
| string | #4A7F2C |
| number | #8C1D3F |
| constant and escape character | #9A5C00 |
| preprocessor keyword and label | #C00080 |
| punctuation, namespace, comment | #5F5B6B |
| brace pair levels one / two / three |
#C4105A / #8A6D00 / #007D6A
|
| mismatched brace | #C0341C |
| Surface | Hex |
|---|---|
| editor | #FFFFFF |
| chrome | #F5F4F8 |
| tool window | #EDECF2 |
| raised | #E9E7F0 |
| border | #D3D0DC |
| selection | #D5D2E2 |
| inactive selection | #E9E7F0 |
| plain text | #23262E |
| comment | #5F5B6B |
| gutter | #6E6A78 |
| accent | #007D6A |
The comment grey is opaque on light. On dark it carries an 80% alpha, which on white fell to 4.1:1 and had to be flattened.
GraphiteTheme/GraphiteEmphasis.cs exports the same italic and bold rules as the
Focus family, under Graphite.* names rather than Focus.*. The full list is on
Color Roles.
Both extensions can be installed side by side. Two MEF exports then compete for each classification and the resolution order is undefined, but both set the same flags to the same values and neither sets a foreground colour, so either order renders identically.