module Coco class ColorPicker < Coco::Component include Concerns::AcceptsOptions DEFAULT_SWATCHES = [ {color: "#111827"}, {color: "#F3F4F6"}, {color: "#FFFFFF"}, {color: "#FEC878"}, {color: "#FC5C0E"}, {color: "#D50201"}, {color: "#1A8871"}, {color: "#C1DAA9"}, {color: "#F5EEE6"}, {color: "#91C7E1"}, {color: "#0164FF"}, {color: "#3A2D86"} ] accepts_option :size, from: [:xs, :sm, :md, nil], default: :sm before_render do content unless content_evaluated? if @swatches.empty? @swatches = DEFAULT_SWATCHES end args[:resize]&.each { set_tag_data_attr("size-#{_1}", _2) } end renders_many :swatches, ->(color, name = nil) do @swatches << {name: name, color: color} end attr_reader :selected def initialize(selected: "FFFFFF", **kwargs) @selected = selected @swatches = [] end def color_swatches @swatches end end end