class
Opal::Theme
- Opal::Theme
- Reference
- Object
Overview
Represents a semantic color and styling theme for consistent, accessible TUI interfaces.
Defined in:
opal/style/theme.crConstructors
- .[](name : Symbol | String) : Theme
-
.build(name : String, &block : ThemeBuilder -> Nil) : Theme
Declarative Theme Builder DSL entry point
- .catppuccin_latte : Theme
- .catppuccin_mocha : Theme
- .current : Theme
- .current=(theme : Theme | Symbol | String) : Theme
- .cyberpunk : Theme
- .default : Theme
- .dracula : Theme
-
.from_brand(name : String, brand : Color | String | Symbol, mode : Symbol = :dark) : Theme
Generates a balanced, harmonious theme from a single brand color and dark/light mode
- .get(name : Symbol | String) : Theme
- .gruvbox : Theme
- .high_contrast : Theme
- .monokai : Theme
- .new(name : String, primary : Color, secondary : Color, accent : Color, background : Color, surface : Color, text : Color, text_muted : Color, border : Color, success : Color, warning : Color, danger : Color, info : Color, window_border : Border = Border.rounded, box_border : Border = Border.rounded, glyphs : GlyphSet = GlyphSet.new)
- .nord : Theme
- .register(theme : Theme) : Theme
- .solarized_dark : Theme
- .tokyo_night : Theme
Class Method Summary
Instance Method Summary
- #accent : Color
- #accent=(accent : Color)
-
#audit_contrast : Hash(String, NamedTuple(ratio: Float64, compliant: Bool, level: String))
Audits theme contrast ratios against WCAG 2.1 criteria
- #background : Color
- #background=(background : Color)
- #border : Color
- #border=(border : Color)
- #box_border : Border
- #box_border=(box_border : Border)
- #danger : Color
- #danger=(danger : Color)
-
#derive(name : String, primary : Color | String | Symbol | Nil = nil, secondary : Color | String | Symbol | Nil = nil, accent : Color | String | Symbol | Nil = nil, background : Color | String | Symbol | Nil = nil, surface : Color | String | Symbol | Nil = nil, text : Color | String | Symbol | Nil = nil, text_muted : Color | String | Symbol | Nil = nil, border : Color | String | Symbol | Nil = nil, success : Color | String | Symbol | Nil = nil, warning : Color | String | Symbol | Nil = nil, danger : Color | String | Symbol | Nil = nil, info : Color | String | Symbol | Nil = nil, window_border : Border | Symbol | String | Nil = nil, box_border : Border | Symbol | String | Nil = nil, glyphs : GlyphSet | Nil = nil) : Theme
Returns a new theme derived from this theme with selective overrides
-
#ensure_contrast(min_ratio : Float64 = 4.5) : Theme
Adjusts text and primary contrast against background to satisfy minimum WCAG ratio
- #glyphs : GlyphSet
- #glyphs=(glyphs : GlyphSet)
- #info : Color
- #info=(info : Color)
- #name : String
- #primary : Color
- #primary=(primary : Color)
- #secondary : Color
- #secondary=(secondary : Color)
- #success : Color
- #success=(success : Color)
- #surface : Color
- #surface=(surface : Color)
- #text : Color
- #text=(text : Color)
- #text_muted : Color
- #text_muted=(text_muted : Color)
- #warning : Color
- #warning=(warning : Color)
- #window_border : Border
- #window_border=(window_border : Border)
Constructor Detail
Declarative Theme Builder DSL entry point
def self.from_brand(name : String, brand : Color | String | Symbol, mode : Symbol = :dark) : Theme
#
Generates a balanced, harmonious theme from a single brand color and dark/light mode
def self.new(name : String, primary : Color, secondary : Color, accent : Color, background : Color, surface : Color, text : Color, text_muted : Color, border : Color, success : Color, warning : Color, danger : Color, info : Color, window_border : Border = Border.rounded, box_border : Border = Border.rounded, glyphs : GlyphSet = GlyphSet.new)
#
Class Method Detail
Instance Method Detail
def audit_contrast : Hash(String, NamedTuple(ratio: Float64, compliant: Bool, level: String))
#
Audits theme contrast ratios against WCAG 2.1 criteria
def derive(name : String, primary : Color | String | Symbol | Nil = nil, secondary : Color | String | Symbol | Nil = nil, accent : Color | String | Symbol | Nil = nil, background : Color | String | Symbol | Nil = nil, surface : Color | String | Symbol | Nil = nil, text : Color | String | Symbol | Nil = nil, text_muted : Color | String | Symbol | Nil = nil, border : Color | String | Symbol | Nil = nil, success : Color | String | Symbol | Nil = nil, warning : Color | String | Symbol | Nil = nil, danger : Color | String | Symbol | Nil = nil, info : Color | String | Symbol | Nil = nil, window_border : Border | Symbol | String | Nil = nil, box_border : Border | Symbol | String | Nil = nil, glyphs : GlyphSet | Nil = nil) : Theme
#
Returns a new theme derived from this theme with selective overrides
Adjusts text and primary contrast against background to satisfy minimum WCAG ratio