module Playbook::PbFormsGlobalPropsHelper

def generate_prop_classes(props)

def generate_prop_classes(props)
  classes = []
  props.each do |prop, value|
    next if value.nil?
    classes <<  case prop
                when :padding
                  "p_#{value}"
                when :padding_top
                  "pt_#{value}"
                when :padding_bottom
                  "pb_#{value}"
                when :padding_left
                  "pl_#{value}"
                when :padding_right
                  "pr_#{value}"
                when :padding_x
                  "px_#{value}"
                when :padding_y
                  "py_#{value}"
                when :margin
                  "m_#{value}"
                when :margin_top
                  "mt_#{value}"
                when :margin_bottom
                  "mb_#{value}"
                when :margin_left
                  "ml_#{value}"
                when :margin_right
                  "mr_#{value}"
                when :margin_x
                  "mx_#{value}"
                when :margin_y
                  "my_#{value}"
                when :shadow
                  "shadow_#{value}"
                when :width
                  value.to_s.end_with?("%") ? "width_#{value.to_i}_percent" : "width_#{value.downcase}"
                when :min_width
                  value.to_s.end_with?("%") ? "min_width_#{value.to_i}_percent" : "min_width_#{value.downcase}"
                when :max_width
                  value.to_s.end_with?("%") ? "max_width_#{value.to_i}_percent" : "max_width_#{value.downcase}"
                when :height
                  "height_#{value.downcase}"
                when :min_height
                  "min_height_#{value.downcase}"
                when :max_height
                  "max_height_#{value.downcase}"
                when :position
                  "position_#{value}"
                when :vertical_alignment
                  "vertical_align_#{value}"
                when :z_index
                  "z_index_#{value}"
                when :line_height
                  "line_height_#{value}"
                when :number_spacing
                  "ns_#{value}"
                when :border_radius
                  "border_radius_#{value}"
                when :text_size
                  "text_#{value}"
                when :letter_spacing
                  "ls_#{value}"
                when :display
                  "display_#{value}"
                when :cursor
                  "cursor_#{value}"
                when :hover
                  if value.is_a?(Hash)
                    value.map do |hover_prop, hover_value|
                      case hover_prop
                      when :shadow
                        "hover_shadow_#{hover_value}"
                      when :scale
                        "hover_scale_#{hover_value}"
                      when :underline
                        hover_value == true ? "hover_underline" : nil
                      when :color
                        "hover_color_#{hover_value}"
                      when :background
                        "hover_background_#{hover_value}"
                      end
                    end
                  else
                    "hover_#{value}"
                  end
                when :text_align
                  "text_align_#{value}"
                when :overflow
                  "overflow_#{value}"
                when :overflow_x
                  "overflow_x_#{value}"
                when :overflow_y
                  "overflow_y_#{value}"
                when :truncate
                  "truncate_#{value}"
                when :group_hover
                  value ? "group_hover" : nil
                end
  end
  classes.flatten.compact
end