motor-admin 0.1.41 → 0.1.47

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 (1293) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +122 -8
  3. data/Rakefile +2 -11
  4. data/app/controllers/motor/active_storage_attachments_controller.rb +1 -1
  5. data/app/controllers/motor/api_base_controller.rb +6 -0
  6. data/app/controllers/motor/assets_controller.rb +3 -1
  7. data/app/controllers/motor/data_controller.rb +0 -6
  8. data/app/controllers/motor/icons_controller.rb +20 -0
  9. data/app/mailers/motor/alerts_mailer.rb +2 -2
  10. data/app/views/motor/alerts_mailer/alert_email.html.erb +1 -1
  11. data/config/routes.rb +1 -2
  12. data/lib/generators/motor/templates/install.rb +10 -10
  13. data/lib/motor/active_record_utils.rb +1 -0
  14. data/lib/motor/active_record_utils/active_storage_blob_patch.rb +25 -0
  15. data/lib/motor/active_record_utils/active_storage_links_extension.rb +1 -1
  16. data/lib/motor/admin.rb +7 -1
  17. data/lib/motor/assets.rb +6 -0
  18. data/lib/motor/build_schema.rb +2 -0
  19. data/lib/motor/build_schema/active_storage_attachment_schema.rb +30 -1
  20. data/lib/motor/build_schema/adjust_devise_model_schema.rb +60 -0
  21. data/lib/motor/build_schema/find_display_column.rb +34 -30
  22. data/lib/motor/build_schema/find_icon.rb +130 -0
  23. data/lib/motor/build_schema/load_from_rails.rb +52 -26
  24. data/lib/motor/build_schema/persist_resource_configs.rb +2 -2
  25. data/lib/motor/build_schema/utils.rb +13 -0
  26. data/lib/motor/version.rb +1 -1
  27. data/ui/dist/icons/2fa.svg.gz +0 -0
  28. data/ui/dist/icons/3d-cube-sphere.svg.gz +0 -0
  29. data/ui/dist/icons/a-b.svg.gz +0 -0
  30. data/ui/dist/icons/access-point-off.svg.gz +0 -0
  31. data/ui/dist/icons/access-point.svg.gz +0 -0
  32. data/ui/dist/icons/accessible.svg.gz +0 -0
  33. data/ui/dist/icons/activity.svg.gz +0 -0
  34. data/ui/dist/icons/ad.svg.gz +0 -0
  35. data/ui/dist/icons/adjustments-alt.svg.gz +0 -0
  36. data/ui/dist/icons/adjustments-horizontal.svg.gz +0 -0
  37. data/ui/dist/icons/adjustments.svg.gz +0 -0
  38. data/ui/dist/icons/aerial-lift.svg.gz +0 -0
  39. data/ui/dist/icons/affiliate.svg.gz +0 -0
  40. data/ui/dist/icons/alarm.svg.gz +0 -0
  41. data/ui/dist/icons/alert-circle.svg.gz +0 -0
  42. data/ui/dist/icons/alert-octagon.svg.gz +0 -0
  43. data/ui/dist/icons/alert-triangle.svg.gz +0 -0
  44. data/ui/dist/icons/alien.svg.gz +0 -0
  45. data/ui/dist/icons/align-center.svg.gz +0 -0
  46. data/ui/dist/icons/align-justified.svg.gz +0 -0
  47. data/ui/dist/icons/align-left.svg.gz +0 -0
  48. data/ui/dist/icons/align-right.svg.gz +0 -0
  49. data/ui/dist/icons/ambulance.svg.gz +0 -0
  50. data/ui/dist/icons/anchor.svg.gz +0 -0
  51. data/ui/dist/icons/antenna-bars-1.svg.gz +0 -0
  52. data/ui/dist/icons/antenna-bars-2.svg.gz +0 -0
  53. data/ui/dist/icons/antenna-bars-3.svg.gz +0 -0
  54. data/ui/dist/icons/antenna-bars-4.svg.gz +0 -0
  55. data/ui/dist/icons/antenna-bars-5.svg.gz +0 -0
  56. data/ui/dist/icons/aperture.svg.gz +0 -0
  57. data/ui/dist/icons/apps.svg.gz +0 -0
  58. data/ui/dist/icons/archive.svg.gz +0 -0
  59. data/ui/dist/icons/arrow-back-up.svg.gz +0 -0
  60. data/ui/dist/icons/arrow-back.svg.gz +0 -0
  61. data/ui/dist/icons/arrow-bar-down.svg.gz +0 -0
  62. data/ui/dist/icons/arrow-bar-left.svg.gz +0 -0
  63. data/ui/dist/icons/arrow-bar-right.svg.gz +0 -0
  64. data/ui/dist/icons/arrow-bar-to-down.svg.gz +0 -0
  65. data/ui/dist/icons/arrow-bar-to-left.svg.gz +0 -0
  66. data/ui/dist/icons/arrow-bar-to-right.svg.gz +0 -0
  67. data/ui/dist/icons/arrow-bar-to-up.svg.gz +0 -0
  68. data/ui/dist/icons/arrow-bar-up.svg.gz +0 -0
  69. data/ui/dist/icons/arrow-big-down.svg.gz +0 -0
  70. data/ui/dist/icons/arrow-big-left.svg.gz +0 -0
  71. data/ui/dist/icons/arrow-big-right.svg.gz +0 -0
  72. data/ui/dist/icons/arrow-big-top.svg.gz +0 -0
  73. data/ui/dist/icons/arrow-bottom-bar.svg.gz +0 -0
  74. data/ui/dist/icons/arrow-bottom-circle.svg.gz +0 -0
  75. data/ui/dist/icons/arrow-bottom-square.svg.gz +0 -0
  76. data/ui/dist/icons/arrow-bottom-tail.svg.gz +0 -0
  77. data/ui/dist/icons/arrow-down-circle.svg.gz +0 -0
  78. data/ui/dist/icons/arrow-down-left-circle.svg.gz +0 -0
  79. data/ui/dist/icons/arrow-down-left.svg.gz +0 -0
  80. data/ui/dist/icons/arrow-down-right-circle.svg.gz +0 -0
  81. data/ui/dist/icons/arrow-down-right.svg.gz +0 -0
  82. data/ui/dist/icons/arrow-down.svg.gz +0 -0
  83. data/ui/dist/icons/arrow-forward-up.svg.gz +0 -0
  84. data/ui/dist/icons/arrow-forward.svg.gz +0 -0
  85. data/ui/dist/icons/arrow-left-bar.svg.gz +0 -0
  86. data/ui/dist/icons/arrow-left-circle.svg.gz +0 -0
  87. data/ui/dist/icons/arrow-left-square.svg.gz +0 -0
  88. data/ui/dist/icons/arrow-left-tail.svg.gz +0 -0
  89. data/ui/dist/icons/arrow-left.svg.gz +0 -0
  90. data/ui/dist/icons/arrow-loop-left.svg.gz +0 -0
  91. data/ui/dist/icons/arrow-loop-right.svg.gz +0 -0
  92. data/ui/dist/icons/arrow-narrow-down.svg.gz +0 -0
  93. data/ui/dist/icons/arrow-narrow-left.svg.gz +0 -0
  94. data/ui/dist/icons/arrow-narrow-right.svg.gz +0 -0
  95. data/ui/dist/icons/arrow-narrow-up.svg.gz +0 -0
  96. data/ui/dist/icons/arrow-ramp-left.svg.gz +0 -0
  97. data/ui/dist/icons/arrow-ramp-right.svg.gz +0 -0
  98. data/ui/dist/icons/arrow-right-bar.svg.gz +0 -0
  99. data/ui/dist/icons/arrow-right-circle.svg.gz +0 -0
  100. data/ui/dist/icons/arrow-right-square.svg.gz +0 -0
  101. data/ui/dist/icons/arrow-right-tail.svg.gz +0 -0
  102. data/ui/dist/icons/arrow-right.svg.gz +0 -0
  103. data/ui/dist/icons/arrow-top-bar.svg.gz +0 -0
  104. data/ui/dist/icons/arrow-top-circle.svg.gz +0 -0
  105. data/ui/dist/icons/arrow-top-square.svg.gz +0 -0
  106. data/ui/dist/icons/arrow-top-tail.svg.gz +0 -0
  107. data/ui/dist/icons/arrow-up-circle.svg.gz +0 -0
  108. data/ui/dist/icons/arrow-up-left-circle.svg.gz +0 -0
  109. data/ui/dist/icons/arrow-up-left.svg.gz +0 -0
  110. data/ui/dist/icons/arrow-up-right-circle.svg.gz +0 -0
  111. data/ui/dist/icons/arrow-up-right.svg.gz +0 -0
  112. data/ui/dist/icons/arrow-up.svg.gz +0 -0
  113. data/ui/dist/icons/arrow-wave-left-down.svg.gz +0 -0
  114. data/ui/dist/icons/arrow-wave-left-up.svg.gz +0 -0
  115. data/ui/dist/icons/arrow-wave-right-down.svg.gz +0 -0
  116. data/ui/dist/icons/arrow-wave-right-up.svg.gz +0 -0
  117. data/ui/dist/icons/arrows-diagonal-2.svg.gz +0 -0
  118. data/ui/dist/icons/arrows-diagonal.svg.gz +0 -0
  119. data/ui/dist/icons/arrows-double-ne-sw.svg.gz +0 -0
  120. data/ui/dist/icons/arrows-double-nw-se.svg.gz +0 -0
  121. data/ui/dist/icons/arrows-double-se-nw.svg.gz +0 -0
  122. data/ui/dist/icons/arrows-double-sw-ne.svg.gz +0 -0
  123. data/ui/dist/icons/arrows-down-up.svg.gz +0 -0
  124. data/ui/dist/icons/arrows-down.svg.gz +0 -0
  125. data/ui/dist/icons/arrows-horizontal.svg.gz +0 -0
  126. data/ui/dist/icons/arrows-join-2.svg.gz +0 -0
  127. data/ui/dist/icons/arrows-join.svg.gz +0 -0
  128. data/ui/dist/icons/arrows-left-down.svg.gz +0 -0
  129. data/ui/dist/icons/arrows-left-right.svg.gz +0 -0
  130. data/ui/dist/icons/arrows-left.svg.gz +0 -0
  131. data/ui/dist/icons/arrows-maximize.svg.gz +0 -0
  132. data/ui/dist/icons/arrows-minimize.svg.gz +0 -0
  133. data/ui/dist/icons/arrows-right-down.svg.gz +0 -0
  134. data/ui/dist/icons/arrows-right-left.svg.gz +0 -0
  135. data/ui/dist/icons/arrows-right.svg.gz +0 -0
  136. data/ui/dist/icons/arrows-sort.svg.gz +0 -0
  137. data/ui/dist/icons/arrows-split-2.svg.gz +0 -0
  138. data/ui/dist/icons/arrows-split.svg.gz +0 -0
  139. data/ui/dist/icons/arrows-up-down.svg.gz +0 -0
  140. data/ui/dist/icons/arrows-up-left.svg.gz +0 -0
  141. data/ui/dist/icons/arrows-up-right.svg.gz +0 -0
  142. data/ui/dist/icons/arrows-up.svg.gz +0 -0
  143. data/ui/dist/icons/arrows-vertical.svg.gz +0 -0
  144. data/ui/dist/icons/artboard.svg.gz +0 -0
  145. data/ui/dist/icons/aspect-ratio.svg.gz +0 -0
  146. data/ui/dist/icons/at.svg.gz +0 -0
  147. data/ui/dist/icons/atom-2.svg.gz +0 -0
  148. data/ui/dist/icons/atom.svg.gz +0 -0
  149. data/ui/dist/icons/award.svg.gz +0 -0
  150. data/ui/dist/icons/backhoe.svg.gz +0 -0
  151. data/ui/dist/icons/backspace.svg.gz +0 -0
  152. data/ui/dist/icons/ball-american-football.svg.gz +0 -0
  153. data/ui/dist/icons/ball-basketball.svg.gz +0 -0
  154. data/ui/dist/icons/ball-bowling.svg.gz +0 -0
  155. data/ui/dist/icons/ball-football-off.svg.gz +0 -0
  156. data/ui/dist/icons/ball-football.svg.gz +0 -0
  157. data/ui/dist/icons/ball-tennis.svg.gz +0 -0
  158. data/ui/dist/icons/ball-volleyball.svg.gz +0 -0
  159. data/ui/dist/icons/ban.svg.gz +0 -0
  160. data/ui/dist/icons/bandage.svg.gz +0 -0
  161. data/ui/dist/icons/barcode.svg.gz +0 -0
  162. data/ui/dist/icons/basket.svg.gz +0 -0
  163. data/ui/dist/icons/battery-1.svg.gz +0 -0
  164. data/ui/dist/icons/battery-2.svg.gz +0 -0
  165. data/ui/dist/icons/battery-3.svg.gz +0 -0
  166. data/ui/dist/icons/battery-4.svg.gz +0 -0
  167. data/ui/dist/icons/battery-automotive.svg.gz +0 -0
  168. data/ui/dist/icons/battery-charging.svg.gz +0 -0
  169. data/ui/dist/icons/battery-off.svg.gz +0 -0
  170. data/ui/dist/icons/battery.svg.gz +0 -0
  171. data/ui/dist/icons/bed.svg.gz +0 -0
  172. data/ui/dist/icons/bell-minus.svg.gz +0 -0
  173. data/ui/dist/icons/bell-off.svg.gz +0 -0
  174. data/ui/dist/icons/bell-plus.svg.gz +0 -0
  175. data/ui/dist/icons/bell-ringing-2.svg.gz +0 -0
  176. data/ui/dist/icons/bell-ringing.svg.gz +0 -0
  177. data/ui/dist/icons/bell-x.svg.gz +0 -0
  178. data/ui/dist/icons/bell.svg.gz +0 -0
  179. data/ui/dist/icons/bike.svg.gz +0 -0
  180. data/ui/dist/icons/binary.svg.gz +0 -0
  181. data/ui/dist/icons/biohazard.svg.gz +0 -0
  182. data/ui/dist/icons/blockquote.svg.gz +0 -0
  183. data/ui/dist/icons/bluetooth-connected.svg.gz +0 -0
  184. data/ui/dist/icons/bluetooth-off.svg.gz +0 -0
  185. data/ui/dist/icons/bluetooth.svg.gz +0 -0
  186. data/ui/dist/icons/bold.svg.gz +0 -0
  187. data/ui/dist/icons/bolt-off.svg.gz +0 -0
  188. data/ui/dist/icons/bolt.svg.gz +0 -0
  189. data/ui/dist/icons/bone.svg.gz +0 -0
  190. data/ui/dist/icons/book.svg.gz +0 -0
  191. data/ui/dist/icons/bookmark-off.svg.gz +0 -0
  192. data/ui/dist/icons/bookmark.svg.gz +0 -0
  193. data/ui/dist/icons/bookmarks.svg.gz +0 -0
  194. data/ui/dist/icons/border-all.svg.gz +0 -0
  195. data/ui/dist/icons/border-bottom.svg.gz +0 -0
  196. data/ui/dist/icons/border-horizontal.svg.gz +0 -0
  197. data/ui/dist/icons/border-inner.svg.gz +0 -0
  198. data/ui/dist/icons/border-left.svg.gz +0 -0
  199. data/ui/dist/icons/border-none.svg.gz +0 -0
  200. data/ui/dist/icons/border-outer.svg.gz +0 -0
  201. data/ui/dist/icons/border-radius.svg.gz +0 -0
  202. data/ui/dist/icons/border-right.svg.gz +0 -0
  203. data/ui/dist/icons/border-style.svg.gz +0 -0
  204. data/ui/dist/icons/border-top.svg.gz +0 -0
  205. data/ui/dist/icons/border-vertical.svg.gz +0 -0
  206. data/ui/dist/icons/box-margin.svg.gz +0 -0
  207. data/ui/dist/icons/box-model.svg.gz +0 -0
  208. data/ui/dist/icons/box-multiple-0.svg.gz +0 -0
  209. data/ui/dist/icons/box-multiple-1.svg.gz +0 -0
  210. data/ui/dist/icons/box-multiple-2.svg.gz +0 -0
  211. data/ui/dist/icons/box-multiple-3.svg.gz +0 -0
  212. data/ui/dist/icons/box-multiple-4.svg.gz +0 -0
  213. data/ui/dist/icons/box-multiple-5.svg.gz +0 -0
  214. data/ui/dist/icons/box-multiple-6.svg.gz +0 -0
  215. data/ui/dist/icons/box-multiple-7.svg.gz +0 -0
  216. data/ui/dist/icons/box-multiple-8.svg.gz +0 -0
  217. data/ui/dist/icons/box-multiple-9.svg.gz +0 -0
  218. data/ui/dist/icons/box-multiple.svg.gz +0 -0
  219. data/ui/dist/icons/box-padding.svg.gz +0 -0
  220. data/ui/dist/icons/box.svg.gz +0 -0
  221. data/ui/dist/icons/braces.svg.gz +0 -0
  222. data/ui/dist/icons/brackets.svg.gz +0 -0
  223. data/ui/dist/icons/brand-airbnb.svg.gz +0 -0
  224. data/ui/dist/icons/brand-android.svg.gz +0 -0
  225. data/ui/dist/icons/brand-apple-arcade.svg.gz +0 -0
  226. data/ui/dist/icons/brand-apple.svg.gz +0 -0
  227. data/ui/dist/icons/brand-appstore.svg.gz +0 -0
  228. data/ui/dist/icons/brand-asana.svg.gz +0 -0
  229. data/ui/dist/icons/brand-behance.svg.gz +0 -0
  230. data/ui/dist/icons/brand-bing.svg.gz +0 -0
  231. data/ui/dist/icons/brand-bitbucket.svg.gz +0 -0
  232. data/ui/dist/icons/brand-booking.svg.gz +0 -0
  233. data/ui/dist/icons/brand-chrome.svg.gz +0 -0
  234. data/ui/dist/icons/brand-codepen.svg.gz +0 -0
  235. data/ui/dist/icons/brand-codesandbox.svg.gz +0 -0
  236. data/ui/dist/icons/brand-css3.svg.gz +0 -0
  237. data/ui/dist/icons/brand-deviantart.svg.gz +0 -0
  238. data/ui/dist/icons/brand-discord.svg.gz +0 -0
  239. data/ui/dist/icons/brand-disqus.svg.gz +0 -0
  240. data/ui/dist/icons/brand-docker.svg.gz +0 -0
  241. data/ui/dist/icons/brand-dribbble.svg.gz +0 -0
  242. data/ui/dist/icons/brand-edge.svg.gz +0 -0
  243. data/ui/dist/icons/brand-facebook.svg.gz +0 -0
  244. data/ui/dist/icons/brand-figma.svg.gz +0 -0
  245. data/ui/dist/icons/brand-firefox.svg.gz +0 -0
  246. data/ui/dist/icons/brand-flickr.svg.gz +0 -0
  247. data/ui/dist/icons/brand-foursquare.svg.gz +0 -0
  248. data/ui/dist/icons/brand-framer.svg.gz +0 -0
  249. data/ui/dist/icons/brand-github.svg.gz +0 -0
  250. data/ui/dist/icons/brand-gitlab.svg.gz +0 -0
  251. data/ui/dist/icons/brand-google-analytics.svg.gz +0 -0
  252. data/ui/dist/icons/brand-google-drive.svg.gz +0 -0
  253. data/ui/dist/icons/brand-google-play.svg.gz +0 -0
  254. data/ui/dist/icons/brand-google.svg.gz +0 -0
  255. data/ui/dist/icons/brand-gravatar.svg.gz +0 -0
  256. data/ui/dist/icons/brand-hipchat.svg.gz +0 -0
  257. data/ui/dist/icons/brand-html5.svg.gz +0 -0
  258. data/ui/dist/icons/brand-instagram.svg.gz +0 -0
  259. data/ui/dist/icons/brand-kickstarter.svg.gz +0 -0
  260. data/ui/dist/icons/brand-kotlin.svg.gz +0 -0
  261. data/ui/dist/icons/brand-linkedin.svg.gz +0 -0
  262. data/ui/dist/icons/brand-medium.svg.gz +0 -0
  263. data/ui/dist/icons/brand-messenger.svg.gz +0 -0
  264. data/ui/dist/icons/brand-netflix.svg.gz +0 -0
  265. data/ui/dist/icons/brand-open-source.svg.gz +0 -0
  266. data/ui/dist/icons/brand-opera.svg.gz +0 -0
  267. data/ui/dist/icons/brand-pagekit.svg.gz +0 -0
  268. data/ui/dist/icons/brand-patreon.svg.gz +0 -0
  269. data/ui/dist/icons/brand-paypal.svg.gz +0 -0
  270. data/ui/dist/icons/brand-pinterest.svg.gz +0 -0
  271. data/ui/dist/icons/brand-pocket.svg.gz +0 -0
  272. data/ui/dist/icons/brand-producthunt.svg.gz +0 -0
  273. data/ui/dist/icons/brand-python.svg.gz +0 -0
  274. data/ui/dist/icons/brand-reddit.svg.gz +0 -0
  275. data/ui/dist/icons/brand-safari.svg.gz +0 -0
  276. data/ui/dist/icons/brand-sass.svg.gz +0 -0
  277. data/ui/dist/icons/brand-sentry.svg.gz +0 -0
  278. data/ui/dist/icons/brand-shazam.svg.gz +0 -0
  279. data/ui/dist/icons/brand-sketch.svg.gz +0 -0
  280. data/ui/dist/icons/brand-skype.svg.gz +0 -0
  281. data/ui/dist/icons/brand-slack.svg.gz +0 -0
  282. data/ui/dist/icons/brand-snapchat.svg.gz +0 -0
  283. data/ui/dist/icons/brand-soundcloud.svg.gz +0 -0
  284. data/ui/dist/icons/brand-spotify.svg.gz +0 -0
  285. data/ui/dist/icons/brand-steam.svg.gz +0 -0
  286. data/ui/dist/icons/brand-stripe.svg.gz +0 -0
  287. data/ui/dist/icons/brand-tabler.svg.gz +0 -0
  288. data/ui/dist/icons/brand-tailwind.svg.gz +0 -0
  289. data/ui/dist/icons/brand-telegram.svg.gz +0 -0
  290. data/ui/dist/icons/brand-tidal.svg.gz +0 -0
  291. data/ui/dist/icons/brand-tiktok.svg.gz +0 -0
  292. data/ui/dist/icons/brand-tinder.svg.gz +0 -0
  293. data/ui/dist/icons/brand-tumblr.svg.gz +0 -0
  294. data/ui/dist/icons/brand-twitch.svg.gz +0 -0
  295. data/ui/dist/icons/brand-twitter.svg.gz +0 -0
  296. data/ui/dist/icons/brand-unsplash.svg.gz +0 -0
  297. data/ui/dist/icons/brand-vimeo.svg.gz +0 -0
  298. data/ui/dist/icons/brand-vk.svg.gz +0 -0
  299. data/ui/dist/icons/brand-whatsapp.svg.gz +0 -0
  300. data/ui/dist/icons/brand-windows.svg.gz +0 -0
  301. data/ui/dist/icons/brand-yahoo.svg.gz +0 -0
  302. data/ui/dist/icons/brand-ycombinator.svg.gz +0 -0
  303. data/ui/dist/icons/brand-youtube.svg.gz +0 -0
  304. data/ui/dist/icons/briefcase.svg.gz +0 -0
  305. data/ui/dist/icons/brightness-2.svg.gz +0 -0
  306. data/ui/dist/icons/brightness-down.svg.gz +0 -0
  307. data/ui/dist/icons/brightness-half.svg.gz +0 -0
  308. data/ui/dist/icons/brightness-up.svg.gz +0 -0
  309. data/ui/dist/icons/brightness.svg.gz +0 -0
  310. data/ui/dist/icons/browser.svg.gz +0 -0
  311. data/ui/dist/icons/brush.svg.gz +0 -0
  312. data/ui/dist/icons/bucket.svg.gz +0 -0
  313. data/ui/dist/icons/bug.svg.gz +0 -0
  314. data/ui/dist/icons/building-arch.svg.gz +0 -0
  315. data/ui/dist/icons/building-bank.svg.gz +0 -0
  316. data/ui/dist/icons/building-bridge-2.svg.gz +0 -0
  317. data/ui/dist/icons/building-bridge.svg.gz +0 -0
  318. data/ui/dist/icons/building-carousel.svg.gz +0 -0
  319. data/ui/dist/icons/building-castle.svg.gz +0 -0
  320. data/ui/dist/icons/building-church.svg.gz +0 -0
  321. data/ui/dist/icons/building-community.svg.gz +0 -0
  322. data/ui/dist/icons/building-cottage.svg.gz +0 -0
  323. data/ui/dist/icons/building-factory.svg.gz +0 -0
  324. data/ui/dist/icons/building-fortress.svg.gz +0 -0
  325. data/ui/dist/icons/building-hospital.svg.gz +0 -0
  326. data/ui/dist/icons/building-lighthouse.svg.gz +0 -0
  327. data/ui/dist/icons/building-monument.svg.gz +0 -0
  328. data/ui/dist/icons/building-pavilon.svg.gz +0 -0
  329. data/ui/dist/icons/building-skyscraper.svg.gz +0 -0
  330. data/ui/dist/icons/building-store.svg.gz +0 -0
  331. data/ui/dist/icons/building-warehouse.svg.gz +0 -0
  332. data/ui/dist/icons/building.svg.gz +0 -0
  333. data/ui/dist/icons/bulb-off.svg.gz +0 -0
  334. data/ui/dist/icons/bulb.svg.gz +0 -0
  335. data/ui/dist/icons/bulldozer.svg.gz +0 -0
  336. data/ui/dist/icons/bus.svg.gz +0 -0
  337. data/ui/dist/icons/businessplan.svg.gz +0 -0
  338. data/ui/dist/icons/calculator.svg.gz +0 -0
  339. data/ui/dist/icons/calendar-event.svg.gz +0 -0
  340. data/ui/dist/icons/calendar-minus.svg.gz +0 -0
  341. data/ui/dist/icons/calendar-off.svg.gz +0 -0
  342. data/ui/dist/icons/calendar-plus.svg.gz +0 -0
  343. data/ui/dist/icons/calendar-stats.svg.gz +0 -0
  344. data/ui/dist/icons/calendar-time.svg.gz +0 -0
  345. data/ui/dist/icons/calendar.svg.gz +0 -0
  346. data/ui/dist/icons/camera-minus.svg.gz +0 -0
  347. data/ui/dist/icons/camera-off.svg.gz +0 -0
  348. data/ui/dist/icons/camera-plus.svg.gz +0 -0
  349. data/ui/dist/icons/camera-rotate.svg.gz +0 -0
  350. data/ui/dist/icons/camera-selfie.svg.gz +0 -0
  351. data/ui/dist/icons/camera.svg.gz +0 -0
  352. data/ui/dist/icons/capture.svg.gz +0 -0
  353. data/ui/dist/icons/car.svg.gz +0 -0
  354. data/ui/dist/icons/caravan.svg.gz +0 -0
  355. data/ui/dist/icons/cardboards.svg.gz +0 -0
  356. data/ui/dist/icons/caret-down.svg.gz +0 -0
  357. data/ui/dist/icons/caret-left.svg.gz +0 -0
  358. data/ui/dist/icons/caret-right.svg.gz +0 -0
  359. data/ui/dist/icons/caret-up.svg.gz +0 -0
  360. data/ui/dist/icons/cash-banknote-off.svg.gz +0 -0
  361. data/ui/dist/icons/cash-banknote.svg.gz +0 -0
  362. data/ui/dist/icons/cash.svg.gz +0 -0
  363. data/ui/dist/icons/cast.svg.gz +0 -0
  364. data/ui/dist/icons/ce.svg.gz +0 -0
  365. data/ui/dist/icons/certificate.svg.gz +0 -0
  366. data/ui/dist/icons/charging-pile.svg.gz +0 -0
  367. data/ui/dist/icons/chart-arcs-3.svg.gz +0 -0
  368. data/ui/dist/icons/chart-arcs.svg.gz +0 -0
  369. data/ui/dist/icons/chart-area-line.svg.gz +0 -0
  370. data/ui/dist/icons/chart-area.svg.gz +0 -0
  371. data/ui/dist/icons/chart-arrows-vertical.svg.gz +0 -0
  372. data/ui/dist/icons/chart-arrows.svg.gz +0 -0
  373. data/ui/dist/icons/chart-bar.svg.gz +0 -0
  374. data/ui/dist/icons/chart-bubble.svg.gz +0 -0
  375. data/ui/dist/icons/chart-candle.svg.gz +0 -0
  376. data/ui/dist/icons/chart-circles.svg.gz +0 -0
  377. data/ui/dist/icons/chart-donut-2.svg.gz +0 -0
  378. data/ui/dist/icons/chart-donut-3.svg.gz +0 -0
  379. data/ui/dist/icons/chart-donut-4.svg.gz +0 -0
  380. data/ui/dist/icons/chart-donut.svg.gz +0 -0
  381. data/ui/dist/icons/chart-dots.svg.gz +0 -0
  382. data/ui/dist/icons/chart-infographic.svg.gz +0 -0
  383. data/ui/dist/icons/chart-line.svg.gz +0 -0
  384. data/ui/dist/icons/chart-pie-2.svg.gz +0 -0
  385. data/ui/dist/icons/chart-pie-3.svg.gz +0 -0
  386. data/ui/dist/icons/chart-pie-4.svg.gz +0 -0
  387. data/ui/dist/icons/chart-pie.svg.gz +0 -0
  388. data/ui/dist/icons/chart-radar.svg.gz +0 -0
  389. data/ui/dist/icons/check.svg.gz +0 -0
  390. data/ui/dist/icons/checkbox.svg.gz +0 -0
  391. data/ui/dist/icons/checks.svg.gz +0 -0
  392. data/ui/dist/icons/chevron-down-left.svg.gz +0 -0
  393. data/ui/dist/icons/chevron-down-right.svg.gz +0 -0
  394. data/ui/dist/icons/chevron-down.svg.gz +0 -0
  395. data/ui/dist/icons/chevron-left.svg.gz +0 -0
  396. data/ui/dist/icons/chevron-right.svg.gz +0 -0
  397. data/ui/dist/icons/chevron-up-left.svg.gz +0 -0
  398. data/ui/dist/icons/chevron-up-right.svg.gz +0 -0
  399. data/ui/dist/icons/chevron-up.svg.gz +0 -0
  400. data/ui/dist/icons/chevrons-down-left.svg.gz +0 -0
  401. data/ui/dist/icons/chevrons-down-right.svg.gz +0 -0
  402. data/ui/dist/icons/chevrons-down.svg.gz +0 -0
  403. data/ui/dist/icons/chevrons-left.svg.gz +0 -0
  404. data/ui/dist/icons/chevrons-right.svg.gz +0 -0
  405. data/ui/dist/icons/chevrons-up-left.svg.gz +0 -0
  406. data/ui/dist/icons/chevrons-up-right.svg.gz +0 -0
  407. data/ui/dist/icons/chevrons-up.svg.gz +0 -0
  408. data/ui/dist/icons/christmas-tree.svg.gz +0 -0
  409. data/ui/dist/icons/circle-0.svg.gz +0 -0
  410. data/ui/dist/icons/circle-1.svg.gz +0 -0
  411. data/ui/dist/icons/circle-2.svg.gz +0 -0
  412. data/ui/dist/icons/circle-3.svg.gz +0 -0
  413. data/ui/dist/icons/circle-4.svg.gz +0 -0
  414. data/ui/dist/icons/circle-5.svg.gz +0 -0
  415. data/ui/dist/icons/circle-6.svg.gz +0 -0
  416. data/ui/dist/icons/circle-7.svg.gz +0 -0
  417. data/ui/dist/icons/circle-8.svg.gz +0 -0
  418. data/ui/dist/icons/circle-9.svg.gz +0 -0
  419. data/ui/dist/icons/circle-check.svg.gz +0 -0
  420. data/ui/dist/icons/circle-dashed.svg.gz +0 -0
  421. data/ui/dist/icons/circle-dotted.svg.gz +0 -0
  422. data/ui/dist/icons/circle-half-vertical.svg.gz +0 -0
  423. data/ui/dist/icons/circle-half.svg.gz +0 -0
  424. data/ui/dist/icons/circle-minus.svg.gz +0 -0
  425. data/ui/dist/icons/circle-off.svg.gz +0 -0
  426. data/ui/dist/icons/circle-plus.svg.gz +0 -0
  427. data/ui/dist/icons/circle-square.svg.gz +0 -0
  428. data/ui/dist/icons/circle-x.svg.gz +0 -0
  429. data/ui/dist/icons/circle.svg.gz +0 -0
  430. data/ui/dist/icons/circles.svg.gz +0 -0
  431. data/ui/dist/icons/clear-all.svg.gz +0 -0
  432. data/ui/dist/icons/clear-formatting.svg.gz +0 -0
  433. data/ui/dist/icons/click.svg.gz +0 -0
  434. data/ui/dist/icons/clipboard-check.svg.gz +0 -0
  435. data/ui/dist/icons/clipboard-list.svg.gz +0 -0
  436. data/ui/dist/icons/clipboard-x.svg.gz +0 -0
  437. data/ui/dist/icons/clipboard.svg.gz +0 -0
  438. data/ui/dist/icons/clock.svg.gz +0 -0
  439. data/ui/dist/icons/cloud-download.svg.gz +0 -0
  440. data/ui/dist/icons/cloud-fog.svg.gz +0 -0
  441. data/ui/dist/icons/cloud-off.svg.gz +0 -0
  442. data/ui/dist/icons/cloud-rain.svg.gz +0 -0
  443. data/ui/dist/icons/cloud-snow.svg.gz +0 -0
  444. data/ui/dist/icons/cloud-storm.svg.gz +0 -0
  445. data/ui/dist/icons/cloud-upload.svg.gz +0 -0
  446. data/ui/dist/icons/cloud.svg.gz +0 -0
  447. data/ui/dist/icons/code-minus.svg.gz +0 -0
  448. data/ui/dist/icons/code-plus.svg.gz +0 -0
  449. data/ui/dist/icons/code.svg.gz +0 -0
  450. data/ui/dist/icons/coin.svg.gz +0 -0
  451. data/ui/dist/icons/color-picker.svg.gz +0 -0
  452. data/ui/dist/icons/color-swatch.svg.gz +0 -0
  453. data/ui/dist/icons/column-insert-left.svg.gz +0 -0
  454. data/ui/dist/icons/column-insert-right.svg.gz +0 -0
  455. data/ui/dist/icons/columns.svg.gz +0 -0
  456. data/ui/dist/icons/comet.svg.gz +0 -0
  457. data/ui/dist/icons/command.svg.gz +0 -0
  458. data/ui/dist/icons/compass.svg.gz +0 -0
  459. data/ui/dist/icons/confetti.svg.gz +0 -0
  460. data/ui/dist/icons/container.svg.gz +0 -0
  461. data/ui/dist/icons/contrast.svg.gz +0 -0
  462. data/ui/dist/icons/copy.svg.gz +0 -0
  463. data/ui/dist/icons/copyleft.svg.gz +0 -0
  464. data/ui/dist/icons/copyright.svg.gz +0 -0
  465. data/ui/dist/icons/corner-down-left-double.svg.gz +0 -0
  466. data/ui/dist/icons/corner-down-left.svg.gz +0 -0
  467. data/ui/dist/icons/corner-down-right-double.svg.gz +0 -0
  468. data/ui/dist/icons/corner-down-right.svg.gz +0 -0
  469. data/ui/dist/icons/corner-left-down-double.svg.gz +0 -0
  470. data/ui/dist/icons/corner-left-down.svg.gz +0 -0
  471. data/ui/dist/icons/corner-left-up-double.svg.gz +0 -0
  472. data/ui/dist/icons/corner-left-up.svg.gz +0 -0
  473. data/ui/dist/icons/corner-right-down-double.svg.gz +0 -0
  474. data/ui/dist/icons/corner-right-down.svg.gz +0 -0
  475. data/ui/dist/icons/corner-right-up-double.svg.gz +0 -0
  476. data/ui/dist/icons/corner-right-up.svg.gz +0 -0
  477. data/ui/dist/icons/corner-up-left-double.svg.gz +0 -0
  478. data/ui/dist/icons/corner-up-left.svg.gz +0 -0
  479. data/ui/dist/icons/corner-up-right-double.svg.gz +0 -0
  480. data/ui/dist/icons/corner-up-right.svg.gz +0 -0
  481. data/ui/dist/icons/credit-card-off.svg.gz +0 -0
  482. data/ui/dist/icons/credit-card.svg.gz +0 -0
  483. data/ui/dist/icons/crop.svg.gz +0 -0
  484. data/ui/dist/icons/crosshair.svg.gz +0 -0
  485. data/ui/dist/icons/crown-off.svg.gz +0 -0
  486. data/ui/dist/icons/crown.svg.gz +0 -0
  487. data/ui/dist/icons/curly-loop.svg.gz +0 -0
  488. data/ui/dist/icons/currency-bahraini.svg.gz +0 -0
  489. data/ui/dist/icons/currency-bath.svg.gz +0 -0
  490. data/ui/dist/icons/currency-bitcoin.svg.gz +0 -0
  491. data/ui/dist/icons/currency-cent.svg.gz +0 -0
  492. data/ui/dist/icons/currency-dinar.svg.gz +0 -0
  493. data/ui/dist/icons/currency-dirham.svg.gz +0 -0
  494. data/ui/dist/icons/currency-dollar-australian.svg.gz +0 -0
  495. data/ui/dist/icons/currency-dollar-canadian.svg.gz +0 -0
  496. data/ui/dist/icons/currency-dollar-singapore.svg.gz +0 -0
  497. data/ui/dist/icons/currency-dollar.svg.gz +0 -0
  498. data/ui/dist/icons/currency-ethereum.svg.gz +0 -0
  499. data/ui/dist/icons/currency-euro.svg.gz +0 -0
  500. data/ui/dist/icons/currency-forint.svg.gz +0 -0
  501. data/ui/dist/icons/currency-frank.svg.gz +0 -0
  502. data/ui/dist/icons/currency-krone-czech.svg.gz +0 -0
  503. data/ui/dist/icons/currency-krone-danish.svg.gz +0 -0
  504. data/ui/dist/icons/currency-krone-swedish.svg.gz +0 -0
  505. data/ui/dist/icons/currency-leu.svg.gz +0 -0
  506. data/ui/dist/icons/currency-lira.svg.gz +0 -0
  507. data/ui/dist/icons/currency-litecoin.svg.gz +0 -0
  508. data/ui/dist/icons/currency-naira.svg.gz +0 -0
  509. data/ui/dist/icons/currency-pound.svg.gz +0 -0
  510. data/ui/dist/icons/currency-real.svg.gz +0 -0
  511. data/ui/dist/icons/currency-renminbi.svg.gz +0 -0
  512. data/ui/dist/icons/currency-ripple.svg.gz +0 -0
  513. data/ui/dist/icons/currency-riyal.svg.gz +0 -0
  514. data/ui/dist/icons/currency-rubel.svg.gz +0 -0
  515. data/ui/dist/icons/currency-rupee.svg.gz +0 -0
  516. data/ui/dist/icons/currency-shekel.svg.gz +0 -0
  517. data/ui/dist/icons/currency-taka.svg.gz +0 -0
  518. data/ui/dist/icons/currency-tugrik.svg.gz +0 -0
  519. data/ui/dist/icons/currency-won.svg.gz +0 -0
  520. data/ui/dist/icons/currency-yen.svg.gz +0 -0
  521. data/ui/dist/icons/currency-zloty.svg.gz +0 -0
  522. data/ui/dist/icons/current-location.svg.gz +0 -0
  523. data/ui/dist/icons/cursor-text.svg.gz +0 -0
  524. data/ui/dist/icons/cut.svg.gz +0 -0
  525. data/ui/dist/icons/dashboard.svg.gz +0 -0
  526. data/ui/dist/icons/database-export.svg.gz +0 -0
  527. data/ui/dist/icons/database-import.svg.gz +0 -0
  528. data/ui/dist/icons/database-off.svg.gz +0 -0
  529. data/ui/dist/icons/database.svg.gz +0 -0
  530. data/ui/dist/icons/details.svg.gz +0 -0
  531. data/ui/dist/icons/device-analytics.svg.gz +0 -0
  532. data/ui/dist/icons/device-audio-tape.svg.gz +0 -0
  533. data/ui/dist/icons/device-cctv.svg.gz +0 -0
  534. data/ui/dist/icons/device-computer-camera-off.svg.gz +0 -0
  535. data/ui/dist/icons/device-computer-camera.svg.gz +0 -0
  536. data/ui/dist/icons/device-desktop-analytics.svg.gz +0 -0
  537. data/ui/dist/icons/device-desktop-off.svg.gz +0 -0
  538. data/ui/dist/icons/device-desktop.svg.gz +0 -0
  539. data/ui/dist/icons/device-floppy.svg.gz +0 -0
  540. data/ui/dist/icons/device-gamepad.svg.gz +0 -0
  541. data/ui/dist/icons/device-laptop.svg.gz +0 -0
  542. data/ui/dist/icons/device-mobile-message.svg.gz +0 -0
  543. data/ui/dist/icons/device-mobile-rotated.svg.gz +0 -0
  544. data/ui/dist/icons/device-mobile-vibration.svg.gz +0 -0
  545. data/ui/dist/icons/device-mobile.svg.gz +0 -0
  546. data/ui/dist/icons/device-speaker.svg.gz +0 -0
  547. data/ui/dist/icons/device-tablet.svg.gz +0 -0
  548. data/ui/dist/icons/device-tv.svg.gz +0 -0
  549. data/ui/dist/icons/device-watch.svg.gz +0 -0
  550. data/ui/dist/icons/devices-2.svg.gz +0 -0
  551. data/ui/dist/icons/devices-pc.svg.gz +0 -0
  552. data/ui/dist/icons/devices.svg.gz +0 -0
  553. data/ui/dist/icons/diamond.svg.gz +0 -0
  554. data/ui/dist/icons/dice.svg.gz +0 -0
  555. data/ui/dist/icons/dimensions.svg.gz +0 -0
  556. data/ui/dist/icons/direction-horizontal.svg.gz +0 -0
  557. data/ui/dist/icons/direction.svg.gz +0 -0
  558. data/ui/dist/icons/directions.svg.gz +0 -0
  559. data/ui/dist/icons/disabled-2.svg.gz +0 -0
  560. data/ui/dist/icons/disabled.svg.gz +0 -0
  561. data/ui/dist/icons/disc.svg.gz +0 -0
  562. data/ui/dist/icons/discount-2.svg.gz +0 -0
  563. data/ui/dist/icons/discount.svg.gz +0 -0
  564. data/ui/dist/icons/divide.svg.gz +0 -0
  565. data/ui/dist/icons/dna.svg.gz +0 -0
  566. data/ui/dist/icons/dots-circle-horizontal.svg.gz +0 -0
  567. data/ui/dist/icons/dots-diagonal-2.svg.gz +0 -0
  568. data/ui/dist/icons/dots-diagonal.svg.gz +0 -0
  569. data/ui/dist/icons/dots-vertical.svg.gz +0 -0
  570. data/ui/dist/icons/dots.svg.gz +0 -0
  571. data/ui/dist/icons/download.svg.gz +0 -0
  572. data/ui/dist/icons/drag-drop-2.svg.gz +0 -0
  573. data/ui/dist/icons/drag-drop.svg.gz +0 -0
  574. data/ui/dist/icons/drone-off.svg.gz +0 -0
  575. data/ui/dist/icons/drone.svg.gz +0 -0
  576. data/ui/dist/icons/droplet-filled-2.svg.gz +0 -0
  577. data/ui/dist/icons/droplet-filled.svg.gz +0 -0
  578. data/ui/dist/icons/droplet-half-2.svg.gz +0 -0
  579. data/ui/dist/icons/droplet-half.svg.gz +0 -0
  580. data/ui/dist/icons/droplet-off.svg.gz +0 -0
  581. data/ui/dist/icons/droplet.svg.gz +0 -0
  582. data/ui/dist/icons/ear-off.svg.gz +0 -0
  583. data/ui/dist/icons/ear.svg.gz +0 -0
  584. data/ui/dist/icons/edit-circle.svg.gz +0 -0
  585. data/ui/dist/icons/edit.svg.gz +0 -0
  586. data/ui/dist/icons/egg.svg.gz +0 -0
  587. data/ui/dist/icons/emphasis.svg.gz +0 -0
  588. data/ui/dist/icons/equal-not.svg.gz +0 -0
  589. data/ui/dist/icons/equal.svg.gz +0 -0
  590. data/ui/dist/icons/eraser.svg.gz +0 -0
  591. data/ui/dist/icons/exchange.svg.gz +0 -0
  592. data/ui/dist/icons/exposure.svg.gz +0 -0
  593. data/ui/dist/icons/external-link.svg.gz +0 -0
  594. data/ui/dist/icons/eye-check.svg.gz +0 -0
  595. data/ui/dist/icons/eye-off.svg.gz +0 -0
  596. data/ui/dist/icons/eye.svg.gz +0 -0
  597. data/ui/dist/icons/eyeglass-2.svg.gz +0 -0
  598. data/ui/dist/icons/eyeglass.svg.gz +0 -0
  599. data/ui/dist/icons/face-id.svg.gz +0 -0
  600. data/ui/dist/icons/fall.svg.gz +0 -0
  601. data/ui/dist/icons/feather.svg.gz +0 -0
  602. data/ui/dist/icons/file-alert.svg.gz +0 -0
  603. data/ui/dist/icons/file-analytics.svg.gz +0 -0
  604. data/ui/dist/icons/file-certificate.svg.gz +0 -0
  605. data/ui/dist/icons/file-check.svg.gz +0 -0
  606. data/ui/dist/icons/file-code-2.svg.gz +0 -0
  607. data/ui/dist/icons/file-code.svg.gz +0 -0
  608. data/ui/dist/icons/file-diff.svg.gz +0 -0
  609. data/ui/dist/icons/file-dislike.svg.gz +0 -0
  610. data/ui/dist/icons/file-download.svg.gz +0 -0
  611. data/ui/dist/icons/file-export.svg.gz +0 -0
  612. data/ui/dist/icons/file-horizontal.svg.gz +0 -0
  613. data/ui/dist/icons/file-import.svg.gz +0 -0
  614. data/ui/dist/icons/file-info.svg.gz +0 -0
  615. data/ui/dist/icons/file-invoice.svg.gz +0 -0
  616. data/ui/dist/icons/file-like.svg.gz +0 -0
  617. data/ui/dist/icons/file-minus.svg.gz +0 -0
  618. data/ui/dist/icons/file-music.svg.gz +0 -0
  619. data/ui/dist/icons/file-off.svg.gz +0 -0
  620. data/ui/dist/icons/file-phone.svg.gz +0 -0
  621. data/ui/dist/icons/file-plus.svg.gz +0 -0
  622. data/ui/dist/icons/file-report.svg.gz +0 -0
  623. data/ui/dist/icons/file-search.svg.gz +0 -0
  624. data/ui/dist/icons/file-shredder.svg.gz +0 -0
  625. data/ui/dist/icons/file-symlink.svg.gz +0 -0
  626. data/ui/dist/icons/file-text.svg.gz +0 -0
  627. data/ui/dist/icons/file-upload.svg.gz +0 -0
  628. data/ui/dist/icons/file-x.svg.gz +0 -0
  629. data/ui/dist/icons/file-zip.svg.gz +0 -0
  630. data/ui/dist/icons/file.svg.gz +0 -0
  631. data/ui/dist/icons/files-off.svg.gz +0 -0
  632. data/ui/dist/icons/files.svg.gz +0 -0
  633. data/ui/dist/icons/filter-off.svg.gz +0 -0
  634. data/ui/dist/icons/filter.svg.gz +0 -0
  635. data/ui/dist/icons/fingerprint.svg.gz +0 -0
  636. data/ui/dist/icons/firetruck.svg.gz +0 -0
  637. data/ui/dist/icons/flag-2.svg.gz +0 -0
  638. data/ui/dist/icons/flag-3.svg.gz +0 -0
  639. data/ui/dist/icons/flag.svg.gz +0 -0
  640. data/ui/dist/icons/flame.svg.gz +0 -0
  641. data/ui/dist/icons/flare.svg.gz +0 -0
  642. data/ui/dist/icons/flask.svg.gz +0 -0
  643. data/ui/dist/icons/flip-horizontal.svg.gz +0 -0
  644. data/ui/dist/icons/flip-vertical.svg.gz +0 -0
  645. data/ui/dist/icons/float-center.svg.gz +0 -0
  646. data/ui/dist/icons/float-left.svg.gz +0 -0
  647. data/ui/dist/icons/float-none.svg.gz +0 -0
  648. data/ui/dist/icons/float-right.svg.gz +0 -0
  649. data/ui/dist/icons/focus-2.svg.gz +0 -0
  650. data/ui/dist/icons/focus.svg.gz +0 -0
  651. data/ui/dist/icons/fold-down.svg.gz +0 -0
  652. data/ui/dist/icons/fold-up.svg.gz +0 -0
  653. data/ui/dist/icons/fold.svg.gz +0 -0
  654. data/ui/dist/icons/folder-minus.svg.gz +0 -0
  655. data/ui/dist/icons/folder-off.svg.gz +0 -0
  656. data/ui/dist/icons/folder-plus.svg.gz +0 -0
  657. data/ui/dist/icons/folder-x.svg.gz +0 -0
  658. data/ui/dist/icons/folder.svg.gz +0 -0
  659. data/ui/dist/icons/folders.svg.gz +0 -0
  660. data/ui/dist/icons/forbid-2.svg.gz +0 -0
  661. data/ui/dist/icons/forbid.svg.gz +0 -0
  662. data/ui/dist/icons/forklift.svg.gz +0 -0
  663. data/ui/dist/icons/forms.svg.gz +0 -0
  664. data/ui/dist/icons/frame.svg.gz +0 -0
  665. data/ui/dist/icons/friends.svg.gz +0 -0
  666. data/ui/dist/icons/gas-station.svg.gz +0 -0
  667. data/ui/dist/icons/gauge.svg.gz +0 -0
  668. data/ui/dist/icons/geometry.svg.gz +0 -0
  669. data/ui/dist/icons/ghost.svg.gz +0 -0
  670. data/ui/dist/icons/gift.svg.gz +0 -0
  671. data/ui/dist/icons/git-branch.svg.gz +0 -0
  672. data/ui/dist/icons/git-commit.svg.gz +0 -0
  673. data/ui/dist/icons/git-compare.svg.gz +0 -0
  674. data/ui/dist/icons/git-fork.svg.gz +0 -0
  675. data/ui/dist/icons/git-merge.svg.gz +0 -0
  676. data/ui/dist/icons/git-pull-request.svg.gz +0 -0
  677. data/ui/dist/icons/glass-full.svg.gz +0 -0
  678. data/ui/dist/icons/glass-off.svg.gz +0 -0
  679. data/ui/dist/icons/glass.svg.gz +0 -0
  680. data/ui/dist/icons/globe.svg.gz +0 -0
  681. data/ui/dist/icons/golf.svg.gz +0 -0
  682. data/ui/dist/icons/gps.svg.gz +0 -0
  683. data/ui/dist/icons/grain.svg.gz +0 -0
  684. data/ui/dist/icons/grid-dots.svg.gz +0 -0
  685. data/ui/dist/icons/grip-horizontal.svg.gz +0 -0
  686. data/ui/dist/icons/grip-vertical.svg.gz +0 -0
  687. data/ui/dist/icons/growth.svg.gz +0 -0
  688. data/ui/dist/icons/h-1.svg.gz +0 -0
  689. data/ui/dist/icons/h-2.svg.gz +0 -0
  690. data/ui/dist/icons/h-3.svg.gz +0 -0
  691. data/ui/dist/icons/h-4.svg.gz +0 -0
  692. data/ui/dist/icons/h-5.svg.gz +0 -0
  693. data/ui/dist/icons/h-6.svg.gz +0 -0
  694. data/ui/dist/icons/hand-finger.svg.gz +0 -0
  695. data/ui/dist/icons/hand-little-finger.svg.gz +0 -0
  696. data/ui/dist/icons/hand-middle-finger.svg.gz +0 -0
  697. data/ui/dist/icons/hand-off.svg.gz +0 -0
  698. data/ui/dist/icons/hand-ring-finger.svg.gz +0 -0
  699. data/ui/dist/icons/hand-rock.svg.gz +0 -0
  700. data/ui/dist/icons/hand-stop.svg.gz +0 -0
  701. data/ui/dist/icons/hand-three-fingers.svg.gz +0 -0
  702. data/ui/dist/icons/hand-two-fingers.svg.gz +0 -0
  703. data/ui/dist/icons/hanger.svg.gz +0 -0
  704. data/ui/dist/icons/hash.svg.gz +0 -0
  705. data/ui/dist/icons/heading.svg.gz +0 -0
  706. data/ui/dist/icons/headphones-off.svg.gz +0 -0
  707. data/ui/dist/icons/headphones.svg.gz +0 -0
  708. data/ui/dist/icons/headset.svg.gz +0 -0
  709. data/ui/dist/icons/heart-broken.svg.gz +0 -0
  710. data/ui/dist/icons/heart.svg.gz +0 -0
  711. data/ui/dist/icons/helicopter-landing.svg.gz +0 -0
  712. data/ui/dist/icons/helicopter.svg.gz +0 -0
  713. data/ui/dist/icons/help.svg.gz +0 -0
  714. data/ui/dist/icons/hexagon-off.svg.gz +0 -0
  715. data/ui/dist/icons/hexagon.svg.gz +0 -0
  716. data/ui/dist/icons/hierarchy-2.svg.gz +0 -0
  717. data/ui/dist/icons/hierarchy.svg.gz +0 -0
  718. data/ui/dist/icons/history.svg.gz +0 -0
  719. data/ui/dist/icons/home-2.svg.gz +0 -0
  720. data/ui/dist/icons/home.svg.gz +0 -0
  721. data/ui/dist/icons/ice-cream-2.svg.gz +0 -0
  722. data/ui/dist/icons/ice-cream.svg.gz +0 -0
  723. data/ui/dist/icons/id.svg.gz +0 -0
  724. data/ui/dist/icons/inbox.svg.gz +0 -0
  725. data/ui/dist/icons/indent-decrease.svg.gz +0 -0
  726. data/ui/dist/icons/indent-increase.svg.gz +0 -0
  727. data/ui/dist/icons/infinity.svg.gz +0 -0
  728. data/ui/dist/icons/info-circle.svg.gz +0 -0
  729. data/ui/dist/icons/info-square.svg.gz +0 -0
  730. data/ui/dist/icons/italic.svg.gz +0 -0
  731. data/ui/dist/icons/jump-rope.svg.gz +0 -0
  732. data/ui/dist/icons/karate.svg.gz +0 -0
  733. data/ui/dist/icons/key.svg.gz +0 -0
  734. data/ui/dist/icons/keyboard-hide.svg.gz +0 -0
  735. data/ui/dist/icons/keyboard-off.svg.gz +0 -0
  736. data/ui/dist/icons/keyboard-show.svg.gz +0 -0
  737. data/ui/dist/icons/keyboard.svg.gz +0 -0
  738. data/ui/dist/icons/language.svg.gz +0 -0
  739. data/ui/dist/icons/layers-difference.svg.gz +0 -0
  740. data/ui/dist/icons/layers-intersect.svg.gz +0 -0
  741. data/ui/dist/icons/layers-linked.svg.gz +0 -0
  742. data/ui/dist/icons/layers-subtract.svg.gz +0 -0
  743. data/ui/dist/icons/layers-union.svg.gz +0 -0
  744. data/ui/dist/icons/layout-2.svg.gz +0 -0
  745. data/ui/dist/icons/layout-align-bottom.svg.gz +0 -0
  746. data/ui/dist/icons/layout-align-center.svg.gz +0 -0
  747. data/ui/dist/icons/layout-align-left.svg.gz +0 -0
  748. data/ui/dist/icons/layout-align-middle.svg.gz +0 -0
  749. data/ui/dist/icons/layout-align-right.svg.gz +0 -0
  750. data/ui/dist/icons/layout-align-top.svg.gz +0 -0
  751. data/ui/dist/icons/layout-bottombar.svg.gz +0 -0
  752. data/ui/dist/icons/layout-cards.svg.gz +0 -0
  753. data/ui/dist/icons/layout-columns.svg.gz +0 -0
  754. data/ui/dist/icons/layout-distribute-horizontal.svg.gz +0 -0
  755. data/ui/dist/icons/layout-distribute-vertical.svg.gz +0 -0
  756. data/ui/dist/icons/layout-grid-add.svg.gz +0 -0
  757. data/ui/dist/icons/layout-grid.svg.gz +0 -0
  758. data/ui/dist/icons/layout-kanban.svg.gz +0 -0
  759. data/ui/dist/icons/layout-list.svg.gz +0 -0
  760. data/ui/dist/icons/layout-navbar.svg.gz +0 -0
  761. data/ui/dist/icons/layout-rows.svg.gz +0 -0
  762. data/ui/dist/icons/layout-sidebar-right.svg.gz +0 -0
  763. data/ui/dist/icons/layout-sidebar.svg.gz +0 -0
  764. data/ui/dist/icons/layout.svg.gz +0 -0
  765. data/ui/dist/icons/leaf.svg.gz +0 -0
  766. data/ui/dist/icons/lego.svg.gz +0 -0
  767. data/ui/dist/icons/letter-a.svg.gz +0 -0
  768. data/ui/dist/icons/letter-b.svg.gz +0 -0
  769. data/ui/dist/icons/letter-c.svg.gz +0 -0
  770. data/ui/dist/icons/letter-case-lower.svg.gz +0 -0
  771. data/ui/dist/icons/letter-case-toggle.svg.gz +0 -0
  772. data/ui/dist/icons/letter-case-upper.svg.gz +0 -0
  773. data/ui/dist/icons/letter-case.svg.gz +0 -0
  774. data/ui/dist/icons/letter-d.svg.gz +0 -0
  775. data/ui/dist/icons/letter-e.svg.gz +0 -0
  776. data/ui/dist/icons/letter-f.svg.gz +0 -0
  777. data/ui/dist/icons/letter-g.svg.gz +0 -0
  778. data/ui/dist/icons/letter-h.svg.gz +0 -0
  779. data/ui/dist/icons/letter-i.svg.gz +0 -0
  780. data/ui/dist/icons/letter-j.svg.gz +0 -0
  781. data/ui/dist/icons/letter-k.svg.gz +0 -0
  782. data/ui/dist/icons/letter-l.svg.gz +0 -0
  783. data/ui/dist/icons/letter-m.svg.gz +0 -0
  784. data/ui/dist/icons/letter-n.svg.gz +0 -0
  785. data/ui/dist/icons/letter-o.svg.gz +0 -0
  786. data/ui/dist/icons/letter-p.svg.gz +0 -0
  787. data/ui/dist/icons/letter-q.svg.gz +0 -0
  788. data/ui/dist/icons/letter-r.svg.gz +0 -0
  789. data/ui/dist/icons/letter-s.svg.gz +0 -0
  790. data/ui/dist/icons/letter-spacing.svg.gz +0 -0
  791. data/ui/dist/icons/letter-t.svg.gz +0 -0
  792. data/ui/dist/icons/letter-u.svg.gz +0 -0
  793. data/ui/dist/icons/letter-v.svg.gz +0 -0
  794. data/ui/dist/icons/letter-w.svg.gz +0 -0
  795. data/ui/dist/icons/letter-x.svg.gz +0 -0
  796. data/ui/dist/icons/letter-y.svg.gz +0 -0
  797. data/ui/dist/icons/letter-z.svg.gz +0 -0
  798. data/ui/dist/icons/letters-case.svg.gz +0 -0
  799. data/ui/dist/icons/license.svg.gz +0 -0
  800. data/ui/dist/icons/lifebuoy.svg.gz +0 -0
  801. data/ui/dist/icons/line-dashed.svg.gz +0 -0
  802. data/ui/dist/icons/line-dotted.svg.gz +0 -0
  803. data/ui/dist/icons/line-height.svg.gz +0 -0
  804. data/ui/dist/icons/line.svg.gz +0 -0
  805. data/ui/dist/icons/link.svg.gz +0 -0
  806. data/ui/dist/icons/list-check.svg.gz +0 -0
  807. data/ui/dist/icons/list-search.svg.gz +0 -0
  808. data/ui/dist/icons/list.svg.gz +0 -0
  809. data/ui/dist/icons/live-photo.svg.gz +0 -0
  810. data/ui/dist/icons/live-view.svg.gz +0 -0
  811. data/ui/dist/icons/loader-quarter.svg.gz +0 -0
  812. data/ui/dist/icons/loader.svg.gz +0 -0
  813. data/ui/dist/icons/location.svg.gz +0 -0
  814. data/ui/dist/icons/lock-access.svg.gz +0 -0
  815. data/ui/dist/icons/lock-off.svg.gz +0 -0
  816. data/ui/dist/icons/lock-open.svg.gz +0 -0
  817. data/ui/dist/icons/lock.svg.gz +0 -0
  818. data/ui/dist/icons/login.svg.gz +0 -0
  819. data/ui/dist/icons/logout.svg.gz +0 -0
  820. data/ui/dist/icons/macro.svg.gz +0 -0
  821. data/ui/dist/icons/magnet.svg.gz +0 -0
  822. data/ui/dist/icons/mail-forward.svg.gz +0 -0
  823. data/ui/dist/icons/mail-opened.svg.gz +0 -0
  824. data/ui/dist/icons/mail.svg.gz +0 -0
  825. data/ui/dist/icons/mailbox.svg.gz +0 -0
  826. data/ui/dist/icons/man.svg.gz +0 -0
  827. data/ui/dist/icons/manual-gearbox.svg.gz +0 -0
  828. data/ui/dist/icons/map-2.svg.gz +0 -0
  829. data/ui/dist/icons/map-pin-off.svg.gz +0 -0
  830. data/ui/dist/icons/map-pin.svg.gz +0 -0
  831. data/ui/dist/icons/map-pins.svg.gz +0 -0
  832. data/ui/dist/icons/map.svg.gz +0 -0
  833. data/ui/dist/icons/markdown.svg.gz +0 -0
  834. data/ui/dist/icons/marquee-2.svg.gz +0 -0
  835. data/ui/dist/icons/marquee.svg.gz +0 -0
  836. data/ui/dist/icons/mars.svg.gz +0 -0
  837. data/ui/dist/icons/mask-off.svg.gz +0 -0
  838. data/ui/dist/icons/mask.svg.gz +0 -0
  839. data/ui/dist/icons/massage.svg.gz +0 -0
  840. data/ui/dist/icons/math-function.svg.gz +0 -0
  841. data/ui/dist/icons/math-symbols.svg.gz +0 -0
  842. data/ui/dist/icons/math.svg.gz +0 -0
  843. data/ui/dist/icons/maximize.svg.gz +0 -0
  844. data/ui/dist/icons/medal.svg.gz +0 -0
  845. data/ui/dist/icons/medical-cross.svg.gz +0 -0
  846. data/ui/dist/icons/menu-2.svg.gz +0 -0
  847. data/ui/dist/icons/menu.svg.gz +0 -0
  848. data/ui/dist/icons/message-2.svg.gz +0 -0
  849. data/ui/dist/icons/message-circle-2.svg.gz +0 -0
  850. data/ui/dist/icons/message-circle-off.svg.gz +0 -0
  851. data/ui/dist/icons/message-circle.svg.gz +0 -0
  852. data/ui/dist/icons/message-dots.svg.gz +0 -0
  853. data/ui/dist/icons/message-off.svg.gz +0 -0
  854. data/ui/dist/icons/message-plus.svg.gz +0 -0
  855. data/ui/dist/icons/message-report.svg.gz +0 -0
  856. data/ui/dist/icons/message.svg.gz +0 -0
  857. data/ui/dist/icons/messages-off.svg.gz +0 -0
  858. data/ui/dist/icons/messages.svg.gz +0 -0
  859. data/ui/dist/icons/microphone-off.svg.gz +0 -0
  860. data/ui/dist/icons/microphone.svg.gz +0 -0
  861. data/ui/dist/icons/minimize.svg.gz +0 -0
  862. data/ui/dist/icons/minus-vertical.svg.gz +0 -0
  863. data/ui/dist/icons/minus.svg.gz +0 -0
  864. data/ui/dist/icons/mist.svg.gz +0 -0
  865. data/ui/dist/icons/mood-boy.svg.gz +0 -0
  866. data/ui/dist/icons/mood-confuzed.svg.gz +0 -0
  867. data/ui/dist/icons/mood-crazy-happy.svg.gz +0 -0
  868. data/ui/dist/icons/mood-cry.svg.gz +0 -0
  869. data/ui/dist/icons/mood-empty.svg.gz +0 -0
  870. data/ui/dist/icons/mood-happy.svg.gz +0 -0
  871. data/ui/dist/icons/mood-kid.svg.gz +0 -0
  872. data/ui/dist/icons/mood-neutral.svg.gz +0 -0
  873. data/ui/dist/icons/mood-sad.svg.gz +0 -0
  874. data/ui/dist/icons/mood-smile.svg.gz +0 -0
  875. data/ui/dist/icons/mood-suprised.svg.gz +0 -0
  876. data/ui/dist/icons/mood-tongue.svg.gz +0 -0
  877. data/ui/dist/icons/moon-2.svg.gz +0 -0
  878. data/ui/dist/icons/moon-stars.svg.gz +0 -0
  879. data/ui/dist/icons/moon.svg.gz +0 -0
  880. data/ui/dist/icons/moped.svg.gz +0 -0
  881. data/ui/dist/icons/motorbike.svg.gz +0 -0
  882. data/ui/dist/icons/mouse.svg.gz +0 -0
  883. data/ui/dist/icons/movie.svg.gz +0 -0
  884. data/ui/dist/icons/mug.svg.gz +0 -0
  885. data/ui/dist/icons/music.svg.gz +0 -0
  886. data/ui/dist/icons/new-section.svg.gz +0 -0
  887. data/ui/dist/icons/news.svg.gz +0 -0
  888. data/ui/dist/icons/nfc.svg.gz +0 -0
  889. data/ui/dist/icons/note.svg.gz +0 -0
  890. data/ui/dist/icons/notebook.svg.gz +0 -0
  891. data/ui/dist/icons/notes.svg.gz +0 -0
  892. data/ui/dist/icons/notification.svg.gz +0 -0
  893. data/ui/dist/icons/number-0.svg.gz +0 -0
  894. data/ui/dist/icons/number-1.svg.gz +0 -0
  895. data/ui/dist/icons/number-2.svg.gz +0 -0
  896. data/ui/dist/icons/number-3.svg.gz +0 -0
  897. data/ui/dist/icons/number-4.svg.gz +0 -0
  898. data/ui/dist/icons/number-5.svg.gz +0 -0
  899. data/ui/dist/icons/number-6.svg.gz +0 -0
  900. data/ui/dist/icons/number-7.svg.gz +0 -0
  901. data/ui/dist/icons/number-8.svg.gz +0 -0
  902. data/ui/dist/icons/number-9.svg.gz +0 -0
  903. data/ui/dist/icons/octagon-off.svg.gz +0 -0
  904. data/ui/dist/icons/octagon.svg.gz +0 -0
  905. data/ui/dist/icons/old.svg.gz +0 -0
  906. data/ui/dist/icons/olympics.svg.gz +0 -0
  907. data/ui/dist/icons/omega.svg.gz +0 -0
  908. data/ui/dist/icons/outlet.svg.gz +0 -0
  909. data/ui/dist/icons/overline.svg.gz +0 -0
  910. data/ui/dist/icons/package.svg.gz +0 -0
  911. data/ui/dist/icons/pacman.svg.gz +0 -0
  912. data/ui/dist/icons/page-break.svg.gz +0 -0
  913. data/ui/dist/icons/paint.svg.gz +0 -0
  914. data/ui/dist/icons/palette.svg.gz +0 -0
  915. data/ui/dist/icons/panorama-horizontal.svg.gz +0 -0
  916. data/ui/dist/icons/panorama-vertical.svg.gz +0 -0
  917. data/ui/dist/icons/paperclip.svg.gz +0 -0
  918. data/ui/dist/icons/parachute.svg.gz +0 -0
  919. data/ui/dist/icons/parentheses.svg.gz +0 -0
  920. data/ui/dist/icons/parking.svg.gz +0 -0
  921. data/ui/dist/icons/peace.svg.gz +0 -0
  922. data/ui/dist/icons/pencil.svg.gz +0 -0
  923. data/ui/dist/icons/pennant.svg.gz +0 -0
  924. data/ui/dist/icons/percentage.svg.gz +0 -0
  925. data/ui/dist/icons/perspective.svg.gz +0 -0
  926. data/ui/dist/icons/phone-call.svg.gz +0 -0
  927. data/ui/dist/icons/phone-calling.svg.gz +0 -0
  928. data/ui/dist/icons/phone-check.svg.gz +0 -0
  929. data/ui/dist/icons/phone-incoming.svg.gz +0 -0
  930. data/ui/dist/icons/phone-off.svg.gz +0 -0
  931. data/ui/dist/icons/phone-outgoing.svg.gz +0 -0
  932. data/ui/dist/icons/phone-pause.svg.gz +0 -0
  933. data/ui/dist/icons/phone-plus.svg.gz +0 -0
  934. data/ui/dist/icons/phone-x.svg.gz +0 -0
  935. data/ui/dist/icons/phone.svg.gz +0 -0
  936. data/ui/dist/icons/photo-off.svg.gz +0 -0
  937. data/ui/dist/icons/photo.svg.gz +0 -0
  938. data/ui/dist/icons/physotherapist.svg.gz +0 -0
  939. data/ui/dist/icons/picture-in-picture-off.svg.gz +0 -0
  940. data/ui/dist/icons/picture-in-picture-on.svg.gz +0 -0
  941. data/ui/dist/icons/picture-in-picture.svg.gz +0 -0
  942. data/ui/dist/icons/pill.svg.gz +0 -0
  943. data/ui/dist/icons/pin.svg.gz +0 -0
  944. data/ui/dist/icons/pinned-off.svg.gz +0 -0
  945. data/ui/dist/icons/pinned.svg.gz +0 -0
  946. data/ui/dist/icons/pizza.svg.gz +0 -0
  947. data/ui/dist/icons/plane-arrival.svg.gz +0 -0
  948. data/ui/dist/icons/plane-departure.svg.gz +0 -0
  949. data/ui/dist/icons/plane.svg.gz +0 -0
  950. data/ui/dist/icons/planet.svg.gz +0 -0
  951. data/ui/dist/icons/plant-2.svg.gz +0 -0
  952. data/ui/dist/icons/plant.svg.gz +0 -0
  953. data/ui/dist/icons/play-card.svg.gz +0 -0
  954. data/ui/dist/icons/player-pause.svg.gz +0 -0
  955. data/ui/dist/icons/player-play.svg.gz +0 -0
  956. data/ui/dist/icons/player-record.svg.gz +0 -0
  957. data/ui/dist/icons/player-skip-back.svg.gz +0 -0
  958. data/ui/dist/icons/player-skip-forward.svg.gz +0 -0
  959. data/ui/dist/icons/player-stop.svg.gz +0 -0
  960. data/ui/dist/icons/player-track-next.svg.gz +0 -0
  961. data/ui/dist/icons/player-track-prev.svg.gz +0 -0
  962. data/ui/dist/icons/playlist.svg.gz +0 -0
  963. data/ui/dist/icons/plug.svg.gz +0 -0
  964. data/ui/dist/icons/plus.svg.gz +0 -0
  965. data/ui/dist/icons/point.svg.gz +0 -0
  966. data/ui/dist/icons/pokeball.svg.gz +0 -0
  967. data/ui/dist/icons/polaroid.svg.gz +0 -0
  968. data/ui/dist/icons/pool.svg.gz +0 -0
  969. data/ui/dist/icons/power.svg.gz +0 -0
  970. data/ui/dist/icons/pray.svg.gz +0 -0
  971. data/ui/dist/icons/presentation-analytics.svg.gz +0 -0
  972. data/ui/dist/icons/presentation.svg.gz +0 -0
  973. data/ui/dist/icons/printer.svg.gz +0 -0
  974. data/ui/dist/icons/prompt.svg.gz +0 -0
  975. data/ui/dist/icons/propeller.svg.gz +0 -0
  976. data/ui/dist/icons/puzzle.svg.gz +0 -0
  977. data/ui/dist/icons/pyramid.svg.gz +0 -0
  978. data/ui/dist/icons/qrcode.svg.gz +0 -0
  979. data/ui/dist/icons/question-mark.svg.gz +0 -0
  980. data/ui/dist/icons/radioactive.svg.gz +0 -0
  981. data/ui/dist/icons/radius-bottom-left.svg.gz +0 -0
  982. data/ui/dist/icons/radius-bottom-right.svg.gz +0 -0
  983. data/ui/dist/icons/radius-top-left.svg.gz +0 -0
  984. data/ui/dist/icons/radius-top-right.svg.gz +0 -0
  985. data/ui/dist/icons/rainbow.svg.gz +0 -0
  986. data/ui/dist/icons/receipt-2.svg.gz +0 -0
  987. data/ui/dist/icons/receipt-off.svg.gz +0 -0
  988. data/ui/dist/icons/receipt-refund.svg.gz +0 -0
  989. data/ui/dist/icons/receipt-tax.svg.gz +0 -0
  990. data/ui/dist/icons/receipt.svg.gz +0 -0
  991. data/ui/dist/icons/recharging.svg.gz +0 -0
  992. data/ui/dist/icons/record-mail.svg.gz +0 -0
  993. data/ui/dist/icons/rectangle-vertical.svg.gz +0 -0
  994. data/ui/dist/icons/rectangle.svg.gz +0 -0
  995. data/ui/dist/icons/recycle.svg.gz +0 -0
  996. data/ui/dist/icons/refresh-alert.svg.gz +0 -0
  997. data/ui/dist/icons/refresh.svg.gz +0 -0
  998. data/ui/dist/icons/registered.svg.gz +0 -0
  999. data/ui/dist/icons/relation-many-to-many.svg.gz +0 -0
  1000. data/ui/dist/icons/relation-one-to-many.svg.gz +0 -0
  1001. data/ui/dist/icons/relation-one-to-one.svg.gz +0 -0
  1002. data/ui/dist/icons/repeat-once.svg.gz +0 -0
  1003. data/ui/dist/icons/repeat.svg.gz +0 -0
  1004. data/ui/dist/icons/replace.svg.gz +0 -0
  1005. data/ui/dist/icons/report-analytics.svg.gz +0 -0
  1006. data/ui/dist/icons/report-medical.svg.gz +0 -0
  1007. data/ui/dist/icons/report-money.svg.gz +0 -0
  1008. data/ui/dist/icons/report.svg.gz +0 -0
  1009. data/ui/dist/icons/resize.svg.gz +0 -0
  1010. data/ui/dist/icons/ripple.svg.gz +0 -0
  1011. data/ui/dist/icons/road-sign.svg.gz +0 -0
  1012. data/ui/dist/icons/rocket.svg.gz +0 -0
  1013. data/ui/dist/icons/rotate-2.svg.gz +0 -0
  1014. data/ui/dist/icons/rotate-clockwise-2.svg.gz +0 -0
  1015. data/ui/dist/icons/rotate-clockwise.svg.gz +0 -0
  1016. data/ui/dist/icons/rotate-rectangle.svg.gz +0 -0
  1017. data/ui/dist/icons/rotate.svg.gz +0 -0
  1018. data/ui/dist/icons/route.svg.gz +0 -0
  1019. data/ui/dist/icons/router.svg.gz +0 -0
  1020. data/ui/dist/icons/row-insert-bottom.svg.gz +0 -0
  1021. data/ui/dist/icons/row-insert-top.svg.gz +0 -0
  1022. data/ui/dist/icons/rss.svg.gz +0 -0
  1023. data/ui/dist/icons/ruler-2.svg.gz +0 -0
  1024. data/ui/dist/icons/ruler.svg.gz +0 -0
  1025. data/ui/dist/icons/run.svg.gz +0 -0
  1026. data/ui/dist/icons/sailboat.svg.gz +0 -0
  1027. data/ui/dist/icons/satellite.svg.gz +0 -0
  1028. data/ui/dist/icons/scale.svg.gz +0 -0
  1029. data/ui/dist/icons/scan.svg.gz +0 -0
  1030. data/ui/dist/icons/school.svg.gz +0 -0
  1031. data/ui/dist/icons/scissors.svg.gz +0 -0
  1032. data/ui/dist/icons/scooter-electric.svg.gz +0 -0
  1033. data/ui/dist/icons/scooter.svg.gz +0 -0
  1034. data/ui/dist/icons/screen-share-off.svg.gz +0 -0
  1035. data/ui/dist/icons/screen-share.svg.gz +0 -0
  1036. data/ui/dist/icons/scuba-mask.svg.gz +0 -0
  1037. data/ui/dist/icons/search.svg.gz +0 -0
  1038. data/ui/dist/icons/section.svg.gz +0 -0
  1039. data/ui/dist/icons/seeding.svg.gz +0 -0
  1040. data/ui/dist/icons/select.svg.gz +0 -0
  1041. data/ui/dist/icons/selector.svg.gz +0 -0
  1042. data/ui/dist/icons/send.svg.gz +0 -0
  1043. data/ui/dist/icons/separator-horizontal.svg.gz +0 -0
  1044. data/ui/dist/icons/separator-vertical.svg.gz +0 -0
  1045. data/ui/dist/icons/separator.svg.gz +0 -0
  1046. data/ui/dist/icons/server.svg.gz +0 -0
  1047. data/ui/dist/icons/servicemark.svg.gz +0 -0
  1048. data/ui/dist/icons/settings-automation.svg.gz +0 -0
  1049. data/ui/dist/icons/settings.svg.gz +0 -0
  1050. data/ui/dist/icons/shadow-off.svg.gz +0 -0
  1051. data/ui/dist/icons/shadow.svg.gz +0 -0
  1052. data/ui/dist/icons/shape-2.svg.gz +0 -0
  1053. data/ui/dist/icons/shape-3.svg.gz +0 -0
  1054. data/ui/dist/icons/shape.svg.gz +0 -0
  1055. data/ui/dist/icons/share.svg.gz +0 -0
  1056. data/ui/dist/icons/shield-check.svg.gz +0 -0
  1057. data/ui/dist/icons/shield-lock.svg.gz +0 -0
  1058. data/ui/dist/icons/shield-off.svg.gz +0 -0
  1059. data/ui/dist/icons/shield-x.svg.gz +0 -0
  1060. data/ui/dist/icons/shield.svg.gz +0 -0
  1061. data/ui/dist/icons/ship.svg.gz +0 -0
  1062. data/ui/dist/icons/shirt.svg.gz +0 -0
  1063. data/ui/dist/icons/shopping-cart-discount.svg.gz +0 -0
  1064. data/ui/dist/icons/shopping-cart-off.svg.gz +0 -0
  1065. data/ui/dist/icons/shopping-cart-plus.svg.gz +0 -0
  1066. data/ui/dist/icons/shopping-cart-x.svg.gz +0 -0
  1067. data/ui/dist/icons/shopping-cart.svg.gz +0 -0
  1068. data/ui/dist/icons/shredder.svg.gz +0 -0
  1069. data/ui/dist/icons/signature.svg.gz +0 -0
  1070. data/ui/dist/icons/sitemap.svg.gz +0 -0
  1071. data/ui/dist/icons/skateboard.svg.gz +0 -0
  1072. data/ui/dist/icons/slice.svg.gz +0 -0
  1073. data/ui/dist/icons/slideshow.svg.gz +0 -0
  1074. data/ui/dist/icons/smart-home.svg.gz +0 -0
  1075. data/ui/dist/icons/smoking-no.svg.gz +0 -0
  1076. data/ui/dist/icons/smoking.svg.gz +0 -0
  1077. data/ui/dist/icons/snowflake.svg.gz +0 -0
  1078. data/ui/dist/icons/soccer-field.svg.gz +0 -0
  1079. data/ui/dist/icons/social.svg.gz +0 -0
  1080. data/ui/dist/icons/sock.svg.gz +0 -0
  1081. data/ui/dist/icons/sort-ascending-2.svg.gz +0 -0
  1082. data/ui/dist/icons/sort-ascending.svg.gz +0 -0
  1083. data/ui/dist/icons/sort-descending-2.svg.gz +0 -0
  1084. data/ui/dist/icons/sort-descending.svg.gz +0 -0
  1085. data/ui/dist/icons/space.svg.gz +0 -0
  1086. data/ui/dist/icons/speakerphone.svg.gz +0 -0
  1087. data/ui/dist/icons/speedboat.svg.gz +0 -0
  1088. data/ui/dist/icons/sport-billard.svg.gz +0 -0
  1089. data/ui/dist/icons/square-0.svg.gz +0 -0
  1090. data/ui/dist/icons/square-1.svg.gz +0 -0
  1091. data/ui/dist/icons/square-2.svg.gz +0 -0
  1092. data/ui/dist/icons/square-3.svg.gz +0 -0
  1093. data/ui/dist/icons/square-4.svg.gz +0 -0
  1094. data/ui/dist/icons/square-5.svg.gz +0 -0
  1095. data/ui/dist/icons/square-6.svg.gz +0 -0
  1096. data/ui/dist/icons/square-7.svg.gz +0 -0
  1097. data/ui/dist/icons/square-8.svg.gz +0 -0
  1098. data/ui/dist/icons/square-9.svg.gz +0 -0
  1099. data/ui/dist/icons/square-check.svg.gz +0 -0
  1100. data/ui/dist/icons/square-dot.svg.gz +0 -0
  1101. data/ui/dist/icons/square-forbid-2.svg.gz +0 -0
  1102. data/ui/dist/icons/square-forbid.svg.gz +0 -0
  1103. data/ui/dist/icons/square-minus.svg.gz +0 -0
  1104. data/ui/dist/icons/square-off.svg.gz +0 -0
  1105. data/ui/dist/icons/square-plus.svg.gz +0 -0
  1106. data/ui/dist/icons/square-root-2.svg.gz +0 -0
  1107. data/ui/dist/icons/square-root.svg.gz +0 -0
  1108. data/ui/dist/icons/square-rotated-off.svg.gz +0 -0
  1109. data/ui/dist/icons/square-rotated.svg.gz +0 -0
  1110. data/ui/dist/icons/square-toggle-horizontal.svg.gz +0 -0
  1111. data/ui/dist/icons/square-toggle.svg.gz +0 -0
  1112. data/ui/dist/icons/square-x.svg.gz +0 -0
  1113. data/ui/dist/icons/square.svg.gz +0 -0
  1114. data/ui/dist/icons/squares-diagonal.svg.gz +0 -0
  1115. data/ui/dist/icons/squares-filled.svg.gz +0 -0
  1116. data/ui/dist/icons/stack-2.svg.gz +0 -0
  1117. data/ui/dist/icons/stack.svg.gz +0 -0
  1118. data/ui/dist/icons/stairs-down.svg.gz +0 -0
  1119. data/ui/dist/icons/stairs-up.svg.gz +0 -0
  1120. data/ui/dist/icons/stairs.svg.gz +0 -0
  1121. data/ui/dist/icons/star-half.svg.gz +0 -0
  1122. data/ui/dist/icons/star-off.svg.gz +0 -0
  1123. data/ui/dist/icons/star.svg.gz +0 -0
  1124. data/ui/dist/icons/stars.svg.gz +0 -0
  1125. data/ui/dist/icons/steering-wheel.svg.gz +0 -0
  1126. data/ui/dist/icons/step-into.svg.gz +0 -0
  1127. data/ui/dist/icons/step-out.svg.gz +0 -0
  1128. data/ui/dist/icons/stethoscope.svg.gz +0 -0
  1129. data/ui/dist/icons/sticker.svg.gz +0 -0
  1130. data/ui/dist/icons/strikethrough.svg.gz +0 -0
  1131. data/ui/dist/icons/submarine.svg.gz +0 -0
  1132. data/ui/dist/icons/subscript.svg.gz +0 -0
  1133. data/ui/dist/icons/subtask.svg.gz +0 -0
  1134. data/ui/dist/icons/sum.svg.gz +0 -0
  1135. data/ui/dist/icons/sun-off.svg.gz +0 -0
  1136. data/ui/dist/icons/sun.svg.gz +0 -0
  1137. data/ui/dist/icons/sunset.svg.gz +0 -0
  1138. data/ui/dist/icons/sunshine.svg.gz +0 -0
  1139. data/ui/dist/icons/superscript.svg.gz +0 -0
  1140. data/ui/dist/icons/swimming.svg.gz +0 -0
  1141. data/ui/dist/icons/switch-2.svg.gz +0 -0
  1142. data/ui/dist/icons/switch-3.svg.gz +0 -0
  1143. data/ui/dist/icons/switch-horizontal.svg.gz +0 -0
  1144. data/ui/dist/icons/switch-vertical.svg.gz +0 -0
  1145. data/ui/dist/icons/switch.svg.gz +0 -0
  1146. data/ui/dist/icons/table-export.svg.gz +0 -0
  1147. data/ui/dist/icons/table-import.svg.gz +0 -0
  1148. data/ui/dist/icons/table-off.svg.gz +0 -0
  1149. data/ui/dist/icons/table.svg.gz +0 -0
  1150. data/ui/dist/icons/tag.svg.gz +0 -0
  1151. data/ui/dist/icons/tallymark-1.svg.gz +0 -0
  1152. data/ui/dist/icons/tallymark-2.svg.gz +0 -0
  1153. data/ui/dist/icons/tallymark-3.svg.gz +0 -0
  1154. data/ui/dist/icons/tallymark-4.svg.gz +0 -0
  1155. data/ui/dist/icons/tallymarks.svg.gz +0 -0
  1156. data/ui/dist/icons/tank.svg.gz +0 -0
  1157. data/ui/dist/icons/target.svg.gz +0 -0
  1158. data/ui/dist/icons/temperature-celsius.svg.gz +0 -0
  1159. data/ui/dist/icons/temperature-fahrenheit.svg.gz +0 -0
  1160. data/ui/dist/icons/temperature-minus.svg.gz +0 -0
  1161. data/ui/dist/icons/temperature-plus.svg.gz +0 -0
  1162. data/ui/dist/icons/temperature.svg.gz +0 -0
  1163. data/ui/dist/icons/template.svg.gz +0 -0
  1164. data/ui/dist/icons/tent.svg.gz +0 -0
  1165. data/ui/dist/icons/terminal-2.svg.gz +0 -0
  1166. data/ui/dist/icons/terminal.svg.gz +0 -0
  1167. data/ui/dist/icons/test-pipe.svg.gz +0 -0
  1168. data/ui/dist/icons/text-direction-ltr.svg.gz +0 -0
  1169. data/ui/dist/icons/text-direction-rtl.svg.gz +0 -0
  1170. data/ui/dist/icons/text-wrap-disabled.svg.gz +0 -0
  1171. data/ui/dist/icons/text-wrap.svg.gz +0 -0
  1172. data/ui/dist/icons/thumb-down.svg.gz +0 -0
  1173. data/ui/dist/icons/thumb-up.svg.gz +0 -0
  1174. data/ui/dist/icons/ticket.svg.gz +0 -0
  1175. data/ui/dist/icons/tilt-shift.svg.gz +0 -0
  1176. data/ui/dist/icons/tir.svg.gz +0 -0
  1177. data/ui/dist/icons/toggle-left.svg.gz +0 -0
  1178. data/ui/dist/icons/toggle-right.svg.gz +0 -0
  1179. data/ui/dist/icons/tool.svg.gz +0 -0
  1180. data/ui/dist/icons/tools-kitchen-2.svg.gz +0 -0
  1181. data/ui/dist/icons/tools-kitchen.svg.gz +0 -0
  1182. data/ui/dist/icons/tools.svg.gz +0 -0
  1183. data/ui/dist/icons/tornado.svg.gz +0 -0
  1184. data/ui/dist/icons/tournament.svg.gz +0 -0
  1185. data/ui/dist/icons/track.svg.gz +0 -0
  1186. data/ui/dist/icons/tractor.svg.gz +0 -0
  1187. data/ui/dist/icons/trademark.svg.gz +0 -0
  1188. data/ui/dist/icons/traffic-cone.svg.gz +0 -0
  1189. data/ui/dist/icons/traffic-lights.svg.gz +0 -0
  1190. data/ui/dist/icons/train.svg.gz +0 -0
  1191. data/ui/dist/icons/trash-off.svg.gz +0 -0
  1192. data/ui/dist/icons/trash.svg.gz +0 -0
  1193. data/ui/dist/icons/tree.svg.gz +0 -0
  1194. data/ui/dist/icons/trees.svg.gz +0 -0
  1195. data/ui/dist/icons/trending-down-2.svg.gz +0 -0
  1196. data/ui/dist/icons/trending-down-3.svg.gz +0 -0
  1197. data/ui/dist/icons/trending-down.svg.gz +0 -0
  1198. data/ui/dist/icons/trending-up-2.svg.gz +0 -0
  1199. data/ui/dist/icons/trending-up-3.svg.gz +0 -0
  1200. data/ui/dist/icons/trending-up.svg.gz +0 -0
  1201. data/ui/dist/icons/triangle-off.svg.gz +0 -0
  1202. data/ui/dist/icons/triangle-square-circle.svg.gz +0 -0
  1203. data/ui/dist/icons/triangle.svg.gz +0 -0
  1204. data/ui/dist/icons/trident.svg.gz +0 -0
  1205. data/ui/dist/icons/trophy.svg.gz +0 -0
  1206. data/ui/dist/icons/truck-delivery.svg.gz +0 -0
  1207. data/ui/dist/icons/truck-off.svg.gz +0 -0
  1208. data/ui/dist/icons/truck-return.svg.gz +0 -0
  1209. data/ui/dist/icons/truck.svg.gz +0 -0
  1210. data/ui/dist/icons/typography.svg.gz +0 -0
  1211. data/ui/dist/icons/umbrella.svg.gz +0 -0
  1212. data/ui/dist/icons/underline.svg.gz +0 -0
  1213. data/ui/dist/icons/unlink.svg.gz +0 -0
  1214. data/ui/dist/icons/upload.svg.gz +0 -0
  1215. data/ui/dist/icons/urgent.svg.gz +0 -0
  1216. data/ui/dist/icons/user-check.svg.gz +0 -0
  1217. data/ui/dist/icons/user-exclamation.svg.gz +0 -0
  1218. data/ui/dist/icons/user-minus.svg.gz +0 -0
  1219. data/ui/dist/icons/user-off.svg.gz +0 -0
  1220. data/ui/dist/icons/user-plus.svg.gz +0 -0
  1221. data/ui/dist/icons/user-x.svg.gz +0 -0
  1222. data/ui/dist/icons/user.svg.gz +0 -0
  1223. data/ui/dist/icons/users.svg.gz +0 -0
  1224. data/ui/dist/icons/vaccine.svg.gz +0 -0
  1225. data/ui/dist/icons/variable.svg.gz +0 -0
  1226. data/ui/dist/icons/vector-beizer-2.svg.gz +0 -0
  1227. data/ui/dist/icons/vector-beizer.svg.gz +0 -0
  1228. data/ui/dist/icons/vector-triangle.svg.gz +0 -0
  1229. data/ui/dist/icons/vector.svg.gz +0 -0
  1230. data/ui/dist/icons/venus.svg.gz +0 -0
  1231. data/ui/dist/icons/versions.svg.gz +0 -0
  1232. data/ui/dist/icons/video-minus.svg.gz +0 -0
  1233. data/ui/dist/icons/video-off.svg.gz +0 -0
  1234. data/ui/dist/icons/video-plus.svg.gz +0 -0
  1235. data/ui/dist/icons/video.svg.gz +0 -0
  1236. data/ui/dist/icons/view-360.svg.gz +0 -0
  1237. data/ui/dist/icons/viewfinder.svg.gz +0 -0
  1238. data/ui/dist/icons/viewport-narrow.svg.gz +0 -0
  1239. data/ui/dist/icons/viewport-wide.svg.gz +0 -0
  1240. data/ui/dist/icons/virus-off.svg.gz +0 -0
  1241. data/ui/dist/icons/virus-search.svg.gz +0 -0
  1242. data/ui/dist/icons/virus.svg.gz +0 -0
  1243. data/ui/dist/icons/volume-2.svg.gz +0 -0
  1244. data/ui/dist/icons/volume-3.svg.gz +0 -0
  1245. data/ui/dist/icons/volume.svg.gz +0 -0
  1246. data/ui/dist/icons/walk.svg.gz +0 -0
  1247. data/ui/dist/icons/wallet.svg.gz +0 -0
  1248. data/ui/dist/icons/wand.svg.gz +0 -0
  1249. data/ui/dist/icons/wave-saw-tool.svg.gz +0 -0
  1250. data/ui/dist/icons/wave-sine.svg.gz +0 -0
  1251. data/ui/dist/icons/wave-square.svg.gz +0 -0
  1252. data/ui/dist/icons/wifi-0.svg.gz +0 -0
  1253. data/ui/dist/icons/wifi-1.svg.gz +0 -0
  1254. data/ui/dist/icons/wifi-2.svg.gz +0 -0
  1255. data/ui/dist/icons/wifi-off.svg.gz +0 -0
  1256. data/ui/dist/icons/wifi.svg.gz +0 -0
  1257. data/ui/dist/icons/wind.svg.gz +0 -0
  1258. data/ui/dist/icons/windmill.svg.gz +0 -0
  1259. data/ui/dist/icons/window.svg.gz +0 -0
  1260. data/ui/dist/icons/wiper-wash.svg.gz +0 -0
  1261. data/ui/dist/icons/wiper.svg.gz +0 -0
  1262. data/ui/dist/icons/woman.svg.gz +0 -0
  1263. data/ui/dist/icons/world-latitude.svg.gz +0 -0
  1264. data/ui/dist/icons/world-longitude.svg.gz +0 -0
  1265. data/ui/dist/icons/world.svg.gz +0 -0
  1266. data/ui/dist/icons/wrecking-ball.svg.gz +0 -0
  1267. data/ui/dist/icons/writing-sign.svg.gz +0 -0
  1268. data/ui/dist/icons/writing.svg.gz +0 -0
  1269. data/ui/dist/icons/x.svg.gz +0 -0
  1270. data/ui/dist/icons/yin-yang.svg.gz +0 -0
  1271. data/ui/dist/icons/zodiac-aquarius.svg.gz +0 -0
  1272. data/ui/dist/icons/zodiac-aries.svg.gz +0 -0
  1273. data/ui/dist/icons/zodiac-cancer.svg.gz +0 -0
  1274. data/ui/dist/icons/zodiac-capricorn.svg.gz +0 -0
  1275. data/ui/dist/icons/zodiac-gemini.svg.gz +0 -0
  1276. data/ui/dist/icons/zodiac-leo.svg.gz +0 -0
  1277. data/ui/dist/icons/zodiac-libra.svg.gz +0 -0
  1278. data/ui/dist/icons/zodiac-pisces.svg.gz +0 -0
  1279. data/ui/dist/icons/zodiac-sagittarius.svg.gz +0 -0
  1280. data/ui/dist/icons/zodiac-scorpio.svg.gz +0 -0
  1281. data/ui/dist/icons/zodiac-taurus.svg.gz +0 -0
  1282. data/ui/dist/icons/zodiac-virgo.svg.gz +0 -0
  1283. data/ui/dist/icons/zoom-cancel.svg.gz +0 -0
  1284. data/ui/dist/icons/zoom-check.svg.gz +0 -0
  1285. data/ui/dist/icons/zoom-in.svg.gz +0 -0
  1286. data/ui/dist/icons/zoom-money.svg.gz +0 -0
  1287. data/ui/dist/icons/zoom-out.svg.gz +0 -0
  1288. data/ui/dist/icons/zoom-question.svg.gz +0 -0
  1289. data/ui/dist/{main-0ef3be65da8d3b0dbabb.css.gz → main-5cac10cadc5aa16e9b69.css.gz} +0 -0
  1290. data/ui/dist/main-5cac10cadc5aa16e9b69.js.gz +0 -0
  1291. data/ui/dist/manifest.json +2531 -5
  1292. metadata +1272 -34
  1293. data/ui/dist/main-0ef3be65da8d3b0dbabb.js.gz +0 -0
data/lib/motor/assets.rb CHANGED
@@ -14,6 +14,12 @@ module Motor
14
14
  JSON.parse(MANIFEST_PATH.read)
15
15
  end
16
16
 
17
+ def icons
18
+ manifest.select do |k, v|
19
+ !k.ends_with?('.gz') && v.starts_with?('icons/') && !v.include?('DS_Store')
20
+ end.keys
21
+ end
22
+
17
23
  def asset_path(path)
18
24
  Motor::Admin.routes.url_helpers.motor_asset_path(manifest[path])
19
25
  end
@@ -68,8 +68,10 @@ module Motor
68
68
  end
69
69
 
70
70
  require_relative './build_schema/active_storage_attachment_schema'
71
+ require_relative './build_schema/adjust_devise_model_schema'
71
72
  require_relative './build_schema/load_from_rails'
72
73
  require_relative './build_schema/find_display_column'
74
+ require_relative './build_schema/find_icon'
73
75
  require_relative './build_schema/persist_resource_configs'
74
76
  require_relative './build_schema/reorder_schema'
75
77
  require_relative './build_schema/merge_schema_configs'
@@ -9,14 +9,18 @@ module Motor
9
9
  primary_key: 'id',
10
10
  display_name: 'Attachments',
11
11
  display_column: 'filename',
12
+ icon: 'paperclip',
12
13
  columns: [
13
14
  {
14
15
  name: 'id',
15
- display_name: 'Id',
16
+ display_name: 'ID',
16
17
  column_type: 'integer',
17
18
  access_type: 'read_only',
18
19
  default_value: nil,
19
20
  validators: [],
21
+ format: {},
22
+ is_array: false,
23
+ reference: nil,
20
24
  virtual: false
21
25
  },
22
26
  {
@@ -26,6 +30,9 @@ module Motor
26
30
  access_type: 'read_only',
27
31
  default_value: nil,
28
32
  validators: [],
33
+ format: {},
34
+ is_array: false,
35
+ reference: nil,
29
36
  virtual: true
30
37
  },
31
38
  {
@@ -35,6 +42,9 @@ module Motor
35
42
  access_type: 'read_write',
36
43
  default_value: nil,
37
44
  validators: [],
45
+ format: {},
46
+ is_array: false,
47
+ reference: nil,
38
48
  virtual: false
39
49
  },
40
50
  {
@@ -44,6 +54,9 @@ module Motor
44
54
  access_type: 'read_write',
45
55
  default_value: nil,
46
56
  validators: [],
57
+ format: {},
58
+ is_array: false,
59
+ reference: nil,
47
60
  virtual: false
48
61
  },
49
62
  {
@@ -53,6 +66,16 @@ module Motor
53
66
  access_type: 'read_write',
54
67
  default_value: nil,
55
68
  validators: [],
69
+ format: {},
70
+ is_array: false,
71
+ reference: {
72
+ name: 'record',
73
+ display_name: 'Record',
74
+ model_name: nil,
75
+ reference_type: 'belongs_to',
76
+ foreign_key: 'record_id',
77
+ polymorphic: true
78
+ },
56
79
  virtual: false
57
80
  },
58
81
  {
@@ -62,6 +85,9 @@ module Motor
62
85
  access_type: 'write_only',
63
86
  default_value: nil,
64
87
  validators: [],
88
+ format: {},
89
+ is_array: false,
90
+ reference: nil,
65
91
  virtual: false
66
92
  },
67
93
  {
@@ -71,6 +97,9 @@ module Motor
71
97
  access_type: 'read_only',
72
98
  default_value: nil,
73
99
  validators: [],
100
+ format: {},
101
+ is_array: false,
102
+ reference: nil,
74
103
  virtual: false
75
104
  }
76
105
  ],
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Motor
4
+ module BuildSchema
5
+ module AdjustDeviseModelSchema
6
+ HIDDEN_COLUMNS = %w[
7
+ encrypted_password
8
+ reset_password_token
9
+ confirmation_token
10
+ ].freeze
11
+
12
+ READ_ONLY_COLUMNS = %w[
13
+ reset_password_sent_at
14
+ remember_created_at
15
+ sign_in_count
16
+ current_sign_in_at
17
+ last_sign_in_at
18
+ current_sign_in_ip
19
+ last_sign_in_ip
20
+ confirmed_at
21
+ confirmation_sent_at
22
+ ].freeze
23
+
24
+ module_function
25
+
26
+ def call(schema, devise_modules)
27
+ modify_column_access_types!(schema[:columns])
28
+ add_password_column!(schema[:columns]) if devise_modules.include?(:database_authenticatable)
29
+
30
+ schema
31
+ end
32
+
33
+ def modify_column_access_types!(columns)
34
+ columns.each do |column|
35
+ column[:access_type] =
36
+ case column[:name]
37
+ when *HIDDEN_COLUMNS
38
+ ColumnAccessTypes::HIDDEN
39
+ when *READ_ONLY_COLUMNS
40
+ ColumnAccessTypes::READ_ONLY
41
+ else
42
+ column[:access_type]
43
+ end
44
+ end
45
+ end
46
+
47
+ def add_password_column!(columns)
48
+ columns << {
49
+ name: 'password',
50
+ display_name: 'Password',
51
+ column_type: 'string',
52
+ access_type: 'write_only',
53
+ default_value: nil,
54
+ validators: [],
55
+ virtual: true
56
+ }
57
+ end
58
+ end
59
+ end
60
+ end
@@ -3,35 +3,39 @@
3
3
  module Motor
4
4
  module BuildSchema
5
5
  module FindDisplayColumn
6
- DISPLAY_NAMES = %w[
7
- name
8
- full_name
9
- fullname
10
- last_name
11
- lastname
12
- first_name
13
- firstname
14
- fname
15
- lname
16
- sname
17
- company
18
- domain
19
- title
20
- phone
21
- phone_number
22
- email
23
- phone
24
- filename
25
- file_name
26
- url
27
- make
28
- brand
29
- manufacturer
30
- model
31
- address
32
- ].freeze
33
-
34
- DISPLAY_NAME_REGEXP = Regexp.new(Regexp.union(DISPLAY_NAMES).source, Regexp::IGNORECASE)
6
+ DISPLAY_NAMES = Set.new(
7
+ %w[
8
+ name
9
+ full_name
10
+ fullname
11
+ last_name
12
+ lastname
13
+ first_name
14
+ firstname
15
+ fname
16
+ lname
17
+ sname
18
+ company
19
+ domain
20
+ website
21
+ title
22
+ phone
23
+ phone_number
24
+ email
25
+ phone
26
+ filename
27
+ file_name
28
+ url
29
+ make
30
+ brand
31
+ manufacturer
32
+ model
33
+ address
34
+ code
35
+ ]
36
+ ).freeze
37
+
38
+ DISPLAY_NAME_REGEXP = Regexp.new(Regexp.union(DISPLAY_NAMES.to_a).source, Regexp::IGNORECASE)
35
39
 
36
40
  module_function
37
41
 
@@ -42,7 +46,7 @@ module Motor
42
46
  end
43
47
 
44
48
  def select_column_name(column_names)
45
- name = DISPLAY_NAMES.find { |column_name| column_name.in?(column_names) }
49
+ name = column_names.find { |column_name| column_name.in?(DISPLAY_NAMES) }
46
50
  name ||= column_names.find { |column_name| column_name.match?(DISPLAY_NAME_REGEXP) }
47
51
 
48
52
  name
@@ -0,0 +1,130 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Motor
4
+ module FindIcon
5
+ ICONS_MAP = {
6
+ 'audit' => 'history',
7
+ 'block' => 'ban',
8
+ 'blocked' => 'ban',
9
+ 'blacklisted' => 'ban',
10
+ 'blocklisted' => 'ban',
11
+ 'banned' => 'ban',
12
+ 'website' => 'world',
13
+ 'location' => 'gps',
14
+ 'photo' => 'photo',
15
+ 'image' => 'photo',
16
+ 'picture' => 'photo',
17
+ 'video' => 'video',
18
+ 'file' => 'file',
19
+ 'pdf' => 'file-text',
20
+ 'ad' => 'ad',
21
+ 'shop' => 'building-store',
22
+ 'store' => 'building-store',
23
+ 'seller' => 'building-store',
24
+ 'app' => 'apps',
25
+ 'book' => 'book',
26
+ 'movie' => 'movie',
27
+ 'country' => 'map',
28
+ 'api' => 'tool',
29
+ 'config' => 'tool',
30
+ 'key' => 'key',
31
+ 'phone' => 'phone',
32
+ 'call' => 'phone',
33
+ 'cell' => 'phone',
34
+ 'token' => 'key',
35
+ 'secret' => 'lock',
36
+ 'automation' => 'manual-gearbox',
37
+ 'relationship' => 'hierarchy',
38
+ 'person' => 'user',
39
+ 'people' => 'users',
40
+ 'mail' => 'mail',
41
+ 'user' => 'user',
42
+ 'rating' => 'star',
43
+ 'article' => 'blockquote',
44
+ 'podcast' => 'headphones',
45
+ 'payment' => 'cash',
46
+ 'log' => 'history',
47
+ 'history' => 'history',
48
+ 'rule' => 'manual-gearbox',
49
+ 'tracking' => 'zoom-question',
50
+ 'github' => 'brand-github',
51
+ 'tag' => 'hash',
52
+ 'category' => 'hash',
53
+ 'label' => 'hash',
54
+ 'twitter' => 'brand-twitter',
55
+ 'facebook' => 'brand-facebook',
56
+ 'google' => 'brand-google',
57
+ 'renewal' => 'repeat',
58
+ 'sales' => 'report-money',
59
+ 'telegram' => 'brand-telegram',
60
+ 'whatsapp' => 'brand-whatsapp',
61
+ 'survey' => 'checkbox',
62
+ 'subcategory' => 'hash',
63
+ 'type' => 'hash',
64
+ 'model' => 'hash',
65
+ 'taxon' => 'hash',
66
+ 'affiliate' => 'affiliate',
67
+ 'chat' => 'message-circle',
68
+ 'message' => 'messages',
69
+ 'poll' => 'messages',
70
+ 'feedpack' => 'messages',
71
+ 'attachment' => 'paperclip',
72
+ 'certificate' => 'certificate',
73
+ 'approval' => 'certificate',
74
+ 'bank' => 'building-bank',
75
+ 'bridge' => 'building-bridge',
76
+ 'car' => 'car',
77
+ 'vehicle' => 'car',
78
+ 'analytic' => 'device-analytics',
79
+ 'stat' => 'device-analytics',
80
+ 'statistic' => 'device-analytics',
81
+ 'link' => 'link',
82
+ 'slug' => 'link',
83
+ 'city' => 'building-skyscraper',
84
+ 'region' => 'map',
85
+ 'district' => 'building-community',
86
+ 'community' => 'building-community',
87
+ 'activity' => 'activity',
88
+ 'invoice' => 'invoice',
89
+ 'settlement' => 'invoice',
90
+ 'state' => 'map',
91
+ 'note' => 'note',
92
+ 'order' => 'truck-delivery',
93
+ 'lead' => 'building-lighthouse',
94
+ 'error' => 'file-alert',
95
+ 'page' => 'brand-pagekit',
96
+ 'date' => 'calendar-event',
97
+ 'customer' => 'users',
98
+ 'contact' => 'users',
99
+ 'member' => 'users',
100
+ 'admin' => 'user-check',
101
+ 'notification' => 'bell',
102
+ 'alert' => 'bell',
103
+ 'team' => 'users',
104
+ 'folder' => 'folder',
105
+ 'subscriber' => 'user-plus',
106
+ 'product' => 'building-store',
107
+ 'html' => 'code',
108
+ 'stripe' => 'brand-stripe',
109
+ 'email' => 'mail'
110
+ }.freeze
111
+
112
+ DEFAULT_ICON = 'database'
113
+
114
+ module_function
115
+
116
+ def call(text)
117
+ text = text.downcase
118
+ icon = ICONS_MAP[text] || ICONS_MAP[text.singularize]
119
+
120
+ icon ||=
121
+ text.split(%r{[\s_/]}).reverse.reduce(nil) do |_acc, word|
122
+ found_icon = ICONS_MAP[word] || ICONS_MAP[word.singularize]
123
+
124
+ break found_icon if found_icon
125
+ end
126
+
127
+ icon || DEFAULT_ICON
128
+ end
129
+ end
130
+ end
@@ -10,7 +10,15 @@ module Motor
10
10
 
11
11
  def call
12
12
  models.map do |model|
13
- build_model_schema(model)
13
+ Object.const_get(model.name)
14
+
15
+ schema = build_model_schema(model)
16
+
17
+ if model.respond_to?(:devise_modules)
18
+ Motor::BuildSchema::AdjustDeviseModelSchema.call(schema, model.devise_modules)
19
+ end
20
+
21
+ schema
14
22
  rescue StandardError, NotImplementedError => e
15
23
  Rails.logger.error(e) if model.name != 'Audited::Audit'
16
24
 
@@ -47,6 +55,7 @@ module Motor
47
55
  display_column: FindDisplayColumn.call(model),
48
56
  columns: fetch_columns(model),
49
57
  associations: fetch_associations(model),
58
+ icon: Motor::FindIcon.call(model.name.titleize),
50
59
  scopes: fetch_scopes(model),
51
60
  actions: DEFAULT_ACTIONS,
52
61
  tabs: DEFAULT_TABS,
@@ -90,7 +99,7 @@ module Motor
90
99
 
91
100
  {
92
101
  name: column.name,
93
- display_name: column.name.humanize,
102
+ display_name: Utils.humanize_column_name(column.name),
94
103
  column_type: is_enum ? 'string' : UNIFIED_TYPES[column.type.to_s] || column.type.to_s,
95
104
  is_array: column.array?,
96
105
  access_type: COLUMN_NAME_ACCESS_TYPES.fetch(column.name, ColumnAccessTypes::READ_WRITE),
@@ -108,13 +117,15 @@ module Motor
108
117
  model.reflections.map do |name, ref|
109
118
  next if !ref.has_one? && !ref.belongs_to?
110
119
 
111
- begin
112
- ref.klass
113
- rescue StandardError
114
- next
115
- end
120
+ unless ref.polymorphic?
121
+ begin
122
+ next if ref.klass.name == 'ActiveStorage::Blob'
123
+ rescue StandardError => e
124
+ Rails.logger.error(e)
116
125
 
117
- next if ref.klass.name == 'ActiveStorage::Blob'
126
+ next
127
+ end
128
+ end
118
129
 
119
130
  build_reflection_column(name, model, ref, default_attrs)
120
131
  end.compact
@@ -122,7 +133,7 @@ module Motor
122
133
 
123
134
  def build_reflection_column(name, model, ref, default_attrs)
124
135
  column_name = ref.belongs_to? ? ref.foreign_key.to_s : name
125
- is_attachment = ref.klass.name == 'ActiveStorage::Attachment'
136
+ is_attachment = !ref.polymorphic? && ref.klass.name == 'ActiveStorage::Attachment'
126
137
  access_type = ref.belongs_to? || is_attachment ? ColumnAccessTypes::READ_WRITE : ColumnAccessTypes::READ_ONLY
127
138
 
128
139
  {
@@ -133,26 +144,27 @@ module Motor
133
144
  default_value: default_attrs[column_name],
134
145
  validators: fetch_validators(model, column_name, ref),
135
146
  format: {},
136
- reference: {
137
- name: name,
138
- model_name: ref.klass.name.underscore,
139
- reference_type: ref.belongs_to? ? 'belongs_to' : 'has_one',
140
- foreign_key: ref.foreign_key,
141
- polymorphic: ref.polymorphic? || is_attachment
142
- },
147
+ reference: build_reference(name, ref),
143
148
  virtual: false
144
149
  }
145
150
  end
146
151
 
152
+ def build_reference(name, reflection)
153
+ {
154
+ name: name,
155
+ display_name: name.humanize,
156
+ model_name: reflection.polymorphic? ? nil : reflection.klass.name.underscore,
157
+ reference_type: reflection.belongs_to? ? 'belongs_to' : 'has_one',
158
+ foreign_key: reflection.foreign_key,
159
+ association_primary_key: reflection.polymorphic? ? 'id' : reflection.association_primary_key,
160
+ polymorphic: reflection.polymorphic?
161
+ }
162
+ end
163
+
147
164
  def fetch_associations(model)
148
165
  model.reflections.map do |name, ref|
149
166
  next if ref.has_one? || ref.belongs_to?
150
-
151
- begin
152
- ref.klass
153
- rescue StandardError
154
- next
155
- end
167
+ next unless valid_reflection?(ref)
156
168
 
157
169
  model_class = ref.klass
158
170
 
@@ -164,7 +176,8 @@ module Motor
164
176
  slug: name.underscore,
165
177
  model_name: model_class.name.underscore,
166
178
  foreign_key: ref.foreign_key,
167
- polymorphic: ref.polymorphic? || model_class.name == 'ActiveStorage::Attachment',
179
+ polymorphic: ref.options[:as].present?,
180
+ icon: Motor::FindIcon.call(name),
168
181
  visible: true
169
182
  }
170
183
  end.compact
@@ -190,20 +203,33 @@ module Motor
190
203
  end
191
204
 
192
205
  def build_validator_hash(validator)
206
+ options = validator.options.reject { |_, v| v.is_a?(Proc) }
207
+
193
208
  case validator
194
209
  when ActiveModel::Validations::InclusionValidator
195
210
  { includes: validator.send(:delimiter) }
196
211
  when ActiveRecord::Validations::PresenceValidator
197
212
  { required: true }
198
213
  when ActiveModel::Validations::FormatValidator
199
- { format: JsRegex.new(validator.options[:with]).to_h.slice(:source, :options) }
214
+ { format: JsRegex.new(options[:with]).to_h.slice(:source, :options) }
200
215
  when ActiveRecord::Validations::LengthValidator
201
- { length: validator.options }
216
+ { length: options }
202
217
  when ActiveModel::Validations::NumericalityValidator
203
- { numeric: validator.options }
218
+ { numeric: options }
204
219
  end
205
220
  end
206
221
 
222
+ def valid_reflection?(reflection)
223
+ reflection.klass
224
+ reflection.foreign_key
225
+
226
+ true
227
+ rescue StandardError => e
228
+ Rails.logger.error(e)
229
+
230
+ false
231
+ end
232
+
207
233
  def eager_load_models!
208
234
  MUTEX.synchronize do
209
235
  if Rails::VERSION::MAJOR > 5 && defined?(Zeitwerk::Loader)