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,473 @@
1
+ import RegistryController from "../base/registry_controller.js"
2
+
3
+ export default class extends RegistryController {
4
+ static targets = ["trigger", "popover", "arrow"]
5
+ static values = {
6
+ placement: { type: String, default: "top" },
7
+ trigger: { type: String, default: "hover" },
8
+ disabled: { type: Boolean, default: false },
9
+ open: { type: Boolean, default: undefined },
10
+ arrow: { type: Boolean, default: true },
11
+ autoAdjustOverflow: { type: Boolean, default: true }
12
+ }
13
+
14
+ registerApi() {
15
+ const api = {
16
+ open: () => this.open(),
17
+ close: () => this.close(),
18
+ toggle: () => this.toggle(),
19
+ isOpen: () => this.isOpen,
20
+ getState: () => ({
21
+ open: this.isOpen,
22
+ placement: this.placementValue,
23
+ trigger: this.triggerModes,
24
+ arrow: this.arrowValue,
25
+ disabled: this.disabledValue
26
+ }),
27
+ setPlacement: (placement) => this.setPlacement(placement),
28
+ setOpen: (value) => this.setOpen(value)
29
+ }
30
+
31
+ this.element.hakumiComponent = {
32
+ name: "popover",
33
+ version: 1,
34
+ singleton: false,
35
+ api
36
+ }
37
+
38
+ this.#exposeApi(api)
39
+ }
40
+
41
+ setup() {
42
+ this.isOpen = false
43
+ this.hideTimeout = null
44
+ this.triggerModes = this.#parseTriggers()
45
+ this._popover = this.popoverTarget
46
+ this.setupTriggerEvents()
47
+
48
+ if (this.hasOpenValue && this.openValue !== undefined) {
49
+ this.isOpen = this.openValue
50
+ this.updateVisibility()
51
+ }
52
+ }
53
+
54
+ teardown() {
55
+ this.removeTriggerEvents()
56
+
57
+ const popover = this.popoverElement
58
+ if (popover && popover.parentElement === document.body) {
59
+ this.element.appendChild(popover)
60
+ }
61
+ }
62
+
63
+ disconnect() {
64
+ delete this.element.hakumiPopover
65
+ super.disconnect()
66
+ }
67
+
68
+ setupTriggerEvents() {
69
+ if (!this.hasTriggerTarget) return
70
+
71
+ this.onTriggerClick = (event) => {
72
+ if (this.disabledValue) return
73
+ event.preventDefault()
74
+ this.toggle()
75
+ }
76
+
77
+ this.onTriggerHoverEnter = () => {
78
+ if (this.disabledValue) return
79
+ this.#clearHideTimeout()
80
+ this.show()
81
+ }
82
+
83
+ this.onTriggerHoverLeave = () => {
84
+ if (this.disabledValue) return
85
+ this.#scheduleHide()
86
+ }
87
+
88
+ this.onPopoverHoverEnter = () => {
89
+ if (this.disabledValue) return
90
+ this.#clearHideTimeout()
91
+ this.show()
92
+ }
93
+
94
+ this.onPopoverHoverLeave = () => {
95
+ if (this.disabledValue) return
96
+ this.#scheduleHide()
97
+ }
98
+
99
+ if (this.triggerModes.includes("click")) {
100
+ this.triggerTarget.addEventListener("click", this.onTriggerClick)
101
+ this.triggerTarget.setAttribute("aria-haspopup", "dialog")
102
+ this.triggerTarget.setAttribute("aria-expanded", "false")
103
+ this.#bindOutsideListeners()
104
+ } else {
105
+ this.#unbindOutsideListeners()
106
+ }
107
+
108
+ if (this.triggerModes.includes("hover")) {
109
+ this.triggerTarget.addEventListener("mouseenter", this.onTriggerHoverEnter)
110
+ this.triggerTarget.addEventListener("mouseleave", this.onTriggerHoverLeave)
111
+
112
+ const popover = this.popoverElement
113
+ if (popover) {
114
+ popover.addEventListener("mouseenter", this.onPopoverHoverEnter)
115
+ popover.addEventListener("mouseleave", this.onPopoverHoverLeave)
116
+ }
117
+ }
118
+
119
+ if (this.triggerModes.includes("focus")) {
120
+ this.onTriggerFocusIn = () => {
121
+ if (this.disabledValue) return
122
+ this.show()
123
+ }
124
+ this.onTriggerFocusOut = () => {
125
+ if (this.disabledValue) return
126
+ this.hide()
127
+ }
128
+
129
+ this.triggerTarget.addEventListener("focusin", this.onTriggerFocusIn)
130
+ this.triggerTarget.addEventListener("focusout", this.onTriggerFocusOut)
131
+ }
132
+ }
133
+
134
+ removeTriggerEvents() {
135
+ if (!this.hasTriggerTarget) return
136
+
137
+ this.triggerTarget.removeEventListener("click", this.onTriggerClick)
138
+ this.triggerTarget.removeEventListener("mouseenter", this.onTriggerHoverEnter)
139
+ this.triggerTarget.removeEventListener("mouseleave", this.onTriggerHoverLeave)
140
+ this.triggerTarget.removeEventListener("focusin", this.onTriggerFocusIn)
141
+ this.triggerTarget.removeEventListener("focusout", this.onTriggerFocusOut)
142
+
143
+ const popover = this.popoverElement
144
+ if (popover) {
145
+ popover.removeEventListener("mouseenter", this.onPopoverHoverEnter)
146
+ popover.removeEventListener("mouseleave", this.onPopoverHoverLeave)
147
+ }
148
+
149
+ this.#unbindOutsideListeners()
150
+ }
151
+
152
+ show() {
153
+ if (this.disabledValue) return
154
+ if (this.#isControlled()) return
155
+
156
+ this.isOpen = true
157
+ this.updateVisibility()
158
+ }
159
+
160
+ hide() {
161
+ if (this.disabledValue) return
162
+ if (this.#isControlled()) return
163
+
164
+ this.isOpen = false
165
+ this.updateVisibility()
166
+ this.dispatch("hidden", { prefix: "hakumi-popover" })
167
+ this.element.dispatchEvent(new CustomEvent("hakumi-component:hidden", { bubbles: true }))
168
+ }
169
+
170
+ open() {
171
+ this.isOpen = true
172
+ this.updateVisibility()
173
+ }
174
+
175
+ close() {
176
+ this.isOpen = false
177
+ this.updateVisibility()
178
+ this.dispatch("hidden", { prefix: "hakumi-popover" })
179
+ this.element.dispatchEvent(new CustomEvent("hakumi-component:hidden", { bubbles: true }))
180
+ }
181
+
182
+ toggle() {
183
+ if (this.#isControlled()) {
184
+ this.setOpen(!this.isOpen)
185
+ return
186
+ }
187
+
188
+ this.isOpen ? this.hide() : this.show()
189
+ }
190
+
191
+ updateVisibility() {
192
+ const popover = this.popoverElement
193
+ if (!popover) return
194
+
195
+ if (this.isOpen) {
196
+ popover.style.display = "block"
197
+ this.triggerTarget.setAttribute("aria-expanded", "true")
198
+
199
+ requestAnimationFrame(() => {
200
+ popover.classList.add("hakumi-popover-visible")
201
+ this.#positionPopover()
202
+ })
203
+ } else {
204
+ popover.classList.remove("hakumi-popover-visible")
205
+ this.triggerTarget.setAttribute("aria-expanded", "false")
206
+
207
+ setTimeout(() => {
208
+ if (!this.isOpen) {
209
+ popover.style.display = "none"
210
+ if (popover.parentElement === document.body) {
211
+ this.element.appendChild(popover)
212
+ }
213
+ }
214
+ }, 300)
215
+ }
216
+ }
217
+
218
+ openValueChanged() {
219
+ if (this.openValue !== undefined) {
220
+ this.isOpen = this.openValue
221
+ this.updateVisibility()
222
+ }
223
+ }
224
+
225
+ setOpen(value) {
226
+ this.openValue = Boolean(value)
227
+ this.isOpen = this.openValue
228
+ this.updateVisibility()
229
+ }
230
+
231
+ setPlacement(placement) {
232
+ this.placementValue = placement
233
+ if (this.isOpen) {
234
+ this.#positionPopover()
235
+ }
236
+ }
237
+
238
+ #positionPopover() {
239
+ if (!this.hasTriggerTarget) return
240
+
241
+ const trigger = this.triggerTarget
242
+ const popover = this.popoverElement
243
+ const gap = this.arrowValue ? 8 : 4
244
+
245
+ if (popover.parentElement !== document.body) {
246
+ document.body.appendChild(popover)
247
+ }
248
+
249
+ popover.style.visibility = "hidden"
250
+ popover.style.display = "block"
251
+ popover.style.position = "absolute"
252
+ const rect = popover.getBoundingClientRect()
253
+ popover.style.visibility = ""
254
+
255
+ const viewport = {
256
+ width: window.innerWidth,
257
+ height: window.innerHeight
258
+ }
259
+
260
+ let placement = this.placementValue
261
+
262
+ if (placement === "auto") {
263
+ placement = this._chooseBestPlacement(trigger, rect, gap, viewport)
264
+ }
265
+
266
+ if (this.autoAdjustOverflowValue) {
267
+ const check = (p) => {
268
+ const triggerRect = trigger.getBoundingClientRect()
269
+ const coords = this._calculateViewportCoords(p, triggerRect, rect, gap)
270
+ return {
271
+ top: coords.top < 0,
272
+ bottom: (coords.top + rect.height) > viewport.height,
273
+ left: coords.left < 0,
274
+ right: (coords.left + rect.width) > viewport.width
275
+ }
276
+ }
277
+
278
+ const overflows = check(placement)
279
+ const dirMatch = placement.match(/^(top|bottom|left|right)/)
280
+ const dir = dirMatch ? dirMatch[1] : "top"
281
+
282
+ if (overflows[dir]) {
283
+ const opposites = {
284
+ top: "bottom",
285
+ bottom: "top",
286
+ left: "right",
287
+ right: "left"
288
+ }
289
+ const newPlacement = placement.replace(dir, opposites[dir])
290
+ const altOverflows = check(newPlacement)
291
+
292
+ if (!altOverflows[opposites[dir]]) {
293
+ placement = newPlacement
294
+ }
295
+ }
296
+ }
297
+
298
+ const triggerRect = trigger.getBoundingClientRect()
299
+ const finalViewportCoords = this._calculateViewportCoords(placement, triggerRect, rect, gap)
300
+
301
+ popover.style.top = `${finalViewportCoords.top + window.scrollY}px`
302
+ popover.style.left = `${finalViewportCoords.left + window.scrollX}px`
303
+ popover.style.zIndex = "1030"
304
+
305
+ popover.setAttribute("data-hakumi--popover-placement-value", placement)
306
+ }
307
+
308
+ _chooseBestPlacement(trigger, popoverRect, gap, viewport) {
309
+ const triggerRect = trigger.getBoundingClientRect()
310
+ const spaces = {
311
+ top: triggerRect.top,
312
+ bottom: viewport.height - triggerRect.bottom,
313
+ left: triggerRect.left,
314
+ right: viewport.width - triggerRect.right
315
+ }
316
+
317
+ const pw = popoverRect.width
318
+ const ph = popoverRect.height
319
+
320
+ const fits = (side) => {
321
+ const required = (side === "top" || side === "bottom") ? ph : pw
322
+ return spaces[side] >= required + gap
323
+ }
324
+
325
+ if (fits("top") || fits("bottom")) {
326
+ return spaces.top >= spaces.bottom ? "top" : "bottom"
327
+ }
328
+
329
+ if (fits("left") || fits("right")) {
330
+ return spaces.left >= spaces.right ? "left" : "right"
331
+ }
332
+
333
+ return Object.entries(spaces).reduce((a, b) => a[1] > b[1] ? a : b)[0]
334
+ }
335
+
336
+ _calculateViewportCoords(placement, triggerRect, popoverRect, gap) {
337
+ const { top: ty, left: tx, width: tw, height: th } = triggerRect
338
+ const { width: pw, height: ph } = popoverRect
339
+
340
+ let top = 0
341
+ let left = 0
342
+
343
+ switch (placement) {
344
+ case "top":
345
+ case "topLeft":
346
+ case "topRight":
347
+ top = ty - ph - gap
348
+ break
349
+ case "bottom":
350
+ case "bottomLeft":
351
+ case "bottomRight":
352
+ top = ty + th + gap
353
+ break
354
+ case "left":
355
+ case "leftTop":
356
+ case "leftBottom":
357
+ top = ty + (th - ph) / 2
358
+ if (placement === "leftTop") top = ty
359
+ if (placement === "leftBottom") top = ty + th - ph
360
+ break
361
+ case "right":
362
+ case "rightTop":
363
+ case "rightBottom":
364
+ top = ty + (th - ph) / 2
365
+ if (placement === "rightTop") top = ty
366
+ if (placement === "rightBottom") top = ty + th - ph
367
+ break
368
+ }
369
+
370
+ switch (placement) {
371
+ case "top":
372
+ case "bottom":
373
+ left = tx + (tw - pw) / 2
374
+ break
375
+ case "topLeft":
376
+ case "bottomLeft":
377
+ left = tx
378
+ break
379
+ case "topRight":
380
+ case "bottomRight":
381
+ left = tx + tw - pw
382
+ break
383
+ case "left":
384
+ case "leftTop":
385
+ case "leftBottom":
386
+ left = tx - pw - gap
387
+ break
388
+ case "right":
389
+ case "rightTop":
390
+ case "rightBottom":
391
+ left = tx + tw + gap
392
+ break
393
+ }
394
+
395
+ return { top, left }
396
+ }
397
+
398
+ #scheduleHide() {
399
+ this.#clearHideTimeout()
400
+ this.hideTimeout = setTimeout(() => this.hide(), 120)
401
+ }
402
+
403
+ #clearHideTimeout() {
404
+ if (this.hideTimeout) {
405
+ clearTimeout(this.hideTimeout)
406
+ this.hideTimeout = null
407
+ }
408
+ }
409
+
410
+ get popoverElement() {
411
+ if (!this._popover && this.hasPopoverTarget) {
412
+ this._popover = this.popoverTarget
413
+ }
414
+ return this._popover
415
+ }
416
+
417
+ #parseTriggers() {
418
+ if (!this.triggerValue) return []
419
+ return this.triggerValue.split(/[\s,]+/).map((t) => t.trim()).filter(Boolean)
420
+ }
421
+
422
+ #isControlled() {
423
+ return this.hasOpenValue && this.openValue !== undefined
424
+ }
425
+
426
+ #exposeApi(api) {
427
+ this.element.hakumiPopover = {
428
+ open: () => api.open(),
429
+ close: () => api.close(),
430
+ toggle: () => api.toggle(),
431
+ isOpen: () => api.isOpen(),
432
+ getState: () => api.getState(),
433
+ setPlacement: (placement) => api.setPlacement(placement),
434
+ setOpen: (value) => api.setOpen(value)
435
+ }
436
+ }
437
+
438
+ #bindOutsideListeners() {
439
+ if (this.boundOutsideHandlers || !this.triggerModes.includes("click")) return
440
+
441
+ this.boundOutsideHandlers = {}
442
+ this.#outsideEvents().forEach((eventName) => {
443
+ const handler = (event) => this.#handleOutsideEvent(event)
444
+ this.boundOutsideHandlers[eventName] = handler
445
+ document.addEventListener(eventName, handler, true)
446
+ })
447
+ }
448
+
449
+ #unbindOutsideListeners() {
450
+ if (!this.boundOutsideHandlers) return
451
+
452
+ Object.entries(this.boundOutsideHandlers).forEach(([eventName, handler]) => {
453
+ document.removeEventListener(eventName, handler, true)
454
+ })
455
+ this.boundOutsideHandlers = null
456
+ }
457
+
458
+ #outsideEvents() {
459
+ return ["pointerdown", "mousedown", "touchstart", "click"]
460
+ }
461
+
462
+ #handleOutsideEvent(event) {
463
+ if (!this.isOpen || this.disabledValue || this.#isControlled()) return
464
+
465
+ const popover = this.popoverElement
466
+ const clickedInsideTrigger = this.element.contains(event.target)
467
+ const clickedInsidePopover = popover?.contains(event.target)
468
+
469
+ if (!clickedInsideTrigger && !clickedInsidePopover) {
470
+ this.hide()
471
+ }
472
+ }
473
+ }
@@ -0,0 +1,185 @@
1
+ import RegistryController from "../base/registry_controller.js"
2
+
3
+ export default class extends RegistryController {
4
+ static values = {
5
+ percent: { type: Number, default: 0 },
6
+ successPercent: { type: Number, default: 0 },
7
+ type: { type: String, default: "line" },
8
+ status: { type: String, default: "normal" },
9
+ statusExplicit: { type: Boolean, default: false },
10
+ steps: { type: Number, default: 0 },
11
+ gapDegree: { type: Number, default: 0 },
12
+ gapPosition: { type: String, default: "top" },
13
+ strokeWidth: { type: Number, default: 0 },
14
+ showInfo: { type: Boolean, default: true },
15
+ customInfo: { type: Boolean, default: false }
16
+ }
17
+
18
+ setup() {
19
+ this.#updateUI()
20
+ }
21
+
22
+ registerApi() {
23
+ this.element.hakumiComponent = {
24
+ name: "progress",
25
+ version: 1,
26
+ singleton: false,
27
+ api: {
28
+ getPercent: () => this.percentValue,
29
+ setPercent: (value) => this.setPercent(value),
30
+ adjustPercent: (delta) => this.adjustPercent(delta),
31
+ increase: () => this.increase(),
32
+ decrease: () => this.decrease(),
33
+ getStatus: () => this.statusValue,
34
+ setStatus: (value) => this.setStatus(value)
35
+ }
36
+ }
37
+ }
38
+
39
+ setPercent(value) {
40
+ const next = this.#clampPercent(value)
41
+ if (next === this.percentValue) return
42
+
43
+ this.percentValue = next
44
+ this.#updateStatus()
45
+ this.#updateUI()
46
+ }
47
+
48
+ adjustPercent(delta) {
49
+ const amount = Number(delta)
50
+ if (Number.isNaN(amount) || amount === 0) return this.percentValue
51
+
52
+ this.setPercent(this.percentValue + amount)
53
+ return this.percentValue
54
+ }
55
+
56
+ increase() {
57
+ return this.adjustPercent(this.#stepSize())
58
+ }
59
+
60
+ decrease() {
61
+ return this.adjustPercent(-this.#stepSize())
62
+ }
63
+
64
+ setStatus(value) {
65
+ if (!value) return
66
+
67
+ this.statusValue = value
68
+ this.#applyStatusClasses()
69
+ }
70
+
71
+ #stepSize() {
72
+ if (this.stepsValue > 0) {
73
+ return 100 / this.stepsValue
74
+ }
75
+
76
+ return 10
77
+ }
78
+
79
+ #clampPercent(value) {
80
+ const number = Number(value)
81
+ if (Number.isNaN(number)) return 0
82
+
83
+ return Math.max(0, Math.min(100, number))
84
+ }
85
+
86
+ #updateStatus() {
87
+ if (this.statusExplicitValue) {
88
+ this.#applyStatusClasses()
89
+ return
90
+ }
91
+
92
+ const computed = this.percentValue >= 100 ? "success" : "normal"
93
+ this.statusValue = computed
94
+ this.#applyStatusClasses()
95
+ }
96
+
97
+ #applyStatusClasses() {
98
+ const base = "hakumi-progress-status-"
99
+ this.element.classList.forEach((klass) => {
100
+ if (klass.startsWith(base)) this.element.classList.remove(klass)
101
+ })
102
+ this.element.classList.add(`${base}${this.statusValue}`)
103
+ }
104
+
105
+ #updateUI() {
106
+ this.element.setAttribute("aria-valuenow", String(this.percentValue))
107
+
108
+ if (this.typeValue === "line") {
109
+ this.#updateLine()
110
+ } else {
111
+ this.#updateCircle()
112
+ }
113
+
114
+ this.#updateInfo()
115
+ }
116
+
117
+ #updateLine() {
118
+ if (this.stepsValue > 0) {
119
+ this.#updateLineSteps()
120
+ return
121
+ }
122
+
123
+ const bar = this.element.querySelector(".hakumi-progress-bg")
124
+ if (bar) bar.style.width = `${this.percentValue}%`
125
+
126
+ const success = this.element.querySelector(".hakumi-progress-success-bg")
127
+ if (success) success.style.width = `${this.successPercentValue}%`
128
+ }
129
+
130
+ #updateLineSteps() {
131
+ const items = this.element.querySelectorAll(".hakumi-progress-steps-item")
132
+ const total = this.stepsValue
133
+ const progressUnits = (this.percentValue / 100) * total
134
+
135
+ items.forEach((item, index) => {
136
+ const active = progressUnits > index
137
+ const current = index === Math.floor(progressUnits) && progressUnits < total
138
+ item.classList.toggle("hakumi-progress-steps-item-active", active)
139
+ item.classList.toggle("hakumi-progress-steps-item-current", current)
140
+ })
141
+ }
142
+
143
+ #updateCircle() {
144
+ if (this.stepsValue > 0) {
145
+ this.#updateCircleSteps()
146
+ return
147
+ }
148
+
149
+ const path = this.element.querySelector(".hakumi-progress-circle-path")
150
+ if (!path) return
151
+
152
+ const strokeWidth = this.strokeWidthValue || 6
153
+ const radius = 50 - strokeWidth / 2
154
+ const total = 2 * Math.PI * radius
155
+ const gapDegree = this.gapDegreeValue || (this.typeValue === "dashboard" ? 75 : 0)
156
+ const gapLength = total * (gapDegree / 360)
157
+ const effective = total - gapLength
158
+ const pathLength = effective * (this.percentValue / 100)
159
+
160
+ path.setAttribute("stroke-dasharray", `${pathLength.toFixed(2)} ${total.toFixed(2)}`)
161
+ path.setAttribute("stroke-dashoffset", (gapLength / 2).toFixed(2))
162
+ }
163
+
164
+ #updateCircleSteps() {
165
+ const steps = this.element.querySelectorAll(".hakumi-progress-circle-step")
166
+ const total = this.stepsValue
167
+ const progressUnits = (this.percentValue / 100) * total
168
+
169
+ steps.forEach((step) => {
170
+ const index = Number(step.dataset.stepIndex || 0)
171
+ const active = progressUnits > index
172
+ const current = index === Math.floor(progressUnits) && progressUnits < total
173
+
174
+ step.classList.toggle("hakumi-progress-circle-step-active", active)
175
+ step.classList.toggle("hakumi-progress-circle-step-current", current)
176
+ })
177
+ }
178
+
179
+ #updateInfo() {
180
+ if (!this.showInfoValue || this.customInfoValue) return
181
+
182
+ const info = this.element.querySelector(".hakumi-progress-text")
183
+ if (info) info.textContent = `${this.percentValue}%`
184
+ }
185
+ }