jet_ui 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (471) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +106 -0
  3. data/LICENSE.md +21 -0
  4. data/README.md +114 -0
  5. data/app/assets/images/jet_ui/icons/academic-cap.svg +3 -0
  6. data/app/assets/images/jet_ui/icons/adjustments-horizontal.svg +3 -0
  7. data/app/assets/images/jet_ui/icons/adjustments-vertical.svg +3 -0
  8. data/app/assets/images/jet_ui/icons/archive-box-arrow-down.svg +3 -0
  9. data/app/assets/images/jet_ui/icons/archive-box-x-mark.svg +3 -0
  10. data/app/assets/images/jet_ui/icons/archive-box.svg +3 -0
  11. data/app/assets/images/jet_ui/icons/arrow-down-circle.svg +3 -0
  12. data/app/assets/images/jet_ui/icons/arrow-down-left.svg +3 -0
  13. data/app/assets/images/jet_ui/icons/arrow-down-on-square-stack.svg +3 -0
  14. data/app/assets/images/jet_ui/icons/arrow-down-on-square.svg +3 -0
  15. data/app/assets/images/jet_ui/icons/arrow-down-right.svg +3 -0
  16. data/app/assets/images/jet_ui/icons/arrow-down-tray.svg +3 -0
  17. data/app/assets/images/jet_ui/icons/arrow-down.svg +3 -0
  18. data/app/assets/images/jet_ui/icons/arrow-left-circle.svg +3 -0
  19. data/app/assets/images/jet_ui/icons/arrow-left-end-on-rectangle.svg +3 -0
  20. data/app/assets/images/jet_ui/icons/arrow-left-on-rectangle.svg +3 -0
  21. data/app/assets/images/jet_ui/icons/arrow-left-start-on-rectangle.svg +3 -0
  22. data/app/assets/images/jet_ui/icons/arrow-left.svg +3 -0
  23. data/app/assets/images/jet_ui/icons/arrow-long-down.svg +3 -0
  24. data/app/assets/images/jet_ui/icons/arrow-long-left.svg +3 -0
  25. data/app/assets/images/jet_ui/icons/arrow-long-right.svg +3 -0
  26. data/app/assets/images/jet_ui/icons/arrow-long-up.svg +3 -0
  27. data/app/assets/images/jet_ui/icons/arrow-path-rounded-square.svg +3 -0
  28. data/app/assets/images/jet_ui/icons/arrow-path.svg +3 -0
  29. data/app/assets/images/jet_ui/icons/arrow-right-circle.svg +3 -0
  30. data/app/assets/images/jet_ui/icons/arrow-right-end-on-rectangle.svg +3 -0
  31. data/app/assets/images/jet_ui/icons/arrow-right-on-rectangle.svg +3 -0
  32. data/app/assets/images/jet_ui/icons/arrow-right-start-on-rectangle.svg +3 -0
  33. data/app/assets/images/jet_ui/icons/arrow-right.svg +3 -0
  34. data/app/assets/images/jet_ui/icons/arrow-small-down.svg +3 -0
  35. data/app/assets/images/jet_ui/icons/arrow-small-left.svg +3 -0
  36. data/app/assets/images/jet_ui/icons/arrow-small-right.svg +3 -0
  37. data/app/assets/images/jet_ui/icons/arrow-small-up.svg +3 -0
  38. data/app/assets/images/jet_ui/icons/arrow-top-right-on-square.svg +3 -0
  39. data/app/assets/images/jet_ui/icons/arrow-trending-down.svg +3 -0
  40. data/app/assets/images/jet_ui/icons/arrow-trending-up.svg +3 -0
  41. data/app/assets/images/jet_ui/icons/arrow-turn-down-left.svg +3 -0
  42. data/app/assets/images/jet_ui/icons/arrow-turn-down-right.svg +3 -0
  43. data/app/assets/images/jet_ui/icons/arrow-turn-left-down.svg +3 -0
  44. data/app/assets/images/jet_ui/icons/arrow-turn-left-up.svg +3 -0
  45. data/app/assets/images/jet_ui/icons/arrow-turn-right-down.svg +3 -0
  46. data/app/assets/images/jet_ui/icons/arrow-turn-right-up.svg +3 -0
  47. data/app/assets/images/jet_ui/icons/arrow-turn-up-left.svg +3 -0
  48. data/app/assets/images/jet_ui/icons/arrow-turn-up-right.svg +3 -0
  49. data/app/assets/images/jet_ui/icons/arrow-up-circle.svg +3 -0
  50. data/app/assets/images/jet_ui/icons/arrow-up-left.svg +3 -0
  51. data/app/assets/images/jet_ui/icons/arrow-up-on-square-stack.svg +3 -0
  52. data/app/assets/images/jet_ui/icons/arrow-up-on-square.svg +3 -0
  53. data/app/assets/images/jet_ui/icons/arrow-up-right.svg +3 -0
  54. data/app/assets/images/jet_ui/icons/arrow-up-tray.svg +3 -0
  55. data/app/assets/images/jet_ui/icons/arrow-up.svg +3 -0
  56. data/app/assets/images/jet_ui/icons/arrow-uturn-down.svg +3 -0
  57. data/app/assets/images/jet_ui/icons/arrow-uturn-left.svg +3 -0
  58. data/app/assets/images/jet_ui/icons/arrow-uturn-right.svg +3 -0
  59. data/app/assets/images/jet_ui/icons/arrow-uturn-up.svg +3 -0
  60. data/app/assets/images/jet_ui/icons/arrows-pointing-in.svg +3 -0
  61. data/app/assets/images/jet_ui/icons/arrows-pointing-out.svg +3 -0
  62. data/app/assets/images/jet_ui/icons/arrows-right-left.svg +3 -0
  63. data/app/assets/images/jet_ui/icons/arrows-up-down.svg +3 -0
  64. data/app/assets/images/jet_ui/icons/at-symbol.svg +3 -0
  65. data/app/assets/images/jet_ui/icons/backspace.svg +3 -0
  66. data/app/assets/images/jet_ui/icons/backward.svg +4 -0
  67. data/app/assets/images/jet_ui/icons/banknotes.svg +3 -0
  68. data/app/assets/images/jet_ui/icons/bars-2.svg +3 -0
  69. data/app/assets/images/jet_ui/icons/bars-3-bottom-left.svg +3 -0
  70. data/app/assets/images/jet_ui/icons/bars-3-bottom-right.svg +3 -0
  71. data/app/assets/images/jet_ui/icons/bars-3-center-left.svg +3 -0
  72. data/app/assets/images/jet_ui/icons/bars-3.svg +3 -0
  73. data/app/assets/images/jet_ui/icons/bars-4.svg +3 -0
  74. data/app/assets/images/jet_ui/icons/bars-arrow-down.svg +3 -0
  75. data/app/assets/images/jet_ui/icons/bars-arrow-up.svg +3 -0
  76. data/app/assets/images/jet_ui/icons/battery-0.svg +3 -0
  77. data/app/assets/images/jet_ui/icons/battery-100.svg +3 -0
  78. data/app/assets/images/jet_ui/icons/battery-50.svg +3 -0
  79. data/app/assets/images/jet_ui/icons/beaker.svg +3 -0
  80. data/app/assets/images/jet_ui/icons/bell-alert.svg +3 -0
  81. data/app/assets/images/jet_ui/icons/bell-slash.svg +3 -0
  82. data/app/assets/images/jet_ui/icons/bell-snooze.svg +3 -0
  83. data/app/assets/images/jet_ui/icons/bell.svg +3 -0
  84. data/app/assets/images/jet_ui/icons/bold.svg +3 -0
  85. data/app/assets/images/jet_ui/icons/bolt-slash.svg +3 -0
  86. data/app/assets/images/jet_ui/icons/bolt.svg +3 -0
  87. data/app/assets/images/jet_ui/icons/book-open.svg +3 -0
  88. data/app/assets/images/jet_ui/icons/bookmark-slash.svg +3 -0
  89. data/app/assets/images/jet_ui/icons/bookmark-square.svg +3 -0
  90. data/app/assets/images/jet_ui/icons/bookmark.svg +3 -0
  91. data/app/assets/images/jet_ui/icons/briefcase.svg +3 -0
  92. data/app/assets/images/jet_ui/icons/bug-ant.svg +3 -0
  93. data/app/assets/images/jet_ui/icons/building-library.svg +3 -0
  94. data/app/assets/images/jet_ui/icons/building-office-2.svg +3 -0
  95. data/app/assets/images/jet_ui/icons/building-office.svg +3 -0
  96. data/app/assets/images/jet_ui/icons/building-storefront.svg +3 -0
  97. data/app/assets/images/jet_ui/icons/cake.svg +3 -0
  98. data/app/assets/images/jet_ui/icons/calculator.svg +3 -0
  99. data/app/assets/images/jet_ui/icons/calendar-date-range.svg +3 -0
  100. data/app/assets/images/jet_ui/icons/calendar-days.svg +3 -0
  101. data/app/assets/images/jet_ui/icons/calendar.svg +3 -0
  102. data/app/assets/images/jet_ui/icons/camera.svg +5 -0
  103. data/app/assets/images/jet_ui/icons/chart-bar-square.svg +3 -0
  104. data/app/assets/images/jet_ui/icons/chart-bar.svg +5 -0
  105. data/app/assets/images/jet_ui/icons/chart-pie.svg +4 -0
  106. data/app/assets/images/jet_ui/icons/chat-bubble-bottom-center-text.svg +3 -0
  107. data/app/assets/images/jet_ui/icons/chat-bubble-bottom-center.svg +3 -0
  108. data/app/assets/images/jet_ui/icons/chat-bubble-left-ellipsis.svg +3 -0
  109. data/app/assets/images/jet_ui/icons/chat-bubble-left-right.svg +3 -0
  110. data/app/assets/images/jet_ui/icons/chat-bubble-left.svg +3 -0
  111. data/app/assets/images/jet_ui/icons/chat-bubble-oval-left-ellipsis.svg +3 -0
  112. data/app/assets/images/jet_ui/icons/chat-bubble-oval-left.svg +3 -0
  113. data/app/assets/images/jet_ui/icons/check-badge.svg +3 -0
  114. data/app/assets/images/jet_ui/icons/check-circle.svg +3 -0
  115. data/app/assets/images/jet_ui/icons/check.svg +3 -0
  116. data/app/assets/images/jet_ui/icons/chevron-double-down.svg +3 -0
  117. data/app/assets/images/jet_ui/icons/chevron-double-left.svg +3 -0
  118. data/app/assets/images/jet_ui/icons/chevron-double-right.svg +3 -0
  119. data/app/assets/images/jet_ui/icons/chevron-double-up.svg +4 -0
  120. data/app/assets/images/jet_ui/icons/chevron-down.svg +3 -0
  121. data/app/assets/images/jet_ui/icons/chevron-left.svg +3 -0
  122. data/app/assets/images/jet_ui/icons/chevron-right.svg +3 -0
  123. data/app/assets/images/jet_ui/icons/chevron-up-down.svg +3 -0
  124. data/app/assets/images/jet_ui/icons/chevron-up.svg +3 -0
  125. data/app/assets/images/jet_ui/icons/circle-stack.svg +3 -0
  126. data/app/assets/images/jet_ui/icons/clipboard-document-check.svg +3 -0
  127. data/app/assets/images/jet_ui/icons/clipboard-document-list.svg +3 -0
  128. data/app/assets/images/jet_ui/icons/clipboard-document.svg +3 -0
  129. data/app/assets/images/jet_ui/icons/clipboard.svg +3 -0
  130. data/app/assets/images/jet_ui/icons/clock.svg +3 -0
  131. data/app/assets/images/jet_ui/icons/cloud-arrow-down.svg +3 -0
  132. data/app/assets/images/jet_ui/icons/cloud-arrow-up.svg +3 -0
  133. data/app/assets/images/jet_ui/icons/cloud.svg +3 -0
  134. data/app/assets/images/jet_ui/icons/code-bracket-square.svg +3 -0
  135. data/app/assets/images/jet_ui/icons/code-bracket.svg +3 -0
  136. data/app/assets/images/jet_ui/icons/cog-6-tooth.svg +4 -0
  137. data/app/assets/images/jet_ui/icons/cog-8-tooth.svg +4 -0
  138. data/app/assets/images/jet_ui/icons/cog.svg +3 -0
  139. data/app/assets/images/jet_ui/icons/command-line.svg +3 -0
  140. data/app/assets/images/jet_ui/icons/computer-desktop.svg +3 -0
  141. data/app/assets/images/jet_ui/icons/cpu-chip.svg +3 -0
  142. data/app/assets/images/jet_ui/icons/credit-card.svg +3 -0
  143. data/app/assets/images/jet_ui/icons/cube-transparent.svg +3 -0
  144. data/app/assets/images/jet_ui/icons/cube.svg +3 -0
  145. data/app/assets/images/jet_ui/icons/currency-bangladeshi.svg +3 -0
  146. data/app/assets/images/jet_ui/icons/currency-dollar.svg +3 -0
  147. data/app/assets/images/jet_ui/icons/currency-euro.svg +3 -0
  148. data/app/assets/images/jet_ui/icons/currency-pound.svg +3 -0
  149. data/app/assets/images/jet_ui/icons/currency-rupee.svg +3 -0
  150. data/app/assets/images/jet_ui/icons/currency-yen.svg +3 -0
  151. data/app/assets/images/jet_ui/icons/cursor-arrow-rays.svg +3 -0
  152. data/app/assets/images/jet_ui/icons/cursor-arrow-ripple.svg +3 -0
  153. data/app/assets/images/jet_ui/icons/device-phone-mobile.svg +3 -0
  154. data/app/assets/images/jet_ui/icons/device-tablet.svg +3 -0
  155. data/app/assets/images/jet_ui/icons/divide.svg +3 -0
  156. data/app/assets/images/jet_ui/icons/document-arrow-down.svg +3 -0
  157. data/app/assets/images/jet_ui/icons/document-arrow-up.svg +3 -0
  158. data/app/assets/images/jet_ui/icons/document-chart-bar.svg +3 -0
  159. data/app/assets/images/jet_ui/icons/document-check.svg +3 -0
  160. data/app/assets/images/jet_ui/icons/document-currency-bangladeshi.svg +3 -0
  161. data/app/assets/images/jet_ui/icons/document-currency-dollar.svg +3 -0
  162. data/app/assets/images/jet_ui/icons/document-currency-euro.svg +3 -0
  163. data/app/assets/images/jet_ui/icons/document-currency-pound.svg +3 -0
  164. data/app/assets/images/jet_ui/icons/document-currency-rupee.svg +3 -0
  165. data/app/assets/images/jet_ui/icons/document-currency-yen.svg +3 -0
  166. data/app/assets/images/jet_ui/icons/document-duplicate.svg +3 -0
  167. data/app/assets/images/jet_ui/icons/document-magnifying-glass.svg +3 -0
  168. data/app/assets/images/jet_ui/icons/document-minus.svg +3 -0
  169. data/app/assets/images/jet_ui/icons/document-plus.svg +3 -0
  170. data/app/assets/images/jet_ui/icons/document-text.svg +3 -0
  171. data/app/assets/images/jet_ui/icons/document.svg +3 -0
  172. data/app/assets/images/jet_ui/icons/ellipsis-horizontal-circle.svg +3 -0
  173. data/app/assets/images/jet_ui/icons/ellipsis-horizontal.svg +5 -0
  174. data/app/assets/images/jet_ui/icons/ellipsis-vertical.svg +5 -0
  175. data/app/assets/images/jet_ui/icons/envelope-open.svg +3 -0
  176. data/app/assets/images/jet_ui/icons/envelope.svg +3 -0
  177. data/app/assets/images/jet_ui/icons/equals.svg +3 -0
  178. data/app/assets/images/jet_ui/icons/exclamation-circle.svg +3 -0
  179. data/app/assets/images/jet_ui/icons/exclamation-triangle.svg +3 -0
  180. data/app/assets/images/jet_ui/icons/eye-dropper.svg +3 -0
  181. data/app/assets/images/jet_ui/icons/eye-slash.svg +3 -0
  182. data/app/assets/images/jet_ui/icons/eye.svg +4 -0
  183. data/app/assets/images/jet_ui/icons/face-frown.svg +3 -0
  184. data/app/assets/images/jet_ui/icons/face-smile.svg +3 -0
  185. data/app/assets/images/jet_ui/icons/film.svg +3 -0
  186. data/app/assets/images/jet_ui/icons/finger-print.svg +3 -0
  187. data/app/assets/images/jet_ui/icons/fire.svg +4 -0
  188. data/app/assets/images/jet_ui/icons/flag.svg +3 -0
  189. data/app/assets/images/jet_ui/icons/folder-arrow-down.svg +3 -0
  190. data/app/assets/images/jet_ui/icons/folder-minus.svg +3 -0
  191. data/app/assets/images/jet_ui/icons/folder-open.svg +3 -0
  192. data/app/assets/images/jet_ui/icons/folder-plus.svg +3 -0
  193. data/app/assets/images/jet_ui/icons/folder.svg +3 -0
  194. data/app/assets/images/jet_ui/icons/forward.svg +4 -0
  195. data/app/assets/images/jet_ui/icons/funnel.svg +3 -0
  196. data/app/assets/images/jet_ui/icons/gif.svg +3 -0
  197. data/app/assets/images/jet_ui/icons/gift-top.svg +3 -0
  198. data/app/assets/images/jet_ui/icons/gift.svg +3 -0
  199. data/app/assets/images/jet_ui/icons/github.svg +10 -0
  200. data/app/assets/images/jet_ui/icons/globe-alt.svg +3 -0
  201. data/app/assets/images/jet_ui/icons/globe-americas.svg +3 -0
  202. data/app/assets/images/jet_ui/icons/globe-asia-australia.svg +3 -0
  203. data/app/assets/images/jet_ui/icons/globe-europe-africa.svg +3 -0
  204. data/app/assets/images/jet_ui/icons/h1.svg +3 -0
  205. data/app/assets/images/jet_ui/icons/h2.svg +3 -0
  206. data/app/assets/images/jet_ui/icons/h3.svg +3 -0
  207. data/app/assets/images/jet_ui/icons/hand-raised.svg +3 -0
  208. data/app/assets/images/jet_ui/icons/hand-thumb-down.svg +3 -0
  209. data/app/assets/images/jet_ui/icons/hand-thumb-up.svg +3 -0
  210. data/app/assets/images/jet_ui/icons/hashtag.svg +3 -0
  211. data/app/assets/images/jet_ui/icons/heart.svg +3 -0
  212. data/app/assets/images/jet_ui/icons/home-modern.svg +3 -0
  213. data/app/assets/images/jet_ui/icons/home.svg +3 -0
  214. data/app/assets/images/jet_ui/icons/identification.svg +3 -0
  215. data/app/assets/images/jet_ui/icons/inbox-arrow-down.svg +3 -0
  216. data/app/assets/images/jet_ui/icons/inbox-stack.svg +3 -0
  217. data/app/assets/images/jet_ui/icons/inbox.svg +3 -0
  218. data/app/assets/images/jet_ui/icons/information-circle.svg +3 -0
  219. data/app/assets/images/jet_ui/icons/italic.svg +3 -0
  220. data/app/assets/images/jet_ui/icons/key.svg +3 -0
  221. data/app/assets/images/jet_ui/icons/language.svg +3 -0
  222. data/app/assets/images/jet_ui/icons/lifebuoy.svg +3 -0
  223. data/app/assets/images/jet_ui/icons/light-bulb.svg +3 -0
  224. data/app/assets/images/jet_ui/icons/link-slash.svg +3 -0
  225. data/app/assets/images/jet_ui/icons/link.svg +3 -0
  226. data/app/assets/images/jet_ui/icons/list-bullet.svg +3 -0
  227. data/app/assets/images/jet_ui/icons/lock-closed.svg +3 -0
  228. data/app/assets/images/jet_ui/icons/lock-open.svg +3 -0
  229. data/app/assets/images/jet_ui/icons/magnifying-glass-circle.svg +3 -0
  230. data/app/assets/images/jet_ui/icons/magnifying-glass-minus.svg +3 -0
  231. data/app/assets/images/jet_ui/icons/magnifying-glass-plus.svg +3 -0
  232. data/app/assets/images/jet_ui/icons/magnifying-glass.svg +3 -0
  233. data/app/assets/images/jet_ui/icons/map-pin.svg +4 -0
  234. data/app/assets/images/jet_ui/icons/map.svg +3 -0
  235. data/app/assets/images/jet_ui/icons/megaphone.svg +3 -0
  236. data/app/assets/images/jet_ui/icons/microphone.svg +3 -0
  237. data/app/assets/images/jet_ui/icons/minus-circle.svg +3 -0
  238. data/app/assets/images/jet_ui/icons/minus-small.svg +3 -0
  239. data/app/assets/images/jet_ui/icons/minus.svg +3 -0
  240. data/app/assets/images/jet_ui/icons/moon.svg +3 -0
  241. data/app/assets/images/jet_ui/icons/musical-note.svg +3 -0
  242. data/app/assets/images/jet_ui/icons/newspaper.svg +3 -0
  243. data/app/assets/images/jet_ui/icons/no-symbol.svg +3 -0
  244. data/app/assets/images/jet_ui/icons/numbered-list.svg +3 -0
  245. data/app/assets/images/jet_ui/icons/paint-brush.svg +3 -0
  246. data/app/assets/images/jet_ui/icons/paper-airplane.svg +3 -0
  247. data/app/assets/images/jet_ui/icons/paper-clip.svg +3 -0
  248. data/app/assets/images/jet_ui/icons/pause-circle.svg +3 -0
  249. data/app/assets/images/jet_ui/icons/pause.svg +3 -0
  250. data/app/assets/images/jet_ui/icons/pencil-square.svg +3 -0
  251. data/app/assets/images/jet_ui/icons/pencil.svg +3 -0
  252. data/app/assets/images/jet_ui/icons/percent-badge.svg +3 -0
  253. data/app/assets/images/jet_ui/icons/phone-arrow-down-left.svg +3 -0
  254. data/app/assets/images/jet_ui/icons/phone-arrow-up-right.svg +3 -0
  255. data/app/assets/images/jet_ui/icons/phone-x-mark.svg +3 -0
  256. data/app/assets/images/jet_ui/icons/phone.svg +3 -0
  257. data/app/assets/images/jet_ui/icons/photo.svg +3 -0
  258. data/app/assets/images/jet_ui/icons/play-circle.svg +4 -0
  259. data/app/assets/images/jet_ui/icons/play-pause.svg +3 -0
  260. data/app/assets/images/jet_ui/icons/play.svg +3 -0
  261. data/app/assets/images/jet_ui/icons/plus-circle.svg +3 -0
  262. data/app/assets/images/jet_ui/icons/plus-small.svg +3 -0
  263. data/app/assets/images/jet_ui/icons/plus.svg +3 -0
  264. data/app/assets/images/jet_ui/icons/power.svg +3 -0
  265. data/app/assets/images/jet_ui/icons/presentation-chart-bar.svg +3 -0
  266. data/app/assets/images/jet_ui/icons/presentation-chart-line.svg +3 -0
  267. data/app/assets/images/jet_ui/icons/printer.svg +3 -0
  268. data/app/assets/images/jet_ui/icons/puzzle-piece.svg +3 -0
  269. data/app/assets/images/jet_ui/icons/qr-code.svg +13 -0
  270. data/app/assets/images/jet_ui/icons/question-mark-circle.svg +3 -0
  271. data/app/assets/images/jet_ui/icons/queue-list.svg +3 -0
  272. data/app/assets/images/jet_ui/icons/radio.svg +3 -0
  273. data/app/assets/images/jet_ui/icons/receipt-percent.svg +3 -0
  274. data/app/assets/images/jet_ui/icons/receipt-refund.svg +3 -0
  275. data/app/assets/images/jet_ui/icons/rectangle-group.svg +5 -0
  276. data/app/assets/images/jet_ui/icons/rectangle-stack.svg +3 -0
  277. data/app/assets/images/jet_ui/icons/rocket-launch.svg +3 -0
  278. data/app/assets/images/jet_ui/icons/rss.svg +3 -0
  279. data/app/assets/images/jet_ui/icons/scale.svg +3 -0
  280. data/app/assets/images/jet_ui/icons/scissors.svg +3 -0
  281. data/app/assets/images/jet_ui/icons/server-stack.svg +3 -0
  282. data/app/assets/images/jet_ui/icons/server.svg +3 -0
  283. data/app/assets/images/jet_ui/icons/share.svg +3 -0
  284. data/app/assets/images/jet_ui/icons/shield-check.svg +3 -0
  285. data/app/assets/images/jet_ui/icons/shield-exclamation.svg +3 -0
  286. data/app/assets/images/jet_ui/icons/shopping-bag.svg +3 -0
  287. data/app/assets/images/jet_ui/icons/shopping-cart.svg +3 -0
  288. data/app/assets/images/jet_ui/icons/signal-slash.svg +3 -0
  289. data/app/assets/images/jet_ui/icons/signal.svg +3 -0
  290. data/app/assets/images/jet_ui/icons/slash.svg +3 -0
  291. data/app/assets/images/jet_ui/icons/sparkles.svg +5 -0
  292. data/app/assets/images/jet_ui/icons/speaker-wave.svg +3 -0
  293. data/app/assets/images/jet_ui/icons/speaker-x-mark.svg +3 -0
  294. data/app/assets/images/jet_ui/icons/spinner.svg +1 -0
  295. data/app/assets/images/jet_ui/icons/square-2-stack.svg +3 -0
  296. data/app/assets/images/jet_ui/icons/square-3-stack-3d.svg +3 -0
  297. data/app/assets/images/jet_ui/icons/squares-2x2.svg +6 -0
  298. data/app/assets/images/jet_ui/icons/squares-plus.svg +3 -0
  299. data/app/assets/images/jet_ui/icons/star.svg +3 -0
  300. data/app/assets/images/jet_ui/icons/stop-circle.svg +4 -0
  301. data/app/assets/images/jet_ui/icons/stop.svg +3 -0
  302. data/app/assets/images/jet_ui/icons/strikethrough.svg +3 -0
  303. data/app/assets/images/jet_ui/icons/sun.svg +3 -0
  304. data/app/assets/images/jet_ui/icons/swatch.svg +3 -0
  305. data/app/assets/images/jet_ui/icons/table-cells.svg +3 -0
  306. data/app/assets/images/jet_ui/icons/tag.svg +4 -0
  307. data/app/assets/images/jet_ui/icons/ticket.svg +3 -0
  308. data/app/assets/images/jet_ui/icons/trash.svg +3 -0
  309. data/app/assets/images/jet_ui/icons/trophy.svg +3 -0
  310. data/app/assets/images/jet_ui/icons/truck.svg +3 -0
  311. data/app/assets/images/jet_ui/icons/tv.svg +3 -0
  312. data/app/assets/images/jet_ui/icons/underline.svg +3 -0
  313. data/app/assets/images/jet_ui/icons/user-circle.svg +3 -0
  314. data/app/assets/images/jet_ui/icons/user-group.svg +3 -0
  315. data/app/assets/images/jet_ui/icons/user-minus.svg +3 -0
  316. data/app/assets/images/jet_ui/icons/user-plus.svg +3 -0
  317. data/app/assets/images/jet_ui/icons/user.svg +4 -0
  318. data/app/assets/images/jet_ui/icons/users.svg +3 -0
  319. data/app/assets/images/jet_ui/icons/variable.svg +3 -0
  320. data/app/assets/images/jet_ui/icons/video-camera-slash.svg +3 -0
  321. data/app/assets/images/jet_ui/icons/video-camera.svg +3 -0
  322. data/app/assets/images/jet_ui/icons/view-columns.svg +3 -0
  323. data/app/assets/images/jet_ui/icons/viewfinder-circle.svg +3 -0
  324. data/app/assets/images/jet_ui/icons/wallet.svg +3 -0
  325. data/app/assets/images/jet_ui/icons/wifi.svg +3 -0
  326. data/app/assets/images/jet_ui/icons/window.svg +3 -0
  327. data/app/assets/images/jet_ui/icons/wrench-screwdriver.svg +3 -0
  328. data/app/assets/images/jet_ui/icons/wrench.svg +4 -0
  329. data/app/assets/images/jet_ui/icons/x-circle.svg +3 -0
  330. data/app/assets/images/jet_ui/icons/x-mark.svg +3 -0
  331. data/app/assets/javascripts/jet_ui/clipboard_controller.js +46 -0
  332. data/app/assets/javascripts/jet_ui/drawer_controller.js +70 -0
  333. data/app/assets/javascripts/jet_ui/drawers_controller.js +83 -0
  334. data/app/assets/javascripts/jet_ui/dropdown_controller.js +95 -0
  335. data/app/assets/javascripts/jet_ui/flash_controller.js +34 -0
  336. data/app/assets/javascripts/jet_ui/modal_controller.js +35 -0
  337. data/app/assets/javascripts/jet_ui/modals_controller.js +30 -0
  338. data/app/assets/javascripts/jet_ui/popover_controller.js +95 -0
  339. data/app/assets/javascripts/jet_ui/tooltip_controller.js +107 -0
  340. data/app/assets/javascripts/jet_ui/turbo_confirm_controller.js +25 -0
  341. data/app/assets/stylesheets/jet_ui/accordion.css +24 -0
  342. data/app/assets/stylesheets/jet_ui/alert.css +27 -0
  343. data/app/assets/stylesheets/jet_ui/avatar.css +15 -0
  344. data/app/assets/stylesheets/jet_ui/badge.css +22 -0
  345. data/app/assets/stylesheets/jet_ui/breadcrumbs.css +28 -0
  346. data/app/assets/stylesheets/jet_ui/btn.css +88 -0
  347. data/app/assets/stylesheets/jet_ui/card.css +61 -0
  348. data/app/assets/stylesheets/jet_ui/divider.css +21 -0
  349. data/app/assets/stylesheets/jet_ui/drawer.css +46 -0
  350. data/app/assets/stylesheets/jet_ui/dropdown.css +33 -0
  351. data/app/assets/stylesheets/jet_ui/empty.css +25 -0
  352. data/app/assets/stylesheets/jet_ui/flash.css +50 -0
  353. data/app/assets/stylesheets/jet_ui/group.css +40 -0
  354. data/app/assets/stylesheets/jet_ui/header.css +65 -0
  355. data/app/assets/stylesheets/jet_ui/icon.css +11 -0
  356. data/app/assets/stylesheets/jet_ui/list.css +31 -0
  357. data/app/assets/stylesheets/jet_ui/modal.css +47 -0
  358. data/app/assets/stylesheets/jet_ui/navbar.css +36 -0
  359. data/app/assets/stylesheets/jet_ui/pagy.css +54 -0
  360. data/app/assets/stylesheets/jet_ui/popover.css +51 -0
  361. data/app/assets/stylesheets/jet_ui/sidebar.css +35 -0
  362. data/app/assets/stylesheets/jet_ui/stat.css +23 -0
  363. data/app/assets/stylesheets/jet_ui/stepper.css +82 -0
  364. data/app/assets/stylesheets/jet_ui/table.css +68 -0
  365. data/app/assets/stylesheets/jet_ui/tabs.css +32 -0
  366. data/app/assets/stylesheets/jet_ui/theme.css +174 -0
  367. data/app/assets/stylesheets/jet_ui/timeline.css +45 -0
  368. data/app/assets/stylesheets/jet_ui/tooltip.css +33 -0
  369. data/app/assets/stylesheets/jet_ui.css +28 -0
  370. data/app/components/jet_ui/accordion/body_component.rb +21 -0
  371. data/app/components/jet_ui/accordion/component.rb +24 -0
  372. data/app/components/jet_ui/accordion/summary_component.rb +29 -0
  373. data/app/components/jet_ui/alert/component.rb +29 -0
  374. data/app/components/jet_ui/alert/description_component.rb +21 -0
  375. data/app/components/jet_ui/alert/icon_component.rb +21 -0
  376. data/app/components/jet_ui/alert/title_component.rb +21 -0
  377. data/app/components/jet_ui/avatar/component.rb +54 -0
  378. data/app/components/jet_ui/badge/component.rb +35 -0
  379. data/app/components/jet_ui/base_component.rb +6 -0
  380. data/app/components/jet_ui/breadcrumbs/component.rb +18 -0
  381. data/app/components/jet_ui/breadcrumbs/item_component.rb +25 -0
  382. data/app/components/jet_ui/btn/component.rb +51 -0
  383. data/app/components/jet_ui/card/body_component.rb +24 -0
  384. data/app/components/jet_ui/card/component.rb +24 -0
  385. data/app/components/jet_ui/card/footer_component.rb +48 -0
  386. data/app/components/jet_ui/card/header_component.rb +48 -0
  387. data/app/components/jet_ui/card/subtitle_component.rb +24 -0
  388. data/app/components/jet_ui/card/title_component.rb +24 -0
  389. data/app/components/jet_ui/clipboard/component.rb +58 -0
  390. data/app/components/jet_ui/divider/component.rb +30 -0
  391. data/app/components/jet_ui/drawer/body_component.rb +21 -0
  392. data/app/components/jet_ui/drawer/component.rb +54 -0
  393. data/app/components/jet_ui/drawer/footer_component.rb +45 -0
  394. data/app/components/jet_ui/drawer/header_component.rb +46 -0
  395. data/app/components/jet_ui/dropdown/button_component.rb +24 -0
  396. data/app/components/jet_ui/dropdown/component.rb +28 -0
  397. data/app/components/jet_ui/dropdown/divider_component.rb +21 -0
  398. data/app/components/jet_ui/dropdown/link_component.rb +29 -0
  399. data/app/components/jet_ui/dropdown/menu_component.rb +25 -0
  400. data/app/components/jet_ui/dropdown/title_component.rb +21 -0
  401. data/app/components/jet_ui/dropdown/trigger_component.rb +28 -0
  402. data/app/components/jet_ui/empty/actions_component.rb +19 -0
  403. data/app/components/jet_ui/empty/component.rb +15 -0
  404. data/app/components/jet_ui/empty/description_component.rb +15 -0
  405. data/app/components/jet_ui/empty/icon_component.rb +18 -0
  406. data/app/components/jet_ui/empty/title_component.rb +15 -0
  407. data/app/components/jet_ui/flash/component.html.erb +14 -0
  408. data/app/components/jet_ui/flash/component.rb +44 -0
  409. data/app/components/jet_ui/group/component.rb +26 -0
  410. data/app/components/jet_ui/header/actions_component.rb +21 -0
  411. data/app/components/jet_ui/header/component.rb +35 -0
  412. data/app/components/jet_ui/header/heading_component.rb +21 -0
  413. data/app/components/jet_ui/header/subtitle_component.rb +21 -0
  414. data/app/components/jet_ui/header/title_component.rb +21 -0
  415. data/app/components/jet_ui/icon/component.rb +46 -0
  416. data/app/components/jet_ui/list/action_component.rb +21 -0
  417. data/app/components/jet_ui/list/component.rb +29 -0
  418. data/app/components/jet_ui/list/content_component.rb +21 -0
  419. data/app/components/jet_ui/list/icon_component.rb +25 -0
  420. data/app/components/jet_ui/list/item_component.rb +21 -0
  421. data/app/components/jet_ui/modal/body_component.rb +21 -0
  422. data/app/components/jet_ui/modal/component.rb +54 -0
  423. data/app/components/jet_ui/modal/footer_component.rb +45 -0
  424. data/app/components/jet_ui/modal/header_component.rb +46 -0
  425. data/app/components/jet_ui/navbar/actions_component.rb +21 -0
  426. data/app/components/jet_ui/navbar/brand_component.rb +21 -0
  427. data/app/components/jet_ui/navbar/component.rb +22 -0
  428. data/app/components/jet_ui/navbar/content_component.rb +21 -0
  429. data/app/components/jet_ui/navbar/main_component.rb +21 -0
  430. data/app/components/jet_ui/pagy/component.rb +38 -0
  431. data/app/components/jet_ui/popover/component.rb +29 -0
  432. data/app/components/jet_ui/popover/content_component.rb +23 -0
  433. data/app/components/jet_ui/popover/trigger_component.rb +20 -0
  434. data/app/components/jet_ui/sidebar/component.rb +27 -0
  435. data/app/components/jet_ui/sidebar/link_component.rb +44 -0
  436. data/app/components/jet_ui/sidebar/menu_component.rb +21 -0
  437. data/app/components/jet_ui/sidebar/section_component.rb +21 -0
  438. data/app/components/jet_ui/sidebar/title_component.rb +21 -0
  439. data/app/components/jet_ui/spinner/component.rb +16 -0
  440. data/app/components/jet_ui/stat/component.rb +21 -0
  441. data/app/components/jet_ui/stat/description_component.rb +57 -0
  442. data/app/components/jet_ui/stat/label_component.rb +21 -0
  443. data/app/components/jet_ui/stat/value_component.rb +21 -0
  444. data/app/components/jet_ui/stepper/component.rb +18 -0
  445. data/app/components/jet_ui/stepper/step_component.rb +69 -0
  446. data/app/components/jet_ui/table/component.rb +37 -0
  447. data/app/components/jet_ui/table/tbody_component.rb +15 -0
  448. data/app/components/jet_ui/table/td_component.rb +29 -0
  449. data/app/components/jet_ui/table/tfoot_component.rb +15 -0
  450. data/app/components/jet_ui/table/th_component.rb +27 -0
  451. data/app/components/jet_ui/table/thead_component.rb +15 -0
  452. data/app/components/jet_ui/table/tr_component.rb +15 -0
  453. data/app/components/jet_ui/tabs/component.rb +30 -0
  454. data/app/components/jet_ui/tabs/item_component.rb +34 -0
  455. data/app/components/jet_ui/timeline/component.rb +15 -0
  456. data/app/components/jet_ui/timeline/content_component.rb +15 -0
  457. data/app/components/jet_ui/timeline/dot_component.rb +37 -0
  458. data/app/components/jet_ui/timeline/item_component.rb +15 -0
  459. data/app/components/jet_ui/timeline/time_component.rb +15 -0
  460. data/app/components/jet_ui/tooltip/component.rb +34 -0
  461. data/app/components/jet_ui/turbo_confirm/component.html.erb +20 -0
  462. data/app/components/jet_ui/turbo_confirm/component.rb +8 -0
  463. data/app/helpers/jet_ui_helper.rb +37 -0
  464. data/lib/generators/jet_ui/eject/USAGE +20 -0
  465. data/lib/generators/jet_ui/eject/eject_generator.rb +376 -0
  466. data/lib/generators/jet_ui/install/USAGE +11 -0
  467. data/lib/generators/jet_ui/install/install_generator.rb +121 -0
  468. data/lib/jet_ui/engine.rb +32 -0
  469. data/lib/jet_ui/version.rb +5 -0
  470. data/lib/jet_ui.rb +5 -0
  471. metadata +667 -0
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Accordion
5
+ class SummaryComponent < JetUi::BaseComponent
6
+ def initialize(icon: 'chevron-down', **options)
7
+ @icon = icon
8
+ @options = options
9
+ end
10
+
11
+ erb_template <<~ERB
12
+ <summary class="<%= classes %>">
13
+ <%= content %>
14
+ <%= helpers.jet_ui.icon(@icon, class: icon_classes) if @icon %>
15
+ </summary>
16
+ ERB
17
+
18
+ private
19
+
20
+ def classes
21
+ class_names('accordion__summary', @options[:class])
22
+ end
23
+
24
+ def icon_classes
25
+ 'accordion__icon'
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Alert
5
+ class Component < BaseComponent
6
+ VARIANTS = %i[default info error success warning].freeze
7
+ DEFAULT_VARIANT = :default
8
+
9
+ def initialize(variant: DEFAULT_VARIANT, **options)
10
+ @variant = VARIANTS.include?(variant) ? variant : DEFAULT_VARIANT
11
+ @options = options
12
+ end
13
+
14
+ def call
15
+ content_tag :div, content, class: classes, **@options
16
+ end
17
+
18
+ private
19
+
20
+ def classes
21
+ class_names(
22
+ 'alert',
23
+ "alert-#{@variant}",
24
+ @options.delete(:class)
25
+ )
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Alert
5
+ class DescriptionComponent < BaseComponent
6
+ def initialize(**options)
7
+ @options = options
8
+ end
9
+
10
+ def call
11
+ content_tag :div, content, class: classes, **@options
12
+ end
13
+
14
+ private
15
+
16
+ def classes
17
+ class_names('alert__description', @options.delete(:class))
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Alert
5
+ class IconComponent < BaseComponent
6
+ def initialize(**options)
7
+ @options = options
8
+ end
9
+
10
+ def call
11
+ content_tag :span, content, class: classes, **@options
12
+ end
13
+
14
+ private
15
+
16
+ def classes
17
+ class_names('alert__icon', @options.delete(:class))
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Alert
5
+ class TitleComponent < BaseComponent
6
+ def initialize(**options)
7
+ @options = options
8
+ end
9
+
10
+ def call
11
+ content_tag :strong, content, class: classes, **@options
12
+ end
13
+
14
+ private
15
+
16
+ def classes
17
+ class_names('alert__title', @options.delete(:class))
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Avatar
5
+ class Component < BaseComponent
6
+ VARIANTS = %i[rounded circle square].freeze
7
+ DEFAULT_VARIANT = :circle
8
+ DEFAULT_SIZE = 12
9
+
10
+ def initialize(src: nil, name: nil, size: DEFAULT_SIZE, variant: DEFAULT_VARIANT, **options)
11
+ @src = src
12
+ @name = name
13
+ @size = size
14
+ @variant = VARIANTS.include?(variant) ? variant : DEFAULT_VARIANT
15
+ @options = options
16
+ end
17
+
18
+ def call
19
+ content_tag :div, inner_content, class: avatar_classes, style: avatar_style
20
+ end
21
+
22
+ private
23
+
24
+ def inner_content
25
+ if @src.present?
26
+ helpers.image_tag @src, alt: @name.to_s, class: 'size-full object-cover'
27
+ elsif @name.present?
28
+ content_tag :span, initials
29
+ else
30
+ render JetUi::Icon::Component.new('user', class: 'w-8/12')
31
+ end
32
+ end
33
+
34
+ def initials
35
+ @name.split.pluck(0).join.upcase[0..1]
36
+ end
37
+
38
+ def avatar_classes
39
+ class_names(
40
+ 'avatar',
41
+ { 'avatar--circle': @variant == :circle },
42
+ { 'avatar--rounded': @variant == :rounded },
43
+ @options.delete(:class)
44
+ )
45
+ end
46
+
47
+ def avatar_style
48
+ size = "calc(var(--spacing) * #{@size})"
49
+ font_size = (@size * 1.65).round(1)
50
+ "width: #{size}; height: #{size}; font-size: #{font_size}px"
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Badge
5
+ class Component < BaseComponent
6
+ VARIANTS = %i[default info error success warning].freeze
7
+ DEFAULT_VARIANT = :default
8
+ SIZES = %i[xs sm md lg].freeze
9
+ DEFAULT_SIZE = :sm
10
+
11
+ def initialize(variant: DEFAULT_VARIANT, size: DEFAULT_SIZE, rounded: false, **options)
12
+ @variant = VARIANTS.include?(variant) ? variant : DEFAULT_VARIANT
13
+ @size = SIZES.include?(size) ? size : DEFAULT_SIZE
14
+ @rounded = rounded
15
+ @options = options
16
+ end
17
+
18
+ def call
19
+ content_tag :span, content, class: classes, **@options
20
+ end
21
+
22
+ private
23
+
24
+ def classes
25
+ class_names(
26
+ 'badge',
27
+ "badge-#{@variant}",
28
+ "badge-#{@size}",
29
+ { 'badge-rounded': @rounded },
30
+ @options.delete(:class)
31
+ )
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ class BaseComponent < ::ViewComponent::Base
5
+ end
6
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Breadcrumbs
5
+ class Component < BaseComponent
6
+ def initialize(**options)
7
+ @options = options
8
+ end
9
+
10
+ def call
11
+ content_tag :nav, class: class_names('breadcrumbs', @options.delete(:class)),
12
+ 'aria-label': 'Breadcrumb', **@options do
13
+ content_tag :ol, content, class: 'breadcrumbs__list'
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Breadcrumbs
5
+ class ItemComponent < BaseComponent
6
+ def initialize(label = nil, href: nil, **options)
7
+ @label = label
8
+ @href = href
9
+ @options = options
10
+ end
11
+
12
+ def call
13
+ content_tag :li, class: 'breadcrumbs__item' do
14
+ text = @label.presence || content
15
+ if @href
16
+ link_to text, @href, class: class_names('breadcrumbs__link', @options.delete(:class)), **@options
17
+ else
18
+ content_tag :span, text, class: class_names('breadcrumbs__current', @options.delete(:class)),
19
+ 'aria-current': 'page', **@options
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Btn
5
+ class Component < BaseComponent
6
+ SIZES = %i[xs sm md lg icon_xs icon_sm icon_md icon_lg].freeze
7
+ DEFAULT_SIZE = :md
8
+
9
+ VARIANTS = %i[default outline secondary danger ghost link].freeze
10
+ DEFAULT_VARIANT = :default
11
+
12
+ def initialize(variant: DEFAULT_VARIANT, url: nil, size: DEFAULT_SIZE, rounded: false, block: false,
13
+ circle: false, method: nil, **options)
14
+ @variant = VARIANTS.include?(variant) ? variant : DEFAULT_VARIANT
15
+ @url = url
16
+ @size = SIZES.include?(size.to_sym) ? size.to_sym : DEFAULT_SIZE
17
+ @rounded = rounded
18
+ @block = block
19
+ @circle = circle
20
+ @method = method
21
+ @options = options
22
+ end
23
+
24
+ def call
25
+ if @url && @method
26
+ button_to @url, class: classes, method: @method, **@options do
27
+ content
28
+ end
29
+ elsif @url
30
+ link_to content, @url, class: classes, **@options
31
+ else
32
+ button_tag content, type: 'button', class: classes, **@options
33
+ end
34
+ end
35
+
36
+ private
37
+
38
+ def classes
39
+ class_names(
40
+ 'btn',
41
+ "btn-#{@variant}",
42
+ "btn-#{@size.to_s.tr('_', '-')}",
43
+ { 'btn-block': @block },
44
+ { 'btn-rounded': @rounded },
45
+ { 'btn-circle': @circle },
46
+ @options.delete(:class)
47
+ )
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Card
5
+ class BodyComponent < BaseComponent
6
+ def initialize(**options)
7
+ @options = options
8
+ end
9
+
10
+ def call
11
+ content_tag(:div, content, class: classes, **@options)
12
+ end
13
+
14
+ private
15
+
16
+ def classes
17
+ class_names(
18
+ 'card__body',
19
+ @options.delete(:class)
20
+ )
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Card
5
+ class Component < BaseComponent
6
+ def initialize(**options)
7
+ @options = options
8
+ end
9
+
10
+ def call
11
+ content_tag(:div, content, class: classes, **@options)
12
+ end
13
+
14
+ private
15
+
16
+ def classes
17
+ class_names(
18
+ 'card',
19
+ @options.delete(:class)
20
+ )
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Card
5
+ class FooterComponent < BaseComponent
6
+ def initialize(direction: :row, align: :start, justify: :start, bordered: true, **options)
7
+ @direction = direction
8
+ @align = align
9
+ @justify = justify
10
+ @bordered = bordered
11
+ @options = options
12
+ end
13
+
14
+ def call
15
+ content_tag(:div, content, class: classes, **@options)
16
+ end
17
+
18
+ private
19
+
20
+ def classes
21
+ class_names(
22
+ 'card__footer',
23
+ direction_class,
24
+ align_class,
25
+ justify_class,
26
+ { 'card__footer-bordered': @bordered },
27
+ @options.delete(:class)
28
+ )
29
+ end
30
+
31
+ def direction_class
32
+ 'card__footer--col' if @direction == :col
33
+ end
34
+
35
+ def align_class
36
+ { center: 'card__footer--align-center', end: 'card__footer--align-end' }[@align]
37
+ end
38
+
39
+ def justify_class
40
+ {
41
+ center: 'card__footer--justify-center',
42
+ end: 'card__footer--justify-end',
43
+ between: 'card__footer--justify-between'
44
+ }[@justify]
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Card
5
+ class HeaderComponent < BaseComponent
6
+ def initialize(direction: :col, align: :start, justify: :start, bordered: true, **options)
7
+ @direction = direction
8
+ @align = align
9
+ @justify = justify
10
+ @bordered = bordered
11
+ @options = options
12
+ end
13
+
14
+ def call
15
+ content_tag(:div, content, class: classes, **@options)
16
+ end
17
+
18
+ private
19
+
20
+ def classes
21
+ class_names(
22
+ 'card__header',
23
+ direction_class,
24
+ align_class,
25
+ justify_class,
26
+ { 'card__header-bordered': @bordered },
27
+ @options.delete(:class)
28
+ )
29
+ end
30
+
31
+ def direction_class
32
+ 'card__header--row' if @direction == :row
33
+ end
34
+
35
+ def align_class
36
+ { center: 'card__header--align-center', end: 'card__header--align-end' }[@align]
37
+ end
38
+
39
+ def justify_class
40
+ {
41
+ center: 'card__header--justify-center',
42
+ end: 'card__header--justify-end',
43
+ between: 'card__header--justify-between'
44
+ }[@justify]
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Card
5
+ class SubtitleComponent < BaseComponent
6
+ def initialize(**options)
7
+ @options = options
8
+ end
9
+
10
+ def call
11
+ content_tag(:span, content, class: classes, **@options)
12
+ end
13
+
14
+ private
15
+
16
+ def classes
17
+ class_names(
18
+ 'card__subtitle',
19
+ @options.delete(:class)
20
+ )
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Card
5
+ class TitleComponent < BaseComponent
6
+ def initialize(**options)
7
+ @options = options
8
+ end
9
+
10
+ def call
11
+ content_tag(:strong, content, class: classes, **@options)
12
+ end
13
+
14
+ private
15
+
16
+ def classes
17
+ class_names(
18
+ 'card__title',
19
+ @options.delete(:class)
20
+ )
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Clipboard
5
+ class Component < JetUi::BaseComponent
6
+ def initialize(as: nil, value: nil, source_id: nil, success_text: 'Copied!',
7
+ tooltip: nil, tooltip_success: nil, tooltip_placement: 'top', **options)
8
+ @as = as
9
+ @value = value
10
+ @source_id = source_id
11
+ @success_text = success_text
12
+ @tooltip = tooltip
13
+ @tooltip_success = tooltip_success || success_text
14
+ @tooltip_placement = tooltip_placement
15
+ @options = options
16
+ end
17
+
18
+ def call
19
+ if @as
20
+ helpers.jet_ui.public_send(@as, **attrs) { content }
21
+ else
22
+ content_tag :span, content, class: classes, **attrs
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def attrs
29
+ @options.except(:class, :data).merge(data: data_attributes)
30
+ end
31
+
32
+ def data_attributes
33
+ base = {
34
+ controller: @tooltip ? 'clipboard tooltip' : 'clipboard',
35
+ clipboard_success_text_value: @success_text,
36
+ action: @tooltip ? 'click->clipboard#copy clipboard:change->tooltip#updateContent' : 'click->clipboard#copy'
37
+ }
38
+
39
+ base[:clipboard_content_value] = @value if @value
40
+ base[:clipboard_source_id_value] = @source_id if @source_id
41
+ base.merge!(tooltip_attributes) if @tooltip
42
+ base.merge(@options.fetch(:data, {}))
43
+ end
44
+
45
+ def tooltip_attributes
46
+ {
47
+ tooltip_content_value: @tooltip,
48
+ tooltip_placement_value: @tooltip_placement,
49
+ clipboard_success_text_value: @success_text
50
+ }
51
+ end
52
+
53
+ def classes
54
+ class_names('cursor-pointer', @options[:class])
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Divider
5
+ class Component < BaseComponent
6
+ ALIGNS = %i[center start end].freeze
7
+ DEFAULT_ALIGN = :center
8
+
9
+ def initialize(align: DEFAULT_ALIGN, **options)
10
+ @align = ALIGNS.include?(align) ? align : DEFAULT_ALIGN
11
+ @options = options
12
+ end
13
+
14
+ def call
15
+ content_tag :div, content.presence, class: classes, **@options
16
+ end
17
+
18
+ private
19
+
20
+ def classes
21
+ class_names(
22
+ 'divider',
23
+ { 'divider-start': @align == :start },
24
+ { 'divider-end': @align == :end },
25
+ @options.delete(:class)
26
+ )
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Drawer
5
+ class BodyComponent < JetUi::BaseComponent
6
+ def initialize(**options)
7
+ @options = options
8
+ end
9
+
10
+ def call
11
+ content_tag :div, content, class: classes, **@options.except(:class)
12
+ end
13
+
14
+ private
15
+
16
+ def classes
17
+ class_names('drawer__body', @options[:class])
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JetUi
4
+ module Drawer
5
+ class Component < JetUi::BaseComponent
6
+ SIZES = %w[sm md lg xl 2xl 3xl 4xl 5xl 6xl].freeze
7
+ DEFAULT_SIZE = '2xl'
8
+
9
+ def initialize(title: nil, subtitle: nil, size: DEFAULT_SIZE, id: nil)
10
+ @title = title
11
+ @subtitle = subtitle
12
+ @size = size
13
+ @id = id
14
+ end
15
+
16
+ erb_template <<~ERB
17
+ <%= container_tag do %>
18
+ <%= helpers.jet_ui.drawer_header(title: @title, subtitle: @subtitle, closable: closable?, id: @id) %>
19
+ <%= content %>
20
+ <% end %>
21
+ ERB
22
+
23
+ private
24
+
25
+ def container_tag(&block)
26
+ return sync_dialog(&block) if @id
27
+ return turbo_frame_dialog(&block) if helpers.turbo_frame_request?
28
+
29
+ content_tag :div, class: class_names('mx-auto bg-background', "w-#{@size}"), &block
30
+ end
31
+
32
+ def sync_dialog(&block)
33
+ dialog_tag(id: @id, data: { drawers_target: 'dialog' }, &block)
34
+ end
35
+
36
+ def turbo_frame_dialog(&block)
37
+ helpers.turbo_frame_tag :drawer do
38
+ dialog_tag(id: :drawerDialog, data: { controller: 'drawer' }) do
39
+ helpers.turbo_frame_tag(:drawerContent, &block)
40
+ end
41
+ end
42
+ end
43
+
44
+ def dialog_tag(**options, &block)
45
+ attrs = { tabindex: '-1', class: class_names('drawer', 'animate-slide-left', "w-#{@size}") }
46
+ content_tag :dialog, **attrs, **options, &block
47
+ end
48
+
49
+ def closable?
50
+ helpers.turbo_frame_request? || @id
51
+ end
52
+ end
53
+ end
54
+ end