Module: Legion::TTY::Theme
- Defined in:
- lib/legion/tty/theme.rb
Overview
rubocop:disable Metrics/ModuleLength
Constant Summary collapse
- THEMES =
rubocop:disable Naming/VariableNumber
{ purple: { palette: { shade_1: [30, 27, 46], shade_2: [41, 37, 63], shade_3: [52, 47, 80], shade_4: [63, 57, 97], shade_5: [74, 67, 114], shade_6: [85, 77, 131], shade_7: [96, 87, 148], shade_8: [107, 97, 165], shade_9: [118, 107, 182], shade_10: [129, 119, 199], shade_11: [140, 131, 210], shade_12: [157, 148, 221], shade_13: [174, 167, 230], shade_14: [191, 186, 239], shade_15: [208, 205, 245], shade_16: [225, 224, 250], shade_17: [242, 243, 255] }, semantic: { primary: :shade_9, secondary: :shade_6, accent: :shade_12, success: [0, 200, 83], warning: [255, 191, 0], error: [255, 69, 58], info: :shade_7, surface: :shade_1, muted: :shade_4, rain: :shade_11, rain_fade: :shade_3 } }, green: { palette: { shade_1: [15, 30, 15], shade_2: [20, 45, 20], shade_3: [25, 60, 25], shade_4: [30, 75, 30], shade_5: [35, 90, 35], shade_6: [40, 110, 40], shade_7: [50, 130, 50], shade_8: [60, 150, 60], shade_9: [75, 170, 75], shade_10: [90, 190, 90], shade_11: [110, 210, 110], shade_12: [140, 225, 140], shade_13: [170, 235, 170], shade_14: [195, 242, 195], shade_15: [215, 248, 215], shade_16: [230, 252, 230], shade_17: [245, 255, 245] }, semantic: { primary: :shade_9, secondary: :shade_6, accent: :shade_12, success: [0, 200, 83], warning: [255, 191, 0], error: [255, 69, 58], info: :shade_7, surface: :shade_1, muted: :shade_4, rain: :shade_11, rain_fade: :shade_3 } }, blue: { palette: { shade_1: [15, 20, 40], shade_2: [20, 30, 60], shade_3: [25, 40, 80], shade_4: [30, 50, 100], shade_5: [40, 65, 120], shade_6: [50, 80, 140], shade_7: [65, 100, 160], shade_8: [80, 120, 180], shade_9: [100, 140, 200], shade_10: [120, 160, 215], shade_11: [145, 185, 225], shade_12: [170, 205, 235], shade_13: [195, 220, 242], shade_14: [210, 230, 248], shade_15: [225, 240, 252], shade_16: [238, 248, 255], shade_17: [248, 252, 255] }, semantic: { primary: :shade_9, secondary: :shade_6, accent: :shade_12, success: [0, 200, 83], warning: [255, 191, 0], error: [255, 69, 58], info: :shade_7, surface: :shade_1, muted: :shade_4, rain: :shade_11, rain_fade: :shade_3 } }, amber: { palette: { shade_1: [35, 25, 10], shade_2: [50, 35, 15], shade_3: [65, 45, 20], shade_4: [80, 55, 25], shade_5: [100, 70, 30], shade_6: [120, 85, 35], shade_7: [140, 100, 40], shade_8: [165, 120, 50], shade_9: [190, 140, 60], shade_10: [210, 160, 70], shade_11: [225, 180, 85], shade_12: [235, 200, 110], shade_13: [242, 215, 140], shade_14: [248, 230, 170], shade_15: [252, 240, 200], shade_16: [255, 248, 225], shade_17: [255, 252, 245] }, semantic: { primary: :shade_9, secondary: :shade_6, accent: :shade_12, success: [0, 200, 83], warning: [255, 191, 0], error: [255, 69, 58], info: :shade_7, surface: :shade_1, muted: :shade_4, rain: :shade_11, rain_fade: :shade_3 } } }.freeze
- PALETTE =
Legacy aliases for backward compatibility
THEMES[:purple][:palette].transform_keys { |k| k.to_s.sub('shade_', 'purple_').to_sym }.freeze
- SEMANTIC =
THEMES[:purple][:semantic].freeze
Class Method Summary collapse
-
.available_themes ⇒ Object
rubocop:enable Naming/PredicateMethod.
- .c(name, text) ⇒ Object
- .current_theme ⇒ Object
- .reset_theme ⇒ Object
-
.switch(name) ⇒ Object
rubocop:disable Naming/PredicateMethod.
Class Method Details
.available_themes ⇒ Object
rubocop:enable Naming/PredicateMethod
95 96 97 |
# File 'lib/legion/tty/theme.rb', line 95 def available_themes THEMES.keys end |
.c(name, text) ⇒ Object
99 100 101 102 103 104 |
# File 'lib/legion/tty/theme.rb', line 99 def c(name, text) rgb = resolve_rgb(name) return text unless rgb "\e[38;2;#{rgb[0]};#{rgb[1]};#{rgb[2]}m#{text}\e[0m" end |
.current_theme ⇒ Object
81 82 83 |
# File 'lib/legion/tty/theme.rb', line 81 def current_theme @current_theme || :purple end |
.reset_theme ⇒ Object
106 107 108 |
# File 'lib/legion/tty/theme.rb', line 106 def reset_theme @current_theme = :purple end |
.switch(name) ⇒ Object
rubocop:disable Naming/PredicateMethod
86 87 88 89 90 91 92 |
# File 'lib/legion/tty/theme.rb', line 86 def switch(name) name = name.to_sym return false unless THEMES.key?(name) @current_theme = name true end |