spina 2.0.1 → 2.2.0

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 (872) 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_account.rb +17 -0
  555. data/app/controllers/concerns/spina/current_theme.rb +17 -0
  556. data/app/controllers/spina/admin/accounts_controller.rb +13 -21
  557. data/app/controllers/spina/admin/admin_controller.rb +18 -14
  558. data/app/controllers/spina/admin/attachments_controller.rb +27 -6
  559. data/app/controllers/spina/admin/images_controller.rb +49 -13
  560. data/app/controllers/spina/admin/layout_controller.rb +41 -0
  561. data/app/controllers/spina/admin/media_folders_controller.rb +10 -13
  562. data/app/controllers/spina/admin/media_picker_controller.rb +6 -30
  563. data/app/controllers/spina/admin/move_pages_controller.rb +24 -0
  564. data/app/controllers/spina/admin/navigation_items_controller.rb +36 -0
  565. data/app/controllers/spina/admin/navigations_controller.rb +19 -16
  566. data/app/controllers/spina/admin/pages_controller.rb +68 -65
  567. data/app/controllers/spina/admin/parent_pages_controller.rb +10 -0
  568. data/app/controllers/spina/admin/password_resets_controller.rb +4 -4
  569. data/app/controllers/spina/admin/resources_controller.rb +4 -7
  570. data/app/controllers/spina/admin/sessions_controller.rb +5 -8
  571. data/app/controllers/spina/admin/settings_controller.rb +30 -29
  572. data/app/controllers/spina/admin/theme_controller.rb +23 -0
  573. data/app/controllers/spina/admin/users_controller.rb +32 -13
  574. data/app/controllers/spina/application_controller.rb +2 -1
  575. data/app/controllers/spina/pages_controller.rb +5 -5
  576. data/app/helpers/spina/admin/icons_helper.rb +26 -0
  577. data/app/helpers/spina/admin/images_helper.rb +18 -0
  578. data/app/helpers/spina/admin/pages_helper.rb +21 -48
  579. data/app/helpers/spina/attachments_helper.rb +1 -1
  580. data/app/helpers/spina/images_helper.rb +30 -2
  581. data/app/helpers/spina/spina_helper.rb +16 -0
  582. data/app/jobs/spina/application_job.rb +4 -0
  583. data/app/jobs/spina/resource_pages_update_job.rb +11 -0
  584. data/app/models/concerns/spina/gravatar.rb +20 -0
  585. data/app/models/concerns/spina/translated_content.rb +8 -7
  586. data/app/models/spina/account.rb +2 -0
  587. data/app/models/spina/application_record.rb +6 -0
  588. data/app/models/spina/attachment.rb +5 -1
  589. data/app/models/spina/current.rb +2 -0
  590. data/app/models/spina/navigation.rb +1 -0
  591. data/app/models/spina/navigation_item.rb +1 -1
  592. data/app/models/spina/page.rb +10 -5
  593. data/app/models/spina/parts/base.rb +6 -0
  594. data/app/models/spina/parts/image.rb +2 -0
  595. data/app/models/spina/resource.rb +12 -2
  596. data/app/models/spina/user.rb +4 -16
  597. data/app/views/layouts/spina/admin/admin.html.erb +18 -0
  598. data/app/views/layouts/spina/admin/application.html.erb +31 -0
  599. data/app/views/layouts/spina/admin/sessions.html.erb +1 -0
  600. data/app/views/spina/admin/accounts/edit.html.erb +49 -0
  601. data/app/views/spina/admin/attachments/_attachment.html.erb +33 -0
  602. data/app/views/spina/admin/attachments/edit.html.erb +16 -0
  603. data/app/views/spina/admin/attachments/index.html.erb +46 -0
  604. data/app/views/spina/admin/attachments/show.html.erb +1 -0
  605. data/app/views/spina/admin/images/_image.html.erb +65 -0
  606. data/app/views/spina/admin/images/edit.html.erb +16 -0
  607. data/app/views/spina/admin/images/index.html.erb +73 -0
  608. data/app/views/spina/admin/images/show.html.erb +1 -0
  609. data/app/views/spina/admin/images/update.turbo_stream.erb +5 -0
  610. data/app/views/spina/admin/layout/edit.html.erb +34 -0
  611. data/app/views/spina/admin/media_folders/_form.html.erb +30 -0
  612. data/app/views/spina/admin/media_folders/_media_folder.html.erb +18 -0
  613. data/app/views/spina/admin/media_folders/edit.html.erb +3 -0
  614. data/app/views/spina/admin/media_folders/new.html.erb +3 -0
  615. data/app/views/spina/admin/media_picker/show.html.erb +1 -0
  616. data/app/views/spina/admin/move_pages/new.html.erb +32 -0
  617. data/app/views/spina/admin/navigation_items/_form.html.erb +29 -0
  618. data/app/views/spina/admin/navigation_items/_navigation_item.html.erb +36 -0
  619. data/app/views/spina/admin/navigation_items/new.html.erb +3 -0
  620. data/app/views/spina/admin/navigations/_navigation.html.erb +1 -0
  621. data/app/views/spina/admin/navigations/edit.html.erb +32 -0
  622. data/app/views/spina/admin/navigations/index.html.erb +7 -0
  623. data/app/views/spina/admin/pages/_button_advanced.html.erb +4 -0
  624. data/app/views/spina/admin/pages/_button_page_content.html.erb +4 -0
  625. data/app/views/spina/admin/pages/_button_search_engines.html.erb +5 -0
  626. data/app/views/spina/admin/pages/_form.html.erb +36 -0
  627. data/app/views/spina/admin/pages/_form_advanced.html.erb +55 -0
  628. data/app/views/spina/admin/pages/_form_page_content.html.erb +8 -0
  629. data/app/views/spina/admin/pages/_form_search_engines.html.erb +45 -0
  630. data/app/views/spina/admin/pages/_new_page_form.html.erb +35 -0
  631. data/app/views/spina/admin/pages/edit.html.erb +1 -0
  632. data/app/views/spina/admin/pages/edit_content.html.erb +11 -0
  633. data/app/views/spina/admin/pages/edit_template.html.erb +36 -0
  634. data/app/views/spina/admin/pages/index.html.erb +66 -0
  635. data/app/views/spina/admin/pages/new.html.erb +3 -0
  636. data/app/views/spina/admin/parent_pages/index.html.erb +3 -0
  637. data/app/views/spina/admin/parts/attachments/_form.html.erb +8 -0
  638. data/app/views/spina/admin/parts/image_collections/_fields.html.erb +16 -0
  639. data/app/views/spina/admin/parts/image_collections/_form.html.erb +30 -0
  640. data/app/views/spina/admin/parts/images/_form.html.erb +32 -0
  641. data/app/views/spina/admin/parts/lines/_form.html.erb +6 -0
  642. data/app/views/spina/admin/parts/multi_lines/_form.html.erb +4 -0
  643. data/app/views/spina/admin/parts/options/_form.html.erb +5 -0
  644. data/app/views/spina/admin/parts/repeaters/_fields.html.erb +18 -0
  645. data/app/views/spina/admin/parts/repeaters/_form.html.erb +37 -0
  646. data/app/views/spina/admin/parts/texts/_form.html.erb +12 -0
  647. data/app/views/spina/admin/password_resets/edit.html.erb +22 -0
  648. data/app/views/spina/admin/password_resets/new.html.erb +21 -0
  649. data/app/views/spina/admin/resources/edit.html.erb +55 -0
  650. data/app/views/spina/admin/sessions/new.html.erb +24 -0
  651. data/app/views/spina/admin/settings/_string_field.html.erb +4 -0
  652. data/app/views/spina/admin/settings/_text_field.html.erb +5 -0
  653. data/app/views/spina/admin/settings/_wysiwyg_field.html.erb +13 -0
  654. data/app/views/spina/admin/settings/edit.html.erb +24 -0
  655. data/app/views/spina/admin/shared/_flash.html.erb +5 -0
  656. data/app/views/spina/admin/shared/_navigation.html.erb +71 -0
  657. data/app/views/spina/admin/theme/edit.html.erb +21 -0
  658. data/app/views/spina/admin/users/_form.html.erb +52 -0
  659. data/app/views/spina/admin/users/_user.html.erb +36 -0
  660. data/app/views/spina/admin/users/edit.html.erb +1 -0
  661. data/app/views/spina/admin/users/index.html.erb +15 -0
  662. data/app/views/spina/admin/users/new.html.erb +1 -0
  663. data/app/views/spina/user_mailer/forgot_password.html.erb +1 -1
  664. data/app/views/spina/user_mailer/forgot_password.txt.erb +1 -1
  665. data/config/locales/TH.yml +98 -2
  666. data/config/locales/bg.yml +98 -2
  667. data/config/locales/de.yml +184 -78
  668. data/config/locales/en.yml +106 -2
  669. data/config/locales/es.yml +139 -41
  670. data/config/locales/fr.yml +98 -2
  671. data/config/locales/id.yml +98 -2
  672. data/config/locales/it.yml +107 -11
  673. data/config/locales/nl.yml +103 -5
  674. data/config/locales/pl.yml +98 -2
  675. data/config/locales/pt-BR.yml +98 -2
  676. data/config/locales/ro.yml +98 -2
  677. data/config/locales/ru.yml +98 -2
  678. data/config/locales/sv.yml +98 -2
  679. data/config/locales/tr.yml +98 -2
  680. data/config/locales/zh-CN.yml +98 -2
  681. data/config/routes.rb +21 -24
  682. data/lib/generators/spina/install_generator.rb +0 -1
  683. data/lib/generators/spina/templates/app/views/default/pages/homepage.html.erb +2 -0
  684. data/lib/generators/spina/templates/app/views/default/pages/show.html.erb +3 -0
  685. data/lib/generators/spina/templates/app/views/default/shared/_navigation.html.erb +2 -0
  686. data/lib/generators/spina/templates/app/views/demo/pages/demo.html.erb +25 -0
  687. data/lib/generators/spina/templates/app/views/demo/pages/homepage.html.erb +3 -0
  688. data/lib/generators/spina/templates/app/views/demo/pages/show.html.erb +3 -0
  689. data/lib/generators/spina/templates/app/views/demo/shared/_languages.html.erb +5 -0
  690. data/lib/generators/spina/templates/app/views/demo/shared/_navigation.html.erb +2 -0
  691. data/lib/generators/spina/templates/app/views/layouts/default/application.html.erb +12 -0
  692. data/lib/generators/spina/templates/app/views/layouts/demo/application.html.erb +13 -0
  693. data/lib/generators/spina/templates/config/initializers/mobility.rb +1 -0
  694. data/lib/generators/spina/templates/config/initializers/spina.rb +44 -12
  695. data/lib/generators/spina/templates/config/initializers/themes/default.rb +59 -37
  696. data/lib/generators/spina/templates/config/initializers/themes/demo.rb +63 -64
  697. data/lib/spina.rb +52 -15
  698. data/lib/spina/admin_sectionable.rb +23 -0
  699. data/lib/spina/attr_json_monkeypatch.rb +28 -0
  700. data/lib/spina/authentication/basic.rb +24 -0
  701. data/lib/spina/authentication/sessions.rb +32 -0
  702. data/lib/spina/engine.rb +15 -9
  703. data/lib/spina/importmap_helper.rb +37 -0
  704. data/lib/spina/plugin.rb +7 -1
  705. data/lib/spina/railtie.rb +5 -1
  706. data/lib/spina/tailwind_purger.rb +147 -0
  707. data/lib/spina/theme.rb +14 -5
  708. data/lib/spina/version.rb +1 -1
  709. data/lib/tasks/spina_tasks.rake +36 -0
  710. metadata +669 -205
  711. data/app/assets/config/spina_manifest.js +0 -5
  712. data/app/assets/fonts/spina/ics_spina.eot +0 -0
  713. data/app/assets/fonts/spina/ics_spina.svg +0 -380
  714. data/app/assets/fonts/spina/ics_spina.ttf +0 -0
  715. data/app/assets/fonts/spina/ics_spina.woff +0 -0
  716. data/app/assets/fonts/spina/ics_spina.woff2 +0 -0
  717. data/app/assets/images/spina/arrow-left.svg +0 -1
  718. data/app/assets/images/spina/arrow-right.svg +0 -1
  719. data/app/assets/images/spina/datepicker.svg +0 -1
  720. data/app/assets/images/spina/divider.svg +0 -1
  721. data/app/assets/images/spina/media_folder_placeholder.svg +0 -1
  722. data/app/assets/javascripts/spina/admin/application.js +0 -48
  723. data/app/assets/javascripts/spina/admin/confirm_delete.coffee.erb +0 -24
  724. data/app/assets/javascripts/spina/admin/controllers/attachment_picker_controller.js +0 -15
  725. data/app/assets/javascripts/spina/admin/controllers/gallery_select_controller.js +0 -52
  726. data/app/assets/javascripts/spina/admin/controllers/image_form_controller.js +0 -22
  727. data/app/assets/javascripts/spina/admin/controllers/infinite_scroll_controller.js +0 -38
  728. data/app/assets/javascripts/spina/admin/controllers/media_picker_controller.js +0 -171
  729. data/app/assets/javascripts/spina/admin/controllers/modal_controller.js +0 -18
  730. data/app/assets/javascripts/spina/admin/controllers/page_collapse_controller.js +0 -35
  731. data/app/assets/javascripts/spina/admin/controllers/repeater_form_controller.js +0 -38
  732. data/app/assets/javascripts/spina/admin/dropdown.coffee +0 -75
  733. data/app/assets/javascripts/spina/admin/forms.coffee +0 -7
  734. data/app/assets/javascripts/spina/admin/media_gallery.coffee +0 -62
  735. data/app/assets/javascripts/spina/admin/modal.coffee +0 -53
  736. data/app/assets/javascripts/spina/admin/navigation.coffee +0 -45
  737. data/app/assets/javascripts/spina/admin/notifications.coffee +0 -7
  738. data/app/assets/javascripts/spina/admin/pages.coffee.erb +0 -65
  739. data/app/assets/javascripts/spina/admin/scaffold.coffee +0 -87
  740. data/app/assets/javascripts/spina/admin/switch.coffee +0 -43
  741. data/app/assets/javascripts/spina/admin/tabs.coffee +0 -13
  742. data/app/assets/javascripts/spina/admin/trix.coffee.erb +0 -114
  743. data/app/assets/javascripts/spina/admin/uploads.coffee +0 -35
  744. data/app/assets/stylesheets/spina.sass +0 -564
  745. data/app/assets/stylesheets/spina/_admin_editing.sass +0 -21
  746. data/app/assets/stylesheets/spina/_buttons.sass +0 -393
  747. data/app/assets/stylesheets/spina/_configuration.sass.erb +0 -23
  748. data/app/assets/stylesheets/spina/_custom_animations.sass +0 -61
  749. data/app/assets/stylesheets/spina/_fonts.sass +0 -54
  750. data/app/assets/stylesheets/spina/_forms.sass +0 -893
  751. data/app/assets/stylesheets/spina/_gallery.sass +0 -405
  752. data/app/assets/stylesheets/spina/_ics_spina.scss +0 -70
  753. data/app/assets/stylesheets/spina/_labels.sass +0 -30
  754. data/app/assets/stylesheets/spina/_login.sass +0 -52
  755. data/app/assets/stylesheets/spina/_media_picker.sass +0 -133
  756. data/app/assets/stylesheets/spina/_mixins.sass +0 -5
  757. data/app/assets/stylesheets/spina/_modal.sass +0 -195
  758. data/app/assets/stylesheets/spina/_normalize.scss +0 -396
  759. data/app/assets/stylesheets/spina/_notifications.sass +0 -68
  760. data/app/assets/stylesheets/spina/_pages.sass +0 -131
  761. data/app/assets/stylesheets/spina/_sortable_lists.sass +0 -190
  762. data/app/assets/stylesheets/spina/_tables.sass +0 -308
  763. data/app/assets/stylesheets/spina/_trix_custom.sass +0 -224
  764. data/app/assets/stylesheets/spina/_wizard.sass +0 -122
  765. data/app/assets/stylesheets/spina/admin/application.css.sass +0 -7
  766. data/app/assets/stylesheets/spina_front_end.sass +0 -19
  767. data/app/controllers/concerns/spina/current_methods.rb +0 -26
  768. data/app/helpers/spina/admin/admin_helper.rb +0 -11
  769. data/app/helpers/spina/admin_nav_helper.rb +0 -7
  770. data/app/views/layouts/spina/admin/admin.html.haml +0 -34
  771. data/app/views/layouts/spina/admin/media_library.html.haml +0 -17
  772. data/app/views/layouts/spina/admin/pages.html.haml +0 -34
  773. data/app/views/layouts/spina/admin/resources.html.haml +0 -10
  774. data/app/views/layouts/spina/login.html.haml +0 -18
  775. data/app/views/spina/admin/accounts/_form.html.haml +0 -54
  776. data/app/views/spina/admin/accounts/analytics.html.haml +0 -28
  777. data/app/views/spina/admin/accounts/edit.html.haml +0 -1
  778. data/app/views/spina/admin/accounts/social.html.haml +0 -52
  779. data/app/views/spina/admin/accounts/style.html.haml +0 -35
  780. data/app/views/spina/admin/attachments/_attachment.html.haml +0 -7
  781. data/app/views/spina/admin/attachments/create.js.erb +0 -1
  782. data/app/views/spina/admin/attachments/index.html.haml +0 -16
  783. data/app/views/spina/admin/images/_form.html.haml +0 -5
  784. data/app/views/spina/admin/images/_image.html.haml +0 -8
  785. data/app/views/spina/admin/images/create.js.erb +0 -8
  786. data/app/views/spina/admin/images/index.html.haml +0 -24
  787. data/app/views/spina/admin/images/index.js.erb +0 -7
  788. data/app/views/spina/admin/media_folders/_form.html.haml +0 -17
  789. data/app/views/spina/admin/media_folders/_media_folder.html.haml +0 -8
  790. data/app/views/spina/admin/media_folders/edit.js.erb +0 -1
  791. data/app/views/spina/admin/media_folders/new.js.erb +0 -1
  792. data/app/views/spina/admin/media_folders/show.html.haml +0 -18
  793. data/app/views/spina/admin/media_picker/_image.html.haml +0 -3
  794. data/app/views/spina/admin/media_picker/_media_picker.html.haml +0 -32
  795. data/app/views/spina/admin/media_picker/_media_picker_grid.html.haml +0 -25
  796. data/app/views/spina/admin/media_picker/_modal.html.haml +0 -63
  797. data/app/views/spina/admin/media_picker/infinite_scroll.js.erb +0 -5
  798. data/app/views/spina/admin/media_picker/select.js.erb +0 -33
  799. data/app/views/spina/admin/media_picker/show.html.haml +0 -1
  800. data/app/views/spina/admin/media_picker/show.js.erb +0 -1
  801. data/app/views/spina/admin/navigations/_navigation_item_nested_list.html.haml +0 -7
  802. data/app/views/spina/admin/navigations/_page.html.haml +0 -8
  803. data/app/views/spina/admin/navigations/edit.html.haml +0 -22
  804. data/app/views/spina/admin/navigations/show.html.haml +0 -7
  805. data/app/views/spina/admin/pages/_form.html.haml +0 -52
  806. data/app/views/spina/admin/pages/_form_advanced.html.haml +0 -59
  807. data/app/views/spina/admin/pages/_form_page_content.html.haml +0 -17
  808. data/app/views/spina/admin/pages/_form_page_seo.html.haml +0 -32
  809. data/app/views/spina/admin/pages/_page.html.haml +0 -16
  810. data/app/views/spina/admin/pages/_page_nested_list.html.haml +0 -6
  811. data/app/views/spina/admin/pages/children.html.haml +0 -4
  812. data/app/views/spina/admin/pages/create.js.coffee +0 -0
  813. data/app/views/spina/admin/pages/edit.html.haml +0 -1
  814. data/app/views/spina/admin/pages/index.html.haml +0 -36
  815. data/app/views/spina/admin/pages/new.html.haml +0 -1
  816. data/app/views/spina/admin/pages/update.js.coffee +0 -1
  817. data/app/views/spina/admin/parts/attachments/_form.html.haml +0 -6
  818. data/app/views/spina/admin/parts/image_collections/_fields.html.haml +0 -7
  819. data/app/views/spina/admin/parts/image_collections/_form.html.haml +0 -12
  820. data/app/views/spina/admin/parts/images/_form.html.haml +0 -18
  821. data/app/views/spina/admin/parts/lines/_form.html.haml +0 -2
  822. data/app/views/spina/admin/parts/multi_lines/_form.html.haml +0 -2
  823. data/app/views/spina/admin/parts/options/_form.html.haml +0 -3
  824. data/app/views/spina/admin/parts/repeaters/_fields.html.haml +0 -15
  825. data/app/views/spina/admin/parts/repeaters/_form.html.haml +0 -17
  826. data/app/views/spina/admin/parts/texts/_form.html.haml +0 -6
  827. data/app/views/spina/admin/password_resets/edit.html.haml +0 -13
  828. data/app/views/spina/admin/password_resets/new.html.haml +0 -13
  829. data/app/views/spina/admin/resources/edit.html.haml +0 -65
  830. data/app/views/spina/admin/resources/show.html.haml +0 -27
  831. data/app/views/spina/admin/sessions/new.html.haml +0 -14
  832. data/app/views/spina/admin/settings/_string_field.html.haml +0 -4
  833. data/app/views/spina/admin/settings/_wysiwyg_field.html.haml +0 -4
  834. data/app/views/spina/admin/settings/edit.html.haml +0 -13
  835. data/app/views/spina/admin/shared/_breadcrumbs.html.haml +0 -1
  836. data/app/views/spina/admin/shared/_notifications.html.haml +0 -29
  837. data/app/views/spina/admin/shared/_primary_navigation.html.haml +0 -68
  838. data/app/views/spina/admin/shared/_rich_text_field.html.haml +0 -4
  839. data/app/views/spina/admin/users/_form.html.haml +0 -58
  840. data/app/views/spina/admin/users/edit.html.haml +0 -1
  841. data/app/views/spina/admin/users/index.html.haml +0 -30
  842. data/app/views/spina/admin/users/new.html.haml +0 -1
  843. data/app/views/spina/pages/robots.text.erb +0 -4
  844. data/app/views/spina/shared/_admin_bar.html.haml +0 -4
  845. data/app/views/spina/shared/_analytics.html.erb +0 -11
  846. data/app/views/spina/shared/_google_site_verification.html.haml +0 -1
  847. data/app/views/spina/shared/_navigation.html.haml +0 -3
  848. data/app/views/spina/shared/_social.html.haml +0 -5
  849. data/app/views/spina/shared/_spina_link.html.haml +0 -2
  850. data/config/fontcustom.yml +0 -95
  851. data/lib/generators/spina/templates/app/assets/stylesheets/default/application.css.sass +0 -0
  852. data/lib/generators/spina/templates/app/assets/stylesheets/demo/application.css.sass +0 -69
  853. data/lib/generators/spina/templates/app/views/default/pages/homepage.html.haml +0 -3
  854. data/lib/generators/spina/templates/app/views/default/pages/show.html.haml +0 -3
  855. data/lib/generators/spina/templates/app/views/default/shared/_navigation.html.haml +0 -2
  856. data/lib/generators/spina/templates/app/views/demo/pages/demo.html.haml +0 -20
  857. data/lib/generators/spina/templates/app/views/demo/pages/homepage.html.haml +0 -2
  858. data/lib/generators/spina/templates/app/views/demo/pages/show.html.haml +0 -3
  859. data/lib/generators/spina/templates/app/views/demo/shared/_languages.html.haml +0 -2
  860. data/lib/generators/spina/templates/app/views/demo/shared/_navigation.html.haml +0 -2
  861. data/lib/generators/spina/templates/app/views/layouts/default/application.html.haml +0 -10
  862. data/lib/generators/spina/templates/app/views/layouts/demo/application.html.haml +0 -11
  863. data/lib/spina/fontcustom/_ics_spina.scss +0 -5
  864. data/vendor/assets/javascripts/spina/jquery.customfileinput.js +0 -85
  865. data/vendor/assets/javascripts/spina/jquery.nestable.js +0 -485
  866. data/vendor/assets/javascripts/spina/jquery.ui.js +0 -6
  867. data/vendor/assets/javascripts/spina/sortable.js +0 -2
  868. data/vendor/assets/javascripts/spina/stimulus.umd.js +0 -5
  869. data/vendor/assets/javascripts/spina/trix.js +0 -21
  870. data/vendor/assets/stylesheets/spina/_animate.scss +0 -1
  871. data/vendor/assets/stylesheets/spina/_normalize.scss +0 -396
  872. data/vendor/assets/stylesheets/spina/_trix.css +0 -369
@@ -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.1"
2
+ VERSION = "2.2.0"
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.1
4
+ version: 2.2.0
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-18 00:00:00.000000000 Z
11
+ date: 2021-07-26 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,49 @@ dependencies:
179
165
  - !ruby/object:Gem::Version
180
166
  version: '0'
181
167
  - !ruby/object:Gem::Dependency
182
- name: mobility
168
+ name: view_component
183
169
  requirement: !ruby/object:Gem::Requirement
184
170
  requirements:
185
- - - '='
171
+ - - "~>"
186
172
  - !ruby/object:Gem::Version
187
- version: 1.1.1
173
+ version: '2.32'
188
174
  type: :runtime
189
175
  prerelease: false
190
176
  version_requirements: !ruby/object:Gem::Requirement
191
177
  requirements:
192
- - - '='
178
+ - - "~>"
193
179
  - !ruby/object:Gem::Version
194
- version: 1.1.1
180
+ version: '2.32'
195
181
  - !ruby/object:Gem::Dependency
196
- name: rack-rewrite
182
+ name: turbo-rails
197
183
  requirement: !ruby/object:Gem::Requirement
198
184
  requirements:
199
185
  - - ">="
200
186
  - !ruby/object:Gem::Version
201
- version: 1.5.0
187
+ version: '0'
202
188
  type: :runtime
203
189
  prerelease: false
204
190
  version_requirements: !ruby/object:Gem::Requirement
205
191
  requirements:
206
192
  - - ">="
207
193
  - !ruby/object:Gem::Version
208
- version: 1.5.0
194
+ version: '0'
209
195
  - !ruby/object:Gem::Dependency
210
- name: jsonb_accessor
196
+ name: stimulus-rails
211
197
  requirement: !ruby/object:Gem::Requirement
212
198
  requirements:
213
199
  - - ">="
214
200
  - !ruby/object:Gem::Version
215
- version: 1.0.0
201
+ version: '0'
216
202
  type: :runtime
217
203
  prerelease: false
218
204
  version_requirements: !ruby/object:Gem::Requirement
219
205
  requirements:
220
206
  - - ">="
221
207
  - !ruby/object:Gem::Version
222
- version: 1.0.0
208
+ version: '0'
223
209
  - !ruby/object:Gem::Dependency
224
- name: attr_json
210
+ name: babosa
225
211
  requirement: !ruby/object:Gem::Requirement
226
212
  requirements:
227
213
  - - ">="
@@ -244,7 +230,7 @@ files:
244
230
  - README.md
245
231
  - Rakefile
246
232
  - app/assets/config/spina/manifest.js
247
- - app/assets/config/spina_manifest.js
233
+ - app/assets/config/spina/tailwind.config.js
248
234
  - app/assets/fonts/spina/Metropolis-Black.woff2
249
235
  - app/assets/fonts/spina/Metropolis-BlackItalic.woff2
250
236
  - app/assets/fonts/spina/Metropolis-Bold.woff2
@@ -263,11 +249,458 @@ files:
263
249
  - app/assets/fonts/spina/Metropolis-SemiBoldItalic.woff2
264
250
  - app/assets/fonts/spina/Metropolis-Thin.woff2
265
251
  - 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
252
+ - app/assets/icons/heroicons/outline/academic-cap.svg
253
+ - app/assets/icons/heroicons/outline/adjustments.svg
254
+ - app/assets/icons/heroicons/outline/annotation.svg
255
+ - app/assets/icons/heroicons/outline/archive.svg
256
+ - app/assets/icons/heroicons/outline/arrow-circle-down.svg
257
+ - app/assets/icons/heroicons/outline/arrow-circle-left.svg
258
+ - app/assets/icons/heroicons/outline/arrow-circle-right.svg
259
+ - app/assets/icons/heroicons/outline/arrow-circle-up.svg
260
+ - app/assets/icons/heroicons/outline/arrow-down.svg
261
+ - app/assets/icons/heroicons/outline/arrow-left.svg
262
+ - app/assets/icons/heroicons/outline/arrow-narrow-down.svg
263
+ - app/assets/icons/heroicons/outline/arrow-narrow-left.svg
264
+ - app/assets/icons/heroicons/outline/arrow-narrow-right.svg
265
+ - app/assets/icons/heroicons/outline/arrow-narrow-up.svg
266
+ - app/assets/icons/heroicons/outline/arrow-right.svg
267
+ - app/assets/icons/heroicons/outline/arrow-up.svg
268
+ - app/assets/icons/heroicons/outline/arrows-expand.svg
269
+ - app/assets/icons/heroicons/outline/at-symbol.svg
270
+ - app/assets/icons/heroicons/outline/backspace.svg
271
+ - app/assets/icons/heroicons/outline/badge-check.svg
272
+ - app/assets/icons/heroicons/outline/ban.svg
273
+ - app/assets/icons/heroicons/outline/beaker.svg
274
+ - app/assets/icons/heroicons/outline/bell.svg
275
+ - app/assets/icons/heroicons/outline/book-open.svg
276
+ - app/assets/icons/heroicons/outline/bookmark-alt.svg
277
+ - app/assets/icons/heroicons/outline/bookmark.svg
278
+ - app/assets/icons/heroicons/outline/briefcase.svg
279
+ - app/assets/icons/heroicons/outline/cake.svg
280
+ - app/assets/icons/heroicons/outline/calculator.svg
281
+ - app/assets/icons/heroicons/outline/calendar.svg
282
+ - app/assets/icons/heroicons/outline/camera.svg
283
+ - app/assets/icons/heroicons/outline/cash.svg
284
+ - app/assets/icons/heroicons/outline/chart-bar.svg
285
+ - app/assets/icons/heroicons/outline/chart-pie.svg
286
+ - app/assets/icons/heroicons/outline/chart-square-bar.svg
287
+ - app/assets/icons/heroicons/outline/chat-alt-2.svg
288
+ - app/assets/icons/heroicons/outline/chat-alt.svg
289
+ - app/assets/icons/heroicons/outline/chat.svg
290
+ - app/assets/icons/heroicons/outline/check-circle.svg
291
+ - app/assets/icons/heroicons/outline/check.svg
292
+ - app/assets/icons/heroicons/outline/chevron-double-down.svg
293
+ - app/assets/icons/heroicons/outline/chevron-double-left.svg
294
+ - app/assets/icons/heroicons/outline/chevron-double-right.svg
295
+ - app/assets/icons/heroicons/outline/chevron-double-up.svg
296
+ - app/assets/icons/heroicons/outline/chevron-down.svg
297
+ - app/assets/icons/heroicons/outline/chevron-left.svg
298
+ - app/assets/icons/heroicons/outline/chevron-right.svg
299
+ - app/assets/icons/heroicons/outline/chevron-up.svg
300
+ - app/assets/icons/heroicons/outline/chip.svg
301
+ - app/assets/icons/heroicons/outline/clipboard-check.svg
302
+ - app/assets/icons/heroicons/outline/clipboard-copy.svg
303
+ - app/assets/icons/heroicons/outline/clipboard-list.svg
304
+ - app/assets/icons/heroicons/outline/clipboard.svg
305
+ - app/assets/icons/heroicons/outline/clock.svg
306
+ - app/assets/icons/heroicons/outline/cloud-download.svg
307
+ - app/assets/icons/heroicons/outline/cloud-upload.svg
308
+ - app/assets/icons/heroicons/outline/cloud.svg
309
+ - app/assets/icons/heroicons/outline/code.svg
310
+ - app/assets/icons/heroicons/outline/cog.svg
311
+ - app/assets/icons/heroicons/outline/collection.svg
312
+ - app/assets/icons/heroicons/outline/color-swatch.svg
313
+ - app/assets/icons/heroicons/outline/credit-card.svg
314
+ - app/assets/icons/heroicons/outline/cube-transparent.svg
315
+ - app/assets/icons/heroicons/outline/cube.svg
316
+ - app/assets/icons/heroicons/outline/currency-bangladeshi.svg
317
+ - app/assets/icons/heroicons/outline/currency-dollar.svg
318
+ - app/assets/icons/heroicons/outline/currency-euro.svg
319
+ - app/assets/icons/heroicons/outline/currency-pound.svg
320
+ - app/assets/icons/heroicons/outline/currency-rupee.svg
321
+ - app/assets/icons/heroicons/outline/currency-yen.svg
322
+ - app/assets/icons/heroicons/outline/cursor-click.svg
323
+ - app/assets/icons/heroicons/outline/database.svg
324
+ - app/assets/icons/heroicons/outline/desktop-computer.svg
325
+ - app/assets/icons/heroicons/outline/device-mobile.svg
326
+ - app/assets/icons/heroicons/outline/device-tablet.svg
327
+ - app/assets/icons/heroicons/outline/document-add.svg
328
+ - app/assets/icons/heroicons/outline/document-download.svg
329
+ - app/assets/icons/heroicons/outline/document-duplicate.svg
330
+ - app/assets/icons/heroicons/outline/document-remove.svg
331
+ - app/assets/icons/heroicons/outline/document-report.svg
332
+ - app/assets/icons/heroicons/outline/document-search.svg
333
+ - app/assets/icons/heroicons/outline/document-text.svg
334
+ - app/assets/icons/heroicons/outline/document.svg
335
+ - app/assets/icons/heroicons/outline/dots-circle-horizontal.svg
336
+ - app/assets/icons/heroicons/outline/dots-horizontal.svg
337
+ - app/assets/icons/heroicons/outline/dots-vertical.svg
338
+ - app/assets/icons/heroicons/outline/download.svg
339
+ - app/assets/icons/heroicons/outline/duplicate.svg
340
+ - app/assets/icons/heroicons/outline/emoji-happy.svg
341
+ - app/assets/icons/heroicons/outline/emoji-sad.svg
342
+ - app/assets/icons/heroicons/outline/exclamation-circle.svg
343
+ - app/assets/icons/heroicons/outline/exclamation.svg
344
+ - app/assets/icons/heroicons/outline/external-link.svg
345
+ - app/assets/icons/heroicons/outline/eye-off.svg
346
+ - app/assets/icons/heroicons/outline/eye.svg
347
+ - app/assets/icons/heroicons/outline/fast-forward.svg
348
+ - app/assets/icons/heroicons/outline/film.svg
349
+ - app/assets/icons/heroicons/outline/filter.svg
350
+ - app/assets/icons/heroicons/outline/finger-print.svg
351
+ - app/assets/icons/heroicons/outline/fire.svg
352
+ - app/assets/icons/heroicons/outline/flag.svg
353
+ - app/assets/icons/heroicons/outline/folder-add.svg
354
+ - app/assets/icons/heroicons/outline/folder-download.svg
355
+ - app/assets/icons/heroicons/outline/folder-open.svg
356
+ - app/assets/icons/heroicons/outline/folder-remove.svg
357
+ - app/assets/icons/heroicons/outline/folder.svg
358
+ - app/assets/icons/heroicons/outline/gift.svg
359
+ - app/assets/icons/heroicons/outline/globe-alt.svg
360
+ - app/assets/icons/heroicons/outline/globe.svg
361
+ - app/assets/icons/heroicons/outline/hand.svg
362
+ - app/assets/icons/heroicons/outline/hashtag.svg
363
+ - app/assets/icons/heroicons/outline/heart.svg
364
+ - app/assets/icons/heroicons/outline/home.svg
365
+ - app/assets/icons/heroicons/outline/identification.svg
366
+ - app/assets/icons/heroicons/outline/inbox-in.svg
367
+ - app/assets/icons/heroicons/outline/inbox.svg
368
+ - app/assets/icons/heroicons/outline/information-circle.svg
369
+ - app/assets/icons/heroicons/outline/key.svg
370
+ - app/assets/icons/heroicons/outline/library.svg
371
+ - app/assets/icons/heroicons/outline/light-bulb.svg
372
+ - app/assets/icons/heroicons/outline/lightning-bolt.svg
373
+ - app/assets/icons/heroicons/outline/link.svg
374
+ - app/assets/icons/heroicons/outline/location-marker.svg
375
+ - app/assets/icons/heroicons/outline/lock-closed.svg
376
+ - app/assets/icons/heroicons/outline/lock-open.svg
377
+ - app/assets/icons/heroicons/outline/login.svg
378
+ - app/assets/icons/heroicons/outline/logout.svg
379
+ - app/assets/icons/heroicons/outline/mail-open.svg
380
+ - app/assets/icons/heroicons/outline/mail.svg
381
+ - app/assets/icons/heroicons/outline/map.svg
382
+ - app/assets/icons/heroicons/outline/menu-alt-1.svg
383
+ - app/assets/icons/heroicons/outline/menu-alt-2.svg
384
+ - app/assets/icons/heroicons/outline/menu-alt-3.svg
385
+ - app/assets/icons/heroicons/outline/menu-alt-4.svg
386
+ - app/assets/icons/heroicons/outline/menu.svg
387
+ - app/assets/icons/heroicons/outline/microphone.svg
388
+ - app/assets/icons/heroicons/outline/minus-circle.svg
389
+ - app/assets/icons/heroicons/outline/minus-sm.svg
390
+ - app/assets/icons/heroicons/outline/minus.svg
391
+ - app/assets/icons/heroicons/outline/moon.svg
392
+ - app/assets/icons/heroicons/outline/music-note.svg
393
+ - app/assets/icons/heroicons/outline/newspaper.svg
394
+ - app/assets/icons/heroicons/outline/office-building.svg
395
+ - app/assets/icons/heroicons/outline/paper-airplane.svg
396
+ - app/assets/icons/heroicons/outline/paper-clip.svg
397
+ - app/assets/icons/heroicons/outline/pause.svg
398
+ - app/assets/icons/heroicons/outline/pencil-alt.svg
399
+ - app/assets/icons/heroicons/outline/pencil.svg
400
+ - app/assets/icons/heroicons/outline/phone-incoming.svg
401
+ - app/assets/icons/heroicons/outline/phone-missed-call.svg
402
+ - app/assets/icons/heroicons/outline/phone-outgoing.svg
403
+ - app/assets/icons/heroicons/outline/phone.svg
404
+ - app/assets/icons/heroicons/outline/photograph.svg
405
+ - app/assets/icons/heroicons/outline/play.svg
406
+ - app/assets/icons/heroicons/outline/plus-circle.svg
407
+ - app/assets/icons/heroicons/outline/plus-sm.svg
408
+ - app/assets/icons/heroicons/outline/plus.svg
409
+ - app/assets/icons/heroicons/outline/presentation-chart-bar.svg
410
+ - app/assets/icons/heroicons/outline/presentation-chart-line.svg
411
+ - app/assets/icons/heroicons/outline/printer.svg
412
+ - app/assets/icons/heroicons/outline/puzzle.svg
413
+ - app/assets/icons/heroicons/outline/qrcode.svg
414
+ - app/assets/icons/heroicons/outline/question-mark-circle.svg
415
+ - app/assets/icons/heroicons/outline/receipt-refund.svg
416
+ - app/assets/icons/heroicons/outline/receipt-tax.svg
417
+ - app/assets/icons/heroicons/outline/refresh.svg
418
+ - app/assets/icons/heroicons/outline/reply.svg
419
+ - app/assets/icons/heroicons/outline/rewind.svg
420
+ - app/assets/icons/heroicons/outline/rss.svg
421
+ - app/assets/icons/heroicons/outline/save-as.svg
422
+ - app/assets/icons/heroicons/outline/save.svg
423
+ - app/assets/icons/heroicons/outline/scale.svg
424
+ - app/assets/icons/heroicons/outline/scissors.svg
425
+ - app/assets/icons/heroicons/outline/search-circle.svg
426
+ - app/assets/icons/heroicons/outline/search.svg
427
+ - app/assets/icons/heroicons/outline/selector.svg
428
+ - app/assets/icons/heroicons/outline/server.svg
429
+ - app/assets/icons/heroicons/outline/share.svg
430
+ - app/assets/icons/heroicons/outline/shield-check.svg
431
+ - app/assets/icons/heroicons/outline/shield-exclamation.svg
432
+ - app/assets/icons/heroicons/outline/shopping-bag.svg
433
+ - app/assets/icons/heroicons/outline/shopping-cart.svg
434
+ - app/assets/icons/heroicons/outline/sort-ascending.svg
435
+ - app/assets/icons/heroicons/outline/sort-descending.svg
436
+ - app/assets/icons/heroicons/outline/sparkles.svg
437
+ - app/assets/icons/heroicons/outline/speakerphone.svg
438
+ - app/assets/icons/heroicons/outline/star.svg
439
+ - app/assets/icons/heroicons/outline/status-offline.svg
440
+ - app/assets/icons/heroicons/outline/status-online.svg
441
+ - app/assets/icons/heroicons/outline/stop.svg
442
+ - app/assets/icons/heroicons/outline/sun.svg
443
+ - app/assets/icons/heroicons/outline/support.svg
444
+ - app/assets/icons/heroicons/outline/switch-horizontal.svg
445
+ - app/assets/icons/heroicons/outline/switch-vertical.svg
446
+ - app/assets/icons/heroicons/outline/table.svg
447
+ - app/assets/icons/heroicons/outline/tag.svg
448
+ - app/assets/icons/heroicons/outline/template.svg
449
+ - app/assets/icons/heroicons/outline/terminal.svg
450
+ - app/assets/icons/heroicons/outline/thumb-down.svg
451
+ - app/assets/icons/heroicons/outline/thumb-up.svg
452
+ - app/assets/icons/heroicons/outline/ticket.svg
453
+ - app/assets/icons/heroicons/outline/translate.svg
454
+ - app/assets/icons/heroicons/outline/trash.svg
455
+ - app/assets/icons/heroicons/outline/trending-down.svg
456
+ - app/assets/icons/heroicons/outline/trending-up.svg
457
+ - app/assets/icons/heroicons/outline/truck.svg
458
+ - app/assets/icons/heroicons/outline/upload.svg
459
+ - app/assets/icons/heroicons/outline/user-add.svg
460
+ - app/assets/icons/heroicons/outline/user-circle.svg
461
+ - app/assets/icons/heroicons/outline/user-group.svg
462
+ - app/assets/icons/heroicons/outline/user-remove.svg
463
+ - app/assets/icons/heroicons/outline/user.svg
464
+ - app/assets/icons/heroicons/outline/users.svg
465
+ - app/assets/icons/heroicons/outline/variable.svg
466
+ - app/assets/icons/heroicons/outline/video-camera.svg
467
+ - app/assets/icons/heroicons/outline/view-boards.svg
468
+ - app/assets/icons/heroicons/outline/view-grid-add.svg
469
+ - app/assets/icons/heroicons/outline/view-grid.svg
470
+ - app/assets/icons/heroicons/outline/view-list.svg
471
+ - app/assets/icons/heroicons/outline/volume-off.svg
472
+ - app/assets/icons/heroicons/outline/volume-up.svg
473
+ - app/assets/icons/heroicons/outline/wifi.svg
474
+ - app/assets/icons/heroicons/outline/x-circle.svg
475
+ - app/assets/icons/heroicons/outline/x.svg
476
+ - app/assets/icons/heroicons/outline/zoom-in.svg
477
+ - app/assets/icons/heroicons/outline/zoom-out.svg
478
+ - app/assets/icons/heroicons/solid/academic-cap.svg
479
+ - app/assets/icons/heroicons/solid/adjustments.svg
480
+ - app/assets/icons/heroicons/solid/annotation.svg
481
+ - app/assets/icons/heroicons/solid/archive.svg
482
+ - app/assets/icons/heroicons/solid/arrow-circle-down.svg
483
+ - app/assets/icons/heroicons/solid/arrow-circle-left.svg
484
+ - app/assets/icons/heroicons/solid/arrow-circle-right.svg
485
+ - app/assets/icons/heroicons/solid/arrow-circle-up.svg
486
+ - app/assets/icons/heroicons/solid/arrow-down.svg
487
+ - app/assets/icons/heroicons/solid/arrow-left.svg
488
+ - app/assets/icons/heroicons/solid/arrow-narrow-down.svg
489
+ - app/assets/icons/heroicons/solid/arrow-narrow-left.svg
490
+ - app/assets/icons/heroicons/solid/arrow-narrow-right.svg
491
+ - app/assets/icons/heroicons/solid/arrow-narrow-up.svg
492
+ - app/assets/icons/heroicons/solid/arrow-right.svg
493
+ - app/assets/icons/heroicons/solid/arrow-up.svg
494
+ - app/assets/icons/heroicons/solid/arrows-expand.svg
495
+ - app/assets/icons/heroicons/solid/at-symbol.svg
496
+ - app/assets/icons/heroicons/solid/backspace.svg
497
+ - app/assets/icons/heroicons/solid/badge-check.svg
498
+ - app/assets/icons/heroicons/solid/ban.svg
499
+ - app/assets/icons/heroicons/solid/beaker.svg
500
+ - app/assets/icons/heroicons/solid/bell.svg
501
+ - app/assets/icons/heroicons/solid/book-open.svg
502
+ - app/assets/icons/heroicons/solid/bookmark-alt.svg
503
+ - app/assets/icons/heroicons/solid/bookmark.svg
504
+ - app/assets/icons/heroicons/solid/briefcase.svg
505
+ - app/assets/icons/heroicons/solid/cake.svg
506
+ - app/assets/icons/heroicons/solid/calculator.svg
507
+ - app/assets/icons/heroicons/solid/calendar.svg
508
+ - app/assets/icons/heroicons/solid/camera.svg
509
+ - app/assets/icons/heroicons/solid/cash.svg
510
+ - app/assets/icons/heroicons/solid/chart-bar.svg
511
+ - app/assets/icons/heroicons/solid/chart-pie.svg
512
+ - app/assets/icons/heroicons/solid/chart-square-bar.svg
513
+ - app/assets/icons/heroicons/solid/chat-alt-2.svg
514
+ - app/assets/icons/heroicons/solid/chat-alt.svg
515
+ - app/assets/icons/heroicons/solid/chat.svg
516
+ - app/assets/icons/heroicons/solid/check-circle.svg
517
+ - app/assets/icons/heroicons/solid/check.svg
518
+ - app/assets/icons/heroicons/solid/chevron-double-down.svg
519
+ - app/assets/icons/heroicons/solid/chevron-double-left.svg
520
+ - app/assets/icons/heroicons/solid/chevron-double-right.svg
521
+ - app/assets/icons/heroicons/solid/chevron-double-up.svg
522
+ - app/assets/icons/heroicons/solid/chevron-down.svg
523
+ - app/assets/icons/heroicons/solid/chevron-left.svg
524
+ - app/assets/icons/heroicons/solid/chevron-right.svg
525
+ - app/assets/icons/heroicons/solid/chevron-up.svg
526
+ - app/assets/icons/heroicons/solid/chip.svg
527
+ - app/assets/icons/heroicons/solid/clipboard-check.svg
528
+ - app/assets/icons/heroicons/solid/clipboard-copy.svg
529
+ - app/assets/icons/heroicons/solid/clipboard-list.svg
530
+ - app/assets/icons/heroicons/solid/clipboard.svg
531
+ - app/assets/icons/heroicons/solid/clock.svg
532
+ - app/assets/icons/heroicons/solid/cloud-download.svg
533
+ - app/assets/icons/heroicons/solid/cloud-upload.svg
534
+ - app/assets/icons/heroicons/solid/cloud.svg
535
+ - app/assets/icons/heroicons/solid/code.svg
536
+ - app/assets/icons/heroicons/solid/cog.svg
537
+ - app/assets/icons/heroicons/solid/collection.svg
538
+ - app/assets/icons/heroicons/solid/color-swatch.svg
539
+ - app/assets/icons/heroicons/solid/credit-card.svg
540
+ - app/assets/icons/heroicons/solid/cube-transparent.svg
541
+ - app/assets/icons/heroicons/solid/cube.svg
542
+ - app/assets/icons/heroicons/solid/currency-bangladeshi.svg
543
+ - app/assets/icons/heroicons/solid/currency-dollar.svg
544
+ - app/assets/icons/heroicons/solid/currency-euro.svg
545
+ - app/assets/icons/heroicons/solid/currency-pound.svg
546
+ - app/assets/icons/heroicons/solid/currency-rupee.svg
547
+ - app/assets/icons/heroicons/solid/currency-yen.svg
548
+ - app/assets/icons/heroicons/solid/cursor-click.svg
549
+ - app/assets/icons/heroicons/solid/database.svg
550
+ - app/assets/icons/heroicons/solid/desktop-computer.svg
551
+ - app/assets/icons/heroicons/solid/device-mobile.svg
552
+ - app/assets/icons/heroicons/solid/device-tablet.svg
553
+ - app/assets/icons/heroicons/solid/document-add.svg
554
+ - app/assets/icons/heroicons/solid/document-download.svg
555
+ - app/assets/icons/heroicons/solid/document-duplicate.svg
556
+ - app/assets/icons/heroicons/solid/document-remove.svg
557
+ - app/assets/icons/heroicons/solid/document-report.svg
558
+ - app/assets/icons/heroicons/solid/document-search.svg
559
+ - app/assets/icons/heroicons/solid/document-text.svg
560
+ - app/assets/icons/heroicons/solid/document.svg
561
+ - app/assets/icons/heroicons/solid/dots-circle-horizontal.svg
562
+ - app/assets/icons/heroicons/solid/dots-horizontal.svg
563
+ - app/assets/icons/heroicons/solid/dots-vertical.svg
564
+ - app/assets/icons/heroicons/solid/download.svg
565
+ - app/assets/icons/heroicons/solid/duplicate.svg
566
+ - app/assets/icons/heroicons/solid/emoji-happy.svg
567
+ - app/assets/icons/heroicons/solid/emoji-sad.svg
568
+ - app/assets/icons/heroicons/solid/exclamation-circle.svg
569
+ - app/assets/icons/heroicons/solid/exclamation.svg
570
+ - app/assets/icons/heroicons/solid/external-link.svg
571
+ - app/assets/icons/heroicons/solid/eye-off.svg
572
+ - app/assets/icons/heroicons/solid/eye.svg
573
+ - app/assets/icons/heroicons/solid/fast-forward.svg
574
+ - app/assets/icons/heroicons/solid/film.svg
575
+ - app/assets/icons/heroicons/solid/filter.svg
576
+ - app/assets/icons/heroicons/solid/finger-print.svg
577
+ - app/assets/icons/heroicons/solid/fire.svg
578
+ - app/assets/icons/heroicons/solid/flag.svg
579
+ - app/assets/icons/heroicons/solid/folder-add.svg
580
+ - app/assets/icons/heroicons/solid/folder-download.svg
581
+ - app/assets/icons/heroicons/solid/folder-open.svg
582
+ - app/assets/icons/heroicons/solid/folder-remove.svg
583
+ - app/assets/icons/heroicons/solid/folder.svg
584
+ - app/assets/icons/heroicons/solid/gift.svg
585
+ - app/assets/icons/heroicons/solid/globe-alt.svg
586
+ - app/assets/icons/heroicons/solid/globe.svg
587
+ - app/assets/icons/heroicons/solid/hand.svg
588
+ - app/assets/icons/heroicons/solid/hashtag.svg
589
+ - app/assets/icons/heroicons/solid/heart.svg
590
+ - app/assets/icons/heroicons/solid/home.svg
591
+ - app/assets/icons/heroicons/solid/identification.svg
592
+ - app/assets/icons/heroicons/solid/inbox-in.svg
593
+ - app/assets/icons/heroicons/solid/inbox.svg
594
+ - app/assets/icons/heroicons/solid/information-circle.svg
595
+ - app/assets/icons/heroicons/solid/key.svg
596
+ - app/assets/icons/heroicons/solid/library.svg
597
+ - app/assets/icons/heroicons/solid/light-bulb.svg
598
+ - app/assets/icons/heroicons/solid/lightning-bolt.svg
599
+ - app/assets/icons/heroicons/solid/link.svg
600
+ - app/assets/icons/heroicons/solid/location-marker.svg
601
+ - app/assets/icons/heroicons/solid/lock-closed.svg
602
+ - app/assets/icons/heroicons/solid/lock-open.svg
603
+ - app/assets/icons/heroicons/solid/login.svg
604
+ - app/assets/icons/heroicons/solid/logout.svg
605
+ - app/assets/icons/heroicons/solid/mail-open.svg
606
+ - app/assets/icons/heroicons/solid/mail.svg
607
+ - app/assets/icons/heroicons/solid/map.svg
608
+ - app/assets/icons/heroicons/solid/menu-alt-1.svg
609
+ - app/assets/icons/heroicons/solid/menu-alt-2.svg
610
+ - app/assets/icons/heroicons/solid/menu-alt-3.svg
611
+ - app/assets/icons/heroicons/solid/menu-alt-4.svg
612
+ - app/assets/icons/heroicons/solid/menu.svg
613
+ - app/assets/icons/heroicons/solid/microphone.svg
614
+ - app/assets/icons/heroicons/solid/minus-circle.svg
615
+ - app/assets/icons/heroicons/solid/minus-sm.svg
616
+ - app/assets/icons/heroicons/solid/minus.svg
617
+ - app/assets/icons/heroicons/solid/moon.svg
618
+ - app/assets/icons/heroicons/solid/music-note.svg
619
+ - app/assets/icons/heroicons/solid/newspaper.svg
620
+ - app/assets/icons/heroicons/solid/office-building.svg
621
+ - app/assets/icons/heroicons/solid/paper-airplane.svg
622
+ - app/assets/icons/heroicons/solid/paper-clip.svg
623
+ - app/assets/icons/heroicons/solid/pause.svg
624
+ - app/assets/icons/heroicons/solid/pencil-alt.svg
625
+ - app/assets/icons/heroicons/solid/pencil.svg
626
+ - app/assets/icons/heroicons/solid/phone-incoming.svg
627
+ - app/assets/icons/heroicons/solid/phone-missed-call.svg
628
+ - app/assets/icons/heroicons/solid/phone-outgoing.svg
629
+ - app/assets/icons/heroicons/solid/phone.svg
630
+ - app/assets/icons/heroicons/solid/photograph.svg
631
+ - app/assets/icons/heroicons/solid/play.svg
632
+ - app/assets/icons/heroicons/solid/plus-circle.svg
633
+ - app/assets/icons/heroicons/solid/plus-sm.svg
634
+ - app/assets/icons/heroicons/solid/plus.svg
635
+ - app/assets/icons/heroicons/solid/presentation-chart-bar.svg
636
+ - app/assets/icons/heroicons/solid/presentation-chart-line.svg
637
+ - app/assets/icons/heroicons/solid/printer.svg
638
+ - app/assets/icons/heroicons/solid/puzzle.svg
639
+ - app/assets/icons/heroicons/solid/qrcode.svg
640
+ - app/assets/icons/heroicons/solid/question-mark-circle.svg
641
+ - app/assets/icons/heroicons/solid/receipt-refund.svg
642
+ - app/assets/icons/heroicons/solid/receipt-tax.svg
643
+ - app/assets/icons/heroicons/solid/refresh.svg
644
+ - app/assets/icons/heroicons/solid/reply.svg
645
+ - app/assets/icons/heroicons/solid/rewind.svg
646
+ - app/assets/icons/heroicons/solid/rss.svg
647
+ - app/assets/icons/heroicons/solid/save-as.svg
648
+ - app/assets/icons/heroicons/solid/save.svg
649
+ - app/assets/icons/heroicons/solid/scale.svg
650
+ - app/assets/icons/heroicons/solid/scissors.svg
651
+ - app/assets/icons/heroicons/solid/search-circle.svg
652
+ - app/assets/icons/heroicons/solid/search.svg
653
+ - app/assets/icons/heroicons/solid/selector.svg
654
+ - app/assets/icons/heroicons/solid/server.svg
655
+ - app/assets/icons/heroicons/solid/share.svg
656
+ - app/assets/icons/heroicons/solid/shield-check.svg
657
+ - app/assets/icons/heroicons/solid/shield-exclamation.svg
658
+ - app/assets/icons/heroicons/solid/shopping-bag.svg
659
+ - app/assets/icons/heroicons/solid/shopping-cart.svg
660
+ - app/assets/icons/heroicons/solid/sort-ascending.svg
661
+ - app/assets/icons/heroicons/solid/sort-descending.svg
662
+ - app/assets/icons/heroicons/solid/sparkles.svg
663
+ - app/assets/icons/heroicons/solid/speakerphone.svg
664
+ - app/assets/icons/heroicons/solid/star.svg
665
+ - app/assets/icons/heroicons/solid/status-offline.svg
666
+ - app/assets/icons/heroicons/solid/status-online.svg
667
+ - app/assets/icons/heroicons/solid/stop.svg
668
+ - app/assets/icons/heroicons/solid/sun.svg
669
+ - app/assets/icons/heroicons/solid/support.svg
670
+ - app/assets/icons/heroicons/solid/switch-horizontal.svg
671
+ - app/assets/icons/heroicons/solid/switch-vertical.svg
672
+ - app/assets/icons/heroicons/solid/table.svg
673
+ - app/assets/icons/heroicons/solid/tag.svg
674
+ - app/assets/icons/heroicons/solid/template.svg
675
+ - app/assets/icons/heroicons/solid/terminal.svg
676
+ - app/assets/icons/heroicons/solid/thumb-down.svg
677
+ - app/assets/icons/heroicons/solid/thumb-up.svg
678
+ - app/assets/icons/heroicons/solid/ticket.svg
679
+ - app/assets/icons/heroicons/solid/translate.svg
680
+ - app/assets/icons/heroicons/solid/trash.svg
681
+ - app/assets/icons/heroicons/solid/trending-down.svg
682
+ - app/assets/icons/heroicons/solid/trending-up.svg
683
+ - app/assets/icons/heroicons/solid/truck.svg
684
+ - app/assets/icons/heroicons/solid/upload.svg
685
+ - app/assets/icons/heroicons/solid/user-add.svg
686
+ - app/assets/icons/heroicons/solid/user-circle.svg
687
+ - app/assets/icons/heroicons/solid/user-group.svg
688
+ - app/assets/icons/heroicons/solid/user-remove.svg
689
+ - app/assets/icons/heroicons/solid/user.svg
690
+ - app/assets/icons/heroicons/solid/users.svg
691
+ - app/assets/icons/heroicons/solid/variable.svg
692
+ - app/assets/icons/heroicons/solid/video-camera.svg
693
+ - app/assets/icons/heroicons/solid/view-boards.svg
694
+ - app/assets/icons/heroicons/solid/view-grid-add.svg
695
+ - app/assets/icons/heroicons/solid/view-grid.svg
696
+ - app/assets/icons/heroicons/solid/view-list.svg
697
+ - app/assets/icons/heroicons/solid/volume-off.svg
698
+ - app/assets/icons/heroicons/solid/volume-up.svg
699
+ - app/assets/icons/heroicons/solid/wifi.svg
700
+ - app/assets/icons/heroicons/solid/x-circle.svg
701
+ - app/assets/icons/heroicons/solid/x.svg
702
+ - app/assets/icons/heroicons/solid/zoom-in.svg
703
+ - app/assets/icons/heroicons/solid/zoom-out.svg
271
704
  - app/assets/icons/spina/barchart.svg
272
705
  - app/assets/icons/spina/bars.svg
273
706
  - app/assets/icons/spina/bold.svg
@@ -336,85 +769,137 @@ files:
336
769
  - app/assets/icons/spina/undo.svg
337
770
  - app/assets/icons/spina/upload-outline.svg
338
771
  - 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
772
  - app/assets/images/spina/favicon.png
344
- - app/assets/images/spina/media_folder_placeholder.svg
345
773
  - app/assets/images/spina/spina.png
346
774
  - 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
775
+ - app/assets/javascripts/spina/controllers/attachment_picker_controller.js
776
+ - app/assets/javascripts/spina/controllers/autofocus_controller.js
777
+ - app/assets/javascripts/spina/controllers/button_controller.js
778
+ - app/assets/javascripts/spina/controllers/confetti_controller.js
779
+ - app/assets/javascripts/spina/controllers/confirm_controller.js
780
+ - app/assets/javascripts/spina/controllers/delegate_click_controller.js
781
+ - app/assets/javascripts/spina/controllers/exists_controller.js
782
+ - app/assets/javascripts/spina/controllers/form_controller.js
783
+ - app/assets/javascripts/spina/controllers/hotkeys_controller.js
784
+ - app/assets/javascripts/spina/controllers/image_collection_controller.js
785
+ - app/assets/javascripts/spina/controllers/image_fade_in_controller.js
786
+ - app/assets/javascripts/spina/controllers/infinite_scroll_controller.js
787
+ - app/assets/javascripts/spina/controllers/loading_button_controller.js
788
+ - app/assets/javascripts/spina/controllers/media_picker_controller.js
789
+ - app/assets/javascripts/spina/controllers/media_picker_modal_controller.js
790
+ - app/assets/javascripts/spina/controllers/modal_controller.js
791
+ - app/assets/javascripts/spina/controllers/navigation_controller.js
792
+ - app/assets/javascripts/spina/controllers/parent_pages_controller.js
793
+ - app/assets/javascripts/spina/controllers/repeater_controller.js
794
+ - app/assets/javascripts/spina/controllers/reveal_controller.js
795
+ - app/assets/javascripts/spina/controllers/select_placeholder_controller.js
796
+ - app/assets/javascripts/spina/controllers/selectable_controller.js
797
+ - app/assets/javascripts/spina/controllers/shortcuts_controller.js
798
+ - app/assets/javascripts/spina/controllers/sortable_controller.js
799
+ - app/assets/javascripts/spina/controllers/switch_controller.js
800
+ - app/assets/javascripts/spina/controllers/tabs_controller.js
801
+ - app/assets/javascripts/spina/controllers/toggle_controller.js
802
+ - app/assets/javascripts/spina/controllers/trix_controller.js
803
+ - app/assets/javascripts/spina/controllers/unique_id_controller.js
804
+ - app/assets/javascripts/spina/importmap.json.erb
805
+ - app/assets/javascripts/spina/libraries/canvas-confetti.js
806
+ - app/assets/javascripts/spina/libraries/canvas-confetti@1.3.2.js
807
+ - app/assets/javascripts/spina/libraries/form-request-submit-polyfill.js
808
+ - app/assets/javascripts/spina/libraries/form-request-submit-polyfill@2.0.0.js
809
+ - app/assets/javascripts/spina/libraries/hotkeys.js
810
+ - app/assets/javascripts/spina/libraries/hotkeys@3.8.7.js
811
+ - app/assets/javascripts/spina/libraries/sortablejs.js
812
+ - app/assets/javascripts/spina/libraries/sortablejs@1.13.0.js
813
+ - app/assets/javascripts/spina/libraries/stimulus-reveal@1.2.4.js
814
+ - app/assets/javascripts/spina/libraries/trix.js
815
+ - app/assets/javascripts/spina/libraries/trix@1.3.1.js
816
+ - app/assets/stylesheets/spina/_animate.css
817
+ - app/assets/stylesheets/spina/_fonts.scss
818
+ - app/assets/stylesheets/spina/_tailwind.css
391
819
  - app/assets/stylesheets/spina/application.sass
392
- - app/assets/stylesheets/spina_front_end.sass
393
- - app/controllers/concerns/spina/current_methods.rb
820
+ - app/assets/stylesheets/spina/tailwind/custom.css
821
+ - app/components/spina/application_component.rb
822
+ - app/components/spina/forms/group_component.html.erb
823
+ - app/components/spina/forms/group_component.rb
824
+ - app/components/spina/forms/label_component.rb
825
+ - app/components/spina/forms/password_field_component.html.erb
826
+ - app/components/spina/forms/password_field_component.rb
827
+ - app/components/spina/forms/switch_component.html.erb
828
+ - app/components/spina/forms/switch_component.rb
829
+ - app/components/spina/forms/text_field_component.html.erb
830
+ - app/components/spina/forms/text_field_component.rb
831
+ - app/components/spina/forms/trix_toolbar_component.html.erb
832
+ - app/components/spina/forms/trix_toolbar_component.rb
833
+ - app/components/spina/hooks/hook_component.rb
834
+ - app/components/spina/hooks/partial_component.rb
835
+ - app/components/spina/main_navigation/link_component.html.erb
836
+ - app/components/spina/main_navigation/link_component.rb
837
+ - app/components/spina/main_navigation/sub_nav_component.html.erb
838
+ - app/components/spina/main_navigation/sub_nav_component.rb
839
+ - app/components/spina/media_picker/image_component.html.erb
840
+ - app/components/spina/media_picker/image_component.rb
841
+ - app/components/spina/media_picker/modal_component.html.erb
842
+ - app/components/spina/media_picker/modal_component.rb
843
+ - app/components/spina/pages/actions_component.html.erb
844
+ - app/components/spina/pages/actions_component.rb
845
+ - app/components/spina/pages/list_component.html.erb
846
+ - app/components/spina/pages/list_component.rb
847
+ - app/components/spina/pages/location_component.html.erb
848
+ - app/components/spina/pages/location_component.rb
849
+ - app/components/spina/pages/page_component.html.erb
850
+ - app/components/spina/pages/page_component.rb
851
+ - app/components/spina/pages/page_select_component.html.erb
852
+ - app/components/spina/pages/page_select_component.rb
853
+ - app/components/spina/pages/tab_button_component.html.erb
854
+ - app/components/spina/pages/tab_button_component.rb
855
+ - app/components/spina/pages/translations_component.html.erb
856
+ - app/components/spina/pages/translations_component.rb
857
+ - app/components/spina/user_interface/dropdown_button_component.rb
858
+ - app/components/spina/user_interface/dropdown_component.html.erb
859
+ - app/components/spina/user_interface/dropdown_component.rb
860
+ - app/components/spina/user_interface/flash_message_component.html.erb
861
+ - app/components/spina/user_interface/flash_message_component.rb
862
+ - app/components/spina/user_interface/header_component.html.erb
863
+ - app/components/spina/user_interface/header_component.rb
864
+ - app/components/spina/user_interface/modal_component.html.erb
865
+ - app/components/spina/user_interface/modal_component.rb
866
+ - app/components/spina/user_interface/tab_link_component.html.erb
867
+ - app/components/spina/user_interface/tab_link_component.rb
868
+ - app/controllers/concerns/spina/current_account.rb
869
+ - app/controllers/concerns/spina/current_theme.rb
394
870
  - app/controllers/concerns/spina/frontend.rb
395
871
  - app/controllers/spina/admin/accounts_controller.rb
396
872
  - app/controllers/spina/admin/admin_controller.rb
397
873
  - app/controllers/spina/admin/attachments_controller.rb
398
874
  - app/controllers/spina/admin/images_controller.rb
875
+ - app/controllers/spina/admin/layout_controller.rb
399
876
  - app/controllers/spina/admin/media_folders_controller.rb
400
877
  - app/controllers/spina/admin/media_picker_controller.rb
878
+ - app/controllers/spina/admin/move_pages_controller.rb
879
+ - app/controllers/spina/admin/navigation_items_controller.rb
401
880
  - app/controllers/spina/admin/navigations_controller.rb
402
881
  - app/controllers/spina/admin/pages_controller.rb
882
+ - app/controllers/spina/admin/parent_pages_controller.rb
403
883
  - app/controllers/spina/admin/password_resets_controller.rb
404
884
  - app/controllers/spina/admin/resources_controller.rb
405
885
  - app/controllers/spina/admin/sessions_controller.rb
406
886
  - app/controllers/spina/admin/settings_controller.rb
887
+ - app/controllers/spina/admin/theme_controller.rb
407
888
  - app/controllers/spina/admin/users_controller.rb
408
889
  - app/controllers/spina/application_controller.rb
409
890
  - app/controllers/spina/pages_controller.rb
410
891
  - app/controllers/spina/sitemaps_controller.rb
411
- - app/helpers/spina/admin/admin_helper.rb
892
+ - app/helpers/spina/admin/icons_helper.rb
893
+ - app/helpers/spina/admin/images_helper.rb
412
894
  - app/helpers/spina/admin/pages_helper.rb
413
- - app/helpers/spina/admin_nav_helper.rb
414
895
  - app/helpers/spina/attachments_helper.rb
415
896
  - app/helpers/spina/images_helper.rb
416
897
  - app/helpers/spina/pages_helper.rb
898
+ - app/helpers/spina/spina_helper.rb
899
+ - app/jobs/spina/application_job.rb
900
+ - app/jobs/spina/resource_pages_update_job.rb
417
901
  - app/mailers/spina/user_mailer.rb
902
+ - app/models/concerns/spina/gravatar.rb
418
903
  - app/models/concerns/spina/partable.rb
419
904
  - app/models/concerns/spina/translated_content.rb
420
905
  - app/models/spina/account.rb
@@ -443,91 +928,76 @@ files:
443
928
  - app/models/spina/user.rb
444
929
  - app/presenters/spina/content_presenter.rb
445
930
  - 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
931
+ - app/views/layouts/spina/admin/admin.html.erb
932
+ - app/views/layouts/spina/admin/application.html.erb
933
+ - app/views/layouts/spina/admin/sessions.html.erb
451
934
  - 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
935
+ - app/views/spina/admin/accounts/edit.html.erb
936
+ - app/views/spina/admin/attachments/_attachment.html.erb
937
+ - app/views/spina/admin/attachments/edit.html.erb
938
+ - app/views/spina/admin/attachments/index.html.erb
939
+ - app/views/spina/admin/attachments/show.html.erb
940
+ - app/views/spina/admin/images/_image.html.erb
941
+ - app/views/spina/admin/images/edit.html.erb
942
+ - app/views/spina/admin/images/index.html.erb
943
+ - app/views/spina/admin/images/show.html.erb
944
+ - app/views/spina/admin/images/update.turbo_stream.erb
945
+ - app/views/spina/admin/layout/edit.html.erb
946
+ - app/views/spina/admin/media_folders/_form.html.erb
947
+ - app/views/spina/admin/media_folders/_media_folder.html.erb
948
+ - app/views/spina/admin/media_folders/edit.html.erb
949
+ - app/views/spina/admin/media_folders/new.html.erb
950
+ - app/views/spina/admin/media_picker/show.html.erb
951
+ - app/views/spina/admin/move_pages/new.html.erb
952
+ - app/views/spina/admin/navigation_items/_form.html.erb
953
+ - app/views/spina/admin/navigation_items/_navigation_item.html.erb
954
+ - app/views/spina/admin/navigation_items/new.html.erb
955
+ - app/views/spina/admin/navigations/_navigation.html.erb
956
+ - app/views/spina/admin/navigations/edit.html.erb
957
+ - app/views/spina/admin/navigations/index.html.erb
958
+ - app/views/spina/admin/pages/_button_advanced.html.erb
959
+ - app/views/spina/admin/pages/_button_page_content.html.erb
960
+ - app/views/spina/admin/pages/_button_search_engines.html.erb
961
+ - app/views/spina/admin/pages/_form.html.erb
962
+ - app/views/spina/admin/pages/_form_advanced.html.erb
963
+ - app/views/spina/admin/pages/_form_page_content.html.erb
964
+ - app/views/spina/admin/pages/_form_search_engines.html.erb
965
+ - app/views/spina/admin/pages/_new_page_form.html.erb
966
+ - app/views/spina/admin/pages/edit.html.erb
967
+ - app/views/spina/admin/pages/edit_content.html.erb
968
+ - app/views/spina/admin/pages/edit_template.html.erb
969
+ - app/views/spina/admin/pages/index.html.erb
970
+ - app/views/spina/admin/pages/new.html.erb
971
+ - app/views/spina/admin/parent_pages/index.html.erb
972
+ - app/views/spina/admin/parts/attachments/_form.html.erb
973
+ - app/views/spina/admin/parts/image_collections/_fields.html.erb
974
+ - app/views/spina/admin/parts/image_collections/_form.html.erb
975
+ - app/views/spina/admin/parts/images/_form.html.erb
976
+ - app/views/spina/admin/parts/lines/_form.html.erb
977
+ - app/views/spina/admin/parts/multi_lines/_form.html.erb
978
+ - app/views/spina/admin/parts/options/_form.html.erb
979
+ - app/views/spina/admin/parts/repeaters/_fields.html.erb
980
+ - app/views/spina/admin/parts/repeaters/_form.html.erb
981
+ - app/views/spina/admin/parts/texts/_form.html.erb
982
+ - app/views/spina/admin/password_resets/edit.html.erb
983
+ - app/views/spina/admin/password_resets/new.html.erb
984
+ - app/views/spina/admin/resources/edit.html.erb
985
+ - app/views/spina/admin/sessions/new.html.erb
986
+ - app/views/spina/admin/settings/_string_field.html.erb
987
+ - app/views/spina/admin/settings/_text_field.html.erb
988
+ - app/views/spina/admin/settings/_wysiwyg_field.html.erb
989
+ - app/views/spina/admin/settings/edit.html.erb
990
+ - app/views/spina/admin/shared/_flash.html.erb
991
+ - app/views/spina/admin/shared/_navigation.html.erb
992
+ - app/views/spina/admin/theme/edit.html.erb
993
+ - app/views/spina/admin/users/_form.html.erb
994
+ - app/views/spina/admin/users/_user.html.erb
995
+ - app/views/spina/admin/users/edit.html.erb
996
+ - app/views/spina/admin/users/index.html.erb
997
+ - app/views/spina/admin/users/new.html.erb
527
998
  - app/views/spina/sitemaps/show.xml.builder
528
999
  - app/views/spina/user_mailer/forgot_password.html.erb
529
1000
  - app/views/spina/user_mailer/forgot_password.txt.erb
530
- - config/fontcustom.yml
531
1001
  - config/locales/TH.yml
532
1002
  - config/locales/bg.yml
533
1003
  - config/locales/de.yml
@@ -562,48 +1032,42 @@ files:
562
1032
  - db/migrate/9_create_spina_images.rb
563
1033
  - db/seeds.rb
564
1034
  - 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
1035
+ - lib/generators/spina/templates/app/views/default/pages/homepage.html.erb
1036
+ - lib/generators/spina/templates/app/views/default/pages/show.html.erb
1037
+ - lib/generators/spina/templates/app/views/default/shared/_navigation.html.erb
1038
+ - lib/generators/spina/templates/app/views/demo/pages/demo.html.erb
1039
+ - lib/generators/spina/templates/app/views/demo/pages/homepage.html.erb
1040
+ - lib/generators/spina/templates/app/views/demo/pages/show.html.erb
1041
+ - lib/generators/spina/templates/app/views/demo/shared/_languages.html.erb
1042
+ - lib/generators/spina/templates/app/views/demo/shared/_navigation.html.erb
1043
+ - lib/generators/spina/templates/app/views/layouts/default/application.html.erb
1044
+ - lib/generators/spina/templates/app/views/layouts/demo/application.html.erb
577
1045
  - lib/generators/spina/templates/config/initializers/mobility.rb
578
1046
  - lib/generators/spina/templates/config/initializers/spina.rb
579
1047
  - lib/generators/spina/templates/config/initializers/themes/default.rb
580
1048
  - lib/generators/spina/templates/config/initializers/themes/demo.rb
581
1049
  - lib/spina.rb
1050
+ - lib/spina/admin_sectionable.rb
1051
+ - lib/spina/attr_json_monkeypatch.rb
582
1052
  - lib/spina/attr_json_spina_parts_model.rb
1053
+ - lib/spina/authentication/basic.rb
1054
+ - lib/spina/authentication/sessions.rb
583
1055
  - lib/spina/engine.rb
584
- - lib/spina/fontcustom/_ics_spina.scss
1056
+ - lib/spina/importmap_helper.rb
585
1057
  - lib/spina/part.rb
586
1058
  - lib/spina/plugin.rb
587
1059
  - lib/spina/railtie.rb
1060
+ - lib/spina/tailwind_purger.rb
588
1061
  - lib/spina/theme.rb
589
1062
  - lib/spina/version.rb
590
1063
  - 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
1064
  homepage: https://www.spinacms.com
601
1065
  licenses:
602
1066
  - MIT
603
1067
  metadata:
604
1068
  homepage_uri: https://www.spinacms.com
605
1069
  bug_tracker_uri: https://github.com/SpinaCMS/Spina/issues
606
- documentation_uri: https://www.spinacms.com/guide
1070
+ documentation_uri: https://www.spinacms.com/docs
607
1071
  changelog_uri: https://github.com/SpinaCMS/Spina/blob/master/CHANGELOG.md
608
1072
  source_code_uri: https://github.com/SpinaCMS/Spina
609
1073
  post_install_message: