app/pb_kits/playbook/pb_layout/layout.rb
# frozen_string_literal: true module Playbook module PbLayout class Layout < Playbook::KitBase prop :collapse, type: Playbook::Props::Enum, values: %w[xs sm md lg xl], default: "xs" prop :full, type: Playbook::Props::Boolean, default: false prop :position, type: Playbook::Props::Enum, values: %w[left right], default: "left" prop :size, type: Playbook::Props::Enum, values: %w[xs sm md lg xl], default: "md" prop :transparent, type: Playbook::Props::Boolean, default: false prop :variant, type: Playbook::Props::Enum, values: %w[light dark gradient], default: "light" prop :layout, type: Playbook::Props::Enum, values: %w[sidebar collection collection_detail kanban content masonry], default: "sidebar" prop :responsive, type: Playbook::Props::Boolean, default: false def classname case layout when "collection" generate_classname("pb_layout_kit", layout) when "kanban" generate_classname("pb_layout_kit", layout, responsive_class) when "collection_detail" generate_classname("pb_layout_kit", layout) when "content" generate_classname("pb_layout_kit", layout) when "masonry" generate_classname("pb_layout_kit", layout) else first_class = generate_classname("pb_layout_kit_sidebar", "size_#{size}", position, variant, transparent_class) [first_class, full_class, collapse_class].reject(&:empty?).join(" ") end end private def responsive_class responsive ? "responsive" : "" end def full_class full ? "full" : "" end def transparent_class transparent ? "transparent" : nil end def collapse_class "layout_#{position}_collapse_#{collapse}" end end end end