Sha256: d8b8fae67f16d976c8ff58b489535a7650100a63f83e1c3a47a5870e142c844f

Contents?: true

Size: 646 Bytes

Versions: 1

Compression:

Stored size: 646 Bytes

Contents

# frozen_string_literal: true

class Icon < Component
  param :name, reader: false
  option :variant, reader: false, default: -> { }
  option :size, default: -> { :md }, reader: false

  def template
    div(**attrs) do
      render Protos::Icon.heroicon(@name, variant:)
    end
  end

  private

  def variant
    @variant || {
      xs: :micro,
      sm: :mini,
      md: :solid,
      lg: :solid
    }.fetch(@size)
  end

  def size
    {
      xs: "w-3 h-3",
      sm: "w-4 h-4",
      md: "w-5 h-5",
      lg: "w-7 h-7"
    }.fetch(@size)
  end

  def theme
    {
      container: tokens(size, "opacity-90", "inline-block")
    }
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
staticky-0.2.0 site_template/lib/icon.rb