Module: Wabi::Variants
- Included in:
- Base
- Defined in:
- lib/wabi/variants.rb
Overview
CVA-style variant DSL. Use by extending into a class:
class Button
extend Wabi::Variants
variants do
base "btn"
variant :size, { sm: "h-8", md: "h-10" }, default: :md
end
end
Button.new.tokens(size: :sm) # => "btn h-8"
Defined Under Namespace
Classes: Definition
Instance Method Summary collapse
Instance Method Details
#variants(&block) ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'lib/wabi/variants.rb', line 16 def variants(&block) definition = Definition.new definition.instance_eval(&block) @_wabi_variants = definition define_method(:tokens) do |**opts| self.class.instance_variable_get(:@_wabi_variants).resolve(**opts) end end |