2022-11-15 00:32:54 +01:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2015-07-29 18:54:33 +02:00
|
|
|
module ThemeHelper
|
2024-09-04 22:43:13 +02:00
|
|
|
def render_theme = nil
|
2020-05-03 17:28:41 +02:00
|
|
|
|
2023-01-12 18:30:55 +01:00
|
|
|
def get_color_for_key(key, color)
|
|
|
|
hex = get_hex_color_from_theme_value(color)
|
|
|
|
|
|
|
|
if key.include?("text") || key.include?("placeholder") || key.include?("rgb")
|
|
|
|
get_decimal_triplet_from_hex(hex)
|
|
|
|
else
|
|
|
|
"##{hex}"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2024-09-04 22:43:13 +02:00
|
|
|
def theme_color = "#5e35b1"
|
2021-08-06 00:36:20 +02:00
|
|
|
|
2024-09-04 22:43:13 +02:00
|
|
|
def mobile_theme_color = "#f0edf4"
|
2020-05-03 17:28:41 +02:00
|
|
|
|
|
|
|
def get_hex_color_from_theme_value(value)
|
2022-11-15 00:32:54 +01:00
|
|
|
"0000000#{value.to_s(16)}"[-6, 6]
|
2020-05-03 17:28:41 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
def get_decimal_triplet_from_hex(value)
|
2022-11-15 00:32:54 +01:00
|
|
|
hexes = value.split(/(.{2})/).reject(&:empty?)
|
|
|
|
hexes.map(&:hex).join(", ")
|
2020-05-03 17:28:41 +02:00
|
|
|
end
|
2021-04-04 16:23:11 +02:00
|
|
|
|
|
|
|
def rgb_values_from_hex(value)
|
|
|
|
[
|
|
|
|
(value & 0xFF0000) >> 16, # R
|
|
|
|
(value & 0x00FF00) >> 8, # G
|
|
|
|
value & 0x0000FF # B
|
|
|
|
]
|
|
|
|
end
|
|
|
|
|
|
|
|
def rgb_to_hex(rgb_values)
|
2022-11-15 00:32:54 +01:00
|
|
|
rgb_values.map.with_index { |v, i| v << ((2 - i) * 8) }.reduce(&:+).to_s(16)
|
2021-04-04 16:23:11 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
def lighten(value, amount = 0.25)
|
2022-11-15 00:32:54 +01:00
|
|
|
rgb_to_hex(rgb_values_from_hex(value).map { |v| [(v + (255 * amount)).round, 255].min })
|
2021-04-04 16:23:11 +02:00
|
|
|
end
|
2015-07-29 18:54:33 +02:00
|
|
|
end
|