All outline text draws with Slug curves on every platform (SDF/MSDF stays selectable per size); a frame never presents a blank glyph and retained draw lists keep theirs. One coverage model for vector feathering, widget families split out of the core crate, fewer steady-state allocations, video keeps its aspect (Contain/Cover), render and SSAO pass unification. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
210 lines
8.7 KiB
Text
210 lines
8.7 KiB
Text
mod.theme = mod.themes.dark
|
|
|
|
// An olive-drab field radio: a painted steel case, worn and scratched,
|
|
// controls set in steel bezels, parchment legends, amber and red lamps.
|
|
// Raised caps are dark olive-grey inside a bright steel ring; wells are
|
|
// near black; values glow amber; what is on is a lamp. Every state of a
|
|
// family is spelled out, because the base derived its states once, from
|
|
// its own colours.
|
|
|
|
// The case: olive drab paint over steel.
|
|
mod.theme.color_bg_app = #3f4232
|
|
mod.theme.color_fg_app = #414434
|
|
mod.theme.color_bg_container = #414434
|
|
mod.theme.color_surface_container_lowest = #23251c
|
|
|
|
// Raised faces: dark olive-grey caps, lit at the top, falling to the foot.
|
|
mod.theme.color_outset = #34352b
|
|
mod.theme.color_outset_1 = #3d3e33
|
|
mod.theme.color_outset_2 = #26271f
|
|
mod.theme.color_outset_hover = #3a3b30
|
|
mod.theme.color_outset_1_hover = #444538
|
|
mod.theme.color_outset_2_hover = #2b2c23
|
|
mod.theme.color_outset_down = #202119
|
|
mod.theme.color_outset_1_down = #202119
|
|
mod.theme.color_outset_2_down = #202119
|
|
mod.theme.color_outset_focus = #34352b
|
|
mod.theme.color_outset_1_focus = #3d3e33
|
|
mod.theme.color_outset_2_focus = #26271f
|
|
mod.theme.color_outset_active = #34352b
|
|
mod.theme.color_outset_1_active = #3d3e33
|
|
mod.theme.color_outset_2_active = #26271f
|
|
mod.theme.color_outset_disabled = #2e3025
|
|
mod.theme.color_outset_1_disabled = #2e3025
|
|
mod.theme.color_outset_2_disabled = #2e3025
|
|
|
|
// Wells: fields, tracks and boxes, near black with an olive cast.
|
|
mod.theme.color_inset = #191b15
|
|
mod.theme.color_inset_1 = #191b15
|
|
mod.theme.color_inset_2 = #191b15
|
|
mod.theme.color_inset_hover = #1d1f18
|
|
mod.theme.color_inset_1_hover = #1d1f18
|
|
mod.theme.color_inset_2_hover = #1d1f18
|
|
mod.theme.color_inset_focus = #1c1e17
|
|
mod.theme.color_inset_1_focus = #1c1e17
|
|
mod.theme.color_inset_2_focus = #1c1e17
|
|
mod.theme.color_inset_active = #191b15
|
|
mod.theme.color_inset_1_active = #191b15
|
|
mod.theme.color_inset_2_active = #191b15
|
|
mod.theme.color_inset_down = #141510
|
|
mod.theme.color_inset_1_down = #141510
|
|
mod.theme.color_inset_2_down = #141510
|
|
mod.theme.color_inset_drag = #141510
|
|
mod.theme.color_inset_1_drag = #141510
|
|
mod.theme.color_inset_2_drag = #141510
|
|
mod.theme.color_inset_empty = #191b15
|
|
mod.theme.color_inset_1_empty = #191b15
|
|
mod.theme.color_inset_2_empty = #191b15
|
|
mod.theme.color_inset_disabled = #25271e
|
|
mod.theme.color_inset_1_disabled = #25271e
|
|
mod.theme.color_inset_2_disabled = #25271e
|
|
|
|
// The edge a stock face still draws: steel over a black foot.
|
|
mod.theme.color_bevel = #5a5c50
|
|
mod.theme.color_bevel_hover = #66685b
|
|
mod.theme.color_bevel_focus = #eea23a
|
|
mod.theme.color_bevel_down = #0c0d09
|
|
mod.theme.color_bevel_active = #5a5c50
|
|
mod.theme.color_bevel_empty = #5a5c50
|
|
mod.theme.color_bevel_disabled = #3a3c31
|
|
mod.theme.color_bevel_inset_1 = #0c0d09
|
|
mod.theme.color_bevel_inset_2 = #4a4c40
|
|
mod.theme.color_bevel_outset_1 = #5a5c50
|
|
mod.theme.color_bevel_outset_2 = #0c0d09
|
|
mod.theme.beveling = 0.5
|
|
|
|
// Ink: parchment legends, a dimmer khaki for idle marks.
|
|
mod.theme.color_text = #dcd2b0
|
|
mod.theme.color_text_hover = #ece3c4
|
|
mod.theme.color_text_focus = #dcd2b0
|
|
mod.theme.color_text_active = #dcd2b0
|
|
mod.theme.color_text_down = #bdb392
|
|
mod.theme.color_text_disabled = #6e6c58
|
|
mod.theme.color_text_placeholder = #8a8670
|
|
mod.theme.color_text_placeholder_hover = #9a967e
|
|
mod.theme.color_text_val = #c9bf9c
|
|
mod.theme.color_text_meta = #aaa386
|
|
mod.theme.color_text_cursor = #eea23a
|
|
mod.theme.color_cursor = #eea23a
|
|
mod.theme.color_label = #d2c8a5
|
|
mod.theme.color_label_hover = #ece3c4
|
|
mod.theme.color_label_focus = #d2c8a5
|
|
mod.theme.color_label_active = #d2c8a5
|
|
mod.theme.color_label_down = #b3aa8a
|
|
mod.theme.color_label_disabled = #6e6c58
|
|
mod.theme.color_label_inner = #d2c8a5
|
|
mod.theme.color_label_inner_hover = #ece3c4
|
|
mod.theme.color_label_inner_focus = #d2c8a5
|
|
mod.theme.color_label_inner_active = #d2c8a5
|
|
mod.theme.color_label_inner_down = #b3aa8a
|
|
mod.theme.color_label_inner_disabled = #6e6c58
|
|
mod.theme.color_label_outer = #d2c8a5
|
|
mod.theme.color_label_outer_hover = #ece3c4
|
|
mod.theme.color_label_outer_focus = #d2c8a5
|
|
mod.theme.color_label_outer_active = #d2c8a5
|
|
mod.theme.color_label_outer_down = #b3aa8a
|
|
mod.theme.color_label_outer_disabled = #6e6c58
|
|
mod.theme.color_icon = #d2c8a5
|
|
mod.theme.color_icon_hover = #ece3c4
|
|
mod.theme.color_icon_focus = #d2c8a5
|
|
mod.theme.color_icon_active = #d2c8a5
|
|
mod.theme.color_icon_down = #b3aa8a
|
|
mod.theme.color_icon_disabled = #6e6c58
|
|
|
|
// The accent seed: the primary, secondary and tertiary families are grown
|
|
// from `color_ctrl_selected`. One amber, for values and what is on.
|
|
mod.theme.color_ctrl_selected = #eea23a
|
|
mod.theme.color_focus = #eea23a
|
|
mod.theme.color_ctrl_active = #eea23a
|
|
mod.theme.color_val = #e8962e
|
|
mod.theme.color_selection_focus = #eea23a40
|
|
mod.theme.color_bg_highlight_inline = #eea23a40
|
|
|
|
mod.theme.color_terminal_bg = #191b15
|
|
mod.theme.color_terminal_text = #dcd2b0
|
|
|
|
// The instruments: amber digits behind smoked brown glass, dark red lenses.
|
|
mod.theme.color_screen = #1a130b
|
|
mod.theme.color_screen_ink = #ffae4a
|
|
mod.theme.screen_ghost = 0.10
|
|
mod.theme.color_lamp_off = #2a1a15
|
|
mod.theme.lamp_halo = 0.25
|
|
|
|
// The surface ladder in olive, so every widget built on the roles stays in
|
|
// the family, with ink that reads on the brightest rung.
|
|
mod.theme.color_surface = #3f4232
|
|
mod.theme.color_surface_dim = #35382a
|
|
mod.theme.color_surface_bright = #56594a
|
|
mod.theme.color_surface_container_low = #414434
|
|
mod.theme.color_surface_container = #454838
|
|
mod.theme.color_surface_container_high = #494c3c
|
|
mod.theme.color_surface_container_highest = #4e5140
|
|
mod.theme.color_on_surface = #e6ddbe
|
|
mod.theme.color_on_surface_variant = #b8b094
|
|
mod.theme.color_outline = #8c8a72
|
|
mod.theme.color_outline_variant = #56594a
|
|
mod.theme.color_inverse_surface = #e6ddbe
|
|
mod.theme.color_inverse_on_surface = #2c2e22
|
|
|
|
// Slim: a 28 point control row, 6 point gaps inside a group, true radii of
|
|
// 2 points on controls and 4 on panels.
|
|
mod.theme.space_factor = 6.0
|
|
mod.theme.space_1 = 3.0
|
|
mod.theme.space_2 = 6.0
|
|
mod.theme.space_3 = 9.0
|
|
mod.theme.space_4 = 12.0
|
|
mod.theme.space_5 = 18.0
|
|
mod.theme.space_6 = 24.0
|
|
mod.theme.mspace_1 = mod.turtle.Inset{top: 3.0 right: 3.0 bottom: 3.0 left: 3.0}
|
|
mod.theme.mspace_h_1 = mod.turtle.Inset{top: 0.0 right: 3.0 bottom: 0.0 left: 3.0}
|
|
mod.theme.mspace_v_1 = mod.turtle.Inset{top: 3.0 right: 0.0 bottom: 3.0 left: 0.0}
|
|
mod.theme.mspace_2 = mod.turtle.Inset{top: 6.0 right: 6.0 bottom: 6.0 left: 6.0}
|
|
mod.theme.mspace_h_2 = mod.turtle.Inset{top: 0.0 right: 6.0 bottom: 0.0 left: 6.0}
|
|
mod.theme.mspace_v_2 = mod.turtle.Inset{top: 6.0 right: 0.0 bottom: 6.0 left: 0.0}
|
|
mod.theme.mspace_3 = mod.turtle.Inset{top: 9.0 right: 9.0 bottom: 9.0 left: 9.0}
|
|
mod.theme.mspace_h_3 = mod.turtle.Inset{top: 0.0 right: 9.0 bottom: 0.0 left: 9.0}
|
|
mod.theme.mspace_v_3 = mod.turtle.Inset{top: 9.0 right: 0.0 bottom: 9.0 left: 0.0}
|
|
// The rungs the base froze at its own space factor, restated at ours.
|
|
mod.theme.size_control_s = 24.0
|
|
mod.theme.size_control_m = 28.0
|
|
mod.theme.size_control_l = 32.0
|
|
mod.theme.tab_height = 28.0
|
|
mod.theme.tab_flat_height = 26.0
|
|
mod.theme.corner_radius = 2.0
|
|
mod.theme.container_corner_radius = 4.0
|
|
mod.theme.textselection_corner_radius = 1.0
|
|
mod.theme.radius_xs = 1.5
|
|
mod.theme.radius_s = 2.0
|
|
mod.theme.radius_m = 3.0
|
|
mod.theme.radius_l = 4.0
|
|
|
|
// The base grotesque. A font size draws 1.333 layout points per unit, so
|
|
// 8.25 is the 11 point legend of a 28 point row (cap 0.29 of the row).
|
|
mod.theme.font_size_base = 8.25
|
|
mod.theme.font_size_p = 8.25
|
|
mod.theme.font_size_code = 8.25
|
|
mod.theme.font_regular = mod.theme.font_regular{font_size: 8.25}
|
|
mod.theme.font_label = mod.theme.font_label{font_size: 8.25}
|
|
mod.theme.font_bold = mod.theme.font_bold{font_size: 8.25}
|
|
mod.theme.font_italic = mod.theme.font_italic{font_size: 8.25}
|
|
mod.theme.font_bold_italic = mod.theme.font_bold_italic{font_size: 8.25}
|
|
mod.theme.font_code = mod.theme.font_code{font_size: 8.25}
|
|
mod.theme.type_title_l_size = 12.0
|
|
mod.theme.type_title_m_size = 10.5
|
|
mod.theme.type_title_s_size = 9.0
|
|
mod.theme.font_title_l = mod.theme.font_bold{font_size: 12.0 line_spacing: 1.2}
|
|
mod.theme.font_title_m = mod.theme.font_bold{font_size: 10.5 line_spacing: 1.2}
|
|
mod.theme.font_title_s = mod.theme.font_bold{font_size: 9.0 line_spacing: 1.2}
|
|
mod.theme.type_body_l_size = 9.0
|
|
mod.theme.type_body_m_size = 8.25
|
|
mod.theme.type_body_s_size = 7.5
|
|
mod.theme.type_label_l_size = 8.25
|
|
mod.theme.type_label_m_size = 7.5
|
|
mod.theme.type_label_s_size = 6.75
|
|
mod.theme.font_body_l = mod.theme.font_regular{font_size: 9.0 line_spacing: 1.35}
|
|
mod.theme.font_body_m = mod.theme.font_regular{font_size: 8.25 line_spacing: 1.35}
|
|
mod.theme.font_body_s = mod.theme.font_regular{font_size: 7.5 line_spacing: 1.35}
|
|
mod.theme.font_label_l = mod.theme.font_bold{font_size: 8.25 line_spacing: 1.2}
|
|
mod.theme.font_label_m = mod.theme.font_bold{font_size: 7.5 line_spacing: 1.2}
|
|
mod.theme.font_label_s = mod.theme.font_bold{font_size: 6.75 line_spacing: 1.2}
|
|
true
|