hakumi_components 0.1.3.pre

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.

Potentially problematic release.


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

Files changed (1339) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +60 -0
  3. data/LICENSE +21 -0
  4. data/app/assets/icons/filled/account-book.svg +1 -0
  5. data/app/assets/icons/filled/alert.svg +1 -0
  6. data/app/assets/icons/filled/alipay-circle.svg +1 -0
  7. data/app/assets/icons/filled/alipay-square.svg +1 -0
  8. data/app/assets/icons/filled/aliwangwang.svg +1 -0
  9. data/app/assets/icons/filled/amazon-circle.svg +1 -0
  10. data/app/assets/icons/filled/amazon-square.svg +1 -0
  11. data/app/assets/icons/filled/android.svg +1 -0
  12. data/app/assets/icons/filled/api.svg +1 -0
  13. data/app/assets/icons/filled/apple.svg +1 -0
  14. data/app/assets/icons/filled/appstore.svg +1 -0
  15. data/app/assets/icons/filled/audio.svg +1 -0
  16. data/app/assets/icons/filled/backward.svg +1 -0
  17. data/app/assets/icons/filled/bank.svg +1 -0
  18. data/app/assets/icons/filled/behance-circle.svg +1 -0
  19. data/app/assets/icons/filled/behance-square.svg +1 -0
  20. data/app/assets/icons/filled/bell.svg +1 -0
  21. data/app/assets/icons/filled/bilibili.svg +1 -0
  22. data/app/assets/icons/filled/book.svg +1 -0
  23. data/app/assets/icons/filled/box-plot.svg +1 -0
  24. data/app/assets/icons/filled/bug.svg +1 -0
  25. data/app/assets/icons/filled/build.svg +1 -0
  26. data/app/assets/icons/filled/bulb.svg +1 -0
  27. data/app/assets/icons/filled/calculator.svg +1 -0
  28. data/app/assets/icons/filled/calendar.svg +1 -0
  29. data/app/assets/icons/filled/camera.svg +1 -0
  30. data/app/assets/icons/filled/car.svg +1 -0
  31. data/app/assets/icons/filled/caret-down.svg +1 -0
  32. data/app/assets/icons/filled/caret-left.svg +1 -0
  33. data/app/assets/icons/filled/caret-right.svg +1 -0
  34. data/app/assets/icons/filled/caret-up.svg +1 -0
  35. data/app/assets/icons/filled/carry-out.svg +1 -0
  36. data/app/assets/icons/filled/check-circle.svg +1 -0
  37. data/app/assets/icons/filled/check-square.svg +1 -0
  38. data/app/assets/icons/filled/chrome.svg +1 -0
  39. data/app/assets/icons/filled/ci-circle.svg +1 -0
  40. data/app/assets/icons/filled/clock-circle.svg +1 -0
  41. data/app/assets/icons/filled/close-circle.svg +1 -0
  42. data/app/assets/icons/filled/close-square.svg +1 -0
  43. data/app/assets/icons/filled/cloud.svg +1 -0
  44. data/app/assets/icons/filled/code-sandbox-circle.svg +1 -0
  45. data/app/assets/icons/filled/code-sandbox-square.svg +1 -0
  46. data/app/assets/icons/filled/code.svg +1 -0
  47. data/app/assets/icons/filled/codepen-circle.svg +1 -0
  48. data/app/assets/icons/filled/codepen-square.svg +1 -0
  49. data/app/assets/icons/filled/compass.svg +1 -0
  50. data/app/assets/icons/filled/contacts.svg +1 -0
  51. data/app/assets/icons/filled/container.svg +1 -0
  52. data/app/assets/icons/filled/control.svg +1 -0
  53. data/app/assets/icons/filled/copy.svg +1 -0
  54. data/app/assets/icons/filled/copyright-circle.svg +1 -0
  55. data/app/assets/icons/filled/credit-card.svg +1 -0
  56. data/app/assets/icons/filled/crown.svg +1 -0
  57. data/app/assets/icons/filled/customer-service.svg +1 -0
  58. data/app/assets/icons/filled/dashboard.svg +1 -0
  59. data/app/assets/icons/filled/database.svg +1 -0
  60. data/app/assets/icons/filled/delete.svg +1 -0
  61. data/app/assets/icons/filled/diff.svg +1 -0
  62. data/app/assets/icons/filled/dingtalk-circle.svg +1 -0
  63. data/app/assets/icons/filled/dingtalk-square.svg +1 -0
  64. data/app/assets/icons/filled/discord.svg +1 -0
  65. data/app/assets/icons/filled/dislike.svg +1 -0
  66. data/app/assets/icons/filled/dollar-circle.svg +1 -0
  67. data/app/assets/icons/filled/down-circle.svg +1 -0
  68. data/app/assets/icons/filled/down-square.svg +1 -0
  69. data/app/assets/icons/filled/dribbble-circle.svg +1 -0
  70. data/app/assets/icons/filled/dribbble-square.svg +1 -0
  71. data/app/assets/icons/filled/dropbox-circle.svg +1 -0
  72. data/app/assets/icons/filled/dropbox-square.svg +1 -0
  73. data/app/assets/icons/filled/edit.svg +1 -0
  74. data/app/assets/icons/filled/environment.svg +1 -0
  75. data/app/assets/icons/filled/euro-circle.svg +1 -0
  76. data/app/assets/icons/filled/exclamation-circle.svg +1 -0
  77. data/app/assets/icons/filled/experiment.svg +1 -0
  78. data/app/assets/icons/filled/eye-invisible.svg +1 -0
  79. data/app/assets/icons/filled/eye.svg +1 -0
  80. data/app/assets/icons/filled/facebook.svg +1 -0
  81. data/app/assets/icons/filled/fast-backward.svg +1 -0
  82. data/app/assets/icons/filled/fast-forward.svg +1 -0
  83. data/app/assets/icons/filled/file-add.svg +1 -0
  84. data/app/assets/icons/filled/file-excel.svg +1 -0
  85. data/app/assets/icons/filled/file-exclamation.svg +1 -0
  86. data/app/assets/icons/filled/file-image.svg +1 -0
  87. data/app/assets/icons/filled/file-markdown.svg +1 -0
  88. data/app/assets/icons/filled/file-pdf.svg +1 -0
  89. data/app/assets/icons/filled/file-ppt.svg +1 -0
  90. data/app/assets/icons/filled/file-text.svg +1 -0
  91. data/app/assets/icons/filled/file-unknown.svg +1 -0
  92. data/app/assets/icons/filled/file-word.svg +1 -0
  93. data/app/assets/icons/filled/file-zip.svg +1 -0
  94. data/app/assets/icons/filled/file.svg +1 -0
  95. data/app/assets/icons/filled/filter.svg +1 -0
  96. data/app/assets/icons/filled/fire.svg +1 -0
  97. data/app/assets/icons/filled/flag.svg +1 -0
  98. data/app/assets/icons/filled/folder-add.svg +1 -0
  99. data/app/assets/icons/filled/folder-open.svg +1 -0
  100. data/app/assets/icons/filled/folder.svg +1 -0
  101. data/app/assets/icons/filled/format-painter.svg +1 -0
  102. data/app/assets/icons/filled/forward.svg +1 -0
  103. data/app/assets/icons/filled/frown.svg +1 -0
  104. data/app/assets/icons/filled/fund.svg +1 -0
  105. data/app/assets/icons/filled/funnel-plot.svg +1 -0
  106. data/app/assets/icons/filled/gift.svg +1 -0
  107. data/app/assets/icons/filled/github.svg +1 -0
  108. data/app/assets/icons/filled/gitlab.svg +1 -0
  109. data/app/assets/icons/filled/gold.svg +1 -0
  110. data/app/assets/icons/filled/golden.svg +1 -0
  111. data/app/assets/icons/filled/google-circle.svg +1 -0
  112. data/app/assets/icons/filled/google-plus-circle.svg +1 -0
  113. data/app/assets/icons/filled/google-plus-square.svg +1 -0
  114. data/app/assets/icons/filled/google-square.svg +1 -0
  115. data/app/assets/icons/filled/hdd.svg +1 -0
  116. data/app/assets/icons/filled/heart.svg +1 -0
  117. data/app/assets/icons/filled/highlight.svg +1 -0
  118. data/app/assets/icons/filled/home.svg +1 -0
  119. data/app/assets/icons/filled/hourglass.svg +1 -0
  120. data/app/assets/icons/filled/html5.svg +1 -0
  121. data/app/assets/icons/filled/idcard.svg +1 -0
  122. data/app/assets/icons/filled/ie-circle.svg +1 -0
  123. data/app/assets/icons/filled/ie-square.svg +1 -0
  124. data/app/assets/icons/filled/info-circle.svg +1 -0
  125. data/app/assets/icons/filled/instagram.svg +1 -0
  126. data/app/assets/icons/filled/insurance.svg +1 -0
  127. data/app/assets/icons/filled/interaction.svg +1 -0
  128. data/app/assets/icons/filled/layout.svg +1 -0
  129. data/app/assets/icons/filled/left-circle.svg +1 -0
  130. data/app/assets/icons/filled/left-square.svg +1 -0
  131. data/app/assets/icons/filled/like.svg +1 -0
  132. data/app/assets/icons/filled/linkedin.svg +1 -0
  133. data/app/assets/icons/filled/lock.svg +1 -0
  134. data/app/assets/icons/filled/mac-command.svg +1 -0
  135. data/app/assets/icons/filled/mail.svg +1 -0
  136. data/app/assets/icons/filled/medicine-box.svg +1 -0
  137. data/app/assets/icons/filled/medium-circle.svg +1 -0
  138. data/app/assets/icons/filled/medium-square.svg +1 -0
  139. data/app/assets/icons/filled/meh.svg +1 -0
  140. data/app/assets/icons/filled/merge.svg +1 -0
  141. data/app/assets/icons/filled/message.svg +1 -0
  142. data/app/assets/icons/filled/minus-circle.svg +1 -0
  143. data/app/assets/icons/filled/minus-square.svg +1 -0
  144. data/app/assets/icons/filled/mobile.svg +1 -0
  145. data/app/assets/icons/filled/money-collect.svg +1 -0
  146. data/app/assets/icons/filled/moon.svg +1 -0
  147. data/app/assets/icons/filled/muted.svg +1 -0
  148. data/app/assets/icons/filled/notification.svg +1 -0
  149. data/app/assets/icons/filled/open-a-i.svg +1 -0
  150. data/app/assets/icons/filled/pause-circle.svg +1 -0
  151. data/app/assets/icons/filled/pay-circle.svg +1 -0
  152. data/app/assets/icons/filled/phone.svg +1 -0
  153. data/app/assets/icons/filled/picture.svg +1 -0
  154. data/app/assets/icons/filled/pie-chart.svg +1 -0
  155. data/app/assets/icons/filled/pinterest.svg +1 -0
  156. data/app/assets/icons/filled/play-circle.svg +1 -0
  157. data/app/assets/icons/filled/play-square.svg +1 -0
  158. data/app/assets/icons/filled/plus-circle.svg +1 -0
  159. data/app/assets/icons/filled/plus-square.svg +1 -0
  160. data/app/assets/icons/filled/pound-circle.svg +1 -0
  161. data/app/assets/icons/filled/printer.svg +1 -0
  162. data/app/assets/icons/filled/product.svg +1 -0
  163. data/app/assets/icons/filled/profile.svg +1 -0
  164. data/app/assets/icons/filled/project.svg +1 -0
  165. data/app/assets/icons/filled/property-safety.svg +1 -0
  166. data/app/assets/icons/filled/pushpin.svg +1 -0
  167. data/app/assets/icons/filled/qq-circle.svg +1 -0
  168. data/app/assets/icons/filled/qq-square.svg +1 -0
  169. data/app/assets/icons/filled/question-circle.svg +1 -0
  170. data/app/assets/icons/filled/read.svg +1 -0
  171. data/app/assets/icons/filled/reconciliation.svg +1 -0
  172. data/app/assets/icons/filled/red-envelope.svg +1 -0
  173. data/app/assets/icons/filled/reddit-circle.svg +1 -0
  174. data/app/assets/icons/filled/reddit-square.svg +1 -0
  175. data/app/assets/icons/filled/rest.svg +1 -0
  176. data/app/assets/icons/filled/right-circle.svg +1 -0
  177. data/app/assets/icons/filled/right-square.svg +1 -0
  178. data/app/assets/icons/filled/robot.svg +1 -0
  179. data/app/assets/icons/filled/rocket.svg +1 -0
  180. data/app/assets/icons/filled/safety-certificate.svg +1 -0
  181. data/app/assets/icons/filled/save.svg +1 -0
  182. data/app/assets/icons/filled/schedule.svg +1 -0
  183. data/app/assets/icons/filled/security-scan.svg +1 -0
  184. data/app/assets/icons/filled/setting.svg +1 -0
  185. data/app/assets/icons/filled/shop.svg +1 -0
  186. data/app/assets/icons/filled/shopping.svg +1 -0
  187. data/app/assets/icons/filled/signal.svg +1 -0
  188. data/app/assets/icons/filled/signature.svg +1 -0
  189. data/app/assets/icons/filled/sketch-circle.svg +1 -0
  190. data/app/assets/icons/filled/sketch-square.svg +1 -0
  191. data/app/assets/icons/filled/skin.svg +1 -0
  192. data/app/assets/icons/filled/skype.svg +1 -0
  193. data/app/assets/icons/filled/slack-circle.svg +1 -0
  194. data/app/assets/icons/filled/slack-square.svg +1 -0
  195. data/app/assets/icons/filled/sliders.svg +1 -0
  196. data/app/assets/icons/filled/smile.svg +1 -0
  197. data/app/assets/icons/filled/snippets.svg +1 -0
  198. data/app/assets/icons/filled/sound.svg +1 -0
  199. data/app/assets/icons/filled/spotify.svg +1 -0
  200. data/app/assets/icons/filled/star.svg +1 -0
  201. data/app/assets/icons/filled/step-backward.svg +1 -0
  202. data/app/assets/icons/filled/step-forward.svg +1 -0
  203. data/app/assets/icons/filled/stop.svg +1 -0
  204. data/app/assets/icons/filled/sun.svg +1 -0
  205. data/app/assets/icons/filled/switcher.svg +1 -0
  206. data/app/assets/icons/filled/tablet.svg +1 -0
  207. data/app/assets/icons/filled/tag.svg +1 -0
  208. data/app/assets/icons/filled/tags.svg +1 -0
  209. data/app/assets/icons/filled/taobao-circle.svg +1 -0
  210. data/app/assets/icons/filled/taobao-square.svg +1 -0
  211. data/app/assets/icons/filled/thunderbolt.svg +1 -0
  212. data/app/assets/icons/filled/tik-tok.svg +1 -0
  213. data/app/assets/icons/filled/tool.svg +1 -0
  214. data/app/assets/icons/filled/trademark-circle.svg +1 -0
  215. data/app/assets/icons/filled/trophy.svg +1 -0
  216. data/app/assets/icons/filled/truck.svg +1 -0
  217. data/app/assets/icons/filled/twitch.svg +1 -0
  218. data/app/assets/icons/filled/twitter-circle.svg +1 -0
  219. data/app/assets/icons/filled/twitter-square.svg +1 -0
  220. data/app/assets/icons/filled/unlock.svg +1 -0
  221. data/app/assets/icons/filled/up-circle.svg +1 -0
  222. data/app/assets/icons/filled/up-square.svg +1 -0
  223. data/app/assets/icons/filled/usb.svg +1 -0
  224. data/app/assets/icons/filled/video-camera.svg +1 -0
  225. data/app/assets/icons/filled/wallet.svg +1 -0
  226. data/app/assets/icons/filled/warning.svg +1 -0
  227. data/app/assets/icons/filled/wechat-work.svg +1 -0
  228. data/app/assets/icons/filled/wechat.svg +1 -0
  229. data/app/assets/icons/filled/weibo-circle.svg +1 -0
  230. data/app/assets/icons/filled/weibo-square.svg +1 -0
  231. data/app/assets/icons/filled/windows.svg +1 -0
  232. data/app/assets/icons/filled/x.svg +1 -0
  233. data/app/assets/icons/filled/yahoo.svg +1 -0
  234. data/app/assets/icons/filled/youtube.svg +1 -0
  235. data/app/assets/icons/filled/yuque.svg +1 -0
  236. data/app/assets/icons/filled/zhihu-circle.svg +1 -0
  237. data/app/assets/icons/filled/zhihu-square.svg +1 -0
  238. data/app/assets/icons/outlined/account-book.svg +1 -0
  239. data/app/assets/icons/outlined/aim.svg +1 -0
  240. data/app/assets/icons/outlined/alert.svg +1 -0
  241. data/app/assets/icons/outlined/alibaba.svg +1 -0
  242. data/app/assets/icons/outlined/align-center.svg +1 -0
  243. data/app/assets/icons/outlined/align-left.svg +1 -0
  244. data/app/assets/icons/outlined/align-right.svg +1 -0
  245. data/app/assets/icons/outlined/alipay-circle.svg +1 -0
  246. data/app/assets/icons/outlined/alipay.svg +1 -0
  247. data/app/assets/icons/outlined/aliwangwang.svg +1 -0
  248. data/app/assets/icons/outlined/aliyun.svg +1 -0
  249. data/app/assets/icons/outlined/amazon.svg +1 -0
  250. data/app/assets/icons/outlined/android.svg +1 -0
  251. data/app/assets/icons/outlined/ant-cloud.svg +1 -0
  252. data/app/assets/icons/outlined/ant-design.svg +1 -0
  253. data/app/assets/icons/outlined/apartment.svg +1 -0
  254. data/app/assets/icons/outlined/api.svg +1 -0
  255. data/app/assets/icons/outlined/apple.svg +1 -0
  256. data/app/assets/icons/outlined/appstore-add.svg +1 -0
  257. data/app/assets/icons/outlined/appstore.svg +1 -0
  258. data/app/assets/icons/outlined/area-chart.svg +1 -0
  259. data/app/assets/icons/outlined/arrow-down.svg +1 -0
  260. data/app/assets/icons/outlined/arrow-left.svg +1 -0
  261. data/app/assets/icons/outlined/arrow-right.svg +1 -0
  262. data/app/assets/icons/outlined/arrow-up.svg +1 -0
  263. data/app/assets/icons/outlined/arrows-alt.svg +1 -0
  264. data/app/assets/icons/outlined/audio-muted.svg +1 -0
  265. data/app/assets/icons/outlined/audio.svg +1 -0
  266. data/app/assets/icons/outlined/audit.svg +1 -0
  267. data/app/assets/icons/outlined/backward.svg +1 -0
  268. data/app/assets/icons/outlined/baidu.svg +1 -0
  269. data/app/assets/icons/outlined/bank.svg +1 -0
  270. data/app/assets/icons/outlined/bar-chart.svg +1 -0
  271. data/app/assets/icons/outlined/barcode.svg +1 -0
  272. data/app/assets/icons/outlined/bars.svg +1 -0
  273. data/app/assets/icons/outlined/behance-square.svg +1 -0
  274. data/app/assets/icons/outlined/behance.svg +1 -0
  275. data/app/assets/icons/outlined/bell.svg +1 -0
  276. data/app/assets/icons/outlined/bg-colors.svg +1 -0
  277. data/app/assets/icons/outlined/bilibili.svg +1 -0
  278. data/app/assets/icons/outlined/block.svg +1 -0
  279. data/app/assets/icons/outlined/bold.svg +1 -0
  280. data/app/assets/icons/outlined/book.svg +1 -0
  281. data/app/assets/icons/outlined/border-bottom.svg +1 -0
  282. data/app/assets/icons/outlined/border-horizontal.svg +1 -0
  283. data/app/assets/icons/outlined/border-inner.svg +1 -0
  284. data/app/assets/icons/outlined/border-left.svg +1 -0
  285. data/app/assets/icons/outlined/border-outer.svg +1 -0
  286. data/app/assets/icons/outlined/border-right.svg +1 -0
  287. data/app/assets/icons/outlined/border-top.svg +1 -0
  288. data/app/assets/icons/outlined/border-verticle.svg +1 -0
  289. data/app/assets/icons/outlined/border.svg +1 -0
  290. data/app/assets/icons/outlined/borderless-table.svg +1 -0
  291. data/app/assets/icons/outlined/box-plot.svg +1 -0
  292. data/app/assets/icons/outlined/branches.svg +1 -0
  293. data/app/assets/icons/outlined/bug.svg +1 -0
  294. data/app/assets/icons/outlined/build.svg +1 -0
  295. data/app/assets/icons/outlined/bulb.svg +1 -0
  296. data/app/assets/icons/outlined/calculator.svg +1 -0
  297. data/app/assets/icons/outlined/calendar.svg +1 -0
  298. data/app/assets/icons/outlined/camera.svg +1 -0
  299. data/app/assets/icons/outlined/car.svg +1 -0
  300. data/app/assets/icons/outlined/caret-down.svg +1 -0
  301. data/app/assets/icons/outlined/caret-left.svg +1 -0
  302. data/app/assets/icons/outlined/caret-right.svg +1 -0
  303. data/app/assets/icons/outlined/caret-up.svg +1 -0
  304. data/app/assets/icons/outlined/carry-out.svg +1 -0
  305. data/app/assets/icons/outlined/check-circle.svg +1 -0
  306. data/app/assets/icons/outlined/check-square.svg +1 -0
  307. data/app/assets/icons/outlined/check.svg +1 -0
  308. data/app/assets/icons/outlined/chrome.svg +1 -0
  309. data/app/assets/icons/outlined/ci-circle.svg +1 -0
  310. data/app/assets/icons/outlined/ci.svg +1 -0
  311. data/app/assets/icons/outlined/clear.svg +1 -0
  312. data/app/assets/icons/outlined/clock-circle.svg +1 -0
  313. data/app/assets/icons/outlined/close-circle.svg +1 -0
  314. data/app/assets/icons/outlined/close-square.svg +1 -0
  315. data/app/assets/icons/outlined/close.svg +1 -0
  316. data/app/assets/icons/outlined/cloud-download.svg +1 -0
  317. data/app/assets/icons/outlined/cloud-server.svg +1 -0
  318. data/app/assets/icons/outlined/cloud-sync.svg +1 -0
  319. data/app/assets/icons/outlined/cloud-upload.svg +1 -0
  320. data/app/assets/icons/outlined/cloud.svg +1 -0
  321. data/app/assets/icons/outlined/cluster.svg +1 -0
  322. data/app/assets/icons/outlined/code-sandbox.svg +1 -0
  323. data/app/assets/icons/outlined/code.svg +1 -0
  324. data/app/assets/icons/outlined/codepen-circle.svg +1 -0
  325. data/app/assets/icons/outlined/codepen.svg +1 -0
  326. data/app/assets/icons/outlined/coffee.svg +1 -0
  327. data/app/assets/icons/outlined/column-height.svg +1 -0
  328. data/app/assets/icons/outlined/column-width.svg +1 -0
  329. data/app/assets/icons/outlined/comment.svg +1 -0
  330. data/app/assets/icons/outlined/compass.svg +1 -0
  331. data/app/assets/icons/outlined/compress.svg +1 -0
  332. data/app/assets/icons/outlined/console-sql.svg +1 -0
  333. data/app/assets/icons/outlined/contacts.svg +1 -0
  334. data/app/assets/icons/outlined/container.svg +1 -0
  335. data/app/assets/icons/outlined/control.svg +1 -0
  336. data/app/assets/icons/outlined/copy.svg +1 -0
  337. data/app/assets/icons/outlined/copyright-circle.svg +1 -0
  338. data/app/assets/icons/outlined/copyright.svg +1 -0
  339. data/app/assets/icons/outlined/credit-card.svg +1 -0
  340. data/app/assets/icons/outlined/crown.svg +1 -0
  341. data/app/assets/icons/outlined/customer-service.svg +1 -0
  342. data/app/assets/icons/outlined/dash.svg +1 -0
  343. data/app/assets/icons/outlined/dashboard.svg +1 -0
  344. data/app/assets/icons/outlined/database.svg +1 -0
  345. data/app/assets/icons/outlined/delete-column.svg +1 -0
  346. data/app/assets/icons/outlined/delete-row.svg +1 -0
  347. data/app/assets/icons/outlined/delete.svg +1 -0
  348. data/app/assets/icons/outlined/delivered-procedure.svg +1 -0
  349. data/app/assets/icons/outlined/deployment-unit.svg +1 -0
  350. data/app/assets/icons/outlined/desktop.svg +1 -0
  351. data/app/assets/icons/outlined/diff.svg +1 -0
  352. data/app/assets/icons/outlined/dingding.svg +1 -0
  353. data/app/assets/icons/outlined/dingtalk.svg +1 -0
  354. data/app/assets/icons/outlined/disconnect.svg +1 -0
  355. data/app/assets/icons/outlined/discord.svg +1 -0
  356. data/app/assets/icons/outlined/dislike.svg +1 -0
  357. data/app/assets/icons/outlined/docker.svg +1 -0
  358. data/app/assets/icons/outlined/dollar-circle.svg +1 -0
  359. data/app/assets/icons/outlined/dollar.svg +1 -0
  360. data/app/assets/icons/outlined/dot-chart.svg +1 -0
  361. data/app/assets/icons/outlined/dot-net.svg +1 -0
  362. data/app/assets/icons/outlined/double-left.svg +1 -0
  363. data/app/assets/icons/outlined/double-right.svg +1 -0
  364. data/app/assets/icons/outlined/down-circle.svg +1 -0
  365. data/app/assets/icons/outlined/down-square.svg +1 -0
  366. data/app/assets/icons/outlined/down.svg +1 -0
  367. data/app/assets/icons/outlined/download.svg +1 -0
  368. data/app/assets/icons/outlined/drag.svg +1 -0
  369. data/app/assets/icons/outlined/dribbble-square.svg +1 -0
  370. data/app/assets/icons/outlined/dribbble.svg +1 -0
  371. data/app/assets/icons/outlined/dropbox.svg +1 -0
  372. data/app/assets/icons/outlined/edit.svg +1 -0
  373. data/app/assets/icons/outlined/ellipsis.svg +1 -0
  374. data/app/assets/icons/outlined/enter.svg +1 -0
  375. data/app/assets/icons/outlined/environment.svg +1 -0
  376. data/app/assets/icons/outlined/euro-circle.svg +1 -0
  377. data/app/assets/icons/outlined/euro.svg +1 -0
  378. data/app/assets/icons/outlined/exception.svg +1 -0
  379. data/app/assets/icons/outlined/exclamation-circle.svg +1 -0
  380. data/app/assets/icons/outlined/exclamation.svg +1 -0
  381. data/app/assets/icons/outlined/expand-alt.svg +1 -0
  382. data/app/assets/icons/outlined/expand.svg +1 -0
  383. data/app/assets/icons/outlined/experiment.svg +1 -0
  384. data/app/assets/icons/outlined/export.svg +1 -0
  385. data/app/assets/icons/outlined/eye-invisible.svg +1 -0
  386. data/app/assets/icons/outlined/eye.svg +1 -0
  387. data/app/assets/icons/outlined/facebook.svg +1 -0
  388. data/app/assets/icons/outlined/fall.svg +1 -0
  389. data/app/assets/icons/outlined/fast-backward.svg +1 -0
  390. data/app/assets/icons/outlined/fast-forward.svg +1 -0
  391. data/app/assets/icons/outlined/field-binary.svg +1 -0
  392. data/app/assets/icons/outlined/field-number.svg +1 -0
  393. data/app/assets/icons/outlined/field-string.svg +1 -0
  394. data/app/assets/icons/outlined/field-time.svg +1 -0
  395. data/app/assets/icons/outlined/file-add.svg +1 -0
  396. data/app/assets/icons/outlined/file-done.svg +1 -0
  397. data/app/assets/icons/outlined/file-excel.svg +1 -0
  398. data/app/assets/icons/outlined/file-exclamation.svg +1 -0
  399. data/app/assets/icons/outlined/file-gif.svg +1 -0
  400. data/app/assets/icons/outlined/file-image.svg +1 -0
  401. data/app/assets/icons/outlined/file-jpg.svg +1 -0
  402. data/app/assets/icons/outlined/file-markdown.svg +1 -0
  403. data/app/assets/icons/outlined/file-pdf.svg +1 -0
  404. data/app/assets/icons/outlined/file-ppt.svg +1 -0
  405. data/app/assets/icons/outlined/file-protect.svg +1 -0
  406. data/app/assets/icons/outlined/file-search.svg +1 -0
  407. data/app/assets/icons/outlined/file-sync.svg +1 -0
  408. data/app/assets/icons/outlined/file-text.svg +1 -0
  409. data/app/assets/icons/outlined/file-unknown.svg +1 -0
  410. data/app/assets/icons/outlined/file-word.svg +1 -0
  411. data/app/assets/icons/outlined/file-zip.svg +1 -0
  412. data/app/assets/icons/outlined/file.svg +1 -0
  413. data/app/assets/icons/outlined/filter.svg +1 -0
  414. data/app/assets/icons/outlined/fire.svg +1 -0
  415. data/app/assets/icons/outlined/flag.svg +1 -0
  416. data/app/assets/icons/outlined/folder-add.svg +1 -0
  417. data/app/assets/icons/outlined/folder-open.svg +1 -0
  418. data/app/assets/icons/outlined/folder-view.svg +1 -0
  419. data/app/assets/icons/outlined/folder.svg +1 -0
  420. data/app/assets/icons/outlined/font-colors.svg +1 -0
  421. data/app/assets/icons/outlined/font-size.svg +1 -0
  422. data/app/assets/icons/outlined/fork.svg +1 -0
  423. data/app/assets/icons/outlined/form.svg +1 -0
  424. data/app/assets/icons/outlined/format-painter.svg +1 -0
  425. data/app/assets/icons/outlined/forward.svg +1 -0
  426. data/app/assets/icons/outlined/frown.svg +1 -0
  427. data/app/assets/icons/outlined/fullscreen-exit.svg +1 -0
  428. data/app/assets/icons/outlined/fullscreen.svg +1 -0
  429. data/app/assets/icons/outlined/function.svg +1 -0
  430. data/app/assets/icons/outlined/fund-projection-screen.svg +1 -0
  431. data/app/assets/icons/outlined/fund-view.svg +1 -0
  432. data/app/assets/icons/outlined/fund.svg +1 -0
  433. data/app/assets/icons/outlined/funnel-plot.svg +1 -0
  434. data/app/assets/icons/outlined/gateway.svg +1 -0
  435. data/app/assets/icons/outlined/gif.svg +1 -0
  436. data/app/assets/icons/outlined/gift.svg +1 -0
  437. data/app/assets/icons/outlined/github.svg +1 -0
  438. data/app/assets/icons/outlined/gitlab.svg +1 -0
  439. data/app/assets/icons/outlined/global.svg +1 -0
  440. data/app/assets/icons/outlined/gold.svg +1 -0
  441. data/app/assets/icons/outlined/google-plus.svg +1 -0
  442. data/app/assets/icons/outlined/google.svg +1 -0
  443. data/app/assets/icons/outlined/group.svg +1 -0
  444. data/app/assets/icons/outlined/harmony-o-s.svg +1 -0
  445. data/app/assets/icons/outlined/hdd.svg +1 -0
  446. data/app/assets/icons/outlined/heart.svg +1 -0
  447. data/app/assets/icons/outlined/heat-map.svg +1 -0
  448. data/app/assets/icons/outlined/highlight.svg +1 -0
  449. data/app/assets/icons/outlined/history.svg +1 -0
  450. data/app/assets/icons/outlined/holder.svg +1 -0
  451. data/app/assets/icons/outlined/home.svg +1 -0
  452. data/app/assets/icons/outlined/hourglass.svg +1 -0
  453. data/app/assets/icons/outlined/html5.svg +1 -0
  454. data/app/assets/icons/outlined/idcard.svg +1 -0
  455. data/app/assets/icons/outlined/ie.svg +1 -0
  456. data/app/assets/icons/outlined/import.svg +1 -0
  457. data/app/assets/icons/outlined/inbox.svg +1 -0
  458. data/app/assets/icons/outlined/info-circle.svg +1 -0
  459. data/app/assets/icons/outlined/info.svg +1 -0
  460. data/app/assets/icons/outlined/insert-row-above.svg +1 -0
  461. data/app/assets/icons/outlined/insert-row-below.svg +1 -0
  462. data/app/assets/icons/outlined/insert-row-left.svg +1 -0
  463. data/app/assets/icons/outlined/insert-row-right.svg +1 -0
  464. data/app/assets/icons/outlined/instagram.svg +1 -0
  465. data/app/assets/icons/outlined/insurance.svg +1 -0
  466. data/app/assets/icons/outlined/interaction.svg +1 -0
  467. data/app/assets/icons/outlined/issues-close.svg +1 -0
  468. data/app/assets/icons/outlined/italic.svg +1 -0
  469. data/app/assets/icons/outlined/java-script.svg +1 -0
  470. data/app/assets/icons/outlined/java.svg +1 -0
  471. data/app/assets/icons/outlined/key.svg +1 -0
  472. data/app/assets/icons/outlined/kubernetes.svg +1 -0
  473. data/app/assets/icons/outlined/laptop.svg +1 -0
  474. data/app/assets/icons/outlined/layout.svg +1 -0
  475. data/app/assets/icons/outlined/left-circle.svg +1 -0
  476. data/app/assets/icons/outlined/left-square.svg +1 -0
  477. data/app/assets/icons/outlined/left.svg +1 -0
  478. data/app/assets/icons/outlined/like.svg +1 -0
  479. data/app/assets/icons/outlined/line-chart.svg +1 -0
  480. data/app/assets/icons/outlined/line-height.svg +1 -0
  481. data/app/assets/icons/outlined/line.svg +1 -0
  482. data/app/assets/icons/outlined/link.svg +1 -0
  483. data/app/assets/icons/outlined/linkedin.svg +1 -0
  484. data/app/assets/icons/outlined/linux.svg +1 -0
  485. data/app/assets/icons/outlined/loading-3-quarters.svg +1 -0
  486. data/app/assets/icons/outlined/loading.svg +1 -0
  487. data/app/assets/icons/outlined/lock.svg +1 -0
  488. data/app/assets/icons/outlined/login.svg +1 -0
  489. data/app/assets/icons/outlined/logout.svg +1 -0
  490. data/app/assets/icons/outlined/mac-command.svg +1 -0
  491. data/app/assets/icons/outlined/mail.svg +1 -0
  492. data/app/assets/icons/outlined/man.svg +1 -0
  493. data/app/assets/icons/outlined/medicine-box.svg +1 -0
  494. data/app/assets/icons/outlined/medium-workmark.svg +1 -0
  495. data/app/assets/icons/outlined/medium.svg +1 -0
  496. data/app/assets/icons/outlined/meh.svg +1 -0
  497. data/app/assets/icons/outlined/menu-fold.svg +1 -0
  498. data/app/assets/icons/outlined/menu-unfold.svg +1 -0
  499. data/app/assets/icons/outlined/menu.svg +1 -0
  500. data/app/assets/icons/outlined/merge-cells.svg +1 -0
  501. data/app/assets/icons/outlined/merge.svg +1 -0
  502. data/app/assets/icons/outlined/message.svg +1 -0
  503. data/app/assets/icons/outlined/minus-circle.svg +1 -0
  504. data/app/assets/icons/outlined/minus-square.svg +1 -0
  505. data/app/assets/icons/outlined/minus.svg +1 -0
  506. data/app/assets/icons/outlined/mobile.svg +1 -0
  507. data/app/assets/icons/outlined/money-collect.svg +1 -0
  508. data/app/assets/icons/outlined/monitor.svg +1 -0
  509. data/app/assets/icons/outlined/moon.svg +1 -0
  510. data/app/assets/icons/outlined/more.svg +1 -0
  511. data/app/assets/icons/outlined/muted.svg +1 -0
  512. data/app/assets/icons/outlined/node-collapse.svg +1 -0
  513. data/app/assets/icons/outlined/node-expand.svg +1 -0
  514. data/app/assets/icons/outlined/node-index.svg +1 -0
  515. data/app/assets/icons/outlined/notification.svg +1 -0
  516. data/app/assets/icons/outlined/number.svg +1 -0
  517. data/app/assets/icons/outlined/one-to-one.svg +1 -0
  518. data/app/assets/icons/outlined/open-a-i.svg +1 -0
  519. data/app/assets/icons/outlined/ordered-list.svg +1 -0
  520. data/app/assets/icons/outlined/paper-clip.svg +1 -0
  521. data/app/assets/icons/outlined/partition.svg +1 -0
  522. data/app/assets/icons/outlined/pause-circle.svg +1 -0
  523. data/app/assets/icons/outlined/pause.svg +1 -0
  524. data/app/assets/icons/outlined/pay-circle.svg +1 -0
  525. data/app/assets/icons/outlined/percentage.svg +1 -0
  526. data/app/assets/icons/outlined/phone.svg +1 -0
  527. data/app/assets/icons/outlined/pic-center.svg +1 -0
  528. data/app/assets/icons/outlined/pic-left.svg +1 -0
  529. data/app/assets/icons/outlined/pic-right.svg +1 -0
  530. data/app/assets/icons/outlined/picture.svg +1 -0
  531. data/app/assets/icons/outlined/pie-chart.svg +1 -0
  532. data/app/assets/icons/outlined/pinterest.svg +1 -0
  533. data/app/assets/icons/outlined/play-circle.svg +1 -0
  534. data/app/assets/icons/outlined/play-square.svg +1 -0
  535. data/app/assets/icons/outlined/plus-circle.svg +1 -0
  536. data/app/assets/icons/outlined/plus-square.svg +1 -0
  537. data/app/assets/icons/outlined/plus.svg +1 -0
  538. data/app/assets/icons/outlined/pound-circle.svg +1 -0
  539. data/app/assets/icons/outlined/pound.svg +1 -0
  540. data/app/assets/icons/outlined/poweroff.svg +1 -0
  541. data/app/assets/icons/outlined/printer.svg +1 -0
  542. data/app/assets/icons/outlined/product.svg +1 -0
  543. data/app/assets/icons/outlined/profile.svg +1 -0
  544. data/app/assets/icons/outlined/project.svg +1 -0
  545. data/app/assets/icons/outlined/property-safety.svg +1 -0
  546. data/app/assets/icons/outlined/pull-request.svg +1 -0
  547. data/app/assets/icons/outlined/pushpin.svg +1 -0
  548. data/app/assets/icons/outlined/python.svg +1 -0
  549. data/app/assets/icons/outlined/qq.svg +1 -0
  550. data/app/assets/icons/outlined/qrcode.svg +1 -0
  551. data/app/assets/icons/outlined/question-circle.svg +1 -0
  552. data/app/assets/icons/outlined/question.svg +1 -0
  553. data/app/assets/icons/outlined/radar-chart.svg +1 -0
  554. data/app/assets/icons/outlined/radius-bottomleft.svg +1 -0
  555. data/app/assets/icons/outlined/radius-bottomright.svg +1 -0
  556. data/app/assets/icons/outlined/radius-setting.svg +1 -0
  557. data/app/assets/icons/outlined/radius-upleft.svg +1 -0
  558. data/app/assets/icons/outlined/radius-upright.svg +1 -0
  559. data/app/assets/icons/outlined/read.svg +1 -0
  560. data/app/assets/icons/outlined/reconciliation.svg +1 -0
  561. data/app/assets/icons/outlined/red-envelope.svg +1 -0
  562. data/app/assets/icons/outlined/reddit.svg +1 -0
  563. data/app/assets/icons/outlined/redo.svg +1 -0
  564. data/app/assets/icons/outlined/reload.svg +1 -0
  565. data/app/assets/icons/outlined/rest.svg +1 -0
  566. data/app/assets/icons/outlined/retweet.svg +1 -0
  567. data/app/assets/icons/outlined/right-circle.svg +1 -0
  568. data/app/assets/icons/outlined/right-square.svg +1 -0
  569. data/app/assets/icons/outlined/right.svg +1 -0
  570. data/app/assets/icons/outlined/rise.svg +1 -0
  571. data/app/assets/icons/outlined/robot.svg +1 -0
  572. data/app/assets/icons/outlined/rocket.svg +1 -0
  573. data/app/assets/icons/outlined/rollback.svg +1 -0
  574. data/app/assets/icons/outlined/rotate-left.svg +1 -0
  575. data/app/assets/icons/outlined/rotate-right.svg +1 -0
  576. data/app/assets/icons/outlined/ruby.svg +1 -0
  577. data/app/assets/icons/outlined/safety-certificate.svg +1 -0
  578. data/app/assets/icons/outlined/safety.svg +1 -0
  579. data/app/assets/icons/outlined/save.svg +1 -0
  580. data/app/assets/icons/outlined/scan.svg +1 -0
  581. data/app/assets/icons/outlined/schedule.svg +1 -0
  582. data/app/assets/icons/outlined/scissor.svg +1 -0
  583. data/app/assets/icons/outlined/search.svg +1 -0
  584. data/app/assets/icons/outlined/security-scan.svg +1 -0
  585. data/app/assets/icons/outlined/select.svg +1 -0
  586. data/app/assets/icons/outlined/send.svg +1 -0
  587. data/app/assets/icons/outlined/setting.svg +1 -0
  588. data/app/assets/icons/outlined/shake.svg +1 -0
  589. data/app/assets/icons/outlined/share-alt.svg +1 -0
  590. data/app/assets/icons/outlined/shop.svg +1 -0
  591. data/app/assets/icons/outlined/shopping-cart.svg +1 -0
  592. data/app/assets/icons/outlined/shopping.svg +1 -0
  593. data/app/assets/icons/outlined/shrink.svg +1 -0
  594. data/app/assets/icons/outlined/signature.svg +1 -0
  595. data/app/assets/icons/outlined/sisternode.svg +1 -0
  596. data/app/assets/icons/outlined/sketch.svg +1 -0
  597. data/app/assets/icons/outlined/skin.svg +1 -0
  598. data/app/assets/icons/outlined/skype.svg +1 -0
  599. data/app/assets/icons/outlined/slack-square.svg +1 -0
  600. data/app/assets/icons/outlined/slack.svg +1 -0
  601. data/app/assets/icons/outlined/sliders.svg +1 -0
  602. data/app/assets/icons/outlined/small-dash.svg +1 -0
  603. data/app/assets/icons/outlined/smile.svg +1 -0
  604. data/app/assets/icons/outlined/snippets.svg +1 -0
  605. data/app/assets/icons/outlined/solution.svg +1 -0
  606. data/app/assets/icons/outlined/sort-ascending.svg +1 -0
  607. data/app/assets/icons/outlined/sort-descending.svg +1 -0
  608. data/app/assets/icons/outlined/sound.svg +1 -0
  609. data/app/assets/icons/outlined/split-cells.svg +1 -0
  610. data/app/assets/icons/outlined/spotify.svg +1 -0
  611. data/app/assets/icons/outlined/star.svg +1 -0
  612. data/app/assets/icons/outlined/step-backward.svg +1 -0
  613. data/app/assets/icons/outlined/step-forward.svg +1 -0
  614. data/app/assets/icons/outlined/stock.svg +1 -0
  615. data/app/assets/icons/outlined/stop.svg +1 -0
  616. data/app/assets/icons/outlined/strikethrough.svg +1 -0
  617. data/app/assets/icons/outlined/subnode.svg +1 -0
  618. data/app/assets/icons/outlined/sun.svg +1 -0
  619. data/app/assets/icons/outlined/swap-left.svg +1 -0
  620. data/app/assets/icons/outlined/swap-right.svg +1 -0
  621. data/app/assets/icons/outlined/swap.svg +1 -0
  622. data/app/assets/icons/outlined/switcher.svg +1 -0
  623. data/app/assets/icons/outlined/sync.svg +1 -0
  624. data/app/assets/icons/outlined/table.svg +1 -0
  625. data/app/assets/icons/outlined/tablet.svg +1 -0
  626. data/app/assets/icons/outlined/tag.svg +1 -0
  627. data/app/assets/icons/outlined/tags.svg +1 -0
  628. data/app/assets/icons/outlined/taobao-circle.svg +1 -0
  629. data/app/assets/icons/outlined/taobao.svg +1 -0
  630. data/app/assets/icons/outlined/team.svg +1 -0
  631. data/app/assets/icons/outlined/thunderbolt.svg +1 -0
  632. data/app/assets/icons/outlined/tik-tok.svg +1 -0
  633. data/app/assets/icons/outlined/to-top.svg +1 -0
  634. data/app/assets/icons/outlined/tool.svg +1 -0
  635. data/app/assets/icons/outlined/trademark-circle.svg +1 -0
  636. data/app/assets/icons/outlined/trademark.svg +1 -0
  637. data/app/assets/icons/outlined/transaction.svg +1 -0
  638. data/app/assets/icons/outlined/translation.svg +1 -0
  639. data/app/assets/icons/outlined/trophy.svg +1 -0
  640. data/app/assets/icons/outlined/truck.svg +1 -0
  641. data/app/assets/icons/outlined/twitch.svg +1 -0
  642. data/app/assets/icons/outlined/twitter.svg +1 -0
  643. data/app/assets/icons/outlined/underline.svg +1 -0
  644. data/app/assets/icons/outlined/undo.svg +1 -0
  645. data/app/assets/icons/outlined/ungroup.svg +1 -0
  646. data/app/assets/icons/outlined/unlock.svg +1 -0
  647. data/app/assets/icons/outlined/unordered-list.svg +1 -0
  648. data/app/assets/icons/outlined/up-circle.svg +1 -0
  649. data/app/assets/icons/outlined/up-square.svg +1 -0
  650. data/app/assets/icons/outlined/up.svg +1 -0
  651. data/app/assets/icons/outlined/upload.svg +1 -0
  652. data/app/assets/icons/outlined/usb.svg +1 -0
  653. data/app/assets/icons/outlined/user-add.svg +1 -0
  654. data/app/assets/icons/outlined/user-delete.svg +1 -0
  655. data/app/assets/icons/outlined/user-switch.svg +1 -0
  656. data/app/assets/icons/outlined/user.svg +1 -0
  657. data/app/assets/icons/outlined/usergroup-add.svg +1 -0
  658. data/app/assets/icons/outlined/usergroup-delete.svg +1 -0
  659. data/app/assets/icons/outlined/verified.svg +1 -0
  660. data/app/assets/icons/outlined/vertical-align-bottom.svg +1 -0
  661. data/app/assets/icons/outlined/vertical-align-middle.svg +1 -0
  662. data/app/assets/icons/outlined/vertical-align-top.svg +1 -0
  663. data/app/assets/icons/outlined/vertical-left.svg +1 -0
  664. data/app/assets/icons/outlined/vertical-right.svg +1 -0
  665. data/app/assets/icons/outlined/video-camera-add.svg +1 -0
  666. data/app/assets/icons/outlined/video-camera.svg +1 -0
  667. data/app/assets/icons/outlined/wallet.svg +1 -0
  668. data/app/assets/icons/outlined/warning.svg +1 -0
  669. data/app/assets/icons/outlined/wechat-work.svg +1 -0
  670. data/app/assets/icons/outlined/wechat.svg +1 -0
  671. data/app/assets/icons/outlined/weibo-circle.svg +1 -0
  672. data/app/assets/icons/outlined/weibo-square.svg +1 -0
  673. data/app/assets/icons/outlined/weibo.svg +1 -0
  674. data/app/assets/icons/outlined/whats-app.svg +1 -0
  675. data/app/assets/icons/outlined/wifi.svg +1 -0
  676. data/app/assets/icons/outlined/windows.svg +1 -0
  677. data/app/assets/icons/outlined/woman.svg +1 -0
  678. data/app/assets/icons/outlined/x.svg +1 -0
  679. data/app/assets/icons/outlined/yahoo.svg +1 -0
  680. data/app/assets/icons/outlined/youtube.svg +1 -0
  681. data/app/assets/icons/outlined/yuque.svg +1 -0
  682. data/app/assets/icons/outlined/zhihu.svg +1 -0
  683. data/app/assets/icons/outlined/zoom-in.svg +1 -0
  684. data/app/assets/icons/outlined/zoom-out.svg +1 -0
  685. data/app/assets/icons/twotone/account-book.svg +1 -0
  686. data/app/assets/icons/twotone/alert.svg +1 -0
  687. data/app/assets/icons/twotone/api.svg +1 -0
  688. data/app/assets/icons/twotone/appstore.svg +1 -0
  689. data/app/assets/icons/twotone/audio.svg +1 -0
  690. data/app/assets/icons/twotone/bank.svg +1 -0
  691. data/app/assets/icons/twotone/bell.svg +1 -0
  692. data/app/assets/icons/twotone/book.svg +1 -0
  693. data/app/assets/icons/twotone/box-plot.svg +1 -0
  694. data/app/assets/icons/twotone/bug.svg +1 -0
  695. data/app/assets/icons/twotone/build.svg +1 -0
  696. data/app/assets/icons/twotone/bulb.svg +1 -0
  697. data/app/assets/icons/twotone/calculator.svg +1 -0
  698. data/app/assets/icons/twotone/calendar.svg +1 -0
  699. data/app/assets/icons/twotone/camera.svg +1 -0
  700. data/app/assets/icons/twotone/car.svg +1 -0
  701. data/app/assets/icons/twotone/carry-out.svg +1 -0
  702. data/app/assets/icons/twotone/check-circle.svg +1 -0
  703. data/app/assets/icons/twotone/check-square.svg +1 -0
  704. data/app/assets/icons/twotone/ci-circle.svg +1 -0
  705. data/app/assets/icons/twotone/ci.svg +1 -0
  706. data/app/assets/icons/twotone/clock-circle.svg +1 -0
  707. data/app/assets/icons/twotone/close-circle.svg +1 -0
  708. data/app/assets/icons/twotone/close-square.svg +1 -0
  709. data/app/assets/icons/twotone/cloud.svg +1 -0
  710. data/app/assets/icons/twotone/code.svg +1 -0
  711. data/app/assets/icons/twotone/compass.svg +1 -0
  712. data/app/assets/icons/twotone/contacts.svg +1 -0
  713. data/app/assets/icons/twotone/container.svg +1 -0
  714. data/app/assets/icons/twotone/control.svg +1 -0
  715. data/app/assets/icons/twotone/copy.svg +1 -0
  716. data/app/assets/icons/twotone/copyright-circle.svg +1 -0
  717. data/app/assets/icons/twotone/copyright.svg +1 -0
  718. data/app/assets/icons/twotone/credit-card.svg +1 -0
  719. data/app/assets/icons/twotone/crown.svg +1 -0
  720. data/app/assets/icons/twotone/customer-service.svg +1 -0
  721. data/app/assets/icons/twotone/dashboard.svg +1 -0
  722. data/app/assets/icons/twotone/database.svg +1 -0
  723. data/app/assets/icons/twotone/delete.svg +1 -0
  724. data/app/assets/icons/twotone/diff.svg +1 -0
  725. data/app/assets/icons/twotone/dislike.svg +1 -0
  726. data/app/assets/icons/twotone/dollar-circle.svg +1 -0
  727. data/app/assets/icons/twotone/dollar.svg +1 -0
  728. data/app/assets/icons/twotone/down-circle.svg +1 -0
  729. data/app/assets/icons/twotone/down-square.svg +1 -0
  730. data/app/assets/icons/twotone/edit.svg +1 -0
  731. data/app/assets/icons/twotone/environment.svg +1 -0
  732. data/app/assets/icons/twotone/euro-circle.svg +1 -0
  733. data/app/assets/icons/twotone/euro.svg +1 -0
  734. data/app/assets/icons/twotone/exclamation-circle.svg +1 -0
  735. data/app/assets/icons/twotone/experiment.svg +1 -0
  736. data/app/assets/icons/twotone/eye-invisible.svg +1 -0
  737. data/app/assets/icons/twotone/eye.svg +1 -0
  738. data/app/assets/icons/twotone/file-add.svg +1 -0
  739. data/app/assets/icons/twotone/file-excel.svg +1 -0
  740. data/app/assets/icons/twotone/file-exclamation.svg +1 -0
  741. data/app/assets/icons/twotone/file-image.svg +1 -0
  742. data/app/assets/icons/twotone/file-markdown.svg +1 -0
  743. data/app/assets/icons/twotone/file-pdf.svg +1 -0
  744. data/app/assets/icons/twotone/file-ppt.svg +1 -0
  745. data/app/assets/icons/twotone/file-text.svg +1 -0
  746. data/app/assets/icons/twotone/file-unknown.svg +1 -0
  747. data/app/assets/icons/twotone/file-word.svg +1 -0
  748. data/app/assets/icons/twotone/file-zip.svg +1 -0
  749. data/app/assets/icons/twotone/file.svg +1 -0
  750. data/app/assets/icons/twotone/filter.svg +1 -0
  751. data/app/assets/icons/twotone/fire.svg +1 -0
  752. data/app/assets/icons/twotone/flag.svg +1 -0
  753. data/app/assets/icons/twotone/folder-add.svg +1 -0
  754. data/app/assets/icons/twotone/folder-open.svg +1 -0
  755. data/app/assets/icons/twotone/folder.svg +1 -0
  756. data/app/assets/icons/twotone/frown.svg +1 -0
  757. data/app/assets/icons/twotone/fund.svg +1 -0
  758. data/app/assets/icons/twotone/funnel-plot.svg +1 -0
  759. data/app/assets/icons/twotone/gift.svg +1 -0
  760. data/app/assets/icons/twotone/gold.svg +1 -0
  761. data/app/assets/icons/twotone/hdd.svg +1 -0
  762. data/app/assets/icons/twotone/heart.svg +1 -0
  763. data/app/assets/icons/twotone/highlight.svg +1 -0
  764. data/app/assets/icons/twotone/home.svg +1 -0
  765. data/app/assets/icons/twotone/hourglass.svg +1 -0
  766. data/app/assets/icons/twotone/html5.svg +1 -0
  767. data/app/assets/icons/twotone/idcard.svg +1 -0
  768. data/app/assets/icons/twotone/info-circle.svg +1 -0
  769. data/app/assets/icons/twotone/insurance.svg +1 -0
  770. data/app/assets/icons/twotone/interaction.svg +1 -0
  771. data/app/assets/icons/twotone/layout.svg +1 -0
  772. data/app/assets/icons/twotone/left-circle.svg +1 -0
  773. data/app/assets/icons/twotone/left-square.svg +1 -0
  774. data/app/assets/icons/twotone/like.svg +1 -0
  775. data/app/assets/icons/twotone/lock.svg +1 -0
  776. data/app/assets/icons/twotone/mail.svg +1 -0
  777. data/app/assets/icons/twotone/medicine-box.svg +1 -0
  778. data/app/assets/icons/twotone/meh.svg +1 -0
  779. data/app/assets/icons/twotone/message.svg +1 -0
  780. data/app/assets/icons/twotone/minus-circle.svg +1 -0
  781. data/app/assets/icons/twotone/minus-square.svg +1 -0
  782. data/app/assets/icons/twotone/mobile.svg +1 -0
  783. data/app/assets/icons/twotone/money-collect.svg +1 -0
  784. data/app/assets/icons/twotone/notification.svg +1 -0
  785. data/app/assets/icons/twotone/pause-circle.svg +1 -0
  786. data/app/assets/icons/twotone/phone.svg +1 -0
  787. data/app/assets/icons/twotone/picture.svg +1 -0
  788. data/app/assets/icons/twotone/pie-chart.svg +1 -0
  789. data/app/assets/icons/twotone/play-circle.svg +1 -0
  790. data/app/assets/icons/twotone/play-square.svg +1 -0
  791. data/app/assets/icons/twotone/plus-circle.svg +1 -0
  792. data/app/assets/icons/twotone/plus-square.svg +1 -0
  793. data/app/assets/icons/twotone/pound-circle.svg +1 -0
  794. data/app/assets/icons/twotone/printer.svg +1 -0
  795. data/app/assets/icons/twotone/profile.svg +1 -0
  796. data/app/assets/icons/twotone/project.svg +1 -0
  797. data/app/assets/icons/twotone/property-safety.svg +1 -0
  798. data/app/assets/icons/twotone/pushpin.svg +1 -0
  799. data/app/assets/icons/twotone/question-circle.svg +1 -0
  800. data/app/assets/icons/twotone/reconciliation.svg +1 -0
  801. data/app/assets/icons/twotone/red-envelope.svg +1 -0
  802. data/app/assets/icons/twotone/rest.svg +1 -0
  803. data/app/assets/icons/twotone/right-circle.svg +1 -0
  804. data/app/assets/icons/twotone/right-square.svg +1 -0
  805. data/app/assets/icons/twotone/rocket.svg +1 -0
  806. data/app/assets/icons/twotone/safety-certificate.svg +1 -0
  807. data/app/assets/icons/twotone/save.svg +1 -0
  808. data/app/assets/icons/twotone/schedule.svg +1 -0
  809. data/app/assets/icons/twotone/security-scan.svg +1 -0
  810. data/app/assets/icons/twotone/setting.svg +1 -0
  811. data/app/assets/icons/twotone/shop.svg +1 -0
  812. data/app/assets/icons/twotone/shopping.svg +1 -0
  813. data/app/assets/icons/twotone/skin.svg +1 -0
  814. data/app/assets/icons/twotone/sliders.svg +1 -0
  815. data/app/assets/icons/twotone/smile.svg +1 -0
  816. data/app/assets/icons/twotone/snippets.svg +1 -0
  817. data/app/assets/icons/twotone/sound.svg +1 -0
  818. data/app/assets/icons/twotone/star.svg +1 -0
  819. data/app/assets/icons/twotone/stop.svg +1 -0
  820. data/app/assets/icons/twotone/switcher.svg +1 -0
  821. data/app/assets/icons/twotone/tablet.svg +1 -0
  822. data/app/assets/icons/twotone/tag.svg +1 -0
  823. data/app/assets/icons/twotone/tags.svg +1 -0
  824. data/app/assets/icons/twotone/thunderbolt.svg +1 -0
  825. data/app/assets/icons/twotone/tool.svg +1 -0
  826. data/app/assets/icons/twotone/trademark-circle.svg +1 -0
  827. data/app/assets/icons/twotone/trophy.svg +1 -0
  828. data/app/assets/icons/twotone/unlock.svg +1 -0
  829. data/app/assets/icons/twotone/up-circle.svg +1 -0
  830. data/app/assets/icons/twotone/up-square.svg +1 -0
  831. data/app/assets/icons/twotone/usb.svg +1 -0
  832. data/app/assets/icons/twotone/video-camera.svg +1 -0
  833. data/app/assets/icons/twotone/wallet.svg +1 -0
  834. data/app/assets/icons/twotone/warning.svg +1 -0
  835. data/app/assets/illustrations/success.svg +1 -0
  836. data/app/assets/javascripts/hakumi_components.js +1 -0
  837. data/app/assets/stylesheets/hakumi/alert.scss +1 -0
  838. data/app/assets/stylesheets/hakumi_components.css +1 -0
  839. data/app/components/hakumi/admin_panel/component.html.erb +61 -0
  840. data/app/components/hakumi/admin_panel/component.rb +40 -0
  841. data/app/components/hakumi/affix/component.html.erb +7 -0
  842. data/app/components/hakumi/affix/component.rb +88 -0
  843. data/app/components/hakumi/alert/component.html.erb +30 -0
  844. data/app/components/hakumi/alert/component.rb +128 -0
  845. data/app/components/hakumi/anchor/component.html.erb +8 -0
  846. data/app/components/hakumi/anchor/component.rb +80 -0
  847. data/app/components/hakumi/anchor/link/component.html.erb +12 -0
  848. data/app/components/hakumi/anchor/link/component.rb +34 -0
  849. data/app/components/hakumi/autocomplete/component.html.erb +74 -0
  850. data/app/components/hakumi/autocomplete/component.rb +202 -0
  851. data/app/components/hakumi/avatar/component.rb +91 -0
  852. data/app/components/hakumi/badge/component.rb +85 -0
  853. data/app/components/hakumi/base_component.rb +179 -0
  854. data/app/components/hakumi/breadcrumb/component.html.erb +12 -0
  855. data/app/components/hakumi/breadcrumb/component.rb +27 -0
  856. data/app/components/hakumi/breadcrumb/item/component.html.erb +17 -0
  857. data/app/components/hakumi/breadcrumb/item/component.rb +35 -0
  858. data/app/components/hakumi/button/component.rb +121 -0
  859. data/app/components/hakumi/calendar/component.html.erb +163 -0
  860. data/app/components/hakumi/calendar/component.rb +448 -0
  861. data/app/components/hakumi/card/component.html.erb +65 -0
  862. data/app/components/hakumi/card/component.rb +87 -0
  863. data/app/components/hakumi/card/grid/component.html.erb +3 -0
  864. data/app/components/hakumi/card/grid/component.rb +37 -0
  865. data/app/components/hakumi/card/meta/component.html.erb +23 -0
  866. data/app/components/hakumi/card/meta/component.rb +46 -0
  867. data/app/components/hakumi/carousel/component.html.erb +56 -0
  868. data/app/components/hakumi/carousel/component.rb +147 -0
  869. data/app/components/hakumi/cascader/component.html.erb +41 -0
  870. data/app/components/hakumi/cascader/component.rb +119 -0
  871. data/app/components/hakumi/checkbox/component.html.erb +21 -0
  872. data/app/components/hakumi/checkbox/component.rb +54 -0
  873. data/app/components/hakumi/checkbox/group/component.html.erb +12 -0
  874. data/app/components/hakumi/checkbox/group/component.rb +64 -0
  875. data/app/components/hakumi/collapse/component.html.erb +31 -0
  876. data/app/components/hakumi/collapse/component.rb +117 -0
  877. data/app/components/hakumi/collapse/panel/component.rb +56 -0
  878. data/app/components/hakumi/color_picker/component.html.erb +166 -0
  879. data/app/components/hakumi/color_picker/component.rb +173 -0
  880. data/app/components/hakumi/concerns/form_field.rb +135 -0
  881. data/app/components/hakumi/container/component.rb +76 -0
  882. data/app/components/hakumi/date_picker/component.html.erb +80 -0
  883. data/app/components/hakumi/date_picker/component.rb +140 -0
  884. data/app/components/hakumi/date_picker/range_picker.html.erb +54 -0
  885. data/app/components/hakumi/date_picker/range_picker.rb +136 -0
  886. data/app/components/hakumi/date_picker/shared_rendering.rb +199 -0
  887. data/app/components/hakumi/descriptions/component.html.erb +52 -0
  888. data/app/components/hakumi/descriptions/component.rb +182 -0
  889. data/app/components/hakumi/descriptions/item/component.rb +28 -0
  890. data/app/components/hakumi/divider/component.rb +66 -0
  891. data/app/components/hakumi/drawer/component.html.erb +44 -0
  892. data/app/components/hakumi/drawer/component.rb +115 -0
  893. data/app/components/hakumi/dropdown/component.html.erb +20 -0
  894. data/app/components/hakumi/dropdown/component.rb +97 -0
  895. data/app/components/hakumi/dropdown/divider/component.rb +13 -0
  896. data/app/components/hakumi/dropdown/item/component.html.erb +17 -0
  897. data/app/components/hakumi/dropdown/item/component.rb +47 -0
  898. data/app/components/hakumi/empty/component.rb +110 -0
  899. data/app/components/hakumi/flex/component.rb +78 -0
  900. data/app/components/hakumi/float_button/back_top/component.rb +79 -0
  901. data/app/components/hakumi/float_button/component.rb +203 -0
  902. data/app/components/hakumi/float_button/group/component.rb +227 -0
  903. data/app/components/hakumi/float_button/group_cluster/component.rb +141 -0
  904. data/app/components/hakumi/form/item/component.rb +114 -0
  905. data/app/components/hakumi/grid/col/component.rb +98 -0
  906. data/app/components/hakumi/grid/row/component.rb +79 -0
  907. data/app/components/hakumi/icon/component.html.erb +3 -0
  908. data/app/components/hakumi/icon/component.rb +167 -0
  909. data/app/components/hakumi/image/component.html.erb +81 -0
  910. data/app/components/hakumi/image/component.rb +112 -0
  911. data/app/components/hakumi/image/preview_group/component.html.erb +83 -0
  912. data/app/components/hakumi/image/preview_group/component.rb +70 -0
  913. data/app/components/hakumi/input/component.html.erb +27 -0
  914. data/app/components/hakumi/input/component.rb +187 -0
  915. data/app/components/hakumi/input/password/component.rb +95 -0
  916. data/app/components/hakumi/input/text_area/component.html.erb +21 -0
  917. data/app/components/hakumi/input/text_area/component.rb +133 -0
  918. data/app/components/hakumi/input_number/component.html.erb +73 -0
  919. data/app/components/hakumi/input_number/component.rb +199 -0
  920. data/app/components/hakumi/layout/component.html.erb +1 -0
  921. data/app/components/hakumi/layout/component.rb +21 -0
  922. data/app/components/hakumi/layout/content/component.html.erb +1 -0
  923. data/app/components/hakumi/layout/content/component.rb +19 -0
  924. data/app/components/hakumi/layout/footer/component.html.erb +1 -0
  925. data/app/components/hakumi/layout/footer/component.rb +19 -0
  926. data/app/components/hakumi/layout/header/component.html.erb +1 -0
  927. data/app/components/hakumi/layout/header/component.rb +19 -0
  928. data/app/components/hakumi/layout/sider/component.html.erb +1 -0
  929. data/app/components/hakumi/layout/sider/component.rb +56 -0
  930. data/app/components/hakumi/mentions/component.html.erb +51 -0
  931. data/app/components/hakumi/mentions/component.rb +166 -0
  932. data/app/components/hakumi/menu/component.html.erb +5 -0
  933. data/app/components/hakumi/menu/component.rb +126 -0
  934. data/app/components/hakumi/menu/divider/component.rb +13 -0
  935. data/app/components/hakumi/menu/group/component.html.erb +8 -0
  936. data/app/components/hakumi/menu/group/component.rb +47 -0
  937. data/app/components/hakumi/menu/item/component.html.erb +22 -0
  938. data/app/components/hakumi/menu/item/component.rb +47 -0
  939. data/app/components/hakumi/menu/sub_menu/component.html.erb +23 -0
  940. data/app/components/hakumi/menu/sub_menu/component.rb +92 -0
  941. data/app/components/hakumi/message/component.html.erb +1 -0
  942. data/app/components/hakumi/message/component.rb +106 -0
  943. data/app/components/hakumi/modal/component.rb +177 -0
  944. data/app/components/hakumi/modal/confirm/component.rb +64 -0
  945. data/app/components/hakumi/modal/error/component.rb +50 -0
  946. data/app/components/hakumi/modal/info/component.rb +50 -0
  947. data/app/components/hakumi/modal/success/component.rb +50 -0
  948. data/app/components/hakumi/modal/warning/component.rb +51 -0
  949. data/app/components/hakumi/notification/component.rb +126 -0
  950. data/app/components/hakumi/pagination/component.html.erb +115 -0
  951. data/app/components/hakumi/pagination/component.rb +205 -0
  952. data/app/components/hakumi/popconfirm/component.html.erb +55 -0
  953. data/app/components/hakumi/popconfirm/component.rb +88 -0
  954. data/app/components/hakumi/popover/component.html.erb +25 -0
  955. data/app/components/hakumi/popover/component.rb +132 -0
  956. data/app/components/hakumi/progress/component.html.erb +81 -0
  957. data/app/components/hakumi/progress/component.rb +565 -0
  958. data/app/components/hakumi/qr_code/component.html.erb +15 -0
  959. data/app/components/hakumi/qr_code/component.rb +339 -0
  960. data/app/components/hakumi/radio/component.html.erb +43 -0
  961. data/app/components/hakumi/radio/component.rb +80 -0
  962. data/app/components/hakumi/radio/group/component.html.erb +49 -0
  963. data/app/components/hakumi/radio/group/component.rb +132 -0
  964. data/app/components/hakumi/rate/component.html.erb +48 -0
  965. data/app/components/hakumi/rate/component.rb +132 -0
  966. data/app/components/hakumi/result/component.html.erb +23 -0
  967. data/app/components/hakumi/result/component.rb +125 -0
  968. data/app/components/hakumi/segmented/component.html.erb +17 -0
  969. data/app/components/hakumi/segmented/component.rb +273 -0
  970. data/app/components/hakumi/select/component.html.erb +103 -0
  971. data/app/components/hakumi/select/component.rb +125 -0
  972. data/app/components/hakumi/skeleton/avatar/component.html.erb +3 -0
  973. data/app/components/hakumi/skeleton/avatar/component.rb +66 -0
  974. data/app/components/hakumi/skeleton/button/component.html.erb +3 -0
  975. data/app/components/hakumi/skeleton/button/component.rb +59 -0
  976. data/app/components/hakumi/skeleton/component.html.erb +25 -0
  977. data/app/components/hakumi/skeleton/component.rb +200 -0
  978. data/app/components/hakumi/skeleton/image/component.html.erb +5 -0
  979. data/app/components/hakumi/skeleton/image/component.rb +80 -0
  980. data/app/components/hakumi/skeleton/input/component.html.erb +3 -0
  981. data/app/components/hakumi/skeleton/input/component.rb +51 -0
  982. data/app/components/hakumi/skeleton/node/component.html.erb +5 -0
  983. data/app/components/hakumi/skeleton/node/component.rb +43 -0
  984. data/app/components/hakumi/slider/component.html.erb +67 -0
  985. data/app/components/hakumi/slider/component.rb +232 -0
  986. data/app/components/hakumi/space/compact/component.html.erb +3 -0
  987. data/app/components/hakumi/space/compact/component.rb +36 -0
  988. data/app/components/hakumi/space/component.html.erb +12 -0
  989. data/app/components/hakumi/space/component.rb +73 -0
  990. data/app/components/hakumi/spin/component.html.erb +13 -0
  991. data/app/components/hakumi/spin/component.rb +209 -0
  992. data/app/components/hakumi/splitter/component.html.erb +3 -0
  993. data/app/components/hakumi/splitter/component.rb +38 -0
  994. data/app/components/hakumi/splitter/panel/component.html.erb +3 -0
  995. data/app/components/hakumi/splitter/panel/component.rb +73 -0
  996. data/app/components/hakumi/statistic/component.html.erb +16 -0
  997. data/app/components/hakumi/statistic/component.rb +291 -0
  998. data/app/components/hakumi/steps/component.html.erb +57 -0
  999. data/app/components/hakumi/steps/component.rb +145 -0
  1000. data/app/components/hakumi/steps/item/component.html.erb +1 -0
  1001. data/app/components/hakumi/steps/item/component.rb +91 -0
  1002. data/app/components/hakumi/switch/component.html.erb +28 -0
  1003. data/app/components/hakumi/switch/component.rb +125 -0
  1004. data/app/components/hakumi/table/column/component.rb +80 -0
  1005. data/app/components/hakumi/table/column_group/component.rb +78 -0
  1006. data/app/components/hakumi/table/component.html.erb +196 -0
  1007. data/app/components/hakumi/table/component.rb +957 -0
  1008. data/app/components/hakumi/table/concerns/columns.rb +219 -0
  1009. data/app/components/hakumi/tabs/component.html.erb +84 -0
  1010. data/app/components/hakumi/tabs/component.rb +196 -0
  1011. data/app/components/hakumi/tabs/item/component.rb +87 -0
  1012. data/app/components/hakumi/tag/component.rb +187 -0
  1013. data/app/components/hakumi/tag/group/component.rb +48 -0
  1014. data/app/components/hakumi/time_picker/component.html.erb +63 -0
  1015. data/app/components/hakumi/time_picker/component.rb +159 -0
  1016. data/app/components/hakumi/timeline/component.html.erb +7 -0
  1017. data/app/components/hakumi/timeline/component.rb +168 -0
  1018. data/app/components/hakumi/timeline/item/component.html.erb +19 -0
  1019. data/app/components/hakumi/timeline/item/component.rb +137 -0
  1020. data/app/components/hakumi/tooltip/component.html.erb +20 -0
  1021. data/app/components/hakumi/tooltip/component.rb +121 -0
  1022. data/app/components/hakumi/tour/component.html.erb +66 -0
  1023. data/app/components/hakumi/tour/component.rb +158 -0
  1024. data/app/components/hakumi/transfer/component.html.erb +173 -0
  1025. data/app/components/hakumi/transfer/component.rb +249 -0
  1026. data/app/components/hakumi/tree/component.html.erb +23 -0
  1027. data/app/components/hakumi/tree/component.rb +523 -0
  1028. data/app/components/hakumi/tree_select/component.html.erb +76 -0
  1029. data/app/components/hakumi/tree_select/component.rb +261 -0
  1030. data/app/components/hakumi/typography/base_component.rb +109 -0
  1031. data/app/components/hakumi/typography/link/component.rb +34 -0
  1032. data/app/components/hakumi/typography/paragraph/component.rb +13 -0
  1033. data/app/components/hakumi/typography/text/component.rb +8 -0
  1034. data/app/components/hakumi/typography/title/component.rb +29 -0
  1035. data/app/components/hakumi/upload/component.html.erb +117 -0
  1036. data/app/components/hakumi/upload/component.rb +193 -0
  1037. data/app/controllers/hakumi_components/components_controller.rb +27 -0
  1038. data/app/form_builders/hakumi/form_builder.rb +440 -0
  1039. data/app/javascript/hakumi_components/boot.js +8 -0
  1040. data/app/javascript/hakumi_components/controllers/base/registry_controller.js +101 -0
  1041. data/app/javascript/hakumi_components/controllers/hakumi/admin_panel_controller.js +363 -0
  1042. data/app/javascript/hakumi_components/controllers/hakumi/affix_controller.js +206 -0
  1043. data/app/javascript/hakumi_components/controllers/hakumi/alert_controller.js +46 -0
  1044. data/app/javascript/hakumi_components/controllers/hakumi/anchor_controller.js +212 -0
  1045. data/app/javascript/hakumi_components/controllers/hakumi/autocomplete_controller.js +357 -0
  1046. data/app/javascript/hakumi_components/controllers/hakumi/avatar_text_controller.js +48 -0
  1047. data/app/javascript/hakumi_components/controllers/hakumi/back_top_controller.js +83 -0
  1048. data/app/javascript/hakumi_components/controllers/hakumi/button_controller.js +65 -0
  1049. data/app/javascript/hakumi_components/controllers/hakumi/calendar_controller.js +1101 -0
  1050. data/app/javascript/hakumi_components/controllers/hakumi/carousel_controller.js +348 -0
  1051. data/app/javascript/hakumi_components/controllers/hakumi/cascader_controller.js +287 -0
  1052. data/app/javascript/hakumi_components/controllers/hakumi/checkbox_controller.js +84 -0
  1053. data/app/javascript/hakumi_components/controllers/hakumi/checkbox_group_controller.js +132 -0
  1054. data/app/javascript/hakumi_components/controllers/hakumi/collapse_controller.js +181 -0
  1055. data/app/javascript/hakumi_components/controllers/hakumi/color_picker_controller.js +735 -0
  1056. data/app/javascript/hakumi_components/controllers/hakumi/date_picker_controller.js +906 -0
  1057. data/app/javascript/hakumi_components/controllers/hakumi/drawer_controller.js +126 -0
  1058. data/app/javascript/hakumi_components/controllers/hakumi/dropdown_controller.js +103 -0
  1059. data/app/javascript/hakumi_components/controllers/hakumi/float_button_group_controller.js +52 -0
  1060. data/app/javascript/hakumi_components/controllers/hakumi/form_item_controller.js +348 -0
  1061. data/app/javascript/hakumi_components/controllers/hakumi/image_controller.js +437 -0
  1062. data/app/javascript/hakumi_components/controllers/hakumi/input_controller.js +84 -0
  1063. data/app/javascript/hakumi_components/controllers/hakumi/input_number_controller.js +302 -0
  1064. data/app/javascript/hakumi_components/controllers/hakumi/input_password_controller.js +112 -0
  1065. data/app/javascript/hakumi_components/controllers/hakumi/input_textarea_controller.js +102 -0
  1066. data/app/javascript/hakumi_components/controllers/hakumi/mentions_controller.js +412 -0
  1067. data/app/javascript/hakumi_components/controllers/hakumi/menu_controller.js +485 -0
  1068. data/app/javascript/hakumi_components/controllers/hakumi/message_controller.js +344 -0
  1069. data/app/javascript/hakumi_components/controllers/hakumi/modal_controller.js +167 -0
  1070. data/app/javascript/hakumi_components/controllers/hakumi/modal_trigger_controller.js +53 -0
  1071. data/app/javascript/hakumi_components/controllers/hakumi/notification_controller.js +433 -0
  1072. data/app/javascript/hakumi_components/controllers/hakumi/pagination_controller.js +406 -0
  1073. data/app/javascript/hakumi_components/controllers/hakumi/popconfirm_controller.js +357 -0
  1074. data/app/javascript/hakumi_components/controllers/hakumi/popover_controller.js +473 -0
  1075. data/app/javascript/hakumi_components/controllers/hakumi/progress_controller.js +185 -0
  1076. data/app/javascript/hakumi_components/controllers/hakumi/qr_code_controller.js +315 -0
  1077. data/app/javascript/hakumi_components/controllers/hakumi/radio_controller.js +86 -0
  1078. data/app/javascript/hakumi_components/controllers/hakumi/rate_controller.js +262 -0
  1079. data/app/javascript/hakumi_components/controllers/hakumi/segmented_controller.js +171 -0
  1080. data/app/javascript/hakumi_components/controllers/hakumi/select_controller.js +315 -0
  1081. data/app/javascript/hakumi_components/controllers/hakumi/slider_controller.js +471 -0
  1082. data/app/javascript/hakumi_components/controllers/hakumi/spin_controller.js +130 -0
  1083. data/app/javascript/hakumi_components/controllers/hakumi/splitter_controller.js +184 -0
  1084. data/app/javascript/hakumi_components/controllers/hakumi/statistic_controller.js +249 -0
  1085. data/app/javascript/hakumi_components/controllers/hakumi/steps_controller.js +125 -0
  1086. data/app/javascript/hakumi_components/controllers/hakumi/switch_controller.js +147 -0
  1087. data/app/javascript/hakumi_components/controllers/hakumi/table_controller.js +1198 -0
  1088. data/app/javascript/hakumi_components/controllers/hakumi/tabs_controller.js +567 -0
  1089. data/app/javascript/hakumi_components/controllers/hakumi/tag_controller.js +103 -0
  1090. data/app/javascript/hakumi_components/controllers/hakumi/tag_group_controller.js +94 -0
  1091. data/app/javascript/hakumi_components/controllers/hakumi/theme_controller.js +114 -0
  1092. data/app/javascript/hakumi_components/controllers/hakumi/time_picker_controller.js +291 -0
  1093. data/app/javascript/hakumi_components/controllers/hakumi/timeline_controller.js +88 -0
  1094. data/app/javascript/hakumi_components/controllers/hakumi/tooltip_controller.js +295 -0
  1095. data/app/javascript/hakumi_components/controllers/hakumi/tour_controller.js +508 -0
  1096. data/app/javascript/hakumi_components/controllers/hakumi/transfer_controller.js +315 -0
  1097. data/app/javascript/hakumi_components/controllers/hakumi/tree_controller.js +708 -0
  1098. data/app/javascript/hakumi_components/controllers/hakumi/tree_select_controller.js +281 -0
  1099. data/app/javascript/hakumi_components/controllers/hakumi/typography_controller.js +100 -0
  1100. data/app/javascript/hakumi_components/controllers/hakumi/upload_controller.js +1101 -0
  1101. data/app/javascript/hakumi_components/core/config.js +7 -0
  1102. data/app/javascript/hakumi_components/core/dom.js +27 -0
  1103. data/app/javascript/hakumi_components/core/persistence.js +132 -0
  1104. data/app/javascript/hakumi_components/core/registry.js +23 -0
  1105. data/app/javascript/hakumi_components/core/render_component.js +177 -0
  1106. data/app/javascript/hakumi_components/esbuild_loader.js +149 -0
  1107. data/app/javascript/hakumi_components/index.js +79 -0
  1108. data/app/javascript/hakumi_components/plugins/persisted_singletons.js +19 -0
  1109. data/app/javascript/hakumi_components/utils/date_helper.js +111 -0
  1110. data/app/javascript/lib/validation_manager.js +238 -0
  1111. data/app/javascript/stylesheets/_base.scss +63 -0
  1112. data/app/javascript/stylesheets/_hakumi_components.scss +83 -0
  1113. data/app/javascript/stylesheets/_theme-helpers.scss +53 -0
  1114. data/app/javascript/stylesheets/_theme-tokens.scss +270 -0
  1115. data/app/javascript/stylesheets/_variables.scss +229 -0
  1116. data/app/javascript/stylesheets/components/_admin_panel.scss +264 -0
  1117. data/app/javascript/stylesheets/components/_affix.scss +33 -0
  1118. data/app/javascript/stylesheets/components/_alert.scss +116 -0
  1119. data/app/javascript/stylesheets/components/_anchor.scss +132 -0
  1120. data/app/javascript/stylesheets/components/_autocomplete.scss +190 -0
  1121. data/app/javascript/stylesheets/components/_avatar.scss +99 -0
  1122. data/app/javascript/stylesheets/components/_badge.scss +121 -0
  1123. data/app/javascript/stylesheets/components/_breadcrumb.scss +77 -0
  1124. data/app/javascript/stylesheets/components/_button.scss +354 -0
  1125. data/app/javascript/stylesheets/components/_calendar.scss +859 -0
  1126. data/app/javascript/stylesheets/components/_card.scss +323 -0
  1127. data/app/javascript/stylesheets/components/_carousel.scss +180 -0
  1128. data/app/javascript/stylesheets/components/_cascader.scss +276 -0
  1129. data/app/javascript/stylesheets/components/_checkbox.scss +217 -0
  1130. data/app/javascript/stylesheets/components/_collapse.scss +148 -0
  1131. data/app/javascript/stylesheets/components/_color_picker.scss +387 -0
  1132. data/app/javascript/stylesheets/components/_container.scss +45 -0
  1133. data/app/javascript/stylesheets/components/_date_picker.scss +312 -0
  1134. data/app/javascript/stylesheets/components/_descriptions.scss +209 -0
  1135. data/app/javascript/stylesheets/components/_divider.scss +110 -0
  1136. data/app/javascript/stylesheets/components/_drawer.scss +168 -0
  1137. data/app/javascript/stylesheets/components/_dropdown.scss +162 -0
  1138. data/app/javascript/stylesheets/components/_empty.scss +151 -0
  1139. data/app/javascript/stylesheets/components/_flex.scss +70 -0
  1140. data/app/javascript/stylesheets/components/_float_button.scss +306 -0
  1141. data/app/javascript/stylesheets/components/_grid.scss +138 -0
  1142. data/app/javascript/stylesheets/components/_icon.scss +35 -0
  1143. data/app/javascript/stylesheets/components/_image.scss +373 -0
  1144. data/app/javascript/stylesheets/components/_input.scss +407 -0
  1145. data/app/javascript/stylesheets/components/_input_number.scss +266 -0
  1146. data/app/javascript/stylesheets/components/_layout.scss +198 -0
  1147. data/app/javascript/stylesheets/components/_mentions.scss +211 -0
  1148. data/app/javascript/stylesheets/components/_menu.scss +674 -0
  1149. data/app/javascript/stylesheets/components/_message.scss +127 -0
  1150. data/app/javascript/stylesheets/components/_modal.scss +210 -0
  1151. data/app/javascript/stylesheets/components/_notification.scss +245 -0
  1152. data/app/javascript/stylesheets/components/_pagination.scss +402 -0
  1153. data/app/javascript/stylesheets/components/_popconfirm.scss +125 -0
  1154. data/app/javascript/stylesheets/components/_popover.scss +162 -0
  1155. data/app/javascript/stylesheets/components/_progress.scss +197 -0
  1156. data/app/javascript/stylesheets/components/_qr_code.scss +121 -0
  1157. data/app/javascript/stylesheets/components/_radio.scss +316 -0
  1158. data/app/javascript/stylesheets/components/_rate.scss +96 -0
  1159. data/app/javascript/stylesheets/components/_result.scss +90 -0
  1160. data/app/javascript/stylesheets/components/_segmented.scss +163 -0
  1161. data/app/javascript/stylesheets/components/_select.scss +414 -0
  1162. data/app/javascript/stylesheets/components/_skeleton.scss +205 -0
  1163. data/app/javascript/stylesheets/components/_slider.scss +222 -0
  1164. data/app/javascript/stylesheets/components/_space.scss +161 -0
  1165. data/app/javascript/stylesheets/components/_spin.scss +185 -0
  1166. data/app/javascript/stylesheets/components/_splitter.scss +89 -0
  1167. data/app/javascript/stylesheets/components/_statistic.scss +78 -0
  1168. data/app/javascript/stylesheets/components/_steps.scss +1092 -0
  1169. data/app/javascript/stylesheets/components/_switch.scss +232 -0
  1170. data/app/javascript/stylesheets/components/_table.scss +493 -0
  1171. data/app/javascript/stylesheets/components/_tabs.scss +522 -0
  1172. data/app/javascript/stylesheets/components/_tag.scss +315 -0
  1173. data/app/javascript/stylesheets/components/_time_picker.scss +317 -0
  1174. data/app/javascript/stylesheets/components/_timeline.scss +361 -0
  1175. data/app/javascript/stylesheets/components/_tooltip.scss +331 -0
  1176. data/app/javascript/stylesheets/components/_tour.scss +196 -0
  1177. data/app/javascript/stylesheets/components/_transfer.scss +244 -0
  1178. data/app/javascript/stylesheets/components/_tree.scss +341 -0
  1179. data/app/javascript/stylesheets/components/_tree_select.scss +295 -0
  1180. data/app/javascript/stylesheets/components/_typography.scss +155 -0
  1181. data/app/javascript/stylesheets/components/_upload.scss +528 -0
  1182. data/app/services/hakumi/icon/loader.rb +95 -0
  1183. data/app/services/hakumi/illustrations/loader.rb +43 -0
  1184. data/app/services/hakumi_components/component_handler.rb +53 -0
  1185. data/app/views/hakumi/time_picker/_columns.html.erb +73 -0
  1186. data/app/views/hakumi_components/_admin_panel.html.erb +1 -0
  1187. data/app/views/hakumi_components/_affix.html.erb +1 -0
  1188. data/app/views/hakumi_components/_alert.html.erb +1 -0
  1189. data/app/views/hakumi_components/_confirm.html.erb +1 -0
  1190. data/app/views/hakumi_components/_drawer.html.erb +3 -0
  1191. data/app/views/hakumi_components/_message.html.erb +1 -0
  1192. data/app/views/hakumi_components/_modal.html.erb +3 -0
  1193. data/app/views/hakumi_components/_notification.html.erb +1 -0
  1194. data/app/views/hakumi_components/_popconfirm.html.erb +1 -0
  1195. data/app/views/hakumi_components/_popover.html.erb +1 -0
  1196. data/app/views/hakumi_components/_qr_code.html.erb +1 -0
  1197. data/app/views/hakumi_components/_result.html.erb +1 -0
  1198. data/app/views/hakumi_components/_segmented.html.erb +1 -0
  1199. data/app/views/hakumi_components/_skeleton.html.erb +1 -0
  1200. data/app/views/hakumi_components/_spin.html.erb +1 -0
  1201. data/app/views/hakumi_components/_statistic.html.erb +13 -0
  1202. data/app/views/hakumi_components/_table.html.erb +1 -0
  1203. data/app/views/hakumi_components/_tag.html.erb +3 -0
  1204. data/app/views/hakumi_components/_timeline.html.erb +16 -0
  1205. data/app/views/hakumi_components/_tree.html.erb +1 -0
  1206. data/lib/hakumi_components/engine.rb +29 -0
  1207. data/lib/hakumi_components/rails/attribute_introspection.rb +156 -0
  1208. data/lib/hakumi_components/rails/validation_introspection.rb +192 -0
  1209. data/lib/hakumi_components/rails.rb +9 -0
  1210. data/lib/hakumi_components/version.rb +5 -0
  1211. data/lib/hakumi_components.rb +26 -0
  1212. data/sig/action_view/tag_builder.rbs +24 -0
  1213. data/sig/active_support/concern_patch.rbs +7 -0
  1214. data/sig/hakumi/admin_panel/component.rbs +28 -0
  1215. data/sig/hakumi/affix/component.rbs +44 -0
  1216. data/sig/hakumi/alert/component.rbs +64 -0
  1217. data/sig/hakumi/anchor/component.rbs +45 -0
  1218. data/sig/hakumi/anchor/link/component.rbs +31 -0
  1219. data/sig/hakumi/autocomplete/component.rbs +68 -0
  1220. data/sig/hakumi/avatar/component.rbs +44 -0
  1221. data/sig/hakumi/badge/component.rbs +41 -0
  1222. data/sig/hakumi/base_component.rbs +77 -0
  1223. data/sig/hakumi/breadcrumb/component.rbs +21 -0
  1224. data/sig/hakumi/breadcrumb/item/component.rbs +36 -0
  1225. data/sig/hakumi/button/component.rbs +56 -0
  1226. data/sig/hakumi/calendar/component.rbs +41 -0
  1227. data/sig/hakumi/card/component.rbs +50 -0
  1228. data/sig/hakumi/card/grid/component.rbs +21 -0
  1229. data/sig/hakumi/card/meta/component.rbs +25 -0
  1230. data/sig/hakumi/carousel/component.rbs +88 -0
  1231. data/sig/hakumi/cascader/component.rbs +52 -0
  1232. data/sig/hakumi/checkbox/component.rbs +36 -0
  1233. data/sig/hakumi/checkbox/group/component.rbs +34 -0
  1234. data/sig/hakumi/collapse/component.rbs +57 -0
  1235. data/sig/hakumi/collapse/panel/component.rbs +47 -0
  1236. data/sig/hakumi/color_picker/component.rbs +81 -0
  1237. data/sig/hakumi/concerns/form_field.rbs +89 -0
  1238. data/sig/hakumi/container/component.rbs +37 -0
  1239. data/sig/hakumi/date_picker/component.rbs +72 -0
  1240. data/sig/hakumi/date_picker/range_picker.rbs +68 -0
  1241. data/sig/hakumi/date_picker/shared_rendering.rbs +41 -0
  1242. data/sig/hakumi/descriptions/component.rbs +59 -0
  1243. data/sig/hakumi/descriptions/item/component.rbs +31 -0
  1244. data/sig/hakumi/divider/component.rbs +39 -0
  1245. data/sig/hakumi/drawer/component.rbs +66 -0
  1246. data/sig/hakumi/dropdown/component.rbs +45 -0
  1247. data/sig/hakumi/dropdown/divider/component.rbs +11 -0
  1248. data/sig/hakumi/dropdown/item/component.rbs +45 -0
  1249. data/sig/hakumi/empty/component.rbs +40 -0
  1250. data/sig/hakumi/flex/component.rbs +47 -0
  1251. data/sig/hakumi/float_button/back_top/component.rbs +45 -0
  1252. data/sig/hakumi/float_button/component.rbs +80 -0
  1253. data/sig/hakumi/float_button/group/component.rbs +95 -0
  1254. data/sig/hakumi/float_button/group_cluster/component.rbs +60 -0
  1255. data/sig/hakumi/form/item/component.rbs +39 -0
  1256. data/sig/hakumi/grid/col/component.rbs +50 -0
  1257. data/sig/hakumi/grid/row/component.rbs +46 -0
  1258. data/sig/hakumi/icon/component.rbs +56 -0
  1259. data/sig/hakumi/image/component.rbs +56 -0
  1260. data/sig/hakumi/image/preview_group/component.rbs +28 -0
  1261. data/sig/hakumi/input/component.rbs +71 -0
  1262. data/sig/hakumi/input/password/component.rbs +27 -0
  1263. data/sig/hakumi/input/text_area/component.rbs +42 -0
  1264. data/sig/hakumi/input_number/component.rbs +85 -0
  1265. data/sig/hakumi/layout/component.rbs +21 -0
  1266. data/sig/hakumi/layout/content/component.rbs +19 -0
  1267. data/sig/hakumi/layout/footer/component.rbs +19 -0
  1268. data/sig/hakumi/layout/header/component.rbs +19 -0
  1269. data/sig/hakumi/layout/sider/component.rbs +19 -0
  1270. data/sig/hakumi/mentions/component.rbs +75 -0
  1271. data/sig/hakumi/menu/component.rbs +52 -0
  1272. data/sig/hakumi/menu/divider/component.rbs +11 -0
  1273. data/sig/hakumi/menu/group/component.rbs +20 -0
  1274. data/sig/hakumi/menu/item/component.rbs +42 -0
  1275. data/sig/hakumi/menu/sub_menu/component.rbs +37 -0
  1276. data/sig/hakumi/message/component.rbs +50 -0
  1277. data/sig/hakumi/modal/component.rbs +76 -0
  1278. data/sig/hakumi/modal/confirm/component.rbs +32 -0
  1279. data/sig/hakumi/modal/error/component.rbs +27 -0
  1280. data/sig/hakumi/modal/info/component.rbs +27 -0
  1281. data/sig/hakumi/modal/success/component.rbs +27 -0
  1282. data/sig/hakumi/modal/warning/component.rbs +27 -0
  1283. data/sig/hakumi/notification/component.rbs +64 -0
  1284. data/sig/hakumi/pagination/component.rbs +113 -0
  1285. data/sig/hakumi/popconfirm/component.rbs +52 -0
  1286. data/sig/hakumi/popover/component.rbs +66 -0
  1287. data/sig/hakumi/progress/component.rbs +201 -0
  1288. data/sig/hakumi/qr_code/component.rbs +111 -0
  1289. data/sig/hakumi/radio/component.rbs +55 -0
  1290. data/sig/hakumi/radio/group/component.rbs +71 -0
  1291. data/sig/hakumi/rate/component.rbs +56 -0
  1292. data/sig/hakumi/result/component.rbs +65 -0
  1293. data/sig/hakumi/segmented/component.rbs +73 -0
  1294. data/sig/hakumi/select/component.rbs +73 -0
  1295. data/sig/hakumi/skeleton/avatar/component.rbs +23 -0
  1296. data/sig/hakumi/skeleton/button/component.rbs +24 -0
  1297. data/sig/hakumi/skeleton/component.rbs +76 -0
  1298. data/sig/hakumi/skeleton/image/component.rbs +22 -0
  1299. data/sig/hakumi/skeleton/input/component.rbs +23 -0
  1300. data/sig/hakumi/skeleton/node/component.rbs +21 -0
  1301. data/sig/hakumi/slider/component.rbs +86 -0
  1302. data/sig/hakumi/space/compact/component.rbs +21 -0
  1303. data/sig/hakumi/space/component.rbs +47 -0
  1304. data/sig/hakumi/spin/component.rbs +77 -0
  1305. data/sig/hakumi/splitter/component.rbs +27 -0
  1306. data/sig/hakumi/splitter/panel/component.rbs +36 -0
  1307. data/sig/hakumi/statistic/component.rbs +99 -0
  1308. data/sig/hakumi/steps/component.rbs +82 -0
  1309. data/sig/hakumi/steps/item/component.rbs +29 -0
  1310. data/sig/hakumi/switch/component.rbs +52 -0
  1311. data/sig/hakumi/table/column/component.rbs +57 -0
  1312. data/sig/hakumi/table/column_group/component.rbs +20 -0
  1313. data/sig/hakumi/table/component.rbs +280 -0
  1314. data/sig/hakumi/table/concerns/columns.rbs +94 -0
  1315. data/sig/hakumi/tabs/component.rbs +66 -0
  1316. data/sig/hakumi/tabs/item/component.rbs +29 -0
  1317. data/sig/hakumi/tag/component.rbs +86 -0
  1318. data/sig/hakumi/tag/group/component.rbs +24 -0
  1319. data/sig/hakumi/time_picker/component.rbs +72 -0
  1320. data/sig/hakumi/timeline/component.rbs +61 -0
  1321. data/sig/hakumi/timeline/item/component.rbs +70 -0
  1322. data/sig/hakumi/tooltip/component.rbs +73 -0
  1323. data/sig/hakumi/tour/component.rbs +84 -0
  1324. data/sig/hakumi/transfer/component.rbs +76 -0
  1325. data/sig/hakumi/tree/component.rbs +126 -0
  1326. data/sig/hakumi/tree_select/component.rbs +122 -0
  1327. data/sig/hakumi/typography/base_component.rbs +57 -0
  1328. data/sig/hakumi/typography/link/component.rbs +28 -0
  1329. data/sig/hakumi/typography/paragraph/component.rbs +13 -0
  1330. data/sig/hakumi/typography/text/component.rbs +10 -0
  1331. data/sig/hakumi/typography/title/component.rbs +28 -0
  1332. data/sig/hakumi/upload/component.rbs +78 -0
  1333. data/sig/hakumi_components/rails/attribute_introspection.rbs +16 -0
  1334. data/sig/hakumi_components/rails/validation_introspection.rbs +18 -0
  1335. data/sig/hakumi_components/rails.rbs +6 -0
  1336. data/sig/hakumi_components.rbs +79 -0
  1337. data/sig/rails.rbs +18 -0
  1338. data/sig/view_component/base.rbs +28 -0
  1339. metadata +1439 -0
@@ -0,0 +1,132 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Hakumi
4
+ module Rate
5
+ # Hakumi Rate component
6
+ # Supports half selection, clearing, and form integration.
7
+ class Component < Hakumi::BaseComponent
8
+ include Hakumi::Concerns::FormField
9
+
10
+ def initialize(
11
+ name: nil,
12
+ label: nil,
13
+ caption: nil,
14
+ value: nil,
15
+ default_value: 0,
16
+ count: 5,
17
+ allow_half: false,
18
+ allow_clear: false,
19
+ disabled: false,
20
+ readonly: false,
21
+ tooltips: [],
22
+ character: nil,
23
+ required: false,
24
+ standalone: true,
25
+ errors: [],
26
+ **html_options
27
+ )
28
+ @name = name || generate_id("rate")
29
+ @label = label
30
+ @caption = caption
31
+ @value = value
32
+ @default_value = default_value
33
+ @count = count
34
+ @allow_half = allow_half
35
+ @allow_clear = allow_clear
36
+ @disabled = disabled
37
+ @readonly = readonly
38
+ @tooltips = Array(tooltips)
39
+ @character = character
40
+ @required = required
41
+ @standalone = standalone
42
+ @errors = Array(errors)
43
+ @html_options = html_options
44
+ end
45
+
46
+ def current_value
47
+ base_value = @value.nil? ? @default_value : @value
48
+ base_value.to_f
49
+ end
50
+
51
+ def rate_classes
52
+ class_names(
53
+ "rate",
54
+ {
55
+ disabled: @disabled,
56
+ readonly: @readonly,
57
+ "allow-clear": @allow_clear,
58
+ "has-value": current_value.positive?
59
+ },
60
+ [ @html_options[:class] ]
61
+ )
62
+ end
63
+
64
+ def rate_wrapper_attributes
65
+ base_attrs = {
66
+ class: rate_classes,
67
+ role: "slider",
68
+ "aria-valuenow": current_value,
69
+ "aria-valuemin": @allow_clear ? 0 : (@allow_half ? 0.5 : 1),
70
+ "aria-valuemax": @count,
71
+ "aria-label": @label || "Rating",
72
+ "aria-readonly": @readonly ? "true" : nil,
73
+ "aria-disabled": @disabled ? "true" : nil,
74
+ data: {
75
+ controller: "hakumi--rate",
76
+ hakumi__rate_count_value: @count,
77
+ hakumi__rate_allow_half_value: @allow_half,
78
+ hakumi__rate_allow_clear_value: @allow_clear,
79
+ hakumi__rate_disabled_value: @disabled,
80
+ hakumi__rate_readonly_value: @readonly,
81
+ hakumi__rate_value_value: current_value
82
+ }
83
+ }
84
+
85
+ merge_attributes(base_attrs, @html_options.except(:class))
86
+ end
87
+
88
+ def star_state(index)
89
+ value = current_value
90
+ return :full if value >= index + 1
91
+ return :half if @allow_half && value > index && value < index + 1
92
+
93
+ :zero
94
+ end
95
+
96
+ def star_classes(state)
97
+ class_names(
98
+ "rate-star",
99
+ {
100
+ full: state == :full,
101
+ half: state == :half,
102
+ zero: state == :zero
103
+ }
104
+ )
105
+ end
106
+
107
+ def tooltip_for(index)
108
+ @tooltips[index]
109
+ end
110
+
111
+ def character_content
112
+ render_value(@character || "★")
113
+ end
114
+
115
+ def input_attributes
116
+ {
117
+ type: "hidden",
118
+ name: @name,
119
+ id: input_id,
120
+ value: current_value,
121
+ disabled: @disabled ? true : nil,
122
+ required: @required ? true : nil,
123
+ "aria-invalid": has_error? ? "true" : nil,
124
+ "aria-describedby": describedby_ids,
125
+ data: {
126
+ hakumi__rate_target: "input"
127
+ }
128
+ }.compact
129
+ end
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,23 @@
1
+ <div <%= tag.attributes(wrapper_attributes) %>>
2
+ <% if icon_present? %>
3
+ <div class="hakumi-result-icon">
4
+ <%= icon_content %>
5
+ </div>
6
+ <% end %>
7
+
8
+ <% if title_present? %>
9
+ <div class="hakumi-result-title"><%= title_content %></div>
10
+ <% end %>
11
+
12
+ <% if sub_title_present? %>
13
+ <div class="hakumi-result-subtitle"><%= sub_title_content %></div>
14
+ <% end %>
15
+
16
+ <% if content_present? %>
17
+ <div class="hakumi-result-content"><%= content %></div>
18
+ <% end %>
19
+
20
+ <% if extra_present? %>
21
+ <div class="hakumi-result-extra"><%= extra_content %></div>
22
+ <% end %>
23
+ </div>
@@ -0,0 +1,125 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Hakumi
4
+ module Result
5
+ class Component < Hakumi::BaseComponent
6
+ STATUSES = %w[success info warning error].freeze
7
+
8
+ DEFAULT_TITLES = {
9
+ "success" => "Success",
10
+ "info" => "Information",
11
+ "warning" => "Warning",
12
+ "error" => "Error"
13
+ }.freeze
14
+
15
+ DEFAULT_ICON_NAME = "result_success"
16
+ STATUS_ICON_MAP = {
17
+ "success" => { name: "check-circle", theme: :filled, color: "var(--color-success)" },
18
+ "info" => { name: "info-circle", theme: :filled, color: "var(--color-primary)" },
19
+ "warning" => { name: "exclamation-circle", theme: :filled, color: "var(--color-warning)" },
20
+ "error" => { name: "close-circle", theme: :filled, color: "var(--color-error)" }
21
+ }.freeze
22
+ STATUS_ICON_SIZE = 72
23
+
24
+ def self.extract_controller_locals(params)
25
+ {
26
+ status: params[:status],
27
+ title: params[:title],
28
+ sub_title: params[:sub_title],
29
+ extra: params[:extra]
30
+ }
31
+ end
32
+
33
+ def initialize(status: :info, title: nil, sub_title: nil, icon: nil, extra: nil, **html_options)
34
+ @status = (status || :info).to_s
35
+ @title = title || DEFAULT_TITLES[@status]
36
+ @sub_title = sub_title
37
+ @icon = icon
38
+ @extra = extra
39
+ @html_options = html_options
40
+
41
+ validate_props!
42
+ end
43
+
44
+ def wrapper_attributes
45
+ merge_attributes(
46
+ {
47
+ class: wrapper_classes,
48
+ role: "status",
49
+ "aria-live": "polite"
50
+ },
51
+ @html_options.except(:class)
52
+ )
53
+ end
54
+
55
+ def icon_present?
56
+ @icon != false
57
+ end
58
+
59
+ def icon_content
60
+ return nil unless icon_present?
61
+
62
+ render_value(@icon || status_icon_component || default_icon)
63
+ end
64
+
65
+ def title_content
66
+ render_value(@title)
67
+ end
68
+
69
+ def sub_title_content
70
+ render_value(@sub_title)
71
+ end
72
+
73
+ def extra_content
74
+ render_value(@extra)
75
+ end
76
+
77
+ def content_present?
78
+ content.present?
79
+ end
80
+
81
+ def extra_present?
82
+ @extra.present?
83
+ end
84
+
85
+ def title_present?
86
+ @title.present?
87
+ end
88
+
89
+ def sub_title_present?
90
+ @sub_title.present?
91
+ end
92
+
93
+ private
94
+
95
+ def validate_props!
96
+ validate_inclusion!(:status, STATUSES)
97
+ end
98
+
99
+ def wrapper_classes
100
+ class_names(
101
+ "result",
102
+ { @status => true },
103
+ [ @html_options[:class] ]
104
+ )
105
+ end
106
+
107
+
108
+ def status_icon_component
109
+ config = STATUS_ICON_MAP[@status]
110
+ return unless config
111
+
112
+ Hakumi::Icon::Component.new(
113
+ name: config[:name],
114
+ theme: config[:theme],
115
+ size: STATUS_ICON_SIZE,
116
+ color: config[:color]
117
+ )
118
+ end
119
+
120
+ def default_icon
121
+ Hakumi::Illustrations::Loader.load(DEFAULT_ICON_NAME)
122
+ end
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,17 @@
1
+ <%= tag.div(**wrapper_attributes) do %>
2
+ <span class="hakumi-segmented-track" data-hakumi--segmented-target="track"></span>
3
+ <% normalized_options.each_with_index do |option, index| %>
4
+ <%= tag.label(class: option_classes(option), data: option_data_attributes(option)) do %>
5
+ <%= radio_button_tag(
6
+ @name,
7
+ option[:value],
8
+ option_selected?(option),
9
+ **option_input_attributes(option, index)
10
+ ) %>
11
+ <span class="hakumi-segmented-item-label">
12
+ <%= safe_join([option_icon(option), option_label(option)].compact) %>
13
+ </span>
14
+ <% end %>
15
+ <% end %>
16
+ <%= content %>
17
+ <% end %>
@@ -0,0 +1,273 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Hakumi
4
+ module Segmented
5
+ class Component < Hakumi::BaseComponent
6
+ SIZES = [ :small, :middle, :large ].freeze
7
+
8
+ def self.extract_controller_locals(params)
9
+ options = params[:options]
10
+ options = params[:options_json] if options.nil?
11
+ options = parse_options_param(options)
12
+
13
+ {
14
+ options: options,
15
+ value: params[:value],
16
+ default_value: params[:default_value],
17
+ disabled: truthy_param?(params[:disabled]),
18
+ block: truthy_param?(params[:block]),
19
+ vertical: truthy_param?(params[:vertical]),
20
+ round: truthy_param?(params[:round]),
21
+ name: params[:name],
22
+ size: params[:size],
23
+ aria_label: params[:aria_label]
24
+ }.compact
25
+ end
26
+
27
+ def initialize(
28
+ options: [],
29
+ value: nil,
30
+ default_value: nil,
31
+ disabled: false,
32
+ block: false,
33
+ vertical: false,
34
+ round: false,
35
+ name: nil,
36
+ size: :middle,
37
+ aria_label: nil,
38
+ **html_options
39
+ )
40
+ @options = normalize_options(options)
41
+ @value = normalize_value(value, default_value)
42
+ @value = @options.first[:value]&.to_s if @value.nil? && @options.any?
43
+ @disabled = cast_boolean(disabled)
44
+ @block = cast_boolean(block)
45
+ @vertical = cast_boolean(vertical)
46
+ @round = cast_boolean(round)
47
+ @name = normalize_string(name) || generate_id("segmented")
48
+ @size = normalize_size(size) || :middle
49
+ @aria_label = normalize_string(aria_label)
50
+ @html_options = html_options
51
+
52
+ validate_props!
53
+ end
54
+
55
+ def wrapper_attributes
56
+ attrs = {
57
+ class: wrapper_classes,
58
+ role: "radiogroup",
59
+ "aria-disabled": @disabled ? "true" : nil,
60
+ "aria-orientation": @vertical ? "vertical" : nil,
61
+ "aria-label": @aria_label,
62
+ data: data_attributes
63
+ }
64
+
65
+ merge_attributes(attrs, @html_options.except(:class))
66
+ end
67
+
68
+ def normalized_options
69
+ @options
70
+ end
71
+
72
+ def option_classes(option)
73
+ class_names(
74
+ "segmented-item",
75
+ {
76
+ selected: option_selected?(option),
77
+ disabled: option_disabled?(option)
78
+ },
79
+ [
80
+ option[:class_name],
81
+ ("hakumi-segmented-item-icon-only" if icon_only_option?(option))
82
+ ]
83
+ )
84
+ end
85
+
86
+ def option_data_attributes(option)
87
+ {
88
+ "hakumi--segmented-target": "item",
89
+ value: option[:value].to_s,
90
+ label: option[:label].is_a?(String) ? option[:label] : nil,
91
+ disabled: option_disabled?(option) ? "true" : nil
92
+ }.compact
93
+ end
94
+
95
+ def option_input_attributes(option, index)
96
+ attrs = {
97
+ id: option_id(index),
98
+ class: "hakumi-segmented-input",
99
+ disabled: option_disabled?(option),
100
+ data: {
101
+ "hakumi--segmented-target": "input",
102
+ action: "change->hakumi--segmented#select"
103
+ }
104
+ }
105
+
106
+ aria_label = option_aria_label(option)
107
+ attrs[:"aria-label"] = aria_label if aria_label
108
+
109
+ attrs
110
+ end
111
+
112
+ def option_selected?(option)
113
+ return false if @value.nil?
114
+
115
+ option[:value].to_s == @value.to_s
116
+ end
117
+
118
+ def option_disabled?(option)
119
+ @disabled || option[:disabled]
120
+ end
121
+
122
+ def option_id(index)
123
+ "#{@name}_#{index}"
124
+ end
125
+
126
+ def option_label(option)
127
+ label = option[:label]
128
+ return nil if label.nil?
129
+ return label if label.is_a?(String)
130
+ return render(label) if label.respond_to?(:render_in)
131
+
132
+ label.to_s
133
+ end
134
+
135
+ def option_icon(option)
136
+ icon = option[:icon]
137
+ return nil if icon.nil?
138
+
139
+ if icon.is_a?(String) || icon.is_a?(Symbol)
140
+ render Hakumi::Icon::Component.new(name: icon, color: "currentColor")
141
+ elsif icon.respond_to?(:render_in)
142
+ render(icon)
143
+ else
144
+ icon
145
+ end
146
+ end
147
+
148
+ private
149
+
150
+ def validate_props!
151
+ validate_inclusion!(:size, SIZES)
152
+ end
153
+
154
+ def wrapper_classes
155
+ modifiers = {
156
+ block: @block,
157
+ vertical: @vertical,
158
+ round: @round,
159
+ disabled: @disabled
160
+ }
161
+
162
+ modifiers[@size] = true if @size != :middle
163
+
164
+ class_names("segmented", modifiers, [ @html_options[:class] ])
165
+ end
166
+
167
+ def normalize_options(options)
168
+ Array(options).map.with_index do |option, index|
169
+ if option.is_a?(Hash)
170
+ label_key_present = option.key?(:label) || option.key?("label")
171
+ value_key_present = option.key?(:value) || option.key?("value")
172
+ label_value = if label_key_present
173
+ option[:label] || option["label"]
174
+ else
175
+ option[:value] || option["value"] || "Option #{index + 1}"
176
+ end
177
+ value_value = if value_key_present
178
+ option[:value] || option["value"]
179
+ else
180
+ label_value
181
+ end
182
+
183
+ {
184
+ label: label_value,
185
+ value: value_value,
186
+ disabled: cast_boolean(option[:disabled] || option["disabled"]),
187
+ icon: option[:icon] || option["icon"],
188
+ class_name: option[:class_name] || option["class_name"],
189
+ aria_label: option[:aria_label] || option["aria_label"]
190
+ }
191
+ else
192
+ {
193
+ label: option,
194
+ value: option,
195
+ disabled: false,
196
+ icon: nil,
197
+ class_name: nil,
198
+ aria_label: nil
199
+ }
200
+ end
201
+ end
202
+ end
203
+
204
+ def option_aria_label(option)
205
+ return option[:aria_label] if option[:aria_label].present?
206
+
207
+ label = option[:label]
208
+ return strip_tags(label.to_s) if label.is_a?(String)
209
+ return option[:value].to_s if option[:value].present?
210
+
211
+ nil
212
+ end
213
+
214
+ def icon_only_option?(option)
215
+ icon = option[:icon]
216
+ label = option[:label]
217
+ icon.present? && (label.nil? || (label.respond_to?(:empty?) && label.empty?))
218
+ end
219
+
220
+ def data_attributes
221
+ {
222
+ controller: "hakumi--segmented",
223
+ "hakumi--segmented-disabled-value": @disabled,
224
+ "hakumi--segmented-value-value": @value
225
+ }.compact
226
+ end
227
+
228
+ def normalize_value(value, default_value)
229
+ raw = value.nil? ? default_value : value
230
+ raw.nil? ? nil : raw.to_s
231
+ end
232
+
233
+ def normalize_size(size)
234
+ val = size.is_a?(String) ? size.strip : size
235
+ symbol = val.presence&.to_sym
236
+ symbol == :default ? :middle : symbol
237
+ end
238
+
239
+ def cast_boolean(value)
240
+ ActiveModel::Type::Boolean.new.cast(value)
241
+ end
242
+
243
+ def normalize_string(value)
244
+ return nil if value.nil?
245
+
246
+ value = value.to_s.strip
247
+ value.presence
248
+ end
249
+
250
+ def self.parse_options_param(options)
251
+ return options if options.is_a?(Array)
252
+ return nil if options.nil?
253
+
254
+ if options.is_a?(String)
255
+ begin
256
+ parsed = JSON.parse(options)
257
+ return parsed
258
+ rescue JSON::ParserError
259
+ return options.split(",")
260
+ end
261
+ end
262
+
263
+ options
264
+ end
265
+
266
+ def self.truthy_param?(value)
267
+ return value if value == true || value == false
268
+
269
+ value.to_s == "true"
270
+ end
271
+ end
272
+ end
273
+ end
@@ -0,0 +1,103 @@
1
+ <% select_control = capture do %>
2
+ <div <%= tag.attributes(wrapper_attributes) %>>
3
+ <input type="hidden"
4
+ name="<%= @name %>"
5
+ id="<%= input_id %>"
6
+ value="<%= @value %>"
7
+ data-hakumi--select-target="input"
8
+ <%= 'required' if @required %>
9
+ <%= "aria-invalid=#{has_error?}" if has_error? %>
10
+ <%= "aria-describedby=#{describedby_ids}" if describedby_ids %>>
11
+
12
+ <% if borderless? %>
13
+ <div class="hakumi-select-selector" <%= "data-action=click->hakumi--select#toggle" unless hover_trigger? %>>
14
+ <span class="hakumi-select-selection-item" data-hakumi--select-target="label" style="display: none;"></span>
15
+ <%= render Hakumi::Icon::Component.new(name: icon || :ellipsis) %>
16
+ </div>
17
+ <% else %>
18
+ <div class="hakumi-select-selector" data-action="click->hakumi--select#toggle">
19
+ <% if @show_search %>
20
+ <span class="hakumi-select-selection-search">
21
+ <input type="search"
22
+ class="hakumi-select-selection-search-input"
23
+ data-hakumi--select-target="searchInput"
24
+ data-action="input->hakumi--select#onSearchInput keydown->hakumi--select#onSearchKeydown"
25
+ autocomplete="off"
26
+ placeholder="<%= @placeholder %>"
27
+ value="<%= selected_label || '' %>"
28
+ role="combobox"
29
+ aria-haspopup="listbox"
30
+ aria-owns="<%= @name %>_list"
31
+ aria-autocomplete="list"
32
+ aria-controls="<%= @name %>_list"
33
+ aria-activedescendant="">
34
+ </span>
35
+ <% else %>
36
+ <% if selected_label %>
37
+ <span class="hakumi-select-selection-item" data-hakumi--select-target="label"><%= selected_label %></span>
38
+ <% else %>
39
+ <span class="hakumi-select-selection-item" data-hakumi--select-target="label" style="display: none;"></span>
40
+ <% end %>
41
+
42
+ <% if @placeholder %>
43
+ <span class="hakumi-select-selection-placeholder"
44
+ data-hakumi--select-target="placeholder"
45
+ style="<%= selected_label ? 'display: none;' : '' %>">
46
+ <%= @placeholder %>
47
+ </span>
48
+ <% end %>
49
+ <% end %>
50
+ </div>
51
+
52
+ <% if @allow_clear %>
53
+ <span class="hakumi-select-clear"
54
+ data-action="click->hakumi--select#clear"
55
+ style="<%= @value.present? ? '' : 'display: none;' %>"
56
+ data-hakumi--select-target="clearBtn">
57
+ <%= render Hakumi::Icon::Component.new(name: :close_circle, theme: :filled) %>
58
+ </span>
59
+ <% end %>
60
+
61
+ <span class="hakumi-select-arrow">
62
+ <%= render Hakumi::Icon::Component.new(name: :down) %>
63
+ </span>
64
+ <% end %>
65
+
66
+ <div class="hakumi-select-dropdown hakumi-select-dropdown-hidden" data-hakumi--select-target="dropdown">
67
+ <div class="rc-virtual-list-holder-inner" role="listbox" id="<%= @name %>_list">
68
+ <% formatted_options.each do |label, value| %>
69
+ <div class="hakumi-select-item hakumi-select-item-option <%= 'hakumi-select-item-option-selected' if value.to_s == @value.to_s %>"
70
+ role="option"
71
+ aria-selected="<%= value.to_s == @value.to_s %>"
72
+ data-value="<%= value %>"
73
+ data-label="<%= label %>"
74
+ data-action="click->hakumi--select#select"
75
+ data-hakumi--select-target="option">
76
+ <div class="hakumi-select-item-option-content"><%= label %></div>
77
+ </div>
78
+ <% end %>
79
+ <div class="hakumi-select-item-empty" data-hakumi--select-target="empty" style="display: none;">
80
+ No data
81
+ </div>
82
+ </div>
83
+ </div>
84
+ </div>
85
+ <% end %>
86
+
87
+ <% if @standalone %>
88
+ <%= select_control %>
89
+ <% else %>
90
+ <div <%= tag.attributes(form_item_attributes).to_s.html_safe %>>
91
+ <%= render_label(field_id: input_id) %>
92
+
93
+ <div class="hakumi-form-item-control">
94
+ <div class="hakumi-form-item-control-input">
95
+ <div class="hakumi-form-item-control-input-content">
96
+ <%= select_control %>
97
+ </div>
98
+ </div>
99
+
100
+ <%= render_explain %>
101
+ </div>
102
+ </div>
103
+ <% end %>