class Lookbook::Icon::Component
def initialize(name:, size: 4, stroke: 2, **html_attrs)
def initialize(name:, size: 4, stroke: 2, **html_attrs) @icon_name = name.to_s.tr("_", "-") @size = size || 4 @stroke = stroke super(**html_attrs) end
def read_svg
def read_svg File.read(svg_path).html_safe rescue if Rails.env.development? || Rails.env.test? raise "`#{@icon_name}` is not a valid icon name" end end
def size_rems
def size_rems "#{@size * 0.25}rem" end
def svg
def svg ICON_CACHE[@icon_name] ||= read_svg end
def svg_path
def svg_path Lookbook::Engine.root.join("assets/icons/#{@icon_name}.svg") end