avo 1.4.0.pre.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (329) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +4 -4
  3. data/README.md +1 -0
  4. data/app/components/avo/fields/badge_field/index_component.html.erb +3 -0
  5. data/app/components/avo/fields/badge_field/index_component.rb +4 -0
  6. data/app/components/avo/fields/badge_field/show_component.html.erb +3 -0
  7. data/app/components/avo/fields/badge_field/show_component.rb +4 -0
  8. data/app/components/avo/{edit/fields/belongs_to_field_component.html.erb → fields/belongs_to_field/edit_component.html.erb} +0 -0
  9. data/app/components/avo/{edit/fields/belongs_to_field_component.rb → fields/belongs_to_field/edit_component.rb} +1 -1
  10. data/app/components/avo/{index/fields/belongs_to_field_component.html.erb → fields/belongs_to_field/index_component.html.erb} +0 -0
  11. data/app/components/avo/fields/belongs_to_field/index_component.rb +4 -0
  12. data/app/components/avo/{show/fields/belongs_to_field_component.html.erb → fields/belongs_to_field/show_component.html.erb} +0 -0
  13. data/app/components/avo/fields/belongs_to_field/show_component.rb +4 -0
  14. data/app/components/avo/{edit/fields/boolean_field_component.html.erb → fields/boolean_field/edit_component.html.erb} +0 -0
  15. data/app/components/avo/fields/boolean_field/edit_component.rb +4 -0
  16. data/app/components/avo/fields/boolean_field/index_component.html.erb +3 -0
  17. data/app/components/avo/fields/boolean_field/index_component.rb +4 -0
  18. data/app/components/avo/{show/fields/boolean_field_component.html.erb → fields/boolean_field/show_component.html.erb} +1 -1
  19. data/app/components/avo/fields/boolean_field/show_component.rb +4 -0
  20. data/app/components/avo/{edit/fields/boolean_group_field_component.html.erb → fields/boolean_group_field/edit_component.html.erb} +0 -0
  21. data/app/components/avo/fields/boolean_group_field/edit_component.rb +4 -0
  22. data/app/components/avo/fields/boolean_group_field/index_component.html.erb +3 -0
  23. data/app/components/avo/fields/boolean_group_field/index_component.rb +4 -0
  24. data/app/components/avo/fields/boolean_group_field/show_component.html.erb +3 -0
  25. data/app/components/avo/fields/boolean_group_field/show_component.rb +4 -0
  26. data/app/components/avo/{edit/fields/code_field_component.html.erb → fields/code_field/edit_component.html.erb} +0 -0
  27. data/app/components/avo/fields/code_field/edit_component.rb +4 -0
  28. data/app/components/avo/{show/fields/code_field_component.html.erb → fields/code_field/show_component.html.erb} +0 -0
  29. data/app/components/avo/fields/code_field/show_component.rb +4 -0
  30. data/app/components/avo/{common → fields/common}/badge_viewer_component.html.erb +0 -0
  31. data/app/components/avo/{common → fields/common}/badge_viewer_component.rb +1 -1
  32. data/app/components/avo/{common → fields/common}/boolean_check_component.html.erb +0 -0
  33. data/app/components/avo/{common → fields/common}/boolean_check_component.rb +1 -1
  34. data/app/components/avo/{common → fields/common}/boolean_group_component.html.erb +1 -1
  35. data/app/components/avo/{common → fields/common}/boolean_group_component.rb +1 -1
  36. data/app/components/avo/fields/common/files_list_viewer_component.html.erb +5 -0
  37. data/app/components/avo/{common → fields/common}/files_list_viewer_component.rb +1 -1
  38. data/app/components/avo/{common → fields/common}/gravatar_viewer_component.html.erb +0 -0
  39. data/app/components/avo/{common → fields/common}/gravatar_viewer_component.rb +1 -1
  40. data/app/components/avo/{common → fields/common}/heading_component.html.erb +0 -0
  41. data/app/components/avo/{common → fields/common}/heading_component.rb +1 -1
  42. data/app/components/avo/{common → fields/common}/key_value_component.html.erb +0 -0
  43. data/app/components/avo/{common → fields/common}/key_value_component.rb +1 -1
  44. data/app/components/avo/{common → fields/common}/multiple_file_viewer_component.html.erb +0 -0
  45. data/app/components/avo/{common → fields/common}/multiple_file_viewer_component.rb +1 -1
  46. data/app/components/avo/{common → fields/common}/single_file_viewer_component.html.erb +0 -0
  47. data/app/components/avo/{common → fields/common}/single_file_viewer_component.rb +1 -1
  48. data/app/components/avo/{common → fields/common}/status_viewer_component.html.erb +0 -0
  49. data/app/components/avo/{common → fields/common}/status_viewer_component.rb +1 -1
  50. data/app/components/avo/{edit/fields/country_field_component.html.erb → fields/country_field/edit_component.html.erb} +0 -0
  51. data/app/components/avo/fields/country_field/edit_component.rb +4 -0
  52. data/app/components/avo/{index/fields/country_field_component.html.erb → fields/country_field/index_component.html.erb} +0 -0
  53. data/app/components/avo/fields/country_field/index_component.rb +4 -0
  54. data/app/components/avo/{show/fields/country_field_component.html.erb → fields/country_field/show_component.html.erb} +0 -0
  55. data/app/components/avo/fields/country_field/show_component.rb +4 -0
  56. data/app/components/avo/{edit/fields/date_field_component.html.erb → fields/date_field/edit_component.html.erb} +0 -0
  57. data/app/components/avo/fields/date_field/edit_component.rb +4 -0
  58. data/app/components/avo/{index/fields/date_field_component.html.erb → fields/date_field/index_component.html.erb} +0 -0
  59. data/app/components/avo/fields/date_field/index_component.rb +4 -0
  60. data/app/components/avo/{show/fields/date_field_component.html.erb → fields/date_field/show_component.html.erb} +0 -0
  61. data/app/components/avo/fields/date_field/show_component.rb +4 -0
  62. data/app/components/avo/{edit/fields/date_time_field_component.html.erb → fields/date_time_field/edit_component.html.erb} +0 -0
  63. data/app/components/avo/fields/date_time_field/edit_component.rb +4 -0
  64. data/app/components/avo/{index/fields/date_time_field_component.html.erb → fields/date_time_field/index_component.html.erb} +0 -0
  65. data/app/components/avo/fields/date_time_field/index_component.rb +4 -0
  66. data/app/components/avo/{show/fields/date_time_field_component.html.erb → fields/date_time_field/show_component.html.erb} +0 -0
  67. data/app/components/avo/fields/date_time_field/show_component.rb +4 -0
  68. data/app/components/avo/{edit/fields/field_component.rb → fields/edit_component.rb} +1 -1
  69. data/app/components/avo/{edit/fields/external_image_field_component.html.erb → fields/external_image_field/edit_component.html.erb} +0 -0
  70. data/app/components/avo/fields/external_image_field/edit_component.rb +4 -0
  71. data/app/components/avo/{index/fields/external_image_field_component.html.erb → fields/external_image_field/index_component.html.erb} +0 -0
  72. data/app/components/avo/fields/external_image_field/index_component.rb +4 -0
  73. data/app/components/avo/{show/fields/external_image_field_component.html.erb → fields/external_image_field/show_component.html.erb} +0 -0
  74. data/app/components/avo/fields/external_image_field/show_component.rb +4 -0
  75. data/app/components/avo/{edit/fields/file_field_component.html.erb → fields/file_field/edit_component.html.erb} +1 -1
  76. data/app/components/avo/fields/file_field/edit_component.rb +4 -0
  77. data/app/components/avo/{index/fields/file_field_component.html.erb → fields/file_field/index_component.html.erb} +1 -1
  78. data/app/components/avo/fields/file_field/index_component.rb +4 -0
  79. data/app/components/avo/fields/file_field/show_component.html.erb +3 -0
  80. data/app/components/avo/fields/file_field/show_component.rb +4 -0
  81. data/app/components/avo/{edit/fields/files_field_component.html.erb → fields/files_field/edit_component.html.erb} +1 -1
  82. data/app/components/avo/fields/files_field/edit_component.rb +4 -0
  83. data/app/components/avo/{index/fields/files_field_component.html.erb → fields/files_field/index_component.html.erb} +0 -0
  84. data/app/components/avo/fields/files_field/index_component.rb +4 -0
  85. data/app/components/avo/fields/files_field/show_component.html.erb +3 -0
  86. data/app/components/avo/fields/files_field/show_component.rb +4 -0
  87. data/app/components/avo/{index/fields/gravatar_field_component.html.erb → fields/gravatar_field/index_component.html.erb} +2 -2
  88. data/app/components/avo/fields/gravatar_field/index_component.rb +4 -0
  89. data/app/components/avo/{show/fields/gravatar_field_component.html.erb → fields/gravatar_field/show_component.html.erb} +1 -1
  90. data/app/components/avo/fields/gravatar_field/show_component.rb +4 -0
  91. data/app/components/avo/{show/fields/has_many_field_component.html.erb → fields/has_many_field/show_component.html.erb} +0 -0
  92. data/app/components/avo/fields/has_many_field/show_component.rb +4 -0
  93. data/app/components/avo/{index/fields/has_one_field_component.html.erb → fields/has_one_field/index_component.html.erb} +0 -0
  94. data/app/components/avo/fields/has_one_field/index_component.rb +4 -0
  95. data/app/components/avo/{show/fields/has_one_field_component.html.erb → fields/has_one_field/show_component.html.erb} +0 -0
  96. data/app/components/avo/fields/has_one_field/show_component.rb +5 -0
  97. data/app/components/avo/{show/fields/heading_field_component.html.erb → fields/heading_field/edit_component.html.erb} +1 -1
  98. data/app/components/avo/fields/heading_field/edit_component.rb +4 -0
  99. data/app/components/avo/{edit/fields/heading_field_component.html.erb → fields/heading_field/show_component.html.erb} +1 -1
  100. data/app/components/avo/fields/heading_field/show_component.rb +4 -0
  101. data/app/components/avo/{edit/fields/hidden_field_component.html.erb → fields/hidden_field/edit_component.html.erb} +0 -0
  102. data/app/components/avo/fields/hidden_field/edit_component.rb +4 -0
  103. data/app/components/avo/{edit/fields/id_field_component.html.erb → fields/id_field/edit_component.html.erb} +0 -0
  104. data/app/components/avo/fields/id_field/edit_component.rb +4 -0
  105. data/app/components/avo/fields/id_field/index_component.html.erb +3 -0
  106. data/app/components/avo/fields/id_field/index_component.rb +4 -0
  107. data/app/components/avo/{show/fields/id_field_component.html.erb → fields/id_field/show_component.html.erb} +0 -0
  108. data/app/components/avo/fields/id_field/show_component.rb +4 -0
  109. data/app/components/avo/fields/index_component.rb +20 -0
  110. data/app/components/avo/{edit/fields/key_value_field_component.html.erb → fields/key_value_field/edit_component.html.erb} +1 -1
  111. data/app/components/avo/fields/key_value_field/edit_component.rb +4 -0
  112. data/app/components/avo/{show/fields/key_value_field_component.html.erb → fields/key_value_field/show_component.html.erb} +1 -1
  113. data/app/components/avo/fields/key_value_field/show_component.rb +4 -0
  114. data/app/components/avo/{edit/fields/markdown_field_component.html.erb → fields/markdown_field/edit_component.html.erb} +0 -0
  115. data/app/components/avo/fields/markdown_field/edit_component.rb +4 -0
  116. data/app/components/avo/{show/fields/markdown_field_component.html.erb → fields/markdown_field/show_component.html.erb} +1 -1
  117. data/app/components/avo/fields/markdown_field/show_component.rb +4 -0
  118. data/app/components/avo/{edit/fields/number_field_component.html.erb → fields/number_field/edit_component.html.erb} +3 -3
  119. data/app/components/avo/fields/number_field/edit_component.rb +4 -0
  120. data/app/components/avo/{index/fields/number_field_component.html.erb → fields/number_field/index_component.html.erb} +0 -0
  121. data/app/components/avo/fields/number_field/index_component.rb +4 -0
  122. data/app/components/avo/{show/fields/number_field_component.html.erb → fields/number_field/show_component.html.erb} +0 -0
  123. data/app/components/avo/fields/number_field/show_component.rb +4 -0
  124. data/app/components/avo/{edit/fields/password_field_component.html.erb → fields/password_field/edit_component.html.erb} +0 -0
  125. data/app/components/avo/fields/password_field/edit_component.rb +4 -0
  126. data/app/components/avo/fields/progress_bar_field/edit_component.html.erb +26 -0
  127. data/app/components/avo/fields/progress_bar_field/edit_component.rb +4 -0
  128. data/app/components/avo/fields/progress_bar_field/index_component.html.erb +8 -0
  129. data/app/components/avo/fields/progress_bar_field/index_component.rb +4 -0
  130. data/app/components/avo/fields/progress_bar_field/show_component.html.erb +8 -0
  131. data/app/components/avo/fields/progress_bar_field/show_component.rb +4 -0
  132. data/app/components/avo/{edit/fields/select_field_component.html.erb → fields/select_field/edit_component.html.erb} +0 -0
  133. data/app/components/avo/fields/select_field/edit_component.rb +4 -0
  134. data/app/components/avo/{index/fields/select_field_component.html.erb → fields/select_field/index_component.html.erb} +0 -0
  135. data/app/components/avo/fields/select_field/index_component.rb +4 -0
  136. data/app/components/avo/{show/fields/select_field_component.html.erb → fields/select_field/show_component.html.erb} +0 -0
  137. data/app/components/avo/fields/select_field/show_component.rb +4 -0
  138. data/app/components/avo/{show/fields/field_component.rb → fields/show_component.rb} +1 -1
  139. data/app/components/avo/{edit/fields/status_field_component.html.erb → fields/status_field/edit_component.html.erb} +0 -0
  140. data/app/components/avo/fields/status_field/edit_component.rb +4 -0
  141. data/app/components/avo/fields/status_field/index_component.html.erb +3 -0
  142. data/app/components/avo/fields/status_field/index_component.rb +4 -0
  143. data/app/components/avo/fields/status_field/show_component.html.erb +3 -0
  144. data/app/components/avo/fields/status_field/show_component.rb +4 -0
  145. data/app/components/avo/{edit/fields/text_field_component.html.erb → fields/text_field/edit_component.html.erb} +0 -0
  146. data/app/components/avo/fields/text_field/edit_component.rb +4 -0
  147. data/app/components/avo/fields/text_field/index_component.html.erb +3 -0
  148. data/app/components/avo/fields/text_field/index_component.rb +4 -0
  149. data/app/components/avo/{show/fields/text_field_component.html.erb → fields/text_field/show_component.html.erb} +0 -0
  150. data/app/components/avo/fields/text_field/show_component.rb +4 -0
  151. data/app/components/avo/{edit/fields/textarea_field_component.html.erb → fields/textarea_field/edit_component.html.erb} +1 -1
  152. data/app/components/avo/fields/textarea_field/edit_component.rb +4 -0
  153. data/app/components/avo/{show/fields/textarea_field_component.html.erb → fields/textarea_field/show_component.html.erb} +0 -0
  154. data/app/components/avo/fields/textarea_field/show_component.rb +4 -0
  155. data/app/components/avo/{edit/fields/trix_field_component.html.erb → fields/trix_field/edit_component.html.erb} +1 -2
  156. data/app/components/avo/fields/trix_field/edit_component.rb +4 -0
  157. data/app/components/avo/{show/fields/trix_field_component.html.erb → fields/trix_field/show_component.html.erb} +0 -0
  158. data/app/components/avo/fields/trix_field/show_component.rb +4 -0
  159. data/app/components/avo/index/resource_controls_component.html.erb +2 -3
  160. data/app/components/avo/index/table_row_component.html.erb +1 -1
  161. data/app/components/avo/panel_component.html.erb +1 -1
  162. data/app/components/avo/panel_component.rb +4 -4
  163. data/app/components/avo/views/resource_edit_component.html.erb +2 -2
  164. data/app/components/avo/views/resource_index_component.html.erb +3 -3
  165. data/app/components/avo/views/resource_new_component.html.erb +2 -2
  166. data/app/components/avo/views/resource_show_component.html.erb +5 -5
  167. data/app/controllers/avo/base_controller.rb +26 -2
  168. data/app/controllers/avo/home_controller.rb +1 -1
  169. data/app/controllers/avo/search_controller.rb +1 -1
  170. data/app/helpers/avo/resources_helper.rb +0 -44
  171. data/app/packs/entrypoints/application.css +1 -0
  172. data/app/packs/js/controllers/fields/key_value_controller.js +0 -1
  173. data/app/packs/stylesheets/components/progress.css +13 -0
  174. data/app/views/avo/actions/show.html.erb +1 -1
  175. data/app/views/avo/partials/_profile_dropdown.html.erb +19 -0
  176. data/app/views/layouts/avo/application.html.erb +6 -3
  177. data/avo.gemspec +1 -1
  178. data/db/factories.rb +3 -0
  179. data/db/migrate/20210421064037_add_color_to_teams.rb +5 -0
  180. data/db/migrate/20210423075924_add_progress_to_projects.rb +5 -0
  181. data/lib/avo/app.rb +9 -20
  182. data/lib/avo/base_resource.rb +9 -1
  183. data/lib/avo/engine.rb +1 -0
  184. data/lib/avo/fields/badge_field.rb +4 -6
  185. data/lib/avo/fields/base_field.rb +62 -83
  186. data/lib/avo/fields/belongs_to_field.rb +11 -11
  187. data/lib/avo/fields/boolean_field.rb +2 -7
  188. data/lib/avo/fields/boolean_group_field.rb +2 -7
  189. data/lib/avo/fields/code_field.rb +3 -7
  190. data/lib/avo/fields/country_field.rb +3 -6
  191. data/lib/avo/fields/currency_field.rb +4 -13
  192. data/lib/avo/fields/date_field.rb +2 -8
  193. data/lib/avo/fields/date_time_field.rb +2 -3
  194. data/lib/avo/fields/external_image_field.rb +2 -7
  195. data/lib/avo/fields/file_field.rb +4 -8
  196. data/lib/avo/fields/files_field.rb +6 -8
  197. data/lib/avo/fields/gravatar_field.rb +6 -9
  198. data/lib/avo/fields/has_and_belongs_to_many_field.rb +6 -7
  199. data/lib/avo/fields/has_many_field.rb +3 -9
  200. data/lib/avo/fields/has_one_field.rb +3 -8
  201. data/lib/avo/fields/heading_field.rb +10 -8
  202. data/lib/avo/fields/hidden_field.rb +2 -6
  203. data/lib/avo/fields/id_field.rb +5 -17
  204. data/lib/avo/fields/key_value_field.rb +4 -6
  205. data/lib/avo/fields/markdown_field.rb +3 -5
  206. data/lib/avo/fields/number_field.rb +8 -11
  207. data/lib/avo/fields/password_field.rb +2 -6
  208. data/lib/avo/fields/progress_bar_field.rb +19 -0
  209. data/lib/avo/fields/select_field.rb +13 -12
  210. data/lib/avo/fields/status_field.rb +2 -6
  211. data/lib/avo/fields/text_field.rb +3 -6
  212. data/lib/avo/fields/textarea_field.rb +4 -7
  213. data/lib/avo/fields/trix_field.rb +5 -9
  214. data/lib/avo/fields_collector.rb +47 -11
  215. data/lib/avo/licensing/pro_license.rb +2 -1
  216. data/lib/avo/version.rb +1 -1
  217. data/lib/generators/avo/eject_generator.rb +1 -0
  218. data/lib/generators/avo/field_generator.rb +17 -0
  219. data/lib/generators/avo/filter_generator.rb +1 -1
  220. data/lib/generators/avo/templates/field/%singular_name%_field.rb.tt +5 -0
  221. data/lib/generators/avo/templates/field/components/edit_component.html.erb.tt +6 -0
  222. data/lib/generators/avo/templates/field/components/edit_component.rb.tt +4 -0
  223. data/lib/generators/avo/templates/field/components/index_component.html.erb.tt +3 -0
  224. data/lib/generators/avo/templates/field/components/index_component.rb.tt +4 -0
  225. data/lib/generators/avo/templates/field/components/show_component.html.erb.tt +3 -0
  226. data/lib/generators/avo/templates/field/components/show_component.rb.tt +4 -0
  227. data/lib/generators/avo/templates/tool/view.tt +1 -1
  228. data/public/avo-packs/css/{application-5bdca030.css → application-cb627e0b.css} +97 -35
  229. data/public/avo-packs/css/application-cb627e0b.css.br +0 -0
  230. data/public/avo-packs/css/application-cb627e0b.css.gz +0 -0
  231. data/public/avo-packs/css/application-cb627e0b.css.map +1 -0
  232. data/public/avo-packs/css/application-cb627e0b.css.map.br +0 -0
  233. data/public/avo-packs/css/application-cb627e0b.css.map.gz +0 -0
  234. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js +26 -0
  235. data/public/avo-packs/js/{application-16a456a2b7cb56b01153.js.LICENSE.txt → application-6a0b9e58526ae6bef242.js.LICENSE.txt} +0 -0
  236. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js.br +0 -0
  237. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js.gz +0 -0
  238. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js.map +1 -0
  239. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js.map.br +0 -0
  240. data/public/avo-packs/js/application-6a0b9e58526ae6bef242.js.map.gz +0 -0
  241. data/public/avo-packs/manifest.json +15 -15
  242. metadata +187 -175
  243. data/app/components/avo/common/files_list_viewer_component.html.erb +0 -5
  244. data/app/components/avo/edit/fields/boolean_field_component.rb +0 -4
  245. data/app/components/avo/edit/fields/boolean_group_field_component.rb +0 -4
  246. data/app/components/avo/edit/fields/code_field_component.rb +0 -4
  247. data/app/components/avo/edit/fields/country_field_component.rb +0 -4
  248. data/app/components/avo/edit/fields/date_field_component.rb +0 -4
  249. data/app/components/avo/edit/fields/date_time_field_component.rb +0 -4
  250. data/app/components/avo/edit/fields/external_image_field_component.rb +0 -4
  251. data/app/components/avo/edit/fields/file_field_component.rb +0 -4
  252. data/app/components/avo/edit/fields/files_field_component.rb +0 -4
  253. data/app/components/avo/edit/fields/heading_field_component.rb +0 -4
  254. data/app/components/avo/edit/fields/hidden_field_component.rb +0 -4
  255. data/app/components/avo/edit/fields/id_field_component.rb +0 -4
  256. data/app/components/avo/edit/fields/key_value_field_component.rb +0 -4
  257. data/app/components/avo/edit/fields/markdown_field_component.rb +0 -4
  258. data/app/components/avo/edit/fields/number_field_component.rb +0 -4
  259. data/app/components/avo/edit/fields/password_field_component.rb +0 -4
  260. data/app/components/avo/edit/fields/select_field_component.rb +0 -4
  261. data/app/components/avo/edit/fields/status_field_component.rb +0 -4
  262. data/app/components/avo/edit/fields/text_field_component.rb +0 -4
  263. data/app/components/avo/edit/fields/textarea_field_component.rb +0 -4
  264. data/app/components/avo/edit/fields/trix_field_component.rb +0 -4
  265. data/app/components/avo/index/fields/badge_field_component.html.erb +0 -3
  266. data/app/components/avo/index/fields/badge_field_component.rb +0 -4
  267. data/app/components/avo/index/fields/belongs_to_field_component.rb +0 -4
  268. data/app/components/avo/index/fields/boolean_field_component.html.erb +0 -3
  269. data/app/components/avo/index/fields/boolean_field_component.rb +0 -4
  270. data/app/components/avo/index/fields/boolean_group_field_component.html.erb +0 -3
  271. data/app/components/avo/index/fields/boolean_group_field_component.rb +0 -4
  272. data/app/components/avo/index/fields/country_field_component.rb +0 -4
  273. data/app/components/avo/index/fields/date_field_component.rb +0 -4
  274. data/app/components/avo/index/fields/date_time_field_component.rb +0 -4
  275. data/app/components/avo/index/fields/external_image_field_component.rb +0 -4
  276. data/app/components/avo/index/fields/field_component.html.erb +0 -1
  277. data/app/components/avo/index/fields/field_component.rb +0 -11
  278. data/app/components/avo/index/fields/file_field_component.rb +0 -4
  279. data/app/components/avo/index/fields/files_field_component.rb +0 -4
  280. data/app/components/avo/index/fields/gravatar_field_component.rb +0 -4
  281. data/app/components/avo/index/fields/has_one_field_component.rb +0 -4
  282. data/app/components/avo/index/fields/id_field_component.html.erb +0 -10
  283. data/app/components/avo/index/fields/id_field_component.rb +0 -4
  284. data/app/components/avo/index/fields/number_field_component.rb +0 -4
  285. data/app/components/avo/index/fields/select_field_component.rb +0 -4
  286. data/app/components/avo/index/fields/status_field_component.html.erb +0 -3
  287. data/app/components/avo/index/fields/status_field_component.rb +0 -4
  288. data/app/components/avo/index/fields/text_field_component.html.erb +0 -3
  289. data/app/components/avo/index/fields/text_field_component.rb +0 -4
  290. data/app/components/avo/show/fields/badge_field_component.html.erb +0 -3
  291. data/app/components/avo/show/fields/badge_field_component.rb +0 -4
  292. data/app/components/avo/show/fields/belongs_to_field_component.rb +0 -4
  293. data/app/components/avo/show/fields/boolean_field_component.rb +0 -4
  294. data/app/components/avo/show/fields/boolean_group_field_component.html.erb +0 -3
  295. data/app/components/avo/show/fields/boolean_group_field_component.rb +0 -4
  296. data/app/components/avo/show/fields/code_field_component.rb +0 -4
  297. data/app/components/avo/show/fields/country_field_component.rb +0 -4
  298. data/app/components/avo/show/fields/date_field_component.rb +0 -4
  299. data/app/components/avo/show/fields/date_time_field_component.rb +0 -4
  300. data/app/components/avo/show/fields/external_image_field_component.rb +0 -4
  301. data/app/components/avo/show/fields/file_field_component.html.erb +0 -3
  302. data/app/components/avo/show/fields/file_field_component.rb +0 -4
  303. data/app/components/avo/show/fields/files_field_component.html.erb +0 -3
  304. data/app/components/avo/show/fields/files_field_component.rb +0 -4
  305. data/app/components/avo/show/fields/gravatar_field_component.rb +0 -4
  306. data/app/components/avo/show/fields/has_many_field_component.rb +0 -4
  307. data/app/components/avo/show/fields/has_one_field_component.rb +0 -5
  308. data/app/components/avo/show/fields/heading_field_component.rb +0 -4
  309. data/app/components/avo/show/fields/id_field_component.rb +0 -4
  310. data/app/components/avo/show/fields/key_value_field_component.rb +0 -4
  311. data/app/components/avo/show/fields/markdown_field_component.rb +0 -4
  312. data/app/components/avo/show/fields/number_field_component.rb +0 -4
  313. data/app/components/avo/show/fields/select_field_component.rb +0 -4
  314. data/app/components/avo/show/fields/status_field_component.html.erb +0 -3
  315. data/app/components/avo/show/fields/status_field_component.rb +0 -4
  316. data/app/components/avo/show/fields/text_field_component.rb +0 -4
  317. data/app/components/avo/show/fields/textarea_field_component.rb +0 -4
  318. data/app/components/avo/show/fields/trix_field_component.rb +0 -4
  319. data/public/avo-packs/css/application-5bdca030.css.br +0 -0
  320. data/public/avo-packs/css/application-5bdca030.css.gz +0 -0
  321. data/public/avo-packs/css/application-5bdca030.css.map +0 -1
  322. data/public/avo-packs/css/application-5bdca030.css.map.br +0 -0
  323. data/public/avo-packs/css/application-5bdca030.css.map.gz +0 -0
  324. data/public/avo-packs/js/application-16a456a2b7cb56b01153.js +0 -26
  325. data/public/avo-packs/js/application-16a456a2b7cb56b01153.js.br +0 -0
  326. data/public/avo-packs/js/application-16a456a2b7cb56b01153.js.gz +0 -0
  327. data/public/avo-packs/js/application-16a456a2b7cb56b01153.js.map +0 -1
  328. data/public/avo-packs/js/application-16a456a2b7cb56b01153.js.map.br +0 -0
  329. data/public/avo-packs/js/application-16a456a2b7cb56b01153.js.map.gz +0 -0
@@ -1,12 +1,8 @@
1
1
  module Avo
2
2
  module Fields
3
3
  class StatusField < BaseField
4
- def initialize(name, **args, &block)
5
- @defaults = {
6
- partial_name: "status-field"
7
- }
8
-
9
- super(name, **args, &block)
4
+ def initialize(id, **args, &block)
5
+ super(id, **args, &block)
10
6
 
11
7
  @loading_when = args[:loading_when].present? ? [args[:loading_when]].flatten : [:waiting, :running]
12
8
  @failed_when = args[:failed_when].present? ? [args[:failed_when]].flatten : [:failed]
@@ -1,13 +1,10 @@
1
1
  module Avo
2
2
  module Fields
3
3
  class TextField < BaseField
4
- def initialize(name, **args, &block)
5
- @defaults = {
6
- partial_name: "text-field",
7
- computable: true
8
- }.merge(@defaults || {})
4
+ attr_reader :link_to_resource
9
5
 
10
- super(name, **args, &block)
6
+ def initialize(id, **args, &block)
7
+ super(id, **args, &block)
11
8
 
12
9
  @link_to_resource = args[:link_to_resource].present? ? args[:link_to_resource] : false
13
10
  end
@@ -1,17 +1,14 @@
1
1
  module Avo
2
2
  module Fields
3
3
  class TextareaField < TextField
4
- def initialize(name, **args, &block)
5
- @defaults = {
6
- partial_name: "textarea-field",
7
- computable: true
8
- }
4
+ attr_reader :rows
9
5
 
10
- super(name, **args, &block)
6
+ def initialize(id, **args, &block)
7
+ super(id, **args, &block)
11
8
 
12
9
  hide_on :index
13
10
 
14
- @meta[:rows] = args[:rows].present? ? args[:rows].to_i : 5
11
+ @rows = args[:rows].present? ? args[:rows].to_i : 5
15
12
  end
16
13
  end
17
14
  end
@@ -5,18 +5,14 @@ module Avo
5
5
  attr_reader :attachments_disabled
6
6
  attr_reader :attachment_key
7
7
 
8
- def initialize(name, **args, &block)
9
- @defaults = {
10
- partial_name: "trix-field"
11
- }
12
-
13
- super(name, **args, &block)
8
+ def initialize(id, **args, &block)
9
+ super(id, **args, &block)
14
10
 
15
11
  hide_on :index
16
12
 
17
- @always_show = args[:always_show].present? ? args[:always_show] : false
18
- @attachments_disabled = args[:attachments_disabled].present? ? args[:attachments_disabled] : false
19
- @attachment_key = args[:attachment_key].present? ? args[:attachment_key] : nil
13
+ @always_show = args[:always_show] || false
14
+ @attachments_disabled = args[:attachments_disabled] || false
15
+ @attachment_key = args[:attachment_key]
20
16
  end
21
17
  end
22
18
  end
@@ -1,30 +1,66 @@
1
+ # require "active_support/inflector"
2
+
1
3
  module Avo
2
4
  module FieldsCollector
3
5
  def field(field_name, as:, **args, &block)
4
6
  self.fields ||= []
5
7
 
6
- self.fields << parse_field(field_name, as: as, **args, &block)
7
- end
8
+ field_instance = parse_field(field_name, as: as, **args, &block)
8
9
 
9
- def parse_field(field_name, as:, **args, &block)
10
- matched_field = Avo::App.fields.find do |field|
11
- field[:name].to_s == as.to_s
10
+ if field_instance.present?
11
+ self.fields << field_instance
12
+ else
13
+ message = "[Avo] The #{field_name} field, as: #{as} from #{self.name} has an invalid configuration."
14
+ ::Rails.logger.warn message
12
15
  end
16
+ end
13
17
 
14
- if matched_field.present? && matched_field[:class].present?
15
- klass = matched_field[:class]
18
+ def parse_field(field_name, as:, **args, &block)
19
+ # The field is passed as a symbol eg: :text, :color_picker, :trix
20
+ if as.is_a? Symbol
21
+ field_class = field_class_from_symbol(as)
16
22
 
17
- if block
18
- klass.new(field_name, **args || {}, &block)
23
+ if field_class.present?
24
+ # The field has been registered before.
25
+ instantiate_field(field_name, klass: field_class, **args, &block)
19
26
  else
20
- klass.new(field_name, **args || {})
21
- end
27
+ # The symbol can be transformed to a class and found.
28
+ class_name = as.to_s.classify
29
+ field_class = "#{class_name}Field"
22
30
 
31
+ # Discover & load custom field classes
32
+ if Object.const_defined? field_class
33
+ instantiate_field(field_name, klass: field_class.safe_constantize, **args, &block)
34
+ end
35
+ end
36
+ elsif as.is_a? Class
37
+ # The field has been passed as a class.
38
+ if Object.const_defined? as.to_s
39
+ instantiate_field(field_name, klass: as, **args, &block)
40
+ end
23
41
  end
24
42
  end
25
43
 
26
44
  def heading(body, **args)
27
45
  self.fields << Avo::Fields::HeadingField.new(body, **args)
28
46
  end
47
+
48
+ private
49
+
50
+ def instantiate_field(field_name, klass:, **args, &block)
51
+ if block
52
+ klass.new(field_name, **args || {}, &block)
53
+ else
54
+ klass.new(field_name, **args || {})
55
+ end
56
+ end
57
+
58
+ def field_class_from_symbol(symbol)
59
+ matched_field = Avo::App.fields.find do |field|
60
+ field[:name].to_s == symbol.to_s
61
+ end
62
+
63
+ return matched_field[:class] if matched_field.present? && matched_field[:class].present?
64
+ end
29
65
  end
30
66
  end
@@ -4,7 +4,8 @@ module Avo
4
4
  def abilities
5
5
  [
6
6
  :authorization,
7
- :custom_tools
7
+ :custom_tools,
8
+ :custom_fields
8
9
  ]
9
10
  end
10
11
  end
data/lib/avo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Avo
2
- VERSION = "1.4.0.pre.1"
2
+ VERSION = "1.4.0"
3
3
  end
@@ -15,6 +15,7 @@ module Generators
15
15
  logo: "app/views/avo/partials/_logo.html.erb",
16
16
  head: "app/views/avo/partials/_head.html.erb",
17
17
  header: "app/views/avo/partials/_header.html.erb",
18
+ profile_dropdown: "app/views/avo/partials/_profile_dropdown.html.erb",
18
19
  footer: "app/views/avo/partials/_footer.html.erb",
19
20
  scripts: "app/views/avo/partials/_scripts.html.erb"
20
21
  }
@@ -0,0 +1,17 @@
1
+ require "rails/generators"
2
+
3
+ module Generators
4
+ module Avo
5
+ class FieldGenerator < ::Rails::Generators::NamedBase
6
+ source_root File.expand_path("templates", __dir__)
7
+
8
+ namespace "avo:field"
9
+ desc "Add a custom Avo field to your project."
10
+
11
+ def handle
12
+ directory "field/components", "app/components/avo/fields/#{singular_name}_field"
13
+ template "field/%singular_name%_field.rb.tt", "app/avo/fields/#{singular_name}_field.rb"
14
+ end
15
+ end
16
+ end
17
+ end
@@ -13,7 +13,7 @@ module Generators
13
13
 
14
14
  type = "select" if options[:select]
15
15
 
16
- template "filters/#{type}_filter.tt", "app/services/avo/filters/#{singular_name}.rb"
16
+ template "filters/#{type}_filter.tt", "app/avo/filters/#{singular_name}.rb"
17
17
  end
18
18
  end
19
19
  end
@@ -0,0 +1,5 @@
1
+ class <%= class_name %>Field < Avo::Fields::BaseField
2
+ def initialize(name, **args, &block)
3
+ super(name, **args, &block)
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ <%%= edit_field_wrapper field: @field, index: @index, form: @form, resource: @resource, displayed_in_modal: @displayed_in_modal do %>
2
+ <%%= @form.text_field @field.id,
3
+ class: helpers.input_classes('w-full', has_error: @field.model_errors.include?(@field.id)),
4
+ placeholder: @field.placeholder,
5
+ disabled: @field.readonly %>
6
+ <%% end %>
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Avo::Fields::<%= class_name %>Field::EditComponent < Avo::Fields::EditComponent
4
+ end
@@ -0,0 +1,3 @@
1
+ <%%= index_field_wrapper field: @field do %>
2
+ <%%= @field.value %>
3
+ <%% end %>
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Avo::Fields::<%= class_name %>Field::IndexComponent < Avo::Fields::IndexComponent
4
+ end
@@ -0,0 +1,3 @@
1
+ <%%= show_field_wrapper field: @field, index: @index do %>
2
+ <%%= @field.value %>
3
+ <%% end %>
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Avo::Fields::<%= class_name %>Field::ShowComponent < Avo::Fields::ShowComponent
4
+ end
@@ -1,5 +1,5 @@
1
1
  <div class="flex flex-col">
2
- <%%= render Avo::PanelComponent.new title: '<%= human_name %>' do |c| %>
2
+ <%%= render Avo::PanelComponent.new title: '<%= human_name %>', display_breadcrumbs: true do |c| %>
3
3
  <%% c.tools do %>
4
4
  <div class="text-sm italic">This is the panels tools section.</div>
5
5
  <%% end %>
@@ -2231,6 +2231,11 @@ select {
2231
2231
  background-color: rgba(59, 130, 246, var(--tw-bg-opacity));
2232
2232
  }
2233
2233
 
2234
+ .hover\:bg-green-500:hover {
2235
+ --tw-bg-opacity: 1;
2236
+ background-color: rgba(16, 185, 129, var(--tw-bg-opacity));
2237
+ }
2238
+
2234
2239
  .hover\:bg-blue-300:hover {
2235
2240
  --tw-bg-opacity: 1;
2236
2241
  background-color: rgba(147, 197, 253, var(--tw-bg-opacity));
@@ -3656,6 +3661,39 @@ span.CodeMirror-selectedtext { background: none; }
3656
3661
  z-index: 50;
3657
3662
  }
3658
3663
 
3664
+ progress {
3665
+ height: 0.5rem;
3666
+ border-radius: 0.25rem;
3667
+ border-width: 1px;
3668
+ --tw-border-opacity: 1;
3669
+ border-color: rgba(156, 163, 175, var(--tw-border-opacity));
3670
+ --tw-bg-opacity: 1;
3671
+ background-color: rgba(255, 255, 255, var(--tw-bg-opacity));
3672
+ --tw-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06);
3673
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
3674
+ }
3675
+ progress[value]::-webkit-progress-bar {
3676
+ border-radius: 0.25rem;
3677
+ border-width: 1px;
3678
+ --tw-border-opacity: 1;
3679
+ border-color: rgba(107, 114, 128, var(--tw-border-opacity));
3680
+ --tw-bg-opacity: 1;
3681
+ background-color: rgba(255, 255, 255, var(--tw-bg-opacity));
3682
+ --tw-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06);
3683
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
3684
+ }
3685
+ progress[value]::-webkit-progress-value {
3686
+ border-radius: 0.25rem;
3687
+ --tw-bg-opacity: 1;
3688
+ background-color: rgba(5, 150, 105, var(--tw-bg-opacity))
3689
+ }
3690
+ progress[value]::-moz-progress-bar {
3691
+ appearance: none;
3692
+ border-radius: 0.25rem;
3693
+ --tw-bg-opacity: 1;
3694
+ background-color: rgba(5, 150, 105, var(--tw-bg-opacity))
3695
+ }
3696
+
3659
3697
  .container {
3660
3698
  width: 100%;
3661
3699
  }
@@ -4239,6 +4277,10 @@ span.CodeMirror-selectedtext { background: none; }
4239
4277
  --tw-bg-opacity: 1;
4240
4278
  background-color: rgba(59, 130, 246, var(--tw-bg-opacity));
4241
4279
  }
4280
+ .hover\:bg-green-500:hover {
4281
+ --tw-bg-opacity: 1;
4282
+ background-color: rgba(16, 185, 129, var(--tw-bg-opacity));
4283
+ }
4242
4284
  .hover\:bg-blue-300:hover {
4243
4285
  --tw-bg-opacity: 1;
4244
4286
  background-color: rgba(147, 197, 253, var(--tw-bg-opacity));
@@ -4682,12 +4724,15 @@ span.CodeMirror-selectedtext { background: none; }
4682
4724
  .ml-1 {
4683
4725
  margin-left: 0.25rem
4684
4726
  }
4727
+ .mr-6 {
4728
+ margin-right: 1.5rem
4729
+ }
4730
+ .mt-0 {
4731
+ margin-top: 0px
4732
+ }
4685
4733
  .ml-1\/12 {
4686
4734
  margin-left: 8.333333%
4687
4735
  }
4688
- .ml-6 {
4689
- margin-left: 1.5rem
4690
- }
4691
4736
  .-mb-1 {
4692
4737
  margin-bottom: -0.25rem
4693
4738
  }
@@ -4706,6 +4751,9 @@ span.CodeMirror-selectedtext { background: none; }
4706
4751
  .ml-2 {
4707
4752
  margin-left: 0.5rem
4708
4753
  }
4754
+ .ml-6 {
4755
+ margin-left: 1.5rem
4756
+ }
4709
4757
  .block {
4710
4758
  display: block
4711
4759
  }
@@ -4751,6 +4799,9 @@ span.CodeMirror-selectedtext { background: none; }
4751
4799
  .h-full {
4752
4800
  height: 100%
4753
4801
  }
4802
+ .h-12 {
4803
+ height: 3rem
4804
+ }
4754
4805
  .h-16 {
4755
4806
  height: 4rem
4756
4807
  }
@@ -4760,9 +4811,6 @@ span.CodeMirror-selectedtext { background: none; }
4760
4811
  .h-10 {
4761
4812
  height: 2.5rem
4762
4813
  }
4763
- .h-12 {
4764
- height: 3rem
4765
- }
4766
4814
  .max-h-168 {
4767
4815
  max-height: 42rem
4768
4816
  }
@@ -4781,15 +4829,15 @@ span.CodeMirror-selectedtext { background: none; }
4781
4829
  .min-h-1\/3 {
4782
4830
  min-height: 33.333333%
4783
4831
  }
4784
- .min-h-48 {
4785
- min-height: 12rem
4786
- }
4787
4832
  .min-h-16 {
4788
4833
  min-height: 4rem
4789
4834
  }
4790
4835
  .min-h-inherit {
4791
4836
  min-height: inherit
4792
4837
  }
4838
+ .min-h-48 {
4839
+ min-height: 12rem
4840
+ }
4793
4841
  .w-5 {
4794
4842
  width: 1.25rem
4795
4843
  }
@@ -4835,6 +4883,9 @@ span.CodeMirror-selectedtext { background: none; }
4835
4883
  .min-w-300px {
4836
4884
  min-width: 300px
4837
4885
  }
4886
+ .min-w-\[200px\] {
4887
+ min-width: 200px
4888
+ }
4838
4889
  .min-w-4 {
4839
4890
  min-width: 1rem
4840
4891
  }
@@ -4888,12 +4939,12 @@ span.CodeMirror-selectedtext { background: none; }
4888
4939
  -webkit-appearance: none;
4889
4940
  appearance: none
4890
4941
  }
4891
- .grid-cols-3 {
4892
- grid-template-columns: repeat(3, minmax(0, 1fr))
4893
- }
4894
4942
  .grid-cols-1 {
4895
4943
  grid-template-columns: repeat(1, minmax(0, 1fr))
4896
4944
  }
4945
+ .grid-cols-3 {
4946
+ grid-template-columns: repeat(3, minmax(0, 1fr))
4947
+ }
4897
4948
  .flex-col {
4898
4949
  flex-direction: column
4899
4950
  }
@@ -4924,18 +4975,18 @@ span.CodeMirror-selectedtext { background: none; }
4924
4975
  .justify-end {
4925
4976
  justify-content: flex-end
4926
4977
  }
4927
- .justify-evenly {
4928
- justify-content: space-evenly
4929
- }
4930
4978
  .justify-around {
4931
4979
  justify-content: space-around
4932
4980
  }
4933
- .gap-3 {
4934
- gap: 0.75rem
4981
+ .justify-evenly {
4982
+ justify-content: space-evenly
4935
4983
  }
4936
4984
  .gap-6 {
4937
4985
  gap: 1.5rem
4938
4986
  }
4987
+ .gap-3 {
4988
+ gap: 0.75rem
4989
+ }
4939
4990
  .space-y-2 > :not([hidden]) ~ :not([hidden]) {
4940
4991
  --tw-space-y-reverse: 0;
4941
4992
  margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
@@ -4956,16 +5007,16 @@ span.CodeMirror-selectedtext { background: none; }
4956
5007
  margin-right: calc(0.5rem * var(--tw-space-x-reverse));
4957
5008
  margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)))
4958
5009
  }
4959
- .space-y-3 > :not([hidden]) ~ :not([hidden]) {
4960
- --tw-space-y-reverse: 0;
4961
- margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
4962
- margin-bottom: calc(0.75rem * var(--tw-space-y-reverse))
4963
- }
4964
5010
  .space-x-3 > :not([hidden]) ~ :not([hidden]) {
4965
5011
  --tw-space-x-reverse: 0;
4966
5012
  margin-right: calc(0.75rem * var(--tw-space-x-reverse));
4967
5013
  margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse)))
4968
5014
  }
5015
+ .space-y-3 > :not([hidden]) ~ :not([hidden]) {
5016
+ --tw-space-y-reverse: 0;
5017
+ margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
5018
+ margin-bottom: calc(0.75rem * var(--tw-space-y-reverse))
5019
+ }
4969
5020
  .divide-y > :not([hidden]) ~ :not([hidden]) {
4970
5021
  --tw-divide-y-reverse: 0;
4971
5022
  border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
@@ -5013,12 +5064,12 @@ span.CodeMirror-selectedtext { background: none; }
5013
5064
  .rounded {
5014
5065
  border-radius: 0.25rem
5015
5066
  }
5016
- .\!rounded-none {
5017
- border-radius: 0px !important
5018
- }
5019
5067
  .rounded-full {
5020
5068
  border-radius: 9999px
5021
5069
  }
5070
+ .\!rounded-none {
5071
+ border-radius: 0px !important
5072
+ }
5022
5073
  .rounded-r-md {
5023
5074
  border-top-right-radius: 0.375rem;
5024
5075
  border-bottom-right-radius: 0.375rem
@@ -5034,6 +5085,9 @@ span.CodeMirror-selectedtext { background: none; }
5034
5085
  .border {
5035
5086
  border-width: 1px
5036
5087
  }
5088
+ .border-4 {
5089
+ border-width: 4px
5090
+ }
5037
5091
  .border-t {
5038
5092
  border-top-width: 1px
5039
5093
  }
@@ -5110,6 +5164,10 @@ span.CodeMirror-selectedtext { background: none; }
5110
5164
  --tw-border-opacity: 1;
5111
5165
  border-color: rgba(209, 213, 219, var(--tw-border-opacity))
5112
5166
  }
5167
+ .border-white {
5168
+ --tw-border-opacity: 1;
5169
+ border-color: rgba(255, 255, 255, var(--tw-border-opacity))
5170
+ }
5113
5171
  .border-gray-500 {
5114
5172
  --tw-border-opacity: 1;
5115
5173
  border-color: rgba(107, 114, 128, var(--tw-border-opacity))
@@ -5261,17 +5319,17 @@ span.CodeMirror-selectedtext { background: none; }
5261
5319
  padding-left: 6rem;
5262
5320
  padding-right: 6rem
5263
5321
  }
5264
- .py-px {
5265
- padding-top: 1px;
5266
- padding-bottom: 1px
5322
+ .py-0 {
5323
+ padding-top: 0px;
5324
+ padding-bottom: 0px
5267
5325
  }
5268
5326
  .py-3 {
5269
5327
  padding-top: 0.75rem;
5270
5328
  padding-bottom: 0.75rem
5271
5329
  }
5272
- .py-0 {
5273
- padding-top: 0px;
5274
- padding-bottom: 0px
5330
+ .py-px {
5331
+ padding-top: 1px;
5332
+ padding-bottom: 1px
5275
5333
  }
5276
5334
  .py-8 {
5277
5335
  padding-top: 2rem;
@@ -5283,12 +5341,12 @@ span.CodeMirror-selectedtext { background: none; }
5283
5341
  .pb-0 {
5284
5342
  padding-bottom: 0px
5285
5343
  }
5286
- .pl-6 {
5287
- padding-left: 1.5rem
5288
- }
5289
5344
  .pb-3\/4 {
5290
5345
  padding-bottom: 75%
5291
5346
  }
5347
+ .pl-6 {
5348
+ padding-left: 1.5rem
5349
+ }
5292
5350
  .text-center {
5293
5351
  text-align: center
5294
5352
  }
@@ -5613,6 +5671,10 @@ span.CodeMirror-selectedtext { background: none; }
5613
5671
  --tw-bg-opacity: 1;
5614
5672
  background-color: rgba(59, 130, 246, var(--tw-bg-opacity))
5615
5673
  }
5674
+ .hover\:bg-green-500:hover {
5675
+ --tw-bg-opacity: 1;
5676
+ background-color: rgba(16, 185, 129, var(--tw-bg-opacity))
5677
+ }
5616
5678
  .hover\:bg-blue-300:hover {
5617
5679
  --tw-bg-opacity: 1;
5618
5680
  background-color: rgba(147, 197, 253, var(--tw-bg-opacity))
@@ -5988,4 +6050,4 @@ html, body{
5988
6050
  }
5989
6051
 
5990
6052
 
5991
- /*# sourceMappingURL=application-5bdca030.css.map*/
6053
+ /*# sourceMappingURL=application-cb627e0b.css.map*/