Sha256: 193ec5d541b2f81374605ec16454ffe73e7e8dee4a694e39fb99605d9f72b7ae
Contents?: true
Size: 1.45 KB
Versions: 3
Compression:
Stored size: 1.45 KB
Contents
module Coco module App class PlanCard < Coco::Component include Concerns::AcceptsOptions accepts_option :variant, from: [:active, :recommended, :negated, :selected, nil] renders_one :action, ->(*args, **kwargs, &block) do coco_button(*args, **kwargs, size: :sm, fit: :full, disabled: active?, &block) end renders_one :badge, ->(label, **kwargs) do coco_badge(label, class: "plan-badge", **kwargs, icon: :award, size: :sm) end renders_many :benefits, ->(benefit, &block) do @benefits[benefit] = block&.call end before_render do unless badge? if recommended? with_badge("Recommended") elsif active? with_badge("Current Plan") end end end attr_reader :name, :price, :promo, :qualifier def initialize(name:, price:, promo: nil, qualifier: nil, **kwargs) @name = name @price = price @promo = promo @qualifier = qualifier @benefits = {} end def active? get_option_value(:variant) == :active end def recommended? get_option_value(:variant) == :recommended end def negated? get_option_value(:variant) == :negated end def selected? get_option_value(:variant) == :selected end end end end
Version data entries
3 entries across 3 versions & 1 rubygems