plutonium 0.16.4 → 0.18.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.
Files changed (717) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/plutonium.css +9 -1
  3. data/app/assets/plutonium.js +23273 -9599
  4. data/app/assets/plutonium.js.map +4 -4
  5. data/app/assets/plutonium.min.js +159 -49
  6. data/app/assets/plutonium.min.js.map +4 -4
  7. data/app/views/plutonium/_resource_header.html.erb +33 -24
  8. data/app/views/plutonium/_resource_sidebar.html.erb +10 -8
  9. data/app/views/rodauth/otp_unlock.html.erb +22 -0
  10. data/app/views/rodauth/otp_unlock_not_available.html.erb +14 -0
  11. data/app/views/rodauth/webauthn_remove.html.erb +1 -0
  12. data/docs/guide/getting-started/resources.md +2 -2
  13. data/docs/guide/tutorial.md +4 -4
  14. data/gemfiles/rails_7.gemfile.lock +406 -0
  15. data/lib/generators/pu/core/assets/assets_generator.rb +1 -1
  16. data/lib/generators/pu/res/conn/conn_generator.rb +24 -10
  17. data/lib/generators/pu/rodauth/concerns/configuration.rb +11 -0
  18. data/lib/generators/pu/rodauth/concerns/feature_selector.rb +4 -0
  19. data/lib/generators/pu/rodauth/install_generator.rb +3 -1
  20. data/lib/generators/pu/rodauth/migration/active_record/otp_unlock.erb +7 -0
  21. data/lib/generators/pu/rodauth/templates/INSTRUCTIONS +2 -46
  22. data/lib/generators/pu/rodauth/templates/app/controllers/plugin_controller.rb.tt +3 -3
  23. data/lib/generators/pu/rodauth/templates/app/mailers/rodauth_mailer.rb.tt +50 -1
  24. data/lib/generators/pu/rodauth/templates/app/rodauth/account_rodauth_plugin.rb.tt +37 -3
  25. data/lib/generators/pu/rodauth/templates/app/rodauth/rodauth_plugin.rb.tt +33 -8
  26. data/lib/generators/pu/rodauth/templates/app/views/rodauth_mailer/otp_disabled.text.erb +2 -0
  27. data/lib/generators/pu/rodauth/templates/app/views/rodauth_mailer/otp_locked_out.text.erb +9 -0
  28. data/lib/generators/pu/rodauth/templates/app/views/rodauth_mailer/otp_setup.text.erb +2 -0
  29. data/lib/generators/pu/rodauth/templates/app/views/rodauth_mailer/otp_unlock_failed.text.erb +8 -0
  30. data/lib/generators/pu/rodauth/templates/app/views/rodauth_mailer/otp_unlocked.text.erb +2 -0
  31. data/lib/generators/pu/rodauth/templates/app/views/rodauth_mailer/webauthn_authenticator_added.text.erb +3 -0
  32. data/lib/generators/pu/rodauth/templates/app/views/rodauth_mailer/webauthn_authenticator_removed.text.erb +3 -0
  33. data/lib/generators/pu/rodauth/views_generator.rb +1 -12
  34. data/lib/plutonium/core/controllers/authorizable.rb +3 -1
  35. data/lib/plutonium/helpers/application_helper.rb +0 -8
  36. data/lib/plutonium/helpers.rb +0 -3
  37. data/lib/plutonium/railtie.rb +0 -14
  38. data/lib/plutonium/reloader.rb +2 -12
  39. data/lib/plutonium/rodauth/controller_methods.rb +1 -3
  40. data/lib/plutonium/ui/component/behaviour.rb +1 -1
  41. data/lib/plutonium/ui/component/kit.rb +59 -15
  42. data/lib/plutonium/ui/display/base.rb +6 -2
  43. data/lib/plutonium/ui/display/{component → components}/association.rb +1 -1
  44. data/lib/plutonium/ui/display/components/attachment.rb +93 -0
  45. data/lib/plutonium/ui/display/{component → components}/markdown.rb +2 -1
  46. data/lib/plutonium/ui/display/resource.rb +21 -6
  47. data/lib/plutonium/ui/display/theme.rb +2 -1
  48. data/lib/plutonium/ui/form/base.rb +7 -0
  49. data/lib/plutonium/ui/form/components/belongs_to.rb +45 -1
  50. data/lib/plutonium/ui/form/components/has_many.rb +45 -1
  51. data/lib/plutonium/ui/form/components/uppy.rb +173 -0
  52. data/lib/plutonium/ui/form/query.rb +5 -5
  53. data/lib/plutonium/ui/form/resource.rb +6 -6
  54. data/lib/plutonium/ui/form/theme.rb +6 -2
  55. data/lib/plutonium/ui/frame_navigator_panel.rb +25 -4
  56. data/lib/plutonium/ui/layout/base.rb +1 -1
  57. data/lib/plutonium/ui/layout/header.rb +1 -1
  58. data/lib/plutonium/ui/layout/sidebar.rb +0 -1
  59. data/lib/plutonium/ui/nav_grid_menu.rb +93 -0
  60. data/lib/plutonium/ui/nav_user.rb +121 -0
  61. data/lib/plutonium/ui/panel.rb +2 -2
  62. data/lib/plutonium/ui/sidebar_menu.rb +19 -39
  63. data/lib/plutonium/ui/tab_list.rb +73 -0
  64. data/lib/plutonium/ui/table/base.rb +7 -1
  65. data/lib/plutonium/ui/table/components/attachment.rb +71 -0
  66. data/lib/plutonium/ui/table/components/pagy_info.rb +12 -4
  67. data/lib/plutonium/ui/table/components/pagy_pagination.rb +5 -5
  68. data/lib/plutonium/ui/table/display_theme.rb +2 -1
  69. data/lib/plutonium/ui/table/resource.rb +11 -12
  70. data/lib/plutonium/version.rb +1 -1
  71. data/package-lock.json +356 -18
  72. data/package.json +6 -2
  73. data/src/css/plutonium.css +3 -0
  74. data/src/js/controllers/attachment_input_controller.js +241 -0
  75. data/src/js/controllers/attachment_preview_container_controller.js +15 -0
  76. data/src/js/controllers/attachment_preview_controller.js +63 -0
  77. data/src/js/controllers/color_mode_controller.js +0 -1
  78. data/src/js/controllers/easymde_controller.js +0 -1
  79. data/src/js/controllers/flatpickr_controller.js +0 -1
  80. data/src/js/controllers/form_controller.js +0 -1
  81. data/src/js/controllers/frame_navigator_controller.js +16 -12
  82. data/src/js/controllers/intl_tel_input_controller.js +0 -1
  83. data/src/js/controllers/register_controllers.js +12 -30
  84. data/src/js/controllers/resource_collapse_controller.js +0 -1
  85. data/src/js/controllers/resource_dismiss_controller.js +0 -1
  86. data/src/js/controllers/resource_drop_down_controller.js +161 -9
  87. data/src/js/controllers/{header_controller.js → resource_header_controller.js} +1 -0
  88. data/src/js/controllers/resource_tab_list_controller.js +64 -0
  89. data/src/js/controllers/select_navigator.js +16 -0
  90. data/src/js/controllers/slim_select_controller.js +0 -1
  91. data/src/js/support/dom_element.js +78 -0
  92. data/src/js/support/mime_icon.js +127 -0
  93. data/tailwind.options.js +0 -5
  94. metadata +29 -642
  95. data/README copy.md +0 -83
  96. data/app/assets/application.js.bk +0 -31419
  97. data/app/assets/icons/flags/ghana.svg +0 -49
  98. data/app/assets/icons/outline/address-book.svg +0 -3
  99. data/app/assets/icons/outline/adjustments-horizontal.svg +0 -3
  100. data/app/assets/icons/outline/adjustments-vertical.svg +0 -3
  101. data/app/assets/icons/outline/align-center.svg +0 -3
  102. data/app/assets/icons/outline/angle-down.svg +0 -3
  103. data/app/assets/icons/outline/angle-left.svg +0 -3
  104. data/app/assets/icons/outline/angle-right.svg +0 -3
  105. data/app/assets/icons/outline/angle-up.svg +0 -3
  106. data/app/assets/icons/outline/annotation.svg +0 -3
  107. data/app/assets/icons/outline/archive-arrow-down.svg +0 -3
  108. data/app/assets/icons/outline/archive.svg +0 -3
  109. data/app/assets/icons/outline/arrow-down-to-bracket.svg +0 -3
  110. data/app/assets/icons/outline/arrow-down.svg +0 -3
  111. data/app/assets/icons/outline/arrow-left-to-bracket.svg +0 -3
  112. data/app/assets/icons/outline/arrow-left.svg +0 -3
  113. data/app/assets/icons/outline/arrow-right-alt.svg +0 -3
  114. data/app/assets/icons/outline/arrow-right-to-bracket.svg +0 -3
  115. data/app/assets/icons/outline/arrow-right.svg +0 -3
  116. data/app/assets/icons/outline/arrow-sort-letters.svg +0 -3
  117. data/app/assets/icons/outline/arrow-up-down.svg +0 -3
  118. data/app/assets/icons/outline/arrow-up-from-bracket.svg +0 -3
  119. data/app/assets/icons/outline/arrow-up-right-down-left.svg +0 -3
  120. data/app/assets/icons/outline/arrow-up-right-from-square.svg +0 -3
  121. data/app/assets/icons/outline/arrow-up.svg +0 -3
  122. data/app/assets/icons/outline/arrows-repeat-count.svg +0 -3
  123. data/app/assets/icons/outline/arrows-repeat.svg +0 -3
  124. data/app/assets/icons/outline/atom.svg +0 -3
  125. data/app/assets/icons/outline/backward-step.svg +0 -3
  126. data/app/assets/icons/outline/badge-check.svg +0 -3
  127. data/app/assets/icons/outline/bars-from-left.svg +0 -3
  128. data/app/assets/icons/outline/bars.svg +0 -3
  129. data/app/assets/icons/outline/bell-active-alt.svg +0 -3
  130. data/app/assets/icons/outline/bell-active.svg +0 -3
  131. data/app/assets/icons/outline/bell-ring.svg +0 -3
  132. data/app/assets/icons/outline/bell.svg +0 -3
  133. data/app/assets/icons/outline/blender-phone.svg +0 -3
  134. data/app/assets/icons/outline/book-open.svg +0 -3
  135. data/app/assets/icons/outline/book.svg +0 -3
  136. data/app/assets/icons/outline/bookmark.svg +0 -3
  137. data/app/assets/icons/outline/brain.svg +0 -3
  138. data/app/assets/icons/outline/briefcase.svg +0 -3
  139. data/app/assets/icons/outline/bug.svg +0 -3
  140. data/app/assets/icons/outline/building.svg +0 -3
  141. data/app/assets/icons/outline/bullhorn.svg +0 -3
  142. data/app/assets/icons/outline/calendar-edit.svg +0 -3
  143. data/app/assets/icons/outline/calendar-month.svg +0 -3
  144. data/app/assets/icons/outline/calendar-plus.svg +0 -3
  145. data/app/assets/icons/outline/calendar-week.svg +0 -3
  146. data/app/assets/icons/outline/camera-photo.svg +0 -4
  147. data/app/assets/icons/outline/caption.svg +0 -3
  148. data/app/assets/icons/outline/caret-down.svg +0 -3
  149. data/app/assets/icons/outline/caret-left.svg +0 -3
  150. data/app/assets/icons/outline/caret-right.svg +0 -3
  151. data/app/assets/icons/outline/caret-sort.svg +0 -3
  152. data/app/assets/icons/outline/caret-up.svg +0 -3
  153. data/app/assets/icons/outline/cart-plus-alt.svg +0 -3
  154. data/app/assets/icons/outline/cart-plus.svg +0 -3
  155. data/app/assets/icons/outline/cart.svg +0 -3
  156. data/app/assets/icons/outline/cash.svg +0 -3
  157. data/app/assets/icons/outline/chart-line-down.svg +0 -3
  158. data/app/assets/icons/outline/chart-line-up.svg +0 -3
  159. data/app/assets/icons/outline/chart-mixed-dollar.svg +0 -3
  160. data/app/assets/icons/outline/chart-mixed.svg +0 -3
  161. data/app/assets/icons/outline/chart-pie.svg +0 -4
  162. data/app/assets/icons/outline/chart.svg +0 -3
  163. data/app/assets/icons/outline/check-circle.svg +0 -3
  164. data/app/assets/icons/outline/check-plus-circle.svg +0 -3
  165. data/app/assets/icons/outline/check.svg +0 -3
  166. data/app/assets/icons/outline/chevron-double-down.svg +0 -3
  167. data/app/assets/icons/outline/chevron-double-left.svg +0 -3
  168. data/app/assets/icons/outline/chevron-double-right.svg +0 -3
  169. data/app/assets/icons/outline/chevron-double-up.svg +0 -3
  170. data/app/assets/icons/outline/chevron-down.svg +0 -3
  171. data/app/assets/icons/outline/chevron-left.svg +0 -3
  172. data/app/assets/icons/outline/chevron-right.svg +0 -3
  173. data/app/assets/icons/outline/chevron-sort.svg +0 -3
  174. data/app/assets/icons/outline/chevron-up.svg +0 -3
  175. data/app/assets/icons/outline/circle-pause.svg +0 -3
  176. data/app/assets/icons/outline/circle-plus.svg +0 -3
  177. data/app/assets/icons/outline/clapperboard-play.svg +0 -3
  178. data/app/assets/icons/outline/clipboard-check.svg +0 -3
  179. data/app/assets/icons/outline/clipboard-list.svg +0 -3
  180. data/app/assets/icons/outline/clipboard.svg +0 -3
  181. data/app/assets/icons/outline/clock.svg +0 -3
  182. data/app/assets/icons/outline/close-circle.svg +0 -3
  183. data/app/assets/icons/outline/close.svg +0 -3
  184. data/app/assets/icons/outline/cloud-arrow-up.svg +0 -3
  185. data/app/assets/icons/outline/code-branch.svg +0 -3
  186. data/app/assets/icons/outline/code-fork.svg +0 -3
  187. data/app/assets/icons/outline/code-merge.svg +0 -3
  188. data/app/assets/icons/outline/code-pull-request.svg +0 -3
  189. data/app/assets/icons/outline/code.svg +0 -3
  190. data/app/assets/icons/outline/cog.svg +0 -4
  191. data/app/assets/icons/outline/column.svg +0 -3
  192. data/app/assets/icons/outline/command.svg +0 -3
  193. data/app/assets/icons/outline/compress.svg +0 -3
  194. data/app/assets/icons/outline/computer-speaker.svg +0 -3
  195. data/app/assets/icons/outline/credit-card.svg +0 -3
  196. data/app/assets/icons/outline/database.svg +0 -3
  197. data/app/assets/icons/outline/desktop-pc.svg +0 -3
  198. data/app/assets/icons/outline/dna.svg +0 -3
  199. data/app/assets/icons/outline/dollar.svg +0 -3
  200. data/app/assets/icons/outline/dots-horizontal.svg +0 -3
  201. data/app/assets/icons/outline/dots-vertical.svg +0 -3
  202. data/app/assets/icons/outline/download.svg +0 -3
  203. data/app/assets/icons/outline/draw-square.svg +0 -3
  204. data/app/assets/icons/outline/edit.svg +0 -3
  205. data/app/assets/icons/outline/envelope-open.svg +0 -3
  206. data/app/assets/icons/outline/envelope.svg +0 -3
  207. data/app/assets/icons/outline/euro.svg +0 -3
  208. data/app/assets/icons/outline/exclamation-circle.svg +0 -3
  209. data/app/assets/icons/outline/expand.svg +0 -3
  210. data/app/assets/icons/outline/eye-slash.svg +0 -3
  211. data/app/assets/icons/outline/eye.svg +0 -4
  212. data/app/assets/icons/outline/face-explode.svg +0 -4
  213. data/app/assets/icons/outline/face-grin-stars.svg +0 -6
  214. data/app/assets/icons/outline/face-grin.svg +0 -3
  215. data/app/assets/icons/outline/face-laugh.svg +0 -3
  216. data/app/assets/icons/outline/file-chart-bar.svg +0 -3
  217. data/app/assets/icons/outline/file-check.svg +0 -3
  218. data/app/assets/icons/outline/file-circle-plus.svg +0 -3
  219. data/app/assets/icons/outline/file-clone.svg +0 -3
  220. data/app/assets/icons/outline/file-code.svg +0 -3
  221. data/app/assets/icons/outline/file-copy-alt.svg +0 -3
  222. data/app/assets/icons/outline/file-copy.svg +0 -3
  223. data/app/assets/icons/outline/file-csv.svg +0 -3
  224. data/app/assets/icons/outline/file-export.svg +0 -3
  225. data/app/assets/icons/outline/file-image.svg +0 -4
  226. data/app/assets/icons/outline/file-import.svg +0 -3
  227. data/app/assets/icons/outline/file-invoice.svg +0 -3
  228. data/app/assets/icons/outline/file-lines.svg +0 -3
  229. data/app/assets/icons/outline/file-music.svg +0 -3
  230. data/app/assets/icons/outline/file-paste.svg +0 -3
  231. data/app/assets/icons/outline/file-pdf.svg +0 -3
  232. data/app/assets/icons/outline/file-pen.svg +0 -3
  233. data/app/assets/icons/outline/file-ppt.svg +0 -3
  234. data/app/assets/icons/outline/file-search.svg +0 -3
  235. data/app/assets/icons/outline/file-shield.svg +0 -3
  236. data/app/assets/icons/outline/file-video.svg +0 -3
  237. data/app/assets/icons/outline/file-word.svg +0 -3
  238. data/app/assets/icons/outline/file-zip.svg +0 -3
  239. data/app/assets/icons/outline/file.svg +0 -3
  240. data/app/assets/icons/outline/filter.svg +0 -3
  241. data/app/assets/icons/outline/fingerprint.svg +0 -3
  242. data/app/assets/icons/outline/fire.svg +0 -3
  243. data/app/assets/icons/outline/flag.svg +0 -3
  244. data/app/assets/icons/outline/folder-arrow-right.svg +0 -3
  245. data/app/assets/icons/outline/folder-duplicate.svg +0 -3
  246. data/app/assets/icons/outline/folder-open.svg +0 -3
  247. data/app/assets/icons/outline/folder-plus.svg +0 -3
  248. data/app/assets/icons/outline/folder.svg +0 -3
  249. data/app/assets/icons/outline/forward-step.svg +0 -3
  250. data/app/assets/icons/outline/forward.svg +0 -3
  251. data/app/assets/icons/outline/gift-box.svg +0 -3
  252. data/app/assets/icons/outline/globe.svg +0 -3
  253. data/app/assets/icons/outline/grid-plus.svg +0 -3
  254. data/app/assets/icons/outline/grid.svg +0 -3
  255. data/app/assets/icons/outline/headphones.svg +0 -3
  256. data/app/assets/icons/outline/heart.svg +0 -3
  257. data/app/assets/icons/outline/home.svg +0 -3
  258. data/app/assets/icons/outline/hourglass.svg +0 -3
  259. data/app/assets/icons/outline/image.svg +0 -3
  260. data/app/assets/icons/outline/inbox-full.svg +0 -3
  261. data/app/assets/icons/outline/inbox.svg +0 -3
  262. data/app/assets/icons/outline/indent.svg +0 -3
  263. data/app/assets/icons/outline/info-circle.svg +0 -3
  264. data/app/assets/icons/outline/keyboard.svg +0 -5
  265. data/app/assets/icons/outline/label.svg +0 -3
  266. data/app/assets/icons/outline/landmark.svg +0 -3
  267. data/app/assets/icons/outline/layers.svg +0 -3
  268. data/app/assets/icons/outline/letter-bold.svg +0 -3
  269. data/app/assets/icons/outline/letter-italic.svg +0 -3
  270. data/app/assets/icons/outline/letter-underline.svg +0 -3
  271. data/app/assets/icons/outline/life-saver.svg +0 -3
  272. data/app/assets/icons/outline/lightbulb.svg +0 -3
  273. data/app/assets/icons/outline/link.svg +0 -3
  274. data/app/assets/icons/outline/list-music.svg +0 -3
  275. data/app/assets/icons/outline/list.svg +0 -3
  276. data/app/assets/icons/outline/lock-open.svg +0 -3
  277. data/app/assets/icons/outline/lock-time.svg +0 -3
  278. data/app/assets/icons/outline/lock.svg +0 -3
  279. data/app/assets/icons/outline/mail-box.svg +0 -3
  280. data/app/assets/icons/outline/map-pin-alt.svg +0 -4
  281. data/app/assets/icons/outline/map-pin.svg +0 -3
  282. data/app/assets/icons/outline/message-caption.svg +0 -3
  283. data/app/assets/icons/outline/message-dots.svg +0 -3
  284. data/app/assets/icons/outline/messages.svg +0 -3
  285. data/app/assets/icons/outline/microphone.svg +0 -3
  286. data/app/assets/icons/outline/minimize.svg +0 -3
  287. data/app/assets/icons/outline/minus.svg +0 -3
  288. data/app/assets/icons/outline/mobile-phone.svg +0 -3
  289. data/app/assets/icons/outline/moon.svg +0 -3
  290. data/app/assets/icons/outline/newspaper.svg +0 -3
  291. data/app/assets/icons/outline/ordered-list.svg +0 -3
  292. data/app/assets/icons/outline/outdent.svg +0 -3
  293. data/app/assets/icons/outline/palette.svg +0 -3
  294. data/app/assets/icons/outline/paper-clip.svg +0 -3
  295. data/app/assets/icons/outline/paper-plane.svg +0 -3
  296. data/app/assets/icons/outline/paragraph.svg +0 -3
  297. data/app/assets/icons/outline/pause.svg +0 -3
  298. data/app/assets/icons/outline/pen-nib.svg +0 -3
  299. data/app/assets/icons/outline/pen.svg +0 -3
  300. data/app/assets/icons/outline/phone.svg +0 -3
  301. data/app/assets/icons/outline/play.svg +0 -3
  302. data/app/assets/icons/outline/plus.svg +0 -3
  303. data/app/assets/icons/outline/printer.svg +0 -3
  304. data/app/assets/icons/outline/profile-card.svg +0 -3
  305. data/app/assets/icons/outline/question-circle.svg +0 -3
  306. data/app/assets/icons/outline/quote.svg +0 -3
  307. data/app/assets/icons/outline/receipt.svg +0 -3
  308. data/app/assets/icons/outline/rectangle-list.svg +0 -3
  309. data/app/assets/icons/outline/redo.svg +0 -3
  310. data/app/assets/icons/outline/refresh.svg +0 -3
  311. data/app/assets/icons/outline/reply-all.svg +0 -3
  312. data/app/assets/icons/outline/reply.svg +0 -3
  313. data/app/assets/icons/outline/restore-window.svg +0 -3
  314. data/app/assets/icons/outline/rocket.svg +0 -3
  315. data/app/assets/icons/outline/ruler-combined.svg +0 -3
  316. data/app/assets/icons/outline/sale-percent.svg +0 -3
  317. data/app/assets/icons/outline/scale-balanced.svg +0 -3
  318. data/app/assets/icons/outline/search.svg +0 -3
  319. data/app/assets/icons/outline/share-all.svg +0 -3
  320. data/app/assets/icons/outline/share-nodes.svg +0 -3
  321. data/app/assets/icons/outline/shield-check.svg +0 -3
  322. data/app/assets/icons/outline/shield.svg +0 -3
  323. data/app/assets/icons/outline/shopping-bag.svg +0 -3
  324. data/app/assets/icons/outline/shuffle.svg +0 -3
  325. data/app/assets/icons/outline/sort-horizontal.svg +0 -3
  326. data/app/assets/icons/outline/sort.svg +0 -3
  327. data/app/assets/icons/outline/star-half-stroke.svg +0 -3
  328. data/app/assets/icons/outline/star-half.svg +0 -3
  329. data/app/assets/icons/outline/star.svg +0 -3
  330. data/app/assets/icons/outline/store.svg +0 -3
  331. data/app/assets/icons/outline/sun.svg +0 -3
  332. data/app/assets/icons/outline/swatchbook.svg +0 -3
  333. data/app/assets/icons/outline/table-column.svg +0 -3
  334. data/app/assets/icons/outline/table-row.svg +0 -3
  335. data/app/assets/icons/outline/tablet.svg +0 -3
  336. data/app/assets/icons/outline/tag.svg +0 -3
  337. data/app/assets/icons/outline/terminal.svg +0 -3
  338. data/app/assets/icons/outline/text-size.svg +0 -3
  339. data/app/assets/icons/outline/text-slash.svg +0 -3
  340. data/app/assets/icons/outline/thumbs-down.svg +0 -3
  341. data/app/assets/icons/outline/thumbs-up.svg +0 -3
  342. data/app/assets/icons/outline/ticket.svg +0 -3
  343. data/app/assets/icons/outline/trash-bin.svg +0 -3
  344. data/app/assets/icons/outline/truck.svg +0 -3
  345. data/app/assets/icons/outline/undo.svg +0 -3
  346. data/app/assets/icons/outline/upload.svg +0 -3
  347. data/app/assets/icons/outline/user-add.svg +0 -3
  348. data/app/assets/icons/outline/user-circle.svg +0 -3
  349. data/app/assets/icons/outline/user-edit.svg +0 -3
  350. data/app/assets/icons/outline/user-headset.svg +0 -3
  351. data/app/assets/icons/outline/user-remove.svg +0 -3
  352. data/app/assets/icons/outline/user-settings.svg +0 -3
  353. data/app/assets/icons/outline/user.svg +0 -3
  354. data/app/assets/icons/outline/users-group.svg +0 -3
  355. data/app/assets/icons/outline/users.svg +0 -3
  356. data/app/assets/icons/outline/video-camera.svg +0 -3
  357. data/app/assets/icons/outline/volume-down.svg +0 -3
  358. data/app/assets/icons/outline/volume-up.svg +0 -3
  359. data/app/assets/icons/outline/wallet.svg +0 -3
  360. data/app/assets/icons/outline/wand-magic-sparkles.svg +0 -3
  361. data/app/assets/icons/outline/window.svg +0 -3
  362. data/app/assets/icons/outline/zoom-in.svg +0 -3
  363. data/app/assets/icons/outline/zoom-out.svg +0 -3
  364. data/app/assets/icons/solid/X.svg +0 -3
  365. data/app/assets/icons/solid/address-book.svg +0 -3
  366. data/app/assets/icons/solid/adjustments-horizontal.svg +0 -3
  367. data/app/assets/icons/solid/adjustments-vertical.svg +0 -3
  368. data/app/assets/icons/solid/annotation.svg +0 -3
  369. data/app/assets/icons/solid/apple.svg +0 -3
  370. data/app/assets/icons/solid/archive-arrow-down.svg +0 -3
  371. data/app/assets/icons/solid/archive.svg +0 -4
  372. data/app/assets/icons/solid/arrow-right-alt.svg +0 -3
  373. data/app/assets/icons/solid/arrow-up-right-from-square.svg +0 -4
  374. data/app/assets/icons/solid/backward-step.svg +0 -3
  375. data/app/assets/icons/solid/badge-check.svg +0 -3
  376. data/app/assets/icons/solid/bell-active-alt.svg +0 -3
  377. data/app/assets/icons/solid/bell-active.svg +0 -5
  378. data/app/assets/icons/solid/bell-ring.svg +0 -3
  379. data/app/assets/icons/solid/bell.svg +0 -3
  380. data/app/assets/icons/solid/blender-phone.svg +0 -3
  381. data/app/assets/icons/solid/book-open.svg +0 -3
  382. data/app/assets/icons/solid/book.svg +0 -3
  383. data/app/assets/icons/solid/bookmark.svg +0 -3
  384. data/app/assets/icons/solid/brain.svg +0 -3
  385. data/app/assets/icons/solid/briefcase.svg +0 -3
  386. data/app/assets/icons/solid/bug.svg +0 -3
  387. data/app/assets/icons/solid/building.svg +0 -3
  388. data/app/assets/icons/solid/bullhorn.svg +0 -3
  389. data/app/assets/icons/solid/calendar-edit.svg +0 -4
  390. data/app/assets/icons/solid/calendar-month.svg +0 -3
  391. data/app/assets/icons/solid/calendar-plus.svg +0 -3
  392. data/app/assets/icons/solid/calendar-week.svg +0 -3
  393. data/app/assets/icons/solid/camera-photo.svg +0 -3
  394. data/app/assets/icons/solid/caption.svg +0 -3
  395. data/app/assets/icons/solid/caret-down.svg +0 -3
  396. data/app/assets/icons/solid/caret-left.svg +0 -3
  397. data/app/assets/icons/solid/caret-right.svg +0 -3
  398. data/app/assets/icons/solid/caret-sort.svg +0 -3
  399. data/app/assets/icons/solid/caret-up.svg +0 -3
  400. data/app/assets/icons/solid/cart-plus-alt.svg +0 -4
  401. data/app/assets/icons/solid/cart-plus.svg +0 -4
  402. data/app/assets/icons/solid/cart.svg +0 -3
  403. data/app/assets/icons/solid/cash.svg +0 -5
  404. data/app/assets/icons/solid/chart-mixed-dollar.svg +0 -3
  405. data/app/assets/icons/solid/chart-pie.svg +0 -4
  406. data/app/assets/icons/solid/check-circle.svg +0 -3
  407. data/app/assets/icons/solid/check-plus-circle.svg +0 -4
  408. data/app/assets/icons/solid/circle-pause.svg +0 -3
  409. data/app/assets/icons/solid/circle-plus.svg +0 -3
  410. data/app/assets/icons/solid/clapperboard-play.svg +0 -3
  411. data/app/assets/icons/solid/clipboard-check.svg +0 -3
  412. data/app/assets/icons/solid/clipboard-list.svg +0 -3
  413. data/app/assets/icons/solid/clipboard.svg +0 -3
  414. data/app/assets/icons/solid/clock.svg +0 -3
  415. data/app/assets/icons/solid/close-circle.svg +0 -3
  416. data/app/assets/icons/solid/cloud-arrow-up.svg +0 -4
  417. data/app/assets/icons/solid/code-branch.svg +0 -3
  418. data/app/assets/icons/solid/code-fork.svg +0 -3
  419. data/app/assets/icons/solid/code-merge.svg +0 -3
  420. data/app/assets/icons/solid/code-pull-request.svg +0 -3
  421. data/app/assets/icons/solid/cog.svg +0 -3
  422. data/app/assets/icons/solid/column.svg +0 -3
  423. data/app/assets/icons/solid/computer-speaker.svg +0 -4
  424. data/app/assets/icons/solid/credit-card.svg +0 -4
  425. data/app/assets/icons/solid/css.svg +0 -3
  426. data/app/assets/icons/solid/database.svg +0 -3
  427. data/app/assets/icons/solid/desktop-pc.svg +0 -3
  428. data/app/assets/icons/solid/discord.svg +0 -3
  429. data/app/assets/icons/solid/download.svg +0 -4
  430. data/app/assets/icons/solid/draw-square.svg +0 -4
  431. data/app/assets/icons/solid/dribbble.svg +0 -3
  432. data/app/assets/icons/solid/dropbox.svg +0 -4
  433. data/app/assets/icons/solid/edit.svg +0 -4
  434. data/app/assets/icons/solid/envelope-open.svg +0 -4
  435. data/app/assets/icons/solid/envelope.svg +0 -4
  436. data/app/assets/icons/solid/exclamation-circle.svg +0 -3
  437. data/app/assets/icons/solid/eye-slash.svg +0 -5
  438. data/app/assets/icons/solid/eye.svg +0 -3
  439. data/app/assets/icons/solid/face-explode.svg +0 -3
  440. data/app/assets/icons/solid/face-grin-stars.svg +0 -3
  441. data/app/assets/icons/solid/face-grin.svg +0 -3
  442. data/app/assets/icons/solid/face-laugh.svg +0 -3
  443. data/app/assets/icons/solid/facebook.svg +0 -3
  444. data/app/assets/icons/solid/file-chart-bar.svg +0 -3
  445. data/app/assets/icons/solid/file-check.svg +0 -4
  446. data/app/assets/icons/solid/file-circle-plus.svg +0 -4
  447. data/app/assets/icons/solid/file-clone.svg +0 -4
  448. data/app/assets/icons/solid/file-code.svg +0 -3
  449. data/app/assets/icons/solid/file-copy-alt.svg +0 -4
  450. data/app/assets/icons/solid/file-copy.svg +0 -4
  451. data/app/assets/icons/solid/file-csv.svg +0 -3
  452. data/app/assets/icons/solid/file-export.svg +0 -3
  453. data/app/assets/icons/solid/file-image.svg +0 -3
  454. data/app/assets/icons/solid/file-import.svg +0 -3
  455. data/app/assets/icons/solid/file-invoice.svg +0 -3
  456. data/app/assets/icons/solid/file-lines.svg +0 -3
  457. data/app/assets/icons/solid/file-music.svg +0 -3
  458. data/app/assets/icons/solid/file-paste.svg +0 -4
  459. data/app/assets/icons/solid/file-pdf.svg +0 -3
  460. data/app/assets/icons/solid/file-pen.svg +0 -4
  461. data/app/assets/icons/solid/file-ppt.svg +0 -3
  462. data/app/assets/icons/solid/file-search.svg +0 -3
  463. data/app/assets/icons/solid/file-shield.svg +0 -4
  464. data/app/assets/icons/solid/file-video.svg +0 -3
  465. data/app/assets/icons/solid/file-word.svg +0 -3
  466. data/app/assets/icons/solid/file-zip.svg +0 -3
  467. data/app/assets/icons/solid/file.svg +0 -3
  468. data/app/assets/icons/solid/filter.svg +0 -3
  469. data/app/assets/icons/solid/fire.svg +0 -3
  470. data/app/assets/icons/solid/flag.svg +0 -3
  471. data/app/assets/icons/solid/flowbite.svg +0 -6
  472. data/app/assets/icons/solid/folder-arrow-right.svg +0 -3
  473. data/app/assets/icons/solid/folder-duplicate.svg +0 -4
  474. data/app/assets/icons/solid/folder-open.svg +0 -3
  475. data/app/assets/icons/solid/folder-plus.svg +0 -3
  476. data/app/assets/icons/solid/folder.svg +0 -3
  477. data/app/assets/icons/solid/forward-step.svg +0 -3
  478. data/app/assets/icons/solid/forward.svg +0 -3
  479. data/app/assets/icons/solid/gift-box.svg +0 -3
  480. data/app/assets/icons/solid/github.svg +0 -3
  481. data/app/assets/icons/solid/globe.svg +0 -3
  482. data/app/assets/icons/solid/google.svg +0 -3
  483. data/app/assets/icons/solid/grid-plus.svg +0 -3
  484. data/app/assets/icons/solid/grid.svg +0 -3
  485. data/app/assets/icons/solid/headphones.svg +0 -3
  486. data/app/assets/icons/solid/heart.svg +0 -3
  487. data/app/assets/icons/solid/home.svg +0 -3
  488. data/app/assets/icons/solid/hourglass.svg +0 -3
  489. data/app/assets/icons/solid/html.svg +0 -3
  490. data/app/assets/icons/solid/image.svg +0 -4
  491. data/app/assets/icons/solid/inbox-full.svg +0 -3
  492. data/app/assets/icons/solid/inbox.svg +0 -3
  493. data/app/assets/icons/solid/indent.svg +0 -3
  494. data/app/assets/icons/solid/info-circle.svg +0 -3
  495. data/app/assets/icons/solid/keyboard.svg +0 -3
  496. data/app/assets/icons/solid/label.svg +0 -3
  497. data/app/assets/icons/solid/landmark.svg +0 -4
  498. data/app/assets/icons/solid/layers.svg +0 -4
  499. data/app/assets/icons/solid/life-saver.svg +0 -3
  500. data/app/assets/icons/solid/lightbulb.svg +0 -3
  501. data/app/assets/icons/solid/linkedin.svg +0 -4
  502. data/app/assets/icons/solid/list-music.svg +0 -3
  503. data/app/assets/icons/solid/lock-open.svg +0 -3
  504. data/app/assets/icons/solid/lock-time.svg +0 -4
  505. data/app/assets/icons/solid/lock.svg +0 -3
  506. data/app/assets/icons/solid/mail-box.svg +0 -3
  507. data/app/assets/icons/solid/map-pin-alt.svg +0 -3
  508. data/app/assets/icons/solid/map-pin.svg +0 -3
  509. data/app/assets/icons/solid/message-caption.svg +0 -3
  510. data/app/assets/icons/solid/message-dots.svg +0 -3
  511. data/app/assets/icons/solid/messages.svg +0 -4
  512. data/app/assets/icons/solid/microphone.svg +0 -4
  513. data/app/assets/icons/solid/mobile-phone.svg +0 -3
  514. data/app/assets/icons/solid/moon.svg +0 -3
  515. data/app/assets/icons/solid/newspaper.svg +0 -3
  516. data/app/assets/icons/solid/npm.svg +0 -3
  517. data/app/assets/icons/solid/outdent.svg +0 -3
  518. data/app/assets/icons/solid/palette.svg +0 -3
  519. data/app/assets/icons/solid/paper-plane.svg +0 -3
  520. data/app/assets/icons/solid/paragraph.svg +0 -3
  521. data/app/assets/icons/solid/pause.svg +0 -3
  522. data/app/assets/icons/solid/pen-nib.svg +0 -3
  523. data/app/assets/icons/solid/pen.svg +0 -3
  524. data/app/assets/icons/solid/phone.svg +0 -3
  525. data/app/assets/icons/solid/play.svg +0 -3
  526. data/app/assets/icons/solid/printer.svg +0 -3
  527. data/app/assets/icons/solid/profile-card.svg +0 -3
  528. data/app/assets/icons/solid/question-circle.svg +0 -3
  529. data/app/assets/icons/solid/quote.svg +0 -3
  530. data/app/assets/icons/solid/react.svg +0 -4
  531. data/app/assets/icons/solid/receipt.svg +0 -3
  532. data/app/assets/icons/solid/rectangle-list.svg +0 -3
  533. data/app/assets/icons/solid/reply-all.svg +0 -3
  534. data/app/assets/icons/solid/reply.svg +0 -3
  535. data/app/assets/icons/solid/rocket.svg +0 -3
  536. data/app/assets/icons/solid/sale-percent.svg +0 -3
  537. data/app/assets/icons/solid/scale-balanced.svg +0 -3
  538. data/app/assets/icons/solid/search.svg +0 -4
  539. data/app/assets/icons/solid/share-all.svg +0 -3
  540. data/app/assets/icons/solid/share-nodes.svg +0 -3
  541. data/app/assets/icons/solid/shield-check.svg +0 -3
  542. data/app/assets/icons/solid/shield.svg +0 -3
  543. data/app/assets/icons/solid/shopping-bag.svg +0 -3
  544. data/app/assets/icons/solid/stackoverflow.svg +0 -4
  545. data/app/assets/icons/solid/star-half-stroke.svg +0 -3
  546. data/app/assets/icons/solid/star-half.svg +0 -3
  547. data/app/assets/icons/solid/star.svg +0 -3
  548. data/app/assets/icons/solid/store.svg +0 -3
  549. data/app/assets/icons/solid/sun.svg +0 -3
  550. data/app/assets/icons/solid/swatchbook.svg +0 -3
  551. data/app/assets/icons/solid/table-column.svg +0 -3
  552. data/app/assets/icons/solid/table-row.svg +0 -3
  553. data/app/assets/icons/solid/tablet.svg +0 -3
  554. data/app/assets/icons/solid/tag.svg +0 -3
  555. data/app/assets/icons/solid/tailwind.svg +0 -3
  556. data/app/assets/icons/solid/terminal.svg +0 -3
  557. data/app/assets/icons/solid/thumbs-down.svg +0 -3
  558. data/app/assets/icons/solid/thumbs-up.svg +0 -3
  559. data/app/assets/icons/solid/ticket.svg +0 -3
  560. data/app/assets/icons/solid/trash-bin.svg +0 -3
  561. data/app/assets/icons/solid/truck.svg +0 -3
  562. data/app/assets/icons/solid/twitter.svg +0 -3
  563. data/app/assets/icons/solid/upload.svg +0 -3
  564. data/app/assets/icons/solid/user-add.svg +0 -3
  565. data/app/assets/icons/solid/user-circle.svg +0 -3
  566. data/app/assets/icons/solid/user-edit.svg +0 -3
  567. data/app/assets/icons/solid/user-headset.svg +0 -3
  568. data/app/assets/icons/solid/user-remove.svg +0 -3
  569. data/app/assets/icons/solid/user-settings.svg +0 -3
  570. data/app/assets/icons/solid/user.svg +0 -3
  571. data/app/assets/icons/solid/users-group.svg +0 -3
  572. data/app/assets/icons/solid/users.svg +0 -3
  573. data/app/assets/icons/solid/video-camera.svg +0 -3
  574. data/app/assets/icons/solid/volume-down.svg +0 -4
  575. data/app/assets/icons/solid/volume-up.svg +0 -5
  576. data/app/assets/icons/solid/vue.svg +0 -3
  577. data/app/assets/icons/solid/wallet.svg +0 -4
  578. data/app/assets/icons/solid/wand-magic-sparkles.svg +0 -4
  579. data/app/assets/icons/solid/window-restore.svg +0 -4
  580. data/app/assets/icons/solid/window.svg +0 -3
  581. data/app/assets/icons/solid/youtube.svg +0 -3
  582. data/app/assets/icons/solid/zoom-in.svg +0 -3
  583. data/app/assets/icons/solid/zoom-out.svg +0 -3
  584. data/app/views/components/action_button/action_button_component.html.erb +0 -7
  585. data/app/views/components/action_button/action_button_component.rb +0 -15
  586. data/app/views/components/attributes.rb +0 -184
  587. data/app/views/components/base.rb +0 -29
  588. data/app/views/components/block/block_component.html.erb +0 -3
  589. data/app/views/components/block/block_component.rb +0 -44
  590. data/app/views/components/breadcrumbs/breadcrumbs_component.html.erb +0 -96
  591. data/app/views/components/breadcrumbs/breadcrumbs_component.rb +0 -9
  592. data/app/views/components/button/button_component.html.erb +0 -11
  593. data/app/views/components/button/button_component.rb +0 -128
  594. data/app/views/components/dyna_frame_content/dyna_frame_content_component.html.erb +0 -8
  595. data/app/views/components/dyna_frame_content/dyna_frame_content_component.rb +0 -6
  596. data/app/views/components/dyna_frame_host/dyna_frame_host_component.html.erb +0 -3
  597. data/app/views/components/dyna_frame_host/dyna_frame_host_component.rb +0 -18
  598. data/app/views/components/empty_card/empty_card_component.html.erb +0 -6
  599. data/app/views/components/empty_card/empty_card_component.rb +0 -7
  600. data/app/views/components/form/form_builder.rb +0 -75
  601. data/app/views/components/form/form_component.html.erb +0 -73
  602. data/app/views/components/form/form_component.rb +0 -23
  603. data/app/views/components/has_many_panel/has_many_panel_component.html.erb +0 -25
  604. data/app/views/components/has_many_panel/has_many_panel_component.rb +0 -16
  605. data/app/views/components/header/header_component.html.erb +0 -1
  606. data/app/views/components/header/header_component.rb +0 -7
  607. data/app/views/components/interactive_action_form/interactive_action_form_component.html.erb +0 -39
  608. data/app/views/components/interactive_action_form/interactive_action_form_component.rb +0 -8
  609. data/app/views/components/nav_grid_menu/nav_grid_menu_component.html.erb +0 -24
  610. data/app/views/components/nav_grid_menu/nav_grid_menu_component.rb +0 -23
  611. data/app/views/components/nav_grid_menu_item/nav_grid_menu_item_component.html.erb +0 -4
  612. data/app/views/components/nav_grid_menu_item/nav_grid_menu_item_component.rb +0 -20
  613. data/app/views/components/nav_user/nav_user_component.html.erb +0 -50
  614. data/app/views/components/nav_user/nav_user_component.rb +0 -32
  615. data/app/views/components/nav_user_link/nav_user_link_component.html.erb +0 -7
  616. data/app/views/components/nav_user_link/nav_user_link_component.rb +0 -23
  617. data/app/views/components/nav_user_section/nav_user_section_component.html.erb +0 -7
  618. data/app/views/components/nav_user_section/nav_user_section_component.rb +0 -18
  619. data/app/views/components/nested_resource_form_fields/nested_resource_form_fields_component.html.erb +0 -64
  620. data/app/views/components/nested_resource_form_fields/nested_resource_form_fields_component.rb +0 -29
  621. data/app/views/components/pagination/pagination_component.html.erb +0 -6
  622. data/app/views/components/pagination/pagination_component.rb +0 -94
  623. data/app/views/components/panel/panel_component.html.erb +0 -17
  624. data/app/views/components/panel/panel_component.rb +0 -17
  625. data/app/views/components/resource_header/resource_header_component.html.erb +0 -83
  626. data/app/views/components/resource_header/resource_header_component.rb +0 -30
  627. data/app/views/components/resource_layout/resource_layout_component.html.erb +0 -53
  628. data/app/views/components/resource_layout/resource_layout_component.rb +0 -41
  629. data/app/views/components/sidebar/sidebar_component.html.erb +0 -69
  630. data/app/views/components/sidebar/sidebar_component.rb +0 -23
  631. data/app/views/components/sidebar_menu/sidebar_menu_component.html.erb +0 -5
  632. data/app/views/components/sidebar_menu/sidebar_menu_component.rb +0 -17
  633. data/app/views/components/sidebar_menu_item/sidebar_menu_item_component.html.erb +0 -64
  634. data/app/views/components/sidebar_menu_item/sidebar_menu_item_component.rb +0 -52
  635. data/app/views/components/skeleton/table/table_component.html.erb +0 -18
  636. data/app/views/components/skeleton/table/table_component.rb +0 -6
  637. data/app/views/components/table/table_component.html.erb +0 -43
  638. data/app/views/components/table/table_component.rb +0 -159
  639. data/app/views/components/table_search_input/table_search_input_component.html.erb +0 -48
  640. data/app/views/components/table_search_input/table_search_input_component.rb +0 -15
  641. data/app/views/components/table_toolbar/table_toolbar_component.html.erb +0 -7
  642. data/app/views/components/table_toolbar/table_toolbar_component.rb +0 -17
  643. data/app/views/components/toolbar/toolbar_component.html.erb +0 -67
  644. data/app/views/components/toolbar/toolbar_component.rb +0 -26
  645. data/app/views/layouts/resource.html copy.erb +0 -49
  646. data/app/views/plutonium/_resource_header.html copy.erb +0 -287
  647. data/lib/generators/pu/gen/component/component_generator.rb +0 -99
  648. data/lib/generators/pu/gen/component/templates/component.html.erb.tt +0 -3
  649. data/lib/generators/pu/gen/component/templates/component.rb.tt +0 -15
  650. data/lib/generators/pu/gen/component/templates/controller.js.tt +0 -8
  651. data/lib/plutonium/builders/menus/sidebar_menu.rb.bk +0 -26
  652. data/lib/plutonium/builders/menus/sidebar_menu_item.rb.bk +0 -28
  653. data/lib/plutonium/component_registry.rb +0 -19
  654. data/lib/plutonium/core/action.rb +0 -49
  655. data/lib/plutonium/core/actions/basic_action.rb +0 -16
  656. data/lib/plutonium/core/actions/collection.rb +0 -37
  657. data/lib/plutonium/core/actions/destroy_action.rb +0 -23
  658. data/lib/plutonium/core/actions/edit_action.rb +0 -21
  659. data/lib/plutonium/core/actions/interactive_action.rb +0 -64
  660. data/lib/plutonium/core/actions/new_action.rb +0 -20
  661. data/lib/plutonium/core/actions/show_action.rb +0 -19
  662. data/lib/plutonium/core/associations/renderers/base.rb +0 -77
  663. data/lib/plutonium/core/associations/renderers/factory.rb +0 -36
  664. data/lib/plutonium/core/associations/renderers/has_many_renderer.rb +0 -18
  665. data/lib/plutonium/core/autodiscovery/association_renderer_discoverer.rb +0 -31
  666. data/lib/plutonium/core/autodiscovery/discoverer.rb +0 -15
  667. data/lib/plutonium/core/autodiscovery/input_discoverer.rb +0 -31
  668. data/lib/plutonium/core/autodiscovery/renderer_discoverer.rb +0 -31
  669. data/lib/plutonium/core/definers/action_definer.rb +0 -25
  670. data/lib/plutonium/core/definers/association_renderer_definer.rb +0 -33
  671. data/lib/plutonium/core/definers/field_definer.rb +0 -19
  672. data/lib/plutonium/core/definers/field_input_definer.rb +0 -77
  673. data/lib/plutonium/core/definers/field_renderer_definer.rb +0 -37
  674. data/lib/plutonium/core/fields/inputs/attachment_input.rb +0 -24
  675. data/lib/plutonium/core/fields/inputs/base.rb +0 -110
  676. data/lib/plutonium/core/fields/inputs/belongs_to_association_input.rb +0 -15
  677. data/lib/plutonium/core/fields/inputs/checkbox_input.rb +0 -15
  678. data/lib/plutonium/core/fields/inputs/date_time_input.rb +0 -15
  679. data/lib/plutonium/core/fields/inputs/factory.rb +0 -50
  680. data/lib/plutonium/core/fields/inputs/has_many_association_input.rb +0 -15
  681. data/lib/plutonium/core/fields/inputs/nested_input.rb +0 -72
  682. data/lib/plutonium/core/fields/inputs/noop_input.rb +0 -16
  683. data/lib/plutonium/core/fields/inputs/phone_input.rb +0 -22
  684. data/lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb +0 -48
  685. data/lib/plutonium/core/fields/inputs/simple_form_association_input.rb +0 -26
  686. data/lib/plutonium/core/fields/inputs/simple_form_input.rb +0 -13
  687. data/lib/plutonium/core/fields/renderers/association_renderer.rb +0 -28
  688. data/lib/plutonium/core/fields/renderers/attachment_renderer.rb +0 -21
  689. data/lib/plutonium/core/fields/renderers/base.rb +0 -83
  690. data/lib/plutonium/core/fields/renderers/basic_renderer.rb +0 -13
  691. data/lib/plutonium/core/fields/renderers/factory.rb +0 -37
  692. data/lib/plutonium/core/renderable.rb +0 -20
  693. data/lib/plutonium/core/ui/collection.rb +0 -18
  694. data/lib/plutonium/core/ui/detail.rb +0 -15
  695. data/lib/plutonium/core/ui/form.rb +0 -12
  696. data/lib/plutonium/helpers/action_buttons_helper.rb +0 -32
  697. data/lib/plutonium/helpers/component_helper.rb +0 -14
  698. data/lib/plutonium/helpers/form_helper.rb +0 -50
  699. data/lib/plutonium/icons.rb +0 -32
  700. data/lib/plutonium/preserved__/field.rb.bk +0 -65
  701. data/lib/plutonium/preserved__/input.rb.bk +0 -93
  702. data/lib/plutonium/ui/table/components/pagy_page_info.rb +0 -70
  703. data/src/js/controllers/has_many_panel_controller.js +0 -8
  704. data/src/js/controllers/interactive_action_form_controller.js +0 -13
  705. data/src/js/controllers/nav_grid_menu_controller.js +0 -8
  706. data/src/js/controllers/nav_grid_menu_item_controller.js +0 -8
  707. data/src/js/controllers/nav_user_controller.js +0 -8
  708. data/src/js/controllers/nav_user_link_controller.js +0 -8
  709. data/src/js/controllers/nav_user_section_controller.js +0 -8
  710. data/src/js/controllers/resource_layout_controller.js +0 -8
  711. data/src/js/controllers/sidebar_controller.js +0 -8
  712. data/src/js/controllers/sidebar_menu_controller.js +0 -8
  713. data/src/js/controllers/sidebar_menu_item_controller.js +0 -8
  714. data/src/js/controllers/table_controller.js +0 -8
  715. data/src/js/controllers/table_search_input_controller.js +0 -8
  716. data/src/js/controllers/table_toolbar_controller.js +0 -8
  717. data/src/js/controllers/toolbar_controller.js +0 -8
@@ -1,128 +0,0 @@
1
- module PlutoniumUi
2
- class ButtonComponent < PlutoniumUi::Base
3
- option :label
4
- option :to, optional: true
5
- option :icon, optional: true
6
- option :color, optional: true
7
- option :variant, optional: true
8
- option :size, optional: true
9
- option :type, default: proc { :button }
10
-
11
- private
12
-
13
- def base_attributes
14
- {
15
- classname: classnames
16
- }
17
- end
18
-
19
- def classnames
20
- classnames = ["text-center py-2.5 font-medium px-5", color_classes, shape_classes, size_classes]
21
- classnames << "flex items-center justify-center"
22
- classnames << "space-x-1" if icon.present? && label.present?
23
- classnames.join " "
24
- end
25
-
26
- def color_classes
27
- case variant
28
- when :outline
29
- outline_color_classes
30
- when :link
31
- link_color_classes
32
- else
33
- default_color_classes
34
- end
35
- end
36
-
37
- def shape_classes
38
- case variant
39
- when :link
40
- nil
41
- when :pill
42
- "rounded-full focus:outline-none focus:ring-4"
43
- else
44
- "rounded-lg focus:outline-none focus:ring-4"
45
- end
46
- end
47
-
48
- def size_classes
49
- case size
50
- when :xs
51
- "text-xs"
52
- when :lg
53
- "text-base"
54
- when :xl
55
- "py-3.5 text-base"
56
- else
57
- "text-sm"
58
- end
59
- end
60
-
61
- def outline_color_classes
62
- case color
63
- when :primary
64
- "border border-primary-700 text-primary-700 hover:bg-primary-800 hover:text-white focus:ring-primary-300 dark:border-primary-500 dark:text-primary-600 dark:hover:bg-primary-500 dark:hover:text-white dark:focus:ring-primary-800"
65
- when :blue
66
- "border border-blue-700 text-blue-700 hover:bg-blue-800 hover:text-white focus:ring-blue-300 dark:border-blue-500 dark:text-blue-500 dark:hover:bg-blue-500 dark:hover:text-white dark:focus:ring-blue-800"
67
- when :green
68
- "border border-green-700 text-green-700 hover:bg-green-800 hover:text-white focus:ring-green-300 dark:border-green-500 dark:text-green-500 dark:hover:bg-green-600 dark:hover:text-white dark:focus:ring-green-800"
69
- when :red
70
- "border border-red-700 text-red-700 hover:bg-red-800 hover:text-white focus:ring-red-300 dark:border-red-500 dark:text-red-500 dark:hover:bg-red-600 dark:hover:text-white dark:focus:ring-red-900"
71
- when :yellow
72
- "border border-yellow-400 text-yellow-400 hover:bg-yellow-500 hover:text-white focus:ring-yellow-300 dark:border-yellow-300 dark:text-yellow-300 dark:hover:bg-yellow-400 dark:hover:text-white dark:focus:ring-yellow-900"
73
- when :purple
74
- "border border-purple-700 text-purple-700 hover:bg-purple-800 hover:text-white focus:ring-purple-300 dark:border-purple-400 dark:text-purple-400 dark:hover:bg-purple-500 dark:hover:text-white dark:focus:ring-purple-900"
75
- when :dark
76
- "border border-gray-800 text-gray-900 hover:bg-gray-900 hover:text-white focus:ring-gray-300 dark:border-gray-600 dark:text-gray-200 dark:hover:bg-gray-600 dark:hover:text-white dark:focus:ring-gray-800 "
77
- when :light
78
- "border border-gray-300 bg-white text-gray-900 hover:bg-gray-100 focus:ring-gray-100 dark:border-gray-600 dark:bg-gray-800 dark:text-white dark:hover:border-gray-600 dark:hover:bg-gray-700 dark:focus:ring-gray-700"
79
- else
80
- "border border-gray-200 bg-white text-gray-900 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-gray-100 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700 dark:hover:text-white dark:focus:ring-gray-700"
81
- end
82
- end
83
-
84
- def link_color_classes
85
- case color
86
- when :primary
87
- "text-primary-600 dark:text-primary-500 hover:underline text-primary-600 dark:text-primary-500 hover:underline"
88
- when :blue
89
- "text-blue-600 dark:text-blue-500 hover:underline text-blue-600 dark:text-blue-500 hover:underline"
90
- when :green
91
- "text-green-600 dark:text-green-500 hover:underline text-green-600 dark:text-green-500 hover:underline"
92
- when :red
93
- "text-red-600 dark:text-red-500 hover:underline text-red-600 dark:text-red-500 hover:underline"
94
- when :yellow
95
- "text-yellow-600 dark:text-yellow-500 hover:underline text-yellow-600 dark:text-yellow-500 hover:underline"
96
- when :purple
97
- "text-purple-600 dark:text-purple-500 hover:underline text-purple-600 dark:text-purple-500 hover:underline"
98
- else
99
- "text-gray-800 dark:text-gray-900 hover:underline text-gray-600 dark:text-gray-900 hover:underline"
100
- end
101
- end
102
-
103
- def default_color_classes
104
- case color
105
- when :primary
106
- "bg-primary-700 text-white hover:bg-primary-800 focus:ring-primary-300 dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800"
107
- when :blue
108
- "bg-blue-700 text-white hover:bg-blue-800 focus:ring-blue-300 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"
109
- when :green
110
- "bg-green-700 text-white hover:bg-green-800 focus:ring-green-300 dark:bg-green-600 dark:hover:bg-green-700 dark:focus:ring-green-800"
111
- when :red
112
- "bg-red-700 text-white hover:bg-red-800 focus:ring-red-300 dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-900"
113
- when :yellow
114
- "bg-yellow-400 text-white hover:bg-yellow-500 focus:ring-yellow-300 dark:focus:ring-yellow-900"
115
- when :purple
116
- "bg-purple-700 text-white hover:bg-purple-800 focus:ring-purple-300 dark:bg-purple-600 dark:hover:bg-purple-700 dark:focus:ring-purple-900"
117
- when :dark
118
- "bg-gray-800 text-white hover:bg-gray-900 focus:ring-gray-300 dark:border-gray-700 dark:bg-gray-800 dark:hover:bg-gray-700 dark:focus:ring-gray-700"
119
- when :light
120
- "border border-gray-300 bg-white text-gray-900 hover:bg-gray-100 focus:ring-gray-100 dark:border-gray-600 dark:bg-gray-800 dark:text-white dark:hover:border-gray-600 dark:hover:bg-gray-700 dark:focus:ring-gray-700"
121
- else
122
- "border border-gray-200 bg-white text-gray-900 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-gray-100 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700 dark:hover:text-white dark:focus:ring-gray-700"
123
- end
124
- end
125
- end
126
- end
127
-
128
- Plutonium::ComponentRegistry.register :button, to: PlutoniumUi::ButtonComponent
@@ -1,8 +0,0 @@
1
- <% if current_turbo_frame.present? %>
2
- <%= turbo_frame_tag current_turbo_frame do %>
3
- <%= render "flash" %>
4
- <%= content %>
5
- <% end %>
6
- <% else %>
7
- <%= content %>
8
- <% end %>
@@ -1,6 +0,0 @@
1
- module PlutoniumUi
2
- class DynaFrameContentComponent < PlutoniumUi::Base
3
- end
4
- end
5
-
6
- Plutonium::ComponentRegistry.register :dyna_frame_content, to: PlutoniumUi::DynaFrameContentComponent
@@ -1,3 +0,0 @@
1
- <%= turbo_frame_tag attributes_hash.delete(:id), **attributes_hash do %>
2
- <%= content %>
3
- <% end %>
@@ -1,18 +0,0 @@
1
- module PlutoniumUi
2
- class DynaFrameHostComponent < PlutoniumUi::Base
3
- option :src
4
- option :loading
5
-
6
- private
7
-
8
- def base_attributes
9
- {
10
- id: SecureRandom.hex,
11
- src:,
12
- loading:
13
- }
14
- end
15
- end
16
- end
17
-
18
- Plutonium::ComponentRegistry.register :dyna_frame_host, to: PlutoniumUi::DynaFrameHostComponent
@@ -1,6 +0,0 @@
1
- <%= render_component :block do %>
2
- <div class="p-6 flex items-center flex-col gap-2">
3
- <p class="text-gray-500 sm:text-lg dark:text-gray-200"><%= message %></p>
4
- <%= content %>
5
- </div>
6
- <% end %>
@@ -1,7 +0,0 @@
1
- module PlutoniumUi
2
- class EmptyCardComponent < PlutoniumUi::Base
3
- option :message
4
- end
5
- end
6
-
7
- Plutonium::ComponentRegistry.register :empty_card, to: PlutoniumUi::EmptyCardComponent
@@ -1,75 +0,0 @@
1
- require "simple_form"
2
-
3
- module PlutoniumUi
4
- class FormBuilder < SimpleForm::FormBuilder
5
- def input(attribute_name, options = {}, &)
6
- label_class = options.dig(:label_html, :class)
7
- if object&.errors&.[](attribute_name).present?
8
- # Don't show the hint
9
- options.delete(:hint)
10
- # Apply error class if there are errors
11
- label_class = [label_class, "text-red-700 dark:text-red-500"].compact.join(" ")
12
- elsif object&.persisted? || !object&.errors&.empty?
13
- # Apply success class if the object is persisted, has been validated (errors are not empty), and the field has no errors
14
- label_class = [label_class, "block mb-2 text-sm font-medium text-green-700 dark:text-green-500"].compact.join(" ")
15
- else
16
- label_class = [label_class, "text-gray-700 dark:text-white"].compact.join(" ")
17
- end
18
-
19
- options[:label_html] ||= {}
20
- options[:label_html][:class] = label_class
21
-
22
- super
23
- end
24
-
25
- def hint(...)
26
- return if object.errors[attribute_name].present?
27
-
28
- super
29
- end
30
-
31
- def return_to(url)
32
- @template.tag(:input, type: "hidden", name: "return_to", value: url, hidden: true)
33
- end
34
-
35
- def error_notification(options = {})
36
- # Overriding this because we want an unstyled error notification
37
- translate_error_notification = lambda {
38
- lookups = []
39
- lookups << :"#{object_name}"
40
- lookups << :default_message
41
- lookups << "Please review the problems below"
42
- I18n.t(lookups.shift, scope: :"plutonium.error_notification", default: lookups)
43
- }
44
-
45
- (options.delete(:message) || translate_error_notification.call).html_safe
46
- end
47
-
48
- def submit_default_value
49
- object = convert_to_model(@object)
50
- key = if object
51
- object.persisted? ? :update : :create
52
- else
53
- :submit
54
- end
55
-
56
- model = if object.respond_to?(:model_name)
57
- object.model_name.human
58
- else
59
- @object_name.to_s.humanize
60
- end
61
-
62
- defaults = []
63
- # Object is a model and it is not overwritten by as and scope option.
64
- defaults << if object.respond_to?(:model_name) && object_name.to_s == model.downcase
65
- :"helpers.submit.#{object.model_name.i18n_key}.#{key}"
66
- else
67
- :"helpers.submit.#{object_name}.#{key}"
68
- end
69
- defaults << :"helpers.submit.#{key}"
70
- defaults << "#{key.to_s.humanize} #{model}"
71
-
72
- I18n.t(defaults.shift, model: model, default: defaults)
73
- end
74
- end
75
- end
@@ -1,73 +0,0 @@
1
- <%= resource_form_for form.record, html: {class: "flex flex-col space-y-6 px-4 py-2"} do |f| %>
2
- <h2 class="mb-4 text-xl font-bold text-gray-900 dark:text-gray-200"><%= f.submit_default_value %></h2>
3
-
4
- <% if f.object.errors.present? %>
5
- <div class="flex p-4 px-4 mb-4 text-sm text-red-800 rounded-lg bg-red-50 dark:bg-gray-800 dark:text-red-400" role="alert">
6
- <svg class="shrink-0 inline w-4 h-4 me-3 mt-[2px]" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 20 20">
7
- <path d="M10 .5a9.5 9.5 0 1 0 9.5 9.5A9.51 9.51 0 0 0 10 .5ZM9.5 4a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3ZM12 15H8a1 1 0 0 1 0-2h1v-3H8a1 1 0 0 1 0-2h2a1 1 0 0 1 1 1v4h1a1 1 0 0 1 0 2Z"/>
8
- </svg>
9
- <div>
10
- <span class="font-medium"><%= f.error_notification %></span>
11
- <ul class="mt-1.5 list-disc list-inside">
12
- <% f.object.errors.full_messages.each do |message| %>
13
- <li><%= f.error_notification message: message %></li>
14
- <% end %>
15
- </ul>
16
- </div>
17
- </div>
18
- <% end %>
19
-
20
- <div>
21
- <% form.inputs.values.each do |input| %>
22
- <%= render input.with(form: f, record: form.record) %>
23
- <% end %>
24
- </div>
25
-
26
- <div class="flex justify-end space-x-2">
27
- <%# TODO: move this into its own component %>
28
- <div class="flex" data-controller="resource-drop-down">
29
- <button type="submit"
30
- name="commit"
31
- value="<%= preferred_action_after_submit %>"
32
- class="inline-flex items-center px-4 py-2 bg-primary-600 text-white
33
- rounded-s-md hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-primary-500"
34
- data-disable-with="<%= f.submit_default_value %>"
35
- title="<%= action_after_submit_label preferred_action_after_submit %>"
36
- >
37
- Save <%= action_after_submit_label preferred_action_after_submit %>
38
- </button>
39
- <button type="button"
40
- id="form-submit-options-toggle"
41
- data-resource-drop-down-target="trigger"
42
- class="inline-flex items-center px-4 py-2 bg-primary-600 text-white
43
- rounded-e-md hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-primary-500
44
- dark:border-gray-300
45
- border-s">
46
- <svg class="w-2.5 h-2.5" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 6">
47
- <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m1 1 4 4 4-4"/>
48
- </svg>
49
- </button>
50
-
51
- <!-- Dropdown menu -->
52
- <div data-resource-drop-down-target="menu"
53
- class="z-10 hidden w-56 bg-white divide-y divide-gray-100 rounded-lg shadow dark:bg-gray-700 dark:divide-gray-600">
54
- <ul class="p-3 space-y-3 text-sm text-gray-700 dark:text-gray-200"
55
- aria-labelledby="form-submit-options-toggle">
56
- <% supported_actions_after_submit.each do |action_after_submit| %>
57
- <% next if action_after_submit == preferred_action_after_submit %>
58
- <li>
59
- <div class="flex items-center">
60
- <button type="submit"
61
- name="commit"
62
- value="<%= action_after_submit %>"
63
- class="w-full text-primary-700 hover:text-white border border-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-1.5 text-center dark:border-primary-500 dark:text-primary-500 dark:hover:text-white dark:hover:bg-primary-500 dark:focus:ring-primary-800">
64
- <%= action_after_submit_label action_after_submit %>
65
- </button>
66
- </div>
67
- </li>
68
- <% end %>
69
- </ul>
70
- </div>
71
- </div>
72
- </div>
73
- <% end %>
@@ -1,23 +0,0 @@
1
- module PlutoniumUi
2
- class FormComponent < PlutoniumUi::Base
3
- option :form
4
- option :preferred_action_after_submit, default: proc { "show" }
5
-
6
- private
7
-
8
- def supported_actions_after_submit
9
- %w[show edit new index]
10
- end
11
-
12
- def action_after_submit_label(action)
13
- {
14
- "show" => "and view details",
15
- "edit" => "and continue editing",
16
- "new" => "and add another",
17
- "index" => "and view all"
18
- }[action]
19
- end
20
- end
21
- end
22
-
23
- Plutonium::ComponentRegistry.register :form, to: PlutoniumUi::FormComponent
@@ -1,25 +0,0 @@
1
- <div <%= attributes_html %>>
2
- <%= render_component :panel, title: do |panel| %>
3
- <% panel.with_action do %>
4
- <button title="Back" class="mr-2 text-gray-600 dark:text-gray-300" style="display:none" data-frame-navigator-target="backButton">
5
- <%= render_icon "outline/chevron-left", size: :xl %>
6
- </button>
7
- <% end %>
8
-
9
- <% panel.with_action do %>
10
- <button title="Home" class="mr-2 text-gray-600 dark:text-gray-300" style="display:none" data-frame-navigator-target="homeButton">
11
- <%= render_icon "outline/home", size: :xl %>
12
- </button>
13
- <% end %>
14
-
15
- <% panel.with_action do %>
16
- <button title="Refresh" data-frame-navigator-target="refreshButton" style="display:none" class="text-gray-600 dark:text-gray-300">
17
- <%= render_icon "outline/refresh", size: :xl %>
18
- </button>
19
- <% end %>
20
-
21
- <%= render_component :dyna_frame_host, loading: :lazy, data: { "frame-navigator-target": "frame" }, src: do %>
22
- <%= render_component :skeleton__table %>
23
- <% end %>
24
- <% end %>
25
- </div>
@@ -1,16 +0,0 @@
1
- module PlutoniumUi
2
- class HasManyPanelComponent < PlutoniumUi::Base
3
- option :title
4
- option :src
5
-
6
- private
7
-
8
- def base_attributes
9
- {
10
- controller: %w[has-many-panel frame-navigator]
11
- }
12
- end
13
- end
14
- end
15
-
16
- Plutonium::ComponentRegistry.register :has_many_panel, to: PlutoniumUi::HasManyPanelComponent
@@ -1 +0,0 @@
1
- <span title="<%= @title %>"><%= content %></span>
@@ -1,7 +0,0 @@
1
- module PlutoniumUi
2
- class HeaderComponent < PlutoniumUi::Base
3
- option :title
4
- end
5
- end
6
-
7
- Plutonium::ComponentRegistry.register :header, to: PlutoniumUi::HeaderComponent
@@ -1,39 +0,0 @@
1
- <%= resource_form_for interaction, url: "", as: :interaction, method: :post, html: {class: "flex flex-col space-y-6 px-4 py-2"} do |f| %>
2
- <h2 class="mb-4 text-xl font-bold text-gray-900 dark:text-gray-200"><%= interactive_action.name.to_s.titleize %></h2>
3
-
4
- <% if f.object.errors.present? %>
5
- <div class="flex p-4 px-4 mb-4 text-sm text-red-800 rounded-lg bg-red-50 dark:bg-gray-800 dark:text-red-400" role="alert">
6
- <svg class="shrink-0 inline w-4 h-4 me-3 mt-[2px]" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 20 20">
7
- <path d="M10 .5a9.5 9.5 0 1 0 9.5 9.5A9.51 9.51 0 0 0 10 .5ZM9.5 4a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3ZM12 15H8a1 1 0 0 1 0-2h1v-3H8a1 1 0 0 1 0-2h2a1 1 0 0 1 1 1v4h1a1 1 0 0 1 0 2Z"/>
8
- </svg>
9
- <div>
10
- <span class="font-medium"><%= f.error_notification %></span>
11
- <ul class="mt-1.5 list-disc list-inside">
12
- <% f.object.errors.full_messages.each do |message| %>
13
- <li><%= f.error_notification message: message %></li>
14
- <% end %>
15
- </ul>
16
- </div>
17
- </div>
18
- <% end %>
19
-
20
- <div>
21
- <% interactive_action.inputs.values.each do |input| %>
22
- <%= render input.with(form: f, record: interaction) %>
23
- <% end %>
24
- </div>
25
-
26
- <div class="flex justify-end space-x-2">
27
- <%# TODO: move this into its own component %>
28
- <div class="flex">
29
- <button type="submit"
30
- name="commit"
31
- class="inline-flex items-center px-4 py-2 bg-primary-600 text-white
32
- rounded-s-md hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-primary-500"
33
- >
34
- Submit
35
- </button>
36
- </div>
37
- </div>
38
-
39
- <% end %>
@@ -1,8 +0,0 @@
1
- module PlutoniumUi
2
- class InteractiveActionFormComponent < PlutoniumUi::Base
3
- option :interaction
4
- option :interactive_action
5
- end
6
- end
7
-
8
- Plutonium::ComponentRegistry.register :interactive_action_form, to: PlutoniumUi::InteractiveActionFormComponent
@@ -1,24 +0,0 @@
1
- <div <%= attributes_html %>>
2
- <button
3
- type="button"
4
- data-resource-drop-down-target="trigger"
5
- class="p-2 text-gray-500 rounded-lg hover:text-gray-900 hover:bg-gray-100 dark:text-gray-200 dark:hover:text-white dark:hover:bg-gray-700 focus:ring-4 focus:ring-gray-300 dark:focus:ring-gray-600">
6
- <span class="sr-only">View <%= label %></span>
7
- <!-- Icon -->
8
- <%= render_icon "solid/grid", size: :lg %>
9
- </button>
10
- <!-- Dropdown menu -->
11
- <div
12
- class="hidden overflow-hidden z-50 my-4 max-w-sm text-base list-none bg-white divide-y divide-gray-100 shadow-lg dark:bg-gray-700 dark:divide-gray-600 rounded-xl"
13
- data-resource-drop-down-target="menu">
14
- <div
15
- class="block py-2 px-4 text-base font-medium text-center text-gray-700 bg-gray-50 dark:bg-gray-600 dark:text-gray-300">
16
- <%= label %>
17
- </div>
18
- <div class="grid grid-cols-3 gap-4 p-4">
19
- <% items.each do |item| %>
20
- <%= item %>
21
- <% end %>
22
- </div>
23
- </div>
24
- </div>
@@ -1,23 +0,0 @@
1
- module PlutoniumUi
2
- class NavGridMenuComponent < PlutoniumUi::Base
3
- renders_many :items, "PlutoniumUi::NavGridMenuItemComponent"
4
-
5
- option :label
6
-
7
- private
8
-
9
- def base_attributes
10
- # base attributes go here
11
- {
12
- classname: "nav-grid-menu",
13
- controller: "nav-grid-menu resource-drop-down"
14
- }
15
- end
16
-
17
- def render?
18
- items.any?
19
- end
20
- end
21
- end
22
-
23
- Plutonium::ComponentRegistry.register :nav_grid_menu, to: PlutoniumUi::NavGridMenuComponent
@@ -1,4 +0,0 @@
1
- <a <%= attributes_html %>>
2
- <%= render_icon icon, size: :xl, classname: "text-gray-400 group-hover:text-gray-500 dark:text-gray-200 dark:group-hover:text-gray-400" %>
3
- <div class="text-sm text-gray-900 dark:text-white"><%= name %></div>
4
- </a>
@@ -1,20 +0,0 @@
1
- module PlutoniumUi
2
- class NavGridMenuItemComponent < PlutoniumUi::Base
3
- option :name
4
- option :icon
5
- option :url, as: :href
6
-
7
- private
8
-
9
- def base_attributes
10
- # base attributes go here
11
- {
12
- classname: "nav-grid-menu-item block p-4 text-center rounded-lg hover:bg-gray-100 dark:hover:bg-gray-600 group",
13
- controller: "nav-grid-menu-item",
14
- href:
15
- }
16
- end
17
- end
18
- end
19
-
20
- Plutonium::ComponentRegistry.register :nav_grid_menu_item, to: PlutoniumUi::NavGridMenuItemComponent
@@ -1,50 +0,0 @@
1
- <div <%= attributes_html %>>
2
- <% if avatar_url.present? %>
3
- <button
4
- type="button"
5
- class="flex mx-3 text-sm bg-gray-800 rounded-full md:mr-0 focus:ring-4 focus:ring-gray-300 dark:focus:ring-gray-600"
6
- aria-expanded="false"
7
- id="user-nav-dropdown-toggle"
8
- data-resource-drop-down-target="trigger">
9
- <span class="sr-only">Open user menu</span>
10
- <img
11
- class="w-8 h-8 rounded-full"
12
- src="<%= avatar_url %>"
13
- alt="avatar" />
14
- </button>
15
- <% else %>
16
- <button
17
- type="button"
18
- class="flex mx-3 text-sm border border-gray-600 text-gray-500 hover:text-gray-900 hover:bg-gray-100 dark:text-gray-400 dark:hover:text-white dark:hover:bg-gray-700 rounded-full md:mr-0 focus:ring-4 focus:ring-gray-300 dark:focus:ring-gray-600"
19
- aria-expanded="false"
20
- id="user-nav-dropdown-toggle"
21
- data-resource-drop-down-target="trigger">
22
- <span class="sr-only">Open user menu</span>
23
- <svg class="w-8 h-8" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24">
24
- <path fill-rule="evenodd" d="M12 4a4 4 0 1 0 0 8 4 4 0 0 0 0-8Zm-2 9a4 4 0 0 0-4 4v1a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-1a4 4 0 0 0-4-4h-4Z" clip-rule="evenodd"/>
25
- </svg>
26
- </button>
27
- <% end %>
28
- <!-- Dropdown menu -->
29
- <div
30
- class="hidden z-50 my-4 w-56 text-base list-none bg-white divide-y divide-gray-100 shadow dark:bg-gray-700 dark:divide-gray-600 rounded-xl"
31
- data-resource-drop-down-target="menu">
32
- <div class="py-3 px-4">
33
- <% if name.present? %>
34
- <span
35
- class="block text-sm font-semibold text-gray-900 dark:text-white">
36
- <%= name %>
37
- </span>
38
- <% end %>
39
- <span
40
- class="block text-sm text-gray-900 truncate dark:text-white">
41
- <%= email %>
42
- </span>
43
- </div>
44
-
45
- <% sections.each do |section| %>
46
- <%= section %>
47
- <% end %>
48
-
49
- </div>
50
- </div>
@@ -1,32 +0,0 @@
1
- module PlutoniumUi
2
- class NavUserComponent < PlutoniumUi::Base
3
- renders_many :sections, "PlutoniumUi::NavUserSectionComponent"
4
-
5
- option :email
6
- option :name, optional: true
7
- option :avatar_url, optional: true
8
- option :logout_url, optional: true
9
-
10
- private
11
-
12
- def base_attributes
13
- # base attributes go here
14
- {
15
- classname: "nav-user",
16
- controller: "nav-user resource-drop-down"
17
- }
18
- end
19
-
20
- def before_render
21
- return unless logout_url.present?
22
-
23
- content # get block to execute so our link gets added at the very end
24
-
25
- with_section do |section|
26
- section.with_link url: logout_url, label: "Sign out", data: {turbo: false}, classname: "rounded-b-lg"
27
- end
28
- end
29
- end
30
- end
31
-
32
- Plutonium::ComponentRegistry.register :nav_user, to: PlutoniumUi::NavUserComponent
@@ -1,7 +0,0 @@
1
- <a <%= attributes_html %>>
2
- <span class="flex items-center">
3
- <%= leading if leading.present? %>
4
- <%= label %>
5
- </span>
6
- <%= trailing if trailing.present? %>
7
- </a>
@@ -1,23 +0,0 @@
1
- module PlutoniumUi
2
- class NavUserLinkComponent < PlutoniumUi::Base
3
- renders_one :leading
4
- renders_one :trailing
5
-
6
- option :label
7
- option :url, as: :href
8
-
9
- private
10
-
11
- def base_attributes
12
- # base attributes go here
13
- {
14
- id: "nav-user-link-#{label.parameterize}",
15
- classname: "nav-user-link flex justify-between items-center py-2 px-4 text-sm hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white",
16
- controller: "nav-user-link",
17
- href:
18
- }
19
- end
20
- end
21
- end
22
-
23
- Plutonium::ComponentRegistry.register :nav_user_link, to: PlutoniumUi::NavUserLinkComponent