essence 0.2.0 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 41a46dd9be7eb9ea84ba3ca4ad2f3a20333154644472673c347117bd6fb6b652
4
- data.tar.gz: 3fd04819b2f327760571d3ec200a7300c45b7a4d7627b425e969a6999a051925
3
+ metadata.gz: f9be2e0f4b7e7288c5cf845c54d67988f472a967ebdd04b6d01ac790c1d1c7a4
4
+ data.tar.gz: f1ebff9a5f1f108042f48f3241edc2cd5d8998d9605b20d6e52bed3b338219dc
5
5
  SHA512:
6
- metadata.gz: 5688120d6baf34e1de5049978bd7a8b63f18bfd9dae45ab8acfbe3096b42f36168c5408502e7d4fc24bdafb4cda29fa1e7db77469fc3b6cd297ec685e89bb0a7
7
- data.tar.gz: 9067b68f43129af1e0d5e4398b1d3682cf10bb05b0e06898ba708cec4d79e531e00129998a4697306c1b229fb139f33b985980c6216129a04279c1d02fb8e4d9
6
+ metadata.gz: 067d0df4723dd420b5100d7c21c417f37e959e62e325154fcd3671a22b3b919d51720e6b6a911233a8791065d0a3a93a9b931c0111b5e4b90454aa6c8648b80c
7
+ data.tar.gz: 06d8732651332803411614ae867fd3e78ae226853992fd3d0367bc441054925d6647d4c2151d0c3e0af4b24990b8a24891c8042f816789cd454cda9f5197e03d
data/README.md CHANGED
@@ -2,11 +2,53 @@
2
2
 
3
3
  A simple, ergonomic and performant component library for Ruby applications.
4
4
 
5
+ <a href="https://rubygems.org/gems/essence">
6
+ <img alt="Essence GEM Version" src="https://img.shields.io/gem/v/essence?color=10b981&include_prereleases&logo=ruby&logoColor=f43f5e">
7
+ </a>
8
+
9
+ <a href="https://rubygems.org/gems/essence">
10
+ <img alt="Essence GEM Version" src="https://img.shields.io/gem/dt/essence?color=10b981&include_prereleases&logo=ruby&logoColor=f43f5e">
11
+ </a>
12
+
13
+ ---
14
+
15
+ ### Features
16
+
17
+ - Tailored components - Designed using flexibility in mind while streamlining the development process
18
+ - Gorgeous simplicity - Essence empowers minimalistic user interface with purposeful accents
19
+ - Geared for performance - Keep everything in one place. No spreadsheets or getting lost between tooling
20
+ - Ergonomic approach - Essence is designed to be easy to use and understand
21
+
5
22
  ---
6
23
 
7
24
  ## Installation
8
25
 
9
- TBA
26
+ #### Add gem
27
+
28
+ Simply add the gem to your Gemfile by running the following command
29
+
30
+ ```bash
31
+ bundle add essence
32
+ ```
33
+
34
+ #### Install Essence
35
+
36
+ Run the installation command and we'll take care of the rest
37
+
38
+ ```bash
39
+ bundle exec essence install
40
+ ```
41
+
42
+ More information on about the installation can be found in the [documentation](https://essence.primevise.com/installation)
43
+
44
+ ## Who uses Essence?
45
+
46
+ - [Mintis](https://mintis.app)
47
+ - [Hansa](https://hansahq.com)
48
+ - [Release Server](https://releaseserver.com)
49
+ - [College Life Work](https://work.collegelife.co)
50
+
51
+ Do you use Essence in your project? Let us know!
10
52
 
11
53
  ## Licence
12
54
 
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Essence::Avatar < Essence::Essence
4
+ BASE = "border border-transparent rounded-full bg-gray-100 aspect-square inline-flex items-center justify-center font-medium text-gray-700 overflow-hidden"
5
+
6
+ SIZES = {
7
+ sm: "size-6 text-[0.5rem]",
8
+ md: "size-8 text-xs",
9
+ lg: "size-12 text-sm"
10
+ }
11
+
12
+ attr_reader :attributes
13
+ attr_reader :size
14
+
15
+ def initialize(size: :md, **attributes)
16
+ @size = size
17
+ @attributes = attributes
18
+ @attributes[:class] = construct_classes(@attributes[:class])
19
+ end
20
+
21
+ def view_template(&)
22
+ div(**attributes) do
23
+ img(src: attributes[:src], alt: attributes[:alt]) if attributes[:src]
24
+ yield if block_given?
25
+ end
26
+ end
27
+
28
+ def fallback(**attrs, &)
29
+ div(**attrs, &)
30
+ end
31
+
32
+ def construct_classes(classes)
33
+ TAILWIND_MERGER.merge([ BASE, SIZES[size], classes ].compact)
34
+ end
35
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Essence::Badge < Essence::Essence
4
+ BASE = "inline-flex items-center justify-center w-fit rounded-full border border-transparent font-medium transition duration-150 hover:opacity-90"
5
+ SIZES = {
6
+ none: "",
7
+ sm: "text-[0.65rem] px-2 py-0.5 gap-1 min-w-8",
8
+ md: "text-xs px-2.5 py-1 gap-2 min-w-12",
9
+ lg: "text-sm px-4 py-1 gap-2 min-w-16"
10
+ }
11
+ KINDS = {
12
+ primary: "text-gray-900 border-gray-200",
13
+ success: "text-white bg-emerald-500",
14
+ critical: "text-white bg-rose-500",
15
+ warning: "text-white bg-amber-500",
16
+ info: "text-white bg-blue-500",
17
+ dark: "text-white bg-gray-900",
18
+ white: "text-gray-900 bg-white"
19
+ }
20
+
21
+ attr_reader :size
22
+ attr_reader :kind
23
+ attr_reader :attributes
24
+
25
+ def initialize(size: :md, kind: :primary, **attributes)
26
+ @size = size
27
+ @kind = kind
28
+ @attributes = attributes
29
+ @attributes[:class] = construct_classes(@attributes[:class])
30
+ end
31
+
32
+ def view_template(&)
33
+ div(**attributes, &)
34
+ end
35
+
36
+ private
37
+
38
+ def construct_classes(classes)
39
+ TAILWIND_MERGER.merge([ BASE, SIZES[size], KINDS[kind], classes ].compact)
40
+ end
41
+ end
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Essence::Button < Essence::Essence
4
- BASE = "inline-flex items-center rounded-xs border border-transparent font-medium transition duration-150 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed hover:opacity-90"
5
-
4
+ BASE = "inline-flex items-center justify-center w-fit rounded-xs border border-transparent font-medium transition duration-150 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed hover:opacity-90"
6
5
  SIZES = {
7
6
  none: "",
8
7
  xs: "text-[0.6rem] px-2 py-1.5 gap-1",
@@ -11,7 +10,6 @@ class Essence::Button < Essence::Essence
11
10
  lg: "text-base px-6 py-2.5 gap-2.5",
12
11
  xl: "text-base px-8 py-3 gap-3"
13
12
  }
14
-
15
13
  KINDS = {
16
14
  primary: "text-white bg-indigo-500 hover:bg-indigo-500",
17
15
  secondary: "text-gray-700 bg-gray-100 hover:bg-gray-200",
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Essence::Link < Essence::Essence
4
- CLASS = "inline-flex items-center gap-1 font-medium text-gray-900 border-b-2 hover:border-gray-900 transition-colors"
4
+ BASE = "inline-flex w-fit items-center gap-1 font-medium text-gray-900 border-b-2 hover:border-gray-900 transition-colors"
5
5
  KINDS = {
6
6
  regular: "border-transparent",
7
7
  underline: "border-gray-200"
@@ -11,7 +11,7 @@ class Essence::Link < Essence::Essence
11
11
 
12
12
  def initialize(kind: :regular, **attributes)
13
13
  @attributes = attributes
14
- @attributes[:class] = @attributes[:class] ? TAILWIND_MERGER.merge([ CLASS, @attributes[:class] ]) : CLASS
14
+ @attributes[:class] = @attributes[:class] ? TAILWIND_MERGER.merge([ BASE, @attributes[:class] ]) : BASE
15
15
  end
16
16
 
17
17
  def view_template(&)
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Essence::Row < Essence::Essence
4
- CLASS = "flex gap-4"
5
-
4
+ BASE = "flex gap-4"
6
5
  KINDS = {
7
6
  default: "flex-col md:flex-row md:items-center md:justify-between",
8
7
  center: "flex-col md:flex-row md:items-center md:justify-center",
@@ -16,7 +15,7 @@ class Essence::Row < Essence::Essence
16
15
  def initialize(kind: :default, **attributes)
17
16
  @kind = kind
18
17
  @attributes = attributes
19
- @attributes[:class] = @attributes[:class] ? TAILWIND_MERGER.merge([ CLASS, KINDS[kind], @attributes[:class] ]) : CLASS
18
+ @attributes[:class] = @attributes[:class] ? TAILWIND_MERGER.merge([ BASE, KINDS[kind], @attributes[:class] ]) : BASE
20
19
  end
21
20
 
22
21
  def view_template(&)
@@ -24,6 +23,6 @@ class Essence::Row < Essence::Essence
24
23
  end
25
24
 
26
25
  def item(**attrs, &)
27
- div(class: TAILWIND_MERGER.merge([ "flex items-center gap-2 flex-wrap", iattrs[:class] ]), **attrs, &)
26
+ div(class: TAILWIND_MERGER.merge([ "flex items-center gap-2 flex-wrap", attrs[:class] ]), **attrs, &)
28
27
  end
29
28
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Essence::Skeleton < Essence::Essence
4
- CLASSES = "animate-pulse bg-gray-200/55 rounded-xs"
4
+ BASE = "animate-pulse bg-gray-200/55 rounded-xs"
5
5
 
6
6
  def initialize(**attributes)
7
7
  @attributes = attributes
8
- @attributes[:class] = @attributes[:class] ? TAILWIND_MERGER.merge([ CLASSES, @attributes[:class] ]) : CLASSES
8
+ @attributes[:class] = @attributes[:class] ? TAILWIND_MERGER.merge([ BASE, @attributes[:class] ]) : BASE
9
9
  end
10
10
 
11
11
  def view_template(&)
@@ -1,3 +1,3 @@
1
1
  module Essence
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.2"
3
3
  end
data/lib/essence.rb CHANGED
@@ -4,12 +4,13 @@ require "tailwind_merge"
4
4
 
5
5
  module Essence
6
6
  # Autoloading
7
- autoload :Component, "essence/components/component"
8
-
7
+ autoload :Avatar, "essence/components/avatar"
8
+ autoload :Badge, "essence/components/badge"
9
9
  autoload :Button, "essence/components/button"
10
+ # autoload :Essence, "essence/components/essence" # Base component
10
11
  autoload :Link, "essence/components/link"
11
- autoload :Skeleton, "essence/components/skeleton"
12
12
  autoload :Row, "essence/components/row"
13
+ autoload :Skeleton, "essence/components/skeleton"
13
14
 
14
15
  autoload :CLI, "essence/cli"
15
16
 
@@ -19,20 +20,24 @@ module Essence
19
20
  def self.component_class_names
20
21
  @component_class_names ||= {
21
22
  essence: "Essence::Essence",
23
+ avatar: "Essence::Avatar",
24
+ badge: "Essence::Badge",
22
25
  button: "Essence::Button",
23
26
  link: "Essence::Link",
24
- skeleton: "Essence::Skeleton",
25
27
  row: "Essence::Row",
28
+ skeleton: "Essence::Skeleton",
26
29
  }
27
30
  end
28
31
 
29
32
  def self.component_classes
30
33
  @components_classes ||= {
31
34
  essence: ::Essence::Essence,
35
+ avatar: ::Essence::Avatar,
36
+ badge: ::Essence::Badge,
32
37
  button: ::Essence::Button,
33
38
  link: ::Essence::Link,
34
- skeleton: ::Essence::Skeleton,
35
39
  row: ::Essence::Row,
40
+ skeleton: ::Essence::Skeleton,
36
41
  }
37
42
  end
38
43
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: essence
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elvinas Predkelis
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2024-12-18 00:00:00.000000000 Z
12
+ date: 2024-12-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: dry-cli
@@ -74,6 +74,8 @@ files:
74
74
  - lib/essence/cli/add.rb
75
75
  - lib/essence/cli/install.rb
76
76
  - lib/essence/cli/version.rb
77
+ - lib/essence/components/avatar.rb
78
+ - lib/essence/components/badge.rb
77
79
  - lib/essence/components/button.rb
78
80
  - lib/essence/components/essence.rb
79
81
  - lib/essence/components/link.rb