phlex_ui 0.0.3 → 0.0.4

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: 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
-