Class: LightningUiKit::SidebarLinkComponent

Inherits:
BaseComponent
  • Object
show all
Defined in:
app/components/lightning_ui_kit/sidebar_link_component.rb

Instance Method Summary collapse

Methods inherited from BaseComponent

#merge_classes

Methods included from HeroiconHelper

#heroicon

Constructor Details

#initialize(title:, url:, icon: nil, current: false, animate_icon: false, **options) ⇒ SidebarLinkComponent

Returns a new instance of SidebarLinkComponent.



2
3
4
5
6
7
8
9
# File 'app/components/lightning_ui_kit/sidebar_link_component.rb', line 2

def initialize(title:, url:, icon: nil, current: false, animate_icon: false, **options)
  @title = title
  @url = url
  @icon = icon
  @current = current
  @animate_icon = animate_icon
  @options = options
end

Instance Method Details

#classesObject



11
12
13
14
15
16
17
18
19
# File 'app/components/lightning_ui_kit/sidebar_link_component.rb', line 11

def classes
  base_classes = "lui:relative lui:flex lui:items-center lui:gap-3 lui:rounded-lg lui:px-3 lui:py-2 lui:text-sm lui:transition-all lui:duration-150 lui:ease-out"

  if @current
    merge_classes([base_classes, "lui:bg-surface-hover lui:text-foreground lui:font-semibold", @options[:class]].compact.join(" "))
  else
    merge_classes([base_classes, "lui:text-foreground-secondary lui:hover:bg-surface-hover lui:hover:text-foreground", @options[:class]].compact.join(" "))
  end
end

#dataObject



32
33
34
# File 'app/components/lightning_ui_kit/sidebar_link_component.rb', line 32

def data
  @options[:data] || {}
end

#icon_classesObject



21
22
23
24
25
26
27
28
29
30
# File 'app/components/lightning_ui_kit/sidebar_link_component.rb', line 21

def icon_classes
  base = if @current
    "lui:size-5 lui:shrink-0 lui:text-foreground"
  else
    "lui:size-5 lui:shrink-0 lui:text-foreground-faint lui:transition-colors lui:duration-150 lui:group-hover:text-foreground-secondary"
  end

  base += " lui:group-hover:animate-icon-bounce" if @animate_icon
  base
end