Module: UI::SidebarMenuButtonBehavior

Included in:
SidebarMenuButton
Defined in:
app/behaviors/ui/sidebar_menu_button_behavior.rb

Overview

UI::SidebarMenuButtonBehavior

Constant Summary collapse

VARIANTS =
{
  default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
  outline: "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] " \
           "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"
}.freeze
SIZES =
{
  default: "h-8 text-sm",
  sm: "h-7 text-xs",
  lg: "h-12 text-sm group-data-[state=collapsed]:group-data-[collapsible=icon]:p-0!"
}.freeze

Instance Method Summary collapse

Instance Method Details



37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'app/behaviors/ui/sidebar_menu_button_behavior.rb', line 37

def sidebar_menu_button_classes
  variant_value = respond_to?(:variant, true) ? variant : @variant
  size_value = respond_to?(:size, true) ? size : @size
  is_active = respond_to?(:active, true) ? active : @active
  classes_value = respond_to?(:classes, true) ? classes : @classes

  TailwindMerge::Merger.new.merge([
    sidebar_menu_button_base_classes,
    VARIANTS[variant_value],
    SIZES[size_value],
    is_active ? sidebar_menu_button_active_classes : nil,
    classes_value
  ].compact.join(" "))
end


52
53
54
55
56
57
58
59
60
# File 'app/behaviors/ui/sidebar_menu_button_behavior.rb', line 52

def sidebar_menu_button_data_attributes
  is_active = respond_to?(:active, true) ? active : @active
  attrs = {
    slot: "sidebar-menu-button",
    size: @size
  }
  attrs[:active] = true if is_active
  attrs
end


30
31
32
33
34
35
# File 'app/behaviors/ui/sidebar_menu_button_behavior.rb', line 30

def sidebar_menu_button_html_attributes
  {
    class: sidebar_menu_button_classes,
    data: sidebar_menu_button_data_attributes
  }
end