spina 2.0.0 → 2.1.1

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

Potentially problematic release.


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

Files changed (866) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -7
  3. data/Rakefile +2 -0
  4. data/app/assets/config/spina/manifest.js +7 -4
  5. data/app/assets/config/spina/tailwind.config.js +27 -0
  6. data/app/assets/icons/heroicons/outline/academic-cap.svg +5 -0
  7. data/app/assets/icons/heroicons/outline/adjustments.svg +3 -0
  8. data/app/assets/icons/heroicons/outline/annotation.svg +3 -0
  9. data/app/assets/icons/heroicons/outline/archive.svg +3 -0
  10. data/app/assets/icons/heroicons/outline/arrow-circle-down.svg +3 -0
  11. data/app/assets/icons/heroicons/outline/arrow-circle-left.svg +3 -0
  12. data/app/assets/icons/heroicons/outline/arrow-circle-right.svg +3 -0
  13. data/app/assets/icons/heroicons/outline/arrow-circle-up.svg +3 -0
  14. data/app/assets/icons/heroicons/outline/arrow-down.svg +3 -0
  15. data/app/assets/icons/heroicons/outline/arrow-left.svg +3 -0
  16. data/app/assets/icons/heroicons/outline/arrow-narrow-down.svg +3 -0
  17. data/app/assets/icons/heroicons/outline/arrow-narrow-left.svg +3 -0
  18. data/app/assets/icons/heroicons/outline/arrow-narrow-right.svg +3 -0
  19. data/app/assets/icons/heroicons/outline/arrow-narrow-up.svg +3 -0
  20. data/app/assets/icons/heroicons/outline/arrow-right.svg +3 -0
  21. data/app/assets/icons/heroicons/outline/arrow-up.svg +3 -0
  22. data/app/assets/icons/heroicons/outline/arrows-expand.svg +3 -0
  23. data/app/assets/icons/heroicons/outline/at-symbol.svg +3 -0
  24. data/app/assets/icons/heroicons/outline/backspace.svg +3 -0
  25. data/app/assets/icons/heroicons/outline/badge-check.svg +3 -0
  26. data/app/assets/icons/heroicons/outline/ban.svg +3 -0
  27. data/app/assets/icons/heroicons/outline/beaker.svg +3 -0
  28. data/app/assets/icons/heroicons/outline/bell.svg +3 -0
  29. data/app/assets/icons/heroicons/outline/book-open.svg +3 -0
  30. data/app/assets/icons/heroicons/outline/bookmark-alt.svg +3 -0
  31. data/app/assets/icons/heroicons/outline/bookmark.svg +3 -0
  32. data/app/assets/icons/heroicons/outline/briefcase.svg +3 -0
  33. data/app/assets/icons/heroicons/outline/cake.svg +3 -0
  34. data/app/assets/icons/heroicons/outline/calculator.svg +3 -0
  35. data/app/assets/icons/heroicons/outline/calendar.svg +3 -0
  36. data/app/assets/icons/heroicons/outline/camera.svg +4 -0
  37. data/app/assets/icons/heroicons/outline/cash.svg +3 -0
  38. data/app/assets/icons/heroicons/outline/chart-bar.svg +3 -0
  39. data/app/assets/icons/heroicons/outline/chart-pie.svg +4 -0
  40. data/app/assets/icons/heroicons/outline/chart-square-bar.svg +3 -0
  41. data/app/assets/icons/heroicons/outline/chat-alt-2.svg +3 -0
  42. data/app/assets/icons/heroicons/outline/chat-alt.svg +3 -0
  43. data/app/assets/icons/heroicons/outline/chat.svg +3 -0
  44. data/app/assets/icons/heroicons/outline/check-circle.svg +3 -0
  45. data/app/assets/icons/heroicons/outline/check.svg +3 -0
  46. data/app/assets/icons/heroicons/outline/chevron-double-down.svg +3 -0
  47. data/app/assets/icons/heroicons/outline/chevron-double-left.svg +3 -0
  48. data/app/assets/icons/heroicons/outline/chevron-double-right.svg +3 -0
  49. data/app/assets/icons/heroicons/outline/chevron-double-up.svg +3 -0
  50. data/app/assets/icons/heroicons/outline/chevron-down.svg +3 -0
  51. data/app/assets/icons/heroicons/outline/chevron-left.svg +3 -0
  52. data/app/assets/icons/heroicons/outline/chevron-right.svg +3 -0
  53. data/app/assets/icons/heroicons/outline/chevron-up.svg +3 -0
  54. data/app/assets/icons/heroicons/outline/chip.svg +3 -0
  55. data/app/assets/icons/heroicons/outline/clipboard-check.svg +3 -0
  56. data/app/assets/icons/heroicons/outline/clipboard-copy.svg +3 -0
  57. data/app/assets/icons/heroicons/outline/clipboard-list.svg +3 -0
  58. data/app/assets/icons/heroicons/outline/clipboard.svg +3 -0
  59. data/app/assets/icons/heroicons/outline/clock.svg +3 -0
  60. data/app/assets/icons/heroicons/outline/cloud-download.svg +3 -0
  61. data/app/assets/icons/heroicons/outline/cloud-upload.svg +3 -0
  62. data/app/assets/icons/heroicons/outline/cloud.svg +3 -0
  63. data/app/assets/icons/heroicons/outline/code.svg +3 -0
  64. data/app/assets/icons/heroicons/outline/cog.svg +4 -0
  65. data/app/assets/icons/heroicons/outline/collection.svg +3 -0
  66. data/app/assets/icons/heroicons/outline/color-swatch.svg +3 -0
  67. data/app/assets/icons/heroicons/outline/credit-card.svg +3 -0
  68. data/app/assets/icons/heroicons/outline/cube-transparent.svg +3 -0
  69. data/app/assets/icons/heroicons/outline/cube.svg +3 -0
  70. data/app/assets/icons/heroicons/outline/currency-bangladeshi.svg +3 -0
  71. data/app/assets/icons/heroicons/outline/currency-dollar.svg +3 -0
  72. data/app/assets/icons/heroicons/outline/currency-euro.svg +3 -0
  73. data/app/assets/icons/heroicons/outline/currency-pound.svg +3 -0
  74. data/app/assets/icons/heroicons/outline/currency-rupee.svg +3 -0
  75. data/app/assets/icons/heroicons/outline/currency-yen.svg +3 -0
  76. data/app/assets/icons/heroicons/outline/cursor-click.svg +3 -0
  77. data/app/assets/icons/heroicons/outline/database.svg +3 -0
  78. data/app/assets/icons/heroicons/outline/desktop-computer.svg +3 -0
  79. data/app/assets/icons/heroicons/outline/device-mobile.svg +3 -0
  80. data/app/assets/icons/heroicons/outline/device-tablet.svg +3 -0
  81. data/app/assets/icons/heroicons/outline/document-add.svg +3 -0
  82. data/app/assets/icons/heroicons/outline/document-download.svg +3 -0
  83. data/app/assets/icons/heroicons/outline/document-duplicate.svg +3 -0
  84. data/app/assets/icons/heroicons/outline/document-remove.svg +3 -0
  85. data/app/assets/icons/heroicons/outline/document-report.svg +3 -0
  86. data/app/assets/icons/heroicons/outline/document-search.svg +3 -0
  87. data/app/assets/icons/heroicons/outline/document-text.svg +3 -0
  88. data/app/assets/icons/heroicons/outline/document.svg +3 -0
  89. data/app/assets/icons/heroicons/outline/dots-circle-horizontal.svg +3 -0
  90. data/app/assets/icons/heroicons/outline/dots-horizontal.svg +3 -0
  91. data/app/assets/icons/heroicons/outline/dots-vertical.svg +3 -0
  92. data/app/assets/icons/heroicons/outline/download.svg +3 -0
  93. data/app/assets/icons/heroicons/outline/duplicate.svg +3 -0
  94. data/app/assets/icons/heroicons/outline/emoji-happy.svg +3 -0
  95. data/app/assets/icons/heroicons/outline/emoji-sad.svg +3 -0
  96. data/app/assets/icons/heroicons/outline/exclamation-circle.svg +3 -0
  97. data/app/assets/icons/heroicons/outline/exclamation.svg +3 -0
  98. data/app/assets/icons/heroicons/outline/external-link.svg +3 -0
  99. data/app/assets/icons/heroicons/outline/eye-off.svg +3 -0
  100. data/app/assets/icons/heroicons/outline/eye.svg +4 -0
  101. data/app/assets/icons/heroicons/outline/fast-forward.svg +3 -0
  102. data/app/assets/icons/heroicons/outline/film.svg +3 -0
  103. data/app/assets/icons/heroicons/outline/filter.svg +3 -0
  104. data/app/assets/icons/heroicons/outline/finger-print.svg +3 -0
  105. data/app/assets/icons/heroicons/outline/fire.svg +4 -0
  106. data/app/assets/icons/heroicons/outline/flag.svg +3 -0
  107. data/app/assets/icons/heroicons/outline/folder-add.svg +3 -0
  108. data/app/assets/icons/heroicons/outline/folder-download.svg +3 -0
  109. data/app/assets/icons/heroicons/outline/folder-open.svg +3 -0
  110. data/app/assets/icons/heroicons/outline/folder-remove.svg +3 -0
  111. data/app/assets/icons/heroicons/outline/folder.svg +3 -0
  112. data/app/assets/icons/heroicons/outline/gift.svg +3 -0
  113. data/app/assets/icons/heroicons/outline/globe-alt.svg +3 -0
  114. data/app/assets/icons/heroicons/outline/globe.svg +3 -0
  115. data/app/assets/icons/heroicons/outline/hand.svg +3 -0
  116. data/app/assets/icons/heroicons/outline/hashtag.svg +3 -0
  117. data/app/assets/icons/heroicons/outline/heart.svg +3 -0
  118. data/app/assets/icons/heroicons/outline/home.svg +3 -0
  119. data/app/assets/icons/heroicons/outline/identification.svg +3 -0
  120. data/app/assets/icons/heroicons/outline/inbox-in.svg +3 -0
  121. data/app/assets/icons/heroicons/outline/inbox.svg +3 -0
  122. data/app/assets/icons/heroicons/outline/information-circle.svg +3 -0
  123. data/app/assets/icons/heroicons/outline/key.svg +3 -0
  124. data/app/assets/icons/heroicons/outline/library.svg +3 -0
  125. data/app/assets/icons/heroicons/outline/light-bulb.svg +3 -0
  126. data/app/assets/icons/heroicons/outline/lightning-bolt.svg +3 -0
  127. data/app/assets/icons/heroicons/outline/link.svg +3 -0
  128. data/app/assets/icons/heroicons/outline/location-marker.svg +4 -0
  129. data/app/assets/icons/heroicons/outline/lock-closed.svg +3 -0
  130. data/app/assets/icons/heroicons/outline/lock-open.svg +3 -0
  131. data/app/assets/icons/heroicons/outline/login.svg +3 -0
  132. data/app/assets/icons/heroicons/outline/logout.svg +3 -0
  133. data/app/assets/icons/heroicons/outline/mail-open.svg +3 -0
  134. data/app/assets/icons/heroicons/outline/mail.svg +3 -0
  135. data/app/assets/icons/heroicons/outline/map.svg +3 -0
  136. data/app/assets/icons/heroicons/outline/menu-alt-1.svg +3 -0
  137. data/app/assets/icons/heroicons/outline/menu-alt-2.svg +3 -0
  138. data/app/assets/icons/heroicons/outline/menu-alt-3.svg +3 -0
  139. data/app/assets/icons/heroicons/outline/menu-alt-4.svg +3 -0
  140. data/app/assets/icons/heroicons/outline/menu.svg +3 -0
  141. data/app/assets/icons/heroicons/outline/microphone.svg +3 -0
  142. data/app/assets/icons/heroicons/outline/minus-circle.svg +3 -0
  143. data/app/assets/icons/heroicons/outline/minus-sm.svg +3 -0
  144. data/app/assets/icons/heroicons/outline/minus.svg +3 -0
  145. data/app/assets/icons/heroicons/outline/moon.svg +3 -0
  146. data/app/assets/icons/heroicons/outline/music-note.svg +3 -0
  147. data/app/assets/icons/heroicons/outline/newspaper.svg +3 -0
  148. data/app/assets/icons/heroicons/outline/office-building.svg +3 -0
  149. data/app/assets/icons/heroicons/outline/paper-airplane.svg +3 -0
  150. data/app/assets/icons/heroicons/outline/paper-clip.svg +3 -0
  151. data/app/assets/icons/heroicons/outline/pause.svg +3 -0
  152. data/app/assets/icons/heroicons/outline/pencil-alt.svg +3 -0
  153. data/app/assets/icons/heroicons/outline/pencil.svg +3 -0
  154. data/app/assets/icons/heroicons/outline/phone-incoming.svg +3 -0
  155. data/app/assets/icons/heroicons/outline/phone-missed-call.svg +3 -0
  156. data/app/assets/icons/heroicons/outline/phone-outgoing.svg +3 -0
  157. data/app/assets/icons/heroicons/outline/phone.svg +3 -0
  158. data/app/assets/icons/heroicons/outline/photograph.svg +3 -0
  159. data/app/assets/icons/heroicons/outline/play.svg +4 -0
  160. data/app/assets/icons/heroicons/outline/plus-circle.svg +3 -0
  161. data/app/assets/icons/heroicons/outline/plus-sm.svg +3 -0
  162. data/app/assets/icons/heroicons/outline/plus.svg +3 -0
  163. data/app/assets/icons/heroicons/outline/presentation-chart-bar.svg +3 -0
  164. data/app/assets/icons/heroicons/outline/presentation-chart-line.svg +3 -0
  165. data/app/assets/icons/heroicons/outline/printer.svg +3 -0
  166. data/app/assets/icons/heroicons/outline/puzzle.svg +3 -0
  167. data/app/assets/icons/heroicons/outline/qrcode.svg +3 -0
  168. data/app/assets/icons/heroicons/outline/question-mark-circle.svg +3 -0
  169. data/app/assets/icons/heroicons/outline/receipt-refund.svg +3 -0
  170. data/app/assets/icons/heroicons/outline/receipt-tax.svg +3 -0
  171. data/app/assets/icons/heroicons/outline/refresh.svg +3 -0
  172. data/app/assets/icons/heroicons/outline/reply.svg +3 -0
  173. data/app/assets/icons/heroicons/outline/rewind.svg +3 -0
  174. data/app/assets/icons/heroicons/outline/rss.svg +3 -0
  175. data/app/assets/icons/heroicons/outline/save-as.svg +3 -0
  176. data/app/assets/icons/heroicons/outline/save.svg +3 -0
  177. data/app/assets/icons/heroicons/outline/scale.svg +3 -0
  178. data/app/assets/icons/heroicons/outline/scissors.svg +3 -0
  179. data/app/assets/icons/heroicons/outline/search-circle.svg +3 -0
  180. data/app/assets/icons/heroicons/outline/search.svg +3 -0
  181. data/app/assets/icons/heroicons/outline/selector.svg +3 -0
  182. data/app/assets/icons/heroicons/outline/server.svg +3 -0
  183. data/app/assets/icons/heroicons/outline/share.svg +3 -0
  184. data/app/assets/icons/heroicons/outline/shield-check.svg +3 -0
  185. data/app/assets/icons/heroicons/outline/shield-exclamation.svg +3 -0
  186. data/app/assets/icons/heroicons/outline/shopping-bag.svg +3 -0
  187. data/app/assets/icons/heroicons/outline/shopping-cart.svg +3 -0
  188. data/app/assets/icons/heroicons/outline/sort-ascending.svg +3 -0
  189. data/app/assets/icons/heroicons/outline/sort-descending.svg +3 -0
  190. data/app/assets/icons/heroicons/outline/sparkles.svg +3 -0
  191. data/app/assets/icons/heroicons/outline/speakerphone.svg +3 -0
  192. data/app/assets/icons/heroicons/outline/star.svg +3 -0
  193. data/app/assets/icons/heroicons/outline/status-offline.svg +3 -0
  194. data/app/assets/icons/heroicons/outline/status-online.svg +3 -0
  195. data/app/assets/icons/heroicons/outline/stop.svg +4 -0
  196. data/app/assets/icons/heroicons/outline/sun.svg +3 -0
  197. data/app/assets/icons/heroicons/outline/support.svg +3 -0
  198. data/app/assets/icons/heroicons/outline/switch-horizontal.svg +3 -0
  199. data/app/assets/icons/heroicons/outline/switch-vertical.svg +3 -0
  200. data/app/assets/icons/heroicons/outline/table.svg +3 -0
  201. data/app/assets/icons/heroicons/outline/tag.svg +3 -0
  202. data/app/assets/icons/heroicons/outline/template.svg +3 -0
  203. data/app/assets/icons/heroicons/outline/terminal.svg +3 -0
  204. data/app/assets/icons/heroicons/outline/thumb-down.svg +3 -0
  205. data/app/assets/icons/heroicons/outline/thumb-up.svg +3 -0
  206. data/app/assets/icons/heroicons/outline/ticket.svg +3 -0
  207. data/app/assets/icons/heroicons/outline/translate.svg +3 -0
  208. data/app/assets/icons/heroicons/outline/trash.svg +3 -0
  209. data/app/assets/icons/heroicons/outline/trending-down.svg +3 -0
  210. data/app/assets/icons/heroicons/outline/trending-up.svg +3 -0
  211. data/app/assets/icons/heroicons/outline/truck.svg +4 -0
  212. data/app/assets/icons/heroicons/outline/upload.svg +3 -0
  213. data/app/assets/icons/heroicons/outline/user-add.svg +3 -0
  214. data/app/assets/icons/heroicons/outline/user-circle.svg +3 -0
  215. data/app/assets/icons/heroicons/outline/user-group.svg +3 -0
  216. data/app/assets/icons/heroicons/outline/user-remove.svg +3 -0
  217. data/app/assets/icons/heroicons/outline/user.svg +3 -0
  218. data/app/assets/icons/heroicons/outline/users.svg +3 -0
  219. data/app/assets/icons/heroicons/outline/variable.svg +3 -0
  220. data/app/assets/icons/heroicons/outline/video-camera.svg +3 -0
  221. data/app/assets/icons/heroicons/outline/view-boards.svg +3 -0
  222. data/app/assets/icons/heroicons/outline/view-grid-add.svg +3 -0
  223. data/app/assets/icons/heroicons/outline/view-grid.svg +3 -0
  224. data/app/assets/icons/heroicons/outline/view-list.svg +3 -0
  225. data/app/assets/icons/heroicons/outline/volume-off.svg +4 -0
  226. data/app/assets/icons/heroicons/outline/volume-up.svg +3 -0
  227. data/app/assets/icons/heroicons/outline/wifi.svg +3 -0
  228. data/app/assets/icons/heroicons/outline/x-circle.svg +3 -0
  229. data/app/assets/icons/heroicons/outline/x.svg +3 -0
  230. data/app/assets/icons/heroicons/outline/zoom-in.svg +3 -0
  231. data/app/assets/icons/heroicons/outline/zoom-out.svg +3 -0
  232. data/app/assets/icons/heroicons/solid/academic-cap.svg +3 -0
  233. data/app/assets/icons/heroicons/solid/adjustments.svg +3 -0
  234. data/app/assets/icons/heroicons/solid/annotation.svg +3 -0
  235. data/app/assets/icons/heroicons/solid/archive.svg +4 -0
  236. data/app/assets/icons/heroicons/solid/arrow-circle-down.svg +3 -0
  237. data/app/assets/icons/heroicons/solid/arrow-circle-left.svg +3 -0
  238. data/app/assets/icons/heroicons/solid/arrow-circle-right.svg +3 -0
  239. data/app/assets/icons/heroicons/solid/arrow-circle-up.svg +3 -0
  240. data/app/assets/icons/heroicons/solid/arrow-down.svg +3 -0
  241. data/app/assets/icons/heroicons/solid/arrow-left.svg +3 -0
  242. data/app/assets/icons/heroicons/solid/arrow-narrow-down.svg +3 -0
  243. data/app/assets/icons/heroicons/solid/arrow-narrow-left.svg +3 -0
  244. data/app/assets/icons/heroicons/solid/arrow-narrow-right.svg +3 -0
  245. data/app/assets/icons/heroicons/solid/arrow-narrow-up.svg +3 -0
  246. data/app/assets/icons/heroicons/solid/arrow-right.svg +3 -0
  247. data/app/assets/icons/heroicons/solid/arrow-up.svg +3 -0
  248. data/app/assets/icons/heroicons/solid/arrows-expand.svg +3 -0
  249. data/app/assets/icons/heroicons/solid/at-symbol.svg +3 -0
  250. data/app/assets/icons/heroicons/solid/backspace.svg +3 -0
  251. data/app/assets/icons/heroicons/solid/badge-check.svg +3 -0
  252. data/app/assets/icons/heroicons/solid/ban.svg +3 -0
  253. data/app/assets/icons/heroicons/solid/beaker.svg +3 -0
  254. data/app/assets/icons/heroicons/solid/bell.svg +3 -0
  255. data/app/assets/icons/heroicons/solid/book-open.svg +3 -0
  256. data/app/assets/icons/heroicons/solid/bookmark-alt.svg +3 -0
  257. data/app/assets/icons/heroicons/solid/bookmark.svg +3 -0
  258. data/app/assets/icons/heroicons/solid/briefcase.svg +4 -0
  259. data/app/assets/icons/heroicons/solid/cake.svg +3 -0
  260. data/app/assets/icons/heroicons/solid/calculator.svg +3 -0
  261. data/app/assets/icons/heroicons/solid/calendar.svg +3 -0
  262. data/app/assets/icons/heroicons/solid/camera.svg +3 -0
  263. data/app/assets/icons/heroicons/solid/cash.svg +3 -0
  264. data/app/assets/icons/heroicons/solid/chart-bar.svg +3 -0
  265. data/app/assets/icons/heroicons/solid/chart-pie.svg +4 -0
  266. data/app/assets/icons/heroicons/solid/chart-square-bar.svg +3 -0
  267. data/app/assets/icons/heroicons/solid/chat-alt-2.svg +4 -0
  268. data/app/assets/icons/heroicons/solid/chat-alt.svg +3 -0
  269. data/app/assets/icons/heroicons/solid/chat.svg +3 -0
  270. data/app/assets/icons/heroicons/solid/check-circle.svg +3 -0
  271. data/app/assets/icons/heroicons/solid/check.svg +3 -0
  272. data/app/assets/icons/heroicons/solid/chevron-double-down.svg +3 -0
  273. data/app/assets/icons/heroicons/solid/chevron-double-left.svg +3 -0
  274. data/app/assets/icons/heroicons/solid/chevron-double-right.svg +4 -0
  275. data/app/assets/icons/heroicons/solid/chevron-double-up.svg +3 -0
  276. data/app/assets/icons/heroicons/solid/chevron-down.svg +3 -0
  277. data/app/assets/icons/heroicons/solid/chevron-left.svg +3 -0
  278. data/app/assets/icons/heroicons/solid/chevron-right.svg +3 -0
  279. data/app/assets/icons/heroicons/solid/chevron-up.svg +3 -0
  280. data/app/assets/icons/heroicons/solid/chip.svg +4 -0
  281. data/app/assets/icons/heroicons/solid/clipboard-check.svg +4 -0
  282. data/app/assets/icons/heroicons/solid/clipboard-copy.svg +4 -0
  283. data/app/assets/icons/heroicons/solid/clipboard-list.svg +4 -0
  284. data/app/assets/icons/heroicons/solid/clipboard.svg +4 -0
  285. data/app/assets/icons/heroicons/solid/clock.svg +3 -0
  286. data/app/assets/icons/heroicons/solid/cloud-download.svg +3 -0
  287. data/app/assets/icons/heroicons/solid/cloud-upload.svg +4 -0
  288. data/app/assets/icons/heroicons/solid/cloud.svg +3 -0
  289. data/app/assets/icons/heroicons/solid/code.svg +3 -0
  290. data/app/assets/icons/heroicons/solid/cog.svg +3 -0
  291. data/app/assets/icons/heroicons/solid/collection.svg +3 -0
  292. data/app/assets/icons/heroicons/solid/color-swatch.svg +3 -0
  293. data/app/assets/icons/heroicons/solid/credit-card.svg +4 -0
  294. data/app/assets/icons/heroicons/solid/cube-transparent.svg +3 -0
  295. data/app/assets/icons/heroicons/solid/cube.svg +3 -0
  296. data/app/assets/icons/heroicons/solid/currency-bangladeshi.svg +3 -0
  297. data/app/assets/icons/heroicons/solid/currency-dollar.svg +4 -0
  298. data/app/assets/icons/heroicons/solid/currency-euro.svg +3 -0
  299. data/app/assets/icons/heroicons/solid/currency-pound.svg +3 -0
  300. data/app/assets/icons/heroicons/solid/currency-rupee.svg +3 -0
  301. data/app/assets/icons/heroicons/solid/currency-yen.svg +3 -0
  302. data/app/assets/icons/heroicons/solid/cursor-click.svg +3 -0
  303. data/app/assets/icons/heroicons/solid/database.svg +5 -0
  304. data/app/assets/icons/heroicons/solid/desktop-computer.svg +3 -0
  305. data/app/assets/icons/heroicons/solid/device-mobile.svg +3 -0
  306. data/app/assets/icons/heroicons/solid/device-tablet.svg +3 -0
  307. data/app/assets/icons/heroicons/solid/document-add.svg +3 -0
  308. data/app/assets/icons/heroicons/solid/document-download.svg +3 -0
  309. data/app/assets/icons/heroicons/solid/document-duplicate.svg +4 -0
  310. data/app/assets/icons/heroicons/solid/document-remove.svg +3 -0
  311. data/app/assets/icons/heroicons/solid/document-report.svg +3 -0
  312. data/app/assets/icons/heroicons/solid/document-search.svg +4 -0
  313. data/app/assets/icons/heroicons/solid/document-text.svg +3 -0
  314. data/app/assets/icons/heroicons/solid/document.svg +3 -0
  315. data/app/assets/icons/heroicons/solid/dots-circle-horizontal.svg +3 -0
  316. data/app/assets/icons/heroicons/solid/dots-horizontal.svg +3 -0
  317. data/app/assets/icons/heroicons/solid/dots-vertical.svg +3 -0
  318. data/app/assets/icons/heroicons/solid/download.svg +3 -0
  319. data/app/assets/icons/heroicons/solid/duplicate.svg +4 -0
  320. data/app/assets/icons/heroicons/solid/emoji-happy.svg +3 -0
  321. data/app/assets/icons/heroicons/solid/emoji-sad.svg +3 -0
  322. data/app/assets/icons/heroicons/solid/exclamation-circle.svg +3 -0
  323. data/app/assets/icons/heroicons/solid/exclamation.svg +3 -0
  324. data/app/assets/icons/heroicons/solid/external-link.svg +4 -0
  325. data/app/assets/icons/heroicons/solid/eye-off.svg +4 -0
  326. data/app/assets/icons/heroicons/solid/eye.svg +4 -0
  327. data/app/assets/icons/heroicons/solid/fast-forward.svg +3 -0
  328. data/app/assets/icons/heroicons/solid/film.svg +3 -0
  329. data/app/assets/icons/heroicons/solid/filter.svg +3 -0
  330. data/app/assets/icons/heroicons/solid/finger-print.svg +5 -0
  331. data/app/assets/icons/heroicons/solid/fire.svg +3 -0
  332. data/app/assets/icons/heroicons/solid/flag.svg +3 -0
  333. data/app/assets/icons/heroicons/solid/folder-add.svg +4 -0
  334. data/app/assets/icons/heroicons/solid/folder-download.svg +4 -0
  335. data/app/assets/icons/heroicons/solid/folder-open.svg +4 -0
  336. data/app/assets/icons/heroicons/solid/folder-remove.svg +4 -0
  337. data/app/assets/icons/heroicons/solid/folder.svg +3 -0
  338. data/app/assets/icons/heroicons/solid/gift.svg +4 -0
  339. data/app/assets/icons/heroicons/solid/globe-alt.svg +3 -0
  340. data/app/assets/icons/heroicons/solid/globe.svg +3 -0
  341. data/app/assets/icons/heroicons/solid/hand.svg +3 -0
  342. data/app/assets/icons/heroicons/solid/hashtag.svg +3 -0
  343. data/app/assets/icons/heroicons/solid/heart.svg +3 -0
  344. data/app/assets/icons/heroicons/solid/home.svg +3 -0
  345. data/app/assets/icons/heroicons/solid/identification.svg +3 -0
  346. data/app/assets/icons/heroicons/solid/inbox-in.svg +4 -0
  347. data/app/assets/icons/heroicons/solid/inbox.svg +3 -0
  348. data/app/assets/icons/heroicons/solid/information-circle.svg +3 -0
  349. data/app/assets/icons/heroicons/solid/key.svg +3 -0
  350. data/app/assets/icons/heroicons/solid/library.svg +3 -0
  351. data/app/assets/icons/heroicons/solid/light-bulb.svg +3 -0
  352. data/app/assets/icons/heroicons/solid/lightning-bolt.svg +3 -0
  353. data/app/assets/icons/heroicons/solid/link.svg +3 -0
  354. data/app/assets/icons/heroicons/solid/location-marker.svg +3 -0
  355. data/app/assets/icons/heroicons/solid/lock-closed.svg +3 -0
  356. data/app/assets/icons/heroicons/solid/lock-open.svg +3 -0
  357. data/app/assets/icons/heroicons/solid/login.svg +3 -0
  358. data/app/assets/icons/heroicons/solid/logout.svg +3 -0
  359. data/app/assets/icons/heroicons/solid/mail-open.svg +3 -0
  360. data/app/assets/icons/heroicons/solid/mail.svg +4 -0
  361. data/app/assets/icons/heroicons/solid/map.svg +3 -0
  362. data/app/assets/icons/heroicons/solid/menu-alt-1.svg +3 -0
  363. data/app/assets/icons/heroicons/solid/menu-alt-2.svg +3 -0
  364. data/app/assets/icons/heroicons/solid/menu-alt-3.svg +3 -0
  365. data/app/assets/icons/heroicons/solid/menu-alt-4.svg +3 -0
  366. data/app/assets/icons/heroicons/solid/menu.svg +3 -0
  367. data/app/assets/icons/heroicons/solid/microphone.svg +3 -0
  368. data/app/assets/icons/heroicons/solid/minus-circle.svg +3 -0
  369. data/app/assets/icons/heroicons/solid/minus-sm.svg +3 -0
  370. data/app/assets/icons/heroicons/solid/minus.svg +3 -0
  371. data/app/assets/icons/heroicons/solid/moon.svg +3 -0
  372. data/app/assets/icons/heroicons/solid/music-note.svg +3 -0
  373. data/app/assets/icons/heroicons/solid/newspaper.svg +4 -0
  374. data/app/assets/icons/heroicons/solid/office-building.svg +3 -0
  375. data/app/assets/icons/heroicons/solid/paper-airplane.svg +3 -0
  376. data/app/assets/icons/heroicons/solid/paper-clip.svg +3 -0
  377. data/app/assets/icons/heroicons/solid/pause.svg +3 -0
  378. data/app/assets/icons/heroicons/solid/pencil-alt.svg +4 -0
  379. data/app/assets/icons/heroicons/solid/pencil.svg +3 -0
  380. data/app/assets/icons/heroicons/solid/phone-incoming.svg +4 -0
  381. data/app/assets/icons/heroicons/solid/phone-missed-call.svg +4 -0
  382. data/app/assets/icons/heroicons/solid/phone-outgoing.svg +4 -0
  383. data/app/assets/icons/heroicons/solid/phone.svg +3 -0
  384. data/app/assets/icons/heroicons/solid/photograph.svg +3 -0
  385. data/app/assets/icons/heroicons/solid/play.svg +3 -0
  386. data/app/assets/icons/heroicons/solid/plus-circle.svg +3 -0
  387. data/app/assets/icons/heroicons/solid/plus-sm.svg +3 -0
  388. data/app/assets/icons/heroicons/solid/plus.svg +3 -0
  389. data/app/assets/icons/heroicons/solid/presentation-chart-bar.svg +3 -0
  390. data/app/assets/icons/heroicons/solid/presentation-chart-line.svg +3 -0
  391. data/app/assets/icons/heroicons/solid/printer.svg +3 -0
  392. data/app/assets/icons/heroicons/solid/puzzle.svg +3 -0
  393. data/app/assets/icons/heroicons/solid/qrcode.svg +4 -0
  394. data/app/assets/icons/heroicons/solid/question-mark-circle.svg +3 -0
  395. data/app/assets/icons/heroicons/solid/receipt-refund.svg +3 -0
  396. data/app/assets/icons/heroicons/solid/receipt-tax.svg +3 -0
  397. data/app/assets/icons/heroicons/solid/refresh.svg +3 -0
  398. data/app/assets/icons/heroicons/solid/reply.svg +3 -0
  399. data/app/assets/icons/heroicons/solid/rewind.svg +3 -0
  400. data/app/assets/icons/heroicons/solid/rss.svg +4 -0
  401. data/app/assets/icons/heroicons/solid/save-as.svg +4 -0
  402. data/app/assets/icons/heroicons/solid/save.svg +3 -0
  403. data/app/assets/icons/heroicons/solid/scale.svg +3 -0
  404. data/app/assets/icons/heroicons/solid/scissors.svg +4 -0
  405. data/app/assets/icons/heroicons/solid/search-circle.svg +4 -0
  406. data/app/assets/icons/heroicons/solid/search.svg +3 -0
  407. data/app/assets/icons/heroicons/solid/selector.svg +3 -0
  408. data/app/assets/icons/heroicons/solid/server.svg +3 -0
  409. data/app/assets/icons/heroicons/solid/share.svg +3 -0
  410. data/app/assets/icons/heroicons/solid/shield-check.svg +3 -0
  411. data/app/assets/icons/heroicons/solid/shield-exclamation.svg +3 -0
  412. data/app/assets/icons/heroicons/solid/shopping-bag.svg +3 -0
  413. data/app/assets/icons/heroicons/solid/shopping-cart.svg +3 -0
  414. data/app/assets/icons/heroicons/solid/sort-ascending.svg +3 -0
  415. data/app/assets/icons/heroicons/solid/sort-descending.svg +3 -0
  416. data/app/assets/icons/heroicons/solid/sparkles.svg +3 -0
  417. data/app/assets/icons/heroicons/solid/speakerphone.svg +3 -0
  418. data/app/assets/icons/heroicons/solid/star.svg +3 -0
  419. data/app/assets/icons/heroicons/solid/status-offline.svg +3 -0
  420. data/app/assets/icons/heroicons/solid/status-online.svg +3 -0
  421. data/app/assets/icons/heroicons/solid/stop.svg +3 -0
  422. data/app/assets/icons/heroicons/solid/sun.svg +3 -0
  423. data/app/assets/icons/heroicons/solid/support.svg +3 -0
  424. data/app/assets/icons/heroicons/solid/switch-horizontal.svg +3 -0
  425. data/app/assets/icons/heroicons/solid/switch-vertical.svg +3 -0
  426. data/app/assets/icons/heroicons/solid/table.svg +3 -0
  427. data/app/assets/icons/heroicons/solid/tag.svg +3 -0
  428. data/app/assets/icons/heroicons/solid/template.svg +3 -0
  429. data/app/assets/icons/heroicons/solid/terminal.svg +3 -0
  430. data/app/assets/icons/heroicons/solid/thumb-down.svg +3 -0
  431. data/app/assets/icons/heroicons/solid/thumb-up.svg +3 -0
  432. data/app/assets/icons/heroicons/solid/ticket.svg +3 -0
  433. data/app/assets/icons/heroicons/solid/translate.svg +3 -0
  434. data/app/assets/icons/heroicons/solid/trash.svg +3 -0
  435. data/app/assets/icons/heroicons/solid/trending-down.svg +3 -0
  436. data/app/assets/icons/heroicons/solid/trending-up.svg +3 -0
  437. data/app/assets/icons/heroicons/solid/truck.svg +4 -0
  438. data/app/assets/icons/heroicons/solid/upload.svg +3 -0
  439. data/app/assets/icons/heroicons/solid/user-add.svg +3 -0
  440. data/app/assets/icons/heroicons/solid/user-circle.svg +3 -0
  441. data/app/assets/icons/heroicons/solid/user-group.svg +3 -0
  442. data/app/assets/icons/heroicons/solid/user-remove.svg +3 -0
  443. data/app/assets/icons/heroicons/solid/user.svg +3 -0
  444. data/app/assets/icons/heroicons/solid/users.svg +3 -0
  445. data/app/assets/icons/heroicons/solid/variable.svg +3 -0
  446. data/app/assets/icons/heroicons/solid/video-camera.svg +3 -0
  447. data/app/assets/icons/heroicons/solid/view-boards.svg +3 -0
  448. data/app/assets/icons/heroicons/solid/view-grid-add.svg +3 -0
  449. data/app/assets/icons/heroicons/solid/view-grid.svg +3 -0
  450. data/app/assets/icons/heroicons/solid/view-list.svg +3 -0
  451. data/app/assets/icons/heroicons/solid/volume-off.svg +3 -0
  452. data/app/assets/icons/heroicons/solid/volume-up.svg +3 -0
  453. data/app/assets/icons/heroicons/solid/wifi.svg +3 -0
  454. data/app/assets/icons/heroicons/solid/x-circle.svg +3 -0
  455. data/app/assets/icons/heroicons/solid/x.svg +3 -0
  456. data/app/assets/icons/heroicons/solid/zoom-in.svg +4 -0
  457. data/app/assets/icons/heroicons/solid/zoom-out.svg +4 -0
  458. data/app/assets/images/spina/favicon.png +0 -0
  459. data/app/assets/images/spina/spina.png +0 -0
  460. data/app/assets/images/spina/spina.svg +9 -1
  461. data/app/assets/javascripts/spina/controllers/attachment_picker_controller.js +15 -0
  462. data/app/assets/javascripts/spina/controllers/autofocus_controller.js +9 -0
  463. data/app/assets/javascripts/spina/controllers/button_controller.js +37 -0
  464. data/app/assets/javascripts/spina/controllers/confetti_controller.js +43 -0
  465. data/app/assets/javascripts/spina/controllers/confirm_controller.js +62 -0
  466. data/app/assets/javascripts/spina/controllers/delegate_click_controller.js +13 -0
  467. data/app/assets/javascripts/spina/controllers/exists_controller.js +11 -0
  468. data/app/assets/javascripts/spina/controllers/form_controller.js +10 -0
  469. data/app/assets/javascripts/spina/controllers/hotkeys_controller.js +21 -0
  470. data/app/assets/javascripts/spina/controllers/image_collection_controller.js +37 -0
  471. data/app/assets/javascripts/spina/controllers/image_fade_in_controller.js +20 -0
  472. data/app/assets/javascripts/spina/controllers/infinite_scroll_controller.js +33 -0
  473. data/app/assets/javascripts/spina/controllers/loading_button_controller.js +40 -0
  474. data/app/assets/javascripts/spina/controllers/media_picker_controller.js +46 -0
  475. data/app/assets/javascripts/spina/controllers/media_picker_modal_controller.js +34 -0
  476. data/app/assets/javascripts/spina/controllers/modal_controller.js +22 -0
  477. data/app/assets/javascripts/spina/controllers/navigation_controller.js +77 -0
  478. data/app/assets/javascripts/spina/controllers/parent_pages_controller.js +16 -0
  479. data/app/assets/javascripts/spina/controllers/repeater_controller.js +71 -0
  480. data/app/assets/javascripts/spina/controllers/reveal_controller.js +1 -0
  481. data/app/assets/javascripts/spina/controllers/select_placeholder_controller.js +27 -0
  482. data/app/assets/javascripts/spina/controllers/selectable_controller.js +44 -0
  483. data/app/assets/javascripts/spina/controllers/shortcuts_controller.js +15 -0
  484. data/app/assets/javascripts/spina/controllers/sortable_controller.js +39 -0
  485. data/app/assets/javascripts/spina/controllers/switch_controller.js +27 -0
  486. data/app/assets/javascripts/spina/controllers/tabs_controller.js +70 -0
  487. data/app/assets/javascripts/spina/controllers/toggle_controller.js +12 -0
  488. data/app/assets/javascripts/spina/controllers/trix_controller.js +87 -0
  489. data/app/assets/javascripts/spina/controllers/unique_id_controller.js +31 -0
  490. data/app/assets/javascripts/spina/importmap.json.erb +5 -0
  491. data/app/assets/javascripts/spina/libraries/canvas-confetti.js +1 -0
  492. data/app/assets/javascripts/spina/libraries/canvas-confetti@1.3.2.js +592 -0
  493. data/app/assets/javascripts/spina/libraries/form-request-submit-polyfill.js +1 -0
  494. data/app/assets/javascripts/spina/libraries/form-request-submit-polyfill@2.0.0.js +27 -0
  495. data/app/assets/javascripts/spina/libraries/hotkeys.js +1 -0
  496. data/app/assets/javascripts/spina/libraries/hotkeys@3.8.7.js +596 -0
  497. data/app/assets/javascripts/spina/libraries/sortablejs.js +1 -0
  498. data/app/assets/javascripts/spina/libraries/sortablejs@1.13.0.js +3711 -0
  499. data/app/assets/javascripts/spina/libraries/stimulus-reveal@1.2.4.js +388 -0
  500. data/app/assets/javascripts/spina/libraries/trix.js +9 -0
  501. data/app/assets/javascripts/spina/libraries/trix@1.3.1.js +21 -0
  502. data/app/assets/stylesheets/spina/_animate.css +4072 -0
  503. data/app/assets/stylesheets/spina/_fonts.scss +114 -0
  504. data/app/assets/stylesheets/spina/_tailwind.css +199133 -0
  505. data/app/assets/stylesheets/spina/application.sass +3 -4
  506. data/app/assets/stylesheets/spina/tailwind/custom.css +193 -0
  507. data/app/components/spina/application_component.rb +4 -0
  508. data/app/components/spina/forms/group_component.html.erb +14 -0
  509. data/app/components/spina/forms/group_component.rb +13 -0
  510. data/app/components/spina/forms/label_component.rb +17 -0
  511. data/app/components/spina/forms/password_field_component.html.erb +14 -0
  512. data/app/components/spina/forms/password_field_component.rb +6 -0
  513. data/app/components/spina/forms/switch_component.html.erb +7 -0
  514. data/app/components/spina/forms/switch_component.rb +13 -0
  515. data/app/components/spina/forms/text_field_component.html.erb +14 -0
  516. data/app/components/spina/forms/text_field_component.rb +50 -0
  517. data/app/components/spina/forms/trix_toolbar_component.html.erb +90 -0
  518. data/app/components/spina/forms/trix_toolbar_component.rb +11 -0
  519. data/app/components/spina/hooks/hook_component.rb +21 -0
  520. data/app/components/spina/hooks/partial_component.rb +21 -0
  521. data/app/components/spina/main_navigation/link_component.html.erb +5 -0
  522. data/app/components/spina/main_navigation/link_component.rb +21 -0
  523. data/app/components/spina/main_navigation/sub_nav_component.html.erb +18 -0
  524. data/app/components/spina/main_navigation/sub_nav_component.rb +33 -0
  525. data/app/components/spina/media_picker/image_component.html.erb +18 -0
  526. data/app/components/spina/media_picker/image_component.rb +11 -0
  527. data/app/components/spina/media_picker/modal_component.html.erb +74 -0
  528. data/app/components/spina/media_picker/modal_component.rb +29 -0
  529. data/app/components/spina/pages/actions_component.html.erb +65 -0
  530. data/app/components/spina/pages/actions_component.rb +12 -0
  531. data/app/components/spina/pages/list_component.html.erb +8 -0
  532. data/app/components/spina/pages/list_component.rb +13 -0
  533. data/app/components/spina/pages/location_component.html.erb +10 -0
  534. data/app/components/spina/pages/location_component.rb +29 -0
  535. data/app/components/spina/pages/page_component.html.erb +25 -0
  536. data/app/components/spina/pages/page_component.rb +43 -0
  537. data/app/components/spina/pages/page_select_component.html.erb +1 -0
  538. data/app/components/spina/pages/page_select_component.rb +21 -0
  539. data/app/components/spina/pages/tab_button_component.html.erb +3 -0
  540. data/app/components/spina/pages/tab_button_component.rb +11 -0
  541. data/app/components/spina/pages/translations_component.html.erb +41 -0
  542. data/app/components/spina/pages/translations_component.rb +32 -0
  543. data/app/components/spina/user_interface/dropdown_button_component.rb +23 -0
  544. data/app/components/spina/user_interface/dropdown_component.html.erb +5 -0
  545. data/app/components/spina/user_interface/dropdown_component.rb +28 -0
  546. data/app/components/spina/user_interface/flash_message_component.html.erb +3 -0
  547. data/app/components/spina/user_interface/flash_message_component.rb +25 -0
  548. data/app/components/spina/user_interface/header_component.html.erb +24 -0
  549. data/app/components/spina/user_interface/header_component.rb +9 -0
  550. data/app/components/spina/user_interface/modal_component.html.erb +11 -0
  551. data/app/components/spina/user_interface/modal_component.rb +11 -0
  552. data/app/components/spina/user_interface/tab_link_component.html.erb +3 -0
  553. data/app/components/spina/user_interface/tab_link_component.rb +22 -0
  554. data/app/controllers/concerns/spina/current_methods.rb +11 -3
  555. data/app/controllers/spina/admin/accounts_controller.rb +13 -21
  556. data/app/controllers/spina/admin/admin_controller.rb +23 -12
  557. data/app/controllers/spina/admin/attachments_controller.rb +27 -6
  558. data/app/controllers/spina/admin/images_controller.rb +49 -13
  559. data/app/controllers/spina/admin/layout_controller.rb +41 -0
  560. data/app/controllers/spina/admin/media_folders_controller.rb +10 -13
  561. data/app/controllers/spina/admin/media_picker_controller.rb +6 -30
  562. data/app/controllers/spina/admin/move_pages_controller.rb +24 -0
  563. data/app/controllers/spina/admin/navigation_items_controller.rb +36 -0
  564. data/app/controllers/spina/admin/navigations_controller.rb +19 -16
  565. data/app/controllers/spina/admin/pages_controller.rb +68 -65
  566. data/app/controllers/spina/admin/parent_pages_controller.rb +10 -0
  567. data/app/controllers/spina/admin/password_resets_controller.rb +3 -3
  568. data/app/controllers/spina/admin/resources_controller.rb +4 -7
  569. data/app/controllers/spina/admin/sessions_controller.rb +4 -7
  570. data/app/controllers/spina/admin/settings_controller.rb +30 -29
  571. data/app/controllers/spina/admin/theme_controller.rb +23 -0
  572. data/app/controllers/spina/admin/users_controller.rb +22 -13
  573. data/app/controllers/spina/pages_controller.rb +1 -1
  574. data/app/helpers/spina/admin/icons_helper.rb +26 -0
  575. data/app/helpers/spina/admin/images_helper.rb +18 -0
  576. data/app/helpers/spina/admin/pages_helper.rb +21 -48
  577. data/app/helpers/spina/images_helper.rb +30 -2
  578. data/app/helpers/spina/spina_helper.rb +16 -0
  579. data/app/jobs/spina/application_job.rb +4 -0
  580. data/app/jobs/spina/resource_pages_update_job.rb +11 -0
  581. data/app/models/concerns/spina/gravatar.rb +20 -0
  582. data/app/models/concerns/spina/translated_content.rb +8 -7
  583. data/app/models/spina/account.rb +2 -0
  584. data/app/models/spina/application_record.rb +6 -0
  585. data/app/models/spina/attachment.rb +5 -1
  586. data/app/models/spina/current.rb +2 -0
  587. data/app/models/spina/navigation.rb +1 -0
  588. data/app/models/spina/navigation_item.rb +1 -1
  589. data/app/models/spina/page.rb +9 -4
  590. data/app/models/spina/parts/base.rb +6 -0
  591. data/app/models/spina/parts/image.rb +2 -0
  592. data/app/models/spina/resource.rb +12 -2
  593. data/app/models/spina/user.rb +4 -16
  594. data/app/views/layouts/spina/admin/admin.html.erb +18 -0
  595. data/app/views/layouts/spina/admin/application.html.erb +31 -0
  596. data/app/views/layouts/spina/admin/sessions.html.erb +1 -0
  597. data/app/views/spina/admin/accounts/edit.html.erb +49 -0
  598. data/app/views/spina/admin/attachments/_attachment.html.erb +28 -0
  599. data/app/views/spina/admin/attachments/edit.html.erb +16 -0
  600. data/app/views/spina/admin/attachments/index.html.erb +46 -0
  601. data/app/views/spina/admin/attachments/show.html.erb +1 -0
  602. data/app/views/spina/admin/images/_image.html.erb +65 -0
  603. data/app/views/spina/admin/images/edit.html.erb +16 -0
  604. data/app/views/spina/admin/images/index.html.erb +73 -0
  605. data/app/views/spina/admin/images/show.html.erb +1 -0
  606. data/app/views/spina/admin/images/update.turbo_stream.erb +5 -0
  607. data/app/views/spina/admin/layout/edit.html.erb +34 -0
  608. data/app/views/spina/admin/media_folders/_form.html.erb +30 -0
  609. data/app/views/spina/admin/media_folders/_media_folder.html.erb +18 -0
  610. data/app/views/spina/admin/media_folders/edit.html.erb +3 -0
  611. data/app/views/spina/admin/media_folders/new.html.erb +3 -0
  612. data/app/views/spina/admin/media_picker/show.html.erb +1 -0
  613. data/app/views/spina/admin/move_pages/new.html.erb +32 -0
  614. data/app/views/spina/admin/navigation_items/_form.html.erb +29 -0
  615. data/app/views/spina/admin/navigation_items/_navigation_item.html.erb +36 -0
  616. data/app/views/spina/admin/navigation_items/new.html.erb +3 -0
  617. data/app/views/spina/admin/navigations/_navigation.html.erb +1 -0
  618. data/app/views/spina/admin/navigations/edit.html.erb +32 -0
  619. data/app/views/spina/admin/navigations/index.html.erb +7 -0
  620. data/app/views/spina/admin/pages/_button_advanced.html.erb +4 -0
  621. data/app/views/spina/admin/pages/_button_page_content.html.erb +4 -0
  622. data/app/views/spina/admin/pages/_button_search_engines.html.erb +5 -0
  623. data/app/views/spina/admin/pages/_form.html.erb +36 -0
  624. data/app/views/spina/admin/pages/_form_advanced.html.erb +55 -0
  625. data/app/views/spina/admin/pages/_form_page_content.html.erb +8 -0
  626. data/app/views/spina/admin/pages/_form_search_engines.html.erb +45 -0
  627. data/app/views/spina/admin/pages/_new_page_form.html.erb +35 -0
  628. data/app/views/spina/admin/pages/edit.html.erb +1 -0
  629. data/app/views/spina/admin/pages/edit_content.html.erb +11 -0
  630. data/app/views/spina/admin/pages/edit_template.html.erb +36 -0
  631. data/app/views/spina/admin/pages/index.html.erb +66 -0
  632. data/app/views/spina/admin/pages/new.html.erb +3 -0
  633. data/app/views/spina/admin/parent_pages/index.html.erb +3 -0
  634. data/app/views/spina/admin/parts/attachments/_form.html.erb +8 -0
  635. data/app/views/spina/admin/parts/image_collections/_fields.html.erb +16 -0
  636. data/app/views/spina/admin/parts/image_collections/_form.html.erb +30 -0
  637. data/app/views/spina/admin/parts/images/_form.html.erb +32 -0
  638. data/app/views/spina/admin/parts/lines/_form.html.erb +6 -0
  639. data/app/views/spina/admin/parts/multi_lines/_form.html.erb +4 -0
  640. data/app/views/spina/admin/parts/options/_form.html.erb +5 -0
  641. data/app/views/spina/admin/parts/repeaters/_fields.html.erb +18 -0
  642. data/app/views/spina/admin/parts/repeaters/_form.html.erb +37 -0
  643. data/app/views/spina/admin/parts/texts/_form.html.erb +12 -0
  644. data/app/views/spina/admin/password_resets/edit.html.erb +22 -0
  645. data/app/views/spina/admin/password_resets/new.html.erb +21 -0
  646. data/app/views/spina/admin/resources/edit.html.erb +55 -0
  647. data/app/views/spina/admin/sessions/new.html.erb +24 -0
  648. data/app/views/spina/admin/settings/_string_field.html.erb +4 -0
  649. data/app/views/spina/admin/settings/_text_field.html.erb +5 -0
  650. data/app/views/spina/admin/settings/_wysiwyg_field.html.erb +13 -0
  651. data/app/views/spina/admin/settings/edit.html.erb +24 -0
  652. data/app/views/spina/admin/shared/_flash.html.erb +5 -0
  653. data/app/views/spina/admin/shared/_navigation.html.erb +66 -0
  654. data/app/views/spina/admin/theme/edit.html.erb +21 -0
  655. data/app/views/spina/admin/users/_form.html.erb +52 -0
  656. data/app/views/spina/admin/users/_user.html.erb +36 -0
  657. data/app/views/spina/admin/users/edit.html.erb +1 -0
  658. data/app/views/spina/admin/users/index.html.erb +15 -0
  659. data/app/views/spina/admin/users/new.html.erb +1 -0
  660. data/app/views/spina/user_mailer/forgot_password.html.erb +1 -1
  661. data/app/views/spina/user_mailer/forgot_password.txt.erb +1 -1
  662. data/config/locales/TH.yml +98 -2
  663. data/config/locales/bg.yml +98 -2
  664. data/config/locales/de.yml +184 -78
  665. data/config/locales/en.yml +105 -2
  666. data/config/locales/es.yml +139 -41
  667. data/config/locales/fr.yml +98 -2
  668. data/config/locales/id.yml +98 -2
  669. data/config/locales/it.yml +107 -11
  670. data/config/locales/nl.yml +103 -5
  671. data/config/locales/pl.yml +98 -2
  672. data/config/locales/pt-BR.yml +98 -2
  673. data/config/locales/ro.yml +98 -2
  674. data/config/locales/ru.yml +98 -2
  675. data/config/locales/sv.yml +98 -2
  676. data/config/locales/tr.yml +98 -2
  677. data/config/locales/zh-CN.yml +98 -2
  678. data/config/routes.rb +21 -24
  679. data/lib/generators/spina/install_generator.rb +0 -1
  680. data/lib/generators/spina/templates/app/views/default/pages/homepage.html.erb +2 -0
  681. data/lib/generators/spina/templates/app/views/default/pages/show.html.erb +3 -0
  682. data/lib/generators/spina/templates/app/views/default/shared/_navigation.html.erb +2 -0
  683. data/lib/generators/spina/templates/app/views/demo/pages/demo.html.erb +25 -0
  684. data/lib/generators/spina/templates/app/views/demo/pages/homepage.html.erb +3 -0
  685. data/lib/generators/spina/templates/app/views/demo/pages/show.html.erb +3 -0
  686. data/lib/generators/spina/templates/app/views/demo/shared/_languages.html.erb +5 -0
  687. data/lib/generators/spina/templates/app/views/demo/shared/_navigation.html.erb +2 -0
  688. data/lib/generators/spina/templates/app/views/layouts/default/application.html.erb +12 -0
  689. data/lib/generators/spina/templates/app/views/layouts/demo/application.html.erb +13 -0
  690. data/lib/generators/spina/templates/config/initializers/mobility.rb +1 -0
  691. data/lib/generators/spina/templates/config/initializers/spina.rb +12 -3
  692. data/lib/generators/spina/templates/config/initializers/themes/default.rb +59 -37
  693. data/lib/generators/spina/templates/config/initializers/themes/demo.rb +63 -64
  694. data/lib/spina.rb +45 -4
  695. data/lib/spina/admin_sectionable.rb +23 -0
  696. data/lib/spina/attr_json_monkeypatch.rb +28 -0
  697. data/lib/spina/engine.rb +9 -6
  698. data/lib/spina/importmap_helper.rb +37 -0
  699. data/lib/spina/plugin.rb +7 -1
  700. data/lib/spina/railtie.rb +5 -1
  701. data/lib/spina/tailwind_purger.rb +147 -0
  702. data/lib/spina/theme.rb +14 -5
  703. data/lib/spina/version.rb +1 -1
  704. data/lib/tasks/spina_tasks.rake +36 -0
  705. metadata +662 -215
  706. data/app/assets/config/spina_manifest.js +0 -5
  707. data/app/assets/fonts/spina/ics_spina.eot +0 -0
  708. data/app/assets/fonts/spina/ics_spina.svg +0 -380
  709. data/app/assets/fonts/spina/ics_spina.ttf +0 -0
  710. data/app/assets/fonts/spina/ics_spina.woff +0 -0
  711. data/app/assets/fonts/spina/ics_spina.woff2 +0 -0
  712. data/app/assets/images/spina/arrow-left.svg +0 -1
  713. data/app/assets/images/spina/arrow-right.svg +0 -1
  714. data/app/assets/images/spina/datepicker.svg +0 -1
  715. data/app/assets/images/spina/divider.svg +0 -1
  716. data/app/assets/images/spina/media_folder_placeholder.svg +0 -1
  717. data/app/assets/javascripts/spina/admin/application.js +0 -48
  718. data/app/assets/javascripts/spina/admin/confirm_delete.coffee.erb +0 -24
  719. data/app/assets/javascripts/spina/admin/controllers/attachment_picker_controller.js +0 -15
  720. data/app/assets/javascripts/spina/admin/controllers/gallery_select_controller.js +0 -52
  721. data/app/assets/javascripts/spina/admin/controllers/image_form_controller.js +0 -22
  722. data/app/assets/javascripts/spina/admin/controllers/infinite_scroll_controller.js +0 -38
  723. data/app/assets/javascripts/spina/admin/controllers/media_picker_controller.js +0 -171
  724. data/app/assets/javascripts/spina/admin/controllers/modal_controller.js +0 -18
  725. data/app/assets/javascripts/spina/admin/controllers/page_collapse_controller.js +0 -35
  726. data/app/assets/javascripts/spina/admin/controllers/repeater_form_controller.js +0 -38
  727. data/app/assets/javascripts/spina/admin/dropdown.coffee +0 -75
  728. data/app/assets/javascripts/spina/admin/forms.coffee +0 -7
  729. data/app/assets/javascripts/spina/admin/media_gallery.coffee +0 -62
  730. data/app/assets/javascripts/spina/admin/modal.coffee +0 -53
  731. data/app/assets/javascripts/spina/admin/navigation.coffee +0 -45
  732. data/app/assets/javascripts/spina/admin/notifications.coffee +0 -7
  733. data/app/assets/javascripts/spina/admin/pages.coffee.erb +0 -65
  734. data/app/assets/javascripts/spina/admin/scaffold.coffee +0 -87
  735. data/app/assets/javascripts/spina/admin/switch.coffee +0 -43
  736. data/app/assets/javascripts/spina/admin/tabs.coffee +0 -13
  737. data/app/assets/javascripts/spina/admin/trix.coffee.erb +0 -114
  738. data/app/assets/javascripts/spina/admin/uploads.coffee +0 -35
  739. data/app/assets/stylesheets/spina.sass +0 -564
  740. data/app/assets/stylesheets/spina/_admin_editing.sass +0 -21
  741. data/app/assets/stylesheets/spina/_buttons.sass +0 -393
  742. data/app/assets/stylesheets/spina/_configuration.sass.erb +0 -23
  743. data/app/assets/stylesheets/spina/_custom_animations.sass +0 -61
  744. data/app/assets/stylesheets/spina/_fonts.sass +0 -54
  745. data/app/assets/stylesheets/spina/_forms.sass +0 -893
  746. data/app/assets/stylesheets/spina/_gallery.sass +0 -405
  747. data/app/assets/stylesheets/spina/_ics_spina.scss +0 -70
  748. data/app/assets/stylesheets/spina/_labels.sass +0 -30
  749. data/app/assets/stylesheets/spina/_login.sass +0 -52
  750. data/app/assets/stylesheets/spina/_media_picker.sass +0 -133
  751. data/app/assets/stylesheets/spina/_mixins.sass +0 -5
  752. data/app/assets/stylesheets/spina/_modal.sass +0 -195
  753. data/app/assets/stylesheets/spina/_normalize.scss +0 -396
  754. data/app/assets/stylesheets/spina/_notifications.sass +0 -68
  755. data/app/assets/stylesheets/spina/_pages.sass +0 -131
  756. data/app/assets/stylesheets/spina/_sortable_lists.sass +0 -190
  757. data/app/assets/stylesheets/spina/_tables.sass +0 -308
  758. data/app/assets/stylesheets/spina/_trix_custom.sass +0 -224
  759. data/app/assets/stylesheets/spina/_wizard.sass +0 -122
  760. data/app/assets/stylesheets/spina/admin/application.css.sass +0 -7
  761. data/app/assets/stylesheets/spina_front_end.sass +0 -19
  762. data/app/helpers/spina/admin/admin_helper.rb +0 -11
  763. data/app/helpers/spina/admin_nav_helper.rb +0 -7
  764. data/app/views/layouts/spina/admin/admin.html.haml +0 -34
  765. data/app/views/layouts/spina/admin/media_library.html.haml +0 -17
  766. data/app/views/layouts/spina/admin/pages.html.haml +0 -34
  767. data/app/views/layouts/spina/admin/resources.html.haml +0 -10
  768. data/app/views/layouts/spina/login.html.haml +0 -18
  769. data/app/views/spina/admin/accounts/_form.html.haml +0 -54
  770. data/app/views/spina/admin/accounts/analytics.html.haml +0 -28
  771. data/app/views/spina/admin/accounts/edit.html.haml +0 -1
  772. data/app/views/spina/admin/accounts/social.html.haml +0 -52
  773. data/app/views/spina/admin/accounts/style.html.haml +0 -35
  774. data/app/views/spina/admin/attachments/_attachment.html.haml +0 -7
  775. data/app/views/spina/admin/attachments/create.js.erb +0 -1
  776. data/app/views/spina/admin/attachments/index.html.haml +0 -16
  777. data/app/views/spina/admin/images/_form.html.haml +0 -5
  778. data/app/views/spina/admin/images/_image.html.haml +0 -8
  779. data/app/views/spina/admin/images/create.js.erb +0 -8
  780. data/app/views/spina/admin/images/index.html.haml +0 -24
  781. data/app/views/spina/admin/images/index.js.erb +0 -7
  782. data/app/views/spina/admin/media_folders/_form.html.haml +0 -17
  783. data/app/views/spina/admin/media_folders/_media_folder.html.haml +0 -8
  784. data/app/views/spina/admin/media_folders/edit.js.erb +0 -1
  785. data/app/views/spina/admin/media_folders/new.js.erb +0 -1
  786. data/app/views/spina/admin/media_folders/show.html.haml +0 -18
  787. data/app/views/spina/admin/media_picker/_image.html.haml +0 -3
  788. data/app/views/spina/admin/media_picker/_media_picker.html.haml +0 -32
  789. data/app/views/spina/admin/media_picker/_media_picker_grid.html.haml +0 -25
  790. data/app/views/spina/admin/media_picker/_modal.html.haml +0 -63
  791. data/app/views/spina/admin/media_picker/infinite_scroll.js.erb +0 -5
  792. data/app/views/spina/admin/media_picker/select.js.erb +0 -33
  793. data/app/views/spina/admin/media_picker/show.html.haml +0 -1
  794. data/app/views/spina/admin/media_picker/show.js.erb +0 -1
  795. data/app/views/spina/admin/navigations/_navigation_item_nested_list.html.haml +0 -7
  796. data/app/views/spina/admin/navigations/_page.html.haml +0 -8
  797. data/app/views/spina/admin/navigations/edit.html.haml +0 -22
  798. data/app/views/spina/admin/navigations/show.html.haml +0 -7
  799. data/app/views/spina/admin/pages/_form.html.haml +0 -52
  800. data/app/views/spina/admin/pages/_form_advanced.html.haml +0 -59
  801. data/app/views/spina/admin/pages/_form_page_content.html.haml +0 -17
  802. data/app/views/spina/admin/pages/_form_page_seo.html.haml +0 -32
  803. data/app/views/spina/admin/pages/_page.html.haml +0 -16
  804. data/app/views/spina/admin/pages/_page_nested_list.html.haml +0 -6
  805. data/app/views/spina/admin/pages/children.html.haml +0 -4
  806. data/app/views/spina/admin/pages/create.js.coffee +0 -0
  807. data/app/views/spina/admin/pages/edit.html.haml +0 -1
  808. data/app/views/spina/admin/pages/index.html.haml +0 -36
  809. data/app/views/spina/admin/pages/new.html.haml +0 -1
  810. data/app/views/spina/admin/pages/update.js.coffee +0 -1
  811. data/app/views/spina/admin/parts/attachments/_form.html.haml +0 -6
  812. data/app/views/spina/admin/parts/image_collections/_fields.html.haml +0 -7
  813. data/app/views/spina/admin/parts/image_collections/_form.html.haml +0 -12
  814. data/app/views/spina/admin/parts/images/_form.html.haml +0 -18
  815. data/app/views/spina/admin/parts/lines/_form.html.haml +0 -2
  816. data/app/views/spina/admin/parts/multi_lines/_form.html.haml +0 -2
  817. data/app/views/spina/admin/parts/options/_form.html.haml +0 -3
  818. data/app/views/spina/admin/parts/repeaters/_fields.html.haml +0 -15
  819. data/app/views/spina/admin/parts/repeaters/_form.html.haml +0 -17
  820. data/app/views/spina/admin/parts/texts/_form.html.haml +0 -6
  821. data/app/views/spina/admin/password_resets/edit.html.haml +0 -13
  822. data/app/views/spina/admin/password_resets/new.html.haml +0 -13
  823. data/app/views/spina/admin/resources/edit.html.haml +0 -65
  824. data/app/views/spina/admin/resources/show.html.haml +0 -27
  825. data/app/views/spina/admin/sessions/new.html.haml +0 -14
  826. data/app/views/spina/admin/settings/_string_field.html.haml +0 -4
  827. data/app/views/spina/admin/settings/_wysiwyg_field.html.haml +0 -4
  828. data/app/views/spina/admin/settings/edit.html.haml +0 -13
  829. data/app/views/spina/admin/shared/_breadcrumbs.html.haml +0 -1
  830. data/app/views/spina/admin/shared/_notifications.html.haml +0 -29
  831. data/app/views/spina/admin/shared/_primary_navigation.html.haml +0 -68
  832. data/app/views/spina/admin/shared/_rich_text_field.html.haml +0 -4
  833. data/app/views/spina/admin/users/_form.html.haml +0 -58
  834. data/app/views/spina/admin/users/edit.html.haml +0 -1
  835. data/app/views/spina/admin/users/index.html.haml +0 -30
  836. data/app/views/spina/admin/users/new.html.haml +0 -1
  837. data/app/views/spina/pages/robots.text.erb +0 -4
  838. data/app/views/spina/shared/_admin_bar.html.haml +0 -4
  839. data/app/views/spina/shared/_analytics.html.erb +0 -11
  840. data/app/views/spina/shared/_google_site_verification.html.haml +0 -1
  841. data/app/views/spina/shared/_navigation.html.haml +0 -3
  842. data/app/views/spina/shared/_social.html.haml +0 -5
  843. data/app/views/spina/shared/_spina_link.html.haml +0 -2
  844. data/config/fontcustom.yml +0 -95
  845. data/lib/generators/spina/templates/app/assets/stylesheets/default/application.css.sass +0 -0
  846. data/lib/generators/spina/templates/app/assets/stylesheets/demo/application.css.sass +0 -69
  847. data/lib/generators/spina/templates/app/views/default/pages/homepage.html.haml +0 -3
  848. data/lib/generators/spina/templates/app/views/default/pages/show.html.haml +0 -3
  849. data/lib/generators/spina/templates/app/views/default/shared/_navigation.html.haml +0 -2
  850. data/lib/generators/spina/templates/app/views/demo/pages/demo.html.haml +0 -20
  851. data/lib/generators/spina/templates/app/views/demo/pages/homepage.html.haml +0 -2
  852. data/lib/generators/spina/templates/app/views/demo/pages/show.html.haml +0 -3
  853. data/lib/generators/spina/templates/app/views/demo/shared/_languages.html.haml +0 -2
  854. data/lib/generators/spina/templates/app/views/demo/shared/_navigation.html.haml +0 -2
  855. data/lib/generators/spina/templates/app/views/layouts/default/application.html.haml +0 -10
  856. data/lib/generators/spina/templates/app/views/layouts/demo/application.html.haml +0 -11
  857. data/lib/spina/fontcustom/_ics_spina.scss +0 -5
  858. data/vendor/assets/javascripts/spina/jquery.customfileinput.js +0 -85
  859. data/vendor/assets/javascripts/spina/jquery.nestable.js +0 -485
  860. data/vendor/assets/javascripts/spina/jquery.ui.js +0 -6
  861. data/vendor/assets/javascripts/spina/sortable.js +0 -2
  862. data/vendor/assets/javascripts/spina/stimulus.umd.js +0 -5
  863. data/vendor/assets/javascripts/spina/trix.js +0 -21
  864. data/vendor/assets/stylesheets/spina/_animate.scss +0 -1
  865. data/vendor/assets/stylesheets/spina/_normalize.scss +0 -396
  866. data/vendor/assets/stylesheets/spina/_trix.css +0 -369
@@ -0,0 +1,23 @@
1
+ module Spina
2
+ module AdminSectionable
3
+ extend ActiveSupport::Concern
4
+
5
+ included do |base|
6
+ extend ClassMethods
7
+
8
+ helper_method :admin_section
9
+ attr_accessor :admin_section
10
+ end
11
+
12
+ module ClassMethods
13
+
14
+ def admin_section(name)
15
+ before_action do |controller|
16
+ controller.send(:admin_section=, name.to_sym)
17
+ end
18
+ end
19
+
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,28 @@
1
+ module Spina
2
+ module AttrJsonMonkeypatch
3
+ extend ActiveSupport::Concern
4
+
5
+ included do |base|
6
+ extend ClassMethods
7
+ end
8
+
9
+ module ClassMethods
10
+
11
+ def attr_json_setter_monkeypatch(name)
12
+ # Ruby bug in 3.0.0 related to defined?(super) returning true
13
+ # https://github.com/jrochkind/attr_json/issues/112
14
+ if RUBY_VERSION == "3.0.0" && RUBY_PATCHLEVEL == 0
15
+ define_method("#{name}=") do |value|
16
+ # This next line is uncommented in the attr_json gem
17
+ # We don't care about super here, so let's just comment it for now
18
+ # super(value) if defined?(super)
19
+ attribute_def = self.class.attr_json_registry.fetch(name.to_sym)
20
+ public_send(attribute_def.container_attribute)[attribute_def.store_key] = attribute_def.cast(value)
21
+ end
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
data/lib/spina/engine.rb CHANGED
@@ -1,19 +1,16 @@
1
- require 'haml-rails'
2
1
  require 'sass-rails'
3
- require 'coffee-rails'
4
- require 'jquery-rails'
5
- require 'turbolinks'
2
+ require 'turbo-rails'
3
+ require 'stimulus-rails'
6
4
  require 'ancestry'
7
5
  require 'breadcrumbs_on_rails'
8
6
  require 'kaminari'
9
7
  require 'mobility'
10
8
  require 'rack-rewrite'
11
- require 'jsonb_accessor'
12
9
  require 'attr_json'
10
+ require 'view_component/engine'
13
11
 
14
12
  module Spina
15
13
  class Engine < ::Rails::Engine
16
-
17
14
  isolate_namespace Spina
18
15
 
19
16
  config.autoload_paths += %W( #{config.root}/lib )
@@ -36,5 +33,11 @@ module Spina
36
33
  Spina::Parts::Attachment
37
34
  )
38
35
  end
36
+
37
+ initializer "spina.helpers" do
38
+ Rails.application.config.assets.configure do |env|
39
+ env.context_class.class_eval { include Spina::ImportmapHelper }
40
+ end
41
+ end
39
42
  end
40
43
  end
@@ -0,0 +1,37 @@
1
+ module Spina
2
+ module ImportmapHelper
3
+
4
+ def spina_importmap_with_stimulus_from(*paths)
5
+ [ %("stimulus": "#{asset_path("stimulus/libraries/stimulus")}"), spina_importmap_from(*paths) ].reject(&:blank?).join(",\n")
6
+ end
7
+
8
+ def spina_importmap_from(*paths, prepend: "spina")
9
+ Array(paths).flat_map do |path|
10
+ if (absolute_path = absolute_root_of(path)).exist?
11
+ find_javascript_files_in_tree(absolute_path).collect do |filename|
12
+ module_filename = filename.relative_path_from(absolute_path)
13
+ module_name = importmap_module_name_from(module_filename)
14
+ module_path = asset_path("#{prepend}/" + absolute_path.basename.join(module_filename).to_s)
15
+
16
+ %("#{module_name}": "#{module_path}")
17
+ end
18
+ end
19
+ end.compact.join(",\n")
20
+ end
21
+
22
+ private
23
+
24
+ # Strip off the extension and any versioning data for an absolute module name.
25
+ def importmap_module_name_from(filename)
26
+ filename.basename.to_s.remove(filename.extname).split("@").first
27
+ end
28
+
29
+ def find_javascript_files_in_tree(path)
30
+ Dir[path.join("**/*.js{,m}")].collect { |file| Pathname.new(file) }.select(&:file?)
31
+ end
32
+
33
+ def absolute_root_of(path)
34
+ (pathname = Pathname.new(path)).absolute? ? pathname : Rails.root.join(path)
35
+ end
36
+ end
37
+ end
data/lib/spina/plugin.rb CHANGED
@@ -8,7 +8,13 @@ module Spina
8
8
  plugin_name = namespace
9
9
 
10
10
  klass = Class.new(::Spina::Setting) do
11
- jsonb_accessor :preferences, class_settings
11
+ include AttrJson::Record
12
+ include Spina::AttrJsonMonkeypatch
13
+
14
+ class_settings.each do |setting|
15
+ attr_json *setting, container_attribute: "preferences"
16
+ attr_json_setter_monkeypatch setting.first
17
+ end
12
18
 
13
19
  default_scope { where(plugin: "#{plugin_name}") }
14
20
  end
data/lib/spina/railtie.rb CHANGED
@@ -2,7 +2,11 @@ module Spina
2
2
  class Railtie < Rails::Railtie
3
3
 
4
4
  initializer "spina.assets.precompile" do |app|
5
- app.config.assets.precompile += %w(spina_manifest.js)
5
+ app.config.assets.precompile += %w(spina/manifest spina/importmap.json)
6
+ end
7
+
8
+ ActiveSupport.on_load(:action_controller) do
9
+ ::ActionController::Base.send(:include, Spina::AdminSectionable)
6
10
  end
7
11
 
8
12
  end
@@ -0,0 +1,147 @@
1
+ # This TailwindPurger was originally written by DHH in the tailwindcss-rails gem
2
+ # and is licensed under the following MIT License. This class has been edited
3
+ # slightly to make it work with Spina's use case.
4
+ #
5
+ # Copyright (c) 2020 David Heinemeier Hansson
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining
8
+ # a copy of this software and associated documentation files (the
9
+ # "Software"), to deal in the Software without restriction, including
10
+ # without limitation the rights to use, copy, modify, merge, publish,
11
+ # distribute, sublicense, and/or sell copies of the Software, and to
12
+ # permit persons to whom the Software is furnished to do so, subject to
13
+ # the following conditions:
14
+ #
15
+ # The above copyright notice and this permission notice shall be
16
+ # included in all copies or substantial portions of the Software.
17
+ #
18
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
+
26
+ class Spina::TailwindPurger
27
+ CLASS_NAME_PATTERN = /[:A-Za-z0-9_-]+[\.]*[\\\/:A-Za-z0-9_-]*/
28
+
29
+ CLASS_BREAK = /(?![-_a-z0-9\\])/i # `\b` for class selectors
30
+
31
+ COMMENT = /#{Regexp.escape "/*"}.*?#{Regexp.escape "*/"}/m
32
+ COMMENTS_AND_BLANK_LINES = /\A(?:^#{COMMENT}?[ \t]*(?:\n|\z)|[ \t]*#{COMMENT})+/
33
+
34
+ AT_RULE = /@[^{]+/
35
+ CLASSLESS_SELECTOR_GROUP = /[^.{]+/
36
+ CLASSLESS_BEGINNING_OF_BLOCK = /\A\s*(?:#{AT_RULE}|#{CLASSLESS_SELECTOR_GROUP})\{\n?/
37
+
38
+ SELECTOR_GROUP = /[^{]+/
39
+ BEGINNING_OF_BLOCK = /\A#{SELECTOR_GROUP}\{\n?/
40
+
41
+ PROPERTY_NAME = /[-_a-z0-9]+/i
42
+ PROPERTY_VALUE = /(?:[^;]|;\S)+/
43
+ PROPERTIES = /\A(?:\s*#{PROPERTY_NAME}:#{PROPERTY_VALUE};\n?)+/
44
+
45
+ END_OF_BLOCK = /\A\s*\}\n?/
46
+
47
+ attr_reader :keep_these_class_names
48
+
49
+ class << self
50
+ def purge(input, keeping_class_names_from_files:)
51
+ new(extract_class_names_from(keeping_class_names_from_files)).purge(input)
52
+ end
53
+
54
+ def extract_class_names(string)
55
+ string.scan(CLASS_NAME_PATTERN).uniq.sort!
56
+ end
57
+
58
+ def extract_class_names_from(files)
59
+ Array(files).flat_map { |file| extract_class_names(file.read) }.uniq.sort!
60
+ end
61
+
62
+ def escape_class_selector(class_name)
63
+ class_name.gsub(/\A\d|[^-_a-z0-9]/, '\\\\\0')
64
+ end
65
+ end
66
+
67
+ def initialize(keep_these_class_names)
68
+ @keep_these_class_names = keep_these_class_names
69
+ end
70
+
71
+ def purge(input)
72
+ conveyor = Conveyor.new(input)
73
+
74
+ until conveyor.done?
75
+ conveyor.discard(COMMENTS_AND_BLANK_LINES) \
76
+ or conveyor.conditionally_keep(PROPERTIES) { conveyor.staged_output.last != "" } \
77
+ or conveyor.conditionally_keep(END_OF_BLOCK) { not conveyor.staged_output.pop } \
78
+ or conveyor.stage_output(CLASSLESS_BEGINNING_OF_BLOCK) \
79
+ or conveyor.stage_output(BEGINNING_OF_BLOCK) { |match| purge_beginning_of_block(match.to_s) } \
80
+ or raise "infinite loop"
81
+ end
82
+
83
+ conveyor.output
84
+ end
85
+
86
+ private
87
+ def keep_these_selectors_pattern
88
+ @keep_these_selectors_pattern ||= begin
89
+ escaped_classes = @keep_these_class_names.map { |name| Regexp.escape self.class.escape_class_selector(name) }
90
+ /(?:\A|,)[^.,{]*(?:[.](?:#{escaped_classes.join("|")})#{CLASS_BREAK}[^.,{]*)*(?=[,{])/
91
+ end
92
+ end
93
+
94
+ def purge_beginning_of_block(string)
95
+ purged = string.scan(keep_these_selectors_pattern).join
96
+ unless purged.empty?
97
+ purged.sub!(/\A,\s*/, "")
98
+ purged.rstrip!
99
+ purged << " {\n"
100
+ end
101
+ purged
102
+ end
103
+
104
+ class Conveyor
105
+ attr_reader :output, :staged_output
106
+
107
+ def initialize(input, output = +"")
108
+ @input = input
109
+ @output = output
110
+ @staged_output = []
111
+ end
112
+
113
+ def consume(pattern)
114
+ match = pattern.match(@input)
115
+ @input = match.post_match if match
116
+ match
117
+ end
118
+ alias :discard :consume
119
+
120
+ def stage_output(pattern)
121
+ if match = consume(pattern)
122
+ string = block_given? ? (yield match) : match.to_s
123
+ @staged_output << string
124
+ string
125
+ end
126
+ end
127
+
128
+ def keep(pattern)
129
+ if match = consume(pattern)
130
+ string = block_given? ? (yield match) : match.to_s
131
+ @output << @staged_output.shift until @staged_output.empty?
132
+ @output << string
133
+ string
134
+ end
135
+ end
136
+
137
+ def conditionally_keep(pattern)
138
+ keep(pattern) do |match|
139
+ (yield match) ? match.to_s : (break "")
140
+ end
141
+ end
142
+
143
+ def done?
144
+ @input.empty?
145
+ end
146
+ end
147
+ end
data/lib/spina/theme.rb CHANGED
@@ -36,15 +36,24 @@ module Spina
36
36
  @public_theme = false
37
37
  end
38
38
 
39
- def new_page_templates
39
+ def new_page_templates(recommended: "")
40
40
  @view_templates.map do |view_template|
41
- [view_template[:name], view_template[:title], view_template[:description], view_template[:usage]] unless is_custom_undeletable_page?(view_template[:name])
42
- end.compact
41
+ next if is_custom_undeletable_page?(view_template[:name])
42
+
43
+ OpenStruct.new({
44
+ name: view_template[:name],
45
+ title: view_template[:title],
46
+ description: view_template[:description],
47
+ recommended: view_template[:name] == recommended
48
+ })
49
+ end.compact.sort_by do |page_template|
50
+ [page_template.recommended ? 0 : 1]
51
+ end
43
52
  end
44
53
 
45
54
  # Check if view_template is defined as a custom undeletable page
46
- def is_custom_undeletable_page?(view_template)
47
- @custom_pages.any? { |page| page[:view_template] == view_template && !page[:deletable] }
55
+ def is_custom_undeletable_page?(view_template_name)
56
+ @custom_pages.any? { |page| page[:view_template] == view_template_name && !page[:deletable] }
48
57
  end
49
58
 
50
59
  end
data/lib/spina/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Spina
2
- VERSION = "2.0.0"
2
+ VERSION = "2.1.1"
3
3
  end
@@ -18,5 +18,41 @@ namespace :spina do
18
18
  end
19
19
  end
20
20
  end
21
+
22
+
23
+ namespace :tailwind do
24
+
25
+ desc "Compile Tailwind.css for Spina"
26
+ task :compile do
27
+ Dir.chdir(File.join(__dir__, "../..")) do
28
+ system "npx tailwindcss-cli@latest build ./app/assets/stylesheets/spina/tailwind/custom.css -o ./app/assets/stylesheets/spina/_tailwind.css -c ./app/assets/config/spina/tailwind.config.js"
29
+ end
30
+ end
31
+
32
+ desc "Purging Tailwind classes"
33
+ task purge: :environment do
34
+ assets_path = "app/assets/stylesheets/spina"
35
+ vendor_path = "vendor/assets/stylesheets"
36
+ src = Spina::Engine.root.join(assets_path, "_tailwind.css")
37
+ dest = Rails.root.join(vendor_path, "spina/_tailwind.css")
38
+
39
+ # Copy Spina assets to main app
40
+ FileUtils.mkdir_p Rails.root.join(vendor_path)
41
+ FileUtils.cp_r Spina::Engine.root.join(assets_path), Rails.root.join(vendor_path)
42
+
43
+ # Purge Tailwind classes
44
+ purged = Spina::TailwindPurger.purge(File.read(src), keeping_class_names_from_files: Spina.config.tailwind_purge_content)
45
+
46
+ # Overwrite Tailwind stylesheet with fewer lines
47
+ File.write(dest, purged)
48
+ end
49
+
50
+ # Every time you execute 'rake assets:precompile'
51
+ # run 'spina:tailwind:purge' first
52
+ if Rake::Task.task_defined?("assets:precompile")
53
+ Rake::Task['assets:precompile'].enhance ['spina:tailwind:purge']
54
+ end
55
+ end
56
+
21
57
 
22
58
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spina
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bram Jetten
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-13 00:00:00.000000000 Z
11
+ date: 2021-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: haml-rails
56
+ name: sass-rails
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: sass-rails
70
+ name: image_processing
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: coffee-rails
84
+ name: ancestry
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: jquery-rails
98
+ name: breadcrumbs_on_rails
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: image_processing
112
+ name: kaminari
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
@@ -123,49 +123,35 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: ancestry
126
+ name: mobility
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - '='
130
130
  - !ruby/object:Gem::Version
131
- version: '0'
131
+ version: 1.1.2
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ">="
136
+ - - '='
137
137
  - !ruby/object:Gem::Version
138
- version: '0'
138
+ version: 1.1.2
139
139
  - !ruby/object:Gem::Dependency
140
- name: breadcrumbs_on_rails
140
+ name: rack-rewrite
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
144
144
  - !ruby/object:Gem::Version
145
- version: '0'
145
+ version: 1.5.0
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
- version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: turbolinks
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '5'
160
- type: :runtime
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '5'
152
+ version: 1.5.0
167
153
  - !ruby/object:Gem::Dependency
168
- name: kaminari
154
+ name: attr_json
169
155
  requirement: !ruby/object:Gem::Requirement
170
156
  requirements:
171
157
  - - ">="
@@ -179,49 +165,35 @@ dependencies:
179
165
  - !ruby/object:Gem::Version
180
166
  version: '0'
181
167
  - !ruby/object:Gem::Dependency
182
- name: mobility
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - '='
186
- - !ruby/object:Gem::Version
187
- version: 1.1.1
188
- type: :runtime
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - '='
193
- - !ruby/object:Gem::Version
194
- version: 1.1.1
195
- - !ruby/object:Gem::Dependency
196
- name: rack-rewrite
168
+ name: view_component
197
169
  requirement: !ruby/object:Gem::Requirement
198
170
  requirements:
199
- - - ">="
171
+ - - "~>"
200
172
  - !ruby/object:Gem::Version
201
- version: 1.5.0
173
+ version: '2.32'
202
174
  type: :runtime
203
175
  prerelease: false
204
176
  version_requirements: !ruby/object:Gem::Requirement
205
177
  requirements:
206
- - - ">="
178
+ - - "~>"
207
179
  - !ruby/object:Gem::Version
208
- version: 1.5.0
180
+ version: '2.32'
209
181
  - !ruby/object:Gem::Dependency
210
- name: jsonb_accessor
182
+ name: turbo-rails
211
183
  requirement: !ruby/object:Gem::Requirement
212
184
  requirements:
213
185
  - - ">="
214
186
  - !ruby/object:Gem::Version
215
- version: 1.0.0
187
+ version: '0'
216
188
  type: :runtime
217
189
  prerelease: false
218
190
  version_requirements: !ruby/object:Gem::Requirement
219
191
  requirements:
220
192
  - - ">="
221
193
  - !ruby/object:Gem::Version
222
- version: 1.0.0
194
+ version: '0'
223
195
  - !ruby/object:Gem::Dependency
224
- name: attr_json
196
+ name: stimulus-rails
225
197
  requirement: !ruby/object:Gem::Requirement
226
198
  requirements:
227
199
  - - ">="
@@ -244,7 +216,7 @@ files:
244
216
  - README.md
245
217
  - Rakefile
246
218
  - app/assets/config/spina/manifest.js
247
- - app/assets/config/spina_manifest.js
219
+ - app/assets/config/spina/tailwind.config.js
248
220
  - app/assets/fonts/spina/Metropolis-Black.woff2
249
221
  - app/assets/fonts/spina/Metropolis-BlackItalic.woff2
250
222
  - app/assets/fonts/spina/Metropolis-Bold.woff2
@@ -263,11 +235,458 @@ files:
263
235
  - app/assets/fonts/spina/Metropolis-SemiBoldItalic.woff2
264
236
  - app/assets/fonts/spina/Metropolis-Thin.woff2
265
237
  - app/assets/fonts/spina/Metropolis-ThinItalic.woff2
266
- - app/assets/fonts/spina/ics_spina.eot
267
- - app/assets/fonts/spina/ics_spina.svg
268
- - app/assets/fonts/spina/ics_spina.ttf
269
- - app/assets/fonts/spina/ics_spina.woff
270
- - app/assets/fonts/spina/ics_spina.woff2
238
+ - app/assets/icons/heroicons/outline/academic-cap.svg
239
+ - app/assets/icons/heroicons/outline/adjustments.svg
240
+ - app/assets/icons/heroicons/outline/annotation.svg
241
+ - app/assets/icons/heroicons/outline/archive.svg
242
+ - app/assets/icons/heroicons/outline/arrow-circle-down.svg
243
+ - app/assets/icons/heroicons/outline/arrow-circle-left.svg
244
+ - app/assets/icons/heroicons/outline/arrow-circle-right.svg
245
+ - app/assets/icons/heroicons/outline/arrow-circle-up.svg
246
+ - app/assets/icons/heroicons/outline/arrow-down.svg
247
+ - app/assets/icons/heroicons/outline/arrow-left.svg
248
+ - app/assets/icons/heroicons/outline/arrow-narrow-down.svg
249
+ - app/assets/icons/heroicons/outline/arrow-narrow-left.svg
250
+ - app/assets/icons/heroicons/outline/arrow-narrow-right.svg
251
+ - app/assets/icons/heroicons/outline/arrow-narrow-up.svg
252
+ - app/assets/icons/heroicons/outline/arrow-right.svg
253
+ - app/assets/icons/heroicons/outline/arrow-up.svg
254
+ - app/assets/icons/heroicons/outline/arrows-expand.svg
255
+ - app/assets/icons/heroicons/outline/at-symbol.svg
256
+ - app/assets/icons/heroicons/outline/backspace.svg
257
+ - app/assets/icons/heroicons/outline/badge-check.svg
258
+ - app/assets/icons/heroicons/outline/ban.svg
259
+ - app/assets/icons/heroicons/outline/beaker.svg
260
+ - app/assets/icons/heroicons/outline/bell.svg
261
+ - app/assets/icons/heroicons/outline/book-open.svg
262
+ - app/assets/icons/heroicons/outline/bookmark-alt.svg
263
+ - app/assets/icons/heroicons/outline/bookmark.svg
264
+ - app/assets/icons/heroicons/outline/briefcase.svg
265
+ - app/assets/icons/heroicons/outline/cake.svg
266
+ - app/assets/icons/heroicons/outline/calculator.svg
267
+ - app/assets/icons/heroicons/outline/calendar.svg
268
+ - app/assets/icons/heroicons/outline/camera.svg
269
+ - app/assets/icons/heroicons/outline/cash.svg
270
+ - app/assets/icons/heroicons/outline/chart-bar.svg
271
+ - app/assets/icons/heroicons/outline/chart-pie.svg
272
+ - app/assets/icons/heroicons/outline/chart-square-bar.svg
273
+ - app/assets/icons/heroicons/outline/chat-alt-2.svg
274
+ - app/assets/icons/heroicons/outline/chat-alt.svg
275
+ - app/assets/icons/heroicons/outline/chat.svg
276
+ - app/assets/icons/heroicons/outline/check-circle.svg
277
+ - app/assets/icons/heroicons/outline/check.svg
278
+ - app/assets/icons/heroicons/outline/chevron-double-down.svg
279
+ - app/assets/icons/heroicons/outline/chevron-double-left.svg
280
+ - app/assets/icons/heroicons/outline/chevron-double-right.svg
281
+ - app/assets/icons/heroicons/outline/chevron-double-up.svg
282
+ - app/assets/icons/heroicons/outline/chevron-down.svg
283
+ - app/assets/icons/heroicons/outline/chevron-left.svg
284
+ - app/assets/icons/heroicons/outline/chevron-right.svg
285
+ - app/assets/icons/heroicons/outline/chevron-up.svg
286
+ - app/assets/icons/heroicons/outline/chip.svg
287
+ - app/assets/icons/heroicons/outline/clipboard-check.svg
288
+ - app/assets/icons/heroicons/outline/clipboard-copy.svg
289
+ - app/assets/icons/heroicons/outline/clipboard-list.svg
290
+ - app/assets/icons/heroicons/outline/clipboard.svg
291
+ - app/assets/icons/heroicons/outline/clock.svg
292
+ - app/assets/icons/heroicons/outline/cloud-download.svg
293
+ - app/assets/icons/heroicons/outline/cloud-upload.svg
294
+ - app/assets/icons/heroicons/outline/cloud.svg
295
+ - app/assets/icons/heroicons/outline/code.svg
296
+ - app/assets/icons/heroicons/outline/cog.svg
297
+ - app/assets/icons/heroicons/outline/collection.svg
298
+ - app/assets/icons/heroicons/outline/color-swatch.svg
299
+ - app/assets/icons/heroicons/outline/credit-card.svg
300
+ - app/assets/icons/heroicons/outline/cube-transparent.svg
301
+ - app/assets/icons/heroicons/outline/cube.svg
302
+ - app/assets/icons/heroicons/outline/currency-bangladeshi.svg
303
+ - app/assets/icons/heroicons/outline/currency-dollar.svg
304
+ - app/assets/icons/heroicons/outline/currency-euro.svg
305
+ - app/assets/icons/heroicons/outline/currency-pound.svg
306
+ - app/assets/icons/heroicons/outline/currency-rupee.svg
307
+ - app/assets/icons/heroicons/outline/currency-yen.svg
308
+ - app/assets/icons/heroicons/outline/cursor-click.svg
309
+ - app/assets/icons/heroicons/outline/database.svg
310
+ - app/assets/icons/heroicons/outline/desktop-computer.svg
311
+ - app/assets/icons/heroicons/outline/device-mobile.svg
312
+ - app/assets/icons/heroicons/outline/device-tablet.svg
313
+ - app/assets/icons/heroicons/outline/document-add.svg
314
+ - app/assets/icons/heroicons/outline/document-download.svg
315
+ - app/assets/icons/heroicons/outline/document-duplicate.svg
316
+ - app/assets/icons/heroicons/outline/document-remove.svg
317
+ - app/assets/icons/heroicons/outline/document-report.svg
318
+ - app/assets/icons/heroicons/outline/document-search.svg
319
+ - app/assets/icons/heroicons/outline/document-text.svg
320
+ - app/assets/icons/heroicons/outline/document.svg
321
+ - app/assets/icons/heroicons/outline/dots-circle-horizontal.svg
322
+ - app/assets/icons/heroicons/outline/dots-horizontal.svg
323
+ - app/assets/icons/heroicons/outline/dots-vertical.svg
324
+ - app/assets/icons/heroicons/outline/download.svg
325
+ - app/assets/icons/heroicons/outline/duplicate.svg
326
+ - app/assets/icons/heroicons/outline/emoji-happy.svg
327
+ - app/assets/icons/heroicons/outline/emoji-sad.svg
328
+ - app/assets/icons/heroicons/outline/exclamation-circle.svg
329
+ - app/assets/icons/heroicons/outline/exclamation.svg
330
+ - app/assets/icons/heroicons/outline/external-link.svg
331
+ - app/assets/icons/heroicons/outline/eye-off.svg
332
+ - app/assets/icons/heroicons/outline/eye.svg
333
+ - app/assets/icons/heroicons/outline/fast-forward.svg
334
+ - app/assets/icons/heroicons/outline/film.svg
335
+ - app/assets/icons/heroicons/outline/filter.svg
336
+ - app/assets/icons/heroicons/outline/finger-print.svg
337
+ - app/assets/icons/heroicons/outline/fire.svg
338
+ - app/assets/icons/heroicons/outline/flag.svg
339
+ - app/assets/icons/heroicons/outline/folder-add.svg
340
+ - app/assets/icons/heroicons/outline/folder-download.svg
341
+ - app/assets/icons/heroicons/outline/folder-open.svg
342
+ - app/assets/icons/heroicons/outline/folder-remove.svg
343
+ - app/assets/icons/heroicons/outline/folder.svg
344
+ - app/assets/icons/heroicons/outline/gift.svg
345
+ - app/assets/icons/heroicons/outline/globe-alt.svg
346
+ - app/assets/icons/heroicons/outline/globe.svg
347
+ - app/assets/icons/heroicons/outline/hand.svg
348
+ - app/assets/icons/heroicons/outline/hashtag.svg
349
+ - app/assets/icons/heroicons/outline/heart.svg
350
+ - app/assets/icons/heroicons/outline/home.svg
351
+ - app/assets/icons/heroicons/outline/identification.svg
352
+ - app/assets/icons/heroicons/outline/inbox-in.svg
353
+ - app/assets/icons/heroicons/outline/inbox.svg
354
+ - app/assets/icons/heroicons/outline/information-circle.svg
355
+ - app/assets/icons/heroicons/outline/key.svg
356
+ - app/assets/icons/heroicons/outline/library.svg
357
+ - app/assets/icons/heroicons/outline/light-bulb.svg
358
+ - app/assets/icons/heroicons/outline/lightning-bolt.svg
359
+ - app/assets/icons/heroicons/outline/link.svg
360
+ - app/assets/icons/heroicons/outline/location-marker.svg
361
+ - app/assets/icons/heroicons/outline/lock-closed.svg
362
+ - app/assets/icons/heroicons/outline/lock-open.svg
363
+ - app/assets/icons/heroicons/outline/login.svg
364
+ - app/assets/icons/heroicons/outline/logout.svg
365
+ - app/assets/icons/heroicons/outline/mail-open.svg
366
+ - app/assets/icons/heroicons/outline/mail.svg
367
+ - app/assets/icons/heroicons/outline/map.svg
368
+ - app/assets/icons/heroicons/outline/menu-alt-1.svg
369
+ - app/assets/icons/heroicons/outline/menu-alt-2.svg
370
+ - app/assets/icons/heroicons/outline/menu-alt-3.svg
371
+ - app/assets/icons/heroicons/outline/menu-alt-4.svg
372
+ - app/assets/icons/heroicons/outline/menu.svg
373
+ - app/assets/icons/heroicons/outline/microphone.svg
374
+ - app/assets/icons/heroicons/outline/minus-circle.svg
375
+ - app/assets/icons/heroicons/outline/minus-sm.svg
376
+ - app/assets/icons/heroicons/outline/minus.svg
377
+ - app/assets/icons/heroicons/outline/moon.svg
378
+ - app/assets/icons/heroicons/outline/music-note.svg
379
+ - app/assets/icons/heroicons/outline/newspaper.svg
380
+ - app/assets/icons/heroicons/outline/office-building.svg
381
+ - app/assets/icons/heroicons/outline/paper-airplane.svg
382
+ - app/assets/icons/heroicons/outline/paper-clip.svg
383
+ - app/assets/icons/heroicons/outline/pause.svg
384
+ - app/assets/icons/heroicons/outline/pencil-alt.svg
385
+ - app/assets/icons/heroicons/outline/pencil.svg
386
+ - app/assets/icons/heroicons/outline/phone-incoming.svg
387
+ - app/assets/icons/heroicons/outline/phone-missed-call.svg
388
+ - app/assets/icons/heroicons/outline/phone-outgoing.svg
389
+ - app/assets/icons/heroicons/outline/phone.svg
390
+ - app/assets/icons/heroicons/outline/photograph.svg
391
+ - app/assets/icons/heroicons/outline/play.svg
392
+ - app/assets/icons/heroicons/outline/plus-circle.svg
393
+ - app/assets/icons/heroicons/outline/plus-sm.svg
394
+ - app/assets/icons/heroicons/outline/plus.svg
395
+ - app/assets/icons/heroicons/outline/presentation-chart-bar.svg
396
+ - app/assets/icons/heroicons/outline/presentation-chart-line.svg
397
+ - app/assets/icons/heroicons/outline/printer.svg
398
+ - app/assets/icons/heroicons/outline/puzzle.svg
399
+ - app/assets/icons/heroicons/outline/qrcode.svg
400
+ - app/assets/icons/heroicons/outline/question-mark-circle.svg
401
+ - app/assets/icons/heroicons/outline/receipt-refund.svg
402
+ - app/assets/icons/heroicons/outline/receipt-tax.svg
403
+ - app/assets/icons/heroicons/outline/refresh.svg
404
+ - app/assets/icons/heroicons/outline/reply.svg
405
+ - app/assets/icons/heroicons/outline/rewind.svg
406
+ - app/assets/icons/heroicons/outline/rss.svg
407
+ - app/assets/icons/heroicons/outline/save-as.svg
408
+ - app/assets/icons/heroicons/outline/save.svg
409
+ - app/assets/icons/heroicons/outline/scale.svg
410
+ - app/assets/icons/heroicons/outline/scissors.svg
411
+ - app/assets/icons/heroicons/outline/search-circle.svg
412
+ - app/assets/icons/heroicons/outline/search.svg
413
+ - app/assets/icons/heroicons/outline/selector.svg
414
+ - app/assets/icons/heroicons/outline/server.svg
415
+ - app/assets/icons/heroicons/outline/share.svg
416
+ - app/assets/icons/heroicons/outline/shield-check.svg
417
+ - app/assets/icons/heroicons/outline/shield-exclamation.svg
418
+ - app/assets/icons/heroicons/outline/shopping-bag.svg
419
+ - app/assets/icons/heroicons/outline/shopping-cart.svg
420
+ - app/assets/icons/heroicons/outline/sort-ascending.svg
421
+ - app/assets/icons/heroicons/outline/sort-descending.svg
422
+ - app/assets/icons/heroicons/outline/sparkles.svg
423
+ - app/assets/icons/heroicons/outline/speakerphone.svg
424
+ - app/assets/icons/heroicons/outline/star.svg
425
+ - app/assets/icons/heroicons/outline/status-offline.svg
426
+ - app/assets/icons/heroicons/outline/status-online.svg
427
+ - app/assets/icons/heroicons/outline/stop.svg
428
+ - app/assets/icons/heroicons/outline/sun.svg
429
+ - app/assets/icons/heroicons/outline/support.svg
430
+ - app/assets/icons/heroicons/outline/switch-horizontal.svg
431
+ - app/assets/icons/heroicons/outline/switch-vertical.svg
432
+ - app/assets/icons/heroicons/outline/table.svg
433
+ - app/assets/icons/heroicons/outline/tag.svg
434
+ - app/assets/icons/heroicons/outline/template.svg
435
+ - app/assets/icons/heroicons/outline/terminal.svg
436
+ - app/assets/icons/heroicons/outline/thumb-down.svg
437
+ - app/assets/icons/heroicons/outline/thumb-up.svg
438
+ - app/assets/icons/heroicons/outline/ticket.svg
439
+ - app/assets/icons/heroicons/outline/translate.svg
440
+ - app/assets/icons/heroicons/outline/trash.svg
441
+ - app/assets/icons/heroicons/outline/trending-down.svg
442
+ - app/assets/icons/heroicons/outline/trending-up.svg
443
+ - app/assets/icons/heroicons/outline/truck.svg
444
+ - app/assets/icons/heroicons/outline/upload.svg
445
+ - app/assets/icons/heroicons/outline/user-add.svg
446
+ - app/assets/icons/heroicons/outline/user-circle.svg
447
+ - app/assets/icons/heroicons/outline/user-group.svg
448
+ - app/assets/icons/heroicons/outline/user-remove.svg
449
+ - app/assets/icons/heroicons/outline/user.svg
450
+ - app/assets/icons/heroicons/outline/users.svg
451
+ - app/assets/icons/heroicons/outline/variable.svg
452
+ - app/assets/icons/heroicons/outline/video-camera.svg
453
+ - app/assets/icons/heroicons/outline/view-boards.svg
454
+ - app/assets/icons/heroicons/outline/view-grid-add.svg
455
+ - app/assets/icons/heroicons/outline/view-grid.svg
456
+ - app/assets/icons/heroicons/outline/view-list.svg
457
+ - app/assets/icons/heroicons/outline/volume-off.svg
458
+ - app/assets/icons/heroicons/outline/volume-up.svg
459
+ - app/assets/icons/heroicons/outline/wifi.svg
460
+ - app/assets/icons/heroicons/outline/x-circle.svg
461
+ - app/assets/icons/heroicons/outline/x.svg
462
+ - app/assets/icons/heroicons/outline/zoom-in.svg
463
+ - app/assets/icons/heroicons/outline/zoom-out.svg
464
+ - app/assets/icons/heroicons/solid/academic-cap.svg
465
+ - app/assets/icons/heroicons/solid/adjustments.svg
466
+ - app/assets/icons/heroicons/solid/annotation.svg
467
+ - app/assets/icons/heroicons/solid/archive.svg
468
+ - app/assets/icons/heroicons/solid/arrow-circle-down.svg
469
+ - app/assets/icons/heroicons/solid/arrow-circle-left.svg
470
+ - app/assets/icons/heroicons/solid/arrow-circle-right.svg
471
+ - app/assets/icons/heroicons/solid/arrow-circle-up.svg
472
+ - app/assets/icons/heroicons/solid/arrow-down.svg
473
+ - app/assets/icons/heroicons/solid/arrow-left.svg
474
+ - app/assets/icons/heroicons/solid/arrow-narrow-down.svg
475
+ - app/assets/icons/heroicons/solid/arrow-narrow-left.svg
476
+ - app/assets/icons/heroicons/solid/arrow-narrow-right.svg
477
+ - app/assets/icons/heroicons/solid/arrow-narrow-up.svg
478
+ - app/assets/icons/heroicons/solid/arrow-right.svg
479
+ - app/assets/icons/heroicons/solid/arrow-up.svg
480
+ - app/assets/icons/heroicons/solid/arrows-expand.svg
481
+ - app/assets/icons/heroicons/solid/at-symbol.svg
482
+ - app/assets/icons/heroicons/solid/backspace.svg
483
+ - app/assets/icons/heroicons/solid/badge-check.svg
484
+ - app/assets/icons/heroicons/solid/ban.svg
485
+ - app/assets/icons/heroicons/solid/beaker.svg
486
+ - app/assets/icons/heroicons/solid/bell.svg
487
+ - app/assets/icons/heroicons/solid/book-open.svg
488
+ - app/assets/icons/heroicons/solid/bookmark-alt.svg
489
+ - app/assets/icons/heroicons/solid/bookmark.svg
490
+ - app/assets/icons/heroicons/solid/briefcase.svg
491
+ - app/assets/icons/heroicons/solid/cake.svg
492
+ - app/assets/icons/heroicons/solid/calculator.svg
493
+ - app/assets/icons/heroicons/solid/calendar.svg
494
+ - app/assets/icons/heroicons/solid/camera.svg
495
+ - app/assets/icons/heroicons/solid/cash.svg
496
+ - app/assets/icons/heroicons/solid/chart-bar.svg
497
+ - app/assets/icons/heroicons/solid/chart-pie.svg
498
+ - app/assets/icons/heroicons/solid/chart-square-bar.svg
499
+ - app/assets/icons/heroicons/solid/chat-alt-2.svg
500
+ - app/assets/icons/heroicons/solid/chat-alt.svg
501
+ - app/assets/icons/heroicons/solid/chat.svg
502
+ - app/assets/icons/heroicons/solid/check-circle.svg
503
+ - app/assets/icons/heroicons/solid/check.svg
504
+ - app/assets/icons/heroicons/solid/chevron-double-down.svg
505
+ - app/assets/icons/heroicons/solid/chevron-double-left.svg
506
+ - app/assets/icons/heroicons/solid/chevron-double-right.svg
507
+ - app/assets/icons/heroicons/solid/chevron-double-up.svg
508
+ - app/assets/icons/heroicons/solid/chevron-down.svg
509
+ - app/assets/icons/heroicons/solid/chevron-left.svg
510
+ - app/assets/icons/heroicons/solid/chevron-right.svg
511
+ - app/assets/icons/heroicons/solid/chevron-up.svg
512
+ - app/assets/icons/heroicons/solid/chip.svg
513
+ - app/assets/icons/heroicons/solid/clipboard-check.svg
514
+ - app/assets/icons/heroicons/solid/clipboard-copy.svg
515
+ - app/assets/icons/heroicons/solid/clipboard-list.svg
516
+ - app/assets/icons/heroicons/solid/clipboard.svg
517
+ - app/assets/icons/heroicons/solid/clock.svg
518
+ - app/assets/icons/heroicons/solid/cloud-download.svg
519
+ - app/assets/icons/heroicons/solid/cloud-upload.svg
520
+ - app/assets/icons/heroicons/solid/cloud.svg
521
+ - app/assets/icons/heroicons/solid/code.svg
522
+ - app/assets/icons/heroicons/solid/cog.svg
523
+ - app/assets/icons/heroicons/solid/collection.svg
524
+ - app/assets/icons/heroicons/solid/color-swatch.svg
525
+ - app/assets/icons/heroicons/solid/credit-card.svg
526
+ - app/assets/icons/heroicons/solid/cube-transparent.svg
527
+ - app/assets/icons/heroicons/solid/cube.svg
528
+ - app/assets/icons/heroicons/solid/currency-bangladeshi.svg
529
+ - app/assets/icons/heroicons/solid/currency-dollar.svg
530
+ - app/assets/icons/heroicons/solid/currency-euro.svg
531
+ - app/assets/icons/heroicons/solid/currency-pound.svg
532
+ - app/assets/icons/heroicons/solid/currency-rupee.svg
533
+ - app/assets/icons/heroicons/solid/currency-yen.svg
534
+ - app/assets/icons/heroicons/solid/cursor-click.svg
535
+ - app/assets/icons/heroicons/solid/database.svg
536
+ - app/assets/icons/heroicons/solid/desktop-computer.svg
537
+ - app/assets/icons/heroicons/solid/device-mobile.svg
538
+ - app/assets/icons/heroicons/solid/device-tablet.svg
539
+ - app/assets/icons/heroicons/solid/document-add.svg
540
+ - app/assets/icons/heroicons/solid/document-download.svg
541
+ - app/assets/icons/heroicons/solid/document-duplicate.svg
542
+ - app/assets/icons/heroicons/solid/document-remove.svg
543
+ - app/assets/icons/heroicons/solid/document-report.svg
544
+ - app/assets/icons/heroicons/solid/document-search.svg
545
+ - app/assets/icons/heroicons/solid/document-text.svg
546
+ - app/assets/icons/heroicons/solid/document.svg
547
+ - app/assets/icons/heroicons/solid/dots-circle-horizontal.svg
548
+ - app/assets/icons/heroicons/solid/dots-horizontal.svg
549
+ - app/assets/icons/heroicons/solid/dots-vertical.svg
550
+ - app/assets/icons/heroicons/solid/download.svg
551
+ - app/assets/icons/heroicons/solid/duplicate.svg
552
+ - app/assets/icons/heroicons/solid/emoji-happy.svg
553
+ - app/assets/icons/heroicons/solid/emoji-sad.svg
554
+ - app/assets/icons/heroicons/solid/exclamation-circle.svg
555
+ - app/assets/icons/heroicons/solid/exclamation.svg
556
+ - app/assets/icons/heroicons/solid/external-link.svg
557
+ - app/assets/icons/heroicons/solid/eye-off.svg
558
+ - app/assets/icons/heroicons/solid/eye.svg
559
+ - app/assets/icons/heroicons/solid/fast-forward.svg
560
+ - app/assets/icons/heroicons/solid/film.svg
561
+ - app/assets/icons/heroicons/solid/filter.svg
562
+ - app/assets/icons/heroicons/solid/finger-print.svg
563
+ - app/assets/icons/heroicons/solid/fire.svg
564
+ - app/assets/icons/heroicons/solid/flag.svg
565
+ - app/assets/icons/heroicons/solid/folder-add.svg
566
+ - app/assets/icons/heroicons/solid/folder-download.svg
567
+ - app/assets/icons/heroicons/solid/folder-open.svg
568
+ - app/assets/icons/heroicons/solid/folder-remove.svg
569
+ - app/assets/icons/heroicons/solid/folder.svg
570
+ - app/assets/icons/heroicons/solid/gift.svg
571
+ - app/assets/icons/heroicons/solid/globe-alt.svg
572
+ - app/assets/icons/heroicons/solid/globe.svg
573
+ - app/assets/icons/heroicons/solid/hand.svg
574
+ - app/assets/icons/heroicons/solid/hashtag.svg
575
+ - app/assets/icons/heroicons/solid/heart.svg
576
+ - app/assets/icons/heroicons/solid/home.svg
577
+ - app/assets/icons/heroicons/solid/identification.svg
578
+ - app/assets/icons/heroicons/solid/inbox-in.svg
579
+ - app/assets/icons/heroicons/solid/inbox.svg
580
+ - app/assets/icons/heroicons/solid/information-circle.svg
581
+ - app/assets/icons/heroicons/solid/key.svg
582
+ - app/assets/icons/heroicons/solid/library.svg
583
+ - app/assets/icons/heroicons/solid/light-bulb.svg
584
+ - app/assets/icons/heroicons/solid/lightning-bolt.svg
585
+ - app/assets/icons/heroicons/solid/link.svg
586
+ - app/assets/icons/heroicons/solid/location-marker.svg
587
+ - app/assets/icons/heroicons/solid/lock-closed.svg
588
+ - app/assets/icons/heroicons/solid/lock-open.svg
589
+ - app/assets/icons/heroicons/solid/login.svg
590
+ - app/assets/icons/heroicons/solid/logout.svg
591
+ - app/assets/icons/heroicons/solid/mail-open.svg
592
+ - app/assets/icons/heroicons/solid/mail.svg
593
+ - app/assets/icons/heroicons/solid/map.svg
594
+ - app/assets/icons/heroicons/solid/menu-alt-1.svg
595
+ - app/assets/icons/heroicons/solid/menu-alt-2.svg
596
+ - app/assets/icons/heroicons/solid/menu-alt-3.svg
597
+ - app/assets/icons/heroicons/solid/menu-alt-4.svg
598
+ - app/assets/icons/heroicons/solid/menu.svg
599
+ - app/assets/icons/heroicons/solid/microphone.svg
600
+ - app/assets/icons/heroicons/solid/minus-circle.svg
601
+ - app/assets/icons/heroicons/solid/minus-sm.svg
602
+ - app/assets/icons/heroicons/solid/minus.svg
603
+ - app/assets/icons/heroicons/solid/moon.svg
604
+ - app/assets/icons/heroicons/solid/music-note.svg
605
+ - app/assets/icons/heroicons/solid/newspaper.svg
606
+ - app/assets/icons/heroicons/solid/office-building.svg
607
+ - app/assets/icons/heroicons/solid/paper-airplane.svg
608
+ - app/assets/icons/heroicons/solid/paper-clip.svg
609
+ - app/assets/icons/heroicons/solid/pause.svg
610
+ - app/assets/icons/heroicons/solid/pencil-alt.svg
611
+ - app/assets/icons/heroicons/solid/pencil.svg
612
+ - app/assets/icons/heroicons/solid/phone-incoming.svg
613
+ - app/assets/icons/heroicons/solid/phone-missed-call.svg
614
+ - app/assets/icons/heroicons/solid/phone-outgoing.svg
615
+ - app/assets/icons/heroicons/solid/phone.svg
616
+ - app/assets/icons/heroicons/solid/photograph.svg
617
+ - app/assets/icons/heroicons/solid/play.svg
618
+ - app/assets/icons/heroicons/solid/plus-circle.svg
619
+ - app/assets/icons/heroicons/solid/plus-sm.svg
620
+ - app/assets/icons/heroicons/solid/plus.svg
621
+ - app/assets/icons/heroicons/solid/presentation-chart-bar.svg
622
+ - app/assets/icons/heroicons/solid/presentation-chart-line.svg
623
+ - app/assets/icons/heroicons/solid/printer.svg
624
+ - app/assets/icons/heroicons/solid/puzzle.svg
625
+ - app/assets/icons/heroicons/solid/qrcode.svg
626
+ - app/assets/icons/heroicons/solid/question-mark-circle.svg
627
+ - app/assets/icons/heroicons/solid/receipt-refund.svg
628
+ - app/assets/icons/heroicons/solid/receipt-tax.svg
629
+ - app/assets/icons/heroicons/solid/refresh.svg
630
+ - app/assets/icons/heroicons/solid/reply.svg
631
+ - app/assets/icons/heroicons/solid/rewind.svg
632
+ - app/assets/icons/heroicons/solid/rss.svg
633
+ - app/assets/icons/heroicons/solid/save-as.svg
634
+ - app/assets/icons/heroicons/solid/save.svg
635
+ - app/assets/icons/heroicons/solid/scale.svg
636
+ - app/assets/icons/heroicons/solid/scissors.svg
637
+ - app/assets/icons/heroicons/solid/search-circle.svg
638
+ - app/assets/icons/heroicons/solid/search.svg
639
+ - app/assets/icons/heroicons/solid/selector.svg
640
+ - app/assets/icons/heroicons/solid/server.svg
641
+ - app/assets/icons/heroicons/solid/share.svg
642
+ - app/assets/icons/heroicons/solid/shield-check.svg
643
+ - app/assets/icons/heroicons/solid/shield-exclamation.svg
644
+ - app/assets/icons/heroicons/solid/shopping-bag.svg
645
+ - app/assets/icons/heroicons/solid/shopping-cart.svg
646
+ - app/assets/icons/heroicons/solid/sort-ascending.svg
647
+ - app/assets/icons/heroicons/solid/sort-descending.svg
648
+ - app/assets/icons/heroicons/solid/sparkles.svg
649
+ - app/assets/icons/heroicons/solid/speakerphone.svg
650
+ - app/assets/icons/heroicons/solid/star.svg
651
+ - app/assets/icons/heroicons/solid/status-offline.svg
652
+ - app/assets/icons/heroicons/solid/status-online.svg
653
+ - app/assets/icons/heroicons/solid/stop.svg
654
+ - app/assets/icons/heroicons/solid/sun.svg
655
+ - app/assets/icons/heroicons/solid/support.svg
656
+ - app/assets/icons/heroicons/solid/switch-horizontal.svg
657
+ - app/assets/icons/heroicons/solid/switch-vertical.svg
658
+ - app/assets/icons/heroicons/solid/table.svg
659
+ - app/assets/icons/heroicons/solid/tag.svg
660
+ - app/assets/icons/heroicons/solid/template.svg
661
+ - app/assets/icons/heroicons/solid/terminal.svg
662
+ - app/assets/icons/heroicons/solid/thumb-down.svg
663
+ - app/assets/icons/heroicons/solid/thumb-up.svg
664
+ - app/assets/icons/heroicons/solid/ticket.svg
665
+ - app/assets/icons/heroicons/solid/translate.svg
666
+ - app/assets/icons/heroicons/solid/trash.svg
667
+ - app/assets/icons/heroicons/solid/trending-down.svg
668
+ - app/assets/icons/heroicons/solid/trending-up.svg
669
+ - app/assets/icons/heroicons/solid/truck.svg
670
+ - app/assets/icons/heroicons/solid/upload.svg
671
+ - app/assets/icons/heroicons/solid/user-add.svg
672
+ - app/assets/icons/heroicons/solid/user-circle.svg
673
+ - app/assets/icons/heroicons/solid/user-group.svg
674
+ - app/assets/icons/heroicons/solid/user-remove.svg
675
+ - app/assets/icons/heroicons/solid/user.svg
676
+ - app/assets/icons/heroicons/solid/users.svg
677
+ - app/assets/icons/heroicons/solid/variable.svg
678
+ - app/assets/icons/heroicons/solid/video-camera.svg
679
+ - app/assets/icons/heroicons/solid/view-boards.svg
680
+ - app/assets/icons/heroicons/solid/view-grid-add.svg
681
+ - app/assets/icons/heroicons/solid/view-grid.svg
682
+ - app/assets/icons/heroicons/solid/view-list.svg
683
+ - app/assets/icons/heroicons/solid/volume-off.svg
684
+ - app/assets/icons/heroicons/solid/volume-up.svg
685
+ - app/assets/icons/heroicons/solid/wifi.svg
686
+ - app/assets/icons/heroicons/solid/x-circle.svg
687
+ - app/assets/icons/heroicons/solid/x.svg
688
+ - app/assets/icons/heroicons/solid/zoom-in.svg
689
+ - app/assets/icons/heroicons/solid/zoom-out.svg
271
690
  - app/assets/icons/spina/barchart.svg
272
691
  - app/assets/icons/spina/bars.svg
273
692
  - app/assets/icons/spina/bold.svg
@@ -336,85 +755,136 @@ files:
336
755
  - app/assets/icons/spina/undo.svg
337
756
  - app/assets/icons/spina/upload-outline.svg
338
757
  - app/assets/icons/spina/users-outline.svg
339
- - app/assets/images/spina/arrow-left.svg
340
- - app/assets/images/spina/arrow-right.svg
341
- - app/assets/images/spina/datepicker.svg
342
- - app/assets/images/spina/divider.svg
343
758
  - app/assets/images/spina/favicon.png
344
- - app/assets/images/spina/media_folder_placeholder.svg
345
759
  - app/assets/images/spina/spina.png
346
760
  - app/assets/images/spina/spina.svg
347
- - app/assets/javascripts/spina/admin/application.js
348
- - app/assets/javascripts/spina/admin/confirm_delete.coffee.erb
349
- - app/assets/javascripts/spina/admin/controllers/attachment_picker_controller.js
350
- - app/assets/javascripts/spina/admin/controllers/gallery_select_controller.js
351
- - app/assets/javascripts/spina/admin/controllers/image_form_controller.js
352
- - app/assets/javascripts/spina/admin/controllers/infinite_scroll_controller.js
353
- - app/assets/javascripts/spina/admin/controllers/media_picker_controller.js
354
- - app/assets/javascripts/spina/admin/controllers/modal_controller.js
355
- - app/assets/javascripts/spina/admin/controllers/page_collapse_controller.js
356
- - app/assets/javascripts/spina/admin/controllers/repeater_form_controller.js
357
- - app/assets/javascripts/spina/admin/dropdown.coffee
358
- - app/assets/javascripts/spina/admin/forms.coffee
359
- - app/assets/javascripts/spina/admin/media_gallery.coffee
360
- - app/assets/javascripts/spina/admin/modal.coffee
361
- - app/assets/javascripts/spina/admin/navigation.coffee
362
- - app/assets/javascripts/spina/admin/notifications.coffee
363
- - app/assets/javascripts/spina/admin/pages.coffee.erb
364
- - app/assets/javascripts/spina/admin/scaffold.coffee
365
- - app/assets/javascripts/spina/admin/switch.coffee
366
- - app/assets/javascripts/spina/admin/tabs.coffee
367
- - app/assets/javascripts/spina/admin/trix.coffee.erb
368
- - app/assets/javascripts/spina/admin/uploads.coffee
369
- - app/assets/stylesheets/spina.sass
370
- - app/assets/stylesheets/spina/_admin_editing.sass
371
- - app/assets/stylesheets/spina/_buttons.sass
372
- - app/assets/stylesheets/spina/_configuration.sass.erb
373
- - app/assets/stylesheets/spina/_custom_animations.sass
374
- - app/assets/stylesheets/spina/_fonts.sass
375
- - app/assets/stylesheets/spina/_forms.sass
376
- - app/assets/stylesheets/spina/_gallery.sass
377
- - app/assets/stylesheets/spina/_ics_spina.scss
378
- - app/assets/stylesheets/spina/_labels.sass
379
- - app/assets/stylesheets/spina/_login.sass
380
- - app/assets/stylesheets/spina/_media_picker.sass
381
- - app/assets/stylesheets/spina/_mixins.sass
382
- - app/assets/stylesheets/spina/_modal.sass
383
- - app/assets/stylesheets/spina/_normalize.scss
384
- - app/assets/stylesheets/spina/_notifications.sass
385
- - app/assets/stylesheets/spina/_pages.sass
386
- - app/assets/stylesheets/spina/_sortable_lists.sass
387
- - app/assets/stylesheets/spina/_tables.sass
388
- - app/assets/stylesheets/spina/_trix_custom.sass
389
- - app/assets/stylesheets/spina/_wizard.sass
390
- - app/assets/stylesheets/spina/admin/application.css.sass
761
+ - app/assets/javascripts/spina/controllers/attachment_picker_controller.js
762
+ - app/assets/javascripts/spina/controllers/autofocus_controller.js
763
+ - app/assets/javascripts/spina/controllers/button_controller.js
764
+ - app/assets/javascripts/spina/controllers/confetti_controller.js
765
+ - app/assets/javascripts/spina/controllers/confirm_controller.js
766
+ - app/assets/javascripts/spina/controllers/delegate_click_controller.js
767
+ - app/assets/javascripts/spina/controllers/exists_controller.js
768
+ - app/assets/javascripts/spina/controllers/form_controller.js
769
+ - app/assets/javascripts/spina/controllers/hotkeys_controller.js
770
+ - app/assets/javascripts/spina/controllers/image_collection_controller.js
771
+ - app/assets/javascripts/spina/controllers/image_fade_in_controller.js
772
+ - app/assets/javascripts/spina/controllers/infinite_scroll_controller.js
773
+ - app/assets/javascripts/spina/controllers/loading_button_controller.js
774
+ - app/assets/javascripts/spina/controllers/media_picker_controller.js
775
+ - app/assets/javascripts/spina/controllers/media_picker_modal_controller.js
776
+ - app/assets/javascripts/spina/controllers/modal_controller.js
777
+ - app/assets/javascripts/spina/controllers/navigation_controller.js
778
+ - app/assets/javascripts/spina/controllers/parent_pages_controller.js
779
+ - app/assets/javascripts/spina/controllers/repeater_controller.js
780
+ - app/assets/javascripts/spina/controllers/reveal_controller.js
781
+ - app/assets/javascripts/spina/controllers/select_placeholder_controller.js
782
+ - app/assets/javascripts/spina/controllers/selectable_controller.js
783
+ - app/assets/javascripts/spina/controllers/shortcuts_controller.js
784
+ - app/assets/javascripts/spina/controllers/sortable_controller.js
785
+ - app/assets/javascripts/spina/controllers/switch_controller.js
786
+ - app/assets/javascripts/spina/controllers/tabs_controller.js
787
+ - app/assets/javascripts/spina/controllers/toggle_controller.js
788
+ - app/assets/javascripts/spina/controllers/trix_controller.js
789
+ - app/assets/javascripts/spina/controllers/unique_id_controller.js
790
+ - app/assets/javascripts/spina/importmap.json.erb
791
+ - app/assets/javascripts/spina/libraries/canvas-confetti.js
792
+ - app/assets/javascripts/spina/libraries/canvas-confetti@1.3.2.js
793
+ - app/assets/javascripts/spina/libraries/form-request-submit-polyfill.js
794
+ - app/assets/javascripts/spina/libraries/form-request-submit-polyfill@2.0.0.js
795
+ - app/assets/javascripts/spina/libraries/hotkeys.js
796
+ - app/assets/javascripts/spina/libraries/hotkeys@3.8.7.js
797
+ - app/assets/javascripts/spina/libraries/sortablejs.js
798
+ - app/assets/javascripts/spina/libraries/sortablejs@1.13.0.js
799
+ - app/assets/javascripts/spina/libraries/stimulus-reveal@1.2.4.js
800
+ - app/assets/javascripts/spina/libraries/trix.js
801
+ - app/assets/javascripts/spina/libraries/trix@1.3.1.js
802
+ - app/assets/stylesheets/spina/_animate.css
803
+ - app/assets/stylesheets/spina/_fonts.scss
804
+ - app/assets/stylesheets/spina/_tailwind.css
391
805
  - app/assets/stylesheets/spina/application.sass
392
- - app/assets/stylesheets/spina_front_end.sass
806
+ - app/assets/stylesheets/spina/tailwind/custom.css
807
+ - app/components/spina/application_component.rb
808
+ - app/components/spina/forms/group_component.html.erb
809
+ - app/components/spina/forms/group_component.rb
810
+ - app/components/spina/forms/label_component.rb
811
+ - app/components/spina/forms/password_field_component.html.erb
812
+ - app/components/spina/forms/password_field_component.rb
813
+ - app/components/spina/forms/switch_component.html.erb
814
+ - app/components/spina/forms/switch_component.rb
815
+ - app/components/spina/forms/text_field_component.html.erb
816
+ - app/components/spina/forms/text_field_component.rb
817
+ - app/components/spina/forms/trix_toolbar_component.html.erb
818
+ - app/components/spina/forms/trix_toolbar_component.rb
819
+ - app/components/spina/hooks/hook_component.rb
820
+ - app/components/spina/hooks/partial_component.rb
821
+ - app/components/spina/main_navigation/link_component.html.erb
822
+ - app/components/spina/main_navigation/link_component.rb
823
+ - app/components/spina/main_navigation/sub_nav_component.html.erb
824
+ - app/components/spina/main_navigation/sub_nav_component.rb
825
+ - app/components/spina/media_picker/image_component.html.erb
826
+ - app/components/spina/media_picker/image_component.rb
827
+ - app/components/spina/media_picker/modal_component.html.erb
828
+ - app/components/spina/media_picker/modal_component.rb
829
+ - app/components/spina/pages/actions_component.html.erb
830
+ - app/components/spina/pages/actions_component.rb
831
+ - app/components/spina/pages/list_component.html.erb
832
+ - app/components/spina/pages/list_component.rb
833
+ - app/components/spina/pages/location_component.html.erb
834
+ - app/components/spina/pages/location_component.rb
835
+ - app/components/spina/pages/page_component.html.erb
836
+ - app/components/spina/pages/page_component.rb
837
+ - app/components/spina/pages/page_select_component.html.erb
838
+ - app/components/spina/pages/page_select_component.rb
839
+ - app/components/spina/pages/tab_button_component.html.erb
840
+ - app/components/spina/pages/tab_button_component.rb
841
+ - app/components/spina/pages/translations_component.html.erb
842
+ - app/components/spina/pages/translations_component.rb
843
+ - app/components/spina/user_interface/dropdown_button_component.rb
844
+ - app/components/spina/user_interface/dropdown_component.html.erb
845
+ - app/components/spina/user_interface/dropdown_component.rb
846
+ - app/components/spina/user_interface/flash_message_component.html.erb
847
+ - app/components/spina/user_interface/flash_message_component.rb
848
+ - app/components/spina/user_interface/header_component.html.erb
849
+ - app/components/spina/user_interface/header_component.rb
850
+ - app/components/spina/user_interface/modal_component.html.erb
851
+ - app/components/spina/user_interface/modal_component.rb
852
+ - app/components/spina/user_interface/tab_link_component.html.erb
853
+ - app/components/spina/user_interface/tab_link_component.rb
393
854
  - app/controllers/concerns/spina/current_methods.rb
394
855
  - app/controllers/concerns/spina/frontend.rb
395
856
  - app/controllers/spina/admin/accounts_controller.rb
396
857
  - app/controllers/spina/admin/admin_controller.rb
397
858
  - app/controllers/spina/admin/attachments_controller.rb
398
859
  - app/controllers/spina/admin/images_controller.rb
860
+ - app/controllers/spina/admin/layout_controller.rb
399
861
  - app/controllers/spina/admin/media_folders_controller.rb
400
862
  - app/controllers/spina/admin/media_picker_controller.rb
863
+ - app/controllers/spina/admin/move_pages_controller.rb
864
+ - app/controllers/spina/admin/navigation_items_controller.rb
401
865
  - app/controllers/spina/admin/navigations_controller.rb
402
866
  - app/controllers/spina/admin/pages_controller.rb
867
+ - app/controllers/spina/admin/parent_pages_controller.rb
403
868
  - app/controllers/spina/admin/password_resets_controller.rb
404
869
  - app/controllers/spina/admin/resources_controller.rb
405
870
  - app/controllers/spina/admin/sessions_controller.rb
406
871
  - app/controllers/spina/admin/settings_controller.rb
872
+ - app/controllers/spina/admin/theme_controller.rb
407
873
  - app/controllers/spina/admin/users_controller.rb
408
874
  - app/controllers/spina/application_controller.rb
409
875
  - app/controllers/spina/pages_controller.rb
410
876
  - app/controllers/spina/sitemaps_controller.rb
411
- - app/helpers/spina/admin/admin_helper.rb
877
+ - app/helpers/spina/admin/icons_helper.rb
878
+ - app/helpers/spina/admin/images_helper.rb
412
879
  - app/helpers/spina/admin/pages_helper.rb
413
- - app/helpers/spina/admin_nav_helper.rb
414
880
  - app/helpers/spina/attachments_helper.rb
415
881
  - app/helpers/spina/images_helper.rb
416
882
  - app/helpers/spina/pages_helper.rb
883
+ - app/helpers/spina/spina_helper.rb
884
+ - app/jobs/spina/application_job.rb
885
+ - app/jobs/spina/resource_pages_update_job.rb
417
886
  - app/mailers/spina/user_mailer.rb
887
+ - app/models/concerns/spina/gravatar.rb
418
888
  - app/models/concerns/spina/partable.rb
419
889
  - app/models/concerns/spina/translated_content.rb
420
890
  - app/models/spina/account.rb
@@ -443,91 +913,76 @@ files:
443
913
  - app/models/spina/user.rb
444
914
  - app/presenters/spina/content_presenter.rb
445
915
  - app/presenters/spina/menu_presenter.rb
446
- - app/views/layouts/spina/admin/admin.html.haml
447
- - app/views/layouts/spina/admin/media_library.html.haml
448
- - app/views/layouts/spina/admin/pages.html.haml
449
- - app/views/layouts/spina/admin/resources.html.haml
450
- - app/views/layouts/spina/login.html.haml
916
+ - app/views/layouts/spina/admin/admin.html.erb
917
+ - app/views/layouts/spina/admin/application.html.erb
918
+ - app/views/layouts/spina/admin/sessions.html.erb
451
919
  - app/views/layouts/spina/mail.html.erb
452
- - app/views/spina/admin/accounts/_form.html.haml
453
- - app/views/spina/admin/accounts/analytics.html.haml
454
- - app/views/spina/admin/accounts/edit.html.haml
455
- - app/views/spina/admin/accounts/social.html.haml
456
- - app/views/spina/admin/accounts/style.html.haml
457
- - app/views/spina/admin/attachments/_attachment.html.haml
458
- - app/views/spina/admin/attachments/create.js.erb
459
- - app/views/spina/admin/attachments/index.html.haml
460
- - app/views/spina/admin/images/_form.html.haml
461
- - app/views/spina/admin/images/_image.html.haml
462
- - app/views/spina/admin/images/create.js.erb
463
- - app/views/spina/admin/images/index.html.haml
464
- - app/views/spina/admin/images/index.js.erb
465
- - app/views/spina/admin/media_folders/_form.html.haml
466
- - app/views/spina/admin/media_folders/_media_folder.html.haml
467
- - app/views/spina/admin/media_folders/edit.js.erb
468
- - app/views/spina/admin/media_folders/new.js.erb
469
- - app/views/spina/admin/media_folders/show.html.haml
470
- - app/views/spina/admin/media_picker/_image.html.haml
471
- - app/views/spina/admin/media_picker/_media_picker.html.haml
472
- - app/views/spina/admin/media_picker/_media_picker_grid.html.haml
473
- - app/views/spina/admin/media_picker/_modal.html.haml
474
- - app/views/spina/admin/media_picker/infinite_scroll.js.erb
475
- - app/views/spina/admin/media_picker/select.js.erb
476
- - app/views/spina/admin/media_picker/show.html.haml
477
- - app/views/spina/admin/media_picker/show.js.erb
478
- - app/views/spina/admin/navigations/_navigation_item_nested_list.html.haml
479
- - app/views/spina/admin/navigations/_page.html.haml
480
- - app/views/spina/admin/navigations/edit.html.haml
481
- - app/views/spina/admin/navigations/show.html.haml
482
- - app/views/spina/admin/pages/_form.html.haml
483
- - app/views/spina/admin/pages/_form_advanced.html.haml
484
- - app/views/spina/admin/pages/_form_page_content.html.haml
485
- - app/views/spina/admin/pages/_form_page_seo.html.haml
486
- - app/views/spina/admin/pages/_page.html.haml
487
- - app/views/spina/admin/pages/_page_nested_list.html.haml
488
- - app/views/spina/admin/pages/children.html.haml
489
- - app/views/spina/admin/pages/create.js.coffee
490
- - app/views/spina/admin/pages/edit.html.haml
491
- - app/views/spina/admin/pages/index.html.haml
492
- - app/views/spina/admin/pages/new.html.haml
493
- - app/views/spina/admin/pages/update.js.coffee
494
- - app/views/spina/admin/parts/attachments/_form.html.haml
495
- - app/views/spina/admin/parts/image_collections/_fields.html.haml
496
- - app/views/spina/admin/parts/image_collections/_form.html.haml
497
- - app/views/spina/admin/parts/images/_form.html.haml
498
- - app/views/spina/admin/parts/lines/_form.html.haml
499
- - app/views/spina/admin/parts/multi_lines/_form.html.haml
500
- - app/views/spina/admin/parts/options/_form.html.haml
501
- - app/views/spina/admin/parts/repeaters/_fields.html.haml
502
- - app/views/spina/admin/parts/repeaters/_form.html.haml
503
- - app/views/spina/admin/parts/texts/_form.html.haml
504
- - app/views/spina/admin/password_resets/edit.html.haml
505
- - app/views/spina/admin/password_resets/new.html.haml
506
- - app/views/spina/admin/resources/edit.html.haml
507
- - app/views/spina/admin/resources/show.html.haml
508
- - app/views/spina/admin/sessions/new.html.haml
509
- - app/views/spina/admin/settings/_string_field.html.haml
510
- - app/views/spina/admin/settings/_wysiwyg_field.html.haml
511
- - app/views/spina/admin/settings/edit.html.haml
512
- - app/views/spina/admin/shared/_breadcrumbs.html.haml
513
- - app/views/spina/admin/shared/_notifications.html.haml
514
- - app/views/spina/admin/shared/_primary_navigation.html.haml
515
- - app/views/spina/admin/shared/_rich_text_field.html.haml
516
- - app/views/spina/admin/users/_form.html.haml
517
- - app/views/spina/admin/users/edit.html.haml
518
- - app/views/spina/admin/users/index.html.haml
519
- - app/views/spina/admin/users/new.html.haml
520
- - app/views/spina/pages/robots.text.erb
521
- - app/views/spina/shared/_admin_bar.html.haml
522
- - app/views/spina/shared/_analytics.html.erb
523
- - app/views/spina/shared/_google_site_verification.html.haml
524
- - app/views/spina/shared/_navigation.html.haml
525
- - app/views/spina/shared/_social.html.haml
526
- - app/views/spina/shared/_spina_link.html.haml
920
+ - app/views/spina/admin/accounts/edit.html.erb
921
+ - app/views/spina/admin/attachments/_attachment.html.erb
922
+ - app/views/spina/admin/attachments/edit.html.erb
923
+ - app/views/spina/admin/attachments/index.html.erb
924
+ - app/views/spina/admin/attachments/show.html.erb
925
+ - app/views/spina/admin/images/_image.html.erb
926
+ - app/views/spina/admin/images/edit.html.erb
927
+ - app/views/spina/admin/images/index.html.erb
928
+ - app/views/spina/admin/images/show.html.erb
929
+ - app/views/spina/admin/images/update.turbo_stream.erb
930
+ - app/views/spina/admin/layout/edit.html.erb
931
+ - app/views/spina/admin/media_folders/_form.html.erb
932
+ - app/views/spina/admin/media_folders/_media_folder.html.erb
933
+ - app/views/spina/admin/media_folders/edit.html.erb
934
+ - app/views/spina/admin/media_folders/new.html.erb
935
+ - app/views/spina/admin/media_picker/show.html.erb
936
+ - app/views/spina/admin/move_pages/new.html.erb
937
+ - app/views/spina/admin/navigation_items/_form.html.erb
938
+ - app/views/spina/admin/navigation_items/_navigation_item.html.erb
939
+ - app/views/spina/admin/navigation_items/new.html.erb
940
+ - app/views/spina/admin/navigations/_navigation.html.erb
941
+ - app/views/spina/admin/navigations/edit.html.erb
942
+ - app/views/spina/admin/navigations/index.html.erb
943
+ - app/views/spina/admin/pages/_button_advanced.html.erb
944
+ - app/views/spina/admin/pages/_button_page_content.html.erb
945
+ - app/views/spina/admin/pages/_button_search_engines.html.erb
946
+ - app/views/spina/admin/pages/_form.html.erb
947
+ - app/views/spina/admin/pages/_form_advanced.html.erb
948
+ - app/views/spina/admin/pages/_form_page_content.html.erb
949
+ - app/views/spina/admin/pages/_form_search_engines.html.erb
950
+ - app/views/spina/admin/pages/_new_page_form.html.erb
951
+ - app/views/spina/admin/pages/edit.html.erb
952
+ - app/views/spina/admin/pages/edit_content.html.erb
953
+ - app/views/spina/admin/pages/edit_template.html.erb
954
+ - app/views/spina/admin/pages/index.html.erb
955
+ - app/views/spina/admin/pages/new.html.erb
956
+ - app/views/spina/admin/parent_pages/index.html.erb
957
+ - app/views/spina/admin/parts/attachments/_form.html.erb
958
+ - app/views/spina/admin/parts/image_collections/_fields.html.erb
959
+ - app/views/spina/admin/parts/image_collections/_form.html.erb
960
+ - app/views/spina/admin/parts/images/_form.html.erb
961
+ - app/views/spina/admin/parts/lines/_form.html.erb
962
+ - app/views/spina/admin/parts/multi_lines/_form.html.erb
963
+ - app/views/spina/admin/parts/options/_form.html.erb
964
+ - app/views/spina/admin/parts/repeaters/_fields.html.erb
965
+ - app/views/spina/admin/parts/repeaters/_form.html.erb
966
+ - app/views/spina/admin/parts/texts/_form.html.erb
967
+ - app/views/spina/admin/password_resets/edit.html.erb
968
+ - app/views/spina/admin/password_resets/new.html.erb
969
+ - app/views/spina/admin/resources/edit.html.erb
970
+ - app/views/spina/admin/sessions/new.html.erb
971
+ - app/views/spina/admin/settings/_string_field.html.erb
972
+ - app/views/spina/admin/settings/_text_field.html.erb
973
+ - app/views/spina/admin/settings/_wysiwyg_field.html.erb
974
+ - app/views/spina/admin/settings/edit.html.erb
975
+ - app/views/spina/admin/shared/_flash.html.erb
976
+ - app/views/spina/admin/shared/_navigation.html.erb
977
+ - app/views/spina/admin/theme/edit.html.erb
978
+ - app/views/spina/admin/users/_form.html.erb
979
+ - app/views/spina/admin/users/_user.html.erb
980
+ - app/views/spina/admin/users/edit.html.erb
981
+ - app/views/spina/admin/users/index.html.erb
982
+ - app/views/spina/admin/users/new.html.erb
527
983
  - app/views/spina/sitemaps/show.xml.builder
528
984
  - app/views/spina/user_mailer/forgot_password.html.erb
529
985
  - app/views/spina/user_mailer/forgot_password.txt.erb
530
- - config/fontcustom.yml
531
986
  - config/locales/TH.yml
532
987
  - config/locales/bg.yml
533
988
  - config/locales/de.yml
@@ -562,48 +1017,40 @@ files:
562
1017
  - db/migrate/9_create_spina_images.rb
563
1018
  - db/seeds.rb
564
1019
  - lib/generators/spina/install_generator.rb
565
- - lib/generators/spina/templates/app/assets/stylesheets/default/application.css.sass
566
- - lib/generators/spina/templates/app/assets/stylesheets/demo/application.css.sass
567
- - lib/generators/spina/templates/app/views/default/pages/homepage.html.haml
568
- - lib/generators/spina/templates/app/views/default/pages/show.html.haml
569
- - lib/generators/spina/templates/app/views/default/shared/_navigation.html.haml
570
- - lib/generators/spina/templates/app/views/demo/pages/demo.html.haml
571
- - lib/generators/spina/templates/app/views/demo/pages/homepage.html.haml
572
- - lib/generators/spina/templates/app/views/demo/pages/show.html.haml
573
- - lib/generators/spina/templates/app/views/demo/shared/_languages.html.haml
574
- - lib/generators/spina/templates/app/views/demo/shared/_navigation.html.haml
575
- - lib/generators/spina/templates/app/views/layouts/default/application.html.haml
576
- - lib/generators/spina/templates/app/views/layouts/demo/application.html.haml
1020
+ - lib/generators/spina/templates/app/views/default/pages/homepage.html.erb
1021
+ - lib/generators/spina/templates/app/views/default/pages/show.html.erb
1022
+ - lib/generators/spina/templates/app/views/default/shared/_navigation.html.erb
1023
+ - lib/generators/spina/templates/app/views/demo/pages/demo.html.erb
1024
+ - lib/generators/spina/templates/app/views/demo/pages/homepage.html.erb
1025
+ - lib/generators/spina/templates/app/views/demo/pages/show.html.erb
1026
+ - lib/generators/spina/templates/app/views/demo/shared/_languages.html.erb
1027
+ - lib/generators/spina/templates/app/views/demo/shared/_navigation.html.erb
1028
+ - lib/generators/spina/templates/app/views/layouts/default/application.html.erb
1029
+ - lib/generators/spina/templates/app/views/layouts/demo/application.html.erb
577
1030
  - lib/generators/spina/templates/config/initializers/mobility.rb
578
1031
  - lib/generators/spina/templates/config/initializers/spina.rb
579
1032
  - lib/generators/spina/templates/config/initializers/themes/default.rb
580
1033
  - lib/generators/spina/templates/config/initializers/themes/demo.rb
581
1034
  - lib/spina.rb
1035
+ - lib/spina/admin_sectionable.rb
1036
+ - lib/spina/attr_json_monkeypatch.rb
582
1037
  - lib/spina/attr_json_spina_parts_model.rb
583
1038
  - lib/spina/engine.rb
584
- - lib/spina/fontcustom/_ics_spina.scss
1039
+ - lib/spina/importmap_helper.rb
585
1040
  - lib/spina/part.rb
586
1041
  - lib/spina/plugin.rb
587
1042
  - lib/spina/railtie.rb
1043
+ - lib/spina/tailwind_purger.rb
588
1044
  - lib/spina/theme.rb
589
1045
  - lib/spina/version.rb
590
1046
  - lib/tasks/spina_tasks.rake
591
- - vendor/assets/javascripts/spina/jquery.customfileinput.js
592
- - vendor/assets/javascripts/spina/jquery.nestable.js
593
- - vendor/assets/javascripts/spina/jquery.ui.js
594
- - vendor/assets/javascripts/spina/sortable.js
595
- - vendor/assets/javascripts/spina/stimulus.umd.js
596
- - vendor/assets/javascripts/spina/trix.js
597
- - vendor/assets/stylesheets/spina/_animate.scss
598
- - vendor/assets/stylesheets/spina/_normalize.scss
599
- - vendor/assets/stylesheets/spina/_trix.css
600
1047
  homepage: https://www.spinacms.com
601
1048
  licenses:
602
1049
  - MIT
603
1050
  metadata:
604
1051
  homepage_uri: https://www.spinacms.com
605
1052
  bug_tracker_uri: https://github.com/SpinaCMS/Spina/issues
606
- documentation_uri: https://www.spinacms.com/guide
1053
+ documentation_uri: https://www.spinacms.com/docs
607
1054
  changelog_uri: https://github.com/SpinaCMS/Spina/blob/master/CHANGELOG.md
608
1055
  source_code_uri: https://github.com/SpinaCMS/Spina
609
1056
  post_install_message: