Class: Practical::Views::IconSet

Inherits:
Object
  • Object
show all
Defined in:
app/lib/practical/views/icon_set.rb

Constant Summary collapse

IconDefinition =
Data.define(:method_name, :icon_name, :preset)
SpritesheetIconDefinition =
Data.define(:method_name, :icon_name, :library)
Preset =
Data.define(:family, :variant)
PRESETS =
{
  brand: Preset.new(family: :brands, variant: nil),
  duotone: Preset.new(family: :duotone, variant: :solid),
  regular: Preset.new(family: :classic, variant: :regular),
  solid: Preset.new(family: :solid, variant: nil)
}.freeze

Class Method Summary collapse

Class Method Details

.checkbox_indeterminate_iconObject



141
142
143
# File 'app/lib/practical/views/icon_set.rb', line 141

def self.checkbox_indeterminate_icon
  solid_icon(name: :minus, options: {class: "indeterminate-icon"})
end

.define_icons(icon_definitions:) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
# File 'app/lib/practical/views/icon_set.rb', line 38

def self.define_icons(icon_definitions:)
  icon_definitions.each do |icon_definition|
    define_singleton_method(icon_definition.method_name) do
      preset = presets.fetch(icon_definition.preset.to_sym)
      return icon(
        family: preset.family,
        variant: preset.variant,
        name: icon_definition.icon_name
      )
    end
  end
end

.define_spritesheet_icons(spritesheet_icon_definitions:) ⇒ Object



51
52
53
54
55
56
57
58
59
60
# File 'app/lib/practical/views/icon_set.rb', line 51

def self.define_spritesheet_icons(spritesheet_icon_definitions:)
  spritesheet_icon_definitions.each do |icon_definition|
    define_singleton_method(icon_definition.method_name) do
      return spritesheet_icon(
        library: icon_definition.library,
        name: icon_definition.icon_name
      )
    end
  end
end

.emergency_passkey_registration_iconObject



145
146
147
# File 'app/lib/practical/views/icon_set.rb', line 145

def self.emergency_passkey_registration_icon
  duotone_icon(name: :"light-emergency-on", options: {style: "--secondary-color: var(--wa-color-danger-fill-loud); --secondary-opacity: 0.7;"})
end

.icon(**options) ⇒ Object



20
21
22
# File 'app/lib/practical/views/icon_set.rb', line 20

def self.icon(**options)
  Practical::Views::IconComponent.new(**options)
end

.presetsObject



16
17
18
# File 'app/lib/practical/views/icon_set.rb', line 16

def self.presets
  PRESETS
end

.profile_iconObject



139
# File 'app/lib/practical/views/icon_set.rb', line 139

def self.profile_icon = badge_icon

.signin_iconObject



149
150
151
# File 'app/lib/practical/views/icon_set.rb', line 149

def self.
  duotone_icon(name: :"person-to-portal", options: {style: "--secondary-color: var(--wa-color-brand-fill-normal); --secondary-opacity: 0.9;"})
end

.signout_iconObject



153
154
155
# File 'app/lib/practical/views/icon_set.rb', line 153

def self.signout_icon
  duotone_icon(name: :"person-from-portal", options: {style: "--secondary-color: var(--wa-color-brand-fill-normal); --secondary-opacity: 0.9;"})
end

.spritesheet_icon(library:, **options) ⇒ Object



24
25
26
27
28
29
# File 'app/lib/practical/views/icon_set.rb', line 24

def self.spritesheet_icon(library:, **options)
  Practical::Views::IconComponent.new(**options.with_defaults(
    family: :default,
    options: {library: library}
  ))
end