phlexy_ui 0.1.14 → 0.1.18

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: 17d8f82d3306795ae9dbd48419c9e4a29f17b3aac473ab48d479becd00333f67
4
- data.tar.gz: 0c6a955c43d25f238d879041ce078492b2c696d2fb972a94fb98505a03cdf261
3
+ metadata.gz: e28571932626bbfb52238b529c6dfe67ba038b32c2c735377667fa0005974295
4
+ data.tar.gz: 820d96f4249069a762071132fcbe977bd78b00b54aa9e86b4f44622459c73628
5
5
  SHA512:
6
- metadata.gz: 526e769e706e4a02067a53807954dfad246ccbf0da949f3381d99a4ccdd8b089b8be5522f763a4eb1a89acf7b704aae1961d307a288952f088587182d8dcd5d2
7
- data.tar.gz: e980c98da1d7fe27883c72c9eff15efe8e1759054f79f9afce72cb64dacc2a5a22f049da5914d98538222dc3564068ad4770eb97d43505063ac24ed0550e8bbf
6
+ metadata.gz: 70be19b85cf1ce3d9eb6f0837f207399830901e3dd3d8556e7881eb612c4cf6c99b022609743d51d6fa58ab08a18e919806d211490a05aa5f5a52591f474db41
7
+ data.tar.gz: d1e10d0c19ca19d07159e60a98cd3a34669cf368166231ba9ed87b3dd3b8109bba0c2f8637df5a7fdd5f02353a606738f6d873c9957327a21f346d5b28398c05
@@ -13,76 +13,70 @@ module PhlexyUI
13
13
  @base_modifiers = base_modifiers
14
14
  @options = options
15
15
  @modifiers_map = modifiers_map
16
+ @responsive_options = options.delete(:responsive)
16
17
  end
17
18
 
18
19
  def to_a
19
- classes = []
20
- add_component_class(classes)
21
- add_selected_modifiers_classes(classes)
22
- add_conditioned_modifiers_classes(classes)
23
- add_responsive_modifiers_classes(classes)
24
- add_class_option_classes(classes)
25
- classes
20
+ [
21
+ component_classes,
22
+ modifier_classes,
23
+ responsive_classes,
24
+ options.delete(:class)
25
+ ].flatten.compact
26
26
  end
27
27
 
28
28
  private
29
29
 
30
- attr_reader :component_html_class, :base_modifiers, :options, :modifiers_map
30
+ attr_reader :component_html_class,
31
+ :base_modifiers,
32
+ :options,
33
+ :modifiers_map,
34
+ :responsive_options
31
35
 
32
- def selected_base_modifiers
33
- base_modifiers.select { |modifier| modifiers_map.key?(modifier) }
34
- end
35
-
36
- def add_component_class(classes)
36
+ def component_classes
37
37
  return unless component_html_class
38
+ return if responsive_options&.values&.any? do |v|
39
+ v == true || (v.is_a?(Array) && v.include?(true))
40
+ end
38
41
 
39
- classes << with_config_prefix(component_html_class)
42
+ with_config_prefix(component_html_class)
40
43
  end
41
44
 
42
- def add_selected_modifiers_classes(classes)
43
- classes.concat(
44
- html_classes_for_modifiers(
45
- selected_base_modifiers
46
- )
47
- )
45
+ def modifier_classes
46
+ (selected_base_modifiers + conditioned_modifiers).map do |modifier|
47
+ with_config_prefix(modifiers_map[modifier])
48
+ end
48
49
  end
49
50
 
50
- def add_conditioned_modifiers_classes(classes)
51
- modifiers_map.each do |modifier, class_name|
52
- next unless options.delete(modifier)
53
-
54
- classes << with_config_prefix(class_name)
55
- end
51
+ def selected_base_modifiers
52
+ base_modifiers.select { |modifier| modifiers_map.key?(modifier) }
56
53
  end
57
54
 
58
- def html_classes_for_modifiers(modifiers, responsive_prefix: nil)
59
- modifiers.map do |modifier|
60
- with_responsive_prefix(
61
- with_config_prefix(
62
- modifiers_map.fetch(modifier)
63
- ),
64
- responsive_prefix
65
- )
66
- end
55
+ def conditioned_modifiers
56
+ modifiers_map.keys.select { |modifier| options.delete(modifier) }
67
57
  end
68
58
 
69
- def add_responsive_modifiers_classes(classes)
70
- return unless (responsive_options = options.delete(:responsive))
71
-
72
- RESPONSIVE_PREFIXES.each do |responsive_prefix|
73
- if (values = responsive_options[responsive_prefix])
74
- classes.concat(
75
- html_classes_for_modifiers(
76
- Array(values),
77
- responsive_prefix:
78
- )
79
- )
59
+ def responsive_classes
60
+ return unless responsive_options
61
+
62
+ RESPONSIVE_PREFIXES.flat_map do |prefix|
63
+ next unless responsive_options[prefix]
64
+
65
+ values = Array(responsive_options[prefix])
66
+
67
+ component_responsive_class =
68
+ if values.delete(true)
69
+ [with_responsive_prefix(with_config_prefix(component_html_class), prefix)]
70
+ else
71
+ []
72
+ end
73
+
74
+ modifier_responsive_classes = values.map do |v|
75
+ with_responsive_prefix(with_config_prefix(modifiers_map[v]), prefix)
80
76
  end
81
- end
82
- end
83
77
 
84
- def add_class_option_classes(classes)
85
- classes << options.delete(:class) if options[:class]
78
+ component_responsive_class + modifier_responsive_classes
79
+ end
86
80
  end
87
81
 
88
82
  def with_config_prefix(string)
@@ -91,14 +85,8 @@ module PhlexyUI
91
85
  end.join(" ")
92
86
  end
93
87
 
94
- def with_responsive_prefix(string, responsive_prefix = nil)
95
- string.split.map do |word|
96
- if responsive_prefix
97
- "#{responsive_prefix}:#{word}"
98
- else
99
- word
100
- end
101
- end.join(" ")
88
+ def with_responsive_prefix(string, prefix)
89
+ string.to_s.split.map { |word| "#{prefix}:#{word}" }.join(" ")
102
90
  end
103
91
  end
104
92
  end
@@ -50,50 +50,90 @@ module PhlexyUI
50
50
  attr_reader :value, :size, :thickness
51
51
 
52
52
  register_modifiers(
53
- # "sm:bg-primary sm:text-primary-content"
54
- # "md:bg-primary md:text-primary-content"
55
- # "lg:bg-primary lg:text-primary-content"
56
- primary: "bg-primary text-primary-content",
57
- # "sm:bg-secondary sm:text-secondary-content"
58
- # "md:bg-secondary md:text-secondary-content"
59
- # "lg:bg-secondary lg:text-secondary-content"
60
- secondary: "bg-secondary text-secondary-content",
61
- # "sm:bg-accent sm:text-accent-content"
62
- # "md:bg-accent md:text-accent-content"
63
- # "lg:bg-accent lg:text-accent-content"
64
- accent: "bg-accent text-accent-content",
65
- # "sm:bg-neutral sm:text-neutral-content"
66
- # "md:bg-neutral md:text-neutral-content"
67
- # "lg:bg-neutral lg:text-neutral-content"
68
- neutral: "bg-neutral text-neutral-content",
69
- # "sm:bg-base-100 sm:text-base-content"
70
- # "md:bg-base-100 md:text-base-content"
71
- # "lg:bg-base-100 lg:text-base-content"
72
- base_100: "bg-base-100 text-base-content",
73
- # "sm:bg-base-200 sm:text-base-content"
74
- # "md:bg-base-200 md:text-base-content"
75
- # "lg:bg-base-200 lg:text-base-content"
76
- base_200: "bg-base-200 text-base-content",
77
- # "sm:bg-base-300 sm:text-base-content"
78
- # "md:bg-base-300 md:text-base-content"
79
- # "lg:bg-base-300 lg:text-base-content"
80
- base_300: "bg-base-300 text-base-content",
81
- # "sm:bg-info sm:text-info-content"
82
- # "md:bg-info sm:text-info-content"
83
- # "lg:bg-info sm:text-info-content"
84
- info: "bg-info text-info-content",
85
- # "sm:bg-success sm:text-success-content"
86
- # "md:bg-success md:text-success-content"
87
- # "lg:bg-success lg:text-success-content"
88
- success: "bg-success text-success-content",
89
- # "sm:bg-warning sm:text-warning-content"
90
- # "md:bg-warning md:text-warning-content"
91
- # "lg:bg-warning lg:text-warning-content"
92
- warning: "bg-warning text-warning-content",
93
- # "sm:bg-error sm:text-error-content"
94
- # "md:bg-error md:text-error-content"
95
- # "lg:bg-error lg:text-error-content"
96
- error: "bg-error text-error-content"
53
+ # "sm:bg-primary sm:text-primary-content border-primary"
54
+ # "md:bg-primary md:text-primary-content border-primary"
55
+ # "lg:bg-primary lg:text-primary-content border-primary"
56
+ primary: "bg-primary text-primary-content border-primary",
57
+ # "sm:text-primary"
58
+ # "md:text-primary"
59
+ # "lg:text-primary"
60
+ primary_outline: "text-primary",
61
+ # "sm:bg-secondary sm:text-secondary-content border-secondary"
62
+ # "md:bg-secondary md:text-secondary-content border-secondary"
63
+ # "lg:bg-secondary lg:text-secondary-content border-secondary"
64
+ secondary: "bg-secondary text-secondary-content border-secondary",
65
+ # "sm:text-secondary"
66
+ # "md:text-secondary"
67
+ # "lg:text-secondary"
68
+ secondary_outline: "text-secondary",
69
+ # "sm:bg-accent sm:text-accent-content border-accent"
70
+ # "md:bg-accent md:text-accent-content border-accent"
71
+ # "lg:bg-accent lg:text-accent-content border-accent"
72
+ accent: "bg-accent text-accent-content border-accent",
73
+ # "sm:text-accent"
74
+ # "md:text-accent"
75
+ # "lg:text-accent"
76
+ accent_outline: "text-accent",
77
+ # "sm:bg-neutral sm:text-neutral-content border-neutral"
78
+ # "md:bg-neutral md:text-neutral-content border-neutral"
79
+ # "lg:bg-neutral lg:text-neutral-content border-neutral"
80
+ neutral: "bg-neutral text-neutral-content border-neutral",
81
+ # "sm:text-neutral"
82
+ # "md:text-neutral"
83
+ # "lg:text-neutral"
84
+ neutral_outline: "text-neutral",
85
+ # "sm:bg-base-100 sm:text-base-content border-base-100"
86
+ # "md:bg-base-100 md:text-base-content border-base-100"
87
+ # "lg:bg-base-100 lg:text-base-content border-base-100"
88
+ base_100: "bg-base-100 text-base-content border-base-100",
89
+ # "sm:text-base-100"
90
+ # "md:text-base-100"
91
+ # "lg:text-base-100"
92
+ base_100_outline: "text-base-100",
93
+ # "sm:bg-base-200 sm:text-base-content border-base-200"
94
+ # "md:bg-base-200 md:text-base-content border-base-200"
95
+ # "lg:bg-base-200 lg:text-base-content border-base-200"
96
+ base_200: "bg-base-200 text-base-content border-base-200",
97
+ # "sm:text-base-200"
98
+ # "md:text-base-200"
99
+ # "lg:text-base-200"
100
+ base_200_outline: "text-base-200",
101
+ # "sm:bg-base-300 sm:text-base-content border-base-300"
102
+ # "md:bg-base-300 md:text-base-content border-base-300"
103
+ # "lg:bg-base-300 lg:text-base-content border-base-300"
104
+ base_300: "bg-base-300 text-base-content border-base-300",
105
+ # "sm:text-base-300"
106
+ # "md:text-base-300"
107
+ # "lg:text-base-300"
108
+ base_300_outline: "text-base-300",
109
+ # "sm:bg-info sm:text-info-content border-info"
110
+ # "md:bg-info md:text-info-content border-info"
111
+ # "lg:bg-info lg:text-info-content border-info"
112
+ info: "bg-info text-info-content border-info",
113
+ # "sm:text-info"
114
+ # "md:text-info"
115
+ # "lg:text-info"
116
+ info_outline: "text-info",
117
+ # "sm:bg-success sm:text-success-content border-success"
118
+ # "md:bg-success md:text-success-content border-success"
119
+ # "lg:bg-success lg:text-success-content border-success"
120
+ success: "bg-success text-success-content border-success",
121
+ # "sm:text-success"
122
+ # "md:text-success"
123
+ # "lg:text-success"
124
+ success_outline: "text-success",
125
+ # "sm:bg-warning sm:text-warning-content border-warning"
126
+ # "md:bg-warning md:text-warning-content border-warning"
127
+ # "lg:bg-warning lg:text-warning-content border-warning"
128
+ warning: "bg-warning text-warning-content border-warning",
129
+ # "sm:text-warning"
130
+ # "md:text-warning"
131
+ # "lg:text-warning"
132
+ warning_outline: "text-warning",
133
+ # "sm:bg-error sm:text-error-content border-error"
134
+ # "md:bg-error md:text-error-content border-error"
135
+ # "lg:bg-error lg:text-error-content border-error"
136
+ error: "bg-error text-error-content border-error"
97
137
  )
98
138
  end
99
139
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexyUI
4
- VERSION = "0.1.14"
4
+ VERSION = "0.1.18"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phlexy_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: 0.1.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Alejandro Aguilar Ramos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-25 00:00:00.000000000 Z
11
+ date: 2024-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: phlex