class Lookbook::ConfigStore
@api public
@ignore methods
Lookbook.config.ui_theme = :zinc
# Lookbook config access everywhere else:
config.lookbook.ui_theme = :zinc
# Lookbook config access in Rails config files:
@example :ruby
or dot-notation syntax.
Config option values can be get/set using hash property access syntax
Configuration store for Lookbook.
def self.default_config(env: Rails.env)
def self.default_config(env: Rails.env) ConfigLoader.call(CONFIG_FILE, env: env) end
def self.init_from_config(env: Rails.env)
def self.init_from_config(env: Rails.env) new(default_config(env: env)) end
def get_favicon(theme)
def get_favicon(theme) default_favicon_path = Engine.root.join(DEFAULT_FAVICONS[theme]) default_favicon = FileDataUriEncoder.call(default_favicon_path) if ui_favicon.present? if ui_favicon.is_a?(Hash) if ui_favicon[theme].is_a?(String) DataUriEncoder.call(ui_favicon[theme], "image/svg+xml") else default_favicon end elsif ui_favicon.is_a?(String) DataUriEncoder.call(ui_favicon, "image/svg+xml") else default_favicon end end end
def highlighter_options=(options = nil)
def highlighter_options=(options = nil) store[:highlighter_options].merge!(options.to_h) end
def initialize(config = nil)
def initialize(config = nil) @store = Store.new(config, recursive: true) end
def listen_extensions=(extensions = nil)
def listen_extensions=(extensions = nil) store[:listen_extensions].push(*extensions.to_a).uniq! end
def markdown_options=(options = nil)
def markdown_options=(options = nil) store[:markdown_options].merge!(options.to_h) end
def page_extensions=(extensions = nil)
def page_extensions=(extensions = nil) store[:page_extensions].push(*extensions.to_a).uniq! end
def preview_disable_error_handling=(value)
def preview_disable_error_handling=(value) store[:preview_disable_error_handling] = value end
def preview_single_pass_rendering=(value)
def preview_single_pass_rendering=(value) store[:preview_single_pass_rendering] = value end
def project_name
def project_name if store[:project_name].nil? if store[:project_logo].nil? Rails.application.class.module_parent.name.titleize else false end else store[:project_name] end end
def project_name=(name)
def project_name=(name) store[:project_name] = name end
def ui_favicon_dark
def ui_favicon_dark @_ui_favicon_dark ||= get_favicon(:dark) end
def ui_favicon_light
def ui_favicon_light @_ui_favicon_light ||= get_favicon(:light) end
def ui_theme=(name)
def ui_theme=(name) name = name.to_s if Theme.valid_theme?(name) store[:ui_theme] = name else raise ConfigError.new("'#{name}' is not a valid Lookbook theme. ", scope: "app.config") end end
def ui_theme_overrides(&block)
def ui_theme_overrides(&block) if block yield store[:ui_theme_overrides] else store[:ui_theme_overrides] end end