phlex_ui 0.0.3 → 0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 96bee30ae4924b1a8300df9b2ca4322877078a064d4b1326f9c4c43d184461f1
4
- data.tar.gz: b3739fab746cef0e2ec75b736b4b92c4ae14daa6071ff4afc07972ecc4db5b42
3
+ metadata.gz: 2e94d694e97786f20a88cc28497e9fbda569229a4b60688745e1faef5bb6a794
4
+ data.tar.gz: 3c06ca211012a28ad741ec3d66db56c7ecde93e637d07b24e2da5f987c759eef
5
5
  SHA512:
6
- metadata.gz: aafde25ef57c8477bcfd5cb6f8c3610b9a806bf386fd7947e03943ad665edd893c2a8946e08eb22a97904092ff19813ab66e7b079c5a60ddf0ac5d5faceb31eb
7
- data.tar.gz: a60fe88f9f889563d5ddbc8c8e2f316ecfbf74916547ba370e8bb37a4d6ba33866fc750898325fb83cedeb4b05629b35275c1856dbec4c9aaef00d036010017d
6
+ metadata.gz: e45505146ef033bef4bc13725b1abc4dd450ca5f9b0a76981a109570044f50c68523dc4cd48aa69b0e9731e6ce5a7497788a08341012e2ea583ae9eab1fdae2e
7
+ data.tar.gz: 197a7019398397c7cff18c24c5e0a5822f183d98ef9ac6f7852f0ccb782f70653941ac3eda20eeb40015303d34b6291a171b9d1777ac68d8ce32a8e2774cff72
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PhlexUI
4
+ class Accordion::Content < Base
5
+ def template(&)
6
+ div(**attrs, &)
7
+ end
8
+
9
+ private
10
+
11
+ def default_attrs
12
+ {
13
+ data: {
14
+ accordion_target: "content"
15
+ },
16
+ class: 'overflow-y-hidden',
17
+ style: 'height: 0px;'
18
+ }
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PhlexUI
4
+ class Accordion::DefaultContent < Base
5
+ def template(&)
6
+ div(**attrs, &)
7
+ end
8
+
9
+ private
10
+
11
+ def default_attrs
12
+ {
13
+ class: 'pb-4 pt-0 text-sm'
14
+ }
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PhlexUI
4
+ class Accordion::DefaultTrigger < Base
5
+ def template(&)
6
+ div(class: "flex items-center justify-between w-full") do
7
+ p(&)
8
+ render ::PhlexUI::Accordion::Icon.new
9
+ end
10
+ end
11
+
12
+ def default_attrs
13
+ {
14
+ data: { action: "click->accordion#toggle" },
15
+ class: 'w-full flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline'
16
+ }
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PhlexUI
4
+ class Accordion::Icon < Base
5
+ def template(&block)
6
+ span(**attrs) do
7
+ if block
8
+ block.call
9
+ else
10
+ icon
11
+ end
12
+ end
13
+ end
14
+
15
+ def icon
16
+ svg(
17
+ xmlns: "http://www.w3.org/2000/svg",
18
+ viewbox: "0 0 20 20",
19
+ fill: "currentColor",
20
+ class: "w-4 h-4"
21
+ ) do |s|
22
+ s.path(
23
+ fill_rule: "evenodd",
24
+ d:
25
+ "M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z",
26
+ clip_rule: "evenodd"
27
+ )
28
+ end
29
+ end
30
+
31
+ def default_attrs
32
+ {
33
+ class: 'opacity-50',
34
+ data: { accordion_target: "icon" },
35
+ }
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PhlexUI
4
+ class Accordion::Item < Base
5
+ def initialize(open: false, rotate_icon: 180, **attrs)
6
+ @open = open
7
+ @rotate_icon = rotate_icon
8
+ super(**attrs)
9
+ end
10
+
11
+ def template(&)
12
+ div(**attrs, &)
13
+ end
14
+
15
+ private
16
+
17
+ def default_attrs
18
+ {
19
+ data: {
20
+ controller: "accordion",
21
+ accordion_open_value: @open,
22
+ accordion_rotate_icon_value: @rotate_icon
23
+ },
24
+ class: 'border-b'
25
+ }
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PhlexUI
4
+ class Accordion::Trigger < Base
5
+ def template(&)
6
+ button(**attrs, &)
7
+ end
8
+
9
+ def default_attrs
10
+ {
11
+ data: { action: "click->accordion#toggle" },
12
+ class: 'w-full flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline'
13
+ }
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PhlexUI
4
+ class Accordion < Base
5
+ def template(&)
6
+ div(**attrs, &)
7
+ end
8
+
9
+ def add_item(title, content, open: false)
10
+ render Accordion::Item.new(open: open) do
11
+ render PhlexUI::Accordion::Trigger.new do
12
+ render PhlexUI::Accordion::DefaultTrigger.new { title }
13
+ end
14
+ render PhlexUI::Accordion::Content.new do
15
+ render PhlexUI::Accordion::DefaultContent.new { content }
16
+ end
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ def default_attrs
23
+ {
24
+ class: 'w-full'
25
+ }
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,75 @@
1
+ module PhlexUI
2
+ class AttributeMerger
3
+ attr_reader :default_attrs, :user_attrs
4
+ OVERRIDE_KEY = '!'.freeze
5
+
6
+ def initialize(default_attrs, user_attrs)
7
+ @default_attrs = flatten_hash(default_attrs)
8
+ @user_attrs = flatten_hash(user_attrs)
9
+ end
10
+
11
+ def call
12
+ merged_attrs = merge_hashes(default_attrs, non_override_attrs)
13
+ mix(merged_attrs, override_attrs)
14
+ end
15
+
16
+ private
17
+
18
+ # @return [Hash]
19
+ def mix(*args)
20
+ args.each_with_object({}) do |object, result|
21
+ result.merge!(object) do |_key, old, new|
22
+ case new
23
+ when Hash
24
+ old.is_a?(Hash) ? mix(old, new) : new
25
+ when Array
26
+ old.is_a?(Array) ? (old + new) : new
27
+ when String
28
+ old.is_a?(String) ? "#{old} #{new}" : new
29
+ else
30
+ new
31
+ end
32
+ end
33
+
34
+ result.transform_keys! do |key|
35
+ key.end_with?("!") ? key.name.chop.to_sym : key
36
+ end
37
+ end
38
+ end
39
+
40
+ def override_attrs
41
+ user_attrs.select do |key, value|
42
+ key.to_s.include?(OVERRIDE_KEY)
43
+ end
44
+ end
45
+
46
+ def non_override_attrs
47
+ user_attrs.reject do |key, value|
48
+ key.to_s.include?(OVERRIDE_KEY)
49
+ end
50
+ end
51
+
52
+ def flatten_hash(hash, parent_key = '', result_hash = {})
53
+ hash.each do |key, value|
54
+ new_key = parent_key.empty? ? key : "#{parent_key}_#{key}".to_sym
55
+ if value.is_a? Hash
56
+ flatten_hash(value, new_key, result_hash)
57
+ else
58
+ result_hash[new_key] = value
59
+ end
60
+ end
61
+ result_hash
62
+ end
63
+
64
+ def merge_hashes(hash1, hash2)
65
+ flat_hash1 = flatten_hash(hash1)
66
+ flat_hash2 = flatten_hash(hash2)
67
+
68
+ merged = flat_hash1.merge(flat_hash2) do |key, oldval, newval|
69
+ "#{oldval} #{newval}"
70
+ end
71
+
72
+ merged
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PhlexUI
4
+ class Badge < Base
5
+ def initialize(variant: :primary, size: :md, **kwargs)
6
+ @variant = variant
7
+ @size = size
8
+ @kwargs = kwargs
9
+ end
10
+
11
+ def template(&)
12
+ case @variant
13
+ when :primary
14
+ div(class: tokens("inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80", size_classes, @kwargs[:class]), &)
15
+ when :secondary
16
+ div(class: tokens("inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", size_classes, @kwargs[:class]), &)
17
+ when :outline
18
+ div(class: tokens("inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 text-foreground", size_classes, @kwargs[:class]), &)
19
+ when :destructive
20
+ div(class: tokens("inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80", size_classes, @kwargs[:class]), &)
21
+ when :slate
22
+ div(class: tokens("inline-flex items-center rounded-md bg-slate-100 font-medium text-slate-600 bg-slate-100/80 dark:bg-slate-400/10 dark:text-slate-400", size_classes, @kwargs[:class]), &)
23
+ when :gray
24
+ div(class: tokens("inline-flex items-center rounded-md bg-gray-100 font-medium text-gray-600 bg-gray-100/80 dark:bg-gray-400/10 dark:text-gray-400", size_classes, @kwargs[:class]), &)
25
+ when :zinc
26
+ div(class: tokens("inline-flex items-center rounded-md bg-zinc-100 font-medium text-zinc-600 bg-zinc-100/80 dark:bg-zinc-400/10 dark:text-zinc-400", size_classes, @kwargs[:class]), &)
27
+ when :neutral
28
+ div(class: tokens("inline-flex items-center rounded-md bg-neutral-100 font-medium text-neutral-600 bg-neutral-100/80 dark:bg-neutral-400/10 dark:text-neutral-400", size_classes, @kwargs[:class]), &)
29
+ when :stone
30
+ div(class: tokens("inline-flex items-center rounded-md bg-stone-100 font-medium text-stone-600 bg-stone-100/80 dark:bg-stone-400/10 dark:text-stone-400", size_classes, @kwargs[:class]), &)
31
+ when :red
32
+ div(class: tokens("inline-flex items-center rounded-md bg-red-100 font-medium text-red-600 bg-red-100/80 dark:bg-red-400/10 dark:text-red-400", size_classes, @kwargs[:class]), &)
33
+ when :orange
34
+ div(class: tokens("inline-flex items-center rounded-md bg-orange-100 font-medium text-orange-600 bg-orange-100/80 dark:bg-orange-400/10 dark:text-orange-400", size_classes, @kwargs[:class]), &)
35
+ when :amber
36
+ div(class: tokens("inline-flex items-center rounded-md bg-amber-100 font-medium text-amber-600 bg-amber-100/80 dark:bg-amber-400/10 dark:text-amber-400", size_classes, @kwargs[:class]), &)
37
+ when :yellow
38
+ div(class: tokens("inline-flex items-center rounded-md bg-yellow-100 font-medium text-yellow-600 bg-yellow-100/80 dark:bg-yellow-400/10 dark:text-yellow-400", size_classes, @kwargs[:class]), &)
39
+ when :lime
40
+ div(class: tokens("inline-flex items-center rounded-md bg-lime-100 font-medium text-lime-600 bg-lime-100/80 dark:bg-lime-400/10 dark:text-lime-400", size_classes, @kwargs[:class]), &)
41
+ when :green
42
+ div(class: tokens("inline-flex items-center rounded-md bg-green-100 font-medium text-green-600 bg-green-100/80 dark:bg-green-400/10 dark:text-green-400", size_classes, @kwargs[:class]), &)
43
+ when :emerald
44
+ div(class: tokens("inline-flex items-center rounded-md bg-emerald-100 font-medium text-emerald-600 bg-emerald-100/80 dark:bg-emerald-400/10 dark:text-emerald-400", size_classes, @kwargs[:class]), &)
45
+ when :teal
46
+ div(class: tokens("inline-flex items-center rounded-md bg-teal-100 font-medium text-teal-600 bg-teal-100/80 dark:bg-teal-400/10 dark:text-teal-400", size_classes, @kwargs[:class]), &)
47
+ when :cyan
48
+ div(class: tokens("inline-flex items-center rounded-md bg-cyan-100 font-medium text-cyan-600 bg-cyan-100/80 dark:bg-cyan-400/10 dark:text-cyan-400", size_classes, @kwargs[:class]), &)
49
+ when :sky
50
+ div(class: tokens("inline-flex items-center rounded-md bg-sky-100 font-medium text-sky-600 bg-sky-100/80 dark:bg-sky-400/10 dark:text-sky-400", size_classes, @kwargs[:class]), &)
51
+ when :blue
52
+ div(class: tokens("inline-flex items-center rounded-md bg-blue-100 font-medium text-blue-600 bg-blue-100/80 dark:bg-blue-400/10 dark:text-blue-400", size_classes, @kwargs[:class]), &)
53
+ when :indigo
54
+ div(class: tokens("inline-flex items-center rounded-md bg-indigo-100 font-medium text-indigo-600 bg-indigo-100/80 dark:bg-indigo-400/10 dark:text-indigo-400", size_classes, @kwargs[:class]), &)
55
+ when :violet
56
+ div(class: tokens("inline-flex items-center rounded-md bg-violet-100 font-medium text-violet-600 bg-violet-100/80 dark:bg-violet-400/10 dark:text-violet-400", size_classes, @kwargs[:class]), &)
57
+ when :purple
58
+ div(class: tokens("inline-flex items-center rounded-md bg-purple-100 font-medium text-purple-600 bg-purple-100/80 dark:bg-purple-400/10 dark:text-purple-400", size_classes, @kwargs[:class]), &)
59
+ when :fuchsia
60
+ div(class: tokens("inline-flex items-center rounded-md bg-fuchsia-100 font-medium text-fuchsia-600 bg-fuchsia-100/80 dark:bg-fuchsia-400/10 dark:text-fuchsia-400", size_classes, @kwargs[:class]), &)
61
+ when :pink
62
+ div(class: tokens("inline-flex items-center rounded-md bg-pink-100 font-medium text-pink-600 bg-pink-100/80 dark:bg-pink-400/10 dark:text-pink-400", size_classes, @kwargs[:class]), &)
63
+ when :rose
64
+ div(class: tokens("inline-flex items-center rounded-md bg-rose-100 font-medium text-rose-600 bg-rose-100/80 dark:bg-rose-400/10 dark:text-rose-400", size_classes, @kwargs[:class]), &)
65
+ end
66
+ end
67
+
68
+ def size_classes
69
+ case @size
70
+ when :sm then "px-1.5 py-0.5 text-xs"
71
+ when :md then "px-2 py-1 text-xs"
72
+ when :lg then "px-3 py-1 text-sm"
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PhlexUI
4
+ class Base < Phlex::HTML
5
+ attr_reader :attrs
6
+
7
+ def initialize(**user_attrs)
8
+ @attrs = PhlexUI::AttributeMerger.new(default_attrs, user_attrs).call
9
+ end
10
+
11
+ if defined?(Rails) && Rails.env.development?
12
+ def before_template
13
+ comment { "Before #{self.class.name}" }
14
+ super
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def default_attrs
21
+ {}
22
+ end
23
+ end
24
+ end
@@ -1,27 +1,73 @@
1
1
  module PhlexUI
2
- class Button < Phlex::HTML
3
- def template(&)
4
- button(class: klass, &)
2
+ class Button < Base
3
+ def initialize(**kwargs)
4
+ @variant = kwargs[:variant]&.to_sym || :primary
5
+ @size = kwargs[:size]
6
+ @kwargs = kwargs
7
+ @kwargs[:type] ||= "button"
5
8
  end
6
9
 
7
- private
8
-
9
- def klass
10
- 'bg-violet-500 hover:bg-violet-700 text-white font-bold py-2 px-4 rounded'
10
+ def template(&)
11
+ case @variant
12
+ when :primary
13
+ button(
14
+ **@kwargs,
15
+ class: tokens(
16
+ "whitespace-nowrap inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-primary-600 dark:bg-primary-500 text-white shadow hover:bg-primary-700 dark:hover:bg-primary-600 h-9",
17
+ -> { @size == :icon } => "h-9 w-9 justify-center",
18
+ -> { @size.nil? } => "px-4 py-2",
19
+ -> { @kwargs[:class] } => @kwargs[:class]
20
+ ),
21
+ &)
22
+ when :link
23
+ button(
24
+ **@kwargs,
25
+ class: tokens(
26
+ "whitespace-nowrap inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 text-primary-600 dark:text-primary-400 underline-offset-4 hover:underline h-9 px-4 py-2",
27
+ -> { @kwargs[:class] } => @kwargs[:class]
28
+ ),
29
+ &)
30
+ when :secondary
31
+ button(
32
+ **@kwargs,
33
+ class: tokens(
34
+ "whitespace-nowrap inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-primary-100 dark:bg-accent text-primary-600 dark:text-white shadow-sm hover:bg-primary-200 hover:text-primary-700 dark:hover:bg-opacity-10 h-9",
35
+ -> { @size == :icon } => "h-9 w-9 justify-center",
36
+ -> { @size.nil? } => "px-4 py-2",
37
+ -> { @kwargs[:class] } => @kwargs[:class]
38
+ ),
39
+ &)
40
+ when :destructive
41
+ button(
42
+ **@kwargs,
43
+ class: tokens(
44
+ "whitespace-nowrap inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-destructive-600 hover:bg-destructive-700 dark:bg-destructive-500 dark:hover:bg-destructive-600 text-white shadow-sm h-9",
45
+ -> { @size == :icon } => "h-9 w-9 justify-center",
46
+ -> { @size.nil? } => "px-4 py-2",
47
+ -> { @kwargs[:class] } => @kwargs[:class]
48
+ ),
49
+ &)
50
+ when :outline
51
+ button(
52
+ **@kwargs,
53
+ class: tokens(
54
+ "whitespace-nowrap inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 border bg-transparent shadow-sm hover:bg-accent h-9",
55
+ -> { @size == :icon } => "h-9 w-9 justify-center",
56
+ -> { @size.nil? } => "px-4 py-2",
57
+ -> { @kwargs[:class] } => @kwargs[:class]
58
+ ),
59
+ &)
60
+ when :ghost
61
+ button(
62
+ **@kwargs,
63
+ class: tokens(
64
+ "whitespace-nowrap inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent h-9",
65
+ -> { @size == :icon } => "h-9 w-9 justify-center",
66
+ -> { @size.nil? } => "px-4 py-2",
67
+ -> { @kwargs[:class] } => @kwargs[:class]
68
+ ),
69
+ &)
70
+ end
11
71
  end
12
-
13
- # def style
14
- # {
15
- # 'background-color': 'violet',
16
- # 'color': 'white',
17
- # 'font-weight': 'bold',
18
- # 'padding': '0.5rem 1rem',
19
- # 'border-radius': '0.25rem',
20
- # }
21
- # end
22
-
23
- # def compile_style
24
- # style.map { |k, v| "#{k}: #{v};" }.join(' ')
25
- # end
26
72
  end
27
73
  end
data/lib/phlex_ui.rb CHANGED
@@ -1,21 +1,13 @@
1
1
  require 'phlex'
2
2
  require 'zeitwerk'
3
- require 'rails'
4
3
 
5
4
  loader = Zeitwerk::Loader.for_gem
6
5
  loader.inflector.inflect(
7
6
  "phlex_ui" => "PhlexUI",
8
7
  )
9
- loader.ignore("#{__dir__}/tasks")
10
8
  loader.setup # ready!
11
9
 
12
10
  module PhlexUI
13
- # If Rails is defined, load the rake tasks
14
- class Railtie < Rails::Railtie
15
- rake_tasks do
16
- load File.join(Gem.loaded_specs['phlex_ui'].full_gem_path, 'tasks', 'install.rake')
17
- end
18
- end if defined?(Rails)
19
11
  end
20
12
 
21
13
  loader.eager_load
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phlex_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - George Kettle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-06 00:00:00.000000000 Z
11
+ date: 2023-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: phlex
@@ -38,40 +38,6 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.6'
41
- - !ruby/object:Gem::Dependency
42
- name: rails
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '6.1'
48
- - - "<"
49
- - !ruby/object:Gem::Version
50
- version: '8'
51
- type: :runtime
52
- prerelease: false
53
- version_requirements: !ruby/object:Gem::Requirement
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- version: '6.1'
58
- - - "<"
59
- - !ruby/object:Gem::Version
60
- version: '8'
61
- - !ruby/object:Gem::Dependency
62
- name: rake
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: '12.0'
68
- type: :runtime
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: '12.0'
75
41
  description: PhlexUI is a UI Component Library for Ruby developers. Built on top of
76
42
  the Phlex Framework.
77
43
  email: george.kettle@icloud.com
@@ -80,8 +46,17 @@ extensions: []
80
46
  extra_rdoc_files: []
81
47
  files:
82
48
  - lib/phlex_ui.rb
49
+ - lib/phlex_ui/accordion.rb
50
+ - lib/phlex_ui/accordion/content.rb
51
+ - lib/phlex_ui/accordion/default_content.rb
52
+ - lib/phlex_ui/accordion/default_trigger.rb
53
+ - lib/phlex_ui/accordion/icon.rb
54
+ - lib/phlex_ui/accordion/item.rb
55
+ - lib/phlex_ui/accordion/trigger.rb
56
+ - lib/phlex_ui/attribute_merger.rb
57
+ - lib/phlex_ui/badge.rb
58
+ - lib/phlex_ui/base.rb
83
59
  - lib/phlex_ui/button.rb
84
- - tasks/install.rake
85
60
  homepage: https://rubygems.org/gems/phlex_ui
86
61
  licenses:
87
62
  - MIT
data/tasks/install.rake DELETED
@@ -1,22 +0,0 @@
1
- require 'json'
2
-
3
- namespace :phlex_ui do
4
- desc "Update tailwind.config.js to include phlex_ui gem path"
5
- task install: :environment do
6
- dev_path = Gem.loaded_specs['phlex_ui'].full_gem_path + '/**/*.rb'
7
- prod_path = '/app/vendor/bundle/ruby/*/gems/phlex_ui-*/**/*.rb'
8
-
9
- puts "PhlexUI Installation steps:\n\n"
10
-
11
- puts "1. Add these 2 paths to your tailwind.config.js file:\n\n"
12
- print "module.exports = "
13
- puts JSON.pretty_generate({
14
- "content" => [
15
- "// Other paths",
16
- dev_path,
17
- prod_path
18
- ]
19
- })
20
- end
21
- end
22
-