essence 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/lib/essence/cli.rb +1 -1
 - data/lib/essence/components/alert.rb +50 -0
 - data/lib/essence/components/checkbox.rb +17 -0
 - data/lib/essence/components/essence.rb +0 -2
 - data/lib/essence/components/heading.rb +28 -0
 - data/lib/essence/components/input.rb +14 -0
 - data/lib/essence/components/label.rb +28 -0
 - data/lib/essence/components/metric.rb +40 -0
 - data/lib/essence/components/separator.rb +29 -0
 - data/lib/essence/components/switch.rb +69 -0
 - data/lib/essence/components/text.rb +21 -0
 - data/lib/essence/configuration.rb +2 -0
 - data/lib/essence/definitions.rb +89 -0
 - data/lib/essence/stimulus/switch_controller.js +32 -0
 - data/lib/essence/version.rb +1 -1
 - data/lib/essence.rb +40 -12
 - metadata +15 -5
 - /data/{essence → lib/essence}/stimulus/tabs_controller.js +0 -0
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: f50eba3dff7653e3e65f0f1e2dabb114782f0e0bf09cb64995118d86427b65b1
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 21ce8e60063dc1930aa31eb4f3bb22be5045ffefd15fed55db823178dcc0d4da
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 2a6738cd42f2504d0b96be1b711abba2a4788cc6a411e27f2d47d62716cf6051b3f3835e95a68d45103fc47da909f1d02c7fe2c1226fd661362c337d89df4e09
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: ac414b095aa27a017b2438bcf9da0bfd2e8f638c21525b1bf3f749573fbb0771f3250ae418151f5175ef9f8ff44d25ef172d56317e7cc640836e3c25eeddb07d
         
     | 
    
        data/lib/essence/cli.rb
    CHANGED
    
    | 
         @@ -17,7 +17,7 @@ module Essence 
     | 
|
| 
       17 
17 
     | 
    
         
             
                  extend Dry::CLI::Registry
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
                  # Constants
         
     | 
| 
       20 
     | 
    
         
            -
                  STIMULUS_CONTROLLERS_DIR = Pathname.new( 
     | 
| 
      
 20 
     | 
    
         
            +
                  STIMULUS_CONTROLLERS_DIR = Pathname.new(File.expand_path("stimulus", __dir__))
         
     | 
| 
       21 
21 
     | 
    
         
             
                  STIMULUS_CONTROLLERS_DESTINATION_DIR = Pathname.new(File.expand_path(Dir.pwd)).join(::Essence.configuration.stimulus_controller_path)
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
                  COMPONENTS_DIR = Pathname.new(File.expand_path("components", __dir__))
         
     | 
| 
         @@ -0,0 +1,50 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            class Essence::Alert < Essence::Essence
         
     | 
| 
      
 4 
     | 
    
         
            +
              BASE = "bg-white border-l-2 flex flex-col p-3 sm:p-4 bg-gray-50/50"
         
     | 
| 
      
 5 
     | 
    
         
            +
              TITLE_BASE = "text-gray-900 text-sm sm:text-base font-medium w-full"
         
     | 
| 
      
 6 
     | 
    
         
            +
              DESCRIPTION_BASE = "text-gray-700 flex text-xs sm:text-sm w-full"
         
     | 
| 
      
 7 
     | 
    
         
            +
              ICON_BASE = "inline-flex items-center justify-center w-fit size-7 rounded-xs"
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              KINDS = {
         
     | 
| 
      
 10 
     | 
    
         
            +
                primary: "border-blue-500",
         
     | 
| 
      
 11 
     | 
    
         
            +
                critical: "border-rose-600",
         
     | 
| 
      
 12 
     | 
    
         
            +
                warning: "border-orange-400",
         
     | 
| 
      
 13 
     | 
    
         
            +
                success: "border-emerald-500"
         
     | 
| 
      
 14 
     | 
    
         
            +
              }
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              ICON_KINDS = {
         
     | 
| 
      
 17 
     | 
    
         
            +
                primary: "bg-blue-500 text-white",
         
     | 
| 
      
 18 
     | 
    
         
            +
                critical: "bg-rose-600 text-white",
         
     | 
| 
      
 19 
     | 
    
         
            +
                warning: "bg-orange-400 text-gray-900",
         
     | 
| 
      
 20 
     | 
    
         
            +
                success: "bg-emerald-500 text-white"
         
     | 
| 
      
 21 
     | 
    
         
            +
              }
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              attr_reader :kind
         
     | 
| 
      
 24 
     | 
    
         
            +
              attr_reader :attributes
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              def initialize(kind: :primary, **attributes)
         
     | 
| 
      
 27 
     | 
    
         
            +
                @kind = kind
         
     | 
| 
      
 28 
     | 
    
         
            +
                super(**attributes)
         
     | 
| 
      
 29 
     | 
    
         
            +
                @attributes[:class] = merge_classes([ BASE, KINDS[kind], attributes[:class] ])
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              def view_template(&)
         
     | 
| 
      
 33 
     | 
    
         
            +
                div(**attributes, &)
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              def title(**mattributes, &)
         
     | 
| 
      
 37 
     | 
    
         
            +
                mattributes[:class] = merge_classes([ TITLE_BASE, mattributes[:class] ])
         
     | 
| 
      
 38 
     | 
    
         
            +
                h5(**mattributes, &)
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
              def description(**mattributes, &)
         
     | 
| 
      
 42 
     | 
    
         
            +
                mattributes[:class] = merge_classes([ DESCRIPTION_BASE, mattributes[:class] ])
         
     | 
| 
      
 43 
     | 
    
         
            +
                p(**mattributes, &)
         
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              def icon(**mattributes, &)
         
     | 
| 
      
 47 
     | 
    
         
            +
                mattributes[:class] = merge_classes([ ICON_BASE, ICON_KINDS[kind], mattributes[:class] ])
         
     | 
| 
      
 48 
     | 
    
         
            +
                div(**mattributes, &)
         
     | 
| 
      
 49 
     | 
    
         
            +
              end
         
     | 
| 
      
 50 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            class Essence::Checkbox < Essence::Essence
         
     | 
| 
      
 4 
     | 
    
         
            +
              BASE = "appearance-none size-3.5 cursor-pointer transition duration-100 rounded-xs border border-gray-300 focus:ring-0 checked:border-indigo-600 checked:bg-indigo-500 indeterminate:border-indigo-600 indeterminate:bg-indigo-500 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:border-gray-300 disabled:bg-gray-100 disabled:checked:bg-gray-100 forced-colors:appearance-auto"
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              attr_reader :attributes
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              def initialize(**attributes)
         
     | 
| 
      
 9 
     | 
    
         
            +
                super(**attributes)
         
     | 
| 
      
 10 
     | 
    
         
            +
                @attributes[:class] = merge_classes(BASE, attributes[:class])
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              def view_template
         
     | 
| 
      
 14 
     | 
    
         
            +
                attributes[:type] = :checkbox
         
     | 
| 
      
 15 
     | 
    
         
            +
                input(**attributes)
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class Essence::Heading < Essence::Essence
         
     | 
| 
      
 2 
     | 
    
         
            +
              ALLOWED_TAGS = [ :h1, :h2, :h3, :h4, :h5, :h6 ]
         
     | 
| 
      
 3 
     | 
    
         
            +
              BASE = "font-medium text-gray-900 leading-normal"
         
     | 
| 
      
 4 
     | 
    
         
            +
              SIZES = {
         
     | 
| 
      
 5 
     | 
    
         
            +
                xs: "text-base lg:text-lg",
         
     | 
| 
      
 6 
     | 
    
         
            +
                sm: "text-lg lg:text-xl",
         
     | 
| 
      
 7 
     | 
    
         
            +
                md: "text-xl lg:text-2xl",
         
     | 
| 
      
 8 
     | 
    
         
            +
                lg: "text-2xl lg:text-3xl",
         
     | 
| 
      
 9 
     | 
    
         
            +
                xl: "text-3xl lg:text-4xl",
         
     | 
| 
      
 10 
     | 
    
         
            +
                "2xl": "text-4xl lg:text-5xl",
         
     | 
| 
      
 11 
     | 
    
         
            +
                "3xl": "text-5xl lg:text-6xl"
         
     | 
| 
      
 12 
     | 
    
         
            +
              }
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              attr_reader :as
         
     | 
| 
      
 15 
     | 
    
         
            +
              attr_reader :size
         
     | 
| 
      
 16 
     | 
    
         
            +
              attr_reader :attributes
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              def initialize(as: :h2, size: :xs, **attributes)
         
     | 
| 
      
 19 
     | 
    
         
            +
                super(**attributes)
         
     | 
| 
      
 20 
     | 
    
         
            +
                @as = ALLOWED_TAGS.include?(as.to_sym) ? as.to_sym : :h1
         
     | 
| 
      
 21 
     | 
    
         
            +
                @size = SIZES.keys.include?(size.to_sym) ? size.to_sym : :xs
         
     | 
| 
      
 22 
     | 
    
         
            +
                @attributes[:class] = merge_classes([ BASE, SIZES[size], attributes[:class] ])
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              def view_template(&)
         
     | 
| 
      
 26 
     | 
    
         
            +
                tag(as, **attributes, &)
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            class Essence::Input < Essence::Essence
         
     | 
| 
      
 4 
     | 
    
         
            +
              BASE = "flex px-4 h-10 md:h-12 rounded-sm border border-gray-200/80 focus:outline-none focus:ring-offset-2 focus-visible:ring-2"
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              def initialize(**attributes)
         
     | 
| 
      
 7 
     | 
    
         
            +
                super(**attributes)
         
     | 
| 
      
 8 
     | 
    
         
            +
                @attributes[:class] = merge_classes([ BASE, @attributes[:class] ])
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              def view_template(&)
         
     | 
| 
      
 12 
     | 
    
         
            +
                input(**attributes)
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            class Essence::Label < Essence::Essence
         
     | 
| 
      
 4 
     | 
    
         
            +
              BASE = "flex text-sm font-medium text-gray-700"
         
     | 
| 
      
 5 
     | 
    
         
            +
              HELPER_BASE = "text-xs font-normal text-gray-500"
         
     | 
| 
      
 6 
     | 
    
         
            +
              ASTERISK_BASE = "text-rose-500 font-normal mx-0.5"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              attr_reader :attributes
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              def initialize(**attributes)
         
     | 
| 
      
 11 
     | 
    
         
            +
                super(**attributes)
         
     | 
| 
      
 12 
     | 
    
         
            +
                @attributes[:class] = merge_classes([ BASE, attributes[:class], !!attributes[:for] ? "cursor-pointer" : "" ])
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              def view_template(&)
         
     | 
| 
      
 16 
     | 
    
         
            +
                label(**@attributes, &)
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              def asterisk(**mattributes)
         
     | 
| 
      
 20 
     | 
    
         
            +
                mattributes[:class] = merge_classes([ ASTERISK_BASE, mattributes[:class] ])
         
     | 
| 
      
 21 
     | 
    
         
            +
                span(**mattributes) { "*" }
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              def helper_text(**mattributes, &)
         
     | 
| 
      
 25 
     | 
    
         
            +
                mattributes[:class] = merge_classes([ HELPER_BASE, mattributes[:class] ])
         
     | 
| 
      
 26 
     | 
    
         
            +
                p(**mattributes, &)
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,40 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            class Essence::Metric < Essence::Essence
         
     | 
| 
      
 4 
     | 
    
         
            +
              BASE = "p-4 border rounded-xs"
         
     | 
| 
      
 5 
     | 
    
         
            +
              HELPER_BASE = "text-xs uppercase font-medium text-gray-500"
         
     | 
| 
      
 6 
     | 
    
         
            +
              TITLE_BASE = "text-2xl text-gray-900 font-medium"
         
     | 
| 
      
 7 
     | 
    
         
            +
              BODY_BASE = "text-sm text-gray-700"
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              KINDS = {
         
     | 
| 
      
 10 
     | 
    
         
            +
                primary: "",
         
     | 
| 
      
 11 
     | 
    
         
            +
                secondary: "border-transparent bg-gray-100"
         
     | 
| 
      
 12 
     | 
    
         
            +
              }
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              attr_reader :kind
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              def initialize(kind: :primary, **attributes)
         
     | 
| 
      
 17 
     | 
    
         
            +
                @kind = kind
         
     | 
| 
      
 18 
     | 
    
         
            +
                super(**attributes)
         
     | 
| 
      
 19 
     | 
    
         
            +
                @attributes[:class] = merge_classes([ BASE, KINDS[kind], @attributes[:class] ])
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              def view_template(&)
         
     | 
| 
      
 23 
     | 
    
         
            +
                div(**attributes, &)
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              def title(**mattributes, &)
         
     | 
| 
      
 27 
     | 
    
         
            +
                mattributes[:class] = merge_classes([ TITLE_BASE, mattributes[:class] ])
         
     | 
| 
      
 28 
     | 
    
         
            +
                h5(**mattributes, &)
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
              def helper(**mattributes, &)
         
     | 
| 
      
 32 
     | 
    
         
            +
                mattributes[:class] = merge_classes([ HELPER_BASE, mattributes[:class] ])
         
     | 
| 
      
 33 
     | 
    
         
            +
                p(**mattributes, &)
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              def body(**mattributes, &)
         
     | 
| 
      
 37 
     | 
    
         
            +
                mattributes[:class] = merge_classes([ BODY_BASE, mattributes[:class] ])
         
     | 
| 
      
 38 
     | 
    
         
            +
                p(**mattributes, &)
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            class Essence::Separator < Essence::Essence
         
     | 
| 
      
 4 
     | 
    
         
            +
              BASE = "border-gray-200/50"
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              KINDS = {
         
     | 
| 
      
 7 
     | 
    
         
            +
                horizontal: "border-t",
         
     | 
| 
      
 8 
     | 
    
         
            +
                vertical: "border-l h-full"
         
     | 
| 
      
 9 
     | 
    
         
            +
              }
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              attr_reader :kind
         
     | 
| 
      
 12 
     | 
    
         
            +
              attr_reader :attributes
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              def initialize(kind: :horizontal, **attributes)
         
     | 
| 
      
 15 
     | 
    
         
            +
                @kind = kind
         
     | 
| 
      
 16 
     | 
    
         
            +
                super(**attributes)
         
     | 
| 
      
 17 
     | 
    
         
            +
                @attributes[:class] = merge_classes([ BASE, KINDS[kind], @attributes[:class] ])
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              def view_template
         
     | 
| 
      
 21 
     | 
    
         
            +
                element_tag(**attributes)
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              private
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              def element_tag(...)
         
     | 
| 
      
 27 
     | 
    
         
            +
                kind.to_sym == :horizontal ? hr(...) : div(...)
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,69 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # A switch component that can be toggled on and off.
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # ==== Examples
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            #    render Switch.new
         
     | 
| 
      
 8 
     | 
    
         
            +
            #
         
     | 
| 
      
 9 
     | 
    
         
            +
            # ==== Documentation
         
     | 
| 
      
 10 
     | 
    
         
            +
            #
         
     | 
| 
      
 11 
     | 
    
         
            +
            # https://essence.primevise.com/components/switch
         
     | 
| 
      
 12 
     | 
    
         
            +
            #
         
     | 
| 
      
 13 
     | 
    
         
            +
            class Essence::Switch < Essence::Essence
         
     | 
| 
      
 14 
     | 
    
         
            +
              BASE = "relative inline-flex h-6 w-12 shrink-0 cursor-pointer rounded-full border-2 border-transparent bg-gray-200 transition-colors duration-200 ease-in-out focus:ring-2 focus:ring-indigo-200 focus:ring-offset-2 focus:outline-hidden"
         
     | 
| 
      
 15 
     | 
    
         
            +
              LEVER_BASE = "pointer-events-none inline-block size-5 translate-x-0 transform rounded-full bg-white ring-0 transition duration-200 ease-in-out"
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              ACTIVE_CLASSES = "bg-indigo-600"
         
     | 
| 
      
 18 
     | 
    
         
            +
              INACTIVE_CLASSES = "bg-gray-200"
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              ACTIVE_LEVER_CLASSES = "translate-x-6"
         
     | 
| 
      
 21 
     | 
    
         
            +
              INACTIVE_LEVER_CLASSES = "translate-x-0"
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              def initialize(**attributes)
         
     | 
| 
      
 24 
     | 
    
         
            +
                super(**attributes)
         
     | 
| 
      
 25 
     | 
    
         
            +
                @attributes[:class] = merge_classes([ BASE, @attributes[:class] ])
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              def view_template(&)
         
     | 
| 
      
 29 
     | 
    
         
            +
                button(**attributes) do
         
     | 
| 
      
 30 
     | 
    
         
            +
                  span(class: "sr-only") { "Use setting" }
         
     | 
| 
      
 31 
     | 
    
         
            +
                  span(
         
     | 
| 
      
 32 
     | 
    
         
            +
                    aria_hidden: "true",
         
     | 
| 
      
 33 
     | 
    
         
            +
                    class: LEVER_BASE,
         
     | 
| 
      
 34 
     | 
    
         
            +
                    data: {
         
     | 
| 
      
 35 
     | 
    
         
            +
                      essence__switch_target: "lever"
         
     | 
| 
      
 36 
     | 
    
         
            +
                    },
         
     | 
| 
      
 37 
     | 
    
         
            +
                  )
         
     | 
| 
      
 38 
     | 
    
         
            +
                  yield if block_given?
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
              end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
              def hidden_input(**mattributes)
         
     | 
| 
      
 43 
     | 
    
         
            +
                mattributes[:type] = "hidden"
         
     | 
| 
      
 44 
     | 
    
         
            +
                mattributes[:name] = mattributes[:name] || "enabled"
         
     | 
| 
      
 45 
     | 
    
         
            +
                mattributes[:value] = mattributes[:value] || false
         
     | 
| 
      
 46 
     | 
    
         
            +
                mattributes[:data] = { essence__switch_target: "input" }
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                input(**mattributes)
         
     | 
| 
      
 49 
     | 
    
         
            +
              end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
              private
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
              def default_attributes
         
     | 
| 
      
 54 
     | 
    
         
            +
                {
         
     | 
| 
      
 55 
     | 
    
         
            +
                  type: "button",
         
     | 
| 
      
 56 
     | 
    
         
            +
                  role: "switch",
         
     | 
| 
      
 57 
     | 
    
         
            +
                  aria_checked: false,
         
     | 
| 
      
 58 
     | 
    
         
            +
                  data: {
         
     | 
| 
      
 59 
     | 
    
         
            +
                    controller: "essence--switch",
         
     | 
| 
      
 60 
     | 
    
         
            +
                    action: "click->essence--switch#toggle",
         
     | 
| 
      
 61 
     | 
    
         
            +
                    essence__switch_active_class: ACTIVE_CLASSES,
         
     | 
| 
      
 62 
     | 
    
         
            +
                    essence__switch_inactive_class: INACTIVE_CLASSES,
         
     | 
| 
      
 63 
     | 
    
         
            +
                    essence__switch_active_lever_class: ACTIVE_LEVER_CLASSES,
         
     | 
| 
      
 64 
     | 
    
         
            +
                    essence__switch_inactive_lever_class: INACTIVE_LEVER_CLASSES
         
     | 
| 
      
 65 
     | 
    
         
            +
                  }
         
     | 
| 
      
 66 
     | 
    
         
            +
                }
         
     | 
| 
      
 67 
     | 
    
         
            +
              end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            class Essence::Text < Essence::Essence
         
     | 
| 
      
 4 
     | 
    
         
            +
              BASE = "text-base text-gray-500 dark:text-gray-400"
         
     | 
| 
      
 5 
     | 
    
         
            +
              SIZES = {
         
     | 
| 
      
 6 
     | 
    
         
            +
                sm: "text-sm",
         
     | 
| 
      
 7 
     | 
    
         
            +
                md: "text-base",
         
     | 
| 
      
 8 
     | 
    
         
            +
                lg: "text-lg"
         
     | 
| 
      
 9 
     | 
    
         
            +
              }
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              attr_reader :size
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              def initialize(size: :md, **attributes)
         
     | 
| 
      
 14 
     | 
    
         
            +
                super(**attributes)
         
     | 
| 
      
 15 
     | 
    
         
            +
                @attributes[:class] = merge_classes([ BASE, SIZES[size], attributes[:class] ])
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              def view_template(&)
         
     | 
| 
      
 19 
     | 
    
         
            +
                p(**attributes, &)
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,9 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Essence
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Configuration
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_accessor :api_key
         
     | 
| 
       3 
4 
     | 
    
         
             
                attr_accessor :phlex_components_path
         
     | 
| 
       4 
5 
     | 
    
         
             
                attr_accessor :stimulus_controller_path
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
7 
     | 
    
         
             
                def initialize
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @api_key = nil
         
     | 
| 
       7 
9 
     | 
    
         
             
                  @phlex_components_path = "app/components"
         
     | 
| 
       8 
10 
     | 
    
         
             
                  @stimulus_controller_path = "app/javascript/controllers/essence"
         
     | 
| 
       9 
11 
     | 
    
         
             
                end
         
     | 
| 
         @@ -0,0 +1,89 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Essence
         
     | 
| 
      
 2 
     | 
    
         
            +
              DEFINITIONS = {
         
     | 
| 
      
 3 
     | 
    
         
            +
                accordion: {
         
     | 
| 
      
 4 
     | 
    
         
            +
                  name: "Accordion",
         
     | 
| 
      
 5 
     | 
    
         
            +
                  class_name: "Essence::Accordion",
         
     | 
| 
      
 6 
     | 
    
         
            +
                  stimulus: false
         
     | 
| 
      
 7 
     | 
    
         
            +
                },
         
     | 
| 
      
 8 
     | 
    
         
            +
                alert: {
         
     | 
| 
      
 9 
     | 
    
         
            +
                  name: "Alert",
         
     | 
| 
      
 10 
     | 
    
         
            +
                  class_name: "Essence::Alert",
         
     | 
| 
      
 11 
     | 
    
         
            +
                  stimulus: false
         
     | 
| 
      
 12 
     | 
    
         
            +
                },
         
     | 
| 
      
 13 
     | 
    
         
            +
                avatar: {
         
     | 
| 
      
 14 
     | 
    
         
            +
                  name: "Avatar",
         
     | 
| 
      
 15 
     | 
    
         
            +
                  class_name: "Essence::Avatar",
         
     | 
| 
      
 16 
     | 
    
         
            +
                  stimulus: false
         
     | 
| 
      
 17 
     | 
    
         
            +
                },
         
     | 
| 
      
 18 
     | 
    
         
            +
                badge: {
         
     | 
| 
      
 19 
     | 
    
         
            +
                  name: "Badge",
         
     | 
| 
      
 20 
     | 
    
         
            +
                  class_name: "Essence::Badge",
         
     | 
| 
      
 21 
     | 
    
         
            +
                  stimulus: false
         
     | 
| 
      
 22 
     | 
    
         
            +
                },
         
     | 
| 
      
 23 
     | 
    
         
            +
                button: {
         
     | 
| 
      
 24 
     | 
    
         
            +
                  name: "Button",
         
     | 
| 
      
 25 
     | 
    
         
            +
                  class_name: "Essence::Button",
         
     | 
| 
      
 26 
     | 
    
         
            +
                  stimulus: false
         
     | 
| 
      
 27 
     | 
    
         
            +
                },
         
     | 
| 
      
 28 
     | 
    
         
            +
                checkbox: {
         
     | 
| 
      
 29 
     | 
    
         
            +
                  name: "Checkbox",
         
     | 
| 
      
 30 
     | 
    
         
            +
                  class_name: "Essence::Checkbox",
         
     | 
| 
      
 31 
     | 
    
         
            +
                  stimulus: false
         
     | 
| 
      
 32 
     | 
    
         
            +
                },
         
     | 
| 
      
 33 
     | 
    
         
            +
                heading: {
         
     | 
| 
      
 34 
     | 
    
         
            +
                  name: "Heading",
         
     | 
| 
      
 35 
     | 
    
         
            +
                  class_name: "Essence::Heading",
         
     | 
| 
      
 36 
     | 
    
         
            +
                  stimulus: false
         
     | 
| 
      
 37 
     | 
    
         
            +
                },
         
     | 
| 
      
 38 
     | 
    
         
            +
                label: {
         
     | 
| 
      
 39 
     | 
    
         
            +
                  name: "Label",
         
     | 
| 
      
 40 
     | 
    
         
            +
                  class_name: "Essence::Label",
         
     | 
| 
      
 41 
     | 
    
         
            +
                  stimulus: false
         
     | 
| 
      
 42 
     | 
    
         
            +
                },
         
     | 
| 
      
 43 
     | 
    
         
            +
                input: {
         
     | 
| 
      
 44 
     | 
    
         
            +
                  name: "Input",
         
     | 
| 
      
 45 
     | 
    
         
            +
                  class_name: "Essence::Input",
         
     | 
| 
      
 46 
     | 
    
         
            +
                  stimulus: false
         
     | 
| 
      
 47 
     | 
    
         
            +
                },
         
     | 
| 
      
 48 
     | 
    
         
            +
                link: {
         
     | 
| 
      
 49 
     | 
    
         
            +
                  name: "Link",
         
     | 
| 
      
 50 
     | 
    
         
            +
                  class_name: "Essence::Link",
         
     | 
| 
      
 51 
     | 
    
         
            +
                  stimulus: false
         
     | 
| 
      
 52 
     | 
    
         
            +
                },
         
     | 
| 
      
 53 
     | 
    
         
            +
                metric: {
         
     | 
| 
      
 54 
     | 
    
         
            +
                  name: "Metric",
         
     | 
| 
      
 55 
     | 
    
         
            +
                  class_name: "Essence::Metric",
         
     | 
| 
      
 56 
     | 
    
         
            +
                  stimulus: false
         
     | 
| 
      
 57 
     | 
    
         
            +
                },
         
     | 
| 
      
 58 
     | 
    
         
            +
                row: {
         
     | 
| 
      
 59 
     | 
    
         
            +
                  name: "Row",
         
     | 
| 
      
 60 
     | 
    
         
            +
                  class_name: "Essence::Row",
         
     | 
| 
      
 61 
     | 
    
         
            +
                  stimulus: false
         
     | 
| 
      
 62 
     | 
    
         
            +
                },
         
     | 
| 
      
 63 
     | 
    
         
            +
                separator: {
         
     | 
| 
      
 64 
     | 
    
         
            +
                  name: "Separator",
         
     | 
| 
      
 65 
     | 
    
         
            +
                  class_name: "Essence::Separator",
         
     | 
| 
      
 66 
     | 
    
         
            +
                  stimulus: false
         
     | 
| 
      
 67 
     | 
    
         
            +
                },
         
     | 
| 
      
 68 
     | 
    
         
            +
                skeleton: {
         
     | 
| 
      
 69 
     | 
    
         
            +
                  name: "Skeleton",
         
     | 
| 
      
 70 
     | 
    
         
            +
                  class_name: "Essence::Skeleton",
         
     | 
| 
      
 71 
     | 
    
         
            +
                  stimulus: false
         
     | 
| 
      
 72 
     | 
    
         
            +
                },
         
     | 
| 
      
 73 
     | 
    
         
            +
                switch: {
         
     | 
| 
      
 74 
     | 
    
         
            +
                  name: "Switch",
         
     | 
| 
      
 75 
     | 
    
         
            +
                  class_name: "Essence::Switch",
         
     | 
| 
      
 76 
     | 
    
         
            +
                  stimulus: true
         
     | 
| 
      
 77 
     | 
    
         
            +
                },
         
     | 
| 
      
 78 
     | 
    
         
            +
                tabs: {
         
     | 
| 
      
 79 
     | 
    
         
            +
                  name: "Tabs",
         
     | 
| 
      
 80 
     | 
    
         
            +
                  class_name: "Essence::Tabs",
         
     | 
| 
      
 81 
     | 
    
         
            +
                  stimulus: true
         
     | 
| 
      
 82 
     | 
    
         
            +
                },
         
     | 
| 
      
 83 
     | 
    
         
            +
                text: {
         
     | 
| 
      
 84 
     | 
    
         
            +
                  name: "Text",
         
     | 
| 
      
 85 
     | 
    
         
            +
                  class_name: "Essence::Text",
         
     | 
| 
      
 86 
     | 
    
         
            +
                  stimulus: false
         
     | 
| 
      
 87 
     | 
    
         
            +
                }
         
     | 
| 
      
 88 
     | 
    
         
            +
              }
         
     | 
| 
      
 89 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,32 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import { Controller } from "@hotwired/stimulus";
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            export default class extends Controller {
         
     | 
| 
      
 4 
     | 
    
         
            +
              static targets = ["input", "lever"];
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              static classes = ["active", "inactive", "activeLever", "inactiveLever"];
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              static values = {
         
     | 
| 
      
 9 
     | 
    
         
            +
                checked: {
         
     | 
| 
      
 10 
     | 
    
         
            +
                  type: Boolean,
         
     | 
| 
      
 11 
     | 
    
         
            +
                  default: false,
         
     | 
| 
      
 12 
     | 
    
         
            +
                },
         
     | 
| 
      
 13 
     | 
    
         
            +
              };
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              connect() {
         
     | 
| 
      
 16 
     | 
    
         
            +
                if (this.checkedValue) this.toggle();
         
     | 
| 
      
 17 
     | 
    
         
            +
              }
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              toggle(event) {
         
     | 
| 
      
 20 
     | 
    
         
            +
                this.element.ariaChecked =
         
     | 
| 
      
 21 
     | 
    
         
            +
                  this.element.ariaChecked == "true" ? false : true;
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                if (this.hasInputTarget)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  this.inputTarget.value = this.element.ariaChecked == "true";
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                this.element.classList.toggle(...this.activeClasses);
         
     | 
| 
      
 27 
     | 
    
         
            +
                this.element.classList.toggle(...this.inactiveClasses);
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                this.leverTarget.classList.toggle(...this.activeLeverClasses);
         
     | 
| 
      
 30 
     | 
    
         
            +
                this.leverTarget.classList.toggle(...this.inactiveLeverClasses);
         
     | 
| 
      
 31 
     | 
    
         
            +
              }
         
     | 
| 
      
 32 
     | 
    
         
            +
            }
         
     | 
    
        data/lib/essence/version.rb
    CHANGED
    
    
    
        data/lib/essence.rb
    CHANGED
    
    | 
         @@ -3,20 +3,9 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            require "tailwind_merge"
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            require_relative "essence/configuration"
         
     | 
| 
      
 6 
     | 
    
         
            +
            require_relative "essence/definitions"
         
     | 
| 
       6 
7 
     | 
    
         | 
| 
       7 
8 
     | 
    
         
             
            module Essence
         
     | 
| 
       8 
     | 
    
         
            -
              # Autoloading
         
     | 
| 
       9 
     | 
    
         
            -
              # Components
         
     | 
| 
       10 
     | 
    
         
            -
              autoload :Accordion, "essence/components/accordion"
         
     | 
| 
       11 
     | 
    
         
            -
              autoload :Avatar, "essence/components/avatar"
         
     | 
| 
       12 
     | 
    
         
            -
              autoload :Badge, "essence/components/badge"
         
     | 
| 
       13 
     | 
    
         
            -
              autoload :Button, "essence/components/button"
         
     | 
| 
       14 
     | 
    
         
            -
              # autoload :Essence, "essence/components/essence" # Base component
         
     | 
| 
       15 
     | 
    
         
            -
              autoload :Link, "essence/components/link"
         
     | 
| 
       16 
     | 
    
         
            -
              autoload :Row, "essence/components/row"
         
     | 
| 
       17 
     | 
    
         
            -
              autoload :Skeleton, "essence/components/skeleton"
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
              # CLI
         
     | 
| 
       20 
9 
     | 
    
         
             
              autoload :CLI, "essence/cli"
         
     | 
| 
       21 
10 
     | 
    
         | 
| 
       22 
11 
     | 
    
         
             
              class << self
         
     | 
| 
         @@ -33,6 +22,10 @@ module Essence 
     | 
|
| 
       33 
22 
     | 
    
         
             
                  yield configuration
         
     | 
| 
       34 
23 
     | 
    
         
             
                end
         
     | 
| 
       35 
24 
     | 
    
         | 
| 
      
 25 
     | 
    
         
            +
                def definitions
         
     | 
| 
      
 26 
     | 
    
         
            +
                  @definitions ||= Essence::DEFINITIONS
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
       36 
29 
     | 
    
         
             
                # COMPONENTS
         
     | 
| 
       37 
30 
     | 
    
         
             
                def components
         
     | 
| 
       38 
31 
     | 
    
         
             
                  @components ||= {
         
     | 
| 
         @@ -41,6 +34,11 @@ module Essence 
     | 
|
| 
       41 
34 
     | 
    
         
             
                      class_name: "Essence::Accordion",
         
     | 
| 
       42 
35 
     | 
    
         
             
                      stimulus: false
         
     | 
| 
       43 
36 
     | 
    
         
             
                    },
         
     | 
| 
      
 37 
     | 
    
         
            +
                    alert: {
         
     | 
| 
      
 38 
     | 
    
         
            +
                      name: "Alert",
         
     | 
| 
      
 39 
     | 
    
         
            +
                      class_name: "Essence::Alert",
         
     | 
| 
      
 40 
     | 
    
         
            +
                      stimulus: false
         
     | 
| 
      
 41 
     | 
    
         
            +
                    },
         
     | 
| 
       44 
42 
     | 
    
         
             
                    avatar: {
         
     | 
| 
       45 
43 
     | 
    
         
             
                      name: "Avatar",
         
     | 
| 
       46 
44 
     | 
    
         
             
                      class_name: "Essence::Avatar",
         
     | 
| 
         @@ -56,21 +54,51 @@ module Essence 
     | 
|
| 
       56 
54 
     | 
    
         
             
                      class_name: "Essence::Button",
         
     | 
| 
       57 
55 
     | 
    
         
             
                      stimulus: false
         
     | 
| 
       58 
56 
     | 
    
         
             
                    },
         
     | 
| 
      
 57 
     | 
    
         
            +
                    checkbox: {
         
     | 
| 
      
 58 
     | 
    
         
            +
                      name: "Checkbox",
         
     | 
| 
      
 59 
     | 
    
         
            +
                      class_name: "Essence::Checkbox",
         
     | 
| 
      
 60 
     | 
    
         
            +
                      stimulus: false
         
     | 
| 
      
 61 
     | 
    
         
            +
                    },
         
     | 
| 
      
 62 
     | 
    
         
            +
                    label: {
         
     | 
| 
      
 63 
     | 
    
         
            +
                      name: "Label",
         
     | 
| 
      
 64 
     | 
    
         
            +
                      class_name: "Essence::Label",
         
     | 
| 
      
 65 
     | 
    
         
            +
                      stimulus: false
         
     | 
| 
      
 66 
     | 
    
         
            +
                    },
         
     | 
| 
      
 67 
     | 
    
         
            +
                    input: {
         
     | 
| 
      
 68 
     | 
    
         
            +
                      name: "Input",
         
     | 
| 
      
 69 
     | 
    
         
            +
                      class_name: "Essence::Input",
         
     | 
| 
      
 70 
     | 
    
         
            +
                      stimulus: false
         
     | 
| 
      
 71 
     | 
    
         
            +
                    },
         
     | 
| 
       59 
72 
     | 
    
         
             
                    link: {
         
     | 
| 
       60 
73 
     | 
    
         
             
                      name: "Link",
         
     | 
| 
       61 
74 
     | 
    
         
             
                      class_name: "Essence::Link",
         
     | 
| 
       62 
75 
     | 
    
         
             
                      stimulus: false
         
     | 
| 
       63 
76 
     | 
    
         
             
                    },
         
     | 
| 
      
 77 
     | 
    
         
            +
                    metric: {
         
     | 
| 
      
 78 
     | 
    
         
            +
                      name: "Metric",
         
     | 
| 
      
 79 
     | 
    
         
            +
                      class_name: "Essence::Metric",
         
     | 
| 
      
 80 
     | 
    
         
            +
                      stimulus: false
         
     | 
| 
      
 81 
     | 
    
         
            +
                    },
         
     | 
| 
       64 
82 
     | 
    
         
             
                    row: {
         
     | 
| 
       65 
83 
     | 
    
         
             
                      name: "Row",
         
     | 
| 
       66 
84 
     | 
    
         
             
                      class_name: "Essence::Row",
         
     | 
| 
       67 
85 
     | 
    
         
             
                      stimulus: false
         
     | 
| 
       68 
86 
     | 
    
         
             
                    },
         
     | 
| 
      
 87 
     | 
    
         
            +
                    separator: {
         
     | 
| 
      
 88 
     | 
    
         
            +
                      name: "Separator",
         
     | 
| 
      
 89 
     | 
    
         
            +
                      class_name: "Essence::Separator",
         
     | 
| 
      
 90 
     | 
    
         
            +
                      stimulus: false
         
     | 
| 
      
 91 
     | 
    
         
            +
                    },
         
     | 
| 
       69 
92 
     | 
    
         
             
                    skeleton: {
         
     | 
| 
       70 
93 
     | 
    
         
             
                      name: "Skeleton",
         
     | 
| 
       71 
94 
     | 
    
         
             
                      class_name: "Essence::Skeleton",
         
     | 
| 
       72 
95 
     | 
    
         
             
                      stimulus: false
         
     | 
| 
       73 
96 
     | 
    
         
             
                    },
         
     | 
| 
      
 97 
     | 
    
         
            +
                    switch: {
         
     | 
| 
      
 98 
     | 
    
         
            +
                      name: "Switch",
         
     | 
| 
      
 99 
     | 
    
         
            +
                      class_name: "Essence::Switch",
         
     | 
| 
      
 100 
     | 
    
         
            +
                      stimulus: true
         
     | 
| 
      
 101 
     | 
    
         
            +
                    },
         
     | 
| 
       74 
102 
     | 
    
         
             
                    tabs: {
         
     | 
| 
       75 
103 
     | 
    
         
             
                      name: "Tabs",
         
     | 
| 
       76 
104 
     | 
    
         
             
                      class_name: "Essence::Tabs",
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,15 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: essence
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.4.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Elvinas Predkelis
         
     | 
| 
       8 
     | 
    
         
            -
            - Primevise
         
     | 
| 
       9 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       10 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       11 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2025- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2025-04-15 00:00:00.000000000 Z
         
     | 
| 
       13 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
14 
     | 
    
         
             
              name: dry-cli
         
     | 
| 
         @@ -61,14 +60,13 @@ dependencies: 
     | 
|
| 
       61 
60 
     | 
    
         
             
                    version: 0.13.3
         
     | 
| 
       62 
61 
     | 
    
         
             
            description: Component library for Ruby applications using Phlex
         
     | 
| 
       63 
62 
     | 
    
         
             
            email:
         
     | 
| 
       64 
     | 
    
         
            -
            -  
     | 
| 
      
 63 
     | 
    
         
            +
            - elvinas@primevise.com
         
     | 
| 
       65 
64 
     | 
    
         
             
            executables:
         
     | 
| 
       66 
65 
     | 
    
         
             
            - essence
         
     | 
| 
       67 
66 
     | 
    
         
             
            extensions: []
         
     | 
| 
       68 
67 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       69 
68 
     | 
    
         
             
            files:
         
     | 
| 
       70 
69 
     | 
    
         
             
            - README.md
         
     | 
| 
       71 
     | 
    
         
            -
            - essence/stimulus/tabs_controller.js
         
     | 
| 
       72 
70 
     | 
    
         
             
            - exe/essence
         
     | 
| 
       73 
71 
     | 
    
         
             
            - lib/essence.rb
         
     | 
| 
       74 
72 
     | 
    
         
             
            - lib/essence/cli.rb
         
     | 
| 
         @@ -76,17 +74,29 @@ files: 
     | 
|
| 
       76 
74 
     | 
    
         
             
            - lib/essence/cli/install.rb
         
     | 
| 
       77 
75 
     | 
    
         
             
            - lib/essence/cli/version.rb
         
     | 
| 
       78 
76 
     | 
    
         
             
            - lib/essence/components/accordion.rb
         
     | 
| 
      
 77 
     | 
    
         
            +
            - lib/essence/components/alert.rb
         
     | 
| 
       79 
78 
     | 
    
         
             
            - lib/essence/components/avatar.rb
         
     | 
| 
       80 
79 
     | 
    
         
             
            - lib/essence/components/badge.rb
         
     | 
| 
       81 
80 
     | 
    
         
             
            - lib/essence/components/button.rb
         
     | 
| 
      
 81 
     | 
    
         
            +
            - lib/essence/components/checkbox.rb
         
     | 
| 
       82 
82 
     | 
    
         
             
            - lib/essence/components/dialog.rb
         
     | 
| 
       83 
83 
     | 
    
         
             
            - lib/essence/components/dropdown.rb
         
     | 
| 
       84 
84 
     | 
    
         
             
            - lib/essence/components/essence.rb
         
     | 
| 
      
 85 
     | 
    
         
            +
            - lib/essence/components/heading.rb
         
     | 
| 
      
 86 
     | 
    
         
            +
            - lib/essence/components/input.rb
         
     | 
| 
      
 87 
     | 
    
         
            +
            - lib/essence/components/label.rb
         
     | 
| 
       85 
88 
     | 
    
         
             
            - lib/essence/components/link.rb
         
     | 
| 
      
 89 
     | 
    
         
            +
            - lib/essence/components/metric.rb
         
     | 
| 
       86 
90 
     | 
    
         
             
            - lib/essence/components/row.rb
         
     | 
| 
      
 91 
     | 
    
         
            +
            - lib/essence/components/separator.rb
         
     | 
| 
       87 
92 
     | 
    
         
             
            - lib/essence/components/skeleton.rb
         
     | 
| 
      
 93 
     | 
    
         
            +
            - lib/essence/components/switch.rb
         
     | 
| 
       88 
94 
     | 
    
         
             
            - lib/essence/components/tabs.rb
         
     | 
| 
      
 95 
     | 
    
         
            +
            - lib/essence/components/text.rb
         
     | 
| 
       89 
96 
     | 
    
         
             
            - lib/essence/configuration.rb
         
     | 
| 
      
 97 
     | 
    
         
            +
            - lib/essence/definitions.rb
         
     | 
| 
      
 98 
     | 
    
         
            +
            - lib/essence/stimulus/switch_controller.js
         
     | 
| 
      
 99 
     | 
    
         
            +
            - lib/essence/stimulus/tabs_controller.js
         
     | 
| 
       90 
100 
     | 
    
         
             
            - lib/essence/version.rb
         
     | 
| 
       91 
101 
     | 
    
         
             
            homepage: https://rubygems.org/gems/essence
         
     | 
| 
       92 
102 
     | 
    
         
             
            licenses:
         
     | 
| 
         
            File without changes
         
     |