activeadmin 3.4.0 → 4.0.0.beta18

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.
Files changed (357) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -102
  3. data/CONTRIBUTING.md +32 -117
  4. data/README.md +17 -30
  5. data/UPGRADING.md +241 -0
  6. data/app/assets/config/active_admin_manifest.js +2 -0
  7. data/{lib → app/controllers}/active_admin/base_controller/authorization.rb +1 -1
  8. data/app/controllers/active_admin/base_controller/menu.rb +39 -0
  9. data/{lib → app/controllers}/active_admin/base_controller.rb +46 -18
  10. data/{lib → app/controllers}/active_admin/page_controller.rb +0 -4
  11. data/{lib → app/controllers}/active_admin/resource_controller/action_builder.rb +1 -1
  12. data/{lib → app/controllers}/active_admin/resource_controller/data_access.rb +11 -6
  13. data/{lib → app/controllers}/active_admin/resource_controller/scoping.rb +1 -1
  14. data/{lib → app/controllers}/active_admin/resource_controller/streaming.rb +4 -4
  15. data/app/controllers/active_admin/resource_controller.rb +102 -0
  16. data/app/helpers/active_admin/auto_link_helper.rb +66 -0
  17. data/app/helpers/active_admin/breadcrumb_helper.rb +41 -0
  18. data/app/helpers/active_admin/display_helper.rb +117 -0
  19. data/app/helpers/active_admin/form_helper.rb +95 -0
  20. data/app/helpers/active_admin/index_helper.rb +40 -0
  21. data/app/helpers/active_admin/layout_helper.rb +63 -0
  22. data/app/javascript/active_admin/features/batch_actions.js +95 -0
  23. data/app/javascript/active_admin/features/dark_mode_toggle.js +37 -0
  24. data/app/javascript/active_admin/features/filters.js +34 -0
  25. data/app/javascript/active_admin/features/has_many.js +28 -0
  26. data/app/javascript/active_admin/features/main_menu.js +12 -0
  27. data/app/javascript/active_admin/features/per_page.js +9 -0
  28. data/app/javascript/active_admin/utils/dom.js +17 -0
  29. data/app/javascript/active_admin.js +10 -0
  30. data/app/views/active_admin/_flash_messages.html.erb +22 -0
  31. data/app/views/active_admin/_html_head.html.erb +13 -0
  32. data/app/views/active_admin/_main_navigation.html.erb +28 -0
  33. data/app/views/active_admin/_page_header.html.erb +27 -0
  34. data/app/views/active_admin/_sidebar.html.erb +5 -0
  35. data/app/views/active_admin/_site_footer.html.erb +7 -0
  36. data/app/views/active_admin/_site_header.html.erb +30 -0
  37. data/app/views/active_admin/devise/confirmations/new.html.erb +5 -3
  38. data/app/views/active_admin/devise/passwords/edit.html.erb +5 -3
  39. data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
  40. data/app/views/active_admin/devise/registrations/new.html.erb +6 -4
  41. data/app/views/active_admin/devise/sessions/new.html.erb +6 -4
  42. data/app/views/active_admin/devise/shared/_links.erb +3 -1
  43. data/app/views/active_admin/devise/unlocks/new.html.erb +6 -4
  44. data/app/views/{kaminari/active_admin_countless → active_admin/kaminari}/_gap.html.erb +3 -1
  45. data/app/views/active_admin/kaminari/_next_page.html.erb +16 -0
  46. data/app/views/active_admin/kaminari/_page.html.erb +14 -0
  47. data/app/views/{kaminari/active_admin_countless → active_admin/kaminari}/_paginator.html.erb +1 -2
  48. data/app/views/active_admin/kaminari/_prev_page.html.erb +16 -0
  49. data/app/views/active_admin/page/index.html.arb +5 -2
  50. data/app/views/active_admin/resource/_active_filters.html.erb +32 -0
  51. data/app/views/active_admin/resource/_batch_actions_dropdown.html.erb +19 -0
  52. data/app/views/active_admin/resource/_form.html.arb +15 -0
  53. data/app/views/active_admin/resource/_form_default.html.arb +11 -0
  54. data/app/views/active_admin/resource/_index_as_table_default.html.arb +8 -0
  55. data/app/views/active_admin/resource/_index_blank_slate.html.erb +14 -0
  56. data/app/views/active_admin/resource/_index_empty_results.html.erb +5 -0
  57. data/app/views/active_admin/resource/_index_table_actions_default.html.erb +9 -0
  58. data/app/views/active_admin/resource/_show_default.html.arb +2 -0
  59. data/app/views/active_admin/resource/edit.html.arb +1 -2
  60. data/app/views/active_admin/resource/index.html.arb +94 -2
  61. data/app/views/active_admin/resource/new.html.arb +1 -2
  62. data/app/views/active_admin/resource/show.html.arb +12 -2
  63. data/app/views/active_admin/shared/_action_items.html.erb +3 -0
  64. data/app/views/active_admin/shared/_download_format_links.html.erb +7 -0
  65. data/app/views/active_admin/shared/_resource_comments.html.erb +51 -0
  66. data/app/views/active_admin/shared/_sidebar_section.html.arb +6 -0
  67. data/app/views/active_admin/shared/_sidebar_sections.html.erb +5 -0
  68. data/app/views/layouts/active_admin.html.erb +20 -0
  69. data/app/views/layouts/active_admin_logged_out.html.erb +8 -45
  70. data/config/importmap.rb +5 -0
  71. data/config/locales/ar.yml +136 -116
  72. data/config/locales/az.yml +103 -118
  73. data/config/locales/bg.yml +91 -99
  74. data/config/locales/bs.yml +95 -101
  75. data/config/locales/ca.yml +131 -86
  76. data/config/locales/cs.yml +82 -90
  77. data/config/locales/da.yml +102 -117
  78. data/config/locales/de.yml +130 -141
  79. data/config/locales/el.yml +94 -106
  80. data/config/locales/en-CA.yml +104 -119
  81. data/config/locales/en-GB.yml +104 -119
  82. data/config/locales/en.yml +134 -140
  83. data/config/locales/eo.yml +107 -123
  84. data/config/locales/es-MX.yml +70 -78
  85. data/config/locales/es.yml +129 -138
  86. data/config/locales/fa.yml +91 -99
  87. data/config/locales/fi.yml +84 -92
  88. data/config/locales/fr.yml +135 -120
  89. data/config/locales/he.yml +103 -118
  90. data/config/locales/hr.yml +95 -103
  91. data/config/locales/hu.yml +76 -81
  92. data/config/locales/id.yml +97 -112
  93. data/config/locales/it.yml +134 -140
  94. data/config/locales/ja.yml +109 -120
  95. data/config/locales/ko.yml +136 -101
  96. data/config/locales/lt.yml +106 -121
  97. data/config/locales/lv.yml +70 -75
  98. data/config/locales/mk.yml +100 -114
  99. data/config/locales/nb.yml +98 -109
  100. data/config/locales/nl.yml +113 -122
  101. data/config/locales/pl.yml +137 -146
  102. data/config/locales/pt-BR.yml +134 -121
  103. data/config/locales/pt-PT.yml +71 -76
  104. data/config/locales/ro.yml +74 -79
  105. data/config/locales/ru.yml +142 -122
  106. data/config/locales/sk.yml +131 -146
  107. data/config/locales/sv-SE.yml +126 -141
  108. data/config/locales/tr.yml +105 -120
  109. data/config/locales/uk.yml +140 -119
  110. data/config/locales/vi.yml +125 -140
  111. data/config/locales/zh-CN.yml +135 -141
  112. data/config/locales/zh-TW.yml +136 -116
  113. data/lib/active_admin/application.rb +6 -14
  114. data/lib/active_admin/application_settings.rb +1 -1
  115. data/lib/active_admin/async_count.rb +23 -0
  116. data/lib/active_admin/batch_actions/controller.rb +1 -4
  117. data/lib/active_admin/batch_actions/resource_extension.rb +8 -15
  118. data/lib/active_admin/batch_actions/views/batch_action_form.rb +1 -7
  119. data/lib/active_admin/batch_actions/views/selection_cells.rb +3 -3
  120. data/lib/active_admin/batch_actions.rb +4 -9
  121. data/lib/active_admin/callbacks.rb +6 -4
  122. data/lib/active_admin/collection_decorator.rb +1 -1
  123. data/lib/active_admin/component.rb +0 -1
  124. data/lib/active_admin/csv_builder.rb +2 -2
  125. data/lib/active_admin/devise.rb +3 -3
  126. data/lib/active_admin/dsl.rb +3 -3
  127. data/lib/active_admin/dynamic_settings_node.rb +6 -6
  128. data/lib/active_admin/engine.rb +23 -7
  129. data/lib/active_admin/filters/active.rb +8 -6
  130. data/lib/active_admin/filters/active_filter.rb +2 -10
  131. data/lib/active_admin/filters/forms.rb +1 -45
  132. data/lib/active_admin/filters/resource_extension.rb +18 -10
  133. data/lib/active_admin/filters.rb +5 -7
  134. data/lib/active_admin/form_builder.rb +14 -17
  135. data/lib/active_admin/helpers/optional_display.rb +1 -1
  136. data/lib/active_admin/inputs/filters/base/search_method_select.rb +10 -12
  137. data/lib/active_admin/inputs/filters/base.rb +1 -1
  138. data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -6
  139. data/lib/active_admin/inputs/filters/date_range_input.rb +4 -2
  140. data/lib/active_admin/inputs.rb +0 -3
  141. data/lib/active_admin/localizers.rb +1 -1
  142. data/lib/active_admin/menu.rb +10 -7
  143. data/lib/active_admin/menu_collection.rb +1 -1
  144. data/lib/active_admin/menu_item.rb +24 -3
  145. data/lib/active_admin/namespace.rb +3 -45
  146. data/lib/active_admin/namespace_settings.rb +3 -36
  147. data/lib/active_admin/order_clause.rb +4 -1
  148. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +4 -76
  149. data/lib/active_admin/orm/active_record/comments/views.rb +2 -2
  150. data/lib/active_admin/orm/active_record/comments.rb +13 -8
  151. data/lib/active_admin/orm/active_record.rb +1 -1
  152. data/lib/active_admin/pundit_adapter.rb +3 -3
  153. data/lib/active_admin/resource/action_items.rb +18 -23
  154. data/lib/active_admin/resource/naming.rb +2 -3
  155. data/lib/active_admin/resource/page_presenters.rb +2 -2
  156. data/lib/active_admin/resource/sidebars.rb +1 -1
  157. data/lib/active_admin/resource.rb +17 -16
  158. data/lib/active_admin/resource_collection.rb +1 -1
  159. data/lib/active_admin/resource_dsl.rb +3 -3
  160. data/lib/active_admin/scope.rb +11 -1
  161. data/lib/active_admin/settings_node.rb +1 -1
  162. data/lib/active_admin/sidebar_section.rb +0 -5
  163. data/lib/active_admin/version.rb +1 -1
  164. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +1 -1
  165. data/lib/active_admin/view_helpers.rb +0 -12
  166. data/lib/active_admin/views/components/active_admin_form.rb +21 -29
  167. data/lib/active_admin/views/components/attributes_table.rb +14 -16
  168. data/lib/active_admin/views/components/index_list.rb +10 -23
  169. data/lib/active_admin/views/components/paginated_collection.rb +34 -39
  170. data/lib/active_admin/views/components/panel.rb +3 -11
  171. data/lib/active_admin/views/components/scopes.rb +39 -26
  172. data/lib/active_admin/views/components/status_tag.rb +22 -19
  173. data/lib/active_admin/views/components/table_for.rb +25 -25
  174. data/lib/active_admin/views/index_as_table.rb +39 -101
  175. data/lib/active_admin.rb +16 -15
  176. data/lib/activeadmin.rb +1 -1
  177. data/lib/generators/active_admin/assets/assets_generator.rb +4 -4
  178. data/lib/generators/active_admin/assets/templates/active_admin.css +3 -0
  179. data/lib/generators/active_admin/assets/templates/tailwind.config.js +21 -0
  180. data/lib/generators/active_admin/devise/devise_generator.rb +2 -2
  181. data/lib/generators/active_admin/install/install_generator.rb +2 -8
  182. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +10 -87
  183. data/lib/generators/active_admin/install/templates/dashboard.rb +8 -25
  184. data/lib/generators/active_admin/page/page_generator.rb +0 -1
  185. data/lib/generators/active_admin/resource/resource_generator.rb +50 -7
  186. data/lib/generators/active_admin/resource/templates/resource.rb.erb +42 -0
  187. data/lib/generators/active_admin/views_generator.rb +18 -0
  188. data/plugin.js +414 -0
  189. data/vendor/bundle/offense.rb +1 -0
  190. data/vendor/javascript/flowbite.js +1 -0
  191. data/vendor/javascript/rails_ujs_esm.js +1 -0
  192. metadata +80 -207
  193. data/app/assets/javascripts/active_admin/base.js +0 -517
  194. data/app/assets/stylesheets/active_admin/_base.scss +0 -57
  195. data/app/assets/stylesheets/active_admin/_forms.scss +0 -315
  196. data/app/assets/stylesheets/active_admin/_header.scss +0 -188
  197. data/app/assets/stylesheets/active_admin/_mixins.scss +0 -1
  198. data/app/assets/stylesheets/active_admin/_normalize.scss +0 -349
  199. data/app/assets/stylesheets/active_admin/_print.scss +0 -287
  200. data/app/assets/stylesheets/active_admin/_typography.scss +0 -100
  201. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -6
  202. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +0 -30
  203. data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +0 -20
  204. data/app/assets/stylesheets/active_admin/components/_buttons.scss +0 -6
  205. data/app/assets/stylesheets/active_admin/components/_columns.scss +0 -3
  206. data/app/assets/stylesheets/active_admin/components/_comments.scss +0 -41
  207. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +0 -148
  208. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -154
  209. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +0 -37
  210. data/app/assets/stylesheets/active_admin/components/_grid.scss +0 -9
  211. data/app/assets/stylesheets/active_admin/components/_index_list.scss +0 -12
  212. data/app/assets/stylesheets/active_admin/components/_links.scss +0 -5
  213. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +0 -34
  214. data/app/assets/stylesheets/active_admin/components/_pagination.scss +0 -58
  215. data/app/assets/stylesheets/active_admin/components/_panels.scss +0 -6
  216. data/app/assets/stylesheets/active_admin/components/_scopes.scss +0 -13
  217. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -12
  218. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +0 -70
  219. data/app/assets/stylesheets/active_admin/components/_tables.scss +0 -112
  220. data/app/assets/stylesheets/active_admin/components/_tabs.scss +0 -68
  221. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +0 -16
  222. data/app/assets/stylesheets/active_admin/mixins/_all.scss +0 -8
  223. data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +0 -65
  224. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +0 -28
  225. data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +0 -22
  226. data/app/assets/stylesheets/active_admin/mixins/_sections.scss +0 -41
  227. data/app/assets/stylesheets/active_admin/mixins/_shadows.scss +0 -15
  228. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +0 -3
  229. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +0 -17
  230. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +0 -51
  231. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +0 -44
  232. data/app/assets/stylesheets/active_admin/structure/_footer.scss +0 -19
  233. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +0 -29
  234. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -43
  235. data/app/javascript/active_admin/base.js +0 -28
  236. data/app/javascript/active_admin/ext/jquery-ui.js +0 -7
  237. data/app/javascript/active_admin/ext/jquery.js +0 -9
  238. data/app/javascript/active_admin/initializers/batch-actions.js +0 -61
  239. data/app/javascript/active_admin/initializers/checkbox-toggler.js +0 -3
  240. data/app/javascript/active_admin/initializers/datepicker.js +0 -16
  241. data/app/javascript/active_admin/initializers/dropdown-menu.js +0 -9
  242. data/app/javascript/active_admin/initializers/filters.js +0 -10
  243. data/app/javascript/active_admin/initializers/has-many.js +0 -98
  244. data/app/javascript/active_admin/initializers/per-page.js +0 -13
  245. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +0 -3
  246. data/app/javascript/active_admin/initializers/tabs.js +0 -6
  247. data/app/javascript/active_admin/lib/checkbox-toggler.js +0 -49
  248. data/app/javascript/active_admin/lib/dropdown-menu.js +0 -116
  249. data/app/javascript/active_admin/lib/filters.js +0 -39
  250. data/app/javascript/active_admin/lib/modal-dialog.js +0 -63
  251. data/app/javascript/active_admin/lib/per-page.js +0 -38
  252. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +0 -38
  253. data/app/javascript/active_admin/lib/utils.js +0 -40
  254. data/app/views/kaminari/active_admin/_first_page.html.erb +0 -11
  255. data/app/views/kaminari/active_admin/_gap.html.erb +0 -8
  256. data/app/views/kaminari/active_admin/_last_page.html.erb +0 -11
  257. data/app/views/kaminari/active_admin/_next_page.html.erb +0 -11
  258. data/app/views/kaminari/active_admin/_page.html.erb +0 -12
  259. data/app/views/kaminari/active_admin/_paginator.html.erb +0 -25
  260. data/app/views/kaminari/active_admin/_prev_page.html.erb +0 -11
  261. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +0 -11
  262. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +0 -11
  263. data/app/views/kaminari/active_admin_countless/_page.html.erb +0 -12
  264. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +0 -11
  265. data/app/views/layouts/active_admin.html.arb +0 -2
  266. data/config/locales/de-CH.yml +0 -94
  267. data/lib/active_admin/abstract_view_factory.rb +0 -48
  268. data/lib/active_admin/asset_registration.rb +0 -30
  269. data/lib/active_admin/base_controller/menu.rb +0 -35
  270. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +0 -59
  271. data/lib/active_admin/filters/active_sidebar.rb +0 -28
  272. data/lib/active_admin/generators/boilerplate.rb +0 -54
  273. data/lib/active_admin/helpers/collection.rb +0 -21
  274. data/lib/active_admin/helpers/i18n.rb +0 -8
  275. data/lib/active_admin/inputs/datepicker_input.rb +0 -28
  276. data/lib/active_admin/inputs/filters/date_picker_input.rb +0 -14
  277. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +0 -24
  278. data/lib/active_admin/orm/mongoid.rb +0 -2
  279. data/lib/active_admin/resource_controller/sidebars.rb +0 -19
  280. data/lib/active_admin/resource_controller.rb +0 -68
  281. data/lib/active_admin/view_factory.rb +0 -28
  282. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +0 -13
  283. data/lib/active_admin/view_helpers/auto_link_helper.rb +0 -46
  284. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +0 -34
  285. data/lib/active_admin/view_helpers/display_helper.rb +0 -119
  286. data/lib/active_admin/view_helpers/download_format_links_helper.rb +0 -60
  287. data/lib/active_admin/view_helpers/fields_for.rb +0 -51
  288. data/lib/active_admin/view_helpers/flash_helper.rb +0 -15
  289. data/lib/active_admin/view_helpers/form_helper.rb +0 -21
  290. data/lib/active_admin/view_helpers/scope_name_helper.rb +0 -17
  291. data/lib/active_admin/view_helpers/sidebar_helper.rb +0 -16
  292. data/lib/active_admin/view_helpers/title_helper.rb +0 -12
  293. data/lib/active_admin/view_helpers/view_factory_helper.rb +0 -12
  294. data/lib/active_admin/views/action_items.rb +0 -18
  295. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +0 -59
  296. data/lib/active_admin/views/components/blank_slate.rb +0 -18
  297. data/lib/active_admin/views/components/columns.rb +0 -162
  298. data/lib/active_admin/views/components/dropdown_menu.rb +0 -69
  299. data/lib/active_admin/views/components/menu.rb +0 -33
  300. data/lib/active_admin/views/components/menu_item.rb +0 -59
  301. data/lib/active_admin/views/components/sidebar.rb +0 -14
  302. data/lib/active_admin/views/components/sidebar_section.rb +0 -35
  303. data/lib/active_admin/views/components/site_title.rb +0 -55
  304. data/lib/active_admin/views/components/tabs.rb +0 -41
  305. data/lib/active_admin/views/components/unsupported_browser.rb +0 -12
  306. data/lib/active_admin/views/footer.rb +0 -32
  307. data/lib/active_admin/views/header.rb +0 -20
  308. data/lib/active_admin/views/index_as_block.rb +0 -37
  309. data/lib/active_admin/views/index_as_blog.rb +0 -156
  310. data/lib/active_admin/views/index_as_grid.rb +0 -81
  311. data/lib/active_admin/views/pages/base.rb +0 -134
  312. data/lib/active_admin/views/pages/form.rb +0 -65
  313. data/lib/active_admin/views/pages/index.rb +0 -166
  314. data/lib/active_admin/views/pages/layout.rb +0 -27
  315. data/lib/active_admin/views/pages/page.rb +0 -31
  316. data/lib/active_admin/views/pages/show.rb +0 -60
  317. data/lib/active_admin/views/tabbed_navigation.rb +0 -12
  318. data/lib/active_admin/views/title_bar.rb +0 -56
  319. data/lib/generators/active_admin/assets/templates/active_admin.js +0 -1
  320. data/lib/generators/active_admin/assets/templates/active_admin.scss +0 -17
  321. data/lib/generators/active_admin/resource/templates/admin.rb.erb +0 -46
  322. data/lib/generators/active_admin/webpacker/plugins/jquery.js +0 -7
  323. data/lib/generators/active_admin/webpacker/templates/active_admin.js +0 -5
  324. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +0 -17
  325. data/lib/generators/active_admin/webpacker/templates/print.scss +0 -2
  326. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +0 -27
  327. data/vendor/assets/javascripts/jquery-ui/data.js +0 -45
  328. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +0 -51
  329. data/vendor/assets/javascripts/jquery-ui/focusable.js +0 -89
  330. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +0 -83
  331. data/vendor/assets/javascripts/jquery-ui/form.js +0 -25
  332. data/vendor/assets/javascripts/jquery-ui/ie.js +0 -20
  333. data/vendor/assets/javascripts/jquery-ui/keycode.js +0 -51
  334. data/vendor/assets/javascripts/jquery-ui/labels.js +0 -71
  335. data/vendor/assets/javascripts/jquery-ui/plugin.js +0 -49
  336. data/vendor/assets/javascripts/jquery-ui/position.js +0 -513
  337. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +0 -46
  338. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +0 -27
  339. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +0 -50
  340. data/vendor/assets/javascripts/jquery-ui/tabbable.js +0 -41
  341. data/vendor/assets/javascripts/jquery-ui/unique-id.js +0 -54
  342. data/vendor/assets/javascripts/jquery-ui/version.js +0 -20
  343. data/vendor/assets/javascripts/jquery-ui/widget.js +0 -758
  344. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +0 -454
  345. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +0 -294
  346. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +0 -304
  347. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +0 -2243
  348. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +0 -971
  349. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +0 -1268
  350. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +0 -241
  351. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +0 -1228
  352. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +0 -1622
  353. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +0 -931
  354. /data/{lib → app/controllers}/active_admin/resource_controller/decorators.rb +0 -0
  355. /data/{lib → app/controllers}/active_admin/resource_controller/polymorphic_routes.rb +0 -0
  356. /data/{lib → app/controllers}/active_admin/resource_controller/resource_class_methods.rb +0 -0
  357. /data/lib/{active_admin/orm/mongoid/.gitkeep → generators/active_admin/assets/templates/builds/.keep} +0 -0
@@ -3,31 +3,14 @@ ActiveAdmin.register_page "Dashboard" do
3
3
  menu priority: 1, label: proc { I18n.t("active_admin.dashboard") }
4
4
 
5
5
  content title: proc { I18n.t("active_admin.dashboard") } do
6
- div class: "blank_slate_container", id: "dashboard_default_message" do
7
- span class: "blank_slate" do
8
- span I18n.t("active_admin.dashboard_welcome.welcome")
9
- small I18n.t("active_admin.dashboard_welcome.call_to_action")
6
+ div class: "px-4 py-16 md:py-32 text-center m-auto max-w-3xl" do
7
+ h2 "Welcome to ActiveAdmin", class: "text-base font-semibold leading-7 text-indigo-600 dark:text-indigo-500"
8
+ para "This is the default page", class: "mt-2 text-3xl sm:text-4xl font-bold text-gray-900 dark:text-gray-200"
9
+ para class: "mt-6 text-xl leading-8 text-gray-700 dark:text-gray-400" do
10
+ text_node "To update the content, edit the"
11
+ strong "app/admin/dashboard.rb"
12
+ text_node "file to get started."
10
13
  end
11
14
  end
12
-
13
- # Here is an example of a simple dashboard with columns and panels.
14
- #
15
- # columns do
16
- # column do
17
- # panel "Recent Posts" do
18
- # ul do
19
- # Post.recent(5).map do |post|
20
- # li link_to(post.title, admin_post_path(post))
21
- # end
22
- # end
23
- # end
24
- # end
25
-
26
- # column do
27
- # panel "Info" do
28
- # para "Welcome to ActiveAdmin."
29
- # end
30
- # end
31
- # end
32
- end # content
15
+ end
33
16
  end
@@ -7,7 +7,6 @@ module ActiveAdmin
7
7
  def generate_config_file
8
8
  template "page.rb", "app/admin/#{file_path.tr('/', '_')}.rb"
9
9
  end
10
-
11
10
  end
12
11
  end
13
12
  end
@@ -1,21 +1,64 @@
1
1
  # frozen_string_literal: true
2
- require "active_admin/generators/boilerplate"
3
-
4
2
  module ActiveAdmin
5
3
  module Generators
6
4
  class ResourceGenerator < Rails::Generators::NamedBase
7
5
  desc "Registers resources with Active Admin"
8
6
 
9
- class_option :include_boilerplate, type: :boolean, default: false,
10
- desc: "Generate boilerplate code for your resource."
11
-
12
7
  source_root File.expand_path("templates", __dir__)
13
8
 
14
9
  def generate_config_file
15
- @boilerplate = ActiveAdmin::Generators::Boilerplate.new(class_name)
16
- template "admin.rb.erb", "app/admin/#{file_path.tr('/', '_').pluralize}.rb"
10
+ template "resource.rb.erb", "app/admin/#{file_path.tr('/', '_').pluralize}.rb"
11
+ end
12
+
13
+ protected
14
+
15
+ def attributes
16
+ @attributes ||= class_name.constantize.new.attributes.keys
17
+ end
18
+
19
+ def primary_key
20
+ @primary_key ||= [class_name.constantize.primary_key].flatten
21
+ end
22
+
23
+ def assignable_attributes
24
+ @assignable_attributes ||= attributes - primary_key - %w(created_at updated_at)
25
+ end
26
+
27
+ def permit_params
28
+ assignable_attributes.map { |a| a.to_sym.inspect }.join(", ")
29
+ end
30
+
31
+ def rows
32
+ attributes.map { |a| row(a) }.join("\n ")
17
33
  end
18
34
 
35
+ def row(name)
36
+ "row :#{name.gsub(/_id$/, '')}"
37
+ end
38
+
39
+ def columns
40
+ (attributes - primary_key).map { |a| column(a) }.join("\n ")
41
+ end
42
+
43
+ def column(name)
44
+ "column :#{name.gsub(/_id$/, '')}"
45
+ end
46
+
47
+ def filters
48
+ attributes.map { |a| filter(a) }.join("\n ")
49
+ end
50
+
51
+ def filter(name)
52
+ "filter :#{name.gsub(/_id$/, '')}"
53
+ end
54
+
55
+ def form_inputs
56
+ assignable_attributes.map { |a| form_input(a) }.join("\n ")
57
+ end
58
+
59
+ def form_input(name)
60
+ "f.input :#{name.gsub(/_id$/, '')}"
61
+ end
19
62
  end
20
63
  end
21
64
  end
@@ -0,0 +1,42 @@
1
+ ActiveAdmin.register <%= class_name %> do
2
+ # Specify parameters which should be permitted for assignment
3
+ permit_params <%= permit_params %>
4
+
5
+ # or consider:
6
+ #
7
+ # permit_params do
8
+ # permitted = [<%= permit_params %>]
9
+ # permitted << :other if params[:action] == 'create' && current_user.admin?
10
+ # permitted
11
+ # end
12
+
13
+ # For security, limit the actions that should be available
14
+ actions :all, except: []
15
+
16
+ # Add or remove filters to toggle their visibility
17
+ <%= filters %>
18
+
19
+ # Add or remove columns to toggle their visibility in the index action
20
+ index do
21
+ selectable_column
22
+ id_column
23
+ <%= columns %>
24
+ actions
25
+ end
26
+
27
+ # Add or remove rows to toggle their visibility in the show action
28
+ show do
29
+ attributes_table_for(resource) do
30
+ <%= rows %>
31
+ end
32
+ end
33
+
34
+ # Add or remove fields to toggle their visibility in the form
35
+ form do |f|
36
+ f.semantic_errors(*f.object.errors.attribute_names)
37
+ f.inputs do
38
+ <%= form_inputs %>
39
+ end
40
+ f.actions
41
+ end
42
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ module Generators
4
+ class ViewsGenerator < Rails::Generators::Base
5
+ source_root File.expand_path("../../../", __dir__)
6
+
7
+ def copy_views
8
+ directory "app/views/layouts"
9
+ directory "app/views/active_admin", recursive: false
10
+ directory "app/views/active_admin/devise"
11
+ directory "app/views/active_admin/kaminari"
12
+ copy_file "app/views/active_admin/shared/_resource_comments.html.erb"
13
+ copy_file "app/views/active_admin/resource/_index_blank_slate.html.erb"
14
+ copy_file "app/views/active_admin/resource/_index_empty_results.html.erb"
15
+ end
16
+ end
17
+ end
18
+ end
data/plugin.js ADDED
@@ -0,0 +1,414 @@
1
+ import plugin from 'tailwindcss/plugin';
2
+ import defaultTheme from 'tailwindcss/defaultTheme';
3
+ import colors from 'tailwindcss/colors';
4
+ const { spacing, borderWidth, borderRadius } = defaultTheme;
5
+
6
+ // https://github.com/tailwindlabs/tailwindcss/discussions/9336
7
+ // https://github.com/tailwindlabs/tailwindcss/discussions/2049
8
+ // https://github.com/tailwindlabs/tailwindcss/discussions/2049#discussioncomment-45546
9
+
10
+ const svgToTinyDataUri = (() => {
11
+ // Source: https://github.com/tigt/mini-svg-data-uri
12
+ const reWhitespace = /\s+/g,
13
+ reUrlHexPairs = /%[\dA-F]{2}/g,
14
+ hexDecode = { '%20': ' ', '%3D': '=', '%3A': ':', '%2F': '/' },
15
+ specialHexDecode = match => hexDecode[match] || match.toLowerCase(),
16
+ svgToTinyDataUri = svg => {
17
+ svg = String(svg);
18
+ if (svg.charCodeAt(0) === 0xfeff) svg = svg.slice(1);
19
+ svg = svg
20
+ .trim()
21
+ .replace(reWhitespace, ' ')
22
+ .replaceAll('"', '\'');
23
+ svg = encodeURIComponent(svg);
24
+ svg = svg.replace(reUrlHexPairs, specialHexDecode);
25
+ return 'data:image/svg+xml,' + svg;
26
+ };
27
+ svgToTinyDataUri.toSrcset = svg => svgToTinyDataUri(svg).replace(/ /g, '%20');
28
+ return svgToTinyDataUri;
29
+ })();
30
+
31
+ export default plugin(
32
+ function({ addBase, addComponents, theme }) {
33
+ addBase({
34
+ [[
35
+ "[type='text']",
36
+ "[type='email']",
37
+ "[type='url']",
38
+ "[type='password']",
39
+ "[type='number']",
40
+ "[type='date']",
41
+ "[type='datetime-local']",
42
+ "[type='month']",
43
+ "[type='search']",
44
+ "[type='tel']",
45
+ "[type='time']",
46
+ "[type='week']",
47
+ 'textarea',
48
+ 'select',
49
+ ]]: {
50
+ 'appearance': 'none',
51
+ 'padding': `${spacing[2]} ${spacing[3]}`,
52
+ '--tw-shadow': '0 0 #0000',
53
+ '&:focus': {
54
+ outline: '2px solid transparent',
55
+ 'outline-offset': '2px',
56
+ '--tw-ring-inset': 'var(--tw-empty,/*!*/ /*!*/)',
57
+ '--tw-ring-offset-width': '0px',
58
+ '--tw-ring-offset-color': '#fff',
59
+ '--tw-ring-color': theme(
60
+ 'colors.blue.600',
61
+ colors.blue[600]
62
+ ),
63
+ '--tw-ring-offset-shadow': `var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)`,
64
+ '--tw-ring-shadow': `var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)`,
65
+ 'box-shadow': `var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)`,
66
+ 'border-color': theme('colors.blue.600', colors.blue[600]),
67
+ },
68
+ },
69
+ ['::-webkit-datetime-edit']: {
70
+ display: 'inline-flex',
71
+ },
72
+ [[
73
+ '::-webkit-datetime-edit',
74
+ '::-webkit-datetime-edit-year-field',
75
+ '::-webkit-datetime-edit-month-field',
76
+ '::-webkit-datetime-edit-day-field',
77
+ '::-webkit-datetime-edit-hour-field',
78
+ '::-webkit-datetime-edit-minute-field',
79
+ '::-webkit-datetime-edit-second-field',
80
+ '::-webkit-datetime-edit-millisecond-field',
81
+ '::-webkit-datetime-edit-meridiem-field',
82
+ ]]: {
83
+ 'padding-bottom': '0',
84
+ 'padding-top': '0',
85
+ },
86
+ ['::-webkit-date-and-time-value']: {
87
+ 'min-height': '1.5em',
88
+ 'text-align': 'inherit',
89
+ },
90
+ ['select']: {
91
+ 'background-image': `url("${svgToTinyDataUri(
92
+ `<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 6">
93
+ <path stroke="${theme('colors.gray.500', colors.gray[500])}" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m1 1 4 4 4-4"/>
94
+ </svg>`
95
+ )}")`,
96
+ 'background-position': `right ${spacing[3]} center`,
97
+ 'background-repeat': `no-repeat`,
98
+ 'background-size': `0.75em 0.75em`,
99
+ 'padding-inline-end': spacing[8],
100
+ 'print-color-adjust': `exact`,
101
+ },
102
+ [':is(:where([dir=rtl]) select)']: {
103
+ 'background-position': `left ${spacing[3]} center`,
104
+ },
105
+ ['[multiple]']: {
106
+ 'background-image': 'initial',
107
+ 'background-position': 'initial',
108
+ 'background-repeat': 'unset',
109
+ 'background-size': 'initial',
110
+ 'padding-inline-end': spacing[3],
111
+ 'print-color-adjust': 'unset',
112
+ },
113
+ [[`[type='checkbox']`, `[type='radio']`]]: {
114
+ appearance: 'none',
115
+ 'background-origin': 'border-box',
116
+ color: theme('colors.blue.600', colors.blue[600]),
117
+ display: 'inline-block',
118
+ 'flex-shrink': '0',
119
+ 'print-color-adjust': 'exact',
120
+ 'user-select': 'none',
121
+ 'vertical-align': 'middle',
122
+ '--tw-shadow': '0 0 #0000',
123
+ },
124
+ [[`[type='checkbox']:focus`, `[type='radio']:focus`]]: {
125
+ outline: '2px solid transparent',
126
+ 'outline-offset': '2px',
127
+ '--tw-ring-inset': 'var(--tw-empty,/*!*/ /*!*/)',
128
+ '--tw-ring-offset-width': '2px',
129
+ '--tw-ring-offset-color': '#fff',
130
+ '--tw-ring-color': theme('colors.blue.600', colors.blue[600]),
131
+ '--tw-ring-offset-shadow': `var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)`,
132
+ '--tw-ring-shadow': `var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)`,
133
+ 'box-shadow': `var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)`,
134
+ },
135
+ [[
136
+ `[type='checkbox']:checked`,
137
+ `[type='checkbox']:indeterminate`,
138
+ `[type='radio']:checked`,
139
+ ]]: {
140
+ 'background-color': `currentColor`,
141
+ 'background-position': `center`,
142
+ 'background-repeat': `no-repeat`,
143
+ 'background-size': `100% 100%`,
144
+ 'border-color': `transparent`,
145
+ },
146
+ [`[type='checkbox']:checked`]: {
147
+ 'background-image': `url("${svgToTinyDataUri(
148
+ `<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
149
+ <path d="M4 8 L7 11 L12 5" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" />
150
+ </svg>`
151
+ )}")`,
152
+ 'print-color-adjust': `exact`,
153
+ },
154
+ [`[type='radio']:checked`]: {
155
+ 'background-image': `url("${svgToTinyDataUri(
156
+ `<svg viewBox="0 0 16 16" fill="white" xmlns="http://www.w3.org/2000/svg"><circle cx="8" cy="8" r="3"/></svg>`
157
+ )}")`,
158
+ },
159
+ [`[type='checkbox']:indeterminate`]: {
160
+ 'background-image': `url("${svgToTinyDataUri(
161
+ `<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
162
+ <path d="M4 8 L12 8" stroke="white" stroke-linecap="round" stroke-width="2.5" />
163
+ </svg>`
164
+ )}")`,
165
+ 'print-color-adjust': `exact`,
166
+ },
167
+ [`[type='file']`]: {
168
+ cursor: 'pointer',
169
+ },
170
+ [`[type=file]::file-selector-button`]: {
171
+ 'background-color': theme('colors.gray.100', colors.gray[100]),
172
+ 'border': `${borderWidth['DEFAULT']} solid ${theme('colors.gray.200', colors.gray[200])}`,
173
+ 'border-radius': borderRadius['DEFAULT'],
174
+ cursor: 'pointer',
175
+ 'padding': `${spacing[2]} ${spacing[3]}`,
176
+ '&:hover': {
177
+ 'background-color': theme('colors.gray.200', colors.gray[200]),
178
+ },
179
+ },
180
+ [`.dark [type=file]::file-selector-button`]: {
181
+ '@apply bg-white/5 border-white/5 text-white hover:bg-white/10': {}
182
+ },
183
+ '[type=checkbox]': {
184
+ '@apply w-4 h-4 bg-gray-100 border border-gray-300 rounded focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-800 focus:ring-2 dark:bg-white/5 dark:border-white/10': {}
185
+ },
186
+ '[type=radio]': {
187
+ '@apply w-4 h-4 bg-gray-100 border border-gray-300 rounded-full focus:ring-2 focus:ring-blue-300 dark:focus:ring-blue-600 dark:focus:bg-blue-600 dark:bg-white/5 dark:border-white/10': {}
188
+ },
189
+ [['[type=datetime-local]', '[type=month]', '[type=week]', '[type=search]', '[type=date]', '[type=email]', '[type=number]', '[type=password]', '[type=tel]', '[type=text]', '[type=time]', '[type=url]', 'select', 'textarea']]: {
190
+ '@apply bg-gray-50 border border-gray-300 text-gray-900 placeholder:text-gray-400 rounded-md focus:ring-blue-500 focus:border-blue-500 w-full dark:bg-white/5 dark:border-white/10 dark:text-white dark:placeholder:text-gray-500 dark:focus:ring-blue-500 dark:focus:border-blue-500': {}
191
+ },
192
+ 'a': {
193
+ '@apply text-blue-600 dark:text-blue-500 underline underline-offset-[.2rem]': {}
194
+ },
195
+ });
196
+ addComponents({
197
+ '.action-item-button': {
198
+ '@apply py-2 px-3 text-sm font-medium no-underline text-gray-900 focus:outline-none bg-white rounded-md border border-gray-200 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:border-gray-700 dark:hover:text-white dark:hover:bg-gray-700': {}
199
+ },
200
+ '.index-data-table-toolbar': {
201
+ '@apply flex flex-col lg:flex-row gap-4 mb-4': {}
202
+ },
203
+ '.scopes': {
204
+ '@apply flex flex-wrap gap-1.5': {}
205
+ },
206
+ '.index-button-group': {
207
+ '@apply inline-flex flex-wrap items-stretch rounded-md': {}
208
+ },
209
+ // Prevent double borders when buttons are next to each other
210
+ '.index-button-group > :where(*:not(:first-child))': {
211
+ '@apply -ms-px my-0': {}
212
+ },
213
+ '.index-button': {
214
+ '@apply inline-flex items-center justify-center px-3 py-2 text-sm font-medium no-underline text-gray-900 bg-white border border-gray-200 hover:bg-gray-100 focus:z-10 focus:ring-2 focus:ring-blue-700 focus:text-blue-700 first:rounded-s-md last:rounded-e-md dark:bg-gray-900 dark:border-gray-700 dark:text-gray-100 dark:hover:text-gray-200 dark:hover:bg-gray-800 dark:focus:ring-blue-500 dark:focus:text-white': {}
215
+ },
216
+ '.index-button-selected': {
217
+ '@apply bg-gray-100 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-800': {}
218
+ },
219
+ '.scopes-count': {
220
+ '@apply inline-flex items-center justify-center rounded-full bg-indigo-100 text-indigo-700 dark:bg-indigo-800/60 dark:text-indigo-400 px-1.5 py-1 text-xs font-normal ms-2 leading-none': {}
221
+ },
222
+ '.paginated-collection': {
223
+ '@apply border border-gray-200 dark:border-gray-800 rounded-md shadow-sm overflow-hidden': {}
224
+ },
225
+ '.paginated-collection-contents': {
226
+ '@apply overflow-x-auto': {}
227
+ },
228
+ '.paginated-collection-pagination': {
229
+ '@apply p-2 lg:p-3 flex flex-col-reverse lg:flex-row gap-4 items-center justify-between border-t border-gray-200 dark:border-gray-800': {}
230
+ },
231
+ '.paginated-collection-footer': {
232
+ '@apply p-3 flex gap-2 items-center justify-between text-sm border-t border-gray-200 dark:border-gray-800': {}
233
+ },
234
+ '.pagination-per-page': {
235
+ '@apply text-sm py-1 pe-7 w-auto w-min': {}
236
+ },
237
+ '.index-as-table': {
238
+ '@apply relative overflow-x-auto': {}
239
+ },
240
+ '.data-table': {
241
+ '@apply w-full text-sm text-gray-800 dark:text-gray-300': {}
242
+ },
243
+ '.data-table :where(thead > tr > th)': {
244
+ '@apply px-3 py-3.5 whitespace-nowrap font-semibold text-start text-xs uppercase border-b text-gray-700 bg-gray-50 dark:bg-gray-950/50 dark:border-gray-800 dark:text-white': {}
245
+ },
246
+ '.data-table :where(thead > tr > th > a)': {
247
+ '@apply text-inherit no-underline inline-flex items-center gap-2': {}
248
+ },
249
+ '.data-table-sorted-icon': {
250
+ '@apply invisible w-[8px] h-[5px]': {}
251
+ },
252
+ ':where(th[data-sort-direction]) .data-table-sorted-icon': {
253
+ '@apply visible': {}
254
+ },
255
+ ':where(th[data-sort-direction="asc"]) .data-table-sorted-icon': {
256
+ '@apply rotate-180': {}
257
+ },
258
+ '.data-table :where(tbody > tr)': {
259
+ '@apply border-b dark:border-gray-800 last:border-b-0': {}
260
+ },
261
+ '.data-table :where(td)': {
262
+ '@apply px-3 py-4': {}
263
+ },
264
+ '.data-table-resource-actions': {
265
+ '@apply flex gap-2': {}
266
+ },
267
+ '.filters-form': {
268
+ '@apply text-sm mb-6': {}
269
+ },
270
+ '.filters-form-title': {
271
+ '@apply text-gray-700 dark:text-gray-200 font-bold text-lg mb-4': {}
272
+ },
273
+ '.filters-form :where(.label)': {
274
+ '@apply block mb-1.5 text-sm': {}
275
+ },
276
+ '.filters-form-input-group': {
277
+ '@apply grid grid-cols-2 gap-2': {}
278
+ },
279
+ '.filters-form-field': {
280
+ '@apply mb-4': {}
281
+ },
282
+ '.filters-form-field :where(.choices > label)': {
283
+ '@apply flex gap-2 items-center mb-1': {}
284
+ },
285
+ '.filters-form-buttons': {
286
+ '@apply flex gap-2 items-center': {}
287
+ },
288
+ '.filters-form-submit': {
289
+ '@apply min-w-[6rem] font-bold text-white bg-blue-600 hover:bg-blue-700 focus:ring-4 focus:outline-none focus:ring-blue-300 rounded-md px-3 py-2 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800 cursor-pointer': {}
290
+ },
291
+ '.filters-form-clear': {
292
+ '@apply rounded-md px-3 py-2 font-semibold text-gray-700 hover:bg-gray-100 no-underline dark:text-gray-400 dark:hover:bg-inherit dark:hover:text-gray-100 dark:focus:ring-blue-800': {}
293
+ },
294
+ '.active-filters-title': {
295
+ '@apply text-gray-700 dark:text-gray-200 font-bold text-lg mb-4': {}
296
+ },
297
+ '.active-filters-list': {
298
+ '@apply ps-5 list-disc space-y-1 text-gray-700 dark:text-gray-200': {}
299
+ },
300
+ '.batch-actions-dropdown': {
301
+ '@apply relative': {}
302
+ },
303
+ '.batch-actions-dropdown-toggle': {
304
+ '@apply transition-opacity rounded-md inline-flex items-center justify-center gap-2 px-3 py-2 text-sm font-medium text-gray-900 bg-white border border-gray-200 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-2 focus:ring-blue-700 focus:text-blue-700 dark:bg-gray-800 dark:border-gray-700 dark:text-white dark:hover:text-white dark:hover:bg-gray-700 dark:focus:ring-blue-500 dark:focus:text-white disabled:text-gray-400 disabled:border-gray-200/70 dark:disabled:bg-gray-900 dark:disabled:text-gray-700 dark:disabled:border-gray-800 disabled:pointer-events-none': {}
305
+ },
306
+ '.batch-actions-dropdown-arrow': {
307
+ '@apply w-2.5 h-2.5': {}
308
+ },
309
+ '.batch-actions-dropdown-menu': {
310
+ '@apply z-10 hidden min-w-[7rem] bg-white rounded-md shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:bg-gray-800 py-1 text-sm text-gray-700 dark:text-gray-200': {}
311
+ },
312
+ '.batch-actions-dropdown-menu :where(li > a)': {
313
+ '@apply block px-2.5 py-2 no-underline text-gray-700 hover:bg-gray-100 hover:text-gray-900 dark:text-white dark:hover:bg-gray-700 dark:hover:text-white': {}
314
+ },
315
+ '.panel': {
316
+ '@apply mb-6 border border-gray-200 rounded-md shadow-sm dark:border-gray-800': {}
317
+ },
318
+ '.panel-title': {
319
+ '@apply font-bold bg-gray-100 dark:bg-gray-950/50 rounded-t-md p-3': {}
320
+ },
321
+ '.panel-body': {
322
+ '@apply py-5 px-3': {}
323
+ },
324
+ '.attributes-table': {
325
+ '@apply overflow-hidden mb-6 border border-gray-200 rounded-md shadow-sm dark:border-gray-800': {}
326
+ },
327
+ '.attributes-table > :where(table)': {
328
+ '@apply w-full text-sm text-gray-800 dark:text-gray-300': {}
329
+ },
330
+ '.attributes-table :where(tbody > tr)': {
331
+ '@apply border-b dark:border-gray-800 last:border-b-0 align-baseline': {}
332
+ },
333
+ '.attributes-table :where(tbody > tr > th)': {
334
+ '@apply w-32 sm:w-40 text-start text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-950/50 dark:text-gray-300': {}
335
+ },
336
+ '.attributes-table :where(tbody > tr > th, tbody > tr > td)': {
337
+ '@apply p-3': {}
338
+ },
339
+ '.attributes-table-empty-value': {
340
+ '@apply text-gray-400/50 dark:text-gray-600/50 text-xs uppercase font-semibold': {}
341
+ },
342
+ '.status-tag': {
343
+ '@apply bg-gray-200 text-gray-600 dark:bg-gray-400/20 dark:text-gray-400 inline-flex items-center rounded-full text-sm font-medium px-2.5 py-0.5 whitespace-nowrap': {}
344
+ },
345
+ '.status-tag:where([data-status=yes])': {
346
+ '@apply bg-green-100 text-green-700 dark:bg-green-400/20 dark:text-green-400': {}
347
+ },
348
+ // Forms
349
+ '.formtastic': {
350
+ '@apply text-sm': {}
351
+ },
352
+ '.formtastic :where(.fieldset-title, .has-many-fields-title)': {
353
+ '@apply block w-full mb-3 border-b font-bold text-lg': {}
354
+ },
355
+ '.formtastic :where(.label)': {
356
+ '@apply block mb-1.5': {}
357
+ },
358
+ '.formtastic :where(.label abbr)': {
359
+ '@apply ms-1 no-underline': {}
360
+ },
361
+ '.formtastic :where(.input)': {
362
+ '@apply py-3': {}
363
+ },
364
+ '.formtastic :where(.choice)': {
365
+ '@apply mb-1': {}
366
+ },
367
+ '.formtastic :where(.boolean label, .choice label)': {
368
+ '@apply flex gap-2 items-center': {}
369
+ },
370
+ '.formtastic :where(.fragments-group)': {
371
+ '@apply inline-flex flex-wrap gap-1': {}
372
+ },
373
+ '.formtastic :where(.fragment label)': {
374
+ '@apply sr-only': {}
375
+ },
376
+ '.formtastic :where(.inline-hints)': {
377
+ '@apply text-gray-500 dark:text-gray-400 mt-2': {}
378
+ },
379
+ '.formtastic :where(.errors)': {
380
+ '@apply p-4 mb-6 rounded-md space-y-2 bg-red-50 text-red-800 dark:bg-red-500/15 dark:text-red-200': {}
381
+ },
382
+ '.formtastic :where(.errors > li)': {
383
+ '@apply list-disc ms-4': {}
384
+ },
385
+ '.formtastic :where(.inline-errors)': {
386
+ '@apply font-bold mt-2 text-red-600 dark:text-red-400': {}
387
+ },
388
+ '.formtastic :where(.error [type=email], .error [type=number], .error [type=password], .error [type=tel], .error [type=text], .error [type=url], .error select, .error textarea)': {
389
+ '@apply border-red-500/50': {}
390
+ },
391
+ '.formtastic :where(.buttons, .actions)': {
392
+ '@apply mt-3': {}
393
+ },
394
+ '.formtastic :where(.actions > ol)': {
395
+ '@apply flex items-center gap-6': {}
396
+ },
397
+ '.formtastic :where([type=submit], [type=button], button)': {
398
+ '@apply font-bold text-white bg-blue-600 hover:bg-blue-700 focus:ring-4 focus:outline-none focus:ring-blue-300 rounded-lg px-4 py-2 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800 cursor-pointer': {}
399
+ },
400
+ '.formtastic :where(.actions .cancel-link)': {
401
+ '@apply font-semibold leading-6 text-gray-900 dark:text-white no-underline': {}
402
+ },
403
+ '.formtastic :where(.has-many-add)': {
404
+ '@apply inline-block py-3': {}
405
+ },
406
+ '.formtastic :where(.has-many-container)': {
407
+ '@apply space-y-8': {}
408
+ },
409
+ '.formtastic :where(.has-many-fields)': {
410
+ '@apply ps-3 border-s-4 border-s-gray-200 dark:border-s-gray-700': {}
411
+ }
412
+ });
413
+ }
414
+ )
@@ -0,0 +1 @@
1
+ puts "Ciao"