better_ui 0.3.0 → 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.

Potentially problematic release.


This version of better_ui might be problematic. Click here for more details.

Files changed (178) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +174 -216
  4. data/app/assets/javascripts/better_ui/controllers/navbar_controller.js +138 -0
  5. data/app/assets/javascripts/better_ui/controllers/sidebar_controller.js +211 -0
  6. data/app/assets/javascripts/better_ui/controllers/toast_controller.js +161 -0
  7. data/app/assets/javascripts/better_ui/index.js +159 -0
  8. data/app/assets/javascripts/better_ui/toast_manager.js +77 -0
  9. data/app/assets/stylesheets/better_ui/application.css +30 -0
  10. data/app/components/better_ui/application/alert_component.html.erb +27 -0
  11. data/app/components/better_ui/application/alert_component.rb +196 -0
  12. data/app/components/better_ui/application/header_component.html.erb +88 -0
  13. data/app/components/better_ui/application/header_component.rb +188 -0
  14. data/app/components/better_ui/application/navbar_component.html.erb +294 -0
  15. data/app/components/better_ui/application/navbar_component.rb +249 -0
  16. data/app/components/better_ui/application/sidebar_component.html.erb +207 -0
  17. data/app/components/better_ui/application/sidebar_component.rb +318 -0
  18. data/app/components/better_ui/application/toast_component.html.erb +35 -0
  19. data/app/components/better_ui/application/toast_component.rb +188 -0
  20. data/app/components/better_ui/general/breadcrumb_component.html.erb +39 -0
  21. data/app/components/better_ui/general/breadcrumb_component.rb +132 -0
  22. data/app/components/better_ui/general/{button/component.html.erb → button_component.html.erb} +7 -7
  23. data/app/components/better_ui/general/button_component.rb +193 -0
  24. data/app/components/better_ui/general/heading_component.html.erb +25 -0
  25. data/app/components/better_ui/general/heading_component.rb +142 -0
  26. data/app/components/better_ui/general/icon_component.html.erb +2 -0
  27. data/app/components/better_ui/general/icon_component.rb +101 -0
  28. data/app/components/better_ui/general/panel_component.html.erb +27 -0
  29. data/app/components/better_ui/general/panel_component.rb +97 -0
  30. data/app/components/better_ui/general/table_component.html.erb +37 -0
  31. data/app/components/better_ui/general/table_component.rb +141 -0
  32. data/app/components/better_ui/theme_helper.rb +169 -0
  33. data/app/controllers/better_ui/application_controller.rb +1 -0
  34. data/app/controllers/better_ui/docs_controller.rb +34 -0
  35. data/app/helpers/better_ui_application_helper.rb +99 -0
  36. data/app/views/layouts/component_preview.html.erb +32 -0
  37. data/config/initializers/lookbook.rb +12 -12
  38. data/config/routes.rb +13 -0
  39. data/lib/better_ui/engine.rb +42 -5
  40. data/lib/better_ui/version.rb +1 -1
  41. data/lib/better_ui.rb +20 -4
  42. metadata +117 -157
  43. data/app/components/better_ui/application/card/component.html.erb +0 -20
  44. data/app/components/better_ui/application/card/component.rb +0 -214
  45. data/app/components/better_ui/application/main/component.html.erb +0 -9
  46. data/app/components/better_ui/application/main/component.rb +0 -123
  47. data/app/components/better_ui/application/navbar/component.html.erb +0 -92
  48. data/app/components/better_ui/application/navbar/component.rb +0 -136
  49. data/app/components/better_ui/application/sidebar/component.html.erb +0 -227
  50. data/app/components/better_ui/application/sidebar/component.rb +0 -130
  51. data/app/components/better_ui/general/accordion/component.html.erb +0 -5
  52. data/app/components/better_ui/general/accordion/component.rb +0 -92
  53. data/app/components/better_ui/general/accordion/item_component.html.erb +0 -12
  54. data/app/components/better_ui/general/accordion/item_component.rb +0 -176
  55. data/app/components/better_ui/general/alert/component.html.erb +0 -32
  56. data/app/components/better_ui/general/alert/component.rb +0 -242
  57. data/app/components/better_ui/general/avatar/component.html.erb +0 -20
  58. data/app/components/better_ui/general/avatar/component.rb +0 -301
  59. data/app/components/better_ui/general/badge/component.html.erb +0 -23
  60. data/app/components/better_ui/general/badge/component.rb +0 -248
  61. data/app/components/better_ui/general/breadcrumb/component.html.erb +0 -15
  62. data/app/components/better_ui/general/breadcrumb/component.rb +0 -187
  63. data/app/components/better_ui/general/button/component.rb +0 -214
  64. data/app/components/better_ui/general/divider/component.html.erb +0 -10
  65. data/app/components/better_ui/general/divider/component.rb +0 -226
  66. data/app/components/better_ui/general/dropdown/component.html.erb +0 -25
  67. data/app/components/better_ui/general/dropdown/component.rb +0 -170
  68. data/app/components/better_ui/general/dropdown/divider_component.html.erb +0 -1
  69. data/app/components/better_ui/general/dropdown/divider_component.rb +0 -41
  70. data/app/components/better_ui/general/dropdown/item_component.html.erb +0 -6
  71. data/app/components/better_ui/general/dropdown/item_component.rb +0 -119
  72. data/app/components/better_ui/general/field/component.html.erb +0 -27
  73. data/app/components/better_ui/general/field/component.rb +0 -37
  74. data/app/components/better_ui/general/heading/component.html.erb +0 -22
  75. data/app/components/better_ui/general/heading/component.rb +0 -257
  76. data/app/components/better_ui/general/icon/component.html.erb +0 -7
  77. data/app/components/better_ui/general/icon/component.rb +0 -239
  78. data/app/components/better_ui/general/input/checkbox/component.html.erb +0 -5
  79. data/app/components/better_ui/general/input/checkbox/component.rb +0 -238
  80. data/app/components/better_ui/general/input/datetime/component.html.erb +0 -5
  81. data/app/components/better_ui/general/input/datetime/component.rb +0 -223
  82. data/app/components/better_ui/general/input/radio/component.html.erb +0 -5
  83. data/app/components/better_ui/general/input/radio/component.rb +0 -230
  84. data/app/components/better_ui/general/input/select/component.html.erb +0 -16
  85. data/app/components/better_ui/general/input/select/component.rb +0 -184
  86. data/app/components/better_ui/general/input/select/select_component.html.erb +0 -5
  87. data/app/components/better_ui/general/input/select/select_component.rb +0 -37
  88. data/app/components/better_ui/general/input/text/component.html.erb +0 -5
  89. data/app/components/better_ui/general/input/text/component.rb +0 -171
  90. data/app/components/better_ui/general/input/textarea/component.html.erb +0 -5
  91. data/app/components/better_ui/general/input/textarea/component.rb +0 -166
  92. data/app/components/better_ui/general/link/component.html.erb +0 -18
  93. data/app/components/better_ui/general/link/component.rb +0 -258
  94. data/app/components/better_ui/general/modal/component.html.erb +0 -5
  95. data/app/components/better_ui/general/modal/component.rb +0 -47
  96. data/app/components/better_ui/general/modal/modal_component.html.erb +0 -52
  97. data/app/components/better_ui/general/modal/modal_component.rb +0 -160
  98. data/app/components/better_ui/general/pagination/component.html.erb +0 -85
  99. data/app/components/better_ui/general/pagination/component.rb +0 -216
  100. data/app/components/better_ui/general/panel/component.html.erb +0 -28
  101. data/app/components/better_ui/general/panel/component.rb +0 -249
  102. data/app/components/better_ui/general/progress/component.html.erb +0 -11
  103. data/app/components/better_ui/general/progress/component.rb +0 -160
  104. data/app/components/better_ui/general/spinner/component.html.erb +0 -35
  105. data/app/components/better_ui/general/spinner/component.rb +0 -93
  106. data/app/components/better_ui/general/table/component.html.erb +0 -5
  107. data/app/components/better_ui/general/table/component.rb +0 -217
  108. data/app/components/better_ui/general/table/tbody_component.html.erb +0 -3
  109. data/app/components/better_ui/general/table/tbody_component.rb +0 -30
  110. data/app/components/better_ui/general/table/td_component.html.erb +0 -3
  111. data/app/components/better_ui/general/table/td_component.rb +0 -44
  112. data/app/components/better_ui/general/table/tfoot_component.html.erb +0 -3
  113. data/app/components/better_ui/general/table/tfoot_component.rb +0 -28
  114. data/app/components/better_ui/general/table/th_component.html.erb +0 -6
  115. data/app/components/better_ui/general/table/th_component.rb +0 -51
  116. data/app/components/better_ui/general/table/thead_component.html.erb +0 -3
  117. data/app/components/better_ui/general/table/thead_component.rb +0 -28
  118. data/app/components/better_ui/general/table/tr_component.html.erb +0 -3
  119. data/app/components/better_ui/general/table/tr_component.rb +0 -30
  120. data/app/components/better_ui/general/tabs/component.html.erb +0 -11
  121. data/app/components/better_ui/general/tabs/component.rb +0 -120
  122. data/app/components/better_ui/general/tabs/panel_component.html.erb +0 -3
  123. data/app/components/better_ui/general/tabs/panel_component.rb +0 -37
  124. data/app/components/better_ui/general/tabs/tab_component.html.erb +0 -13
  125. data/app/components/better_ui/general/tabs/tab_component.rb +0 -111
  126. data/app/components/better_ui/general/tag/component.html.erb +0 -3
  127. data/app/components/better_ui/general/tag/component.rb +0 -104
  128. data/app/components/better_ui/general/tooltip/component.html.erb +0 -7
  129. data/app/components/better_ui/general/tooltip/component.rb +0 -239
  130. data/app/helpers/better_ui/application/components/card/card_helper.rb +0 -96
  131. data/app/helpers/better_ui/application/components/card.rb +0 -11
  132. data/app/helpers/better_ui/application/components/main/main_helper.rb +0 -64
  133. data/app/helpers/better_ui/application/components/navbar/navbar_helper.rb +0 -77
  134. data/app/helpers/better_ui/application/components/sidebar/sidebar_helper.rb +0 -51
  135. data/app/helpers/better_ui/application_helper.rb +0 -55
  136. data/app/helpers/better_ui/general/components/accordion/accordion_helper.rb +0 -73
  137. data/app/helpers/better_ui/general/components/accordion.rb +0 -11
  138. data/app/helpers/better_ui/general/components/alert/alert_helper.rb +0 -57
  139. data/app/helpers/better_ui/general/components/avatar/avatar_helper.rb +0 -29
  140. data/app/helpers/better_ui/general/components/badge/badge_helper.rb +0 -53
  141. data/app/helpers/better_ui/general/components/breadcrumb/breadcrumb_helper.rb +0 -37
  142. data/app/helpers/better_ui/general/components/button/button_helper.rb +0 -65
  143. data/app/helpers/better_ui/general/components/container/container_helper.rb +0 -60
  144. data/app/helpers/better_ui/general/components/divider/divider_helper.rb +0 -63
  145. data/app/helpers/better_ui/general/components/dropdown/divider_helper.rb +0 -32
  146. data/app/helpers/better_ui/general/components/dropdown/dropdown_helper.rb +0 -79
  147. data/app/helpers/better_ui/general/components/dropdown/item_helper.rb +0 -62
  148. data/app/helpers/better_ui/general/components/field/field_helper.rb +0 -26
  149. data/app/helpers/better_ui/general/components/heading/heading_helper.rb +0 -72
  150. data/app/helpers/better_ui/general/components/icon/icon_helper.rb +0 -16
  151. data/app/helpers/better_ui/general/components/input/checkbox/checkbox_helper.rb +0 -81
  152. data/app/helpers/better_ui/general/components/input/datetime/datetime_helper.rb +0 -91
  153. data/app/helpers/better_ui/general/components/input/radio/radio_helper.rb +0 -79
  154. data/app/helpers/better_ui/general/components/input/radio_group/radio_group_helper.rb +0 -124
  155. data/app/helpers/better_ui/general/components/input/select/select_helper.rb +0 -70
  156. data/app/helpers/better_ui/general/components/input/text/text_helper.rb +0 -138
  157. data/app/helpers/better_ui/general/components/input/textarea/textarea_helper.rb +0 -73
  158. data/app/helpers/better_ui/general/components/link/link_helper.rb +0 -89
  159. data/app/helpers/better_ui/general/components/modal/modal_helper.rb +0 -85
  160. data/app/helpers/better_ui/general/components/modal.rb +0 -11
  161. data/app/helpers/better_ui/general/components/pagination/pagination_helper.rb +0 -82
  162. data/app/helpers/better_ui/general/components/panel/panel_helper.rb +0 -83
  163. data/app/helpers/better_ui/general/components/progress/progress_helper.rb +0 -53
  164. data/app/helpers/better_ui/general/components/spinner/spinner_helper.rb +0 -19
  165. data/app/helpers/better_ui/general/components/table/table_helper.rb +0 -53
  166. data/app/helpers/better_ui/general/components/table/tbody_helper.rb +0 -13
  167. data/app/helpers/better_ui/general/components/table/td_helper.rb +0 -19
  168. data/app/helpers/better_ui/general/components/table/tfoot_helper.rb +0 -13
  169. data/app/helpers/better_ui/general/components/table/th_helper.rb +0 -19
  170. data/app/helpers/better_ui/general/components/table/thead_helper.rb +0 -13
  171. data/app/helpers/better_ui/general/components/table/tr_helper.rb +0 -13
  172. data/app/helpers/better_ui/general/components/tabs/panel_helper.rb +0 -62
  173. data/app/helpers/better_ui/general/components/tabs/tab_helper.rb +0 -55
  174. data/app/helpers/better_ui/general/components/tabs/tabs_helper.rb +0 -95
  175. data/app/helpers/better_ui/general/components/tag/tag_helper.rb +0 -26
  176. data/app/helpers/better_ui/general/components/tooltip/tooltip_helper.rb +0 -60
  177. data/app/views/layouts/better_ui/application.html.erb +0 -17
  178. data/lib/better_ui/railtie.rb +0 -20
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: better_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - alessiobussolari
8
- - umberto_peserico
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2025-06-03 00:00:00.000000000 Z
11
+ date: 2025-05-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rails
@@ -29,16 +28,16 @@ dependencies:
29
28
  name: view_component
30
29
  requirement: !ruby/object:Gem::Requirement
31
30
  requirements:
32
- - - "~>"
31
+ - - ">="
33
32
  - !ruby/object:Gem::Version
34
- version: '3.22'
33
+ version: 3.0.0
35
34
  type: :runtime
36
35
  prerelease: false
37
36
  version_requirements: !ruby/object:Gem::Requirement
38
37
  requirements:
39
- - - "~>"
38
+ - - ">="
40
39
  - !ruby/object:Gem::Version
41
- version: '3.22'
40
+ version: 3.0.0
42
41
  - !ruby/object:Gem::Dependency
43
42
  name: redcarpet
44
43
  requirement: !ruby/object:Gem::Requirement
@@ -53,6 +52,20 @@ dependencies:
53
52
  - - "~>"
54
53
  - !ruby/object:Gem::Version
55
54
  version: '3.6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: tailwindcss-rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.0'
56
69
  - !ruby/object:Gem::Dependency
57
70
  name: coderay
58
71
  requirement: !ruby/object:Gem::Requirement
@@ -68,39 +81,93 @@ dependencies:
68
81
  - !ruby/object:Gem::Version
69
82
  version: '1.1'
70
83
  - !ruby/object:Gem::Dependency
71
- name: lookbook
84
+ name: font-awesome-sass
72
85
  requirement: !ruby/object:Gem::Requirement
73
86
  requirements:
74
87
  - - "~>"
75
88
  - !ruby/object:Gem::Version
76
- version: '2.3'
89
+ version: 6.5.1
77
90
  type: :runtime
78
91
  prerelease: false
79
92
  version_requirements: !ruby/object:Gem::Requirement
80
93
  requirements:
81
94
  - - "~>"
82
95
  - !ruby/object:Gem::Version
83
- version: '2.3'
96
+ version: 6.5.1
84
97
  - !ruby/object:Gem::Dependency
85
- name: font-awesome-sass
98
+ name: sqlite3
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: puma
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: lookbook
86
127
  requirement: !ruby/object:Gem::Requirement
87
128
  requirements:
88
129
  - - "~>"
89
130
  - !ruby/object:Gem::Version
90
- version: '6.5'
91
- type: :runtime
131
+ version: '2.1'
132
+ type: :development
92
133
  prerelease: false
93
134
  version_requirements: !ruby/object:Gem::Requirement
94
135
  requirements:
95
136
  - - "~>"
96
137
  - !ruby/object:Gem::Version
97
- version: '6.5'
98
- description: Better UI is a Rails gem that works as a mountable engine containing
99
- reusable UI components, built with ViewComponent and Tailwind CSS, following the
100
- BEM methodology. It includes documentation and interactive previews with Lookbook.
138
+ version: '2.1'
139
+ - !ruby/object:Gem::Dependency
140
+ name: listen
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: actioncable
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ description: Una gem Rails che funziona come engine montabile contenente componenti
168
+ UI riutilizzabili e pagine di documentazione
101
169
  email:
102
170
  - alessio.bussolari@pandev.it
103
- - umberto.peserico@pandev.it
104
171
  executables: []
105
172
  extensions: []
106
173
  extra_rdoc_files: []
@@ -108,152 +175,46 @@ files:
108
175
  - MIT-LICENSE
109
176
  - README.md
110
177
  - Rakefile
178
+ - app/assets/javascripts/better_ui/controllers/navbar_controller.js
179
+ - app/assets/javascripts/better_ui/controllers/sidebar_controller.js
180
+ - app/assets/javascripts/better_ui/controllers/toast_controller.js
181
+ - app/assets/javascripts/better_ui/index.js
182
+ - app/assets/javascripts/better_ui/toast_manager.js
111
183
  - app/assets/stylesheets/better_ui/application.css
112
- - app/components/better_ui/application/card/component.html.erb
113
- - app/components/better_ui/application/card/component.rb
114
- - app/components/better_ui/application/main/component.html.erb
115
- - app/components/better_ui/application/main/component.rb
116
- - app/components/better_ui/application/navbar/component.html.erb
117
- - app/components/better_ui/application/navbar/component.rb
118
- - app/components/better_ui/application/sidebar/component.html.erb
119
- - app/components/better_ui/application/sidebar/component.rb
120
- - app/components/better_ui/general/accordion/component.html.erb
121
- - app/components/better_ui/general/accordion/component.rb
122
- - app/components/better_ui/general/accordion/item_component.html.erb
123
- - app/components/better_ui/general/accordion/item_component.rb
124
- - app/components/better_ui/general/alert/component.html.erb
125
- - app/components/better_ui/general/alert/component.rb
126
- - app/components/better_ui/general/avatar/component.html.erb
127
- - app/components/better_ui/general/avatar/component.rb
128
- - app/components/better_ui/general/badge/component.html.erb
129
- - app/components/better_ui/general/badge/component.rb
130
- - app/components/better_ui/general/breadcrumb/component.html.erb
131
- - app/components/better_ui/general/breadcrumb/component.rb
132
- - app/components/better_ui/general/button/component.html.erb
133
- - app/components/better_ui/general/button/component.rb
134
- - app/components/better_ui/general/divider/component.html.erb
135
- - app/components/better_ui/general/divider/component.rb
136
- - app/components/better_ui/general/dropdown/component.html.erb
137
- - app/components/better_ui/general/dropdown/component.rb
138
- - app/components/better_ui/general/dropdown/divider_component.html.erb
139
- - app/components/better_ui/general/dropdown/divider_component.rb
140
- - app/components/better_ui/general/dropdown/item_component.html.erb
141
- - app/components/better_ui/general/dropdown/item_component.rb
142
- - app/components/better_ui/general/field/component.html.erb
143
- - app/components/better_ui/general/field/component.rb
144
- - app/components/better_ui/general/heading/component.html.erb
145
- - app/components/better_ui/general/heading/component.rb
146
- - app/components/better_ui/general/icon/component.html.erb
147
- - app/components/better_ui/general/icon/component.rb
148
- - app/components/better_ui/general/input/checkbox/component.html.erb
149
- - app/components/better_ui/general/input/checkbox/component.rb
150
- - app/components/better_ui/general/input/datetime/component.html.erb
151
- - app/components/better_ui/general/input/datetime/component.rb
152
- - app/components/better_ui/general/input/radio/component.html.erb
153
- - app/components/better_ui/general/input/radio/component.rb
154
- - app/components/better_ui/general/input/select/component.html.erb
155
- - app/components/better_ui/general/input/select/component.rb
156
- - app/components/better_ui/general/input/select/select_component.html.erb
157
- - app/components/better_ui/general/input/select/select_component.rb
158
- - app/components/better_ui/general/input/text/component.html.erb
159
- - app/components/better_ui/general/input/text/component.rb
160
- - app/components/better_ui/general/input/textarea/component.html.erb
161
- - app/components/better_ui/general/input/textarea/component.rb
162
- - app/components/better_ui/general/link/component.html.erb
163
- - app/components/better_ui/general/link/component.rb
164
- - app/components/better_ui/general/modal/component.html.erb
165
- - app/components/better_ui/general/modal/component.rb
166
- - app/components/better_ui/general/modal/modal_component.html.erb
167
- - app/components/better_ui/general/modal/modal_component.rb
168
- - app/components/better_ui/general/pagination/component.html.erb
169
- - app/components/better_ui/general/pagination/component.rb
170
- - app/components/better_ui/general/panel/component.html.erb
171
- - app/components/better_ui/general/panel/component.rb
172
- - app/components/better_ui/general/progress/component.html.erb
173
- - app/components/better_ui/general/progress/component.rb
174
- - app/components/better_ui/general/spinner/component.html.erb
175
- - app/components/better_ui/general/spinner/component.rb
176
- - app/components/better_ui/general/table/component.html.erb
177
- - app/components/better_ui/general/table/component.rb
178
- - app/components/better_ui/general/table/tbody_component.html.erb
179
- - app/components/better_ui/general/table/tbody_component.rb
180
- - app/components/better_ui/general/table/td_component.html.erb
181
- - app/components/better_ui/general/table/td_component.rb
182
- - app/components/better_ui/general/table/tfoot_component.html.erb
183
- - app/components/better_ui/general/table/tfoot_component.rb
184
- - app/components/better_ui/general/table/th_component.html.erb
185
- - app/components/better_ui/general/table/th_component.rb
186
- - app/components/better_ui/general/table/thead_component.html.erb
187
- - app/components/better_ui/general/table/thead_component.rb
188
- - app/components/better_ui/general/table/tr_component.html.erb
189
- - app/components/better_ui/general/table/tr_component.rb
190
- - app/components/better_ui/general/tabs/component.html.erb
191
- - app/components/better_ui/general/tabs/component.rb
192
- - app/components/better_ui/general/tabs/panel_component.html.erb
193
- - app/components/better_ui/general/tabs/panel_component.rb
194
- - app/components/better_ui/general/tabs/tab_component.html.erb
195
- - app/components/better_ui/general/tabs/tab_component.rb
196
- - app/components/better_ui/general/tag/component.html.erb
197
- - app/components/better_ui/general/tag/component.rb
198
- - app/components/better_ui/general/tooltip/component.html.erb
199
- - app/components/better_ui/general/tooltip/component.rb
184
+ - app/components/better_ui/application/alert_component.html.erb
185
+ - app/components/better_ui/application/alert_component.rb
186
+ - app/components/better_ui/application/header_component.html.erb
187
+ - app/components/better_ui/application/header_component.rb
188
+ - app/components/better_ui/application/navbar_component.html.erb
189
+ - app/components/better_ui/application/navbar_component.rb
190
+ - app/components/better_ui/application/sidebar_component.html.erb
191
+ - app/components/better_ui/application/sidebar_component.rb
192
+ - app/components/better_ui/application/toast_component.html.erb
193
+ - app/components/better_ui/application/toast_component.rb
194
+ - app/components/better_ui/general/breadcrumb_component.html.erb
195
+ - app/components/better_ui/general/breadcrumb_component.rb
196
+ - app/components/better_ui/general/button_component.html.erb
197
+ - app/components/better_ui/general/button_component.rb
198
+ - app/components/better_ui/general/heading_component.html.erb
199
+ - app/components/better_ui/general/heading_component.rb
200
+ - app/components/better_ui/general/icon_component.html.erb
201
+ - app/components/better_ui/general/icon_component.rb
202
+ - app/components/better_ui/general/panel_component.html.erb
203
+ - app/components/better_ui/general/panel_component.rb
204
+ - app/components/better_ui/general/table_component.html.erb
205
+ - app/components/better_ui/general/table_component.rb
206
+ - app/components/better_ui/theme_helper.rb
200
207
  - app/controllers/better_ui/application_controller.rb
201
- - app/helpers/better_ui/application/components/card.rb
202
- - app/helpers/better_ui/application/components/card/card_helper.rb
203
- - app/helpers/better_ui/application/components/main/main_helper.rb
204
- - app/helpers/better_ui/application/components/navbar/navbar_helper.rb
205
- - app/helpers/better_ui/application/components/sidebar/sidebar_helper.rb
206
- - app/helpers/better_ui/application_helper.rb
207
- - app/helpers/better_ui/general/components/accordion.rb
208
- - app/helpers/better_ui/general/components/accordion/accordion_helper.rb
209
- - app/helpers/better_ui/general/components/alert/alert_helper.rb
210
- - app/helpers/better_ui/general/components/avatar/avatar_helper.rb
211
- - app/helpers/better_ui/general/components/badge/badge_helper.rb
212
- - app/helpers/better_ui/general/components/breadcrumb/breadcrumb_helper.rb
213
- - app/helpers/better_ui/general/components/button/button_helper.rb
214
- - app/helpers/better_ui/general/components/container/container_helper.rb
215
- - app/helpers/better_ui/general/components/divider/divider_helper.rb
216
- - app/helpers/better_ui/general/components/dropdown/divider_helper.rb
217
- - app/helpers/better_ui/general/components/dropdown/dropdown_helper.rb
218
- - app/helpers/better_ui/general/components/dropdown/item_helper.rb
219
- - app/helpers/better_ui/general/components/field/field_helper.rb
220
- - app/helpers/better_ui/general/components/heading/heading_helper.rb
221
- - app/helpers/better_ui/general/components/icon/icon_helper.rb
222
- - app/helpers/better_ui/general/components/input/checkbox/checkbox_helper.rb
223
- - app/helpers/better_ui/general/components/input/datetime/datetime_helper.rb
224
- - app/helpers/better_ui/general/components/input/radio/radio_helper.rb
225
- - app/helpers/better_ui/general/components/input/radio_group/radio_group_helper.rb
226
- - app/helpers/better_ui/general/components/input/select/select_helper.rb
227
- - app/helpers/better_ui/general/components/input/text/text_helper.rb
228
- - app/helpers/better_ui/general/components/input/textarea/textarea_helper.rb
229
- - app/helpers/better_ui/general/components/link/link_helper.rb
230
- - app/helpers/better_ui/general/components/modal.rb
231
- - app/helpers/better_ui/general/components/modal/modal_helper.rb
232
- - app/helpers/better_ui/general/components/pagination/pagination_helper.rb
233
- - app/helpers/better_ui/general/components/panel/panel_helper.rb
234
- - app/helpers/better_ui/general/components/progress/progress_helper.rb
235
- - app/helpers/better_ui/general/components/spinner/spinner_helper.rb
236
- - app/helpers/better_ui/general/components/table/table_helper.rb
237
- - app/helpers/better_ui/general/components/table/tbody_helper.rb
238
- - app/helpers/better_ui/general/components/table/td_helper.rb
239
- - app/helpers/better_ui/general/components/table/tfoot_helper.rb
240
- - app/helpers/better_ui/general/components/table/th_helper.rb
241
- - app/helpers/better_ui/general/components/table/thead_helper.rb
242
- - app/helpers/better_ui/general/components/table/tr_helper.rb
243
- - app/helpers/better_ui/general/components/tabs/panel_helper.rb
244
- - app/helpers/better_ui/general/components/tabs/tab_helper.rb
245
- - app/helpers/better_ui/general/components/tabs/tabs_helper.rb
246
- - app/helpers/better_ui/general/components/tag/tag_helper.rb
247
- - app/helpers/better_ui/general/components/tooltip/tooltip_helper.rb
208
+ - app/controllers/better_ui/docs_controller.rb
209
+ - app/helpers/better_ui_application_helper.rb
248
210
  - app/jobs/better_ui/application_job.rb
249
211
  - app/mailers/better_ui/application_mailer.rb
250
212
  - app/models/better_ui/application_record.rb
251
- - app/views/layouts/better_ui/application.html.erb
213
+ - app/views/layouts/component_preview.html.erb
252
214
  - config/initializers/lookbook.rb
253
215
  - config/routes.rb
254
216
  - lib/better_ui.rb
255
217
  - lib/better_ui/engine.rb
256
- - lib/better_ui/railtie.rb
257
218
  - lib/better_ui/version.rb
258
219
  - lib/tasks/better_ui_tasks.rake
259
220
  homepage: https://github.com/alessiobussolari/better_ui
@@ -264,7 +225,6 @@ metadata:
264
225
  homepage_uri: https://github.com/alessiobussolari/better_ui
265
226
  source_code_uri: https://github.com/alessiobussolari/better_ui
266
227
  changelog_uri: https://github.com/alessiobussolari/better_ui/blob/main/CHANGELOG.md
267
- rubygems_mfa_required: 'true'
268
228
  post_install_message:
269
229
  rdoc_options: []
270
230
  require_paths:
@@ -283,5 +243,5 @@ requirements: []
283
243
  rubygems_version: 3.5.11
284
244
  signing_key:
285
245
  specification_version: 4
286
- summary: Elegant and reusable UI components for Rails with integrated documentation
246
+ summary: Componenti UI riutilizzabili per Rails con documentazione integrata
287
247
  test_files: []
@@ -1,20 +0,0 @@
1
- <div class="<%= card_classes %>" <%= options.map { |k, v| "#{k}=\"#{v}\"" }.join(' ').html_safe %>>
2
- <p class="<%= title_classes %>"><%= title %></p>
3
- <div class="mt-2 flex items-baseline justify-between">
4
- <p class="<%= value_classes %>"><%= value %></p>
5
- <% if show_trend? %>
6
- <span class="<%= trend_classes %>">
7
- <% if trend_up? %>
8
- <svg xmlns="http://www.w3.org/2000/svg" class="<%= trend_icon_size %>" fill="none" viewBox="0 0 24 24" stroke="currentColor">
9
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 10l7-7m0 0l7 7m-7-7v18" />
10
- </svg>
11
- <% else %>
12
- <svg xmlns="http://www.w3.org/2000/svg" class="<%= trend_icon_size %>" fill="none" viewBox="0 0 24 24" stroke="currentColor">
13
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 14l-7 7m0 0l-7-7m7 7V3" />
14
- </svg>
15
- <% end %>
16
- <%= change %>
17
- </span>
18
- <% end %>
19
- </div>
20
- </div>
@@ -1,214 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module BetterUi
4
- module Application
5
- module Card
6
- class Component < ViewComponent::Base
7
- # Costanti per le classi CSS
8
- CARD_THEME = {
9
- default: 'bg-gray-900 border-gray-800',
10
- white: 'bg-white border-gray-200',
11
- red: 'bg-red-50 border-red-200',
12
- rose: 'bg-rose-50 border-rose-200',
13
- orange: 'bg-orange-50 border-orange-200',
14
- green: 'bg-green-50 border-green-200',
15
- blue: 'bg-blue-50 border-blue-200',
16
- yellow: 'bg-yellow-50 border-yellow-200',
17
- violet: 'bg-violet-50 border-violet-200',
18
- purple: 'bg-purple-50 border-purple-200'
19
- }.freeze
20
-
21
- CARD_SIZE = {
22
- small: 'p-4',
23
- medium: 'p-6',
24
- large: 'p-8'
25
- }.freeze
26
-
27
- CARD_ROUNDED = {
28
- none: 'rounded-none',
29
- small: 'rounded-md',
30
- medium: 'rounded-lg',
31
- large: 'rounded-xl',
32
- full: 'rounded-2xl'
33
- }.freeze
34
-
35
- CARD_SHADOW = {
36
- none: 'shadow-none',
37
- small: 'shadow-sm',
38
- medium: 'shadow-md',
39
- large: 'shadow-lg'
40
- }.freeze
41
-
42
- CARD_TREND_COLOR = {
43
- green: 'text-green-600',
44
- red: 'text-red-600',
45
- blue: 'text-blue-600',
46
- yellow: 'text-yellow-600',
47
- purple: 'text-purple-600',
48
- indigo: 'text-indigo-600',
49
- gray: 'text-gray-600'
50
- }.freeze
51
-
52
- CARD_TITLE_SIZE = {
53
- small: 'text-xs',
54
- medium: 'text-sm',
55
- large: 'text-base'
56
- }.freeze
57
-
58
- CARD_VALUE_SIZE = {
59
- small: 'text-lg',
60
- medium: 'text-2xl',
61
- large: 'text-3xl'
62
- }.freeze
63
-
64
- def initialize(
65
- title:,
66
- value:,
67
- trend: nil,
68
- change: nil,
69
- color: :green,
70
- theme: :default,
71
- size: :medium,
72
- rounded: :medium,
73
- shadow: :small,
74
- classes: nil,
75
- **options
76
- )
77
- @title = title
78
- @value = value
79
- @trend = trend
80
- @change = change
81
- @color = color
82
- @theme = theme
83
- @size = size
84
- @rounded = rounded
85
- @shadow = shadow
86
- @classes = classes
87
- @options = options
88
-
89
- validate_params
90
- end
91
-
92
- private
93
-
94
- attr_reader :title, :value, :trend, :change, :color, :theme, :size, :rounded, :shadow, :classes, :options
95
-
96
- def validate_params
97
- validate_theme
98
- validate_size
99
- validate_rounded
100
- validate_shadow
101
- validate_trend
102
- validate_color
103
- end
104
-
105
- def validate_theme
106
- return if CARD_THEME.key?(theme)
107
-
108
- raise ArgumentError, "Invalid theme: #{theme}. Valid options: #{CARD_THEME.keys.join(', ')}"
109
- end
110
-
111
- def validate_size
112
- return if CARD_SIZE.key?(size)
113
-
114
- raise ArgumentError, "Invalid size: #{size}. Valid options: #{CARD_SIZE.keys.join(', ')}"
115
- end
116
-
117
- def validate_rounded
118
- return if CARD_ROUNDED.key?(rounded)
119
-
120
- raise ArgumentError, "Invalid rounded: #{rounded}. Valid options: #{CARD_ROUNDED.keys.join(', ')}"
121
- end
122
-
123
- def validate_shadow
124
- return if CARD_SHADOW.key?(shadow)
125
-
126
- raise ArgumentError, "Invalid shadow: #{shadow}. Valid options: #{CARD_SHADOW.keys.join(', ')}"
127
- end
128
-
129
- def validate_trend
130
- return if trend.nil? || [:up, :down].include?(trend)
131
-
132
- raise ArgumentError, "Invalid trend: #{trend}. Valid options: :up, :down, nil"
133
- end
134
-
135
- def validate_color
136
- return if CARD_TREND_COLOR.key?(color)
137
-
138
- raise ArgumentError, "Invalid color: #{color}. Valid options: #{CARD_TREND_COLOR.keys.join(', ')}"
139
- end
140
-
141
- def card_classes
142
- base_classes = [
143
- CARD_THEME[theme],
144
- CARD_SIZE[size],
145
- CARD_ROUNDED[rounded],
146
- CARD_SHADOW[shadow],
147
- 'border'
148
- ]
149
-
150
- base_classes << classes if classes.present?
151
- base_classes.compact.join(' ')
152
- end
153
-
154
- def title_classes
155
- base_classes = [
156
- CARD_TITLE_SIZE[size],
157
- 'font-medium'
158
- ]
159
-
160
- if theme == :default
161
- base_classes << 'text-gray-300'
162
- else
163
- base_classes << 'text-gray-500'
164
- end
165
-
166
- base_classes.join(' ')
167
- end
168
-
169
- def value_classes
170
- base_classes = [
171
- CARD_VALUE_SIZE[size],
172
- 'font-semibold'
173
- ]
174
-
175
- if theme == :default
176
- base_classes << 'text-white'
177
- else
178
- base_classes << 'text-gray-900'
179
- end
180
-
181
- base_classes.join(' ')
182
- end
183
-
184
- def trend_classes
185
- base_classes = [
186
- CARD_TREND_COLOR[color],
187
- 'text-sm font-medium flex items-center'
188
- ]
189
-
190
- base_classes.join(' ')
191
- end
192
-
193
- def show_trend?
194
- trend.present? && change.present?
195
- end
196
-
197
- def trend_up?
198
- trend == :up
199
- end
200
-
201
- def trend_icon_size
202
- case size
203
- when :small
204
- 'h-3 w-3 mr-0.5'
205
- when :medium
206
- 'h-4 w-4 mr-0.5'
207
- when :large
208
- 'h-5 w-5 mr-1'
209
- end
210
- end
211
- end
212
- end
213
- end
214
- end
@@ -1,9 +0,0 @@
1
- <main class="w-full fixed <%= get_layout_class %> <%= get_padding_class(padding) %><%= classes ? ' ' + classes : '' %>">
2
- <div class="h-[calc(100vh-81px)] p-4">
3
- <div class="h-full w-full bg-white p-4 <%= get_padding_class(inner_padding) %> <%= get_rounded_class %> <%= get_shadow_class %> overflow-y-auto">
4
- <div class="h-full overflow-y-auto [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]">
5
- <%= content %>
6
- </div>
7
- </div>
8
- </div>
9
- </main>